@prisma/studio-core-licensed 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/chunk-32BUC7NR.js +10 -0
- package/dist/chunk-3KCOUVOV.js +10 -0
- package/dist/chunk-A6CVKSUD.js +10 -0
- package/dist/chunk-M7E5UEO3.js +10 -0
- package/dist/chunk-O6ZAHVDF.js +10 -0
- package/dist/chunk-SXTJF4PD.js +10 -0
- package/dist/chunk-ZUEQ555M.js +10 -0
- package/dist/data/accelerate/index.d.cts +1 -1
- package/dist/data/accelerate/index.d.ts +1 -1
- package/dist/data/bff/index.cjs +2 -2
- package/dist/data/bff/index.d.cts +15 -3
- package/dist/data/bff/index.d.ts +15 -3
- package/dist/data/bff/index.js +2 -2
- package/dist/data/index.d.cts +1 -1
- package/dist/data/index.d.ts +1 -1
- package/dist/data/index.js +1 -1
- package/dist/data/mysql-core/index.cjs +3 -0
- package/dist/data/mysql-core/index.d.cts +176 -0
- package/dist/data/mysql-core/index.d.ts +176 -0
- package/dist/data/mysql-core/index.js +11 -0
- package/dist/data/mysql2/index.cjs +2 -0
- package/dist/data/mysql2/index.d.cts +7 -0
- package/dist/data/mysql2/index.d.ts +7 -0
- package/dist/data/mysql2/index.js +10 -0
- package/dist/data/node-sqlite/index.cjs +2 -2
- package/dist/data/node-sqlite/index.d.cts +2 -3
- package/dist/data/node-sqlite/index.d.ts +2 -3
- package/dist/data/node-sqlite/index.js +2 -2
- package/dist/data/pglite/index.cjs +2 -2
- package/dist/data/pglite/index.d.cts +1 -1
- package/dist/data/pglite/index.d.ts +1 -1
- package/dist/data/pglite/index.js +2 -2
- package/dist/data/postgres-core/index.cjs +2 -2
- package/dist/data/postgres-core/index.d.cts +37 -37
- package/dist/data/postgres-core/index.d.ts +37 -37
- package/dist/data/postgres-core/index.js +1 -1
- package/dist/data/postgresjs/index.cjs +2 -2
- package/dist/data/postgresjs/index.d.cts +3 -14
- package/dist/data/postgresjs/index.d.ts +3 -14
- package/dist/data/postgresjs/index.js +2 -2
- package/dist/data/ppg/index.d.cts +1 -1
- package/dist/data/ppg/index.d.ts +1 -1
- package/dist/data/sqlite-core/index.cjs +2 -2
- package/dist/data/sqlite-core/index.d.cts +25 -25
- package/dist/data/sqlite-core/index.d.ts +25 -25
- package/dist/data/sqlite-core/index.js +2 -2
- package/dist/{index-2horhMcs.d.cts → index-BhPjNuvP.d.cts} +10 -6
- package/dist/{index-2horhMcs.d.ts → index-BhPjNuvP.d.ts} +10 -6
- package/dist/metafile-cjs.json +1 -1
- package/dist/metafile-esm.json +1 -1
- package/dist/ui/index.cjs +1 -1
- package/dist/ui/index.d.cts +1 -1
- package/dist/ui/index.d.ts +1 -1
- package/dist/ui/index.js +2 -2
- package/package.json +22 -1
- package/dist/chunk-AHIV4VYN.js +0 -10
- package/dist/chunk-CTJRZ7VA.js +0 -10
- package/dist/chunk-NDYVVFWW.js +0 -10
- package/dist/chunk-OTK4ZF2W.js +0 -10
- package/dist/chunk-WHLVNWIR.js +0 -10
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ___react___ from 'react';
|
|
2
|
+
import * as ___react_dom___ from 'react-dom';
|
|
3
|
+
|
|
4
|
+
function require(mod) {
|
|
5
|
+
if (mod === 'react') return ___react___;
|
|
6
|
+
if (mod === 'react-dom') return ___react_dom___;
|
|
7
|
+
throw new Error(`Unknown module ${mod}`);
|
|
8
|
+
}
|
|
9
|
+
import{a as l,b as u,c as f,d as m,e as t,f as p,g as i}from"./chunk-A6CVKSUD.js";import{e as a}from"./chunk-GDQBQ7MK.js";a();function I(o,r){let n=[];for(let{selection:e}of o.selections??[])if(t.is(e)&&m.is(e.column))n.push(s(e.column.column.name),c(r,e.column.column.name));else if(m.is(e))n.push(s(e.column.name),c(r,e.column.name));else if(u.is(e)&&l.is(e.alias))n.push(s(e.alias.name),c(r,e.alias.name));else throw new Error("can't extract column names from the select query node");return n}function s(o){return new i(p.createImmediate(o))}function c(o,r){return new i(t.create(m.create(r),f.create(o)))}export{I as a};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzLy5wbnBtL2t5c2VseUAwLjI4Ljgvbm9kZV9tb2R1bGVzL2t5c2VseS9kaXN0L2VzbS91dGlsL2pzb24tb2JqZWN0LWFyZ3MuanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwiLi9qc29uLW9iamVjdC1hcmdzLmQudHNcIiAvPlxuaW1wb3J0IHsgRXhwcmVzc2lvbldyYXBwZXIgfSBmcm9tICcuLi9leHByZXNzaW9uL2V4cHJlc3Npb24td3JhcHBlci5qcyc7XG5pbXBvcnQgeyBBbGlhc05vZGUgfSBmcm9tICcuLi9vcGVyYXRpb24tbm9kZS9hbGlhcy1ub2RlLmpzJztcbmltcG9ydCB7IENvbHVtbk5vZGUgfSBmcm9tICcuLi9vcGVyYXRpb24tbm9kZS9jb2x1bW4tbm9kZS5qcyc7XG5pbXBvcnQgeyBJZGVudGlmaWVyTm9kZSB9IGZyb20gJy4uL29wZXJhdGlvbi1ub2RlL2lkZW50aWZpZXItbm9kZS5qcyc7XG5pbXBvcnQgeyBSZWZlcmVuY2VOb2RlIH0gZnJvbSAnLi4vb3BlcmF0aW9uLW5vZGUvcmVmZXJlbmNlLW5vZGUuanMnO1xuaW1wb3J0IHsgVGFibGVOb2RlIH0gZnJvbSAnLi4vb3BlcmF0aW9uLW5vZGUvdGFibGUtbm9kZS5qcyc7XG5pbXBvcnQgeyBWYWx1ZU5vZGUgfSBmcm9tICcuLi9vcGVyYXRpb24tbm9kZS92YWx1ZS1ub2RlLmpzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRKc29uT2JqZWN0QXJncyhub2RlLCB0YWJsZSkge1xuICAgIGNvbnN0IGFyZ3MgPSBbXTtcbiAgICBmb3IgKGNvbnN0IHsgc2VsZWN0aW9uOiBzIH0gb2Ygbm9kZS5zZWxlY3Rpb25zID8/IFtdKSB7XG4gICAgICAgIGlmIChSZWZlcmVuY2VOb2RlLmlzKHMpICYmIENvbHVtbk5vZGUuaXMocy5jb2x1bW4pKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goY29sTmFtZShzLmNvbHVtbi5jb2x1bW4ubmFtZSksIGNvbFJlZih0YWJsZSwgcy5jb2x1bW4uY29sdW1uLm5hbWUpKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChDb2x1bW5Ob2RlLmlzKHMpKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goY29sTmFtZShzLmNvbHVtbi5uYW1lKSwgY29sUmVmKHRhYmxlLCBzLmNvbHVtbi5uYW1lKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoQWxpYXNOb2RlLmlzKHMpICYmIElkZW50aWZpZXJOb2RlLmlzKHMuYWxpYXMpKSB7XG4gICAgICAgICAgICBhcmdzLnB1c2goY29sTmFtZShzLmFsaWFzLm5hbWUpLCBjb2xSZWYodGFibGUsIHMuYWxpYXMubmFtZSkpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBjYW4ndCBleHRyYWN0IGNvbHVtbiBuYW1lcyBmcm9tIHRoZSBzZWxlY3QgcXVlcnkgbm9kZWApO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBhcmdzO1xufVxuZnVuY3Rpb24gY29sTmFtZShjb2wpIHtcbiAgICByZXR1cm4gbmV3IEV4cHJlc3Npb25XcmFwcGVyKFZhbHVlTm9kZS5jcmVhdGVJbW1lZGlhdGUoY29sKSk7XG59XG5mdW5jdGlvbiBjb2xSZWYodGFibGUsIGNvbCkge1xuICAgIHJldHVybiBuZXcgRXhwcmVzc2lvbldyYXBwZXIoUmVmZXJlbmNlTm9kZS5jcmVhdGUoQ29sdW1uTm9kZS5jcmVhdGUoY29sKSwgVGFibGVOb2RlLmNyZWF0ZSh0YWJsZSkpKTtcbn1cbiJdLAogICJtYXBwaW5ncyI6ICI7Ozs7Ozs7OzBIQUFBQSxJQVFPLFNBQVNDLEVBQWtCQyxFQUFNQyxFQUFPLENBQzNDLElBQU1DLEVBQU8sQ0FBQyxFQUNkLE9BQVcsQ0FBRSxVQUFXQyxDQUFFLElBQUtILEVBQUssWUFBYyxDQUFDLEVBQy9DLEdBQUlJLEVBQWMsR0FBR0QsQ0FBQyxHQUFLRSxFQUFXLEdBQUdGLEVBQUUsTUFBTSxFQUM3Q0QsRUFBSyxLQUFLSSxFQUFRSCxFQUFFLE9BQU8sT0FBTyxJQUFJLEVBQUdJLEVBQU9OLEVBQU9FLEVBQUUsT0FBTyxPQUFPLElBQUksQ0FBQyxVQUV2RUUsRUFBVyxHQUFHRixDQUFDLEVBQ3BCRCxFQUFLLEtBQUtJLEVBQVFILEVBQUUsT0FBTyxJQUFJLEVBQUdJLEVBQU9OLEVBQU9FLEVBQUUsT0FBTyxJQUFJLENBQUMsVUFFekRLLEVBQVUsR0FBR0wsQ0FBQyxHQUFLTSxFQUFlLEdBQUdOLEVBQUUsS0FBSyxFQUNqREQsRUFBSyxLQUFLSSxFQUFRSCxFQUFFLE1BQU0sSUFBSSxFQUFHSSxFQUFPTixFQUFPRSxFQUFFLE1BQU0sSUFBSSxDQUFDLE1BRzVELE9BQU0sSUFBSSxNQUFNLHVEQUF1RCxFQUcvRSxPQUFPRCxDQUNYLENBQ0EsU0FBU0ksRUFBUUksRUFBSyxDQUNsQixPQUFPLElBQUlDLEVBQWtCQyxFQUFVLGdCQUFnQkYsQ0FBRyxDQUFDLENBQy9ELENBQ0EsU0FBU0gsRUFBT04sRUFBT1MsRUFBSyxDQUN4QixPQUFPLElBQUlDLEVBQWtCUCxFQUFjLE9BQU9DLEVBQVcsT0FBT0ssQ0FBRyxFQUFHRyxFQUFVLE9BQU9aLENBQUssQ0FBQyxDQUFDLENBQ3RHIiwKICAibmFtZXMiOiBbImluaXRfZGVmaW5lX0FDQ0VMRVJBVEVfU0NIRU1BX0JZX1BST1ZJREVSIiwgImdldEpzb25PYmplY3RBcmdzIiwgIm5vZGUiLCAidGFibGUiLCAiYXJncyIsICJzIiwgIlJlZmVyZW5jZU5vZGUiLCAiQ29sdW1uTm9kZSIsICJjb2xOYW1lIiwgImNvbFJlZiIsICJBbGlhc05vZGUiLCAiSWRlbnRpZmllck5vZGUiLCAiY29sIiwgIkV4cHJlc3Npb25XcmFwcGVyIiwgIlZhbHVlTm9kZSIsICJUYWJsZU5vZGUiXQp9Cg==
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as ___react___ from 'react';
|
|
2
|
+
import * as ___react_dom___ from 'react-dom';
|
|
3
|
+
|
|
4
|
+
function require(mod) {
|
|
5
|
+
if (mod === 'react') return ___react___;
|
|
6
|
+
if (mod === 'react-dom') return ___react_dom___;
|
|
7
|
+
throw new Error(`Unknown module ${mod}`);
|
|
8
|
+
}
|
|
9
|
+
import{a as i}from"./chunk-O6ZAHVDF.js";import{h as E,i as d,l as q,m as I,p as S,r as g,s as Q,u as T,v as B}from"./chunk-A6CVKSUD.js";import{e as u}from"./chunk-GDQBQ7MK.js";u();u();u();var z={bool:{group:"boolean"},boolean:{group:"boolean"},bytea:{group:"string"},char:{group:"string"},citext:{group:"string"},date:{group:"datetime"},interval:{group:"string"},name:{group:"string"},varchar:{group:"string"},text:{group:"string"},time:{group:"time"},timestamp:{group:"datetime"},timestamptz:{group:"datetime"},"timestamp without time zone":{group:"datetime"},"timestamp with time zone":{group:"datetime"},timetz:{group:"time"},"time without time zone":{group:"time"},"time with time zone":{group:"datetime"},uuid:{group:"raw"},int2:{group:"numeric"},int4:{group:"numeric"},int8:{group:"numeric"},smallint:{group:"numeric"},integer:{group:"numeric"},bigint:{group:"numeric"},decimal:{group:"numeric"},numeric:{group:"numeric"},real:{group:"numeric"},float4:{group:"numeric"},float8:{group:"numeric"},"double precision":{group:"numeric"},json:{group:"json"},jsonb:{group:"json"}};u();u();function f(r){return S({...r,Adapter:I,QueryCompiler:q})}function j(r,s){let{rows:n,table:{columns:t,name:a,schema:e}}=r,o=f(s);return g(o.withSchema(e).insertInto(a).values(T("insert",n,t)).returning(Object.keys(t)).returning(w().as("__ps_inserted_at__")))}function O(r,s){let{filter:n={after:"and",filters:[],kind:"FilterGroup"},pageIndex:t,pageSize:a,sortOrder:e,table:{columns:o,name:l,schema:p}}=r,m=f(s),_=B(n.filters,o),h=m.withSchema(p).selectFrom(l).where(_).select(c=>c.cast(c.fn.coalesce(c.fn.countAll(),d.lit(0)),"text").as("value"));return g(m.with("count",()=>h).withSchema(p).selectFrom([l,"count"]).where(_).select(Object.keys(o)).select(d.ref("count.value").as("__ps_count__")).$call(c=>e.reduce((b,k)=>b.orderBy(k.column,k.direction),c)).limit(a).offset(d.lit(BigInt(t)*BigInt(a))))}function oe(){return[{created_at:new Date("2025-01-26T21:56:12.345Z"),deleted_at:null,id:1,name:"John Doe",__ps_count__:"2",role:"admin",name_role:"Jonn Doe - admin"},{created_at:new Date("2025-01-26T20:56:12.345Z"),deleted_at:null,id:2,name:"Jane Doe",__ps_count__:"2",role:"poweruser",name_role:"Jane Doe - poweruser"}]}function P(r,s){let{changes:n,row:t,table:{columns:a,name:e,schema:o}}=r,l=f(s);return g(l.withSchema(o).updateTable(e).set(T("update",n,a)).$call(Q([t],a)).returning(Object.keys(a)).returning(w().as("__ps_updated_at__")))}function F(r,s){let{rows:n,table:{columns:t,name:a,schema:e}}=r,o=f(s);return g(o.withSchema(e).deleteFrom(a).$call(Q(n,t)).returning(Object.keys(t)).returning(w().as("__ps_deleted_at__")))}function w(){let r=E();return r.cast(r.fn("floor",[r(r.fn("extract",[d`epoch from now()`]),"*",1e3)]),"text")}u();u();function C(r){return d`(select coalesce(json_agg(agg), '[]') from ${r} as agg)`}var U="r",G="v",M=[U,G];function J(r){return g(f(r).selectFrom("pg_catalog.pg_class as cls").innerJoin("pg_catalog.pg_namespace as ns","cls.relnamespace","ns.oid").$call(W).where("cls.relkind","in",M).select(s=>["ns.nspname as schema","cls.relname as name",C(s.selectFrom("pg_catalog.pg_attribute as att").innerJoin("pg_catalog.pg_type as typ","typ.oid","att.atttypid").innerJoin("pg_catalog.pg_namespace as tns","tns.oid","typ.typnamespace").leftJoin("pg_catalog.pg_constraint as pk_con",n=>n.on("pk_con.contype","=","p").onRef("pk_con.conrelid","=","cls.oid").on(t=>t("att.attnum","=",t.fn.any("pk_con.conkey")))).leftJoin("pg_catalog.pg_constraint as fk_con",n=>n.on("fk_con.contype","=","f").onRef("fk_con.conrelid","=","cls.oid").on(t=>t("att.attnum","=",t.fn.any("fk_con.conkey")))).leftJoin("pg_catalog.pg_class as fk_cls","fk_cls.oid","fk_con.confrelid").leftJoin("pg_catalog.pg_namespace as fk_ns","fk_ns.oid","fk_cls.relnamespace").leftJoin("pg_catalog.pg_attribute as fk_att",n=>n.onRef("fk_att.attrelid","=","fk_cls.oid").on(t=>t("fk_att.attnum","=",t.fn.any("fk_con.confkey")))).whereRef("att.attrelid","=","cls.oid").where("att.attnum",">=",0).where("att.attisdropped","!=",!0).select(["att.attname as name","typ.typname as datatype","tns.nspname as datatype_schema","fk_ns.nspname as fk_schema","fk_cls.relname as fk_table","fk_att.attname as fk_column"]).select(n=>[n("pk_con.conkey","is not",null).$castTo().as("pk"),n("att.attgenerated","!=","").$castTo().as("computed"),n("att.attnotnull","!=",!0).$castTo().as("nullable"),n.fn.coalesce(n.selectFrom("pg_catalog.pg_enum as enm").whereRef("enm.enumtypid","=","typ.oid").select(t=>t.fn.jsonAgg(t.ref("enm.enumlabel")).as("o")),d`'[]'`).as("options")])).as("columns")]))}function K(){return[{schema:"zoo",name:"animals",columns:[{name:"id",datatype:"int4",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,fk_schema:null,fk_table:null,fk_column:null},{name:"name",datatype:"text",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,fk_schema:null,fk_table:null,fk_column:null}]},{schema:"public",name:"users",columns:[{name:"id",datatype:"int4",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,fk_schema:null,fk_table:null,fk_column:null},{name:"created_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,fk_schema:null,fk_table:null,fk_column:null},{name:"deleted_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,fk_schema:null,fk_table:null,fk_column:null},{name:"role",datatype:"varchar",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,fk_schema:null,fk_table:null,fk_column:null},{name:"name",datatype:"varchar",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,fk_schema:null,fk_table:null,fk_column:null},{name:"name_role",datatype:"text",datatype_schema:"pg_catalog",pk:!1,computed:!0,options:[],nullable:!1,fk_schema:null,fk_table:null,fk_column:null}]},{schema:"public",name:"composite_pk",columns:[{name:"id",datatype:"uuid",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!1,fk_schema:null,fk_table:null,fk_column:null},{name:"name",datatype:"text",datatype_schema:"pg_catalog",pk:!0,computed:!1,options:[],nullable:!0,fk_schema:null,fk_table:null,fk_column:null},{name:"created_at",datatype:"timestamp",datatype_schema:"pg_catalog",pk:!1,computed:!1,options:[],nullable:!0,fk_schema:null,fk_table:null,fk_column:null}]}]}function N(){let r=f();return g(r.selectNoFrom(r.fn("current_setting",[d.lit("timezone")]).as("timezone")))}function $(){return[{timezone:"UTC"}]}function W(r){return r.where("ns.nspname","!~","^pg_").where("ns.nspname","!=","information_schema")}function Ae(r){let{executor:s,...n}=r;return{defaultSchema:"public",async introspect(t){try{let a=J(n),e=N(),[[o,l],[p,m]]=await Promise.all([s.execute(a,t),s.execute(e,t)]);if(o)return i({error:o,query:a});if(p)return i({error:p,query:e});let _=m[0]?.timezone;return _?[null,v({query:a,tables:l,timezone:_})]:i({error:new Error("Timezone not found"),query:e})}catch(a){return i({error:a})}},async query(t,a){try{let e=O(t,n),[o,l]=await s.execute(e,a);return o?i({error:o,query:e}):[null,{filteredRowCount:l[0]?.__ps_count__||"0",rows:l,query:e}]}catch(e){return i({error:e})}},async insert(t,a){try{let e=j(t,n),[o,l]=await s.execute(e,a);return o?i({error:o,query:e}):[null,{rows:l,query:e}]}catch(e){return i({error:e})}},async update(t,a){try{let e=P(t,n),[o,l]=await s.execute(e,a);if(o)return i({error:o,query:e});let[p]=l;return p?[null,{row:p,query:e}]:i({error:new Error("Update failed"),query:e})}catch(e){return i({error:e})}},async delete(t,a){try{let e=F(t,n),[o]=await s.execute(e,a);return o?i({error:o,query:e}):[null,{...t,query:e}]}catch(e){return i({error:e})}}}}function v(r){let{query:s,tables:n,timezone:t}=r;return n.reduce((a,e)=>{let{schemas:o}=a,{columns:l,name:p,schema:m}=e,_=l.reduce((h,c)=>{let{datatype:b,datatype_schema:k,name:x,options:D,nullable:L}=c,A=b.startsWith("_"),R=A?b.slice(1):b;return{...h,[x]:{datatype:{...z[R]||{group:D.length>0?"enum":"raw"},isArray:A,isNative:k==="pg_catalog",name:A?`${R}[]`:R,options:D,schema:k},fkColumn:c.fk_column,fkSchema:c.fk_schema,fkTable:c.fk_table,isAutoincrement:!1,isComputed:c.computed,isInPrimaryKey:c.pk,name:x,nullable:L,schema:m,table:p}}},{});return o[m]===void 0&&(o[m]={name:m,tables:{}}),o[m].tables[p]={columns:_,name:p,schema:m},a},{filterOperators:Y,query:s,schemas:{public:{name:"public",tables:{}}},timezone:t})}var Y=["=","!=",">",">=","<","<=","is","is not","like","not like","ilike","not ilike"];function Re(){let r=K(),[{timezone:s}]=$();return v({tables:r,timezone:s,query:{parameters:[],sql:"<mocked>"}})}export{j as a,O as b,oe as c,P as d,F as e,J as f,K as g,N as h,$ as i,Ae as j,Re as k};
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vZGF0YS9wb3N0Z3Jlcy1jb3JlL2luZGV4LnRzIiwgIi4uL2RhdGEvcG9zdGdyZXMtY29yZS9hZGFwdGVyLnRzIiwgIi4uL2RhdGEvcG9zdGdyZXMtY29yZS9kYXRhdHlwZS50cyIsICIuLi9kYXRhL3Bvc3RncmVzLWNvcmUvZG1sLnRzIiwgIi4uL2RhdGEvcG9zdGdyZXMtY29yZS9idWlsZGVyLnRzIiwgIi4uL2RhdGEvcG9zdGdyZXMtY29yZS9pbnRyb3NwZWN0aW9uLnRzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy8ucG5wbS9reXNlbHlAMC4yOC44L25vZGVfbW9kdWxlcy9reXNlbHkvZGlzdC9lc20vaGVscGVycy9wb3N0Z3Jlcy5qcyJdLAogICJzb3VyY2VzQ29udGVudCI6IFsiZXhwb3J0ICogZnJvbSBcIi4vYWRhcHRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vZG1sXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9pbnRyb3NwZWN0aW9uXCI7XG5leHBvcnQgKiBmcm9tIFwiLi91dGlsaXR5XCI7XG4iLCAiaW1wb3J0IHtcbiAgdHlwZSBBZGFwdGVyLFxuICB0eXBlIEFkYXB0ZXJEZWxldGVSZXN1bHQsXG4gIHR5cGUgQWRhcHRlckVycm9yLFxuICB0eXBlIEFkYXB0ZXJJbnNlcnRSZXN1bHQsXG4gIHR5cGUgQWRhcHRlckludHJvc3BlY3RSZXN1bHQsXG4gIHR5cGUgQWRhcHRlclF1ZXJ5UmVzdWx0LFxuICB0eXBlIEFkYXB0ZXJSZXF1aXJlbWVudHMsXG4gIHR5cGUgQWRhcHRlclVwZGF0ZVJlc3VsdCxcbiAgdHlwZSBDb2x1bW4sXG4gIGNyZWF0ZUFkYXB0ZXJFcnJvcixcbiAgdHlwZSBGaWx0ZXJPcGVyYXRvcixcbiAgdHlwZSBUYWJsZSxcbn0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcbmltcG9ydCB0eXBlIHsgUXVlcnksIFF1ZXJ5UmVzdWx0IH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5pbXBvcnQgdHlwZSB7IEVpdGhlciB9IGZyb20gXCIuLi90eXBlLXV0aWxzXCI7XG5pbXBvcnQgeyBQT1NUR1JFU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEEgfSBmcm9tIFwiLi9kYXRhdHlwZVwiO1xuaW1wb3J0IHsgZ2V0RGVsZXRlUXVlcnksIGdldEluc2VydFF1ZXJ5LCBnZXRTZWxlY3RRdWVyeSwgZ2V0VXBkYXRlUXVlcnkgfSBmcm9tIFwiLi9kbWxcIjtcbmltcG9ydCB7IGdldFRhYmxlc1F1ZXJ5LCBnZXRUaW1lem9uZVF1ZXJ5LCBtb2NrVGFibGVzUXVlcnksIG1vY2tUaW1lem9uZVF1ZXJ5IH0gZnJvbSBcIi4vaW50cm9zcGVjdGlvblwiO1xuXG5leHBvcnQgdHlwZSBQb3N0Z3Jlc0FkYXB0ZXJSZXF1aXJlbWVudHMgPSBBZGFwdGVyUmVxdWlyZW1lbnRzO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUG9zdGdyZXNBZGFwdGVyKHJlcXVpcmVtZW50czogUG9zdGdyZXNBZGFwdGVyUmVxdWlyZW1lbnRzKTogQWRhcHRlciB7XG4gIGNvbnN0IHsgZXhlY3V0b3IsIC4uLm90aGVyUmVxdWlyZW1lbnRzIH0gPSByZXF1aXJlbWVudHM7XG5cbiAgcmV0dXJuIHtcbiAgICBkZWZhdWx0U2NoZW1hOiBcInB1YmxpY1wiLFxuXG4gICAgYXN5bmMgaW50cm9zcGVjdChvcHRpb25zKTogUHJvbWlzZTxFaXRoZXI8QWRhcHRlckVycm9yLCBBZGFwdGVySW50cm9zcGVjdFJlc3VsdD4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRhYmxlc1F1ZXJ5ID0gZ2V0VGFibGVzUXVlcnkob3RoZXJSZXF1aXJlbWVudHMpO1xuICAgICAgICBjb25zdCB0aW1lem9uZVF1ZXJ5ID0gZ2V0VGltZXpvbmVRdWVyeSgpO1xuXG4gICAgICAgIGNvbnN0IFtbdGFibGVzRXJyb3IsIHRhYmxlc10sIFt0aW1lem9uZUVycm9yLCB0aW1lem9uZXNdXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgICBleGVjdXRvci5leGVjdXRlKHRhYmxlc1F1ZXJ5LCBvcHRpb25zKSxcbiAgICAgICAgICBleGVjdXRvci5leGVjdXRlKHRpbWV6b25lUXVlcnksIG9wdGlvbnMpLFxuICAgICAgICBdKTtcblxuICAgICAgICBpZiAodGFibGVzRXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IHRhYmxlc0Vycm9yLCBxdWVyeTogdGFibGVzUXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGltZXpvbmVFcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogdGltZXpvbmVFcnJvciwgcXVlcnk6IHRpbWV6b25lUXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB0aW1lem9uZSA9IHRpbWV6b25lc1swXT8udGltZXpvbmU7XG5cbiAgICAgICAgaWYgKCF0aW1lem9uZSkge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvcjogbmV3IEVycm9yKFwiVGltZXpvbmUgbm90IGZvdW5kXCIpLCBxdWVyeTogdGltZXpvbmVRdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbbnVsbCwgY3JlYXRlSW50cm9zcGVjdGlvbih7IHF1ZXJ5OiB0YWJsZXNRdWVyeSwgdGFibGVzLCB0aW1lem9uZSB9KV07XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAvLyBUT0RPOiBoYW5kbGUgcHJvcGVybHlcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgcXVlcnkoZGV0YWlscywgb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlclF1ZXJ5UmVzdWx0Pj4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcXVlcnkgPSBnZXRTZWxlY3RRdWVyeShkZXRhaWxzLCBvdGhlclJlcXVpcmVtZW50cyk7XG5cbiAgICAgICAgY29uc3QgW2Vycm9yLCByZXN1bHRzXSA9IGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGUocXVlcnksIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvciwgcXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW251bGwsIHsgZmlsdGVyZWRSb3dDb3VudDogcmVzdWx0c1swXT8uX19wc19jb3VudF9fIHx8IFwiMFwiLCByb3dzOiByZXN1bHRzLCBxdWVyeSB9XTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yOiB1bmtub3duKSB7XG4gICAgICAgIC8vIFRPRE86IGhhbmRsZSBwcm9wZXJseVxuICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IGVycm9yIGFzIEVycm9yIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBpbnNlcnQoZGV0YWlscywgb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckluc2VydFJlc3VsdD4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gZ2V0SW5zZXJ0UXVlcnkoZGV0YWlscywgb3RoZXJSZXF1aXJlbWVudHMpO1xuXG4gICAgICAgIGNvbnN0IFtlcnJvciwgcm93c10gPSBhd2FpdCBleGVjdXRvci5leGVjdXRlKHF1ZXJ5LCBvcHRpb25zKTtcblxuICAgICAgICBpZiAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3IsIHF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IHJvd3MsIHF1ZXJ5IH1dO1xuICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yOiBlcnJvciBhcyBFcnJvciB9KTtcbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYXN5bmMgdXBkYXRlKGRldGFpbHMsIG9wdGlvbnMpOiBQcm9taXNlPEVpdGhlcjxBZGFwdGVyRXJyb3IsIEFkYXB0ZXJVcGRhdGVSZXN1bHQ+PiB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBxdWVyeSA9IGdldFVwZGF0ZVF1ZXJ5KGRldGFpbHMsIG90aGVyUmVxdWlyZW1lbnRzKTtcblxuICAgICAgICBjb25zdCBbZXJyb3IsIHJlc3VsdHNdID0gYXdhaXQgZXhlY3V0b3IuZXhlY3V0ZShxdWVyeSwgb3B0aW9ucyk7XG5cbiAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgcmV0dXJuIGNyZWF0ZUFkYXB0ZXJFcnJvcih7IGVycm9yLCBxdWVyeSB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IFtyb3ddID0gcmVzdWx0cztcblxuICAgICAgICBpZiAoIXJvdykge1xuICAgICAgICAgIC8vIFRPRE86IGN1c3RvbSBlcnJvcj9cbiAgICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IG5ldyBFcnJvcihcIlVwZGF0ZSBmYWlsZWRcIiksIHF1ZXJ5IH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtudWxsLCB7IHJvdywgcXVlcnkgfV07XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IGVycm9yIGFzIEVycm9yIH0pO1xuICAgICAgfVxuICAgIH0sXG5cbiAgICBhc3luYyBkZWxldGUoZGV0YWlscywgb3B0aW9ucyk6IFByb21pc2U8RWl0aGVyPEFkYXB0ZXJFcnJvciwgQWRhcHRlckRlbGV0ZVJlc3VsdD4+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHF1ZXJ5ID0gZ2V0RGVsZXRlUXVlcnkoZGV0YWlscywgb3RoZXJSZXF1aXJlbWVudHMpO1xuXG4gICAgICAgIC8vIFRPRE86IHVzZSByZXN1bHRzIHRvby5cbiAgICAgICAgY29uc3QgW2Vycm9yXSA9IGF3YWl0IGV4ZWN1dG9yLmV4ZWN1dGUocXVlcnksIG9wdGlvbnMpO1xuXG4gICAgICAgIGlmIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBjcmVhdGVBZGFwdGVyRXJyb3IoeyBlcnJvciwgcXVlcnkgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gW251bGwsIHsgLi4uZGV0YWlscywgcXVlcnkgfV07XG4gICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICByZXR1cm4gY3JlYXRlQWRhcHRlckVycm9yKHsgZXJyb3I6IGVycm9yIGFzIEVycm9yIH0pO1xuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUludHJvc3BlY3Rpb24oYXJnczoge1xuICBxdWVyeTogUXVlcnk7XG4gIHRhYmxlczogUXVlcnlSZXN1bHQ8dHlwZW9mIGdldFRhYmxlc1F1ZXJ5PjtcbiAgdGltZXpvbmU6IHN0cmluZztcbn0pOiBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCB7XG4gIGNvbnN0IHsgcXVlcnksIHRhYmxlcywgdGltZXpvbmUgfSA9IGFyZ3M7XG5cbiAgcmV0dXJuIHRhYmxlcy5yZWR1Y2UoXG4gICAgKHJlc3VsdCwgdGFibGUpID0+IHtcbiAgICAgIGNvbnN0IHsgc2NoZW1hcyB9ID0gcmVzdWx0O1xuICAgICAgY29uc3QgeyBjb2x1bW5zLCBuYW1lOiB0YWJsZU5hbWUsIHNjaGVtYSB9ID0gdGFibGU7XG5cbiAgICAgIGNvbnN0IGNvbHVtbnNSZWNvcmQgPSBjb2x1bW5zLnJlZHVjZShcbiAgICAgICAgKGNvbHVtbnMsIGNvbHVtbikgPT4ge1xuICAgICAgICAgIGNvbnN0IHsgZGF0YXR5cGUsIGRhdGF0eXBlX3NjaGVtYSwgbmFtZTogY29sdW1uTmFtZSwgb3B0aW9ucywgbnVsbGFibGUgfSA9IGNvbHVtbjtcblxuICAgICAgICAgIGNvbnN0IGlzQXJyYXkgPSBkYXRhdHlwZS5zdGFydHNXaXRoKFwiX1wiKTtcbiAgICAgICAgICBjb25zdCBzdHJpcHBlZERhdGFUeXBlID0gaXNBcnJheSA/IGRhdGF0eXBlLnNsaWNlKDEpIDogZGF0YXR5cGU7XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgLi4uY29sdW1ucyxcbiAgICAgICAgICAgIFtjb2x1bW5OYW1lXToge1xuICAgICAgICAgICAgICBkYXRhdHlwZToge1xuICAgICAgICAgICAgICAgIC4uLihQT1NUR1JFU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEFbc3RyaXBwZWREYXRhVHlwZV0gfHwge1xuICAgICAgICAgICAgICAgICAgZ3JvdXA6IG9wdGlvbnMubGVuZ3RoID4gMCA/IFwiZW51bVwiIDogXCJyYXdcIixcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgICBpc0FycmF5LFxuICAgICAgICAgICAgICAgIGlzTmF0aXZlOiBkYXRhdHlwZV9zY2hlbWEgPT09IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgICAgICAgIG5hbWU6IGlzQXJyYXkgPyBgJHtzdHJpcHBlZERhdGFUeXBlfVtdYCA6IHN0cmlwcGVkRGF0YVR5cGUsXG4gICAgICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgICAgICBzY2hlbWE6IGRhdGF0eXBlX3NjaGVtYSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZmtDb2x1bW46IGNvbHVtbi5ma19jb2x1bW4sXG4gICAgICAgICAgICAgIGZrU2NoZW1hOiBjb2x1bW4uZmtfc2NoZW1hLFxuICAgICAgICAgICAgICBma1RhYmxlOiBjb2x1bW4uZmtfdGFibGUsXG4gICAgICAgICAgICAgIC8vIFRPRE86IGltcGxlbWVudCBhdXRvaW5jcmVtZW50IGRldGVjdGlvblxuICAgICAgICAgICAgICBpc0F1dG9pbmNyZW1lbnQ6IGZhbHNlLFxuICAgICAgICAgICAgICBpc0NvbXB1dGVkOiBjb2x1bW4uY29tcHV0ZWQsXG4gICAgICAgICAgICAgIGlzSW5QcmltYXJ5S2V5OiBjb2x1bW4ucGssXG4gICAgICAgICAgICAgIG5hbWU6IGNvbHVtbk5hbWUsXG4gICAgICAgICAgICAgIG51bGxhYmxlLFxuICAgICAgICAgICAgICBzY2hlbWEsXG4gICAgICAgICAgICAgIHRhYmxlOiB0YWJsZU5hbWUsXG4gICAgICAgICAgICB9IGFzIGNvbnN0IHNhdGlzZmllcyBDb2x1bW4sXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAge30gYXMgVGFibGVbXCJjb2x1bW5zXCJdLFxuICAgICAgKTtcblxuICAgICAgaWYgKHNjaGVtYXNbc2NoZW1hXSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHNjaGVtYXNbc2NoZW1hXSA9IHsgbmFtZTogc2NoZW1hLCB0YWJsZXM6IHt9IH07XG4gICAgICB9XG5cbiAgICAgIHNjaGVtYXNbc2NoZW1hXS50YWJsZXNbdGFibGVOYW1lXSA9IHsgY29sdW1uczogY29sdW1uc1JlY29yZCwgbmFtZTogdGFibGVOYW1lLCBzY2hlbWEgfTtcblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICAgIHtcbiAgICAgIGZpbHRlck9wZXJhdG9ycyxcbiAgICAgIHF1ZXJ5LFxuICAgICAgc2NoZW1hczogeyBwdWJsaWM6IHsgbmFtZTogXCJwdWJsaWNcIiwgdGFibGVzOiB7fSB9IH0sXG4gICAgICB0aW1lem9uZSxcbiAgICB9IHNhdGlzZmllcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCBhcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdCxcbiAgKTtcbn1cblxuY29uc3QgZmlsdGVyT3BlcmF0b3JzID0gW1xuICBcIj1cIixcbiAgXCIhPVwiLFxuICBcIj5cIixcbiAgXCI+PVwiLFxuICBcIjxcIixcbiAgXCI8PVwiLFxuICBcImlzXCIsXG4gIFwiaXMgbm90XCIsXG4gIFwibGlrZVwiLFxuICBcIm5vdCBsaWtlXCIsXG4gIFwiaWxpa2VcIixcbiAgXCJub3QgaWxpa2VcIixcbl0gc2F0aXNmaWVzIEZpbHRlck9wZXJhdG9yW107XG5cbi8qKlxuICogRm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrSW50cm9zcGVjdCgpIHtcbiAgY29uc3QgdGFibGVzID0gbW9ja1RhYmxlc1F1ZXJ5KCk7XG4gIGNvbnN0IFt7IHRpbWV6b25lIH1dID0gbW9ja1RpbWV6b25lUXVlcnkoKTtcbiAgY29uc3QgcXVlcnkgPSB7IHBhcmFtZXRlcnM6IFtdLCBzcWw6IFwiPG1vY2tlZD5cIiB9IGFzIFF1ZXJ5O1xuXG4gIHJldHVybiBjcmVhdGVJbnRyb3NwZWN0aW9uKHsgdGFibGVzLCB0aW1lem9uZSwgcXVlcnkgfSkgYXMge1xuICAgIC8vIGJlc3QgZWZmb3J0LCBubyBuZWVkIGdvIG92ZXJib2FyZC5cbiAgICBzY2hlbWFzOiB7XG4gICAgICBbSyBpbiAodHlwZW9mIHRhYmxlcylbbnVtYmVyXVtcInNjaGVtYVwiXV06IHtcbiAgICAgICAgbmFtZTogSztcbiAgICAgICAgdGFibGVzOiB7XG4gICAgICAgICAgW1QgaW4gKHR5cGVvZiB0YWJsZXMpW251bWJlcl1bXCJuYW1lXCJdXTogVGFibGU7XG4gICAgICAgIH07XG4gICAgICB9O1xuICAgIH07XG4gICAgdGltZXpvbmU6IHR5cGVvZiB0aW1lem9uZTtcbiAgICBmaWx0ZXJPcGVyYXRvcnM6IEZpbHRlck9wZXJhdG9yW107XG4gICAgcXVlcnk6IFF1ZXJ5O1xuICB9IHNhdGlzZmllcyBBZGFwdGVySW50cm9zcGVjdFJlc3VsdDtcbn1cbiIsICJpbXBvcnQgdHlwZSB7IERhdGFUeXBlIH0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcblxuZXhwb3J0IGNvbnN0IFBPU1RHUkVTUUxfREFUQV9UWVBFU19UT19NRVRBREFUQTogUmVjb3JkPHN0cmluZywgUGljazxEYXRhVHlwZSwgXCJncm91cFwiPj4gPSB7XG4gIGJvb2w6IHtcbiAgICBncm91cDogXCJib29sZWFuXCIsXG4gIH0sXG4gIGJvb2xlYW46IHtcbiAgICBncm91cDogXCJib29sZWFuXCIsXG4gIH0sXG4gIGJ5dGVhOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIGNoYXI6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgY2l0ZXh0OiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCdcbiAgICovXG4gIGRhdGU6IHtcbiAgICBncm91cDogXCJkYXRldGltZVwiLFxuICB9LFxuICAvKipcbiAgICogQGV4YW1wbGUgJzEgZGF5IDIgaG91cnMnXG4gICAqL1xuICBpbnRlcnZhbDoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICBuYW1lOiB7XG4gICAgZ3JvdXA6IFwic3RyaW5nXCIsXG4gIH0sXG4gIHZhcmNoYXI6IHtcbiAgICBncm91cDogXCJzdHJpbmdcIixcbiAgfSxcbiAgdGV4dDoge1xuICAgIGdyb3VwOiBcInN0cmluZ1wiLFxuICB9LFxuICAvKipcbiAgICogc2hvcnQgZm9ybSBvZiBgdGltZSB3aXRob3V0IHRpbWUgem9uZWAuXG4gICAqXG4gICAqIEBleGFtcGxlICcxNDozMDowMCdcbiAgICovXG4gIHRpbWU6IHtcbiAgICBncm91cDogXCJ0aW1lXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBzaG9ydCBmb3JtIG9mIGB0aW1lc3RhbXAgd2l0aG91dCB0aW1lIHpvbmVgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCdcbiAgICovXG4gIHRpbWVzdGFtcDoge1xuICAgIGdyb3VwOiBcImRhdGV0aW1lXCIsXG4gIH0sXG4gIC8qKlxuICAgKiBzaG9ydCBmb3JtIG9mIGB0aW1lc3RhbXAgd2l0aCB0aW1lIHpvbmVgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCswMCdcbiAgICovXG4gIHRpbWVzdGFtcHR6OiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIGxvbmcgZm9ybSBvZiBgdGltZXN0YW1wYC5cbiAgICpcbiAgICogQGV4YW1wbGUgJzIwMjUtMDQtMTQgMTQ6MzA6MDAnXG4gICAqL1xuICBcInRpbWVzdGFtcCB3aXRob3V0IHRpbWUgem9uZVwiOiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIGxvbmcgZm9ybSBvZiBgdGltZXN0YW1wdHpgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCswMCdcbiAgICovXG4gIFwidGltZXN0YW1wIHdpdGggdGltZSB6b25lXCI6IHtcbiAgICBncm91cDogXCJkYXRldGltZVwiLFxuICB9LFxuICAvKipcbiAgICogc2hvcnQgZm9ybSBvZiBgdGltZSB3aXRoIHRpbWUgem9uZWAuXG4gICAqXG4gICAqIEBleGFtcGxlICcxNDozMDowMCswMDowMCdcbiAgICovXG4gIHRpbWV0ejoge1xuICAgIGdyb3VwOiBcInRpbWVcIixcbiAgfSxcbiAgLyoqXG4gICAqIGxvbmcgZm9ybSBvZiBgdGltZWAuXG4gICAqXG4gICAqIEBleGFtcGxlICcxNDozMDowMCdcbiAgICovXG4gIFwidGltZSB3aXRob3V0IHRpbWUgem9uZVwiOiB7XG4gICAgZ3JvdXA6IFwidGltZVwiLFxuICB9LFxuICAvKipcbiAgICogbG9uZyBmb3JtIG9mIGB0aW1ldHpgLlxuICAgKlxuICAgKiBAZXhhbXBsZSAnMjAyNS0wNC0xNCAxNDozMDowMCswMCdcbiAgICovXG4gIFwidGltZSB3aXRoIHRpbWUgem9uZVwiOiB7XG4gICAgZ3JvdXA6IFwiZGF0ZXRpbWVcIixcbiAgfSxcbiAgdXVpZDoge1xuICAgIC8vIFRPRE86IHBvc3NpYmx5IGNoYW5nZSB0byBhbm90aGVyIGdyb3VwIGxhdGVyLlxuICAgIGdyb3VwOiBcInJhd1wiLFxuICB9LFxuICAvLyBOdW1lcmljIHR5cGVzXG4gIGludDI6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGludDQ6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGludDg6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIHNtYWxsaW50OiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBpbnRlZ2VyOiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBiaWdpbnQ6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGRlY2ltYWw6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIG51bWVyaWM6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIHJlYWw6IHtcbiAgICBncm91cDogXCJudW1lcmljXCIsXG4gIH0sXG4gIGZsb2F0NDoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAgZmxvYXQ4OiB7XG4gICAgZ3JvdXA6IFwibnVtZXJpY1wiLFxuICB9LFxuICBcImRvdWJsZSBwcmVjaXNpb25cIjoge1xuICAgIGdyb3VwOiBcIm51bWVyaWNcIixcbiAgfSxcbiAganNvbjoge1xuICAgIGdyb3VwOiBcImpzb25cIixcbiAgfSxcbiAganNvbmI6IHtcbiAgICBncm91cDogXCJqc29uXCIsXG4gIH0sXG59O1xuIiwgImltcG9ydCB7IGV4cHJlc3Npb25CdWlsZGVyLCB0eXBlIEluZmVyUmVzdWx0LCB0eXBlIFJlZmVyZW5jZUV4cHJlc3Npb24sIHNxbCB9IGZyb20gXCJreXNlbHlcIjtcblxuaW1wb3J0IHR5cGUgeyBBZGFwdGVyRGVsZXRlRGV0YWlscywgQWRhcHRlckluc2VydERldGFpbHMsIEFkYXB0ZXJRdWVyeURldGFpbHMsIEFkYXB0ZXJVcGRhdGVEZXRhaWxzIH0gZnJvbSBcIi4uL2FkYXB0ZXJcIjtcbmltcG9ydCB7XG4gIGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzLFxuICBhcHBseVRyYW5zZm9ybWF0aW9ucyxcbiAgdHlwZSBCdWlsZGVyUmVxdWlyZW1lbnRzLFxuICBjb21waWxlLFxuICBnZXRTZWxlY3RGaWx0ZXJFeHByZXNzaW9uLFxufSBmcm9tIFwiLi4vcXVlcnlcIjtcbmltcG9ydCB0eXBlIHsgQmlnSW50U3RyaW5nIH0gZnJvbSBcIi4uL3R5cGUtdXRpbHNcIjtcbmltcG9ydCB7IGdldFBvc3RncmVTUUxCdWlsZGVyIH0gZnJvbSBcIi4vYnVpbGRlclwiO1xuaW1wb3J0IHR5cGUgeyBtb2NrVGFibGVzUXVlcnkgfSBmcm9tIFwiLi9pbnRyb3NwZWN0aW9uXCI7XG5cbi8qKlxuICogSW5zZXJ0cyBvbmUgb3IgbW9yZSByb3dzIGludG8gYSB0YWJsZSBhbmQgcmV0dXJucyB0aGUgaW5zZXJ0ZWQgcm93cyBhbG9uZyB3aXRoIHRoZWlyIGBjdGlkYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEluc2VydFF1ZXJ5KFxuICBkZXRhaWxzOiBBZGFwdGVySW5zZXJ0RGV0YWlscyxcbiAgcmVxdWlyZW1lbnRzPzogT21pdDxCdWlsZGVyUmVxdWlyZW1lbnRzLCBcIkFkYXB0ZXJcIiB8IFwiUXVlcnlDb21waWxlclwiPixcbikge1xuICBjb25zdCB7XG4gICAgcm93cyxcbiAgICB0YWJsZTogeyBjb2x1bW5zLCBuYW1lOiB0YWJsZU5hbWUsIHNjaGVtYSB9LFxuICB9ID0gZGV0YWlscztcblxuICBjb25zdCBidWlsZGVyID0gZ2V0UG9zdGdyZVNRTEJ1aWxkZXI8UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+PihyZXF1aXJlbWVudHMpO1xuXG4gIHJldHVybiBjb21waWxlKFxuICAgIGJ1aWxkZXJcbiAgICAgIC53aXRoU2NoZW1hKHNjaGVtYSlcbiAgICAgIC5pbnNlcnRJbnRvKHRhYmxlTmFtZSlcbiAgICAgIC52YWx1ZXMoYXBwbHlUcmFuc2Zvcm1hdGlvbnMoXCJpbnNlcnRcIiwgcm93cywgY29sdW1ucykpXG4gICAgICAucmV0dXJuaW5nKE9iamVjdC5rZXlzKGNvbHVtbnMpKVxuICAgICAgLnJldHVybmluZyhnZXRDdXJyZW50VGltZXN0YW1wTWlsbGlzKCkuYXMoXCJfX3BzX2luc2VydGVkX2F0X19cIikpLFxuICApO1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBxdWVyeSB0aGF0IHNlbGVjdHMgYWxsIGNvbHVtbnMgZnJvbSBhIHRhYmxlLCBhbG9uZyB3aXRoIGFuIHVuYm91bmQgcm93IGNvdW50IGFzIGBfX3BzX2NvdW50X19gLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0U2VsZWN0UXVlcnkoXG4gIGRldGFpbHM6IEFkYXB0ZXJRdWVyeURldGFpbHMsXG4gIHJlcXVpcmVtZW50cz86IE9taXQ8QnVpbGRlclJlcXVpcmVtZW50cywgXCJBZGFwdGVyXCIgfCBcIlF1ZXJ5Q29tcGlsZXJcIj4sXG4pIHtcbiAgY29uc3Qge1xuICAgIGZpbHRlciA9IHsgYWZ0ZXI6IFwiYW5kXCIsIGZpbHRlcnM6IFtdLCBraW5kOiBcIkZpbHRlckdyb3VwXCIgfSxcbiAgICBwYWdlSW5kZXgsXG4gICAgcGFnZVNpemUsXG4gICAgc29ydE9yZGVyLFxuICAgIHRhYmxlOiB7IGNvbHVtbnMsIG5hbWU6IHRhYmxlTmFtZSwgc2NoZW1hIH0sXG4gIH0gPSBkZXRhaWxzO1xuXG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRQb3N0Z3JlU1FMQnVpbGRlcjxSZWNvcmQ8c3RyaW5nLCBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPj4+KHJlcXVpcmVtZW50cyk7XG5cbiAgY29uc3QgZmlsdGVyRXhwcmVzc2lvbiA9IGdldFNlbGVjdEZpbHRlckV4cHJlc3Npb24oZmlsdGVyLmZpbHRlcnMsIGNvbHVtbnMpO1xuXG4gIGNvbnN0IGNvdW50UXVlcnkgPSBidWlsZGVyXG4gICAgLndpdGhTY2hlbWEoc2NoZW1hKVxuICAgIC5zZWxlY3RGcm9tKHRhYmxlTmFtZSlcbiAgICAud2hlcmUoZmlsdGVyRXhwcmVzc2lvbilcbiAgICAuc2VsZWN0KChlYikgPT4gZWIuY2FzdDxCaWdJbnRTdHJpbmc+KGViLmZuLmNvYWxlc2NlKGViLmZuLmNvdW50QWxsKCksIHNxbC5saXQoMCkpLCBcInRleHRcIikuYXMoXCJ2YWx1ZVwiKSk7XG5cbiAgcmV0dXJuIGNvbXBpbGUoXG4gICAgYnVpbGRlclxuICAgICAgLndpdGgoXCJjb3VudFwiLCAoKSA9PiBjb3VudFF1ZXJ5KVxuICAgICAgLndpdGhTY2hlbWEoc2NoZW1hKVxuICAgICAgLnNlbGVjdEZyb20oW3RhYmxlTmFtZSwgXCJjb3VudFwiXSlcbiAgICAgIC8vIFRPRE86IGN1cnNvciBwYWdpbmF0aW9uP1xuICAgICAgLndoZXJlKGZpbHRlckV4cHJlc3Npb24pXG4gICAgICAuc2VsZWN0KE9iamVjdC5rZXlzKGNvbHVtbnMpKVxuICAgICAgLnNlbGVjdChcbiAgICAgICAgc3FsXG4gICAgICAgICAgLnJlZjxCaWdJbnRTdHJpbmc+KFxuICAgICAgICAgICAgXCJjb3VudC52YWx1ZVwiIHNhdGlzZmllcyBSZWZlcmVuY2VFeHByZXNzaW9uPHsgY291bnQ6IEluZmVyUmVzdWx0PHR5cGVvZiBjb3VudFF1ZXJ5PltudW1iZXJdIH0sIFwiY291bnRcIj4sXG4gICAgICAgICAgKVxuICAgICAgICAgIC5hcyhcIl9fcHNfY291bnRfX1wiKSxcbiAgICAgIClcbiAgICAgIC4kY2FsbCgocWIpID0+IHNvcnRPcmRlci5yZWR1Y2UoKHFiLCBpdGVtKSA9PiBxYi5vcmRlckJ5KGl0ZW0uY29sdW1uLCBpdGVtLmRpcmVjdGlvbiksIHFiKSlcbiAgICAgIC5saW1pdChwYWdlU2l6ZSlcbiAgICAgIC8vIHdlJ3JlIGluamVjdGluZyB0aGUgb2Zmc2V0IHZhbHVlIGhlcmUgdG8gYXZvaWQgc2VyaWFsaXphdGlvbiBjb21wbGV4aXR5IChgYmlnaW50YCBpcyBhIG5vLWdvIGZvciBgSlNPTi5zdHJpbmdpZnlgKS5cbiAgICAgIC5vZmZzZXQoc3FsLmxpdChCaWdJbnQocGFnZUluZGV4KSAqIEJpZ0ludChwYWdlU2l6ZSkpKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBGb3IgdGVzdGluZyBwdXJwb3Nlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1vY2tTZWxlY3RRdWVyeSgpIHtcbiAgcmV0dXJuIFtcbiAgICB7XG4gICAgICBjcmVhdGVkX2F0OiBuZXcgRGF0ZShcIjIwMjUtMDEtMjZUMjE6NTY6MTIuMzQ1WlwiKSxcbiAgICAgIGRlbGV0ZWRfYXQ6IG51bGwsXG4gICAgICBpZDogMSxcbiAgICAgIG5hbWU6IFwiSm9obiBEb2VcIixcbiAgICAgIF9fcHNfY291bnRfXzogXCIyXCIsXG4gICAgICByb2xlOiBcImFkbWluXCIsXG4gICAgICBuYW1lX3JvbGU6IFwiSm9ubiBEb2UgLSBhZG1pblwiLFxuICAgIH0sXG4gICAge1xuICAgICAgY3JlYXRlZF9hdDogbmV3IERhdGUoXCIyMDI1LTAxLTI2VDIwOjU2OjEyLjM0NVpcIiksXG4gICAgICBkZWxldGVkX2F0OiBudWxsLFxuICAgICAgaWQ6IDIsXG4gICAgICBuYW1lOiBcIkphbmUgRG9lXCIsXG4gICAgICBfX3BzX2NvdW50X186IFwiMlwiLFxuICAgICAgcm9sZTogXCJwb3dlcnVzZXJcIixcbiAgICAgIG5hbWVfcm9sZTogXCJKYW5lIERvZSAtIHBvd2VydXNlclwiLFxuICAgIH0sXG4gIF0gYXMgY29uc3Qgc2F0aXNmaWVzIHtcbiAgICAvLyBiZXN0IGVmZm9ydCBubyBuZWVkIHRvIGdvIG92ZXJib2FyZFxuICAgIFtLIGluIFJldHVyblR5cGU8dHlwZW9mIG1vY2tUYWJsZXNRdWVyeT5bMV1bXCJjb2x1bW5zXCJdW251bWJlcl1bXCJuYW1lXCJdIHwgXCJfX3BzX2NvdW50X19cIl06IHVua25vd247XG4gIH1bXTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcXVlcnkgdGhhdCB1cGRhdGVzIGEgZ2l2ZW4gcm93IGluIGEgdGFibGUgd2l0aCBnaXZlbiBjaGFuZ2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0VXBkYXRlUXVlcnkoXG4gIGRldGFpbHM6IEFkYXB0ZXJVcGRhdGVEZXRhaWxzLFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKSB7XG4gIGNvbnN0IHtcbiAgICBjaGFuZ2VzLFxuICAgIHJvdyxcbiAgICB0YWJsZTogeyBjb2x1bW5zLCBuYW1lOiB0YWJsZU5hbWUsIHNjaGVtYSB9LFxuICB9ID0gZGV0YWlscztcblxuICBjb25zdCBidWlsZGVyID0gZ2V0UG9zdGdyZVNRTEJ1aWxkZXI8UmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+PihyZXF1aXJlbWVudHMpO1xuXG4gIHJldHVybiBjb21waWxlKFxuICAgIGJ1aWxkZXJcbiAgICAgIC53aXRoU2NoZW1hKHNjaGVtYSlcbiAgICAgIC51cGRhdGVUYWJsZSh0YWJsZU5hbWUpXG4gICAgICAuc2V0KGFwcGx5VHJhbnNmb3JtYXRpb25zKFwidXBkYXRlXCIsIGNoYW5nZXMsIGNvbHVtbnMpKVxuICAgICAgLiRjYWxsKGFwcGx5SW5mZXJyZWRSb3dGaWx0ZXJzKFtyb3ddLCBjb2x1bW5zKSlcbiAgICAgIC5yZXR1cm5pbmcoT2JqZWN0LmtleXMoY29sdW1ucykpXG4gICAgICAucmV0dXJuaW5nKGdldEN1cnJlbnRUaW1lc3RhbXBNaWxsaXMoKS5hcyhcIl9fcHNfdXBkYXRlZF9hdF9fXCIpKSxcbiAgKTtcbn1cblxuLyoqXG4gKiBSZXR1cm5zIGEgcXVlcnkgdGhhdCBkZWxldGVzIGEgZ2l2ZW4gc2V0IG9mIHJvd3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXREZWxldGVRdWVyeShcbiAgZGV0YWlsczogQWRhcHRlckRlbGV0ZURldGFpbHMsXG4gIHJlcXVpcmVtZW50cz86IE9taXQ8QnVpbGRlclJlcXVpcmVtZW50cywgXCJBZGFwdGVyXCIgfCBcIlF1ZXJ5Q29tcGlsZXJcIj4sXG4pIHtcbiAgY29uc3Qge1xuICAgIHJvd3MsXG4gICAgdGFibGU6IHsgY29sdW1ucywgbmFtZTogdGFibGVOYW1lLCBzY2hlbWEgfSxcbiAgfSA9IGRldGFpbHM7XG5cbiAgY29uc3QgYnVpbGRlciA9IGdldFBvc3RncmVTUUxCdWlsZGVyPFJlY29yZDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHVua25vd24+Pj4ocmVxdWlyZW1lbnRzKTtcblxuICByZXR1cm4gY29tcGlsZShcbiAgICBidWlsZGVyXG4gICAgICAud2l0aFNjaGVtYShzY2hlbWEpXG4gICAgICAuZGVsZXRlRnJvbSh0YWJsZU5hbWUpXG4gICAgICAuJGNhbGwoYXBwbHlJbmZlcnJlZFJvd0ZpbHRlcnMocm93cywgY29sdW1ucykpXG4gICAgICAucmV0dXJuaW5nKE9iamVjdC5rZXlzKGNvbHVtbnMpKVxuICAgICAgLnJldHVybmluZyhnZXRDdXJyZW50VGltZXN0YW1wTWlsbGlzKCkuYXMoXCJfX3BzX2RlbGV0ZWRfYXRfX1wiKSksXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldEN1cnJlbnRUaW1lc3RhbXBNaWxsaXMoKSB7XG4gIGNvbnN0IGViID0gZXhwcmVzc2lvbkJ1aWxkZXIoKTtcblxuICByZXR1cm4gZWIuY2FzdDxCaWdJbnRTdHJpbmc+KGViLmZuKFwiZmxvb3JcIiwgW2ViKGViLmZuKFwiZXh0cmFjdFwiLCBbc3FsYGVwb2NoIGZyb20gbm93KClgXSksIFwiKlwiLCAxXzAwMCldKSwgXCJ0ZXh0XCIpO1xufVxuIiwgImltcG9ydCB7IHR5cGUgS3lzZWx5LCBQb3N0Z3Jlc0FkYXB0ZXIsIFBvc3RncmVzUXVlcnlDb21waWxlciB9IGZyb20gXCJreXNlbHlcIjtcblxuaW1wb3J0IHsgdHlwZSBCdWlsZGVyUmVxdWlyZW1lbnRzLCBnZXRCdWlsZGVyIH0gZnJvbSBcIi4uL3F1ZXJ5XCI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG5leHBvcnQgZnVuY3Rpb24gZ2V0UG9zdGdyZVNRTEJ1aWxkZXI8RGF0YWJhc2UgPSBhbnk+KFxuICByZXF1aXJlbWVudHM/OiBPbWl0PEJ1aWxkZXJSZXF1aXJlbWVudHMsIFwiQWRhcHRlclwiIHwgXCJRdWVyeUNvbXBpbGVyXCI+LFxuKTogS3lzZWx5PERhdGFiYXNlPiB7XG4gIHJldHVybiBnZXRCdWlsZGVyKHsgLi4ucmVxdWlyZW1lbnRzLCBBZGFwdGVyOiBQb3N0Z3Jlc0FkYXB0ZXIsIFF1ZXJ5Q29tcGlsZXI6IFBvc3RncmVzUXVlcnlDb21waWxlciB9KTtcbn1cbiIsICJpbXBvcnQgeyB0eXBlIFNlbGVjdFF1ZXJ5QnVpbGRlciwgc3FsIH0gZnJvbSBcImt5c2VseVwiO1xuaW1wb3J0IHsganNvbkFycmF5RnJvbSB9IGZyb20gXCJreXNlbHkvaGVscGVycy9wb3N0Z3Jlc1wiO1xuXG5pbXBvcnQgeyB0eXBlIEJ1aWxkZXJSZXF1aXJlbWVudHMsIGNvbXBpbGUsIHR5cGUgUXVlcnlSZXN1bHQgfSBmcm9tIFwiLi4vcXVlcnlcIjtcbmltcG9ydCB7IGdldFBvc3RncmVTUUxCdWlsZGVyIH0gZnJvbSBcIi4vYnVpbGRlclwiO1xuXG5jb25zdCBSRUdVTEFSX1RBQkxFX0tJTkQgPSBcInJcIjtcbmNvbnN0IFZJRVdfVEFCTEVfS0lORCA9IFwidlwiO1xuY29uc3QgVEFCTEVfS0lORFMgPSBbUkVHVUxBUl9UQUJMRV9LSU5ELCBWSUVXX1RBQkxFX0tJTkRdIGFzIGNvbnN0O1xudHlwZSBUYWJsZUtpbmQgPSAodHlwZW9mIFRBQkxFX0tJTkRTKVtudW1iZXJdO1xuXG5pbnRlcmZhY2UgRGF0YWJhc2Uge1xuICAvKiogY29sdW1ucyAqL1xuICBcInBnX2NhdGFsb2cucGdfYXR0cmlidXRlXCI6IHtcbiAgICAvKiogY29sdW1uIG9yZGVyIG51bWJlciBpbiBpdHMgdGFibGUgKi9cbiAgICBhdHRudW06IG51bWJlcjtcbiAgICAvKiogdGFibGUvdmlldyBpZGVudGlmaWVyICovXG4gICAgYXR0cmVsaWQ6IHN0cmluZztcbiAgICAvKiogY29sdW1uIG5hbWUgKi9cbiAgICBhdHRuYW1lOiBzdHJpbmc7XG4gICAgLyoqIHdhcyB0aGUgY29sdW1uIGRyb3BwZWQuIGRyb3BwZWQgY29sdW1ucyBtaWdodCBub3QgYmUgMTAwJSByZW1vdmVkIGltbWVkaWF0ZWx5LiAqL1xuICAgIGF0dGlzZHJvcHBlZDogYm9vbGVhbjtcbiAgICAvKiogY29sdW1uIGRhdGF0eXBlIGlkZW50aWZpZXIgKi9cbiAgICBhdHR0eXBpZDogc3RyaW5nO1xuICAgIC8qKlxuICAgICAqIGdlbmVyYXRpb24gZmxhZyBmb3IgY29tcHV0ZWQgY29sdW1uczpcbiAgICAgKiAnJyAoZW1wdHkpIGZvciByZWd1bGFyIGNvbHVtbnMsXG4gICAgICogJ3MnIGZvciBTVE9SRUQgZ2VuZXJhdGVkIGNvbHVtbnMgKFBvc3RncmVzIEdFTkVSQVRFRCBBTFdBWVMgQVMpLlxuICAgICAqL1xuICAgIGF0dGdlbmVyYXRlZDogXCJcIiB8IFwic1wiO1xuICAgIC8qKiBOT1QgTlVMTCBjb25zdHJhaW50OiB0cnVlIGlmIHRoZSBjb2x1bW4gaGFzIGEgTk9UIE5VTEwgY29uc3RyYWludCAqL1xuICAgIGF0dG5vdG51bGw6IGJvb2xlYW47XG4gIH07XG4gIC8qKiByZXNvdXJjZXMsIGUuZy4gdGFibGVzLCBzZXF1ZW5jZXMsIGV0Yy4gKi9cbiAgXCJwZ19jYXRhbG9nLnBnX2NsYXNzXCI6IHtcbiAgICAvKiogcmVzb3VyY2UgaWQgKi9cbiAgICBvaWQ6IG51bWJlcjtcbiAgICAvKiogcmVzb3VyY2UgbmFtZSAqL1xuICAgIHJlbG5hbWU6IHN0cmluZztcbiAgICAvKiogc2NoZW1hIGlkICovXG4gICAgcmVsbmFtZXNwYWNlOiBudW1iZXI7XG4gICAgLyoqIHJlc291cmNlIGtpbmQ6IHJlZ3VsYXIgdGFibGUsIHZpZXcgKi9cbiAgICByZWxraW5kOiBUYWJsZUtpbmQ7XG4gIH07XG4gIC8qKiBlbnVtIHR5cGVzJyB2YWx1ZXMgKi9cbiAgXCJwZ19jYXRhbG9nLnBnX2VudW1cIjoge1xuICAgIC8qKiBlbnVtIHZhbHVlICovXG4gICAgZW51bWxhYmVsOiBzdHJpbmc7XG4gICAgLyoqIGVudW0ncyB0eXBlIGlkICovXG4gICAgZW51bXR5cGlkOiBudW1iZXI7XG4gIH07XG4gIC8qKiBzY2hlbWFzICovXG4gIFwicGdfY2F0YWxvZy5wZ19uYW1lc3BhY2VcIjoge1xuICAgIC8qKiBzY2hlbWEgbmFtZSAqL1xuICAgIG5zcG5hbWU6IHN0cmluZztcbiAgICAvKiogc2NoZW1hIGlkICovXG4gICAgb2lkOiBudW1iZXI7XG4gIH07XG4gIC8qKiBkYXRhdHlwZXMgKi9cbiAgXCJwZ19jYXRhbG9nLnBnX3R5cGVcIjoge1xuICAgIC8qKiB0eXBlIGlkICovXG4gICAgb2lkOiBudW1iZXI7XG4gICAgLyoqIHR5cGUgbmFtZSAqL1xuICAgIHR5cG5hbWU6IHN0cmluZztcbiAgICAvKiogdHlwZSdzIHNjaGVtYSAoYWthIG5hbWVzcGFjZSkgaWQgKi9cbiAgICB0eXBuYW1lc3BhY2U6IG51bWJlcjtcbiAgICAvKipcbiAgICAgKiB0eXBlJ3Mga2luZFxuICAgICAqXG4gICAgICogJ2UnIC0gZW51bSB0eXBlXG4gICAgICovXG4gICAgdHlwdHlwZTogXCJlXCIgfCAoc3RyaW5nICYge30pO1xuICB9O1xuICAvKiogY29uc3RyYWludHMgKi9cbiAgXCJwZ19jYXRhbG9nLnBnX2NvbnN0cmFpbnRcIjoge1xuICAgIC8qKiByZWxhdGlvbiAodGFibGUpIGlkIHdoaWNoIHRoaXMgY29uc3RyYWludCB3YXMgY3JlYXRlZCBmb3IgKi9cbiAgICBjb25yZWxpZDogbnVtYmVyO1xuICAgIC8qKlxuICAgICAqIGNvbnN0cmFpbnQgdHlwZS5cbiAgICAgKlxuICAgICAqIGAncCdgIC0gcHJpbWFyeSBrZXkgY29uc3RyYWludC5cbiAgICAgKiBgJ2YnYCAtIGZvcmVpZ24ga2V5IGNvbnN0cmFpbnQuXG4gICAgICovXG4gICAgY29udHlwZTogXCJwXCIgfCBcImZcIiB8IChzdHJpbmcgJiB7fSk7XG4gICAgLyoqXG4gICAgICogYW4gb3JkZXJlZCBhcnJheSBvZiBjb2x1bW5zIGluY2x1ZGVkIGluIHRoZSBjb25zdHJhaW50LlxuICAgICAqXG4gICAgICogdGhlIGNvbHVtbnMgYXJlIHJlcHJlc2VudGVkIGJ5IHRoZWlyIG9yZGluYWwgbnVtYmVyIChgYXR0bnVtYCkgaW4gdGhlaXIgcmVsYXRpb24gKHRhYmxlKS5cbiAgICAgKlxuICAgICAqIEBleGFtcGxlIGAnezEsM30nYCAtIGEgY29uc3RyYWludCB3aXRoIDIgY29sdW1ucywgdGhlIDFzdCAmIDNyZCBpbiB0aGVpciB0YWJsZS5cbiAgICAgKi9cbiAgICBjb25rZXk6IG51bWJlcltdO1xuICAgIC8qKiBpZiBhIGZvcmVpZ24ga2V5LCB0aGUgcmVmZXJlbmNlZCB0YWJsZSAqL1xuICAgIGNvbmZyZWxpZDogbnVtYmVyO1xuICAgIC8qKiBpZiBhIGZvcmVpZ24ga2V5LCB0aGUgcmVmZXJlbmNlZCBjb2x1bW5zICovXG4gICAgY29uZmtleTogbnVtYmVyW107XG4gIH07XG59XG5cbi8qKlxuICogUmV0dXJucyBhIHF1ZXJ5IHRoYXQgcmV0dXJucyBtZXRhZGF0YSBmb3IgYWxsIHVzZXItZGVmaW5lZCB0YWJsZXMgYW5kIHZpZXdzIGluIHRoZSBkYXRhYmFzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRhYmxlc1F1ZXJ5KHJlcXVpcmVtZW50cz86IE9taXQ8QnVpbGRlclJlcXVpcmVtZW50cywgXCJBZGFwdGVyXCIgfCBcIlF1ZXJ5Q29tcGlsZXJcIj4pIHtcbiAgcmV0dXJuIGNvbXBpbGUoXG4gICAgZ2V0UG9zdGdyZVNRTEJ1aWxkZXI8RGF0YWJhc2U+KHJlcXVpcmVtZW50cylcbiAgICAgIC5zZWxlY3RGcm9tKFwicGdfY2F0YWxvZy5wZ19jbGFzcyBhcyBjbHNcIilcbiAgICAgIC5pbm5lckpvaW4oXCJwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBhcyBuc1wiLCBcImNscy5yZWxuYW1lc3BhY2VcIiwgXCJucy5vaWRcIilcbiAgICAgIC4kY2FsbChleGNsdWRlU3lzdGVtVGFibGVzKVxuICAgICAgLy8gcmVndWxhciB0YWJsZXMgb3Igdmlld3NcbiAgICAgIC53aGVyZShcImNscy5yZWxraW5kXCIsIFwiaW5cIiwgVEFCTEVfS0lORFMpXG4gICAgICAuc2VsZWN0KChlYikgPT4gW1xuICAgICAgICBcIm5zLm5zcG5hbWUgYXMgc2NoZW1hXCIsXG4gICAgICAgIFwiY2xzLnJlbG5hbWUgYXMgbmFtZVwiLFxuICAgICAgICBqc29uQXJyYXlGcm9tKFxuICAgICAgICAgIGViXG4gICAgICAgICAgICAuc2VsZWN0RnJvbShcInBnX2NhdGFsb2cucGdfYXR0cmlidXRlIGFzIGF0dFwiKVxuICAgICAgICAgICAgLmlubmVySm9pbihcInBnX2NhdGFsb2cucGdfdHlwZSBhcyB0eXBcIiwgXCJ0eXAub2lkXCIsIFwiYXR0LmF0dHR5cGlkXCIpXG4gICAgICAgICAgICAuaW5uZXJKb2luKFwicGdfY2F0YWxvZy5wZ19uYW1lc3BhY2UgYXMgdG5zXCIsIFwidG5zLm9pZFwiLCBcInR5cC50eXBuYW1lc3BhY2VcIilcbiAgICAgICAgICAgIC5sZWZ0Sm9pbihcInBnX2NhdGFsb2cucGdfY29uc3RyYWludCBhcyBwa19jb25cIiwgKGpiKSA9PlxuICAgICAgICAgICAgICBqYlxuICAgICAgICAgICAgICAgIC5vbihcInBrX2Nvbi5jb250eXBlXCIsIFwiPVwiLCBcInBcIilcbiAgICAgICAgICAgICAgICAub25SZWYoXCJwa19jb24uY29ucmVsaWRcIiwgXCI9XCIsIFwiY2xzLm9pZFwiKVxuICAgICAgICAgICAgICAgIC5vbigoZWIpID0+IGViKFwiYXR0LmF0dG51bVwiLCBcIj1cIiwgZWIuZm4uYW55KFwicGtfY29uLmNvbmtleVwiKSkpLFxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgLmxlZnRKb2luKFwicGdfY2F0YWxvZy5wZ19jb25zdHJhaW50IGFzIGZrX2NvblwiLCAoamIpID0+XG4gICAgICAgICAgICAgIGpiXG4gICAgICAgICAgICAgICAgLm9uKFwiZmtfY29uLmNvbnR5cGVcIiwgXCI9XCIsIFwiZlwiKVxuICAgICAgICAgICAgICAgIC5vblJlZihcImZrX2Nvbi5jb25yZWxpZFwiLCBcIj1cIiwgXCJjbHMub2lkXCIpXG4gICAgICAgICAgICAgICAgLm9uKChlYikgPT4gZWIoXCJhdHQuYXR0bnVtXCIsIFwiPVwiLCBlYi5mbi5hbnkoXCJma19jb24uY29ua2V5XCIpKSksXG4gICAgICAgICAgICApXG4gICAgICAgICAgICAubGVmdEpvaW4oXCJwZ19jYXRhbG9nLnBnX2NsYXNzIGFzIGZrX2Nsc1wiLCBcImZrX2Nscy5vaWRcIiwgXCJma19jb24uY29uZnJlbGlkXCIpXG4gICAgICAgICAgICAubGVmdEpvaW4oXCJwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBhcyBma19uc1wiLCBcImZrX25zLm9pZFwiLCBcImZrX2Nscy5yZWxuYW1lc3BhY2VcIilcbiAgICAgICAgICAgIC5sZWZ0Sm9pbihcInBnX2NhdGFsb2cucGdfYXR0cmlidXRlIGFzIGZrX2F0dFwiLCAoamIpID0+XG4gICAgICAgICAgICAgIGpiXG4gICAgICAgICAgICAgICAgLm9uUmVmKFwiZmtfYXR0LmF0dHJlbGlkXCIsIFwiPVwiLCBcImZrX2Nscy5vaWRcIilcbiAgICAgICAgICAgICAgICAvLyBVc2UgYSBjYWxsYmFjayBmb3IgdGhlIC5vbigpIGNvbmRpdGlvbiB0byBlbnN1cmUgY29ycmVjdCBjb250ZXh0IGZvciB0eXBlc1xuICAgICAgICAgICAgICAgIC5vbigob25fZWIpID0+IG9uX2ViKFwiZmtfYXR0LmF0dG51bVwiLCBcIj1cIiwgb25fZWIuZm4uYW55KFwiZmtfY29uLmNvbmZrZXlcIikpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC53aGVyZVJlZihcImF0dC5hdHRyZWxpZFwiLCBcIj1cIiwgXCJjbHMub2lkXCIpXG4gICAgICAgICAgICAvLyBleGNsdWRlIHN5c3RlbSBjb2x1bW5zXG4gICAgICAgICAgICAud2hlcmUoXCJhdHQuYXR0bnVtXCIsIFwiPj1cIiwgMClcbiAgICAgICAgICAgIC53aGVyZShcImF0dC5hdHRpc2Ryb3BwZWRcIiwgXCIhPVwiLCB0cnVlKVxuICAgICAgICAgICAgLnNlbGVjdChbXG4gICAgICAgICAgICAgIFwiYXR0LmF0dG5hbWUgYXMgbmFtZVwiLFxuICAgICAgICAgICAgICBcInR5cC50eXBuYW1lIGFzIGRhdGF0eXBlXCIsXG4gICAgICAgICAgICAgIFwidG5zLm5zcG5hbWUgYXMgZGF0YXR5cGVfc2NoZW1hXCIsXG4gICAgICAgICAgICAgIFwiZmtfbnMubnNwbmFtZSBhcyBma19zY2hlbWFcIixcbiAgICAgICAgICAgICAgXCJma19jbHMucmVsbmFtZSBhcyBma190YWJsZVwiLFxuICAgICAgICAgICAgICBcImZrX2F0dC5hdHRuYW1lIGFzIGZrX2NvbHVtblwiLFxuICAgICAgICAgICAgXSlcbiAgICAgICAgICAgIC5zZWxlY3QoKGViKSA9PiBbXG4gICAgICAgICAgICAgIGViKFwicGtfY29uLmNvbmtleVwiLCBcImlzIG5vdFwiLCBudWxsKS4kY2FzdFRvPGJvb2xlYW4+KCkuYXMoXCJwa1wiKSxcbiAgICAgICAgICAgICAgZWIoXCJhdHQuYXR0Z2VuZXJhdGVkXCIsIFwiIT1cIiwgXCJcIikuJGNhc3RUbzxib29sZWFuPigpLmFzKFwiY29tcHV0ZWRcIiksXG4gICAgICAgICAgICAgIGViKFwiYXR0LmF0dG5vdG51bGxcIiwgXCIhPVwiLCB0cnVlKS4kY2FzdFRvPGJvb2xlYW4+KCkuYXMoXCJudWxsYWJsZVwiKSxcbiAgICAgICAgICAgICAgZWIuZm5cbiAgICAgICAgICAgICAgICAuY29hbGVzY2UoXG4gICAgICAgICAgICAgICAgICBlYlxuICAgICAgICAgICAgICAgICAgICAuc2VsZWN0RnJvbShcInBnX2NhdGFsb2cucGdfZW51bSBhcyBlbm1cIilcbiAgICAgICAgICAgICAgICAgICAgLndoZXJlUmVmKFwiZW5tLmVudW10eXBpZFwiLCBcIj1cIiwgXCJ0eXAub2lkXCIpXG4gICAgICAgICAgICAgICAgICAgIC5zZWxlY3QoKGViKSA9PiBlYi5mbi5qc29uQWdnKGViLnJlZihcImVubS5lbnVtbGFiZWxcIikpLmFzKFwib1wiKSksXG4gICAgICAgICAgICAgICAgICBzcWw8c3RyaW5nW10+YCdbXSdgLFxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXMoXCJvcHRpb25zXCIpLFxuICAgICAgICAgICAgXSksXG4gICAgICAgICkuYXMoXCJjb2x1bW5zXCIpLFxuICAgICAgXSksXG4gICk7XG59XG5cbi8qKlxuICogRm9yIHRlc3RpbmcgcHVycG9zZXMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtb2NrVGFibGVzUXVlcnkoKSB7XG4gIHJldHVybiBbXG4gICAge1xuICAgICAgc2NoZW1hOiBcInpvb1wiLFxuICAgICAgbmFtZTogXCJhbmltYWxzXCIsXG4gICAgICBjb2x1bW5zOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImlkXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwiaW50NFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IHRydWUsXG4gICAgICAgICAgY29tcHV0ZWQ6IGZhbHNlLFxuICAgICAgICAgIG9wdGlvbnM6IFtdLFxuICAgICAgICAgIG51bGxhYmxlOiBmYWxzZSxcbiAgICAgICAgICBma19zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZmtfdGFibGU6IG51bGwsXG4gICAgICAgICAgZmtfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJuYW1lXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidGV4dFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IGZhbHNlLFxuICAgICAgICAgIGNvbXB1dGVkOiBmYWxzZSxcbiAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICBma19zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZmtfdGFibGU6IG51bGwsXG4gICAgICAgICAgZmtfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICAgIHtcbiAgICAgIHNjaGVtYTogXCJwdWJsaWNcIixcbiAgICAgIG5hbWU6IFwidXNlcnNcIixcbiAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiaWRcIixcbiAgICAgICAgICBkYXRhdHlwZTogXCJpbnQ0XCIsXG4gICAgICAgICAgZGF0YXR5cGVfc2NoZW1hOiBcInBnX2NhdGFsb2dcIixcbiAgICAgICAgICBwazogdHJ1ZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgIGZrX3NjaGVtYTogbnVsbCxcbiAgICAgICAgICBma190YWJsZTogbnVsbCxcbiAgICAgICAgICBma19jb2x1bW46IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcImNyZWF0ZWRfYXRcIixcbiAgICAgICAgICBkYXRhdHlwZTogXCJ0aW1lc3RhbXBcIixcbiAgICAgICAgICBkYXRhdHlwZV9zY2hlbWE6IFwicGdfY2F0YWxvZ1wiLFxuICAgICAgICAgIHBrOiBmYWxzZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZmtfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZrX3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZrX2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiZGVsZXRlZF9hdFwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInRpbWVzdGFtcFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IGZhbHNlLFxuICAgICAgICAgIGNvbXB1dGVkOiBmYWxzZSxcbiAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICBma19zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZmtfdGFibGU6IG51bGwsXG4gICAgICAgICAgZmtfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJyb2xlXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidmFyY2hhclwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IGZhbHNlLFxuICAgICAgICAgIGNvbXB1dGVkOiBmYWxzZSxcbiAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICBma19zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZmtfdGFibGU6IG51bGwsXG4gICAgICAgICAgZmtfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJuYW1lXCIsXG4gICAgICAgICAgZGF0YXR5cGU6IFwidmFyY2hhclwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IGZhbHNlLFxuICAgICAgICAgIGNvbXB1dGVkOiBmYWxzZSxcbiAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICBma19zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZmtfdGFibGU6IG51bGwsXG4gICAgICAgICAgZmtfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogXCJuYW1lX3JvbGVcIixcbiAgICAgICAgICBkYXRhdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgZGF0YXR5cGVfc2NoZW1hOiBcInBnX2NhdGFsb2dcIixcbiAgICAgICAgICBwazogZmFsc2UsXG4gICAgICAgICAgY29tcHV0ZWQ6IHRydWUsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgIGZrX3NjaGVtYTogbnVsbCxcbiAgICAgICAgICBma190YWJsZTogbnVsbCxcbiAgICAgICAgICBma19jb2x1bW46IG51bGwsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0sXG4gICAge1xuICAgICAgc2NoZW1hOiBcInB1YmxpY1wiLFxuICAgICAgbmFtZTogXCJjb21wb3NpdGVfcGtcIixcbiAgICAgIGNvbHVtbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiaWRcIixcbiAgICAgICAgICBkYXRhdHlwZTogXCJ1dWlkXCIsXG4gICAgICAgICAgZGF0YXR5cGVfc2NoZW1hOiBcInBnX2NhdGFsb2dcIixcbiAgICAgICAgICBwazogdHJ1ZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IGZhbHNlLFxuICAgICAgICAgIGZrX3NjaGVtYTogbnVsbCxcbiAgICAgICAgICBma190YWJsZTogbnVsbCxcbiAgICAgICAgICBma19jb2x1bW46IG51bGwsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lOiBcIm5hbWVcIixcbiAgICAgICAgICBkYXRhdHlwZTogXCJ0ZXh0XCIsXG4gICAgICAgICAgZGF0YXR5cGVfc2NoZW1hOiBcInBnX2NhdGFsb2dcIixcbiAgICAgICAgICBwazogdHJ1ZSxcbiAgICAgICAgICBjb21wdXRlZDogZmFsc2UsXG4gICAgICAgICAgb3B0aW9uczogW10sXG4gICAgICAgICAgbnVsbGFibGU6IHRydWUsXG4gICAgICAgICAgZmtfc2NoZW1hOiBudWxsLFxuICAgICAgICAgIGZrX3RhYmxlOiBudWxsLFxuICAgICAgICAgIGZrX2NvbHVtbjogbnVsbCxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IFwiY3JlYXRlZF9hdFwiLFxuICAgICAgICAgIGRhdGF0eXBlOiBcInRpbWVzdGFtcFwiLFxuICAgICAgICAgIGRhdGF0eXBlX3NjaGVtYTogXCJwZ19jYXRhbG9nXCIsXG4gICAgICAgICAgcGs6IGZhbHNlLFxuICAgICAgICAgIGNvbXB1dGVkOiBmYWxzZSxcbiAgICAgICAgICBvcHRpb25zOiBbXSxcbiAgICAgICAgICBudWxsYWJsZTogdHJ1ZSxcbiAgICAgICAgICBma19zY2hlbWE6IG51bGwsXG4gICAgICAgICAgZmtfdGFibGU6IG51bGwsXG4gICAgICAgICAgZmtfY29sdW1uOiBudWxsLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9LFxuICBdIGFzIGNvbnN0IHNhdGlzZmllcyBRdWVyeVJlc3VsdDx0eXBlb2YgZ2V0VGFibGVzUXVlcnk+O1xufVxuXG4vKipcbiAqIFJldHVybnMgYSBxdWVyeSB0aGF0IHJldHVybnMgdGhlIGN1cnJlbnQgdGltZXpvbmUgc2V0dGluZyBvZiB0aGUgUG9zdGdyZVNRTCBkYXRhYmFzZS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFRpbWV6b25lUXVlcnkoKSB7XG4gIGNvbnN0IGJ1aWxkZXIgPSBnZXRQb3N0Z3JlU1FMQnVpbGRlcigpO1xuXG4gIHJldHVybiBjb21waWxlKGJ1aWxkZXIuc2VsZWN0Tm9Gcm9tKGJ1aWxkZXIuZm48c3RyaW5nPihcImN1cnJlbnRfc2V0dGluZ1wiLCBbc3FsLmxpdChcInRpbWV6b25lXCIpXSkuYXMoXCJ0aW1lem9uZVwiKSkpO1xufVxuXG4vKipcbiAqIEZvciB0ZXN0aW5nIHB1cnBvc2VzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbW9ja1RpbWV6b25lUXVlcnkoKSB7XG4gIHJldHVybiBbeyB0aW1lem9uZTogXCJVVENcIiB9XSBhcyBjb25zdCBzYXRpc2ZpZXMgUXVlcnlSZXN1bHQ8dHlwZW9mIGdldFRpbWV6b25lUXVlcnk+O1xufVxuXG4vKipcbiAqIFdlIGRvbid0IHdhbnQgUG9zdGdyZVNRTCBpbnRlcm5hbHMgaW4gaW50cm9zcGVjdGlvbiByZXN1bHRzLiBUbyBiZSB1c2VkIGluIGAkY2FsbGAuXG4gKi9cbmZ1bmN0aW9uIGV4Y2x1ZGVTeXN0ZW1UYWJsZXM8XG4gIFQgZXh0ZW5kcyBTZWxlY3RRdWVyeUJ1aWxkZXI8XG4gICAgRGF0YWJhc2UgJiB7IG5zOiBEYXRhYmFzZVtcInBnX2NhdGFsb2cucGdfbmFtZXNwYWNlXCJdOyBjbHM6IERhdGFiYXNlW1wicGdfY2F0YWxvZy5wZ19jbGFzc1wiXSB9LFxuICAgIFwibnNcIiB8IFwiY2xzXCIsXG4gICAgb2JqZWN0XG4gID4sXG4+KHFiOiBUKTogVCB7XG4gIHJldHVybiBxYi53aGVyZShgbnMubnNwbmFtZWAsIGAhfmAsIGBecGdfYCkud2hlcmUoYG5zLm5zcG5hbWVgLCBgIT1gLCBgaW5mb3JtYXRpb25fc2NoZW1hYCkgYXMgbmV2ZXI7XG59XG4iLCAiLy8vIDxyZWZlcmVuY2UgdHlwZXM9XCIuL3Bvc3RncmVzLmQudHNcIiAvPlxuaW1wb3J0IHsgc3FsIH0gZnJvbSAnLi4vcmF3LWJ1aWxkZXIvc3FsLmpzJztcbi8qKlxuICogQSBwb3N0Z3JlcyBoZWxwZXIgZm9yIGFnZ3JlZ2F0aW5nIGEgc3VicXVlcnkgKG9yIG90aGVyIGV4cHJlc3Npb24pIGludG8gYSBKU09OQiBhcnJheS5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiA8IS0tIHNpdGVFeGFtcGxlKFwic2VsZWN0XCIsIFwiTmVzdGVkIGFycmF5XCIsIDExMCkgLS0+XG4gKlxuICogV2hpbGUga3lzZWx5IGlzIG5vdCBhbiBPUk0gYW5kIGl0IGRvZXNuJ3QgaGF2ZSB0aGUgY29uY2VwdCBvZiByZWxhdGlvbnMsIHdlIGRvIHByb3ZpZGVcbiAqIGhlbHBlcnMgZm9yIGZldGNoaW5nIG5lc3RlZCBvYmplY3RzIGFuZCBhcnJheXMgaW4gYSBzaW5nbGUgcXVlcnkuIEluIHRoaXMgZXhhbXBsZSB3ZVxuICogdXNlIHRoZSBganNvbkFycmF5RnJvbWAgaGVscGVyIHRvIGZldGNoIHBlcnNvbidzIHBldHMgYWxvbmcgd2l0aCB0aGUgcGVyc29uJ3MgaWQuXG4gKlxuICogUGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBoZWxwZXJzIHVuZGVyIHRoZSBga3lzZWx5L2hlbHBlcnNgIGZvbGRlciwgaW5jbHVkaW5nXG4gKiBganNvbkFycmF5RnJvbWAsIGFyZSBub3QgZ3VhcmFudGVlZCB0byB3b3JrIHdpdGggdGhpcmQgcGFydHkgZGlhbGVjdHMuIEluIG9yZGVyIGZvclxuICogdGhlbSB0byB3b3JrLCB0aGUgZGlhbGVjdCBtdXN0IGF1dG9tYXRpY2FsbHkgcGFyc2UgdGhlIGBqc29uYCBkYXRhIHR5cGUgaW50b1xuICogSmF2YVNjcmlwdCBKU09OIHZhbHVlcyBsaWtlIG9iamVjdHMgYW5kIGFycmF5cy4gU29tZSBkaWFsZWN0cyBtaWdodCBzaW1wbHkgcmV0dXJuXG4gKiB0aGUgZGF0YSBhcyBhIEpTT04gc3RyaW5nLiBJbiB0aGVzZSBjYXNlcyB5b3UgY2FuIHVzZSB0aGUgYnVpbHQgaW4gYFBhcnNlSlNPTlJlc3VsdHNQbHVnaW5gXG4gKiB0byBwYXJzZSB0aGUgcmVzdWx0cy5cbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsganNvbkFycmF5RnJvbSB9IGZyb20gJ2t5c2VseS9oZWxwZXJzL3Bvc3RncmVzJ1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRiXG4gKiAgIC5zZWxlY3RGcm9tKCdwZXJzb24nKVxuICogICAuc2VsZWN0KChlYikgPT4gW1xuICogICAgICdpZCcsXG4gKiAgICAganNvbkFycmF5RnJvbShcbiAqICAgICAgIGViLnNlbGVjdEZyb20oJ3BldCcpXG4gKiAgICAgICAgIC5zZWxlY3QoWydwZXQuaWQgYXMgcGV0X2lkJywgJ3BldC5uYW1lJ10pXG4gKiAgICAgICAgIC53aGVyZVJlZigncGV0Lm93bmVyX2lkJywgJz0nLCAncGVyc29uLmlkJylcbiAqICAgICAgICAgLm9yZGVyQnkoJ3BldC5uYW1lJylcbiAqICAgICApLmFzKCdwZXRzJylcbiAqICAgXSlcbiAqICAgLmV4ZWN1dGUoKVxuICogYGBgXG4gKlxuICogVGhlIGdlbmVyYXRlZCBTUUwgKFBvc3RncmVTUUwpOlxuICpcbiAqIGBgYHNxbFxuICogc2VsZWN0IFwiaWRcIiwgKFxuICogICBzZWxlY3QgY29hbGVzY2UoanNvbl9hZ2coYWdnKSwgJ1tdJykgZnJvbSAoXG4gKiAgICAgc2VsZWN0IFwicGV0XCIuXCJpZFwiIGFzIFwicGV0X2lkXCIsIFwicGV0XCIuXCJuYW1lXCJcbiAqICAgICBmcm9tIFwicGV0XCJcbiAqICAgICB3aGVyZSBcInBldFwiLlwib3duZXJfaWRcIiA9IFwicGVyc29uXCIuXCJpZFwiXG4gKiAgICAgb3JkZXIgYnkgXCJwZXRcIi5cIm5hbWVcIlxuICogICApIGFzIGFnZ1xuICogKSBhcyBcInBldHNcIlxuICogZnJvbSBcInBlcnNvblwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGpzb25BcnJheUZyb20oZXhwcikge1xuICAgIHJldHVybiBzcWwgYChzZWxlY3QgY29hbGVzY2UoanNvbl9hZ2coYWdnKSwgJ1tdJykgZnJvbSAke2V4cHJ9IGFzIGFnZylgO1xufVxuLyoqXG4gKiBBIHBvc3RncmVzIGhlbHBlciBmb3IgdHVybmluZyBhIHN1YnF1ZXJ5IChvciBvdGhlciBleHByZXNzaW9uKSBpbnRvIGEgSlNPTiBvYmplY3QuXG4gKlxuICogVGhlIHN1YnF1ZXJ5IG11c3Qgb25seSByZXR1cm4gb25lIHJvdy5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiA8IS0tIHNpdGVFeGFtcGxlKFwic2VsZWN0XCIsIFwiTmVzdGVkIG9iamVjdFwiLCAxMjApIC0tPlxuICpcbiAqIFdoaWxlIGt5c2VseSBpcyBub3QgYW4gT1JNIGFuZCBpdCBkb2Vzbid0IGhhdmUgdGhlIGNvbmNlcHQgb2YgcmVsYXRpb25zLCB3ZSBkbyBwcm92aWRlXG4gKiBoZWxwZXJzIGZvciBmZXRjaGluZyBuZXN0ZWQgb2JqZWN0cyBhbmQgYXJyYXlzIGluIGEgc2luZ2xlIHF1ZXJ5LiBJbiB0aGlzIGV4YW1wbGUgd2VcbiAqIHVzZSB0aGUgYGpzb25PYmplY3RGcm9tYCBoZWxwZXIgdG8gZmV0Y2ggcGVyc29uJ3MgZmF2b3JpdGUgcGV0IGFsb25nIHdpdGggdGhlIHBlcnNvbidzIGlkLlxuICpcbiAqIFBsZWFzZSBrZWVwIGluIG1pbmQgdGhhdCB0aGUgaGVscGVycyB1bmRlciB0aGUgYGt5c2VseS9oZWxwZXJzYCBmb2xkZXIsIGluY2x1ZGluZ1xuICogYGpzb25PYmplY3RGcm9tYCwgYXJlIG5vdCBndWFyYW50ZWVkIHRvIHdvcmsgd2l0aCB0aGlyZC1wYXJ0eSBkaWFsZWN0cy4gSW4gb3JkZXIgZm9yXG4gKiB0aGVtIHRvIHdvcmssIHRoZSBkaWFsZWN0IG11c3QgYXV0b21hdGljYWxseSBwYXJzZSB0aGUgYGpzb25gIGRhdGEgdHlwZSBpbnRvXG4gKiBKYXZhU2NyaXB0IEpTT04gdmFsdWVzIGxpa2Ugb2JqZWN0cyBhbmQgYXJyYXlzLiBTb21lIGRpYWxlY3RzIG1pZ2h0IHNpbXBseSByZXR1cm5cbiAqIHRoZSBkYXRhIGFzIGEgSlNPTiBzdHJpbmcuIEluIHRoZXNlIGNhc2VzIHlvdSBjYW4gdXNlIHRoZSBidWlsdCBpbiBgUGFyc2VKU09OUmVzdWx0c1BsdWdpbmBcbiAqIHRvIHBhcnNlIHRoZSByZXN1bHRzLlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBqc29uT2JqZWN0RnJvbSB9IGZyb20gJ2t5c2VseS9oZWxwZXJzL3Bvc3RncmVzJ1xuICpcbiAqIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGRiXG4gKiAgIC5zZWxlY3RGcm9tKCdwZXJzb24nKVxuICogICAuc2VsZWN0KChlYikgPT4gW1xuICogICAgICdpZCcsXG4gKiAgICAganNvbk9iamVjdEZyb20oXG4gKiAgICAgICBlYi5zZWxlY3RGcm9tKCdwZXQnKVxuICogICAgICAgICAuc2VsZWN0KFsncGV0LmlkIGFzIHBldF9pZCcsICdwZXQubmFtZSddKVxuICogICAgICAgICAud2hlcmVSZWYoJ3BldC5vd25lcl9pZCcsICc9JywgJ3BlcnNvbi5pZCcpXG4gKiAgICAgICAgIC53aGVyZSgncGV0LmlzX2Zhdm9yaXRlJywgJz0nLCB0cnVlKVxuICogICAgICkuYXMoJ2Zhdm9yaXRlX3BldCcpXG4gKiAgIF0pXG4gKiAgIC5leGVjdXRlKClcbiAqIGBgYFxuICpcbiAqIFRoZSBnZW5lcmF0ZWQgU1FMIChQb3N0Z3JlU1FMKTpcbiAqXG4gKiBgYGBzcWxcbiAqIHNlbGVjdCBcImlkXCIsIChcbiAqICAgc2VsZWN0IHRvX2pzb24ob2JqKSBmcm9tIChcbiAqICAgICBzZWxlY3QgXCJwZXRcIi5cImlkXCIgYXMgXCJwZXRfaWRcIiwgXCJwZXRcIi5cIm5hbWVcIlxuICogICAgIGZyb20gXCJwZXRcIlxuICogICAgIHdoZXJlIFwicGV0XCIuXCJvd25lcl9pZFwiID0gXCJwZXJzb25cIi5cImlkXCJcbiAqICAgICBhbmQgXCJwZXRcIi5cImlzX2Zhdm9yaXRlXCIgPSAkMVxuICogICApIGFzIG9ialxuICogKSBhcyBcImZhdm9yaXRlX3BldFwiXG4gKiBmcm9tIFwicGVyc29uXCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24ganNvbk9iamVjdEZyb20oZXhwcikge1xuICAgIHJldHVybiBzcWwgYChzZWxlY3QgdG9fanNvbihvYmopIGZyb20gJHtleHByfSBhcyBvYmopYDtcbn1cbi8qKlxuICogVGhlIFBvc3RncmVTUUwgYGpzb25fYnVpbGRfb2JqZWN0YCBmdW5jdGlvbi5cbiAqXG4gKiBOT1RFOiBUaGlzIGhlbHBlciBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gZnVsbHkgd29yayB3aXRoIHRoZSBidWlsdC1pbiBgUG9zdGdyZXNEaWFsZWN0YC5cbiAqIFdoaWxlIHRoZSBwcm9kdWNlZCBTUUwgaXMgY29tcGF0aWJsZSB3aXRoIGFsbCBQb3N0Z3JlU1FMIGRhdGFiYXNlcywgc29tZSB0aGlyZC1wYXJ0eSBkaWFsZWN0c1xuICogbWF5IG5vdCBwYXJzZSB0aGUgbmVzdGVkIEpTT04gaW50byBvYmplY3RzLiBJbiB0aGVzZSBjYXNlcyB5b3UgY2FuIHVzZSB0aGUgYnVpbHQgaW5cbiAqIGBQYXJzZUpTT05SZXN1bHRzUGx1Z2luYCB0byBwYXJzZSB0aGUgcmVzdWx0cy5cbiAqXG4gKiAjIyMgRXhhbXBsZXNcbiAqXG4gKiBgYGB0c1xuICogaW1wb3J0IHsgc3FsIH0gZnJvbSAna3lzZWx5J1xuICogaW1wb3J0IHsganNvbkJ1aWxkT2JqZWN0IH0gZnJvbSAna3lzZWx5L2hlbHBlcnMvcG9zdGdyZXMnXG4gKlxuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgZGJcbiAqICAgLnNlbGVjdEZyb20oJ3BlcnNvbicpXG4gKiAgIC5zZWxlY3QoKGViKSA9PiBbXG4gKiAgICAgJ2lkJyxcbiAqICAgICBqc29uQnVpbGRPYmplY3Qoe1xuICogICAgICAgZmlyc3Q6IGViLnJlZignZmlyc3RfbmFtZScpLFxuICogICAgICAgbGFzdDogZWIucmVmKCdsYXN0X25hbWUnKSxcbiAqICAgICAgIGZ1bGw6IHNxbDxzdHJpbmc+YGZpcnN0X25hbWUgfHxcdTAwQTAnICcgfHwgbGFzdF9uYW1lYFxuICogICAgIH0pLmFzKCduYW1lJylcbiAqICAgXSlcbiAqICAgLmV4ZWN1dGUoKVxuICpcbiAqIHJlc3VsdFswXT8uaWRcbiAqIHJlc3VsdFswXT8ubmFtZS5maXJzdFxuICogcmVzdWx0WzBdPy5uYW1lLmxhc3RcbiAqIHJlc3VsdFswXT8ubmFtZS5mdWxsXG4gKiBgYGBcbiAqXG4gKiBUaGUgZ2VuZXJhdGVkIFNRTCAoUG9zdGdyZVNRTCk6XG4gKlxuICogYGBgc3FsXG4gKiBzZWxlY3QgXCJpZFwiLCBqc29uX2J1aWxkX29iamVjdChcbiAqICAgJ2ZpcnN0JywgZmlyc3RfbmFtZSxcbiAqICAgJ2xhc3QnLCBsYXN0X25hbWUsXG4gKiAgICdmdWxsJywgZmlyc3RfbmFtZSB8fCAnICcgfHwgbGFzdF9uYW1lXG4gKiApIGFzIFwibmFtZVwiXG4gKiBmcm9tIFwicGVyc29uXCJcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24ganNvbkJ1aWxkT2JqZWN0KG9iaikge1xuICAgIHJldHVybiBzcWwgYGpzb25fYnVpbGRfb2JqZWN0KCR7c3FsLmpvaW4oT2JqZWN0LmtleXMob2JqKS5mbGF0TWFwKChrKSA9PiBbc3FsLmxpdChrKSwgb2JqW2tdXSkpfSlgO1xufVxuLyoqXG4gKiBUaGUgUG9zdGdyZVNRTCBgbWVyZ2VfYWN0aW9uYCBmdW5jdGlvbi5cbiAqXG4gKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGluIGEgYHJldHVybmluZ2AgY2xhdXNlIHRvIGdldCB0aGUgYWN0aW9uIHRoYXQgd2FzXG4gKiBwZXJmb3JtZWQgaW4gYSBgbWVyZ2VJbnRvYCBxdWVyeS4gVGhlIGZ1bmN0aW9uIHJldHVybnMgb25lIG9mIHRoZSBmb2xsb3dpbmdcbiAqIHN0cmluZ3M6IGAnSU5TRVJUJ2AsIGAnVVBEQVRFJ2AsIG9yIGAnREVMRVRFJ2AuXG4gKlxuICogIyMjIEV4YW1wbGVzXG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IG1lcmdlQWN0aW9uIH0gZnJvbSAna3lzZWx5L2hlbHBlcnMvcG9zdGdyZXMnXG4gKlxuICogY29uc3QgcmVzdWx0ID0gYXdhaXQgZGJcbiAqICAgLm1lcmdlSW50bygncGVyc29uIGFzIHAnKVxuICogICAudXNpbmcoJ3BlcnNvbl9iYWNrdXAgYXMgcGInLCAncC5pZCcsICdwYi5pZCcpXG4gKiAgIC53aGVuTWF0Y2hlZCgpXG4gKiAgIC50aGVuVXBkYXRlU2V0KCh7IHJlZiB9KSA9PiAoe1xuICogICAgIGZpcnN0X25hbWU6IHJlZigncGIuZmlyc3RfbmFtZScpLFxuICogICAgIHVwZGF0ZWRfYXQ6IHJlZigncGIudXBkYXRlZF9hdCcpLiRjYXN0VG88c3RyaW5nIHwgbnVsbD4oKSxcbiAqICAgfSkpXG4gKiAgIC53aGVuTm90TWF0Y2hlZCgpXG4gKiAgIC50aGVuSW5zZXJ0VmFsdWVzKCh7IHJlZn0pID0+ICh7XG4gKiAgICAgaWQ6IHJlZigncGIuaWQnKSxcbiAqICAgICBmaXJzdF9uYW1lOiByZWYoJ3BiLmZpcnN0X25hbWUnKSxcbiAqICAgICBjcmVhdGVkX2F0OiByZWYoJ3BiLnVwZGF0ZWRfYXQnKSxcbiAqICAgICB1cGRhdGVkX2F0OiByZWYoJ3BiLnVwZGF0ZWRfYXQnKS4kY2FzdFRvPHN0cmluZyB8IG51bGw+KCksXG4gKiAgIH0pKVxuICogICAucmV0dXJuaW5nKFttZXJnZUFjdGlvbigpLmFzKCdhY3Rpb24nKSwgJ3AuaWQnLCAncC51cGRhdGVkX2F0J10pXG4gKiAgIC5leGVjdXRlKClcbiAqXG4gKiByZXN1bHRbMF0uYWN0aW9uXG4gKiBgYGBcbiAqXG4gKiBUaGUgZ2VuZXJhdGVkIFNRTCAoUG9zdGdyZVNRTCk6XG4gKlxuICogYGBgc3FsXG4gKiBtZXJnZSBpbnRvIFwicGVyc29uXCIgYXMgXCJwXCJcbiAqIHVzaW5nIFwicGVyc29uX2JhY2t1cFwiIGFzIFwicGJcIiBvbiBcInBcIi5cImlkXCIgPSBcInBiXCIuXCJpZFwiXG4gKiB3aGVuIG1hdGNoZWQgdGhlbiB1cGRhdGUgc2V0XG4gKiAgIFwiZmlyc3RfbmFtZVwiID0gXCJwYlwiLlwiZmlyc3RfbmFtZVwiLFxuICogICBcInVwZGF0ZWRfYXRcIiA9IFwicGJcIi5cInVwZGF0ZWRfYXRcIjo6dGV4dFxuICogd2hlbiBub3QgbWF0Y2hlZCB0aGVuIGluc2VydCB2YWx1ZXMgKFwiaWRcIiwgXCJmaXJzdF9uYW1lXCIsIFwiY3JlYXRlZF9hdFwiLCBcInVwZGF0ZWRfYXRcIilcbiAqIHZhbHVlcyAoXCJwYlwiLlwiaWRcIiwgXCJwYlwiLlwiZmlyc3RfbmFtZVwiLCBcInBiXCIuXCJ1cGRhdGVkX2F0XCIsIFwicGJcIi5cInVwZGF0ZWRfYXRcIilcbiAqIHJldHVybmluZyBtZXJnZV9hY3Rpb24oKSBhcyBcImFjdGlvblwiLCBcInBcIi5cImlkXCIsIFwicFwiLlwidXBkYXRlZF9hdFwiXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1lcmdlQWN0aW9uKCkge1xuICAgIHJldHVybiBzcWwgYG1lcmdlX2FjdGlvbigpYDtcbn1cbiJdLAog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MUMsUUFBQXBDLEVBQ0EsT0FBUWdDLENBQ1YsRUFDQSxTQUFVRixFQUFPLFVBQ2pCLFNBQVVBLEVBQU8sVUFDakIsUUFBU0EsRUFBTyxTQUVoQixnQkFBaUIsR0FDakIsV0FBWUEsRUFBTyxTQUNuQixlQUFnQkEsRUFBTyxHQUN2QixLQUFNRyxFQUNOLFNBQUFDLEVBQ0EsT0FBQU4sRUFDQSxNQUFPRCxDQUNULENBQ0YsQ0FDRixFQUNBLENBQUMsQ0FDSCxFQUVBLE9BQUlGLEVBQVFHLENBQU0sSUFBTSxTQUN0QkgsRUFBUUcsQ0FBTSxFQUFJLENBQUUsS0FBTUEsRUFBUSxPQUFRLENBQUMsQ0FBRSxHQUcvQ0gsRUFBUUcsQ0FBTSxFQUFFLE9BQU9ELENBQVMsRUFBSSxDQUFFLFFBQVNFLEVBQWUsS0FBTUYsRUFBVyxPQUFBQyxDQUFPLEVBRS9FTCxDQUNULEVBQ0EsQ0FDRSxnQkFBQWUsRUFDQSxNQUFBeEIsRUFDQSxRQUFTLENBQUUsT0FBUSxDQUFFLEtBQU0sU0FBVSxPQUFRLENBQUMsQ0FBRSxDQUFFLEVBQ2xELFNBQUFKLENBQ0YsQ0FDRixDQUNGLENBRUEsSUFBTTRCLEVBQWtCLENBQ3RCLElBQ0EsS0FDQSxJQUNBLEtBQ0EsSUFDQSxLQUNBLEtBQ0EsU0FDQSxPQUNBLFdBQ0EsUUFDQSxXQUNGLEVBS08sU0FBU0MsSUFBaUIsQ0FDL0IsSUFBTWpDLEVBQVNrQyxFQUFnQixFQUN6QixDQUFDLENBQUUsU0FBQTlCLENBQVMsQ0FBQyxFQUFJK0IsRUFBa0IsRUFHekMsT0FBTzlCLEVBQW9CLENBQUUsT0FBQUwsRUFBUSxTQUFBSSxFQUFVLE1BRmpDLENBQUUsV0FBWSxDQUFDLEVBQUcsSUFBSyxVQUFXLENBRUssQ0FBQyxDQWN4RCIsCiAgIm5hbWVzIjogWyJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJpbml0X2RlZmluZV9BQ0NFTEVSQVRFX1NDSEVNQV9CWV9QUk9WSURFUiIsICJQT1NUR1JFU1FMX0RBVEFfVFlQRVNfVE9fTUVUQURBVEEiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiZ2V0UG9zdGdyZVNRTEJ1aWxkZXIiLCAicmVxdWlyZW1lbnRzIiwgImdldEJ1aWxkZXIiLCAiUG9zdGdyZXNBZGFwdGVyIiwgIlBvc3RncmVzUXVlcnlDb21waWxlciIsICJnZXRJbnNlcnRRdWVyeSIsICJkZXRhaWxzIiwgInJlcXVpcmVtZW50cyIsICJyb3dzIiwgImNvbHVtbnMiLCAidGFibGVOYW1lIiwgInNjaGVtYSIsICJidWlsZGVyIiwgImdldFBvc3RncmVTUUxCdWlsZGVyIiwgImNvbXBpbGUiLCAiYXBwbHlUcmFuc2Zvcm1hdGlvbnMiLCAiZ2V0Q3VycmVudFRpbWVzdGFtcE1pbGxpcyIsICJnZXRTZWxlY3RRdWVyeSIsICJmaWx0ZXIiLCAicGFnZUluZGV4IiwgInBhZ2VTaXplIiwgInNvcnRPcmRlciIsICJmaWx0ZXJFeHByZXNzaW9uIiwgImdldFNlbGVjdEZpbHRlckV4cHJlc3Npb24iLCAiY291bnRRdWVyeSIsICJlYiIsICJzcWwiLCAicWIiLCAiaXRlbSIsICJtb2NrU2VsZWN0UXVlcnkiLCAiZ2V0VXBkYXRlUXVlcnkiLCAiY2hhbmdlcyIsICJyb3ciLCAiYXBwbHlJbmZlcnJlZFJvd0ZpbHRlcnMiLCAiZ2V0RGVsZXRlUXVlcnkiLCAiZXhwcmVzc2lvbkJ1aWxkZXIiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAiaW5pdF9kZWZpbmVfQUNDRUxFUkFURV9TQ0hFTUFfQllfUFJPVklERVIiLCAianNvbkFycmF5RnJvbSIsICJleHByIiwgInNxbCIsICJSRUdVTEFSX1RBQkxFX0tJTkQiLCAiVklFV19UQUJMRV9LSU5EIiwgIlRBQkxFX0tJTkRTIiwgImdldFRhYmxlc1F1ZXJ5IiwgInJlcXVpcmVtZW50cyIsICJjb21waWxlIiwgImdldFBvc3RncmVTUUxCdWlsZGVyIiwgImV4Y2x1ZGVTeXN0ZW1UYWJsZXMiLCAiZWIiLCAianNvbkFycmF5RnJvbSIsICJqYiIsICJvbl9lYiIsICJzcWwiLCAibW9ja1RhYmxlc1F1ZXJ5IiwgImdldFRpbWV6b25lUXVlcnkiLCAiYnVpbGRlciIsICJtb2NrVGltZXpvbmVRdWVyeSIsICJxYiIsICJjcmVhdGVQb3N0Z3Jlc0FkYXB0ZXIiLCAicmVxdWlyZW1lbnRzIiwgImV4ZWN1dG9yIiwgIm90aGVyUmVxdWlyZW1lbnRzIiwgIm9wdGlvbnMiLCAidGFibGVzUXVlcnkiLCAiZ2V0VGFibGVzUXVlcnkiLCAidGltZXpvbmVRdWVyeSIsICJnZXRUaW1lem9uZVF1ZXJ5IiwgInRhYmxlc0Vycm9yIiwgInRhYmxlcyIsICJ0aW1lem9uZUVycm9yIiwgInRpbWV6b25lcyIsICJjcmVhdGVBZGFwdGVyRXJyb3IiLCAidGltZXpvbmUiLCAiY3JlYXRlSW50cm9zcGVjdGlvbiIsICJlcnJvciIsICJkZXRhaWxzIiwgInF1ZXJ5IiwgImdldFNlbGVjdFF1ZXJ5IiwgInJlc3VsdHMiLCAiZ2V0SW5zZXJ0UXVlcnkiLCAicm93cyIsICJnZXRVcGRhdGVRdWVyeSIsICJyb3ciLCAiZ2V0RGVsZXRlUXVlcnkiLCAiYXJncyIsICJyZXN1bHQiLCAidGFibGUiLCAic2NoZW1hcyIsICJjb2x1bW5zIiwgInRhYmxlTmFtZSIsICJzY2hlbWEiLCAiY29sdW1uc1JlY29yZCIsICJjb2x1bW4iLCAiZGF0YXR5cGUiLCAiZGF0YXR5cGVfc2NoZW1hIiwgImNvbHVtbk5hbWUiLCAibnVsbGFibGUiLCAiaXNBcnJheSIsICJzdHJpcHBlZERhdGFUeXBlIiwgIlBPU1RHUkVTUUxfREFUQV9UWVBFU19UT19NRVRBREFUQSIsICJmaWx0ZXJPcGVyYXRvcnMiLCAibW9ja0ludHJvc3BlY3QiLCAibW9ja1RhYmxlc1F1ZXJ5IiwgIm1vY2tUaW1lem9uZVF1ZXJ5Il0KfQo=
|