diff --git a/dist/css/experian-address-validation.css b/dist/css/experian-address-validation.css index 5f8862c..f0e5f9c 100644 --- a/dist/css/experian-address-validation.css +++ b/dist/css/experian-address-validation.css @@ -191,4 +191,13 @@ input.showing-suggestions { font-style: italic; padding-top: 0px; font-size: 12px; +} + +#what3words-key { + padding-top: 10px; + padding-right: 5px; +} + +#what3words-value { + padding-top: 10px; } \ No newline at end of file diff --git a/dist/images/w3w_Symbol_RGB_WhiteRed.png b/dist/images/w3w_Symbol_RGB_WhiteRed.png new file mode 100644 index 0000000..5a7b829 Binary files /dev/null and b/dist/images/w3w_Symbol_RGB_WhiteRed.png differ diff --git a/dist/js/experian-address-validation.js b/dist/js/experian-address-validation.js index a7923b7..c26b9c2 100644 --- a/dist/js/experian-address-validation.js +++ b/dist/js/experian-address-validation.js @@ -1,2 +1,2 @@ -!function(){"use strict";var e,s=function(){function e(){this.collection={}}return e.prototype.on=function(e,s){this.collection[e]=this.collection[e]||[],this.collection[e].push(s)},e.prototype.trigger=function(e,s){if(this.collection[e])for(var o=0;o=200&&d.currentRequest.status<400){var s=JSON.parse(d.currentRequest.responseText);o(s)}else d.instance.searchSpinner.hide(),d.instance.events.trigger("request-error",e),d.instance.events.trigger("request-error-".concat(d.currentRequest.status),e)},this.currentRequest.onerror=function(e){d.instance.searchSpinner.hide(),d.instance.events.trigger("request-error",e)},this.currentRequest.ontimeout=function(e){d.instance.searchSpinner.hide(),d.instance.events.trigger("request-timeout",e)},this.currentRequest.send(t)},e}();!function(e){e.AUTOCOMPLETE="autocomplete",e.SINGLELINE="singleline",e.VALIDATE="validate"}(e||(e={}));var a={enableWhat3Words:!0,searchType:e.AUTOCOMPLETE,input:{placeholderText:"Start typing an address...",applyFocus:!1},formattedAddressContainer:{showHeading:!1,headingType:"h3",validatedHeadingText:"Validated address",manualHeadingText:"Manual address entered"},searchAgain:{visible:!0,text:"Search again"},useAddressEnteredText:" - Use address entered or try again...",useSpinner:!1,language:"en",addressLineLabels:["address_line_1","address_line_2","address_line_3","locality","region","postal_code","country"]},d=[{country:"Afghanistan",iso3Code:"AFG",iso2Code:"AF",datasetCode:"af-address-ed",searchType:"singleline, validate"},{country:"Afghanistan",iso3Code:"AFG",iso2Code:"AF",datasetCode:"af-address-eh",searchType:"autocomplete"},{country:"Albania",iso3Code:"ALB",iso2Code:"AL",datasetCode:"al-address-ed",searchType:"singleline, validate"},{country:"Albania",iso3Code:"ALB",iso2Code:"AL",datasetCode:"al-address-eh",searchType:"autocomplete"},{country:"Algeria",iso3Code:"DZA",iso2Code:"DZ",datasetCode:"dz-address-ed",searchType:"singleline, validate"},{country:"Algeria",iso3Code:"DZA",iso2Code:"DZ",datasetCode:"dz-address-eh",searchType:"autocomplete"},{country:"American Samoa",iso3Code:"ASM",iso2Code:"AS",datasetCode:"as-address-eh",searchType:"autocomplete"},{country:"Andorra",iso3Code:"AND",iso2Code:"AD",datasetCode:"ad-address-ed",searchType:"singleline, validate"},{country:"Andorra",iso3Code:"AND",iso2Code:"AD",datasetCode:"ad-address-eh",searchType:"autocomplete"},{country:"Angola",iso3Code:"AGO",iso2Code:"AO",datasetCode:"ao-address-ed",searchType:"singleline, validate"},{country:"Angola",iso3Code:"AGO",iso2Code:"AO",datasetCode:"ao-address-eh",searchType:"autocomplete"},{country:"Anguilla",iso3Code:"AIA",iso2Code:"AI",datasetCode:"ai-address-eh",searchType:"autocomplete"},{country:"Antarctica",iso3Code:"ATA",iso2Code:"AQ",datasetCode:"aq-address-ed",searchType:"singleline, validate"},{country:"Antigua and Barbuda",iso3Code:"ATG",iso2Code:"AG",datasetCode:"ag-address-ed",searchType:"singleline, validate"},{country:"Antigua and Barbuda",iso3Code:"ATG",iso2Code:"AG",datasetCode:"ag-address-eh",searchType:"autocomplete"},{country:"Argentina",iso3Code:"ARG",iso2Code:"AR",datasetCode:"ar-address-ed",searchType:"singleline, validate"},{country:"Argentina",iso3Code:"ARG",iso2Code:"AR",datasetCode:"ar-address-eh",searchType:"autocomplete"},{country:"Armenia",iso3Code:"ARM",iso2Code:"AM",datasetCode:"am-address-ed",searchType:"singleline, validate"},{country:"Armenia",iso3Code:"ARM",iso2Code:"AM",datasetCode:"am-address-eh",searchType:"autocomplete"},{country:"Aruba",iso3Code:"ABW",iso2Code:"AW",datasetCode:"aw-address-ed",searchType:"singleline, validate"},{country:"Aruba",iso3Code:"ABW",iso2Code:"AW",datasetCode:"aw-address-eh",searchType:"autocomplete"},{country:"Australia DataFusion",iso3Code:"AUS",iso2Code:"AU",datasetCode:"au-address-datafusion",searchType:"autocomplete, singleline, typedown"},{country:"Australia Geocoded National Address",iso3Code:"AUS",iso2Code:"AU",datasetCode:"au-address-gnaf",searchType:"autocomplete, singleline, typedown, validate"},{country:"Australia Postal Address",iso3Code:"AUS",iso2Code:"AU",datasetCode:"au-address",searchType:"autocomplete, singleline, typedown, validate"},{country:"Austria",iso3Code:"AUT",iso2Code:"AT",datasetCode:"at-address-eh",searchType:"autocomplete"},{country:"Austria",iso3Code:"AUT",iso2Code:"AT",datasetCode:"az-address-ed",searchType:"singleline, validate"},{country:"Azerbaijan",iso3Code:"AZE",iso2Code:"AZ",datasetCode:"az-address-ed",searchType:"singleline, validate"},{country:"Azerbaijan",iso3Code:"AZE",iso2Code:"AZ",datasetCode:"az-address-eh",searchType:"autocomplete"},{country:"Bahamas",iso3Code:"BHS",iso2Code:"BS",datasetCode:"bs-address-ed",searchType:"singleline, validate"},{country:"Bahamas",iso3Code:"BHS",iso2Code:"BS",datasetCode:"bs-address-eh",searchType:"autocomplete"},{country:"Bahrain",iso3Code:"BHR",iso2Code:"BH",datasetCode:"bh-address-ed",searchType:"singleline, validate"},{country:"Bahrain",iso3Code:"BHR",iso2Code:"BH",datasetCode:"bh-address-eh",searchType:"autocomplete"},{country:"Bangladesh",iso3Code:"BGD",iso2Code:"BD",datasetCode:"bd-address-ed",searchType:"singleline, validate"},{country:"Bangladesh",iso3Code:"BGD",iso2Code:"BD",datasetCode:"bd-address-eh",searchType:"autocomplete"},{country:"Barbados",iso3Code:"BRB",iso2Code:"BB",datasetCode:"bb-address-ed",searchType:"singleline, validate"},{country:"Barbados",iso3Code:"BRB",iso2Code:"BB",datasetCode:"bb-address-eh",searchType:"autocomplete"},{country:"Belarus",iso3Code:"BLR",iso2Code:"BY",datasetCode:"by-address-ed",searchType:"singleline, validate"},{country:"Belarus",iso3Code:"BLR",iso2Code:"BY",datasetCode:"by-address-eh",searchType:"autocomplete"},{country:"Belgium",iso3Code:"BEL",iso2Code:"BE",datasetCode:"be-address",searchType:"singleline, typedown"},{country:"Belgium",iso3Code:"BEL",iso2Code:"BE",datasetCode:"be-address-ed",searchType:" validate"},{country:"Belgium",iso3Code:"BEL",iso2Code:"BE",datasetCode:"be-address-eh",searchType:"autocomplete"},{country:"Belize",iso3Code:"BLZ",iso2Code:"BZ",datasetCode:"bz-address-ed",searchType:"singleline, validate"},{country:"Belize",iso3Code:"BLZ",iso2Code:"BZ",datasetCode:"bz-address-eh",searchType:"autocomplete"},{country:"Benin",iso3Code:"BEN",iso2Code:"BJ",datasetCode:"bj-address-ed",searchType:"singleline, validate"},{country:"Benin",iso3Code:"BEN",iso2Code:"BJ",datasetCode:"bj-address-eh",searchType:"autocomplete"},{country:"Bermuda",iso3Code:"BMU",iso2Code:"BM",datasetCode:"bm-address-ed",searchType:"singleline, validate"},{country:"Bermuda",iso3Code:"BMU",iso2Code:"BM",datasetCode:"bm-address-eh",searchType:"autocomplete"},{country:"Bhutan",iso3Code:"BTN",iso2Code:"BT",datasetCode:"bt-address-ed",searchType:"singleline, validate"},{country:"Bhutan",iso3Code:"BTN",iso2Code:"BT",datasetCode:"bt-address-eh",searchType:"autocomplete"},{country:"Bolivia",iso3Code:"BOL",iso2Code:"BO",datasetCode:"bo-address-ed",searchType:"singleline, validate"},{country:"Bolivia",iso3Code:"BOL",iso2Code:"BO",datasetCode:"bo-address-eh",searchType:"autocomplete"},{country:"Bonaire, Sint Eustatius and Saba",iso3Code:"BES",iso2Code:"BQ",datasetCode:"bq-address-ed",searchType:"singleline, validate"},{country:"Bonaire, Sint Eustatius and Saba",iso3Code:"BES",iso2Code:"BQ",datasetCode:"bq-address-eh",searchType:"autocomplete"},{country:"Bosnia and Herzegovina",iso3Code:"BIH",iso2Code:"BA",datasetCode:"ba-address-ed",searchType:"singleline, validate"},{country:"Bosnia and Herzegovina",iso3Code:"BIH",iso2Code:"BA",datasetCode:"ba-address-eh",searchType:"autocomplete"},{country:"Botswana",iso3Code:"BWA",iso2Code:"BW",datasetCode:"bw-address-ed",searchType:"singleline, validate"},{country:"Botswana",iso3Code:"BWA",iso2Code:"BW",datasetCode:"bw-address-eh",searchType:"autocomplete"},{country:"Brazil",iso3Code:"BRA",iso2Code:"BR",datasetCode:"br-address-ed",searchType:"singleline, validate"},{country:"Brazil",iso3Code:"BRA",iso2Code:"BR",datasetCode:"br-address-eh",searchType:"autocomplete"},{country:"Brunei Darussalam",iso3Code:"BRN",iso2Code:"BN",datasetCode:"bn-address-ed",searchType:"singleline, validate"},{country:"Brunei Darussalam",iso3Code:"BRN",iso2Code:"BN",datasetCode:"bn-address-eh",searchType:"autocomplete"},{country:"Bulgaria",iso3Code:"BGR",iso2Code:"BG",datasetCode:"bg-address-ed",searchType:"singleline, validate"},{country:"Bulgaria",iso3Code:"BGR",iso2Code:"BG",datasetCode:"bg-address-eh",searchType:"autocomplete"},{country:"Burkina Faso",iso3Code:"BFA",iso2Code:"BF",datasetCode:"bf-address-ed",searchType:"singleline, validate"},{country:"Burkina Faso",iso3Code:"BFA",iso2Code:"BF",datasetCode:"bf-address-eh",searchType:"autocomplete"},{country:"Burundi",iso3Code:"BDI",iso2Code:"BI",datasetCode:"bi-address-eh",searchType:"autocomplete"},{country:"Cambodia",iso3Code:"KHM",iso2Code:"KH",datasetCode:"kh-address-ed",searchType:"singleline, validate"},{country:"Cambodia",iso3Code:"KHM",iso2Code:"KH",datasetCode:"kh-address-eh",searchType:"autocomplete"},{country:"Cameroon",iso3Code:"CMR",iso2Code:"CM",datasetCode:"cm-address-ed",searchType:"singleline, validate"},{country:"Cameroon",iso3Code:"CMR",iso2Code:"CM",datasetCode:"cm-address-eh",searchType:"autocomplete"},{country:"Canada",iso3Code:"CAN",iso2Code:"CA",datasetCode:"ca-address",searchType:"autocomplete, singleline, typedown, validate"},{country:"Cape Verde",iso3Code:"CPV",iso2Code:"CV",datasetCode:"cv-address-ed",searchType:"singleline, validate"},{country:"Cape Verde",iso3Code:"CPV",iso2Code:"CV",datasetCode:"cv-address-eh",searchType:"autocomplete"},{country:"Cayman Islands",iso3Code:"CYM",iso2Code:"KY",datasetCode:"ky-address-ed",searchType:"singleline, validate"},{country:"Cayman Islands",iso3Code:"CYM",iso2Code:"KY",datasetCode:"ky-address-eh",searchType:"autocomplete"},{country:"Central African Republic",iso3Code:"CAF",iso2Code:"CF",datasetCode:"cf-address-ed",searchType:"singleline, validate"},{country:"Central African Republic",iso3Code:"CAF",iso2Code:"CF",datasetCode:"cf-address-eh",searchType:"autocomplete"},{country:"Chad",iso3Code:"TCD",iso2Code:"TD",datasetCode:"td-address-ed",searchType:"singleline, validate"},{country:"Chad",iso3Code:"TCD",iso2Code:"TD",datasetCode:"td-address-eh",searchType:"autocomplete"},{country:"Chile",iso3Code:"CHL",iso2Code:"CL",datasetCode:"cl-address-ed",searchType:"singleline, validate"},{country:"Chile",iso3Code:"CHL",iso2Code:"CL",datasetCode:"cl-address-eh",searchType:"autocomplete"},{country:"China",iso3Code:"CHN",iso2Code:"CN",datasetCode:"cn-address-ed",searchType:"singleline, validate"},{country:"China",iso3Code:"CHN",iso2Code:"CN",datasetCode:"cn-address-eh",searchType:"autocomplete"},{country:"Christmas Island",iso3Code:"CXR",iso2Code:"CX",datasetCode:"cx-address-eh",searchType:"autocomplete"},{country:"Cocos Island",iso3Code:"CCK",iso2Code:"CC",datasetCode:"cc-address-eh",searchType:"autocomplete"},{country:"Colombia",iso3Code:"COL",iso2Code:"CO",datasetCode:"co-address-ed",searchType:"singleline, validate"},{country:"Colombia",iso3Code:"COL",iso2Code:"CO",datasetCode:"co-address-eh",searchType:"autocomplete"},{country:"Comoros",iso3Code:"COM",iso2Code:"KM",datasetCode:"km-address-ed",searchType:"singleline, validate"},{country:"Comoros",iso3Code:"COM",iso2Code:"KM",datasetCode:"km-address-eh",searchType:"autocomplete"},{country:"Congo",iso3Code:"COG",iso2Code:"CG",datasetCode:"cg-address-ed",searchType:"singleline, validate"},{country:"Congo",iso3Code:"COG",iso2Code:"CG",datasetCode:"cg-address-eh",searchType:"autocomplete"},{country:"Congo, The Democratic Republic of the",iso3Code:"COD",iso2Code:"CD",datasetCode:"cd-address-ed",searchType:"singleline, validate"},{country:"Congo, The Democratic Republic of the",iso3Code:"COD",iso2Code:"CD",datasetCode:"cd-address-eh",searchType:"autocomplete"},{country:"Cook Islands",iso3Code:"COK",iso2Code:"CK",datasetCode:"ck-address-ed",searchType:"singleline, validate"},{country:"Cook Islands",iso3Code:"COK",iso2Code:"CK",datasetCode:"ck-address-eh",searchType:"autocomplete"},{country:"Costa Rica",iso3Code:"CRI",iso2Code:"CR",datasetCode:"cr-address-ed",searchType:"singleline, validate"},{country:"Costa Rica",iso3Code:"CRI",iso2Code:"CR",datasetCode:"cr-address-eh",searchType:"autocomplete"},{country:"Croatia",iso3Code:"HRV",iso2Code:"HR",datasetCode:"hr-address-ed",searchType:"singleline, validate"},{country:"Croatia",iso3Code:"HRV",iso2Code:"HR",datasetCode:"hr-address-eh",searchType:"autocomplete"},{country:"Cuba",iso3Code:"CUB",iso2Code:"CU",datasetCode:"cu-address-ed",searchType:"singleline, validate"},{country:"Cuba",iso3Code:"CUB",iso2Code:"CU",datasetCode:"cu-address-eh",searchType:"autocomplete"},{country:"Curaçao",iso3Code:"CUW",iso2Code:"CW",datasetCode:"cw-address-ed",searchType:"singleline, validate"},{country:"Curaçao",iso3Code:"CUW",iso2Code:"CW",datasetCode:"cw-address-eh",searchType:"autocomplete"},{country:"Cyprus",iso3Code:"CYP",iso2Code:"CY",datasetCode:"cy-address-ed",searchType:"singleline, validate"},{country:"Cyprus",iso3Code:"CYP",iso2Code:"CY",datasetCode:"cy-address-eh",searchType:"autocomplete"},{country:"Czech Republic",iso3Code:"CZE",iso2Code:"CZ",datasetCode:"cz-address-ed",searchType:"singleline, validate"},{country:"Czech Republic",iso3Code:"CZE",iso2Code:"CZ",datasetCode:"cz-address-eh",searchType:"autocomplete"},{country:"Côte d'Ivoire",iso3Code:"CIV",iso2Code:"CI",datasetCode:"ci-address-ed",searchType:"singleline, validate"},{country:"Côte d'Ivoire",iso3Code:"CIV",iso2Code:"CI",datasetCode:"ci-address-eh",searchType:"autocomplete"},{country:"Denmark",iso3Code:"DNK",iso2Code:"DK",datasetCode:"dk-address-ed",searchType:"singleline, validate"},{country:"Denmark",iso3Code:"DNK",iso2Code:"DK",datasetCode:"dk-address-eh",searchType:"autocomplete"},{country:"Djibouti",iso3Code:"DJI",iso2Code:"DJ",datasetCode:"dj-address-ed",searchType:"singleline, validate"},{country:"Djibouti",iso3Code:"DJI",iso2Code:"DJ",datasetCode:"dj-address-eh",searchType:"autocomplete"},{country:"Dominica",iso3Code:"DMA",iso2Code:"DM",datasetCode:"dm-address-ed",searchType:"singleline, validate"},{country:"Dominica",iso3Code:"DMA",iso2Code:"DM",datasetCode:"dm-address-eh",searchType:"autocomplete"},{country:"Dominican Republic",iso3Code:"DOM",iso2Code:"DO",datasetCode:"do-address-ed",searchType:"singleline, validate"},{country:"Dominican Republic",iso3Code:"DOM",iso2Code:"DO",datasetCode:"do-address-eh",searchType:"autocomplete"},{country:"Ecuador",iso3Code:"ECU",iso2Code:"EC",datasetCode:"ec-address-ed",searchType:"singleline, validate"},{country:"Ecuador",iso3Code:"ECU",iso2Code:"EC",datasetCode:"ec-address-eh",searchType:"autocomplete"},{country:"Egypt",iso3Code:"EGY",iso2Code:"EG",datasetCode:"eg-address-ed",searchType:"singleline, validate"},{country:"Egypt",iso3Code:"EGY",iso2Code:"EG",datasetCode:"eg-address-eh",searchType:"autocomplete"},{country:"El Salvador",iso3Code:"SLV",iso2Code:"SV",datasetCode:"sv-address-ed",searchType:"singleline, validate"},{country:"El Salvador",iso3Code:"SLV",iso2Code:"SV",datasetCode:"sv-address-eh",searchType:"autocomplete"},{country:"Equatorial Guinea",iso3Code:"GNQ",iso2Code:"GQ",datasetCode:"gq-address-ed",searchType:"singleline, validate"},{country:"Equatorial Guinea",iso3Code:"GNQ",iso2Code:"GQ",datasetCode:"gq-address-eh",searchType:"autocomplete"},{country:"Eritrea",iso3Code:"ERI",iso2Code:"ER",datasetCode:"er-address-ed",searchType:"singleline, validate"},{country:"Eritrea",iso3Code:"ERI",iso2Code:"ER",datasetCode:"er-address-eh",searchType:"autocomplete"},{country:"Estonia",iso3Code:"EST",iso2Code:"EE",datasetCode:"ee-address-ed",searchType:"singleline, validate"},{country:"Estonia",iso3Code:"EST",iso2Code:"EE",datasetCode:"ee-address-eh",searchType:"autocomplete"},{country:"Ethiopia",iso3Code:"ETH",iso2Code:"ET",datasetCode:"et-address-ed",searchType:"singleline, validate"},{country:"Ethiopia",iso3Code:"ETH",iso2Code:"ET",datasetCode:"et-address-eh",searchType:"autocomplete"},{country:"Falkland Islands (Malvinas)",iso3Code:"FLK",iso2Code:"FK",datasetCode:"fk-address-eh",searchType:"autocomplete"},{country:"Faroe Islands",iso3Code:"FRO",iso2Code:"FO",datasetCode:"fo-address-ed",searchType:"singleline, validate"},{country:"Faroe Islands",iso3Code:"FRO",iso2Code:"FO",datasetCode:"fo-address-eh",searchType:"autocomplete"},{country:"Fiji",iso3Code:"FJI",iso2Code:"FJ",datasetCode:"fj-address-ed",searchType:"singleline, validate"},{country:"Fiji",iso3Code:"FJI",iso2Code:"FJ",datasetCode:"fj-address-eh",searchType:"autocomplete"},{country:"Finland",iso3Code:"FIN",iso2Code:"FI",datasetCode:"fi-address",searchType:"singleline, typedown"},{country:"Finland",iso3Code:"FIN",iso2Code:"FI",datasetCode:"fi-address-ed",searchType:"validate"},{country:"Finland",iso3Code:"FIN",iso2Code:"FI",datasetCode:"fi-address-eh",searchType:"autocomplete"},{country:"France Street Level",iso3Code:"FRA",iso2Code:"FR",datasetCode:"fr-address-streetlevel",searchType:"singleline, typedown, validate"},{country:"France Sub-Premises Level",iso3Code:"FRA",iso2Code:"FR",datasetCode:"fr-additional-hexaline3",searchType:"autocomplete, singleline, typedown"},{country:"France Premises Level",iso3Code:"FRA",iso2Code:"FR",datasetCode:"fr-address",searchType:"singleline, typedown, validate"},{country:"French Guiana",iso3Code:"GUF",iso2Code:"GF",datasetCode:"gf-address-eh",searchType:"autocomplete"},{country:"French Polynesia",iso3Code:"PYF",iso2Code:"PF",datasetCode:"pf-address-eh",searchType:"autocomplete"},{country:"Gabon",iso3Code:"GAB",iso2Code:"GA",datasetCode:"ga-address-ed",searchType:"singleline, validate"},{country:"Gabon",iso3Code:"GAB",iso2Code:"GA",datasetCode:"ga-address-eh",searchType:"autocomplete"},{country:"Gambia",iso3Code:"GMB",iso2Code:"GM",datasetCode:"gm-address-ed",searchType:"singleline, validate"},{country:"Gambia",iso3Code:"GMB",iso2Code:"GM",datasetCode:"gm-address-eh",searchType:"autocomplete"},{country:"Georgia",iso3Code:"GEO",iso2Code:"GE",datasetCode:"ge-address-ed",searchType:"singleline, validate"},{country:"Georgia",iso3Code:"GEO",iso2Code:"GE",datasetCode:"ge-address-eh",searchType:"autocomplete"},{country:"Germany",iso3Code:"DEU",iso2Code:"DE",datasetCode:"de-address",searchType:"singleline, typedown, validate"},{country:"Germany",iso3Code:"DEU",iso2Code:"DE",datasetCode:"de-address-ed",searchType:"validate"},{country:"Germany",iso3Code:"DEU",iso2Code:"DE",datasetCode:"de-address-eh",searchType:"autocomplete"},{country:"Ghana",iso3Code:"GHA",iso2Code:"GH",datasetCode:"gh-address-ed",searchType:"singleline, validate"},{country:"Ghana",iso3Code:"GHA",iso2Code:"GH",datasetCode:"gh-address-eh",searchType:"autocomplete"},{country:"Gibraltar",iso3Code:"GIB",iso2Code:"GI",datasetCode:"gi-address-eh",searchType:"autocomplete"},{country:"Greece",iso3Code:"GRC",iso2Code:"GR",datasetCode:"gr-address-ed",searchType:"singleline, validate"},{country:"Greece",iso3Code:"GRC",iso2Code:"GR",datasetCode:"gr-address-eh",searchType:"autocomplete"},{country:"Greenland",iso3Code:"GRL",iso2Code:"GL",datasetCode:"gl-address-ed",searchType:"singleline, validate"},{country:"Greenland",iso3Code:"GRL",iso2Code:"GL",datasetCode:"gl-address-eh",searchType:"autocomplete"},{country:"Grenada",iso3Code:"GRD",iso2Code:"GD",datasetCode:"gd-address-ed",searchType:"singleline, validate"},{country:"Grenada",iso3Code:"GRD",iso2Code:"GD",datasetCode:"gd-address-eh",searchType:"autocomplete"},{country:"Guadeloupe",iso3Code:"GLP",iso2Code:"GP",datasetCode:"gp-address-eh",searchType:"autocomplete"},{country:"Guam",iso3Code:"GUM",iso2Code:"GU",datasetCode:"gu-address-eh",searchType:"autocomplete"},{country:"Guatemala",iso3Code:"GTM",iso2Code:"GT",datasetCode:"gt-address-ed",searchType:"singleline, validate"},{country:"Guatemala",iso3Code:"GTM",iso2Code:"GT",datasetCode:"gt-address-eh",searchType:"autocomplete"},{country:"Guinea",iso3Code:"GIN",iso2Code:"GN",datasetCode:"gn-address-ed",searchType:"singleline, validate"},{country:"Guinea",iso3Code:"GIN",iso2Code:"GN",datasetCode:"gn-address-eh",searchType:"autocomplete"},{country:"Guinea-Bissau",iso3Code:"GNB",iso2Code:"GW",datasetCode:"gw-address-ed",searchType:"singleline, validate"},{country:"Guinea-Bissau",iso3Code:"GNB",iso2Code:"GW",datasetCode:"gw-address-eh",searchType:"autocomplete"},{country:"Guyana",iso3Code:"GUY",iso2Code:"GY",datasetCode:"gy-address-ed",searchType:"singleline, validate"},{country:"Guyana",iso3Code:"GUY",iso2Code:"GY",datasetCode:"gy-address-eh",searchType:"autocomplete"},{country:"Haiti",iso3Code:"HTI",iso2Code:"HT",datasetCode:"ht-address-ed",searchType:"singleline, validate"},{country:"Haiti",iso3Code:"HTI",iso2Code:"HT",datasetCode:"ht-address-eh",searchType:"autocomplete"},{country:"Honduras",iso3Code:"HND",iso2Code:"HN",datasetCode:"hn-address-ed",searchType:"singleline, validate"},{country:"Honduras",iso3Code:"HND",iso2Code:"HN",datasetCode:"hn-address-eh",searchType:"autocomplete"},{country:"Hong Kong",iso3Code:"HKG",iso2Code:"HK",datasetCode:"hk-address-ed",searchType:"singleline, validate"},{country:"Hong Kong",iso3Code:"HKG",iso2Code:"HK",datasetCode:"hk-address-eh",searchType:"autocomplete"},{country:"Hungary",iso3Code:"HUN",iso2Code:"HU",datasetCode:"hu-address-ed",searchType:"singleline, validate"},{country:"Hungary",iso3Code:"HUN",iso2Code:"HU",datasetCode:"hu-address-eh",searchType:"autocomplete"},{country:"Iceland",iso3Code:"ISL",iso2Code:"IS",datasetCode:"is-address-ed",searchType:"singleline, validate"},{country:"Iceland",iso3Code:"ISL",iso2Code:"IS",datasetCode:"is-address-eh",searchType:"autocomplete"},{country:"India",iso3Code:"IND",iso2Code:"IN",datasetCode:"in-address-ed",searchType:"singleline, validate"},{country:"India",iso3Code:"IND",iso2Code:"IN",datasetCode:"in-address-eh",searchType:"autocomplete"},{country:"Indonesia",iso3Code:"IDN",iso2Code:"ID",datasetCode:"id-address-ed",searchType:"singleline, validate"},{country:"Indonesia",iso3Code:"IDN",iso2Code:"ID",datasetCode:"id-address-eh",searchType:"autocomplete"},{country:"Iran, Islamic Republic of",iso3Code:"IRN",iso2Code:"IR",datasetCode:"ir-address-ed",searchType:"singleline, validate"},{country:"Iran, Islamic Republic of",iso3Code:"IRN",iso2Code:"IR",datasetCode:"ir-address-eh",searchType:"autocomplete"},{country:"Iraq",iso3Code:"IRQ",iso2Code:"IQ",datasetCode:"iq-address-ed",searchType:"singleline, validate"},{country:"Iraq",iso3Code:"IRQ",iso2Code:"IQ",datasetCode:"iq-address-eh",searchType:"autocomplete"},{country:"Ireland",iso3Code:"IRL",iso2Code:"IE",datasetCode:"ie-address",searchType:"singleline, typedown"},{country:"Ireland",iso3Code:"IRL",iso2Code:"IE",datasetCode:"ie-address-ed",searchType:"singleline, validate"},{country:"Ireland",iso3Code:"IRL",iso2Code:"IE",datasetCode:"ie-address-eh",searchType:"autocomplete"},{country:"Ireland Eircode",iso3Code:"IRL",iso2Code:"IE",datasetCode:"ie-additional-eircode",searchType:"autocomplete"},{country:"Ireland ECAD",iso3Code:"IRL",iso2Code:"IE",datasetCode:"ie-address-ecad",searchType:"autocomplete"},{country:"Israel",iso3Code:"ISR",iso2Code:"IL",datasetCode:"il-address-ed",searchType:"singleline, validate"},{country:"Israel",iso3Code:"ISR",iso2Code:"IL",datasetCode:"il-address-eh",searchType:"autocomplete"},{country:"Italy",iso3Code:"ITA",iso2Code:"IT",datasetCode:"it-address-ed",searchType:"singleline, validate"},{country:"Italy",iso3Code:"ITA",iso2Code:"IT",datasetCode:"it-address-eh",searchType:"autocomplete"},{country:"Jamaica",iso3Code:"JAM",iso2Code:"JM",datasetCode:"jm-address-ed",searchType:"singleline, validate"},{country:"Jamaica",iso3Code:"JAM",iso2Code:"JM",datasetCode:"jm-address-eh",searchType:"autocomplete"},{country:"Japan",iso3Code:"JPN",iso2Code:"JP",datasetCode:"jp-address-ed",searchType:"singleline, validate"},{country:"Japan",iso3Code:"JPN",iso2Code:"JP",datasetCode:"jp-address",searchType:"singleline, validate"},{country:"Jordan",iso3Code:"JOR",iso2Code:"JO",datasetCode:"jo-address-ed",searchType:"singleline, validate"},{country:"Jordan",iso3Code:"JOR",iso2Code:"JO",datasetCode:"jo-address-eh",searchType:"autocomplete"},{country:"Kazakhstan",iso3Code:"KAZ",iso2Code:"KZ",datasetCode:"kz-address-ed",searchType:"singleline, validate"},{country:"Kazakhstan",iso3Code:"KAZ",iso2Code:"KZ",datasetCode:"kz-address-eh",searchType:"autocomplete"},{country:"Kenya",iso3Code:"KEN",iso2Code:"KE",datasetCode:"ke-address-ed",searchType:"singleline, validate"},{country:"Kenya",iso3Code:"KEN",iso2Code:"KE",datasetCode:"ke-address-eh",searchType:"autocomplete"},{country:"Kiribati",iso3Code:"KIR",iso2Code:"KI",datasetCode:"ki-address-ed",searchType:"singleline, validate"},{country:"Kiribati",iso3Code:"KIR",iso2Code:"KI",datasetCode:"ki-address-eh",searchType:"autocomplete"},{country:"Korea, Democratic People's Republic of",iso3Code:"PRK",iso2Code:"KP",datasetCode:"kp-address-ed",searchType:"singleline, validate"},{country:"Korea, Democratic People's Republic of",iso3Code:"PRK",iso2Code:"KP",datasetCode:"kp-address-eh",searchType:"autocomplete"},{country:"Korea, Republic of",iso3Code:"KOR",iso2Code:"KR",datasetCode:"kr-address-ed",searchType:"singleline, validate"},{country:"Korea, Republic of",iso3Code:"KOR",iso2Code:"KR",datasetCode:"kr-address-eh",searchType:"autocomplete"},{country:"Kosovo",iso3Code:"KOS",iso2Code:"XK",datasetCode:"kv-address-eh",searchType:"autocomplete"},{country:"Kuwait",iso3Code:"KWT",iso2Code:"KW",datasetCode:"kw-address-ed",searchType:"singleline, validate"},{country:"Kuwait",iso3Code:"KWT",iso2Code:"KW",datasetCode:"kw-address-eh",searchType:"autocomplete"},{country:"Kyrgyzstan",iso3Code:"KGZ",iso2Code:"KG",datasetCode:"kg-address-ed",searchType:"singleline, validate"},{country:"Kyrgyzstan",iso3Code:"KGZ",iso2Code:"KG",datasetCode:"kg-address-eh",searchType:"autocomplete"},{country:"Laos",iso3Code:"LAO",iso2Code:"LA",datasetCode:"la-address-ed",searchType:"singleline, validate"},{country:"Laos",iso3Code:"LAO",iso2Code:"LA",datasetCode:"la-address-eh",searchType:"autocomplete"},{country:"Latvia",iso3Code:"LVA",iso2Code:"LV",datasetCode:"lv-address-ed",searchType:"singleline, validate"},{country:"Latvia",iso3Code:"LVA",iso2Code:"LV",datasetCode:"lv-address-eh",searchType:"autocomplete"},{country:"Lebanon",iso3Code:"LBN",iso2Code:"LB",datasetCode:"lb-address-ed",searchType:"singleline, validate"},{country:"Lebanon",iso3Code:"LBN",iso2Code:"LB",datasetCode:"lb-address-eh",searchType:"autocomplete"},{country:"Lesotho",iso3Code:"LSO",iso2Code:"LS",datasetCode:"ls-address-ed",searchType:"singleline, validate"},{country:"Lesotho",iso3Code:"LSO",iso2Code:"LS",datasetCode:"ls-address-eh",searchType:"autocomplete"},{country:"Liberia",iso3Code:"LBR",iso2Code:"LR",datasetCode:"lr-address-ed",searchType:"singleline, validate"},{country:"Liberia",iso3Code:"LBR",iso2Code:"LR",datasetCode:"lr-address-eh",searchType:"autocomplete"},{country:"Libya",iso3Code:"LBY",iso2Code:"LY",datasetCode:"ly-address-ed",searchType:"singleline, validate"},{country:"Libya",iso3Code:"LBY",iso2Code:"LY",datasetCode:"ly-address-eh",searchType:"autocomplete"},{country:"Liechtenstein",iso3Code:"LIE",iso2Code:"LI",datasetCode:"li-address-ed",searchType:"singleline, validate"},{country:"Liechtenstein",iso3Code:"LIE",iso2Code:"LI",datasetCode:"li-address-eh",searchType:"autocomplete"},{country:"Lithuania",iso3Code:"LTU",iso2Code:"LT",datasetCode:"lt-address-ed",searchType:"singleline, validate"},{country:"Lithuania",iso3Code:"LTU",iso2Code:"LT",datasetCode:"lt-address-eh",searchType:"autocomplete"},{country:"Luxembourg",iso3Code:"LUX",iso2Code:"LU",datasetCode:"lu-address-ed",searchType:"singleline, validate"},{country:"Luxembourg",iso3Code:"LUX",iso2Code:"LU",datasetCode:"lu-address-eh",searchType:"autocomplete"},{country:"Macau",iso3Code:"MAC",iso2Code:"MO",datasetCode:"lv-address-ed",searchType:"singleline, validate"},{country:"Macau",iso3Code:"MAC",iso2Code:"MO",datasetCode:"lv-address-eh",searchType:"autocomplete"},{country:"Madagascar",iso3Code:"MDG",iso2Code:"MG",datasetCode:"mo-address-ed",searchType:"singleline, validate"},{country:"Madagascar",iso3Code:"MDG",iso2Code:"MG",datasetCode:"mo-address-eh",searchType:"autocomplete"},{country:"Malawi",iso3Code:"MWI",iso2Code:"MW",datasetCode:"mw-address-ed",searchType:"singleline, validate"},{country:"Malawi",iso3Code:"MWI",iso2Code:"MW",datasetCode:"mw-address-eh",searchType:"autocomplete"},{country:"Malaysia",iso3Code:"MYS",iso2Code:"MY",datasetCode:"my-address-ed",searchType:"singleline, validate"},{country:"Malaysia",iso3Code:"MYS",iso2Code:"MY",datasetCode:"my-address-eh",searchType:"autocomplete"},{country:"Maldives",iso3Code:"MDV",iso2Code:"MV",datasetCode:"mv-address-ed",searchType:"singleline, validate"},{country:"Maldives",iso3Code:"MDV",iso2Code:"MV",datasetCode:"mv-address-eh",searchType:"autocomplete"},{country:"Mali",iso3Code:"MLI",iso2Code:"ML",datasetCode:"ml-address-ed",searchType:"singleline, validate"},{country:"Mali",iso3Code:"MLI",iso2Code:"ML",datasetCode:"ml-address-eh",searchType:"autocomplete"},{country:"Malta",iso3Code:"MLT",iso2Code:"MT",datasetCode:"mt-address-ed",searchType:"singleline, validate"},{country:"Malta",iso3Code:"MLT",iso2Code:"MT",datasetCode:"mt-address-eh",searchType:"autocomplete"},{country:"Marshall Islands",iso3Code:"MHL",iso2Code:"MH",datasetCode:"mh-address-eh",searchType:"autocomplete"},{country:"Martinique",iso3Code:"MTQ",iso2Code:"MQ",datasetCode:"mq-address-eh",searchType:"autocomplete"},{country:"Mauritania",iso3Code:"MRT",iso2Code:"MR",datasetCode:"mr-address-ed",searchType:"singleline, validate"},{country:"Mauritania",iso3Code:"MRT",iso2Code:"MR",datasetCode:"mr-address-eh",searchType:"autocomplete"},{country:"Mauritius",iso3Code:"MUS",iso2Code:"MU",datasetCode:"mu-address-ed",searchType:"singleline, validate"},{country:"Mauritius",iso3Code:"MUS",iso2Code:"MU",datasetCode:"mu-address-eh",searchType:"autocomplete"},{country:"Mayotte",iso3Code:"MYT",iso2Code:"YT",datasetCode:"yt-address-eh",searchType:"autocomplete"},{country:"Mexico",iso3Code:"MEX",iso2Code:"MX",datasetCode:"mx-address-ed",searchType:"singleline, validate"},{country:"Mexico",iso3Code:"MEX",iso2Code:"MX",datasetCode:"mx-address-eh",searchType:"autocomplete"},{country:"Micronesia, Federated States of",iso3Code:"FSM",iso2Code:"FM",datasetCode:"fm-address-eh",searchType:"autocomplete"},{country:"Moldova",iso3Code:"MDA",iso2Code:"MD",datasetCode:"md-address-ed",searchType:"singleline, validate"},{country:"Moldova",iso3Code:"MDA",iso2Code:"MD",datasetCode:"md-address-eh",searchType:"autocomplete"},{country:"Monaco",iso3Code:"MCO",iso2Code:"MC",datasetCode:"mc-address-ed",searchType:"singleline, validate"},{country:"Monaco",iso3Code:"MCO",iso2Code:"MC",datasetCode:"mc-address-eh",searchType:"autocomplete"},{country:"Mongolia",iso3Code:"MNG",iso2Code:"MN",datasetCode:"mn-address-ed",searchType:"singleline, validate"},{country:"Mongolia",iso3Code:"MNG",iso2Code:"MN",datasetCode:"mn-address-eh",searchType:"autocomplete"},{country:"Montenegro",iso3Code:"MNE",iso2Code:"ME",datasetCode:"me-address-ed",searchType:"singleline, validate"},{country:"Montenegro",iso3Code:"MNE",iso2Code:"ME",datasetCode:"me-address-eh",searchType:"autocomplete"},{country:"Montserrat",iso3Code:"MSR",iso2Code:"MS",datasetCode:"ms-address-eh",searchType:"autocomplete"},{country:"Morocco",iso3Code:"MAR",iso2Code:"MA",datasetCode:"ma-address-ed",searchType:"singleline, validate"},{country:"Morocco",iso3Code:"MAR",iso2Code:"MA",datasetCode:"ma-address-eh",searchType:"autocomplete"},{country:"Mozambique",iso3Code:"MOZ",iso2Code:"MZ",datasetCode:"mz-address-ed",searchType:"singleline, validate"},{country:"Mozambique",iso3Code:"MOZ",iso2Code:"MZ",datasetCode:"mz-address-eh",searchType:"autocomplete"},{country:"Myanmar",iso3Code:"MMR",iso2Code:"MM",datasetCode:"mm-address-ed",searchType:"singleline, validate"},{country:"Myanmar",iso3Code:"MMR",iso2Code:"MM",datasetCode:"mm-address-eh",searchType:"autocomplete"},{country:"Namibia",iso3Code:"NAM",iso2Code:"NA",datasetCode:"na-address-ed",searchType:"singleline, validate"},{country:"Namibia",iso3Code:"NAM",iso2Code:"NA",datasetCode:"na-address-eh",searchType:"autocomplete"},{country:"Nauru",iso3Code:"NRU",iso2Code:"NR",datasetCode:"nr-address-ed",searchType:"singleline, validate"},{country:"Nauru",iso3Code:"NRU",iso2Code:"NR",datasetCode:"nr-address-eh",searchType:"autocomplete"},{country:"Nepal",iso3Code:"NPL",iso2Code:"NP",datasetCode:"np-address-ed",searchType:"singleline, validate"},{country:"Nepal",iso3Code:"NPL",iso2Code:"NP",datasetCode:"np-address-eh",searchType:"autocomplete"},{country:"Netherlands",iso3Code:"NLD",iso2Code:"NL",datasetCode:"nl-address-ed",searchType:"singleline, validate"},{country:"Netherlands",iso3Code:"NLD",iso2Code:"NL",datasetCode:"nl-address-eh",searchType:"autocomplete"},{country:"New Caledonia",iso3Code:"NCL",iso2Code:"NC",datasetCode:"nc-address-eh",searchType:"autocomplete"},{country:"New Zealand DataFusion",iso3Code:"NZL",iso2Code:"NZ",datasetCode:"nz-additional-datafusion",searchType:"autocomplete, singleline, typedown, validate"},{country:"New Zealand Postal Address",iso3Code:"NZL",iso2Code:"NZ",datasetCode:"nz-address",searchType:"autocomplete, singleline, typedown, validate"},{country:"Nicaragua",iso3Code:"NIC",iso2Code:"NI",datasetCode:"ni-address-ed",searchType:"singleline, validate"},{country:"Nicaragua",iso3Code:"NIC",iso2Code:"NI",datasetCode:"ni-address-eh",searchType:"autocomplete"},{country:"Niger",iso3Code:"NER",iso2Code:"NE",datasetCode:"ne-address-ed",searchType:"singleline, validate"},{country:"Niger",iso3Code:"NER",iso2Code:"NE",datasetCode:"ne-address-eh",searchType:"autocomplete"},{country:"Nigeria",iso3Code:"NGA",iso2Code:"NG",datasetCode:"ng-address-ed",searchType:"singleline, validate"},{country:"Nigeria",iso3Code:"NGA",iso2Code:"NG",datasetCode:"ng-address-eh",searchType:"autocomplete"},{country:"Niue",iso3Code:"NIU",iso2Code:"NU",datasetCode:"nu-address-ed",searchType:"singleline, validate"},{country:"Norfolk Island",iso3Code:"NFK",iso2Code:"NF",datasetCode:"nf-address-ed",searchType:"singleline, validate"},{country:"Norfolk Island",iso3Code:"NFK",iso2Code:"NF",datasetCode:"nf-address-eh",searchType:"autocomplete"},{country:"North Macedonia",iso3Code:"MKD",iso2Code:"MK",datasetCode:"mk-address-ed",searchType:"singleline, validate"},{country:"North Macedonia",iso3Code:"MKD",iso2Code:"MK",datasetCode:"mk-address-eh",searchType:"autocomplete"},{country:"Northern Mariana Islands",iso3Code:"MNP",iso2Code:"MP",datasetCode:"mp-address-eh",searchType:"autocomplete"},{country:"Norway",iso3Code:"NOR",iso2Code:"NO",datasetCode:"no-address-ed",searchType:"validate"},{country:"Norway",iso3Code:"NOR",iso2Code:"NO",datasetCode:"no-address-eh",searchType:"autocomplete"},{country:"Oman",iso3Code:"OMN",iso2Code:"OM",datasetCode:"om-address-ed",searchType:"singleline, validate"},{country:"Oman",iso3Code:"OMN",iso2Code:"OM",datasetCode:"om-address-eh",searchType:"autocomplete"},{country:"Pakistan",iso3Code:"PAK",iso2Code:"PK",datasetCode:"pk-address-ed",searchType:"singleline, validate"},{country:"Pakistan",iso3Code:"PAK",iso2Code:"PK",datasetCode:"pk-address-eh",searchType:"autocomplete"},{country:"Palau",iso3Code:"PLW",iso2Code:"PW",datasetCode:"pw-address-eh",searchType:"autocomplete"},{country:"Palestine",iso3Code:"PSE",iso2Code:"PS",datasetCode:"ps-address-eh",searchType:"autocomplete"},{country:"Panama",iso3Code:"PAN",iso2Code:"PA",datasetCode:"pa-address-ed",searchType:"singleline, validate"},{country:"Panama",iso3Code:"PAN",iso2Code:"PA",datasetCode:"pa-address-eh",searchType:"autocomplete"},{country:"Papua New Guinea",iso3Code:"PNG",iso2Code:"PG",datasetCode:"pg-address-ed",searchType:"singleline, validate"},{country:"Papua New Guinea",iso3Code:"PNG",iso2Code:"PG",datasetCode:"pg-address-eh",searchType:"autocomplete"},{country:"Paraguay",iso3Code:"PRY",iso2Code:"PY",datasetCode:"py-address-ed",searchType:"singleline, validate"},{country:"Paraguay",iso3Code:"PRY",iso2Code:"PY",datasetCode:"py-address-eh",searchType:"autocomplete"},{country:"Peru",iso3Code:"PER",iso2Code:"PE",datasetCode:"pe-address-ed",searchType:"singleline, validate"},{country:"Peru",iso3Code:"PER",iso2Code:"PE",datasetCode:"pe-address-eh",searchType:"autocomplete"},{country:"Philippines",iso3Code:"PHL",iso2Code:"PH",datasetCode:"ph-address-ed",searchType:"singleline, validate"},{country:"Philippines",iso3Code:"PHL",iso2Code:"PH",datasetCode:"ph-address-eh",searchType:"autocomplete"},{country:"Pitcairn Islands",iso3Code:"PCN",iso2Code:"PN",datasetCode:"pn-address-eh",searchType:"autocomplete"},{country:"Poland",iso3Code:"POL",iso2Code:"PL",datasetCode:"pl-address-ed",searchType:"singleline, validate"},{country:"Poland",iso3Code:"POL",iso2Code:"PL",datasetCode:"pl-address-eh",searchType:"autocomplete"},{country:"Portugal",iso3Code:"PRT",iso2Code:"PT",datasetCode:"pt-address-ed",searchType:"singleline, validate"},{country:"Portugal",iso3Code:"PRT",iso2Code:"PT",datasetCode:"pt-address-eh",searchType:"autocomplete"},{country:"Qatar",iso3Code:"QAT",iso2Code:"QA",datasetCode:"qa-address-ed",searchType:"singleline, validate"},{country:"Qatar",iso3Code:"QAT",iso2Code:"QA",datasetCode:"qa-address-eh",searchType:"autocomplete"},{country:"Romania",iso3Code:"ROU",iso2Code:"RO",datasetCode:"ro-address-ed",searchType:"singleline, validate"},{country:"Romania",iso3Code:"ROU",iso2Code:"RO",datasetCode:"ro-address-eh",searchType:"autocomplete"},{country:"Russian Federation",iso3Code:"RUS",iso2Code:"RU",datasetCode:"ru-address-ed",searchType:"singleline, validate"},{country:"Russian Federation",iso3Code:"RUS",iso2Code:"RU",datasetCode:"ru-address-eh",searchType:"autocomplete"},{country:"Rwanda",iso3Code:"RWA",iso2Code:"RW",datasetCode:"rw-address-ed",searchType:"singleline, validate"},{country:"Rwanda",iso3Code:"RWA",iso2Code:"RW",datasetCode:"rw-address-eh",searchType:"autocomplete"},{country:"Réunion",iso3Code:"REU",iso2Code:"RE",datasetCode:"re-address-eh",searchType:"autocomplete"},{country:"Saint Barthélemy",iso3Code:"BLM",iso2Code:"BL",datasetCode:"bl-address-eh",searchType:"autocomplete"},{country:"Saint Helena",iso3Code:"SHN",iso2Code:"SH",datasetCode:"sh-address-eh",searchType:"autocomplete"},{country:"Saint Kitts and Nevis",iso3Code:"KNA",iso2Code:"KN",datasetCode:"kn-address-ed",searchType:"singleline, validate"},{country:"Saint Kitts and Nevis",iso3Code:"KNA",iso2Code:"KN",datasetCode:"kn-address-eh",searchType:"autocomplete"},{country:"Saint Lucia",iso3Code:"LCA",iso2Code:"LC",datasetCode:"lc-address-eh",searchType:"autocomplete"},{country:"Saint Pierre and Miquelon",iso3Code:"SPM",iso2Code:"PM",datasetCode:"pm-address-eh",searchType:"autocomplete"},{country:"Saint Vincent and the Grenadines",iso3Code:"VCT",iso2Code:"VC",datasetCode:"vc-address-ed",searchType:"singleline, validate"},{country:"Saint Vincent and the Grenadines",iso3Code:"VCT",iso2Code:"VC",datasetCode:"vc-address-eh",searchType:"autocomplete"},{country:"Samoa",iso3Code:"WSM",iso2Code:"WS",datasetCode:"ws-address-ed",searchType:"singleline, validate"},{country:"Samoa",iso3Code:"WSM",iso2Code:"WS",datasetCode:"ws-address-eh",searchType:"autocomplete"},{country:"San Marino",iso3Code:"SMR",iso2Code:"SM",datasetCode:"sm-address-ed",searchType:"singleline, validate"},{country:"San Marino",iso3Code:"SMR",iso2Code:"SM",datasetCode:"sm-address-eh",searchType:"autocomplete"},{country:"Sao Tome and Principe",iso3Code:"STP",iso2Code:"ST",datasetCode:"st-address-ed",searchType:"singleline, validate"},{country:"Sao Tome and Principe",iso3Code:"STP",iso2Code:"ST",datasetCode:"st-address-eh",searchType:"autocomplete"},{country:"Saudi Arabia",iso3Code:"SAU",iso2Code:"SA",datasetCode:"sa-address-ed",searchType:"singleline, validate"},{country:"Saudi Arabia",iso3Code:"SAU",iso2Code:"SA",datasetCode:"sa-address-eh",searchType:"autocomplete"},{country:"Senegal",iso3Code:"SEN",iso2Code:"SN",datasetCode:"sn-address-ed",searchType:"singleline, validate"},{country:"Senegal",iso3Code:"SEN",iso2Code:"SN",datasetCode:"sn-address-eh",searchType:"autocomplete"},{country:"Serbia",iso3Code:"SRB",iso2Code:"RS",datasetCode:"rs-address-ed",searchType:"singleline, validate"},{country:"Serbia",iso3Code:"SRB",iso2Code:"RS",datasetCode:"rs-address-eh",searchType:"autocomplete"},{country:"Seychelles",iso3Code:"SYC",iso2Code:"SC",datasetCode:"sc-address-ed",searchType:"singleline, validate"},{country:"Seychelles",iso3Code:"SYC",iso2Code:"SC",datasetCode:"sc-address-eh",searchType:"autocomplete"},{country:"Sierra Leone",iso3Code:"SLE",iso2Code:"SL",datasetCode:"sl-address-ed",searchType:"singleline, validate"},{country:"Sierra Leone",iso3Code:"SLE",iso2Code:"SL",datasetCode:"sl-address-eh",searchType:"autocomplete"},{country:"Singapore",iso3Code:"SGP",iso2Code:"SG",datasetCode:"sg-address",searchType:"autocomplete, singleline, typedown, validate"},{country:"Sint Maarten",iso3Code:"SXM",iso2Code:"SX",datasetCode:"sx-address-ed",searchType:"singleline, validate"},{country:"Sint Maarten",iso3Code:"SXM",iso2Code:"SX",datasetCode:"sx-address-eh",searchType:"autocomplete"},{country:"Slovakia",iso3Code:"SVK",iso2Code:"SK",datasetCode:"sk-address-ed",searchType:"singleline, validate"},{country:"Slovakia",iso3Code:"SVK",iso2Code:"SK",datasetCode:"sk-address-eh",searchType:"autocomplete"},{country:"Slovenia",iso3Code:"SVN",iso2Code:"SI",datasetCode:"si-address-ed",searchType:"singleline, validate"},{country:"Slovenia",iso3Code:"SVN",iso2Code:"SI",datasetCode:"si-address-eh",searchType:"autocomplete"},{country:"Solomon Islands",iso3Code:"SLB",iso2Code:"SB",datasetCode:"sb-address-ed",searchType:"singleline, validate"},{country:"Solomon Islands",iso3Code:"SLB",iso2Code:"SB",datasetCode:"sb-address-eh",searchType:"autocomplete"},{country:"Somalia",iso3Code:"SOM",iso2Code:"SO",datasetCode:"so-address-ed",searchType:"singleline, validate"},{country:"Somalia",iso3Code:"SOM",iso2Code:"SO",datasetCode:"so-address-eh",searchType:"autocomplete"},{country:"South Africa",iso3Code:"ZAF",iso2Code:"ZA",datasetCode:"za-address-ed",searchType:"singleline, validate"},{country:"South Africa",iso3Code:"ZAF",iso2Code:"ZA",datasetCode:"za-address-eh",searchType:"autocomplete"},{country:"South Georgia and the South Sandwich Islands",iso3Code:"SGS",iso2Code:"GS",datasetCode:"gs-address-eh",searchType:"autocomplete"},{country:"South Sudan",iso3Code:"SSD",iso2Code:"SS",datasetCode:"ss-address-ed",searchType:"singleline, validate"},{country:"South Sudan",iso3Code:"SSD",iso2Code:"SS",datasetCode:"ss-address-eh",searchType:"autocomplete"},{country:"Spain",iso3Code:"ESP",iso2Code:"ES",datasetCode:"es-address",searchType:"singleline, typedown"},{country:"Spain",iso3Code:"ESP",iso2Code:"ES",datasetCode:"es-address-ed",searchType:"validate"},{country:"Spain",iso3Code:"ESP",iso2Code:"ES",datasetCode:"es-address-eh",searchType:"autocomplete"},{country:"Sri Lanka",iso3Code:"LKA",iso2Code:"LK",datasetCode:"lk-address-ed",searchType:"singleline, validate"},{country:"Sudan",iso3Code:"SDN",iso2Code:"SD",datasetCode:"sd-address-ed",searchType:"singleline, validate"},{country:"Sudan",iso3Code:"SDN",iso2Code:"SD",datasetCode:"sd-address-eh",searchType:"autocomplete"},{country:"Suriname",iso3Code:"SUR",iso2Code:"SR",datasetCode:"sr-address-ed",searchType:"singleline, validate"},{country:"Suriname",iso3Code:"SUR",iso2Code:"SR",datasetCode:"sr-address-eh",searchType:"autocomplete"},{country:"Svalbard and Jan Mayen Islands",iso3Code:"SJM",iso2Code:"SJ",datasetCode:"sj-address-eh",searchType:"autocomplete"},{country:"Swaziland (Eswatini)",iso3Code:"SWZ",iso2Code:"SZ",datasetCode:"sz-address-ed",searchType:"singleline, validate"},{country:"Swaziland (Eswatini)",iso3Code:"SWZ",iso2Code:"SZ",datasetCode:"sz-address-eh",searchType:"autocomplete"},{country:"Sweden",iso3Code:"SWE",iso2Code:"SE",datasetCode:"se-address",searchType:"singleline, typedown"},{country:"Sweden",iso3Code:"SWE",iso2Code:"SE",datasetCode:"se-address-ed",searchType:"validate"},{country:"Sweden",iso3Code:"SWE",iso2Code:"SE",datasetCode:"se-address-eh",searchType:"autocomplete"},{country:"Switzerland",iso3Code:"CHE",iso2Code:"CH",datasetCode:"ch-address",searchType:"singleline, typedown"},{country:"Switzerland",iso3Code:"CHE",iso2Code:"CH",datasetCode:"ch-address-ed",searchType:"validate"},{country:"Switzerland",iso3Code:"CHE",iso2Code:"CH",datasetCode:"ch-address-eh",searchType:"autocomplete"},{country:"Syria",iso3Code:"SYR",iso2Code:"SY",datasetCode:"sy-address-ed",searchType:"singleline, validate"},{country:"Syria",iso3Code:"SYR",iso2Code:"SY",datasetCode:"sy-address-eh",searchType:"autocomplete"},{country:"Taiwan",iso3Code:"TWN",iso2Code:"TW",datasetCode:"tw-address-ed",searchType:"singleline, validate"},{country:"Taiwan",iso3Code:"TWN",iso2Code:"TW",datasetCode:"tw-address-eh",searchType:"autocomplete"},{country:"Tajikistan",iso3Code:"TJK",iso2Code:"TJ",datasetCode:"tj-address-ed",searchType:"singleline, validate"},{country:"Tajikistan",iso3Code:"TJK",iso2Code:"TJ",datasetCode:"tj-address-eh",searchType:"autocomplete"},{country:"Tanzania",iso3Code:"TZA",iso2Code:"TZ",datasetCode:"tz-address-ed",searchType:"singleline, validate"},{country:"Tanzania",iso3Code:"TZA",iso2Code:"TZ",datasetCode:"tz-address-eh",searchType:"autocomplete"},{country:"Thailand",iso3Code:"THA",iso2Code:"TH",datasetCode:"th-address-ed",searchType:"singleline, validate"},{country:"Thailand",iso3Code:"THA",iso2Code:"TH",datasetCode:"th-address-eh",searchType:"autocomplete"},{country:"Timor-Leste",iso3Code:"TLS",iso2Code:"TL",datasetCode:"tl-address-ed",searchType:"singleline, validate"},{country:"Timor-Leste",iso3Code:"TLS",iso2Code:"TL",datasetCode:"tl-address-eh",searchType:"autocomplete"},{country:"Togo",iso3Code:"TGO",iso2Code:"TG",datasetCode:"tg-address-ed",searchType:"singleline, validate"},{country:"Togo",iso3Code:"TGO",iso2Code:"TG",datasetCode:"tg-address-eh",searchType:"autocomplete"},{country:"Tokelau",iso3Code:"TKL",iso2Code:"TK",datasetCode:"tk-address-ed",searchType:"singleline, validate"},{country:"Tokelau",iso3Code:"TKL",iso2Code:"TK",datasetCode:"tk-address-eh",searchType:"autocomplete"},{country:"Tonga",iso3Code:"TON",iso2Code:"TO",datasetCode:"to-address-ed",searchType:"singleline, validate"},{country:"Tonga",iso3Code:"TON",iso2Code:"TO",datasetCode:"to-address-eh",searchType:"autocomplete"},{country:"Trinidad and Tobago",iso3Code:"TTO",iso2Code:"TT",datasetCode:"tt-address-ed",searchType:"singleline, validate"},{country:"Trinidad and Tobago",iso3Code:"TTO",iso2Code:"TT",datasetCode:"tt-address-eh",searchType:"autocomplete"},{country:"Tunisia",iso3Code:"TUN",iso2Code:"TN",datasetCode:"tn-address-ed",searchType:"singleline, validate"},{country:"Tunisia",iso3Code:"TUN",iso2Code:"TN",datasetCode:"tn-address-eh",searchType:"autocomplete"},{country:"Turkey",iso3Code:"TUR",iso2Code:"TR",datasetCode:"tr-address-ed",searchType:"singleline, validate"},{country:"Turkey",iso3Code:"TUR",iso2Code:"TR",datasetCode:"tr-address-eh",searchType:"autocomplete"},{country:"Turkish Republic of Northern Cyprus",iso3Code:"NCY",iso2Code:"CY",datasetCode:"ny-address-eh",searchType:"autocomplete"},{country:"Turkmenistan",iso3Code:"TKM",iso2Code:"TM",datasetCode:"tm-address-ed",searchType:"singleline, validate"},{country:"Turkmenistan",iso3Code:"TKM",iso2Code:"TM",datasetCode:"tm-address-eh",searchType:"autocomplete"},{country:"Turks and Caicos Islands",iso3Code:"TCA",iso2Code:"TC",datasetCode:"tc-address-eh",searchType:"autocomplete"},{country:"Tuvalu",iso3Code:"TUV",iso2Code:"TV",datasetCode:"tv-address-ed",searchType:"singleline, validate"},{country:"Tuvalu",iso3Code:"TUV",iso2Code:"TV",datasetCode:"tv-address-eh",searchType:"autocomplete"},{country:"Uganda",iso3Code:"UGA",iso2Code:"UG",datasetCode:"ug-address-ed",searchType:"singleline, validate"},{country:"Uganda",iso3Code:"UGA",iso2Code:"UG",datasetCode:"ug-address-eh",searchType:"autocomplete"},{country:"Ukraine",iso3Code:"UKR",iso2Code:"UA",datasetCode:"ua-address-ed",searchType:"singleline, validate"},{country:"Ukraine",iso3Code:"UKR",iso2Code:"UA",datasetCode:"ua-address-eh",searchType:"autocomplete"},{country:"United Arab Emirates",iso3Code:"ARE",iso2Code:"AE",datasetCode:"ae-address-ed",searchType:"singleline, validate"},{country:"United Arab Emirates",iso3Code:"ARE",iso2Code:"AE",datasetCode:"ae-address-eh",searchType:"autocomplete"},{country:"United Kingdom",iso3Code:"GBR",iso2Code:"GB",datasetCode:["gb-address"],searchType:"autocomplete"},{country:"United Kingdom",iso3Code:"GBR",iso2Code:"GB",datasetCode:["gb-additional-business","gb-additional-multipleresidence","gb-additional-notyetbuilt"],searchType:"singleline"},{country:"United Kingdom AddressBase Premium",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-address-addressbase",searchType:"singleline, typedown, validate, lookup"},{country:"United Kingdom AddressBase Premium with Islands",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-additional-addressbaseislands",searchType:"singleline, typedown, validate, lookup"},{country:"United Kingdom Business Names",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-additional-business",searchType:"singleline, typedown"},{country:"United Kingdom Electricity",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-additional-electricity",searchType:"singleline, typedown, validate, lookup"},{country:"United Kingdom Gas",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-additional-gas",searchType:"singleline, typedown, validate, lookup"},{country:"United Kingdom Street Level",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-address-streetlevel",searchType:"singleline, typedown"},{country:"United Kingdom Extended Business",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-additional-businessextended",searchType:"singleline, typedown, validate, lookup"},{country:"United Kingdom Cymraeg (Welsh Language) Postal Address",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-address-wales",searchType:"singleline, typedown, validate"},{country:"United States of America",iso3Code:"USA",iso2Code:"US",datasetCode:"us-address",searchType:"autocomplete, singleline, typedown, validate"},{country:"Uruguay",iso3Code:"URY",iso2Code:"UY",datasetCode:"uy-address-ed",searchType:"singleline, validate"},{country:"Uruguay",iso3Code:"URY",iso2Code:"UY",datasetCode:"uy-address-eh",searchType:"autocomplete"},{country:"Uzbekistan",iso3Code:"UZB",iso2Code:"UZ",datasetCode:"uz-address-ed",searchType:"singleline, validate"},{country:"Uzbekistan",iso3Code:"UZB",iso2Code:"UZ",datasetCode:"uz-address-eh",searchType:"autocomplete"},{country:"Vanuatu",iso3Code:"VUT",iso2Code:"VU",datasetCode:"vu-address-ed",searchType:"singleline, validate"},{country:"Vanuatu",iso3Code:"VUT",iso2Code:"VU",datasetCode:"vu-address-eh",searchType:"autocomplete"},{country:"Vatican City (Holy See)",iso3Code:"VAT",iso2Code:"VA",datasetCode:"va-address-ed",searchType:"singleline, validate"},{country:"Vatican City (Holy See)",iso3Code:"VAT",iso2Code:"VA",datasetCode:"va-address-eh",searchType:"autocomplete"},{country:"Venezuela",iso3Code:"VEN",iso2Code:"VE",datasetCode:"ve-address-ed",searchType:"singleline, validate"},{country:"Venezuela",iso3Code:"VEN",iso2Code:"VE",datasetCode:"ve-address-eh",searchType:"autocomplete"},{country:"Viet Nam",iso3Code:"VNM",iso2Code:"VN",datasetCode:"vn-address-ed",searchType:"singleline, validate"},{country:"Viet Nam",iso3Code:"VNM",iso2Code:"VN",datasetCode:"vn-address-eh",searchType:"autocomplete"},{country:"Virgin Islands, British",iso3Code:"VGB",iso2Code:"VG",datasetCode:"vg-address-eh",searchType:"autocomplete"},{country:"Virgin Islands, U.S.",iso3Code:"VIR",iso2Code:"VI",datasetCode:"vi-address-eh",searchType:"autocomplete"},{country:"Wallis and Futuna Islands",iso3Code:"WLF",iso2Code:"WF",datasetCode:"wf-address-eh",searchType:"autocomplete"},{country:"Western Sahara",iso3Code:"ESH",iso2Code:"EH",datasetCode:"eh-address-ed",searchType:"singleline, validate"},{country:"Western Sahara",iso3Code:"ESH",iso2Code:"EH",datasetCode:"eh-address-eh",searchType:"autocomplete"},{country:"Yemen",iso3Code:"YEM",iso2Code:"YE",datasetCode:"ye-address-ed",searchType:"singleline, validate"},{country:"Yemen",iso3Code:"YEM",iso2Code:"YE",datasetCode:"ye-address-eh",searchType:"autocomplete"},{country:"Zambia",iso3Code:"ZMB",iso2Code:"ZM",datasetCode:"zm-address-ed",searchType:"singleline, validate"},{country:"Zambia",iso3Code:"ZMB",iso2Code:"ZM",datasetCode:"zm-address-eh",searchType:"autocomplete"},{country:"Zimbabwe",iso3Code:"ZWE",iso2Code:"ZW",datasetCode:"zw-address-ed",searchType:"singleline, validate"},{country:"Zimbabwe",iso3Code:"ZWE",iso2Code:"ZW",datasetCode:"zw-address-eh",searchType:"autocomplete"}],i={en:{gbr:{locality:"Town/City",region:"County",postal_code:"Post code"},usa:{locality:"City",region:"State",postal_code:"ZIP code"}}},r=function(){this.size=0,this.maxSuggestions=25},n=function(){function s(s){var t=this;this.baseUrl="https://api.experianaperture.io/",this.searchEndpoint="address/search/v1",this.lookupEndpoint="address/lookup/v2",this.validateEndpoint="address/validate/v1",this.promptsetEndpoint="address/promptsets/v1",this.stepInEndpoint="address/suggestions/stepin/v1",this.refineEndpoint="address/suggestions/refine/v1",this.enrichmentEndpoint="enrichment/v2",this.what3WordCountries=["GBR"],this.what3WordsKeyword="what3words",this.poweredByLogo={element:null,create:function(e){var s={text:"".concat(this.svg," Powered by Experian"),format:""},o=e.createListItem(s);return o.classList.add("powered-by-experian"),e.list.parentNode.appendChild(o),o},destroy:function(e){this.element&&(e.list.parentNode.removeChild(this.element),this.element=void 0)},svg:''},this.result={formattedAddressContainer:null,lastAddressField:null,generateAddressLineRequired:!1,show:function(s){if(t.searchSpinner.hide(),t.picklist.hide(),t.lastSearchTerm="",t.searchType===e.AUTOCOMPLETE||s.result.address&&"No matches"!==s.result.confidence){t.inputs.forEach((function(e){return e.value=""})),t.result.calculateIfAddressLineGenerationRequired(),t.result.formattedAddressContainer=t.options.elements.formattedAddressContainer,!t.result.formattedAddressContainer&&t.result.generateAddressLineRequired&&t.result.createFormattedAddressContainer();for(var o=0;o0)for(var s=0;s?/";:£§º©®\s]+[.。。・・︒។։။۔።।][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+[.。。・・︒។։။۔።।][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+|[^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+([\u0020\u00A0][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+){1,3}[.。。・・︒។։။۔።।][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+([\u0020\u00A0][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+){1,3}[.。。・・︒។։။۔።।][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+([\u0020\u00A0][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+){1,3})$/.test(this.currentSearchTerm.trim())&&this.options.enableWhat3Words&&this.what3WordCountries.indexOf(this.currentCountryCode)>-1?(this.isWhat3Words=!0,this.currentSearchTerm=this.currentSearchTerm.trim()):this.isWhat3Words=!1,this.events.trigger("pre-search",this.currentSearchTerm);var t=this.isWhat3Words?this.generateLookupDataForApiCall(this.currentSearchTerm,!0):this.generateSearchDataForApiCall();this.lastSearchTerm=this.currentSearchTerm,this.searchSpinner.hide(),this.searchSpinner.show();var a=void 0,d=void 0,i=void 0;this.isWhat3Words?(a=this.baseUrl+this.lookupEndpoint,d=[],i=this.picklist.showWhat3Words):(a=this.baseUrl+(this.searchType===e.VALIDATE?this.validateEndpoint:this.searchEndpoint),d=this.searchType===e.VALIDATE?[{key:"Add-Metadata",value:!0}]:[],i=this.searchType===e.VALIDATE?this.result.handleValidateResponse:this.picklist.show),this.request.send(a,"POST",i,t,d)}else this.lastSearchTerm!==this.currentSearchTerm&&this.picklist.hide()},s.prototype.getKey=function(e){var s=e.key;switch(s){case"Down":case"ArrowDown":return"ArrowDown";case"Up":case"ArrowUp":return"ArrowUp";case"Spacebar":case" ":return" ";case"Escape":case"Esc":return"Escape";default:return s}},s.prototype.canSearch=function(){return this.options.enabled&&""!==this.currentSearchTerm&&this.currentSearchTerm.length>3&&this.lastSearchTerm!==this.currentSearchTerm&&this.currentCountryCode&&!0===this.hasSearchInputBeenReset},s.prototype.createPicklist=function(){var s=this;this.picklist=new r,this.picklist.maxSuggestions=25,this.picklist.tabCount=-1,this.picklist.show=function(o){var t;s.picklist.items=null==o?void 0:o.result.suggestions,s.picklist.handleCommonShowPicklistLogic(),(null===(t=s.picklist.items)||void 0===t?void 0:t.length)>0?(s.picklist.refine.isNeeded(o)&&s.picklist.refine.createInput(o.result.suggestions_prompt,o.result.suggestions_key),s.searchType===e.VALIDATE&&s.picklist.displaySuggestionsHeader(),s.picklist.items.forEach((function(e){var o=s.picklist.createListItem(e);s.picklist.list.appendChild(o),s.picklist.listen(o)})),s.searchType===e.VALIDATE&&s.picklist.displayUseAddressEnteredFooter(),s.picklist.scrollIntoViewIfNeeded()):s.picklist.handleEmptyPicklist(o),s.poweredByLogo.element=s.poweredByLogo.element||s.poweredByLogo.create(s.picklist),s.events.trigger("post-picklist-create",s.picklist.items)},this.picklist.showWhat3Words=function(e){var o;s.picklist.what3wordsItems=null==e?void 0:e.result.suggestions,s.picklist.handleCommonShowPicklistLogic(),(null===(o=s.picklist.what3wordsItems)||void 0===o?void 0:o.length)>0?(s.picklist.what3wordsItems.forEach((function(e){var o=s.picklist.createWhat3WordsListItem(e);s.picklist.list.appendChild(o),s.picklist.listen(o)})),s.picklist.scrollIntoViewIfNeeded()):s.picklist.handleEmptyPicklist(e),s.poweredByLogo.element=s.poweredByLogo.element||s.poweredByLogo.create(s.picklist),s.events.trigger("post-picklist-create",s.picklist.items)},this.picklist.showLookup=function(e){var o;s.isWhat3Words=!1,s.picklist.lookupItems=null==e?void 0:e.result.addresses,s.picklist.handleCommonShowPicklistLogic(),(null===(o=s.picklist.lookupItems)||void 0===o?void 0:o.length)>0?(s.picklist.lookupItems.forEach((function(e){var o=s.picklist.createLookupListItem(e);s.picklist.list.appendChild(o),s.picklist.listen(o)})),s.picklist.scrollIntoViewIfNeeded()):s.picklist.handleEmptyPicklist(e),s.poweredByLogo.element=s.poweredByLogo.element||s.poweredByLogo.create(s.picklist),s.events.trigger("post-picklist-create",s.picklist.items)},this.picklist.handleCommonShowPicklistLogic=function(){var e;s.picklist.currentItem=null,s.picklist.size=null===(e=s.picklist.items)||void 0===e?void 0:e.length,s.picklist.resetTabCount(),s.searchSpinner.hide(),s.picklist.list=s.picklist.list||s.picklist.createList(),s.picklist.list.innerHTML="",s.picklist.useAddressEntered.destroy(),s.events.trigger("pre-picklist-create",s.picklist.items)},this.picklist.hide=function(){if(s.picklist.currentItem=null,s.picklist.useAddressEntered.destroy(),s.poweredByLogo.destroy(s.picklist),s.inputs){var o=s.searchType===e.SINGLELINE?s.inputs.length-1:0;s.inputs[o].classList.remove("showing-suggestions")}s.picklist.list&&(s.picklist.container.remove(),s.picklist.list=void 0)},this.picklist.handleEmptyPicklist=function(e){var o;s.picklist.useAddressEntered.element=s.picklist.useAddressEntered.element||s.picklist.useAddressEntered.create(null===(o=e.result)||void 0===o?void 0:o.confidence),s.picklist.scrollIntoViewIfNeeded(),"function"==typeof s.picklist.handleEmptyPicklistCallback&&s.picklist.handleEmptyPicklistCallback()},this.picklist.displaySuggestionsHeader=function(){var e=document.querySelector(".picklist-suggestions-header")||document.createElement("div");e.classList.add("picklist-suggestions-header"),e.innerText="Suggestions:",s.picklist.list.parentNode.insertBefore(e,s.picklist.list)},this.picklist.displayUseAddressEnteredFooter=function(){var e=document.querySelector(".picklist-use-entered-container")||document.createElement("div");e.classList.add("picklist-use-entered-container"),s.picklist.list.parentNode.insertBefore(e,s.picklist.list.nextElementSibling);var o=document.querySelector(".picklist-use-entered-header")||document.createElement("div");o.classList.add("picklist-use-entered-header"),o.innerText="Or use address entered:",e.appendChild(o);var t=document.querySelector(".picklist-use-entered-option")||document.createElement("div");t.classList.add("picklist-use-entered-option"),t.innerText=s.currentSearchTerm.replace(/,+/g,", "),t.addEventListener("click",s.picklist.useAddressEntered.click),e.appendChild(t)},this.picklist.scrollIntoViewIfNeeded=function(){var e=s.picklist.container.getBoundingClientRect().top<0,o=s.picklist.container.getBoundingClientRect().bottom>window.innerHeight;(e||o)&&s.picklist.container.scrollIntoView()},this.picklist.useAddressEntered={element:null,create:function(e){var o={text:"".concat(e," ").concat(s.options.useAddressEnteredText)},t=s.picklist.createListItem(o);return t.classList.add("use-address-entered"),t.setAttribute("title","Enter address manually"),s.picklist.list=s.picklist.list||s.picklist.createList(),s.picklist.list.parentNode.insertBefore(t,s.picklist.container.firstChild),t.addEventListener("click",s.picklist.useAddressEntered.click),t},destroy:function(){s.picklist.useAddressEntered.element&&(s.picklist.list.parentNode.removeChild(s.picklist.useAddressEntered.element),s.picklist.useAddressEntered.element=void 0)},click:function(){var e={result:{confidence:"No matches",address:{address_line_1:"",address_line_2:"",address_line_3:"",locality:"",region:"",postal_code:"",country:""}}};if(s.currentSearchTerm){var o=s.currentSearchTerm.split(",");o[0]&&(e.result.address.address_line_1=o[0]),o[1]&&(e.result.address.address_line_2=o[1]),o[2]&&(e.result.address.address_line_3=o[2]);for(var t=3;ta.length-1&&(s.picklist.tabCount=0,o=!0);var d=a[s.picklist.tabCount],i=s.picklist.list.querySelector(".selected");i&&i.classList.remove("selected"),d.classList.add("selected"),s.picklist.currentItem=d;var r=s.picklist.list.offsetTop,n=s.picklist.list.offsetTop+s.picklist.list.offsetHeight,c=s.picklist.list.scrollTop,l=d.offsetTop,C=d.offsetTop+d.offsetHeight,u=d.offsetHeight;o?s.picklist.list.scrollTop=0:t?s.picklist.list.scrollTop=999:C+u>n?s.picklist.list.scrollTop=c+u:l-u-r";o=o.substring(0,s[t][0])+a+o.substring(s[t][1])}return o},this.picklist.listen=function(e){e.addEventListener("click",s.picklist.pick.bind(null,e))},this.picklist.checkEnter=function(e){if("Enter"===e.key||"Tab"===e.key){var o=void 0;1===s.picklist.size?o=s.picklist.list.querySelectorAll("div")[0]:s.picklist.currentItem&&(o=s.picklist.currentItem),o&&s.picklist.pick(o)}},this.picklist.pick=function(e){s.events.trigger("post-picklist-selection",e);var o=e.getElementsByTagName("div");s.isWhat3Words?s.lookup(o[0].innerHTML):e.getAttribute("format")?s.format(e.getAttribute("format")):s.refine(e.getAttribute("refine"))}},s.prototype.format=function(e){this.events.trigger("pre-formatting-search",e),this.searchSpinner.hide(),this.request.send(e,"GET",this.result.show,void 0,[{key:"Add-Metadata",value:!0}])},s.prototype.refine=function(e){this.events.trigger("pre-refinement",e),this.searchSpinner.hide(),this.request.send("".concat(this.baseUrl).concat(this.stepInEndpoint,"/").concat(e),"GET",this.picklist.show)},s.prototype.lookup=function(e){this.events.trigger("pre-lookup",e),this.searchSpinner.hide();var s=this.generateLookupDataForApiCall(e,!1),o=this.baseUrl+this.lookupEndpoint,t=this.picklist.showLookup;this.request.send(o,"POST",t,s,[{key:"Add-Addresses",value:!0}])},s.prototype.checkTab=function(e){var s=this.getKey(e);"Tab"!==s?"Enter"===s&&e.preventDefault():this.picklist.keyup(e)},s.prototype.toggleSearchInputs=function(e){var s,o,t,a="show"===e?"remove":"add";null===(s=this.options.elements.inputs)||void 0===s||s.forEach((function(e){return e.parentNode.querySelectorAll(".toggle").forEach((function(e){return e.classList[a]("hidden")}))})),null===(o=this.options.elements.countryList)||void 0===o||o.parentNode.querySelectorAll(".toggle").forEach((function(e){return e.classList[a]("hidden")})),null===(t=this.options.elements.lookupButton)||void 0===t||t.parentNode.querySelectorAll(".toggle").forEach((function(e){return e.classList[a]("hidden")}))},s.prototype.globalReset=function(e){e&&e.preventDefault(),this.options.enabled=!0,this.result.hide(),this.hasSearchInputBeenReset=!0,this.inputs.forEach((function(e){return e.value=""})),this.picklist.hide(),this.toggleSearchInputs("show"),this.inputs[0].focus(),this.events.trigger("post-reset")},s}();window.AddressValidation=n}(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Z0JBQy9GLENBQUNrQixRQUFTLGFBQWNDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQ25HLENBQUNrQixRQUFTLGFBQWNDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQ25HLENBQUNrQixRQUFTLE9BQVFDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQzdGLENBQUNrQixRQUFTLE9BQVFDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQzdGLENBQUNrQixRQUFTLFNBQVVDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQy9GLENBQUNrQixRQUFTLFNBQVVDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQy9GLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQ2hHLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQ2hHLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQ2hHLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQ2hHLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQ2hHLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQ2hHLENBQUNrQixRQUFTLFFBQVNDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQzlGLENBQUNrQixRQUFTLFFBQVNDLFNBQVUsTUFBT0MsU0FBVSxL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VSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDaEcsQ0FBQ2tCLFFBQVMsYUFBY0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDbkcsQ0FBQ2tCLFFBQVMsYUFBY0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDbkcsQ0FBQ2tCLFFBQVMsVUFBV0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDaEcsQ0FBQ2tCLFFBQVMsVUFBV0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDaEcsQ0FBQ2tCLFFBQVMsVUFBV0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDaEcsQ0FBQ2tCLFFBQVMsVUFBV0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDaEcsQ0FBQ2tCLFFBQVMsUUFBU0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDOUYsQ0FBQ2tCLFFBQVMsUUFBU0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDOUYsQ0FBQ2tCLFFBQVMsUUFBU0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDOUYsQ0FBQ2tCLFFBQVMsUUFBU0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDOUYsQ0FBQ2tCLFFBQVMsY0FBZUMsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDcEcsQ0FBQ2tCLFFBQVMsY0FBZUMsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDcEcsQ0FBQ2tCLFFBQVMsZ0JBQWlCQyxTQUFVLE1BQU9DLFNBQVUsS0FBTUMsWUFBYSxnQkFBaUJyQixXQUFZLGdC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QUFBblUsS0FBS3NCLFFBQVFzRixTQUFTOEcsbUJBQVcsU0FBRTVILFdBQVdxTixpQkFBaUIsV0FBVzNSLFNBQVEsU0FBQTJELEdBQVcsT0FBQUEsRUFBUVEsVUFBVXdPLEdBQVUsYUFDdkYsUUFBbEMsRUFBQW5VLEtBQUtzQixRQUFRc0YsU0FBU3FHLG9CQUFZLFNBQUVuSCxXQUFXcU4saUJBQWlCLFdBQVczUixTQUFRLFNBQUEyRCxHQUFXLE9BQUFBLEVBQVFRLFVBQVV3TyxHQUFVLGNBR3BILFlBQUF6SyxZQUFSLFNBQW9CNUosR0FDZEEsR0FDRkEsRUFBTTRPLGlCQUdSMU8sS0FBS3NCLFFBQVF3SyxTQUFVLEVBRXZCOUwsS0FBS21HLE9BQU9oRSxPQUVabkMsS0FBS21ILHlCQUEwQixFQUcvQm5ILEtBQUswRyxPQUFPbEYsU0FBUSxTQUFBbUIsR0FBUyxPQUFBQSxFQUFNaEIsTUFBUSxNQUUzQzNCLEtBQUtxRixTQUFTbEQsT0FFZG5DLEtBQUtrSCxtQkFBbUIsUUFFeEJsSCxLQUFLMEcsT0FBTyxHQUFHK0csUUFHZnpOLEtBQUtvQyxPQUFPbEMsUUFBUSxlQUV4QixFQWw0Q0EsR0NDQXlSLE9BQU95QyxrQkFBb0IsRSIsInNvdXJjZXMiOlsid2VicGFjazovL2V4cGVyaWFuLWFkZHJlc3MtdmFsaWRhdGlvbi8uL3NyYy90cy9ldmVudC1mYWN0b3J5LnRzIiwid2VicGFjazovL2V4cGVyaWFuLWFkZHJlc3MtdmFsaWRhdGlvbi8uL3NyYy90cy9zZWFyY2gtb3B0aW9ucy50cyIsIndlYnBhY2s6Ly9leHBlcmlhbi1hZGRyZXNzLXZhbGlkYXRpb24vLi9zcmMvdHMvcmVxdWVzdC50cyIsIndlYnBhY2s6Ly9leHBlcmlhbi1hZGRyZXNzLXZhbGlkYXRpb24vLi9zcmMvdHMvZGF0YXNldHMtY29kZXMudHMiLCJ3ZWJwYWNrOi8vZXhwZXJpYW4tYWRkcmVzcy12YWxpZGF0aW9uLy4vc3JjL3RzL3RyYW5zbGF0aW9ucy50cyIsIndlYnBhY2s6Ly9leHBlcmlhbi1hZGRyZXNzLXZhbGlkYXRpb24vLi9zcmMvdHMvY2xhc3MtdHlwZXMudHMiLCJ3ZWJwYWNrOi8vZXhwZXJpYW4tYWRkcmVzcy12YWxpZGF0aW9uLy4vc3JjL3RzL2FkZHJlc3Mtc2VhcmNoLnRzIiwid2VicGFjazovL2V4cGVyaWFuLWFkZHJlc3MtdmFsaWRhdGlvbi8uL3NyYy90cy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ldGhvZCBldmVudCBsaXN0ZW5lciAocHViL3N1YiB0eXBlIHRoaW5nKVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFdmVudEZhY3Rvcnkge1xuICAvLyBDcmVhdGUgYW4gb2JqZWN0IHRvIGhvbGQgdGhlIGNvbGxlY3Rpb24gb2YgZXZlbnRzXG4gIGNvbGxlY3Rpb24gPSB7fTtcblxuICAvLyBTdWJzY3JpYmUgYSBuZXcgZXZlbnRcbiAgb24oZXZlbnQsIGFjdGlvbikge1xuICAgIC8vIENyZWF0ZSB0aGUgcHJvcGVydHkgYXJyYXkgb24gdGhlIGNvbGxlY3Rpb24gb2JqZWN0XG4gICAgdGhpcy5jb2xsZWN0aW9uW2V2ZW50XSA9IHRoaXMuY29sbGVjdGlvbltldmVudF0gfHwgW107XG4gICAgLy8gUHVzaCBhIG5ldyBhY3Rpb24gZm9yIHRoaXMgZXZlbnQgb250byB0aGUgYXJyYXlcbiAgICB0aGlzLmNvbGxlY3Rpb25bZXZlbnRdLnB1c2goYWN0aW9uKTtcbiAgfVxuXG4gIC8vIFB1Ymxpc2ggKHRyaWdnZXIpIGFuIGV2ZW50XG4gIHRyaWdnZXIoZXZlbnQsIGRhdGEpIHtcbiAgICAvLyBJZiB0aGlzIGV2ZW50IGlzIGluIG91ciBjb2xsZWN0aW9uIChpLmUuIGFueW9uZSdzIHN1YnNjcmliZWQpXG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbltldmVudF0pIHtcbiAgICAgIC8vIExvb3Agb3ZlciBhbGwgdGhlIGFjdGlvbnMgZm9yIHRoaXMgZXZlbnRcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2xsZWN0aW9uW2V2ZW50XS5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBDcmVhdGUgYXJyYXkgd2l0aCBkZWZhdWx0IGRhdGEgYXMgMXN0IGl0ZW1cbiAgICAgICAgY29uc3QgYXJncyA9IFtkYXRhXTtcblxuICAgICAgICAvLyBMb29wIG92ZXIgYWRkaXRpb25hbCBhcmdzIGFuZCBhZGQgdG8gYXJyYXlcbiAgICAgICAgZm9yIChsZXQgYSA9IDI7IGEgPCBhcmd1bWVudHMubGVuZ3RoOyBhKyspIHtcbiAgICAgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2FdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGwgZWFjaCBhY3Rpb24gZm9yIHRoaXMgZXZlbnQgdHlwZSwgcGFzc2luZyB0aGUgYXJnc1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY29sbGVjdGlvbltldmVudF1baV0uYXBwbHkodGhpcy5jb2xsZWN0aW9uLCBhcmdzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIFdoYXQgdG8gZG8/IFVuY29tbWVudCB0aGUgYmVsb3cgdG8gc2hvdyBlcnJvcnMgaW4geW91ciBldmVudCBhY3Rpb25zXG4gICAgICAgICAgLy9jb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJleHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NTZWFyY2hPcHRpb25zIHtcclxuICBlbmFibGVkOiBib29sZWFuO1xyXG4gIHRva2VuOiBzdHJpbmc7XHJcbiAgZW5hYmxlV2hhdDNXb3JkczogYm9vbGVhbjtcclxuICBzZWFyY2hUeXBlOiBBZGRyZXNzVmFsaWRhdGlvbk1vZGU7XHJcbiAgbWF4U3VnZ2VzdGlvbnM6IG51bWJlcjtcclxuICBsYW5ndWFnZTogc3RyaW5nO1xyXG4gIGxvY2F0aW9uOiBzdHJpbmc7XHJcbiAgdXNlU3Bpbm5lcjogYm9vbGVhbjtcclxuICBjb3VudHJ5Q29kZT86IHN0cmluZztcclxuICBjb3VudHJ5Q29kZU1hcHBpbmc/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gIGFwcGx5Rm9jdXM6IGJvb2xlYW47XHJcbiAgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmc7XHJcbiAgdXNlQWRkcmVzc0VudGVyZWRUZXh0OiBzdHJpbmc7XHJcbiAgc2VhcmNoQWdhaW46IHsgdmlzaWJsZT86IGJvb2xlYW4sIHRleHQ/OiBzdHJpbmcsIGxpbms/OiBIVE1MQnV0dG9uRWxlbWVudCB9O1xyXG4gIGZvcm1hdHRlZEFkZHJlc3NDb250YWluZXI6IHsgc2hvd0hlYWRpbmc6IGJvb2xlYW4sIGhlYWRpbmdUeXBlOiBzdHJpbmcsIHZhbGlkYXRlZEhlYWRpbmdUZXh0OiBzdHJpbmcsIG1hbnVhbEhlYWRpbmdUZXh0OiBzdHJpbmcgfTtcclxuICBlbGVtZW50czogeyBpbnB1dD86IEhUTUxJbnB1dEVsZW1lbnQsIGlucHV0cz86IEhUTUxJbnB1dEVsZW1lbnRbXSwgY291bnRyeUxpc3Q/OiBIVE1MU2VsZWN0RWxlbWVudCwgYWRkcmVzc19saW5lXzE/OiBIVE1MSW5wdXRFbGVtZW50LCBhZGRyZXNzX2xpbmVfMj86IEhUTUxJbnB1dEVsZW1lbnQsIGFkZHJlc3NfbGluZV8zPzogSFRNTElucHV0RWxlbWVudCwgbG9jYWxpdHk/OiBIVE1MSW5wdXRFbGVtZW50LCByZWdpb24/OiBIVE1MSW5wdXRFbGVtZW50LCBwb3N0YWxfY29kZT86IEhUTUxJbnB1dEVsZW1lbnQsIGNvdW50cnk/OiBIVE1MSW5wdXRFbGVtZW50LCBmb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyPzogSFRNTEVsZW1lbnQsIGxvb2t1cEJ1dHRvbj86IEhUTUxCdXR0b25FbGVtZW50IH07XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEFkZHJlc3NWYWxpZGF0aW9uTW9kZSB7XHJcbiAgQVVUT0NPTVBMRVRFID0gJ2F1dG9jb21wbGV0ZScsXHJcbiAgU0lOR0xFTElORSA9ICdzaW5nbGVsaW5lJyxcclxuICBWQUxJREFURSA9ICd2YWxpZGF0ZSdcclxufVxyXG5cclxuLy8gRGVmYXVsdCBzZXR0aW5nc1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdHMgPSB7XHJcbiAgZW5hYmxlV2hhdDNXb3JkczogdHJ1ZSxcclxuICBzZWFyY2hUeXBlOiBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuQVVUT0NPTVBMRVRFLFxyXG4gIGlucHV0OiB7IHBsYWNlaG9sZGVyVGV4dDogJ1N0YXJ0IHR5cGluZyBhbiBhZGRyZXNzLi4uJywgYXBwbHlGb2N1czogZmFsc2UgfSxcclxuICBmb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyOiB7IHNob3dIZWFkaW5nOiBmYWxzZSwgaGVhZGluZ1R5cGU6ICdoMycsIHZhbGlkYXRlZEhlYWRpbmdUZXh0OiAnVmFsaWRhdGVkIGFkZHJlc3MnLCBtYW51YWxIZWFkaW5nVGV4dDogJ01hbnVhbCBhZGRyZXNzIGVudGVyZWQnIH0sXHJcbiAgc2VhcmNoQWdhaW46IHsgdmlzaWJsZTogdHJ1ZSwgdGV4dDogJ1NlYXJjaCBhZ2FpbicgfSxcclxuICB1c2VBZGRyZXNzRW50ZXJlZFRleHQ6ICc8ZW0+IC0gVXNlIGFkZHJlc3MgZW50ZXJlZCBvciB0cnkgYWdhaW4uLi48L2VtPicsXHJcbiAgdXNlU3Bpbm5lcjogZmFsc2UsXHJcbiAgbGFuZ3VhZ2U6ICdlbicsXHJcbiAgYWRkcmVzc0xpbmVMYWJlbHM6IFtcclxuICAgICdhZGRyZXNzX2xpbmVfMScsXHJcbiAgICAnYWRkcmVzc19saW5lXzInLFxyXG4gICAgJ2FkZHJlc3NfbGluZV8zJyxcclxuICAgICdsb2NhbGl0eScsXHJcbiAgICAncmVnaW9uJyxcclxuICAgICdwb3N0YWxfY29kZScsXHJcbiAgICAnY291bnRyeSdcclxuICBdXHJcbn07IiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVxdWVzdCB7XG4gIGluc3RhbmNlO1xuICBjb25zdHJ1Y3RvcihpbnN0YW5jZSkge1xuICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBjdXJyZW50UmVxdWVzdDtcblxuXG4gIHB1YmxpYyBzZW5kKHVybDogc3RyaW5nLCBtZXRob2Q6ICdHRVQnIHwgJ1BPU1QnLCBjYWxsYmFjazogKGRhdGE6IG9iamVjdCkgPT4gdm9pZCwgZGF0YT86IHN0cmluZywgaGVhZGVyczoge2tleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbn1bXSA9IFtdKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHRoaXMuY3VycmVudFJlcXVlc3Qub3BlbihtZXRob2QsIHVybCwgdHJ1ZSk7XG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC50aW1lb3V0ID0gNTAwMDsgLy8gNSBzZWNvbmRzXG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCdhdXRoLXRva2VuJywgdGhpcy5pbnN0YW5jZS5vcHRpb25zLnRva2VuKTtcbiAgICB0aGlzLmN1cnJlbnRSZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpO1xuXG4gICAgLy8gQWRkIGFkZGl0aW9uYWwgaGVhZGVycyBpZiBzdXBwbGllZFxuICAgIGhlYWRlcnMuZm9yRWFjaChoZWFkZXIgPT4gdGhpcy5jdXJyZW50UmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlci5rZXksIGhlYWRlci52YWx1ZSkpO1xuXG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC5vbmxvYWQgPSAoeGhyKSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UmVxdWVzdC5zdGF0dXMgPj0gMjAwICYmIHRoaXMuY3VycmVudFJlcXVlc3Quc3RhdHVzIDwgNDAwKSB7XG4gICAgICAgIC8vIFN1Y2Nlc3MhXG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHRoaXMuY3VycmVudFJlcXVlc3QucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSByZWFjaGVkIG91ciB0YXJnZXQgc2VydmVyLCBidXQgaXQgcmV0dXJuZWQgYW4gZXJyb3JcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zZWFyY2hTcGlubmVyLmhpZGUoKTtcblxuICAgICAgICAvLyBGaXJlIGFuIGV2ZW50IHRvIG5vdGlmeSB1c2VycyBvZiBhIGdlbmVyYWwgZXJyb3JcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5ldmVudHMudHJpZ2dlcigncmVxdWVzdC1lcnJvcicsIHhocik7XG4gICAgICAgIC8vIEZpcmUgYW4gZXZlbnQgZm9yIHRoZSBzcGVjaWZpYyBzdGF0dXMgY29kZVxuICAgICAgICB0aGlzLmluc3RhbmNlLmV2ZW50cy50cmlnZ2VyKGByZXF1ZXN0LWVycm9yLSR7dGhpcy5jdXJyZW50UmVxdWVzdC5zdGF0dXN9YCwgeGhyKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC5vbmVycm9yID0gKHhocikgPT4ge1xuICAgICAgLy8gVGhlcmUgd2FzIGEgY29ubmVjdGlvbiBlcnJvciBvZiBzb21lIHNvcnRcbiAgICAgIC8vIEhpZGUgdGhlIGlubGluZSBzZWFyY2ggc3Bpbm5lclxuICAgICAgdGhpcy5pbnN0YW5jZS5zZWFyY2hTcGlubmVyLmhpZGUoKTtcblxuICAgICAgLy8gRmlyZSBhbiBldmVudCB0byBub3RpZnkgdXNlcnMgb2YgYW4gZXJyb3JcbiAgICAgIHRoaXMuaW5zdGFuY2UuZXZlbnRzLnRyaWdnZXIoJ3JlcXVlc3QtZXJyb3InLCB4aHIpO1xuICAgIH07XG5cbiAgICB0aGlzLmN1cnJlbnRSZXF1ZXN0Lm9udGltZW91dCA9ICh4aHIpID0+IHtcbiAgICAgIC8vIFRoZXJlIHdhcyBhIGNvbm5lY3Rpb24gdGltZW91dFxuICAgICAgLy8gSGlkZSB0aGUgaW5saW5lIHNlYXJjaCBzcGlubmVyXG4gICAgICB0aGlzLmluc3RhbmNlLnNlYXJjaFNwaW5uZXIuaGlkZSgpO1xuXG4gICAgICAvLyBGaXJlIGFuIGV2ZW50IHRvIG5vdGlmeSB1c2VycyBvZiB0aGUgdGltZW91dFxuICAgICAgdGhpcy5pbnN0YW5jZS5ldmVudHMudHJpZ2dlcigncmVxdWVzdC10aW1lb3V0JywgeGhyKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC5zZW5kKGRhdGEpO1xuICB9XG59IiwiZXhwb3J0IGNvbnN0IGRhdGFzZXRDb2RlcyA9IFtcbiAge2NvdW50cnk6ICdBZmdoYW5pc3RhbicsIGlzbzNDb2RlOiAnQUZHJywgaXNvMkNvZGU6ICdBRicsIGRhdGFzZXRDb2RlOiAnYWYtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0FmZ2hhbmlzdGFuJywgaXNvM0NvZGU6ICdBRkcnLCBpc28yQ29kZTogJ0FGJywgZGF0YXNldENvZGU6ICdhZi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FsYmFuaWEnLCBpc28zQ29kZTogJ0FMQicsIGlzbzJDb2RlOiAnQUwnLCBkYXRhc2V0Q29kZTogJ2FsLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdBbGJhbmlhJywgaXNvM0NvZGU6ICdBTEInLCBpc28yQ29kZTogJ0FMJywgZGF0YXNldENvZGU6ICdhbC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FsZ2VyaWEnLCBpc28zQ29kZTogJ0RaQScsIGlzbzJDb2RlOiAnRFonLCBkYXRhc2V0Q29kZTogJ2R6LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdBbGdlcmlhJywgaXNvM0NvZGU6ICdEWkEnLCBpc28yQ29kZTogJ0RaJywgZGF0YXNldENvZGU6ICdkei1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FtZXJpY2FuIFNhbW9hJywgaXNvM0NvZGU6ICdBU00nLCBpc28yQ29kZTogJ0FTJywgZGF0YXNldENvZGU6ICdhcy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FuZG9ycmEnLCBpc28zQ29kZTogJ0FORCcsIGlzbzJDb2RlOiAnQUQnLCBkYXRhc2V0Q29kZTogJ2FkLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdBbmRvcnJhJywgaXNvM0NvZGU6ICdBTkQnLCBpc28yQ29kZTogJ0FEJywgZGF0YXNldENvZGU6ICdhZC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FuZ29sYScsIGlzbzNDb2RlOiAnQUdPJywgaXNvMkNvZGU6ICdBTycsIGRhdGFzZXRDb2RlOiAnYW8tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0FuZ29sYScsIGlzbzNDb2RlOiAnQUdPJywgaXNvMkNvZGU6ICdBTycsIGRhdGFzZXRDb2RlOiAnYW8tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdBbmd1aWxsYScsIGlzbzNDb2RlOiAnQUlBJywgaXNvMkNvZGU6ICdBSScsIGRhdGFzZXRDb2RlOiAnYWktYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdBbnRhcmN0aWNhJywgaXNvM0NvZGU6ICdBVEEnLCBpc28yQ29kZTogJ0FRJywgZGF0YXNldENvZGU6ICdhcS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQW50aWd1YSBhbmQgQmFyYnVkYScsIGlzbzNDb2RlOiAnQVRHJywgaXNvMkNvZGU6ICdBRycsIGRhdGFzZXRDb2RlOiAnYWctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0FudGlndWEgYW5kIEJhcmJ1ZGEnLCBpc28zQ29kZTogJ0FURycsIGlzbzJDb2RlOiAnQUcnLCBkYXRhc2V0Q29kZTogJ2FnLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQXJnZW50aW5hJywgaXNvM0NvZGU6ICdBUkcnLCBpc28yQ29kZTogJ0FSJywgZGF0YXNldENvZGU6ICdhci1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQXJnZW50aW5hJywgaXNvM0NvZGU6ICdBUkcnLCBpc28yQ29kZTogJ0FSJywgZGF0YXNldENvZGU6ICdhci1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FybWVuaWEnLCBpc28zQ29kZTogJ0FSTScsIGlzbzJDb2RlOiAnQU0nLCBkYXRhc2V0Q29kZTogJ2FtLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdBcm1lbmlhJywgaXNvM0NvZGU6ICdBUk0nLCBpc28yQ29kZTogJ0FNJywgZGF0YXNldENvZGU6ICdhbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FydWJhJywgaXNvM0NvZGU6ICdBQlcnLCBpc28yQ29kZTogJ0FXJywgZGF0YXNldENvZGU6ICdhdy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQXJ1YmEnLCBpc28zQ29kZTogJ0FCVycsIGlzbzJDb2RlOiAnQVcnLCBkYXRhc2V0Q29kZTogJ2F3LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQXVzdHJhbGlhIERhdGFGdXNpb24nLCBpc28zQ29kZTogJ0FVUycsIGlzbzJDb2RlOiAnQVUnLCBkYXRhc2V0Q29kZTogJ2F1LWFkZHJlc3MtZGF0YWZ1c2lvbicsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duJ30sXG4gIHtjb3VudHJ5OiAnQXVzdHJhbGlhIEdlb2NvZGVkIE5hdGlvbmFsIEFkZHJlc3MnLCBpc28zQ29kZTogJ0FVUycsIGlzbzJDb2RlOiAnQVUnLCBkYXRhc2V0Q29kZTogJ2F1LWFkZHJlc3MtZ25hZicsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0F1c3RyYWxpYSBQb3N0YWwgQWRkcmVzcycsIGlzbzNDb2RlOiAnQVVTJywgaXNvMkNvZGU6ICdBVScsIGRhdGFzZXRDb2RlOiAnYXUtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0F1c3RyaWEnLCBpc28zQ29kZTogJ0FVVCcsIGlzbzJDb2RlOiAnQVQnLCBkYXRhc2V0Q29kZTogJ2F0LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQXVzdHJpYScsIGlzbzNDb2RlOiAnQVVUJywgaXNvMkNvZGU6ICdBVCcsIGRhdGFzZXRDb2RlOiAnYXotYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0F6ZXJiYWlqYW4nLCBpc28zQ29kZTogJ0FaRScsIGlzbzJDb2RlOiAnQVonLCBkYXRhc2V0Q29kZTogJ2F6LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdBemVyYmFpamFuJywgaXNvM0NvZGU6ICdBWkUnLCBpc28yQ29kZTogJ0FaJywgZGF0YXNldENvZGU6ICdhei1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0JhaGFtYXMnLCBpc28zQ29kZTogJ0JIUycsIGlzbzJDb2RlOiAnQlMnLCBkYXRhc2V0Q29kZTogJ2JzLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCYWhhbWFzJywgaXNvM0NvZGU6ICdCSFMnLCBpc28yQ29kZTogJ0JTJywgZGF0YXNldENvZGU6ICdicy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0JhaHJhaW4nLCBpc28zQ29kZTogJ0JIUicsIGlzbzJDb2RlOiAnQkgnLCBkYXRhc2V0Q29kZTogJ2JoLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCYWhyYWluJywgaXNvM0NvZGU6ICdCSFInLCBpc28yQ29kZTogJ0JIJywgZGF0YXNldENvZGU6ICdiaC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0JhbmdsYWRlc2gnLCBpc28zQ29kZTogJ0JHRCcsIGlzbzJDb2RlOiAnQkQnLCBkYXRhc2V0Q29kZTogJ2JkLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCYW5nbGFkZXNoJywgaXNvM0NvZGU6ICdCR0QnLCBpc28yQ29kZTogJ0JEJywgZGF0YXNldENvZGU6ICdiZC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0JhcmJhZG9zJywgaXNvM0NvZGU6ICdCUkInLCBpc28yQ29kZTogJ0JCJywgZGF0YXNldENvZGU6ICdiYi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQmFyYmFkb3MnLCBpc28zQ29kZTogJ0JSQicsIGlzbzJDb2RlOiAnQkInLCBkYXRhc2V0Q29kZTogJ2JiLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQmVsYXJ1cycsIGlzbzNDb2RlOiAnQkxSJywgaXNvMkNvZGU6ICdCWScsIGRhdGFzZXRDb2RlOiAnYnktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0JlbGFydXMnLCBpc28zQ29kZTogJ0JMUicsIGlzbzJDb2RlOiAnQlknLCBkYXRhc2V0Q29kZTogJ2J5LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQmVsZ2l1bScsIGlzbzNDb2RlOiAnQkVMJywgaXNvMkNvZGU6ICdCRScsIGRhdGFzZXRDb2RlOiAnYmUtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93bid9LFxuICB7Y291bnRyeTogJ0JlbGdpdW0nLCBpc28zQ29kZTogJ0JFTCcsIGlzbzJDb2RlOiAnQkUnLCBkYXRhc2V0Q29kZTogJ2JlLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQmVsZ2l1bScsIGlzbzNDb2RlOiAnQkVMJywgaXNvMkNvZGU6ICdCRScsIGRhdGFzZXRDb2RlOiAnYmUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCZWxpemUnLCBpc28zQ29kZTogJ0JMWicsIGlzbzJDb2RlOiAnQlonLCBkYXRhc2V0Q29kZTogJ2J6LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCZWxpemUnLCBpc28zQ29kZTogJ0JMWicsIGlzbzJDb2RlOiAnQlonLCBkYXRhc2V0Q29kZTogJ2J6LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQmVuaW4nLCBpc28zQ29kZTogJ0JFTicsIGlzbzJDb2RlOiAnQkonLCBkYXRhc2V0Q29kZTogJ2JqLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCZW5pbicsIGlzbzNDb2RlOiAnQkVOJywgaXNvMkNvZGU6ICdCSicsIGRhdGFzZXRDb2RlOiAnYmotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCZXJtdWRhJywgaXNvM0NvZGU6ICdCTVUnLCBpc28yQ29kZTogJ0JNJywgZGF0YXNldENvZGU6ICdibS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQmVybXVkYScsIGlzbzNDb2RlOiAnQk1VJywgaXNvMkNvZGU6ICdCTScsIGRhdGFzZXRDb2RlOiAnYm0tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCaHV0YW4nLCBpc28zQ29kZTogJ0JUTicsIGlzbzJDb2RlOiAnQlQnLCBkYXRhc2V0Q29kZTogJ2J0LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCaHV0YW4nLCBpc28zQ29kZTogJ0JUTicsIGlzbzJDb2RlOiAnQlQnLCBkYXRhc2V0Q29kZTogJ2J0LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQm9saXZpYScsIGlzbzNDb2RlOiAnQk9MJywgaXNvMkNvZGU6ICdCTycsIGRhdGFzZXRDb2RlOiAnYm8tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0JvbGl2aWEnLCBpc28zQ29kZTogJ0JPTCcsIGlzbzJDb2RlOiAnQk8nLCBkYXRhc2V0Q29kZTogJ2JvLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQm9uYWlyZSwgU2ludCBFdXN0YXRpdXMgYW5kIFNhYmEnLCBpc28zQ29kZTogJ0JFUycsIGlzbzJDb2RlOiAnQlEnLCBkYXRhc2V0Q29kZTogJ2JxLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCb25haXJlLCBTaW50IEV1c3RhdGl1cyBhbmQgU2FiYScsIGlzbzNDb2RlOiAnQkVTJywgaXNvMkNvZGU6ICdCUScsIGRhdGFzZXRDb2RlOiAnYnEtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCb3NuaWEgYW5kIEhlcnplZ292aW5hJywgaXNvM0NvZGU6ICdCSUgnLCBpc28yQ29kZTogJ0JBJywgZGF0YXNldENvZGU6ICdiYS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYScsIGlzbzNDb2RlOiAnQklIJywgaXNvMkNvZGU6ICdCQScsIGRhdGFzZXRDb2RlOiAnYmEtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCb3Rzd2FuYScsIGlzbzNDb2RlOiAnQldBJywgaXNvMkNvZGU6ICdCVycsIGRhdGFzZXRDb2RlOiAnYnctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0JvdHN3YW5hJywgaXNvM0NvZGU6ICdCV0EnLCBpc28yQ29kZTogJ0JXJywgZGF0YXNldENvZGU6ICdidy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0JyYXppbCcsIGlzbzNDb2RlOiAnQlJBJywgaXNvMkNvZGU6ICdCUicsIGRhdGFzZXRDb2RlOiAnYnItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0JyYXppbCcsIGlzbzNDb2RlOiAnQlJBJywgaXNvMkNvZGU6ICdCUicsIGRhdGFzZXRDb2RlOiAnYnItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCcnVuZWkgRGFydXNzYWxhbScsIGlzbzNDb2RlOiAnQlJOJywgaXNvMkNvZGU6ICdCTicsIGRhdGFzZXRDb2RlOiAnYm4tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0JydW5laSBEYXJ1c3NhbGFtJywgaXNvM0NvZGU6ICdCUk4nLCBpc28yQ29kZTogJ0JOJywgZGF0YXNldENvZGU6ICdibi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0J1bGdhcmlhJywgaXNvM0NvZGU6ICdCR1InLCBpc28yQ29kZTogJ0JHJywgZGF0YXNldENvZGU6ICdiZy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQnVsZ2FyaWEnLCBpc28zQ29kZTogJ0JHUicsIGlzbzJDb2RlOiAnQkcnLCBkYXRhc2V0Q29kZTogJ2JnLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQnVya2luYSBGYXNvJywgaXNvM0NvZGU6ICdCRkEnLCBpc28yQ29kZTogJ0JGJywgZGF0YXNldENvZGU6ICdiZi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQnVya2luYSBGYXNvJywgaXNvM0NvZGU6ICdCRkEnLCBpc28yQ29kZTogJ0JGJywgZGF0YXNldENvZGU6ICdiZi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0J1cnVuZGknLCBpc28zQ29kZTogJ0JESScsIGlzbzJDb2RlOiAnQkknLCBkYXRhc2V0Q29kZTogJ2JpLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2FtYm9kaWEnLCBpc28zQ29kZTogJ0tITScsIGlzbzJDb2RlOiAnS0gnLCBkYXRhc2V0Q29kZTogJ2toLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDYW1ib2RpYScsIGlzbzNDb2RlOiAnS0hNJywgaXNvMkNvZGU6ICdLSCcsIGRhdGFzZXRDb2RlOiAna2gtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdDYW1lcm9vbicsIGlzbzNDb2RlOiAnQ01SJywgaXNvMkNvZGU6ICdDTScsIGRhdGFzZXRDb2RlOiAnY20tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0NhbWVyb29uJywgaXNvM0NvZGU6ICdDTVInLCBpc28yQ29kZTogJ0NNJywgZGF0YXNldENvZGU6ICdjbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NhbmFkYScsIGlzbzNDb2RlOiAnQ0FOJywgaXNvMkNvZGU6ICdDQScsIGRhdGFzZXRDb2RlOiAnY2EtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0NhcGUgVmVyZGUnLCBpc28zQ29kZTogJ0NQVicsIGlzbzJDb2RlOiAnQ1YnLCBkYXRhc2V0Q29kZTogJ2N2LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDYXBlIFZlcmRlJywgaXNvM0NvZGU6ICdDUFYnLCBpc28yQ29kZTogJ0NWJywgZGF0YXNldENvZGU6ICdjdi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NheW1hbiBJc2xhbmRzJywgaXNvM0NvZGU6ICdDWU0nLCBpc28yQ29kZTogJ0tZJywgZGF0YXNldENvZGU6ICdreS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2F5bWFuIElzbGFuZHMnLCBpc28zQ29kZTogJ0NZTScsIGlzbzJDb2RlOiAnS1knLCBkYXRhc2V0Q29kZTogJ2t5LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJywgaXNvM0NvZGU6ICdDQUYnLCBpc28yQ29kZTogJ0NGJywgZGF0YXNldENvZGU6ICdjZi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJywgaXNvM0NvZGU6ICdDQUYnLCBpc28yQ29kZTogJ0NGJywgZGF0YXNldENvZGU6ICdjZi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NoYWQnLCBpc28zQ29kZTogJ1RDRCcsIGlzbzJDb2RlOiAnVEQnLCBkYXRhc2V0Q29kZTogJ3RkLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDaGFkJywgaXNvM0NvZGU6ICdUQ0QnLCBpc28yQ29kZTogJ1REJywgZGF0YXNldENvZGU6ICd0ZC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NoaWxlJywgaXNvM0NvZGU6ICdDSEwnLCBpc28yQ29kZTogJ0NMJywgZGF0YXNldENvZGU6ICdjbC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2hpbGUnLCBpc28zQ29kZTogJ0NITCcsIGlzbzJDb2RlOiAnQ0wnLCBkYXRhc2V0Q29kZTogJ2NsLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2hpbmEnLCBpc28zQ29kZTogJ0NITicsIGlzbzJDb2RlOiAnQ04nLCBkYXRhc2V0Q29kZTogJ2NuLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDaGluYScsIGlzbzNDb2RlOiAnQ0hOJywgaXNvMkNvZGU6ICdDTicsIGRhdGFzZXRDb2RlOiAnY24tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdDaHJpc3RtYXMgSXNsYW5kJywgaXNvM0NvZGU6ICdDWFInLCBpc28yQ29kZTogJ0NYJywgZGF0YXNldENvZGU6ICdjeC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NvY29zIElzbGFuZCcsIGlzbzNDb2RlOiAnQ0NLJywgaXNvMkNvZGU6ICdDQycsIGRhdGFzZXRDb2RlOiAnY2MtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdDb2xvbWJpYScsIGlzbzNDb2RlOiAnQ09MJywgaXNvMkNvZGU6ICdDTycsIGRhdGFzZXRDb2RlOiAnY28tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0NvbG9tYmlhJywgaXNvM0NvZGU6ICdDT0wnLCBpc28yQ29kZTogJ0NPJywgZGF0YXNldENvZGU6ICdjby1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NvbW9yb3MnLCBpc28zQ29kZTogJ0NPTScsIGlzbzJDb2RlOiAnS00nLCBkYXRhc2V0Q29kZTogJ2ttLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDb21vcm9zJywgaXNvM0NvZGU6ICdDT00nLCBpc28yQ29kZTogJ0tNJywgZGF0YXNldENvZGU6ICdrbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NvbmdvJywgaXNvM0NvZGU6ICdDT0cnLCBpc28yQ29kZTogJ0NHJywgZGF0YXNldENvZGU6ICdjZy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ29uZ28nLCBpc28zQ29kZTogJ0NPRycsIGlzbzJDb2RlOiAnQ0cnLCBkYXRhc2V0Q29kZTogJ2NnLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ29uZ28sIFRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZScsIGlzbzNDb2RlOiAnQ09EJywgaXNvMkNvZGU6ICdDRCcsIGRhdGFzZXRDb2RlOiAnY2QtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0NvbmdvLCBUaGUgRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUnLCBpc28zQ29kZTogJ0NPRCcsIGlzbzJDb2RlOiAnQ0QnLCBkYXRhc2V0Q29kZTogJ2NkLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ29vayBJc2xhbmRzJywgaXNvM0NvZGU6ICdDT0snLCBpc28yQ29kZTogJ0NLJywgZGF0YXNldENvZGU6ICdjay1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ29vayBJc2xhbmRzJywgaXNvM0NvZGU6ICdDT0snLCBpc28yQ29kZTogJ0NLJywgZGF0YXNldENvZGU6ICdjay1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0Nvc3RhIFJpY2EnLCBpc28zQ29kZTogJ0NSSScsIGlzbzJDb2RlOiAnQ1InLCBkYXRhc2V0Q29kZTogJ2NyLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDb3N0YSBSaWNhJywgaXNvM0NvZGU6ICdDUkknLCBpc28yQ29kZTogJ0NSJywgZGF0YXNldENvZGU6ICdjci1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0Nyb2F0aWEnLCBpc28zQ29kZTogJ0hSVicsIGlzbzJDb2RlOiAnSFInLCBkYXRhc2V0Q29kZTogJ2hyLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDcm9hdGlhJywgaXNvM0NvZGU6ICdIUlYnLCBpc28yQ29kZTogJ0hSJywgZGF0YXNldENvZGU6ICdoci1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0N1YmEnLCBpc28zQ29kZTogJ0NVQicsIGlzbzJDb2RlOiAnQ1UnLCBkYXRhc2V0Q29kZTogJ2N1LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDdWJhJywgaXNvM0NvZGU6ICdDVUInLCBpc28yQ29kZTogJ0NVJywgZGF0YXNldENvZGU6ICdjdS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0N1cmHDp2FvJywgaXNvM0NvZGU6ICdDVVcnLCBpc28yQ29kZTogJ0NXJywgZGF0YXNldENvZGU6ICdjdy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ3VyYcOnYW8nLCBpc28zQ29kZTogJ0NVVycsIGlzbzJDb2RlOiAnQ1cnLCBkYXRhc2V0Q29kZTogJ2N3LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ3lwcnVzJywgaXNvM0NvZGU6ICdDWVAnLCBpc28yQ29kZTogJ0NZJywgZGF0YXNldENvZGU6ICdjeS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ3lwcnVzJywgaXNvM0NvZGU6ICdDWVAnLCBpc28yQ29kZTogJ0NZJywgZGF0YXNldENvZGU6ICdjeS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0N6ZWNoIFJlcHVibGljJywgaXNvM0NvZGU6ICdDWkUnLCBpc28yQ29kZTogJ0NaJywgZGF0YXNldENvZGU6ICdjei1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ3plY2ggUmVwdWJsaWMnLCBpc28zQ29kZTogJ0NaRScsIGlzbzJDb2RlOiAnQ1onLCBkYXRhc2V0Q29kZTogJ2N6LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ8O0dGUgZFxcJ0l2b2lyZScsIGlzbzNDb2RlOiAnQ0lWJywgaXNvMkNvZGU6ICdDSScsIGRhdGFzZXRDb2RlOiAnY2ktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0PDtHRlIGRcXCdJdm9pcmUnLCBpc28zQ29kZTogJ0NJVicsIGlzbzJDb2RlOiAnQ0knLCBkYXRhc2V0Q29kZTogJ2NpLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnRGVubWFyaycsIGlzbzNDb2RlOiAnRE5LJywgaXNvMkNvZGU6ICdESycsIGRhdGFzZXRDb2RlOiAnZGstYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0Rlbm1hcmsnLCBpc28zQ29kZTogJ0ROSycsIGlzbzJDb2RlOiAnREsnLCBkYXRhc2V0Q29kZTogJ2RrLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnRGppYm91dGknLCBpc28zQ29kZTogJ0RKSScsIGlzbzJDb2RlOiAnREonLCBkYXRhc2V0Q29kZTogJ2RqLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdEamlib3V0aScsIGlzbzNDb2RlOiAnREpJJywgaXNvMkNvZGU6ICdESicsIGRhdGFzZXRDb2RlOiAnZGotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdEb21pbmljYScsIGlzbzNDb2RlOiAnRE1BJywgaXNvMkNvZGU6ICdETScsIGRhdGFzZXRDb2RlOiAnZG0tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0RvbWluaWNhJywgaXNvM0NvZGU6ICdETUEnLCBpc28yQ29kZTogJ0RNJywgZGF0YXNldENvZGU6ICdkbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0RvbWluaWNhbiBSZXB1YmxpYycsIGlzbzNDb2RlOiAnRE9NJywgaXNvMkNvZGU6ICdETycsIGRhdGFzZXRDb2RlOiAnZG8tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0RvbWluaWNhbiBSZXB1YmxpYycsIGlzbzNDb2RlOiAnRE9NJywgaXNvMkNvZGU6ICdETycsIGRhdGFzZXRDb2RlOiAnZG8tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdFY3VhZG9yJywgaXNvM0NvZGU6ICdFQ1UnLCBpc28yQ29kZTogJ0VDJywgZGF0YXNldENvZGU6ICdlYy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRWN1YWRvcicsIGlzbzNDb2RlOiAnRUNVJywgaXNvMkNvZGU6ICdFQycsIGRhdGFzZXRDb2RlOiAnZWMtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdFZ3lwdCcsIGlzbzNDb2RlOiAnRUdZJywgaXNvMkNvZGU6ICdFRycsIGRhdGFzZXRDb2RlOiAnZWctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0VneXB0JywgaXNvM0NvZGU6ICdFR1knLCBpc28yQ29kZTogJ0VHJywgZGF0YXNldENvZGU6ICdlZy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0VsIFNhbHZhZG9yJywgaXNvM0NvZGU6ICdTTFYnLCBpc28yQ29kZTogJ1NWJywgZGF0YXNldENvZGU6ICdzdi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRWwgU2FsdmFkb3InLCBpc28zQ29kZTogJ1NMVicsIGlzbzJDb2RlOiAnU1YnLCBkYXRhc2V0Q29kZTogJ3N2LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnRXF1YXRvcmlhbCBHdWluZWEnLCBpc28zQ29kZTogJ0dOUScsIGlzbzJDb2RlOiAnR1EnLCBkYXRhc2V0Q29kZTogJ2dxLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdFcXVhdG9yaWFsIEd1aW5lYScsIGlzbzNDb2RlOiAnR05RJywgaXNvMkNvZGU6ICdHUScsIGRhdGFzZXRDb2RlOiAnZ3EtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdFcml0cmVhJywgaXNvM0NvZGU6ICdFUkknLCBpc28yQ29kZTogJ0VSJywgZGF0YXNldENvZGU6ICdlci1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRXJpdHJlYScsIGlzbzNDb2RlOiAnRVJJJywgaXNvMkNvZGU6ICdFUicsIGRhdGFzZXRDb2RlOiAnZXItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdFc3RvbmlhJywgaXNvM0NvZGU6ICdFU1QnLCBpc28yQ29kZTogJ0VFJywgZGF0YXNldENvZGU6ICdlZS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRXN0b25pYScsIGlzbzNDb2RlOiAnRVNUJywgaXNvMkNvZGU6ICdFRScsIGRhdGFzZXRDb2RlOiAnZWUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdFdGhpb3BpYScsIGlzbzNDb2RlOiAnRVRIJywgaXNvMkNvZGU6ICdFVCcsIGRhdGFzZXRDb2RlOiAnZXQtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0V0aGlvcGlhJywgaXNvM0NvZGU6ICdFVEgnLCBpc28yQ29kZTogJ0VUJywgZGF0YXNldENvZGU6ICdldC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0ZhbGtsYW5kIElzbGFuZHMgKE1hbHZpbmFzKScsIGlzbzNDb2RlOiAnRkxLJywgaXNvMkNvZGU6ICdGSycsIGRhdGFzZXRDb2RlOiAnZmstYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdGYXJvZSBJc2xhbmRzJywgaXNvM0NvZGU6ICdGUk8nLCBpc28yQ29kZTogJ0ZPJywgZGF0YXNldENvZGU6ICdmby1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRmFyb2UgSXNsYW5kcycsIGlzbzNDb2RlOiAnRlJPJywgaXNvMkNvZGU6ICdGTycsIGRhdGFzZXRDb2RlOiAnZm8tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdGaWppJywgaXNvM0NvZGU6ICdGSkknLCBpc28yQ29kZTogJ0ZKJywgZGF0YXNldENvZGU6ICdmai1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRmlqaScsIGlzbzNDb2RlOiAnRkpJJywgaXNvMkNvZGU6ICdGSicsIGRhdGFzZXRDb2RlOiAnZmotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdGaW5sYW5kJywgaXNvM0NvZGU6ICdGSU4nLCBpc28yQ29kZTogJ0ZJJywgZGF0YXNldENvZGU6ICdmaS1hZGRyZXNzJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duJ30sXG4gIHtjb3VudHJ5OiAnRmlubGFuZCcsIGlzbzNDb2RlOiAnRklOJywgaXNvMkNvZGU6ICdGSScsIGRhdGFzZXRDb2RlOiAnZmktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICd2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0ZpbmxhbmQnLCBpc28zQ29kZTogJ0ZJTicsIGlzbzJDb2RlOiAnRkknLCBkYXRhc2V0Q29kZTogJ2ZpLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnRnJhbmNlIFN0cmVldCBMZXZlbCcsIGlzbzNDb2RlOiAnRlJBJywgaXNvMkNvZGU6ICdGUicsIGRhdGFzZXRDb2RlOiAnZnItYWRkcmVzcy1zdHJlZXRsZXZlbCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdGcmFuY2UgU3ViLVByZW1pc2VzIExldmVsJywgaXNvM0NvZGU6ICdGUkEnLCBpc28yQ29kZTogJ0ZSJywgZGF0YXNldENvZGU6ICdmci1hZGRpdGlvbmFsLWhleGFsaW5lMycsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duJ30sXG4gIHtjb3VudHJ5OiAnRnJhbmNlIFByZW1pc2VzIExldmVsJywgaXNvM0NvZGU6ICdGUkEnLCBpc28yQ29kZTogJ0ZSJywgZGF0YXNldENvZGU6ICdmci1hZGRyZXNzJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0ZyZW5jaCBHdWlhbmEnLCBpc28zQ29kZTogJ0dVRicsIGlzbzJDb2RlOiAnR0YnLCBkYXRhc2V0Q29kZTogJ2dmLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnRnJlbmNoIFBvbHluZXNpYScsIGlzbzNDb2RlOiAnUFlGJywgaXNvMkNvZGU6ICdQRicsIGRhdGFzZXRDb2RlOiAncGYtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHYWJvbicsIGlzbzNDb2RlOiAnR0FCJywgaXNvMkNvZGU6ICdHQScsIGRhdGFzZXRDb2RlOiAnZ2EtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0dhYm9uJywgaXNvM0NvZGU6ICdHQUInLCBpc28yQ29kZTogJ0dBJywgZGF0YXNldENvZGU6ICdnYS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0dhbWJpYScsIGlzbzNDb2RlOiAnR01CJywgaXNvMkNvZGU6ICdHTScsIGRhdGFzZXRDb2RlOiAnZ20tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0dhbWJpYScsIGlzbzNDb2RlOiAnR01CJywgaXNvMkNvZGU6ICdHTScsIGRhdGFzZXRDb2RlOiAnZ20tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHZW9yZ2lhJywgaXNvM0NvZGU6ICdHRU8nLCBpc28yQ29kZTogJ0dFJywgZGF0YXNldENvZGU6ICdnZS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnR2VvcmdpYScsIGlzbzNDb2RlOiAnR0VPJywgaXNvMkNvZGU6ICdHRScsIGRhdGFzZXRDb2RlOiAnZ2UtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHZXJtYW55JywgaXNvM0NvZGU6ICdERVUnLCBpc28yQ29kZTogJ0RFJywgZGF0YXNldENvZGU6ICdkZS1hZGRyZXNzJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0dlcm1hbnknLCBpc28zQ29kZTogJ0RFVScsIGlzbzJDb2RlOiAnREUnLCBkYXRhc2V0Q29kZTogJ2RlLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAndmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdHZXJtYW55JywgaXNvM0NvZGU6ICdERVUnLCBpc28yQ29kZTogJ0RFJywgZGF0YXNldENvZGU6ICdkZS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0doYW5hJywgaXNvM0NvZGU6ICdHSEEnLCBpc28yQ29kZTogJ0dIJywgZGF0YXNldENvZGU6ICdnaC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnR2hhbmEnLCBpc28zQ29kZTogJ0dIQScsIGlzbzJDb2RlOiAnR0gnLCBkYXRhc2V0Q29kZTogJ2doLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnR2licmFsdGFyJywgaXNvM0NvZGU6ICdHSUInLCBpc28yQ29kZTogJ0dJJywgZGF0YXNldENvZGU6ICdnaS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0dyZWVjZScsIGlzbzNDb2RlOiAnR1JDJywgaXNvMkNvZGU6ICdHUicsIGRhdGFzZXRDb2RlOiAnZ3ItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0dyZWVjZScsIGlzbzNDb2RlOiAnR1JDJywgaXNvMkNvZGU6ICdHUicsIGRhdGFzZXRDb2RlOiAnZ3ItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHcmVlbmxhbmQnLCBpc28zQ29kZTogJ0dSTCcsIGlzbzJDb2RlOiAnR0wnLCBkYXRhc2V0Q29kZTogJ2dsLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdHcmVlbmxhbmQnLCBpc28zQ29kZTogJ0dSTCcsIGlzbzJDb2RlOiAnR0wnLCBkYXRhc2V0Q29kZTogJ2dsLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnR3JlbmFkYScsIGlzbzNDb2RlOiAnR1JEJywgaXNvMkNvZGU6ICdHRCcsIGRhdGFzZXRDb2RlOiAnZ2QtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0dyZW5hZGEnLCBpc28zQ29kZTogJ0dSRCcsIGlzbzJDb2RlOiAnR0QnLCBkYXRhc2V0Q29kZTogJ2dkLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnR3VhZGVsb3VwZScsIGlzbzNDb2RlOiAnR0xQJywgaXNvMkNvZGU6ICdHUCcsIGRhdGFzZXRDb2RlOiAnZ3AtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHdWFtJywgaXNvM0NvZGU6ICdHVU0nLCBpc28yQ29kZTogJ0dVJywgZGF0YXNldENvZGU6ICdndS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0d1YXRlbWFsYScsIGlzbzNDb2RlOiAnR1RNJywgaXNvMkNvZGU6ICdHVCcsIGRhdGFzZXRDb2RlOiAnZ3QtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0d1YXRlbWFsYScsIGlzbzNDb2RlOiAnR1RNJywgaXNvMkNvZGU6ICdHVCcsIGRhdGFzZXRDb2RlOiAnZ3QtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHdWluZWEnLCBpc28zQ29kZTogJ0dJTicsIGlzbzJDb2RlOiAnR04nLCBkYXRhc2V0Q29kZTogJ2duLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdHdWluZWEnLCBpc28zQ29kZTogJ0dJTicsIGlzbzJDb2RlOiAnR04nLCBkYXRhc2V0Q29kZTogJ2duLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnR3VpbmVhLUJpc3NhdScsIGlzbzNDb2RlOiAnR05CJywgaXNvMkNvZGU6ICdHVycsIGRhdGFzZXRDb2RlOiAnZ3ctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0d1aW5lYS1CaXNzYXUnLCBpc28zQ29kZTogJ0dOQicsIGlzbzJDb2RlOiAnR1cnLCBkYXRhc2V0Q29kZTogJ2d3LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnR3V5YW5hJywgaXNvM0NvZGU6ICdHVVknLCBpc28yQ29kZTogJ0dZJywgZGF0YXNldENvZGU6ICdneS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnR3V5YW5hJywgaXNvM0NvZGU6ICdHVVknLCBpc28yQ29kZTogJ0dZJywgZGF0YXNldENvZGU6ICdneS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0hhaXRpJywgaXNvM0NvZGU6ICdIVEknLCBpc28yQ29kZTogJ0hUJywgZGF0YXNldENvZGU6ICdodC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnSGFpdGknLCBpc28zQ29kZTogJ0hUSScsIGlzbzJDb2RlOiAnSFQnLCBkYXRhc2V0Q29kZTogJ2h0LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSG9uZHVyYXMnLCBpc28zQ29kZTogJ0hORCcsIGlzbzJDb2RlOiAnSE4nLCBkYXRhc2V0Q29kZTogJ2huLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdIb25kdXJhcycsIGlzbzNDb2RlOiAnSE5EJywgaXNvMkNvZGU6ICdITicsIGRhdGFzZXRDb2RlOiAnaG4tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdIb25nIEtvbmcnLCBpc28zQ29kZTogJ0hLRycsIGlzbzJDb2RlOiAnSEsnLCBkYXRhc2V0Q29kZTogJ2hrLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdIb25nIEtvbmcnLCBpc28zQ29kZTogJ0hLRycsIGlzbzJDb2RlOiAnSEsnLCBkYXRhc2V0Q29kZTogJ2hrLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSHVuZ2FyeScsIGlzbzNDb2RlOiAnSFVOJywgaXNvMkNvZGU6ICdIVScsIGRhdGFzZXRDb2RlOiAnaHUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0h1bmdhcnknLCBpc28zQ29kZTogJ0hVTicsIGlzbzJDb2RlOiAnSFUnLCBkYXRhc2V0Q29kZTogJ2h1LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSWNlbGFuZCcsIGlzbzNDb2RlOiAnSVNMJywgaXNvMkNvZGU6ICdJUycsIGRhdGFzZXRDb2RlOiAnaXMtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0ljZWxhbmQnLCBpc28zQ29kZTogJ0lTTCcsIGlzbzJDb2RlOiAnSVMnLCBkYXRhc2V0Q29kZTogJ2lzLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSW5kaWEnLCBpc28zQ29kZTogJ0lORCcsIGlzbzJDb2RlOiAnSU4nLCBkYXRhc2V0Q29kZTogJ2luLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdJbmRpYScsIGlzbzNDb2RlOiAnSU5EJywgaXNvMkNvZGU6ICdJTicsIGRhdGFzZXRDb2RlOiAnaW4tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdJbmRvbmVzaWEnLCBpc28zQ29kZTogJ0lETicsIGlzbzJDb2RlOiAnSUQnLCBkYXRhc2V0Q29kZTogJ2lkLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdJbmRvbmVzaWEnLCBpc28zQ29kZTogJ0lETicsIGlzbzJDb2RlOiAnSUQnLCBkYXRhc2V0Q29kZTogJ2lkLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSXJhbiwgSXNsYW1pYyBSZXB1YmxpYyBvZicsIGlzbzNDb2RlOiAnSVJOJywgaXNvMkNvZGU6ICdJUicsIGRhdGFzZXRDb2RlOiAnaXItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0lyYW4sIElzbGFtaWMgUmVwdWJsaWMgb2YnLCBpc28zQ29kZTogJ0lSTicsIGlzbzJDb2RlOiAnSVInLCBkYXRhc2V0Q29kZTogJ2lyLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSXJhcScsIGlzbzNDb2RlOiAnSVJRJywgaXNvMkNvZGU6ICdJUScsIGRhdGFzZXRDb2RlOiAnaXEtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0lyYXEnLCBpc28zQ29kZTogJ0lSUScsIGlzbzJDb2RlOiAnSVEnLCBkYXRhc2V0Q29kZTogJ2lxLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSXJlbGFuZCcsIGlzbzNDb2RlOiAnSVJMJywgaXNvMkNvZGU6ICdJRScsIGRhdGFzZXRDb2RlOiAnaWUtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93bid9LFxuICB7Y291bnRyeTogJ0lyZWxhbmQnLCBpc28zQ29kZTogJ0lSTCcsIGlzbzJDb2RlOiAnSUUnLCBkYXRhc2V0Q29kZTogJ2llLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdJcmVsYW5kJywgaXNvM0NvZGU6ICdJUkwnLCBpc28yQ29kZTogJ0lFJywgZGF0YXNldENvZGU6ICdpZS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0lyZWxhbmQgRWlyY29kZScsIGlzbzNDb2RlOiAnSVJMJywgaXNvMkNvZGU6ICdJRScsIGRhdGFzZXRDb2RlOiAnaWUtYWRkaXRpb25hbC1laXJjb2RlJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0lyZWxhbmQgRUNBRCcsIGlzbzNDb2RlOiAnSVJMJywgaXNvMkNvZGU6ICdJRScsIGRhdGFzZXRDb2RlOiAnaWUtYWRkcmVzcy1lY2FkJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0lzcmFlbCcsIGlzbzNDb2RlOiAnSVNSJywgaXNvMkNvZGU6ICdJTCcsIGRhdGFzZXRDb2RlOiAnaWwtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0lzcmFlbCcsIGlzbzNDb2RlOiAnSVNSJywgaXNvMkNvZGU6ICdJTCcsIGRhdGFzZXRDb2RlOiAnaWwtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdJdGFseScsIGlzbzNDb2RlOiAnSVRBJywgaXNvMkNvZGU6ICdJVCcsIGRhdGFzZXRDb2RlOiAnaXQtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0l0YWx5JywgaXNvM0NvZGU6ICdJVEEnLCBpc28yQ29kZTogJ0lUJywgZGF0YXNldENvZGU6ICdpdC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0phbWFpY2EnLCBpc28zQ29kZTogJ0pBTScsIGlzbzJDb2RlOiAnSk0nLCBkYXRhc2V0Q29kZTogJ2ptLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdKYW1haWNhJywgaXNvM0NvZGU6ICdKQU0nLCBpc28yQ29kZTogJ0pNJywgZGF0YXNldENvZGU6ICdqbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0phcGFuJywgaXNvM0NvZGU6ICdKUE4nLCBpc28yQ29kZTogJ0pQJywgZGF0YXNldENvZGU6ICdqcC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnSmFwYW4nLCBpc28zQ29kZTogJ0pQTicsIGlzbzJDb2RlOiAnSlAnLCBkYXRhc2V0Q29kZTogJ2pwLWFkZHJlc3MnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdKb3JkYW4nLCBpc28zQ29kZTogJ0pPUicsIGlzbzJDb2RlOiAnSk8nLCBkYXRhc2V0Q29kZTogJ2pvLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdKb3JkYW4nLCBpc28zQ29kZTogJ0pPUicsIGlzbzJDb2RlOiAnSk8nLCBkYXRhc2V0Q29kZTogJ2pvLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnS2F6YWtoc3RhbicsIGlzbzNDb2RlOiAnS0FaJywgaXNvMkNvZGU6ICdLWicsIGRhdGFzZXRDb2RlOiAna3otYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0themFraHN0YW4nLCBpc28zQ29kZTogJ0tBWicsIGlzbzJDb2RlOiAnS1onLCBkYXRhc2V0Q29kZTogJ2t6LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnS2VueWEnLCBpc28zQ29kZTogJ0tFTicsIGlzbzJDb2RlOiAnS0UnLCBkYXRhc2V0Q29kZTogJ2tlLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdLZW55YScsIGlzbzNDb2RlOiAnS0VOJywgaXNvMkNvZGU6ICdLRScsIGRhdGFzZXRDb2RlOiAna2UtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdLaXJpYmF0aScsIGlzbzNDb2RlOiAnS0lSJywgaXNvMkNvZGU6ICdLSScsIGRhdGFzZXRDb2RlOiAna2ktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0tpcmliYXRpJywgaXNvM0NvZGU6ICdLSVInLCBpc28yQ29kZTogJ0tJJywgZGF0YXNldENvZGU6ICdraS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0tvcmVhLCBEZW1vY3JhdGljIFBlb3BsZVxcJ3MgUmVwdWJsaWMgb2YnLCBpc28zQ29kZTogJ1BSSycsIGlzbzJDb2RlOiAnS1AnLCBkYXRhc2V0Q29kZTogJ2twLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdLb3JlYSwgRGVtb2NyYXRpYyBQZW9wbGVcXCdzIFJlcHVibGljIG9mJywgaXNvM0NvZGU6ICdQUksnLCBpc28yQ29kZTogJ0tQJywgZGF0YXNldENvZGU6ICdrcC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0tvcmVhLCBSZXB1YmxpYyBvZicsIGlzbzNDb2RlOiAnS09SJywgaXNvMkNvZGU6ICdLUicsIGRhdGFzZXRDb2RlOiAna3ItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0tvcmVhLCBSZXB1YmxpYyBvZicsIGlzbzNDb2RlOiAnS09SJywgaXNvMkNvZGU6ICdLUicsIGRhdGFzZXRDb2RlOiAna3ItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdLb3Nvdm8nLCBpc28zQ29kZTogJ0tPUycsIGlzbzJDb2RlOiAnWEsnLCBkYXRhc2V0Q29kZTogJ2t2LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnS3V3YWl0JywgaXNvM0NvZGU6ICdLV1QnLCBpc28yQ29kZTogJ0tXJywgZGF0YXNldENvZGU6ICdrdy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnS3V3YWl0JywgaXNvM0NvZGU6ICdLV1QnLCBpc28yQ29kZTogJ0tXJywgZGF0YXNldENvZGU6ICdrdy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0t5cmd5enN0YW4nLCBpc28zQ29kZTogJ0tHWicsIGlzbzJDb2RlOiAnS0cnLCBkYXRhc2V0Q29kZTogJ2tnLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdLeXJneXpzdGFuJywgaXNvM0NvZGU6ICdLR1onLCBpc28yQ29kZTogJ0tHJywgZGF0YXNldENvZGU6ICdrZy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0xhb3MnLCBpc28zQ29kZTogJ0xBTycsIGlzbzJDb2RlOiAnTEEnLCBkYXRhc2V0Q29kZTogJ2xhLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdMYW9zJywgaXNvM0NvZGU6ICdMQU8nLCBpc28yQ29kZTogJ0xBJywgZGF0YXNldENvZGU6ICdsYS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0xhdHZpYScsIGlzbzNDb2RlOiAnTFZBJywgaXNvMkNvZGU6ICdMVicsIGRhdGFzZXRDb2RlOiAnbHYtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0xhdHZpYScsIGlzbzNDb2RlOiAnTFZBJywgaXNvMkNvZGU6ICdMVicsIGRhdGFzZXRDb2RlOiAnbHYtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdMZWJhbm9uJywgaXNvM0NvZGU6ICdMQk4nLCBpc28yQ29kZTogJ0xCJywgZGF0YXNldENvZGU6ICdsYi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTGViYW5vbicsIGlzbzNDb2RlOiAnTEJOJywgaXNvMkNvZGU6ICdMQicsIGRhdGFzZXRDb2RlOiAnbGItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdMZXNvdGhvJywgaXNvM0NvZGU6ICdMU08nLCBpc28yQ29kZTogJ0xTJywgZGF0YXNldENvZGU6ICdscy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTGVzb3RobycsIGlzbzNDb2RlOiAnTFNPJywgaXNvMkNvZGU6ICdMUycsIGRhdGFzZXRDb2RlOiAnbHMtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdMaWJlcmlhJywgaXNvM0NvZGU6ICdMQlInLCBpc28yQ29kZTogJ0xSJywgZGF0YXNldENvZGU6ICdsci1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTGliZXJpYScsIGlzbzNDb2RlOiAnTEJSJywgaXNvMkNvZGU6ICdMUicsIGRhdGFzZXRDb2RlOiAnbHItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdMaWJ5YScsIGlzbzNDb2RlOiAnTEJZJywgaXNvMkNvZGU6ICdMWScsIGRhdGFzZXRDb2RlOiAnbHktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0xpYnlhJywgaXNvM0NvZGU6ICdMQlknLCBpc28yQ29kZTogJ0xZJywgZGF0YXNldENvZGU6ICdseS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0xpZWNodGVuc3RlaW4nLCBpc28zQ29kZTogJ0xJRScsIGlzbzJDb2RlOiAnTEknLCBkYXRhc2V0Q29kZTogJ2xpLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdMaWVjaHRlbnN0ZWluJywgaXNvM0NvZGU6ICdMSUUnLCBpc28yQ29kZTogJ0xJJywgZGF0YXNldENvZGU6ICdsaS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0xpdGh1YW5pYScsIGlzbzNDb2RlOiAnTFRVJywgaXNvMkNvZGU6ICdMVCcsIGRhdGFzZXRDb2RlOiAnbHQtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0xpdGh1YW5pYScsIGlzbzNDb2RlOiAnTFRVJywgaXNvMkNvZGU6ICdMVCcsIGRhdGFzZXRDb2RlOiAnbHQtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdMdXhlbWJvdXJnJywgaXNvM0NvZGU6ICdMVVgnLCBpc28yQ29kZTogJ0xVJywgZGF0YXNldENvZGU6ICdsdS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTHV4ZW1ib3VyZycsIGlzbzNDb2RlOiAnTFVYJywgaXNvMkNvZGU6ICdMVScsIGRhdGFzZXRDb2RlOiAnbHUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNYWNhdScsIGlzbzNDb2RlOiAnTUFDJywgaXNvMkNvZGU6ICdNTycsIGRhdGFzZXRDb2RlOiAnbHYtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01hY2F1JywgaXNvM0NvZGU6ICdNQUMnLCBpc28yQ29kZTogJ01PJywgZGF0YXNldENvZGU6ICdsdi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01hZGFnYXNjYXInLCBpc28zQ29kZTogJ01ERycsIGlzbzJDb2RlOiAnTUcnLCBkYXRhc2V0Q29kZTogJ21vLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdNYWRhZ2FzY2FyJywgaXNvM0NvZGU6ICdNREcnLCBpc28yQ29kZTogJ01HJywgZGF0YXNldENvZGU6ICdtby1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01hbGF3aScsIGlzbzNDb2RlOiAnTVdJJywgaXNvMkNvZGU6ICdNVycsIGRhdGFzZXRDb2RlOiAnbXctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01hbGF3aScsIGlzbzNDb2RlOiAnTVdJJywgaXNvMkNvZGU6ICdNVycsIGRhdGFzZXRDb2RlOiAnbXctYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNYWxheXNpYScsIGlzbzNDb2RlOiAnTVlTJywgaXNvMkNvZGU6ICdNWScsIGRhdGFzZXRDb2RlOiAnbXktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01hbGF5c2lhJywgaXNvM0NvZGU6ICdNWVMnLCBpc28yQ29kZTogJ01ZJywgZGF0YXNldENvZGU6ICdteS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01hbGRpdmVzJywgaXNvM0NvZGU6ICdNRFYnLCBpc28yQ29kZTogJ01WJywgZGF0YXNldENvZGU6ICdtdi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTWFsZGl2ZXMnLCBpc28zQ29kZTogJ01EVicsIGlzbzJDb2RlOiAnTVYnLCBkYXRhc2V0Q29kZTogJ212LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTWFsaScsIGlzbzNDb2RlOiAnTUxJJywgaXNvMkNvZGU6ICdNTCcsIGRhdGFzZXRDb2RlOiAnbWwtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01hbGknLCBpc28zQ29kZTogJ01MSScsIGlzbzJDb2RlOiAnTUwnLCBkYXRhc2V0Q29kZTogJ21sLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTWFsdGEnLCBpc28zQ29kZTogJ01MVCcsIGlzbzJDb2RlOiAnTVQnLCBkYXRhc2V0Q29kZTogJ210LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdNYWx0YScsIGlzbzNDb2RlOiAnTUxUJywgaXNvMkNvZGU6ICdNVCcsIGRhdGFzZXRDb2RlOiAnbXQtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNYXJzaGFsbCBJc2xhbmRzJywgaXNvM0NvZGU6ICdNSEwnLCBpc28yQ29kZTogJ01IJywgZGF0YXNldENvZGU6ICdtaC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01hcnRpbmlxdWUnLCBpc28zQ29kZTogJ01UUScsIGlzbzJDb2RlOiAnTVEnLCBkYXRhc2V0Q29kZTogJ21xLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTWF1cml0YW5pYScsIGlzbzNDb2RlOiAnTVJUJywgaXNvMkNvZGU6ICdNUicsIGRhdGFzZXRDb2RlOiAnbXItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01hdXJpdGFuaWEnLCBpc28zQ29kZTogJ01SVCcsIGlzbzJDb2RlOiAnTVInLCBkYXRhc2V0Q29kZTogJ21yLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTWF1cml0aXVzJywgaXNvM0NvZGU6ICdNVVMnLCBpc28yQ29kZTogJ01VJywgZGF0YXNldENvZGU6ICdtdS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTWF1cml0aXVzJywgaXNvM0NvZGU6ICdNVVMnLCBpc28yQ29kZTogJ01VJywgZGF0YXNldENvZGU6ICdtdS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01heW90dGUnLCBpc28zQ29kZTogJ01ZVCcsIGlzbzJDb2RlOiAnWVQnLCBkYXRhc2V0Q29kZTogJ3l0LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTWV4aWNvJywgaXNvM0NvZGU6ICdNRVgnLCBpc28yQ29kZTogJ01YJywgZGF0YXNldENvZGU6ICdteC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTWV4aWNvJywgaXNvM0NvZGU6ICdNRVgnLCBpc28yQ29kZTogJ01YJywgZGF0YXNldENvZGU6ICdteC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01pY3JvbmVzaWEsIEZlZGVyYXRlZCBTdGF0ZXMgb2YnLCBpc28zQ29kZTogJ0ZTTScsIGlzbzJDb2RlOiAnRk0nLCBkYXRhc2V0Q29kZTogJ2ZtLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9sZG92YScsIGlzbzNDb2RlOiAnTURBJywgaXNvMkNvZGU6ICdNRCcsIGRhdGFzZXRDb2RlOiAnbWQtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01vbGRvdmEnLCBpc28zQ29kZTogJ01EQScsIGlzbzJDb2RlOiAnTUQnLCBkYXRhc2V0Q29kZTogJ21kLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9uYWNvJywgaXNvM0NvZGU6ICdNQ08nLCBpc28yQ29kZTogJ01DJywgZGF0YXNldENvZGU6ICdtYy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9uYWNvJywgaXNvM0NvZGU6ICdNQ08nLCBpc28yQ29kZTogJ01DJywgZGF0YXNldENvZGU6ICdtYy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01vbmdvbGlhJywgaXNvM0NvZGU6ICdNTkcnLCBpc28yQ29kZTogJ01OJywgZGF0YXNldENvZGU6ICdtbi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9uZ29saWEnLCBpc28zQ29kZTogJ01ORycsIGlzbzJDb2RlOiAnTU4nLCBkYXRhc2V0Q29kZTogJ21uLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9udGVuZWdybycsIGlzbzNDb2RlOiAnTU5FJywgaXNvMkNvZGU6ICdNRScsIGRhdGFzZXRDb2RlOiAnbWUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01vbnRlbmVncm8nLCBpc28zQ29kZTogJ01ORScsIGlzbzJDb2RlOiAnTUUnLCBkYXRhc2V0Q29kZTogJ21lLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9udHNlcnJhdCcsIGlzbzNDb2RlOiAnTVNSJywgaXNvMkNvZGU6ICdNUycsIGRhdGFzZXRDb2RlOiAnbXMtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNb3JvY2NvJywgaXNvM0NvZGU6ICdNQVInLCBpc28yQ29kZTogJ01BJywgZGF0YXNldENvZGU6ICdtYS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9yb2NjbycsIGlzbzNDb2RlOiAnTUFSJywgaXNvMkNvZGU6ICdNQScsIGRhdGFzZXRDb2RlOiAnbWEtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNb3phbWJpcXVlJywgaXNvM0NvZGU6ICdNT1onLCBpc28yQ29kZTogJ01aJywgZGF0YXNldENvZGU6ICdtei1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTW96YW1iaXF1ZScsIGlzbzNDb2RlOiAnTU9aJywgaXNvMkNvZGU6ICdNWicsIGRhdGFzZXRDb2RlOiAnbXotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNeWFubWFyJywgaXNvM0NvZGU6ICdNTVInLCBpc28yQ29kZTogJ01NJywgZGF0YXNldENvZGU6ICdtbS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTXlhbm1hcicsIGlzbzNDb2RlOiAnTU1SJywgaXNvMkNvZGU6ICdNTScsIGRhdGFzZXRDb2RlOiAnbW0tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdOYW1pYmlhJywgaXNvM0NvZGU6ICdOQU0nLCBpc28yQ29kZTogJ05BJywgZGF0YXNldENvZGU6ICduYS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTmFtaWJpYScsIGlzbzNDb2RlOiAnTkFNJywgaXNvMkNvZGU6ICdOQScsIGRhdGFzZXRDb2RlOiAnbmEtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdOYXVydScsIGlzbzNDb2RlOiAnTlJVJywgaXNvMkNvZGU6ICdOUicsIGRhdGFzZXRDb2RlOiAnbnItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ05hdXJ1JywgaXNvM0NvZGU6ICdOUlUnLCBpc28yQ29kZTogJ05SJywgZGF0YXNldENvZGU6ICduci1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ05lcGFsJywgaXNvM0NvZGU6ICdOUEwnLCBpc28yQ29kZTogJ05QJywgZGF0YXNldENvZGU6ICducC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTmVwYWwnLCBpc28zQ29kZTogJ05QTCcsIGlzbzJDb2RlOiAnTlAnLCBkYXRhc2V0Q29kZTogJ25wLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTmV0aGVybGFuZHMnLCBpc28zQ29kZTogJ05MRCcsIGlzbzJDb2RlOiAnTkwnLCBkYXRhc2V0Q29kZTogJ25sLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdOZXRoZXJsYW5kcycsIGlzbzNDb2RlOiAnTkxEJywgaXNvMkNvZGU6ICdOTCcsIGRhdGFzZXRDb2RlOiAnbmwtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdOZXcgQ2FsZWRvbmlhJywgaXNvM0NvZGU6ICdOQ0wnLCBpc28yQ29kZTogJ05DJywgZGF0YXNldENvZGU6ICduYy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ05ldyBaZWFsYW5kIERhdGFGdXNpb24nLCBpc28zQ29kZTogJ05aTCcsIGlzbzJDb2RlOiAnTlonLCBkYXRhc2V0Q29kZTogJ256LWFkZGl0aW9uYWwtZGF0YWZ1c2lvbicsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ05ldyBaZWFsYW5kIFBvc3RhbCBBZGRyZXNzJywgaXNvM0NvZGU6ICdOWkwnLCBpc28yQ29kZTogJ05aJywgZGF0YXNldENvZGU6ICduei1hZGRyZXNzJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSwgc2luZ2xlbGluZSwgdHlwZWRvd24sIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTmljYXJhZ3VhJywgaXNvM0NvZGU6ICdOSUMnLCBpc28yQ29kZTogJ05JJywgZGF0YXNldENvZGU6ICduaS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTmljYXJhZ3VhJywgaXNvM0NvZGU6ICdOSUMnLCBpc28yQ29kZTogJ05JJywgZGF0YXNldENvZGU6ICduaS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ05pZ2VyJywgaXNvM0NvZGU6ICdORVInLCBpc28yQ29kZTogJ05FJywgZGF0YXNldENvZGU6ICduZS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTmlnZXInLCBpc28zQ29kZTogJ05FUicsIGlzbzJDb2RlOiAnTkUnLCBkYXRhc2V0Q29kZTogJ25lLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTmlnZXJpYScsIGlzbzNDb2RlOiAnTkdBJywgaXNvMkNvZGU6ICdORycsIGRhdGFzZXRDb2RlOiAnbmctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ05pZ2VyaWEnLCBpc28zQ29kZTogJ05HQScsIGlzbzJDb2RlOiAnTkcnLCBkYXRhc2V0Q29kZTogJ25nLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTml1ZScsIGlzbzNDb2RlOiAnTklVJywgaXNvMkNvZGU6ICdOVScsIGRhdGFzZXRDb2RlOiAnbnUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ05vcmZvbGsgSXNsYW5kJywgaXNvM0NvZGU6ICdORksnLCBpc28yQ29kZTogJ05GJywgZGF0YXNldENvZGU6ICduZi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTm9yZm9sayBJc2xhbmQnLCBpc28zQ29kZTogJ05GSycsIGlzbzJDb2RlOiAnTkYnLCBkYXRhc2V0Q29kZTogJ25mLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTm9ydGggTWFjZWRvbmlhJywgaXNvM0NvZGU6ICdNS0QnLCBpc28yQ29kZTogJ01LJywgZGF0YXNldENvZGU6ICdtay1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTm9ydGggTWFjZWRvbmlhJywgaXNvM0NvZGU6ICdNS0QnLCBpc28yQ29kZTogJ01LJywgZGF0YXNldENvZGU6ICdtay1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ05vcnRoZXJuIE1hcmlhbmEgSXNsYW5kcycsIGlzbzNDb2RlOiAnTU5QJywgaXNvMkNvZGU6ICdNUCcsIGRhdGFzZXRDb2RlOiAnbXAtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdOb3J3YXknLCBpc28zQ29kZTogJ05PUicsIGlzbzJDb2RlOiAnTk8nLCBkYXRhc2V0Q29kZTogJ25vLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAndmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdOb3J3YXknLCBpc28zQ29kZTogJ05PUicsIGlzbzJDb2RlOiAnTk8nLCBkYXRhc2V0Q29kZTogJ25vLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnT21hbicsIGlzbzNDb2RlOiAnT01OJywgaXNvMkNvZGU6ICdPTScsIGRhdGFzZXRDb2RlOiAnb20tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ09tYW4nLCBpc28zQ29kZTogJ09NTicsIGlzbzJDb2RlOiAnT00nLCBkYXRhc2V0Q29kZTogJ29tLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUGFraXN0YW4nLCBpc28zQ29kZTogJ1BBSycsIGlzbzJDb2RlOiAnUEsnLCBkYXRhc2V0Q29kZTogJ3BrLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdQYWtpc3RhbicsIGlzbzNDb2RlOiAnUEFLJywgaXNvMkNvZGU6ICdQSycsIGRhdGFzZXRDb2RlOiAncGstYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdQYWxhdScsIGlzbzNDb2RlOiAnUExXJywgaXNvMkNvZGU6ICdQVycsIGRhdGFzZXRDb2RlOiAncHctYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdQYWxlc3RpbmUnLCBpc28zQ29kZTogJ1BTRScsIGlzbzJDb2RlOiAnUFMnLCBkYXRhc2V0Q29kZTogJ3BzLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUGFuYW1hJywgaXNvM0NvZGU6ICdQQU4nLCBpc28yQ29kZTogJ1BBJywgZGF0YXNldENvZGU6ICdwYS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnUGFuYW1hJywgaXNvM0NvZGU6ICdQQU4nLCBpc28yQ29kZTogJ1BBJywgZGF0YXNldENvZGU6ICdwYS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1BhcHVhIE5ldyBHdWluZWEnLCBpc28zQ29kZTogJ1BORycsIGlzbzJDb2RlOiAnUEcnLCBkYXRhc2V0Q29kZTogJ3BnLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdQYXB1YSBOZXcgR3VpbmVhJywgaXNvM0NvZGU6ICdQTkcnLCBpc28yQ29kZTogJ1BHJywgZGF0YXNldENvZGU6ICdwZy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1BhcmFndWF5JywgaXNvM0NvZGU6ICdQUlknLCBpc28yQ29kZTogJ1BZJywgZGF0YXNldENvZGU6ICdweS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnUGFyYWd1YXknLCBpc28zQ29kZTogJ1BSWScsIGlzbzJDb2RlOiAnUFknLCBkYXRhc2V0Q29kZTogJ3B5LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUGVydScsIGlzbzNDb2RlOiAnUEVSJywgaXNvMkNvZGU6ICdQRScsIGRhdGFzZXRDb2RlOiAncGUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1BlcnUnLCBpc28zQ29kZTogJ1BFUicsIGlzbzJDb2RlOiAnUEUnLCBkYXRhc2V0Q29kZTogJ3BlLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUGhpbGlwcGluZXMnLCBpc28zQ29kZTogJ1BITCcsIGlzbzJDb2RlOiAnUEgnLCBkYXRhc2V0Q29kZTogJ3BoLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdQaGlsaXBwaW5lcycsIGlzbzNDb2RlOiAnUEhMJywgaXNvMkNvZGU6ICdQSCcsIGRhdGFzZXRDb2RlOiAncGgtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdQaXRjYWlybiBJc2xhbmRzJywgaXNvM0NvZGU6ICdQQ04nLCBpc28yQ29kZTogJ1BOJywgZGF0YXNldENvZGU6ICdwbi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1BvbGFuZCcsIGlzbzNDb2RlOiAnUE9MJywgaXNvMkNvZGU6ICdQTCcsIGRhdGFzZXRDb2RlOiAncGwtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1BvbGFuZCcsIGlzbzNDb2RlOiAnUE9MJywgaXNvMkNvZGU6ICdQTCcsIGRhdGFzZXRDb2RlOiAncGwtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdQb3J0dWdhbCcsIGlzbzNDb2RlOiAnUFJUJywgaXNvMkNvZGU6ICdQVCcsIGRhdGFzZXRDb2RlOiAncHQtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1BvcnR1Z2FsJywgaXNvM0NvZGU6ICdQUlQnLCBpc28yQ29kZTogJ1BUJywgZGF0YXNldENvZGU6ICdwdC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1FhdGFyJywgaXNvM0NvZGU6ICdRQVQnLCBpc28yQ29kZTogJ1FBJywgZGF0YXNldENvZGU6ICdxYS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnUWF0YXInLCBpc28zQ29kZTogJ1FBVCcsIGlzbzJDb2RlOiAnUUEnLCBkYXRhc2V0Q29kZTogJ3FhLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUm9tYW5pYScsIGlzbzNDb2RlOiAnUk9VJywgaXNvMkNvZGU6ICdSTycsIGRhdGFzZXRDb2RlOiAncm8tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1JvbWFuaWEnLCBpc28zQ29kZTogJ1JPVScsIGlzbzJDb2RlOiAnUk8nLCBkYXRhc2V0Q29kZTogJ3JvLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUnVzc2lhbiBGZWRlcmF0aW9uJywgaXNvM0NvZGU6ICdSVVMnLCBpc28yQ29kZTogJ1JVJywgZGF0YXNldENvZGU6ICdydS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnUnVzc2lhbiBGZWRlcmF0aW9uJywgaXNvM0NvZGU6ICdSVVMnLCBpc28yQ29kZTogJ1JVJywgZGF0YXNldENvZGU6ICdydS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1J3YW5kYScsIGlzbzNDb2RlOiAnUldBJywgaXNvMkNvZGU6ICdSVycsIGRhdGFzZXRDb2RlOiAncnctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1J3YW5kYScsIGlzbzNDb2RlOiAnUldBJywgaXNvMkNvZGU6ICdSVycsIGRhdGFzZXRDb2RlOiAncnctYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdSw6l1bmlvbicsIGlzbzNDb2RlOiAnUkVVJywgaXNvMkNvZGU6ICdSRScsIGRhdGFzZXRDb2RlOiAncmUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTYWludCBCYXJ0aMOpbGVteScsIGlzbzNDb2RlOiAnQkxNJywgaXNvMkNvZGU6ICdCTCcsIGRhdGFzZXRDb2RlOiAnYmwtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTYWludCBIZWxlbmEnLCBpc28zQ29kZTogJ1NITicsIGlzbzJDb2RlOiAnU0gnLCBkYXRhc2V0Q29kZTogJ3NoLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU2FpbnQgS2l0dHMgYW5kIE5ldmlzJywgaXNvM0NvZGU6ICdLTkEnLCBpc28yQ29kZTogJ0tOJywgZGF0YXNldENvZGU6ICdrbi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU2FpbnQgS2l0dHMgYW5kIE5ldmlzJywgaXNvM0NvZGU6ICdLTkEnLCBpc28yQ29kZTogJ0tOJywgZGF0YXNldENvZGU6ICdrbi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NhaW50IEx1Y2lhJywgaXNvM0NvZGU6ICdMQ0EnLCBpc28yQ29kZTogJ0xDJywgZGF0YXNldENvZGU6ICdsYy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NhaW50IFBpZXJyZSBhbmQgTWlxdWVsb24nLCBpc28zQ29kZTogJ1NQTScsIGlzbzJDb2RlOiAnUE0nLCBkYXRhc2V0Q29kZTogJ3BtLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXMnLCBpc28zQ29kZTogJ1ZDVCcsIGlzbzJDb2RlOiAnVkMnLCBkYXRhc2V0Q29kZTogJ3ZjLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcycsIGlzbzNDb2RlOiAnVkNUJywgaXNvMkNvZGU6ICdWQycsIGRhdGFzZXRDb2RlOiAndmMtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTYW1vYScsIGlzbzNDb2RlOiAnV1NNJywgaXNvMkNvZGU6ICdXUycsIGRhdGFzZXRDb2RlOiAnd3MtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1NhbW9hJywgaXNvM0NvZGU6ICdXU00nLCBpc28yQ29kZTogJ1dTJywgZGF0YXNldENvZGU6ICd3cy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NhbiBNYXJpbm8nLCBpc28zQ29kZTogJ1NNUicsIGlzbzJDb2RlOiAnU00nLCBkYXRhc2V0Q29kZTogJ3NtLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTYW4gTWFyaW5vJywgaXNvM0NvZGU6ICdTTVInLCBpc28yQ29kZTogJ1NNJywgZGF0YXNldENvZGU6ICdzbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NhbyBUb21lIGFuZCBQcmluY2lwZScsIGlzbzNDb2RlOiAnU1RQJywgaXNvMkNvZGU6ICdTVCcsIGRhdGFzZXRDb2RlOiAnc3QtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1NhbyBUb21lIGFuZCBQcmluY2lwZScsIGlzbzNDb2RlOiAnU1RQJywgaXNvMkNvZGU6ICdTVCcsIGRhdGFzZXRDb2RlOiAnc3QtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTYXVkaSBBcmFiaWEnLCBpc28zQ29kZTogJ1NBVScsIGlzbzJDb2RlOiAnU0EnLCBkYXRhc2V0Q29kZTogJ3NhLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTYXVkaSBBcmFiaWEnLCBpc28zQ29kZTogJ1NBVScsIGlzbzJDb2RlOiAnU0EnLCBkYXRhc2V0Q29kZTogJ3NhLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU2VuZWdhbCcsIGlzbzNDb2RlOiAnU0VOJywgaXNvMkNvZGU6ICdTTicsIGRhdGFzZXRDb2RlOiAnc24tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1NlbmVnYWwnLCBpc28zQ29kZTogJ1NFTicsIGlzbzJDb2RlOiAnU04nLCBkYXRhc2V0Q29kZTogJ3NuLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU2VyYmlhJywgaXNvM0NvZGU6ICdTUkInLCBpc28yQ29kZTogJ1JTJywgZGF0YXNldENvZGU6ICdycy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU2VyYmlhJywgaXNvM0NvZGU6ICdTUkInLCBpc28yQ29kZTogJ1JTJywgZGF0YXNldENvZGU6ICdycy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NleWNoZWxsZXMnLCBpc28zQ29kZTogJ1NZQycsIGlzbzJDb2RlOiAnU0MnLCBkYXRhc2V0Q29kZTogJ3NjLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTZXljaGVsbGVzJywgaXNvM0NvZGU6ICdTWUMnLCBpc28yQ29kZTogJ1NDJywgZGF0YXNldENvZGU6ICdzYy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NpZXJyYSBMZW9uZScsIGlzbzNDb2RlOiAnU0xFJywgaXNvMkNvZGU6ICdTTCcsIGRhdGFzZXRDb2RlOiAnc2wtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1NpZXJyYSBMZW9uZScsIGlzbzNDb2RlOiAnU0xFJywgaXNvMkNvZGU6ICdTTCcsIGRhdGFzZXRDb2RlOiAnc2wtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTaW5nYXBvcmUnLCBpc28zQ29kZTogJ1NHUCcsIGlzbzJDb2RlOiAnU0cnLCBkYXRhc2V0Q29kZTogJ3NnLWFkZHJlc3MnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlLCBzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTaW50IE1hYXJ0ZW4nLCBpc28zQ29kZTogJ1NYTScsIGlzbzJDb2RlOiAnU1gnLCBkYXRhc2V0Q29kZTogJ3N4LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTaW50IE1hYXJ0ZW4nLCBpc28zQ29kZTogJ1NYTScsIGlzbzJDb2RlOiAnU1gnLCBkYXRhc2V0Q29kZTogJ3N4LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU2xvdmFraWEnLCBpc28zQ29kZTogJ1NWSycsIGlzbzJDb2RlOiAnU0snLCBkYXRhc2V0Q29kZTogJ3NrLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTbG92YWtpYScsIGlzbzNDb2RlOiAnU1ZLJywgaXNvMkNvZGU6ICdTSycsIGRhdGFzZXRDb2RlOiAnc2stYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTbG92ZW5pYScsIGlzbzNDb2RlOiAnU1ZOJywgaXNvMkNvZGU6ICdTSScsIGRhdGFzZXRDb2RlOiAnc2ktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1Nsb3ZlbmlhJywgaXNvM0NvZGU6ICdTVk4nLCBpc28yQ29kZTogJ1NJJywgZGF0YXNldENvZGU6ICdzaS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NvbG9tb24gSXNsYW5kcycsIGlzbzNDb2RlOiAnU0xCJywgaXNvMkNvZGU6ICdTQicsIGRhdGFzZXRDb2RlOiAnc2ItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1NvbG9tb24gSXNsYW5kcycsIGlzbzNDb2RlOiAnU0xCJywgaXNvMkNvZGU6ICdTQicsIGRhdGFzZXRDb2RlOiAnc2ItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTb21hbGlhJywgaXNvM0NvZGU6ICdTT00nLCBpc28yQ29kZTogJ1NPJywgZGF0YXNldENvZGU6ICdzby1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU29tYWxpYScsIGlzbzNDb2RlOiAnU09NJywgaXNvMkNvZGU6ICdTTycsIGRhdGFzZXRDb2RlOiAnc28tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTb3V0aCBBZnJpY2EnLCBpc28zQ29kZTogJ1pBRicsIGlzbzJDb2RlOiAnWkEnLCBkYXRhc2V0Q29kZTogJ3phLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTb3V0aCBBZnJpY2EnLCBpc28zQ29kZTogJ1pBRicsIGlzbzJDb2RlOiAnWkEnLCBkYXRhc2V0Q29kZTogJ3phLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU291dGggR2VvcmdpYSBhbmQgdGhlIFNvdXRoIFNhbmR3aWNoIElzbGFuZHMnLCBpc28zQ29kZTogJ1NHUycsIGlzbzJDb2RlOiAnR1MnLCBkYXRhc2V0Q29kZTogJ2dzLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU291dGggU3VkYW4nLCBpc28zQ29kZTogJ1NTRCcsIGlzbzJDb2RlOiAnU1MnLCBkYXRhc2V0Q29kZTogJ3NzLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTb3V0aCBTdWRhbicsIGlzbzNDb2RlOiAnU1NEJywgaXNvMkNvZGU6ICdTUycsIGRhdGFzZXRDb2RlOiAnc3MtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTcGFpbicsIGlzbzNDb2RlOiAnRVNQJywgaXNvMkNvZGU6ICdFUycsIGRhdGFzZXRDb2RlOiAnZXMtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93bid9LFxuICB7Y291bnRyeTogJ1NwYWluJywgaXNvM0NvZGU6ICdFU1AnLCBpc28yQ29kZTogJ0VTJywgZGF0YXNldENvZGU6ICdlcy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3ZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU3BhaW4nLCBpc28zQ29kZTogJ0VTUCcsIGlzbzJDb2RlOiAnRVMnLCBkYXRhc2V0Q29kZTogJ2VzLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU3JpIExhbmthJywgaXNvM0NvZGU6ICdMS0EnLCBpc28yQ29kZTogJ0xLJywgZGF0YXNldENvZGU6ICdsay1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU3VkYW4nLCBpc28zQ29kZTogJ1NETicsIGlzbzJDb2RlOiAnU0QnLCBkYXRhc2V0Q29kZTogJ3NkLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTdWRhbicsIGlzbzNDb2RlOiAnU0ROJywgaXNvMkNvZGU6ICdTRCcsIGRhdGFzZXRDb2RlOiAnc2QtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTdXJpbmFtZScsIGlzbzNDb2RlOiAnU1VSJywgaXNvMkNvZGU6ICdTUicsIGRhdGFzZXRDb2RlOiAnc3ItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1N1cmluYW1lJywgaXNvM0NvZGU6ICdTVVInLCBpc28yQ29kZTogJ1NSJywgZGF0YXNldENvZGU6ICdzci1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1N2YWxiYXJkIGFuZCBKYW4gTWF5ZW4gSXNsYW5kcycsIGlzbzNDb2RlOiAnU0pNJywgaXNvMkNvZGU6ICdTSicsIGRhdGFzZXRDb2RlOiAnc2otYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTd2F6aWxhbmQgKEVzd2F0aW5pKScsIGlzbzNDb2RlOiAnU1daJywgaXNvMkNvZGU6ICdTWicsIGRhdGFzZXRDb2RlOiAnc3otYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1N3YXppbGFuZCAoRXN3YXRpbmkpJywgaXNvM0NvZGU6ICdTV1onLCBpc28yQ29kZTogJ1NaJywgZGF0YXNldENvZGU6ICdzei1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1N3ZWRlbicsIGlzbzNDb2RlOiAnU1dFJywgaXNvMkNvZGU6ICdTRScsIGRhdGFzZXRDb2RlOiAnc2UtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93bid9LFxuICB7Y291bnRyeTogJ1N3ZWRlbicsIGlzbzNDb2RlOiAnU1dFJywgaXNvMkNvZGU6ICdTRScsIGRhdGFzZXRDb2RlOiAnc2UtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICd2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1N3ZWRlbicsIGlzbzNDb2RlOiAnU1dFJywgaXNvMkNvZGU6ICdTRScsIGRhdGFzZXRDb2RlOiAnc2UtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTd2l0emVybGFuZCcsIGlzbzNDb2RlOiAnQ0hFJywgaXNvMkNvZGU6ICdDSCcsIGRhdGFzZXRDb2RlOiAnY2gtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93bid9LFxuICB7Y291bnRyeTogJ1N3aXR6ZXJsYW5kJywgaXNvM0NvZGU6ICdDSEUnLCBpc28yQ29kZTogJ0NIJywgZGF0YXNldENvZGU6ICdjaC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3ZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU3dpdHplcmxhbmQnLCBpc28zQ29kZTogJ0NIRScsIGlzbzJDb2RlOiAnQ0gnLCBkYXRhc2V0Q29kZTogJ2NoLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU3lyaWEnLCBpc28zQ29kZTogJ1NZUicsIGlzbzJDb2RlOiAnU1knLCBkYXRhc2V0Q29kZTogJ3N5LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTeXJpYScsIGlzbzNDb2RlOiAnU1lSJywgaXNvMkNvZGU6ICdTWScsIGRhdGFzZXRDb2RlOiAnc3ktYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUYWl3YW4nLCBpc28zQ29kZTogJ1RXTicsIGlzbzJDb2RlOiAnVFcnLCBkYXRhc2V0Q29kZTogJ3R3LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdUYWl3YW4nLCBpc28zQ29kZTogJ1RXTicsIGlzbzJDb2RlOiAnVFcnLCBkYXRhc2V0Q29kZTogJ3R3LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVGFqaWtpc3RhbicsIGlzbzNDb2RlOiAnVEpLJywgaXNvMkNvZGU6ICdUSicsIGRhdGFzZXRDb2RlOiAndGotYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1RhamlraXN0YW4nLCBpc28zQ29kZTogJ1RKSycsIGlzbzJDb2RlOiAnVEonLCBkYXRhc2V0Q29kZTogJ3RqLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVGFuemFuaWEnLCBpc28zQ29kZTogJ1RaQScsIGlzbzJDb2RlOiAnVFonLCBkYXRhc2V0Q29kZTogJ3R6LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdUYW56YW5pYScsIGlzbzNDb2RlOiAnVFpBJywgaXNvMkNvZGU6ICdUWicsIGRhdGFzZXRDb2RlOiAndHotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUaGFpbGFuZCcsIGlzbzNDb2RlOiAnVEhBJywgaXNvMkNvZGU6ICdUSCcsIGRhdGFzZXRDb2RlOiAndGgtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1RoYWlsYW5kJywgaXNvM0NvZGU6ICdUSEEnLCBpc28yQ29kZTogJ1RIJywgZGF0YXNldENvZGU6ICd0aC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1RpbW9yLUxlc3RlJywgaXNvM0NvZGU6ICdUTFMnLCBpc28yQ29kZTogJ1RMJywgZGF0YXNldENvZGU6ICd0bC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVGltb3ItTGVzdGUnLCBpc28zQ29kZTogJ1RMUycsIGlzbzJDb2RlOiAnVEwnLCBkYXRhc2V0Q29kZTogJ3RsLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVG9nbycsIGlzbzNDb2RlOiAnVEdPJywgaXNvMkNvZGU6ICdURycsIGRhdGFzZXRDb2RlOiAndGctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1RvZ28nLCBpc28zQ29kZTogJ1RHTycsIGlzbzJDb2RlOiAnVEcnLCBkYXRhc2V0Q29kZTogJ3RnLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVG9rZWxhdScsIGlzbzNDb2RlOiAnVEtMJywgaXNvMkNvZGU6ICdUSycsIGRhdGFzZXRDb2RlOiAndGstYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1Rva2VsYXUnLCBpc28zQ29kZTogJ1RLTCcsIGlzbzJDb2RlOiAnVEsnLCBkYXRhc2V0Q29kZTogJ3RrLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVG9uZ2EnLCBpc28zQ29kZTogJ1RPTicsIGlzbzJDb2RlOiAnVE8nLCBkYXRhc2V0Q29kZTogJ3RvLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdUb25nYScsIGlzbzNDb2RlOiAnVE9OJywgaXNvMkNvZGU6ICdUTycsIGRhdGFzZXRDb2RlOiAndG8tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUcmluaWRhZCBhbmQgVG9iYWdvJywgaXNvM0NvZGU6ICdUVE8nLCBpc28yQ29kZTogJ1RUJywgZGF0YXNldENvZGU6ICd0dC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVHJpbmlkYWQgYW5kIFRvYmFnbycsIGlzbzNDb2RlOiAnVFRPJywgaXNvMkNvZGU6ICdUVCcsIGRhdGFzZXRDb2RlOiAndHQtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUdW5pc2lhJywgaXNvM0NvZGU6ICdUVU4nLCBpc28yQ29kZTogJ1ROJywgZGF0YXNldENvZGU6ICd0bi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVHVuaXNpYScsIGlzbzNDb2RlOiAnVFVOJywgaXNvMkNvZGU6ICdUTicsIGRhdGFzZXRDb2RlOiAndG4tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUdXJrZXknLCBpc28zQ29kZTogJ1RVUicsIGlzbzJDb2RlOiAnVFInLCBkYXRhc2V0Q29kZTogJ3RyLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdUdXJrZXknLCBpc28zQ29kZTogJ1RVUicsIGlzbzJDb2RlOiAnVFInLCBkYXRhc2V0Q29kZTogJ3RyLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVHVya2lzaCBSZXB1YmxpYyBvZiBOb3J0aGVybiBDeXBydXMnLCBpc28zQ29kZTogJ05DWScsIGlzbzJDb2RlOiAnQ1knLCBkYXRhc2V0Q29kZTogJ255LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVHVya21lbmlzdGFuJywgaXNvM0NvZGU6ICdUS00nLCBpc28yQ29kZTogJ1RNJywgZGF0YXNldENvZGU6ICd0bS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVHVya21lbmlzdGFuJywgaXNvM0NvZGU6ICdUS00nLCBpc28yQ29kZTogJ1RNJywgZGF0YXNldENvZGU6ICd0bS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1R1cmtzIGFuZCBDYWljb3MgSXNsYW5kcycsIGlzbzNDb2RlOiAnVENBJywgaXNvMkNvZGU6ICdUQycsIGRhdGFzZXRDb2RlOiAndGMtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUdXZhbHUnLCBpc28zQ29kZTogJ1RVVicsIGlzbzJDb2RlOiAnVFYnLCBkYXRhc2V0Q29kZTogJ3R2LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdUdXZhbHUnLCBpc28zQ29kZTogJ1RVVicsIGlzbzJDb2RlOiAnVFYnLCBkYXRhc2V0Q29kZTogJ3R2LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVWdhbmRhJywgaXNvM0NvZGU6ICdVR0EnLCBpc28yQ29kZTogJ1VHJywgZGF0YXNldENvZGU6ICd1Zy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVWdhbmRhJywgaXNvM0NvZGU6ICdVR0EnLCBpc28yQ29kZTogJ1VHJywgZGF0YXNldENvZGU6ICd1Zy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1VrcmFpbmUnLCBpc28zQ29kZTogJ1VLUicsIGlzbzJDb2RlOiAnVUEnLCBkYXRhc2V0Q29kZTogJ3VhLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdVa3JhaW5lJywgaXNvM0NvZGU6ICdVS1InLCBpc28yQ29kZTogJ1VBJywgZGF0YXNldENvZGU6ICd1YS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1VuaXRlZCBBcmFiIEVtaXJhdGVzJywgaXNvM0NvZGU6ICdBUkUnLCBpc28yQ29kZTogJ0FFJywgZGF0YXNldENvZGU6ICdhZS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEFyYWIgRW1pcmF0ZXMnLCBpc28zQ29kZTogJ0FSRScsIGlzbzJDb2RlOiAnQUUnLCBkYXRhc2V0Q29kZTogJ2FlLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEtpbmdkb20nLCBpc28zQ29kZTogJ0dCUicsIGlzbzJDb2RlOiAnR0InLCBkYXRhc2V0Q29kZTogWydnYi1hZGRyZXNzJ10sIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdVbml0ZWQgS2luZ2RvbScsIGlzbzNDb2RlOiAnR0JSJywgaXNvMkNvZGU6ICdHQicsIGRhdGFzZXRDb2RlOiBbJ2diLWFkZGl0aW9uYWwtYnVzaW5lc3MnLCAnZ2ItYWRkaXRpb25hbC1tdWx0aXBsZXJlc2lkZW5jZScsICdnYi1hZGRpdGlvbmFsLW5vdHlldGJ1aWx0J10sIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEtpbmdkb20gQWRkcmVzc0Jhc2UgUHJlbWl1bScsIGlzbzNDb2RlOiAnR0JSJywgaXNvMkNvZGU6ICdHQicsIGRhdGFzZXRDb2RlOiAnZ2ItYWRkcmVzcy1hZGRyZXNzYmFzZScsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUsIGxvb2t1cCd9LFxuICB7Y291bnRyeTogJ1VuaXRlZCBLaW5nZG9tIEFkZHJlc3NCYXNlIFByZW1pdW0gd2l0aCBJc2xhbmRzJywgaXNvM0NvZGU6ICdHQlInLCBpc28yQ29kZTogJ0dCJywgZGF0YXNldENvZGU6ICdnYi1hZGRpdGlvbmFsLWFkZHJlc3NiYXNlaXNsYW5kcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUsIGxvb2t1cCd9LFxuICB7Y291bnRyeTogJ1VuaXRlZCBLaW5nZG9tIEJ1c2luZXNzIE5hbWVzJywgaXNvM0NvZGU6ICdHQlInLCBpc28yQ29kZTogJ0dCJywgZGF0YXNldENvZGU6ICdnYi1hZGRpdGlvbmFsLWJ1c2luZXNzJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEtpbmdkb20gRWxlY3RyaWNpdHknLCBpc28zQ29kZTogJ0dCUicsIGlzbzJDb2RlOiAnR0InLCBkYXRhc2V0Q29kZTogJ2diLWFkZGl0aW9uYWwtZWxlY3RyaWNpdHknLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdHlwZWRvd24sIHZhbGlkYXRlLCBsb29rdXAnfSxcbiAge2NvdW50cnk6ICdVbml0ZWQgS2luZ2RvbSBHYXMnLCBpc28zQ29kZTogJ0dCUicsIGlzbzJDb2RlOiAnR0InLCBkYXRhc2V0Q29kZTogJ2diLWFkZGl0aW9uYWwtZ2FzJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSwgbG9va3VwJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEtpbmdkb20gU3RyZWV0IExldmVsJywgaXNvM0NvZGU6ICdHQlInLCBpc28yQ29kZTogJ0dCJywgZGF0YXNldENvZGU6ICdnYi1hZGRyZXNzLXN0cmVldGxldmVsJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEtpbmdkb20gRXh0ZW5kZWQgQnVzaW5lc3MnLCBpc28zQ29kZTogJ0dCUicsIGlzbzJDb2RlOiAnR0InLCBkYXRhc2V0Q29kZTogJ2diLWFkZGl0aW9uYWwtYnVzaW5lc3NleHRlbmRlZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUsIGxvb2t1cCd9LFxuICB7Y291bnRyeTogJ1VuaXRlZCBLaW5nZG9tIEN5bXJhZWcgKFdlbHNoIExhbmd1YWdlKSBQb3N0YWwgQWRkcmVzcycsIGlzbzNDb2RlOiAnR0JSJywgaXNvMkNvZGU6ICdHQicsIGRhdGFzZXRDb2RlOiAnZ2ItYWRkcmVzcy13YWxlcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EnLCBpc28zQ29kZTogJ1VTQScsIGlzbzJDb2RlOiAnVVMnLCBkYXRhc2V0Q29kZTogJ3VzLWFkZHJlc3MnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlLCBzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdVcnVndWF5JywgaXNvM0NvZGU6ICdVUlknLCBpc28yQ29kZTogJ1VZJywgZGF0YXNldENvZGU6ICd1eS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVXJ1Z3VheScsIGlzbzNDb2RlOiAnVVJZJywgaXNvMkNvZGU6ICdVWScsIGRhdGFzZXRDb2RlOiAndXktYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdVemJla2lzdGFuJywgaXNvM0NvZGU6ICdVWkInLCBpc28yQ29kZTogJ1VaJywgZGF0YXNldENvZGU6ICd1ei1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVXpiZWtpc3RhbicsIGlzbzNDb2RlOiAnVVpCJywgaXNvMkNvZGU6ICdVWicsIGRhdGFzZXRDb2RlOiAndXotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdWYW51YXR1JywgaXNvM0NvZGU6ICdWVVQnLCBpc28yQ29kZTogJ1ZVJywgZGF0YXNldENvZGU6ICd2dS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVmFudWF0dScsIGlzbzNDb2RlOiAnVlVUJywgaXNvMkNvZGU6ICdWVScsIGRhdGFzZXRDb2RlOiAndnUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdWYXRpY2FuIENpdHkgKEhvbHkgU2VlKScsIGlzbzNDb2RlOiAnVkFUJywgaXNvMkNvZGU6ICdWQScsIGRhdGFzZXRDb2RlOiAndmEtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1ZhdGljYW4gQ2l0eSAoSG9seSBTZWUpJywgaXNvM0NvZGU6ICdWQVQnLCBpc28yQ29kZTogJ1ZBJywgZGF0YXNldENvZGU6ICd2YS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1ZlbmV6dWVsYScsIGlzbzNDb2RlOiAnVkVOJywgaXNvMkNvZGU6ICdWRScsIGRhdGFzZXRDb2RlOiAndmUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1ZlbmV6dWVsYScsIGlzbzNDb2RlOiAnVkVOJywgaXNvMkNvZGU6ICdWRScsIGRhdGFzZXRDb2RlOiAndmUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdWaWV0IE5hbScsIGlzbzNDb2RlOiAnVk5NJywgaXNvMkNvZGU6ICdWTicsIGRhdGFzZXRDb2RlOiAndm4tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1ZpZXQgTmFtJywgaXNvM0NvZGU6ICdWTk0nLCBpc28yQ29kZTogJ1ZOJywgZGF0YXNldENvZGU6ICd2bi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1ZpcmdpbiBJc2xhbmRzLCBCcml0aXNoJywgaXNvM0NvZGU6ICdWR0InLCBpc28yQ29kZTogJ1ZHJywgZGF0YXNldENvZGU6ICd2Zy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1ZpcmdpbiBJc2xhbmRzLCBVLlMuJywgaXNvM0NvZGU6ICdWSVInLCBpc28yQ29kZTogJ1ZJJywgZGF0YXNldENvZGU6ICd2aS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1dhbGxpcyBhbmQgRnV0dW5hIElzbGFuZHMnLCBpc28zQ29kZTogJ1dMRicsIGlzbzJDb2RlOiAnV0YnLCBkYXRhc2V0Q29kZTogJ3dmLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnV2VzdGVybiBTYWhhcmEnLCBpc28zQ29kZTogJ0VTSCcsIGlzbzJDb2RlOiAnRUgnLCBkYXRhc2V0Q29kZTogJ2VoLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdXZXN0ZXJuIFNhaGFyYScsIGlzbzNDb2RlOiAnRVNIJywgaXNvMkNvZGU6ICdFSCcsIGRhdGFzZXRDb2RlOiAnZWgtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdZZW1lbicsIGlzbzNDb2RlOiAnWUVNJywgaXNvMkNvZGU6ICdZRScsIGRhdGFzZXRDb2RlOiAneWUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1llbWVuJywgaXNvM0NvZGU6ICdZRU0nLCBpc28yQ29kZTogJ1lFJywgZGF0YXNldENvZGU6ICd5ZS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1phbWJpYScsIGlzbzNDb2RlOiAnWk1CJywgaXNvMkNvZGU6ICdaTScsIGRhdGFzZXRDb2RlOiAnem0tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1phbWJpYScsIGlzbzNDb2RlOiAnWk1CJywgaXNvMkNvZGU6ICdaTScsIGRhdGFzZXRDb2RlOiAnem0tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdaaW1iYWJ3ZScsIGlzbzNDb2RlOiAnWldFJywgaXNvMkNvZGU6ICdaVycsIGRhdGFzZXRDb2RlOiAnenctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1ppbWJhYndlJywgaXNvM0NvZGU6ICdaV0UnLCBpc28yQ29kZTogJ1pXJywgZGF0YXNldENvZGU6ICd6dy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9XG5dOyIsIi8vIFRyYW5zbGF0aW9uc1xuZXhwb3J0IGNvbnN0IHRyYW5zbGF0aW9ucyA9IHtcbiAgLy8gbGFuZ3VhZ2UgLyBjb3VudHJ5IC8gcHJvcGVydHlcbiAgZW46IHtcbiAgICBnYnI6IHtcbiAgICAgIGxvY2FsaXR5OiAnVG93bi9DaXR5JyxcbiAgICAgIHJlZ2lvbjogJ0NvdW50eScsXG4gICAgICBwb3N0YWxfY29kZTogJ1Bvc3QgY29kZSdcbiAgICB9LFxuICAgIHVzYToge1xuICAgICAgbG9jYWxpdHk6ICdDaXR5JyxcbiAgICAgIHJlZ2lvbjogJ1N0YXRlJyxcbiAgICAgIHBvc3RhbF9jb2RlOiAnWklQIGNvZGUnXG4gICAgfVxuICB9XG4gIC8vIEFkZCBvdGhlciBsYW5ndWFnZXMgYmVsb3dcbn07IiwiZXhwb3J0IGNsYXNzIFBpY2tsaXN0IHtcclxuICBpdGVtczogUGlja2xpc3RJdGVtW107XHJcbiAgd2hhdDN3b3Jkc0l0ZW1zOiBXaGF0M1dvcmRzUGlja0xpc3RbXTtcclxuICBsb29rdXBJdGVtczogTG9va3VwQWRkcmVzc1tdO1xyXG4gIGN1cnJlbnRJdGVtO1xyXG4gIGxpc3Q6IEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XHJcbiAgc2l6ZSA9IDA7XHJcbiAgbWF4U3VnZ2VzdGlvbnMgPSAyNTtcclxuICBzaG93OiAoaXRlbXM6IFNlYXJjaFJlc3BvbnNlKSA9PiB2b2lkO1xyXG4gIHNob3dXaGF0M1dvcmRzOiAoaXRlbXM6IExvb2t1cFczV1Jlc3BvbnNlKSA9PiB2b2lkO1xyXG4gIHNob3dMb29rdXA6IChpdGVtczogTG9va3VwVjJSZXNwb25zZSkgPT4gdm9pZDtcclxuICBoaWRlOiAoKSA9PiB2b2lkO1xyXG4gIGhhbmRsZUVtcHR5UGlja2xpc3Q6IChpdGVtczogU2VhcmNoUmVzcG9uc2UgfCBMb29rdXBXM1dSZXNwb25zZSB8IExvb2t1cFYyUmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgaGFuZGxlRW1wdHlQaWNrbGlzdENhbGxiYWNrOiAoKSA9PiB2b2lkO1xyXG4gIGhhbmRsZUNvbW1vblNob3dQaWNrbGlzdExvZ2ljOiAoKSA9PiB2b2lkO1xyXG4gIHJlZmluZTogUmVmaW5lbWVudDtcclxuICB1c2VBZGRyZXNzRW50ZXJlZDogVXNlQWRkcmVzc0VudGVyZWQ7XHJcbiAgY3JlYXRlTGlzdDogKCkgPT4gSFRNTERpdkVsZW1lbnQ7XHJcbiAgY3JlYXRlTGlzdEl0ZW06IChpdGVtOiBQaWNrbGlzdEl0ZW0pID0+IEhUTUxEaXZFbGVtZW50O1xyXG4gIGNyZWF0ZUxvb2t1cExpc3RJdGVtOiAoaXRlbTogTG9va3VwQWRkcmVzcykgPT4gSFRNTERpdkVsZW1lbnQ7XHJcbiAgY3JlYXRlV2hhdDNXb3Jkc0xpc3RJdGVtOiAoaXRlbTogV2hhdDNXb3Jkc1BpY2tMaXN0KSA9PiBIVE1MRGl2RWxlbWVudDtcclxuICB0YWJDb3VudDogbnVtYmVyO1xyXG4gIHJlc2V0VGFiQ291bnQ6ICgpID0+IHZvaWQ7XHJcbiAga2V5dXA6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcclxuICBhZGRNYXRjaGluZ0VtcGhhc2lzOiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gIGxpc3RlbjogKHJvdykgPT4gdm9pZDtcclxuICBjaGVja0VudGVyOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XHJcbiAgcGljazogKGl0ZW0pID0+IHZvaWQ7XHJcbiAgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZDogKCkgPT4gdm9pZDtcclxuICBkaXNwbGF5U3VnZ2VzdGlvbnNIZWFkZXI6ICgpID0+IHZvaWQ7XHJcbiAgZGlzcGxheVVzZUFkZHJlc3NFbnRlcmVkRm9vdGVyOiAoKSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWRkcmVzc1ZhbGlkYXRpb25SZXN1bHQge1xyXG4gIGZvcm1hdHRlZEFkZHJlc3NDb250YWluZXI7XHJcbiAgbGFzdEFkZHJlc3NGaWVsZDtcclxuICBnZW5lcmF0ZUFkZHJlc3NMaW5lUmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgc2hvdzogKGRhdGEpID0+IHZvaWQ7XHJcbiAgaGlkZTogKCkgPT4gdm9pZDtcclxuICBjcmVhdGVBZGRyZXNzTGluZTogQ3JlYXRlQWRkcmVzc0xpbmU7XHJcbiAgY3JlYXRlRm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lcjogKCkgPT4gdm9pZDtcclxuICBjcmVhdGVIZWFkaW5nOiAoKSA9PiB2b2lkO1xyXG4gIHVwZGF0ZUhlYWRpbmc6ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWQ7XHJcbiAgY2FsY3VsYXRlSWZBZGRyZXNzTGluZUdlbmVyYXRpb25SZXF1aXJlZDogKCkgPT4gdm9pZDtcclxuICB1cGRhdGVBZGRyZXNzTGluZTogKGtleTogc3RyaW5nLCBhZGRyZXNzTGluZU9iamVjdCwgY2xhc3NOYW1lOiBzdHJpbmcpID0+IHZvaWQ7XHJcbiAgdXBkYXRlTGFiZWw6IChrZXk6IHN0cmluZykgPT4gc3RyaW5nO1xyXG4gIGNyZWF0ZVNlYXJjaEFnYWluTGluazogKCkgPT4gdm9pZDtcclxuICByZW5kZXJJbnB1dExpc3Q6IChpbnB1dEFycmF5KSA9PiB2b2lkO1xyXG4gIGhhbmRsZVZhbGlkYXRlUmVzcG9uc2U6IChyZXNwb25zZTogU2VhcmNoUmVzcG9uc2UpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmNsYXNzIENyZWF0ZUFkZHJlc3NMaW5lIHtcclxuICBpbnB1dDogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBjbGFzc05hbWU6IHN0cmluZykgPT4gSFRNTERpdkVsZW1lbnQ7XHJcbiAgbGFiZWw6IChrZXk6IHN0cmluZykgPT4gc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJlc3BvbnNlIHtcclxuICByZXN1bHQ/OiB7XHJcbiAgICBzdWdnZXN0aW9uczogUGlja2xpc3RJdGVtW107XHJcbiAgICBzdWdnZXN0aW9uc19wcm9tcHQ/OiBzdHJpbmc7XHJcbiAgICBzdWdnZXN0aW9uc19rZXk/OiBzdHJpbmc7XHJcbiAgICBjb25maWRlbmNlOiBzdHJpbmc7XHJcbiAgICBhZGRyZXNzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTG9va3VwVzNXUmVzcG9uc2Uge1xyXG4gIHJlc3VsdD86IHtcclxuICAgIG1vcmVfcmVzdWx0c19hdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgICBzdWdnZXN0aW9uczogV2hhdDNXb3Jkc1BpY2tMaXN0W107XHJcbiAgICBjb25maWRlbmNlOiBzdHJpbmc7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExvb2t1cFYyUmVzcG9uc2Uge1xyXG4gIHJlc3VsdD86IHtcclxuICAgIG1vcmVfcmVzdWx0c19hdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgICBjb25maWRlbmNlOiBzdHJpbmc7XHJcbiAgICBhZGRyZXNzZXM6IExvb2t1cEFkZHJlc3NbXTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTG9va3VwQWRkcmVzcyB7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGdsb2JhbF9hZGRyZXNzX2tleTogc3RyaW5nO1xyXG4gIGZvcm1hdDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdoYXQzV29yZHNQaWNrTGlzdCB7XHJcbiAgd2hhdDN3b3JkczogV2hhdDNXb3Jkc1N1Z2dlc3Rpb247XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgV2hhdDNXb3Jkc1N1Z2dlc3Rpb24ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGlja2xpc3RJdGVtIHtcclxuICB0ZXh0OiBzdHJpbmc7XHJcbiAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gIG1hdGNoZWQ/OiBudW1iZXJbXVtdO1xyXG4gIGdsb2JhbF9hZGRyZXNzX2tleT86IHN0cmluZztcclxuICBhZGRpdGlvbmFsX2F0dHJpYnV0ZXM/OiB7IG5hbWU6IHN0cmluZywgVmFsdWU6IHN0cmluZyB9W107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVc2VBZGRyZXNzRW50ZXJlZCB7XHJcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgY3JlYXRlOiAoY29uZmlkZW5jZTogc3RyaW5nKSA9PiBIVE1MRGl2RWxlbWVudDtcclxuICBkZXN0cm95OiAoKSA9PiB2b2lkO1xyXG4gIGNsaWNrOiAoKSA9PiB2b2lkO1xyXG4gIGZvcm1hdE1hbnVhbEFkZHJlc3NMaW5lOiAobGluZXMsIGkpID0+IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZWZpbmVtZW50IHtcclxuICBlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGlzTmVlZGVkOiAocmVzcG9uc2U6IFNlYXJjaFJlc3BvbnNlKSA9PiBib29sZWFuO1xyXG4gIGNyZWF0ZUlucHV0OiAocHJvbXB0OiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB2b2lkO1xyXG4gIGVudGVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2VhcmNoU3Bpbm5lciB7XHJcbiAgc2hvdzogKCkgPT4gdm9pZDtcclxuICBoaWRlOiAoKSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUG93ZXJlZEJ5TG9nbyB7XHJcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgY3JlYXRlOiAocGlja2xpc3QpID0+IEhUTUxEaXZFbGVtZW50O1xyXG4gIGRlc3Ryb3k6IChwaWNrbGlzdCkgPT4gdm9pZDtcclxuICBzdmc6IHN0cmluZztcclxufSIsImltcG9ydCBFdmVudEZhY3RvcnkgZnJvbSAnLi9ldmVudC1mYWN0b3J5JztcclxuaW1wb3J0IFJlcXVlc3QgZnJvbSAnLi9yZXF1ZXN0JztcclxuaW1wb3J0IHsgQWRkcmVzc1NlYXJjaE9wdGlvbnMsIEFkZHJlc3NWYWxpZGF0aW9uTW9kZSwgZGVmYXVsdHMgfSBmcm9tICcuL3NlYXJjaC1vcHRpb25zJztcclxuaW1wb3J0IHsgZGF0YXNldENvZGVzIH0gZnJvbSAnLi9kYXRhc2V0cy1jb2Rlcyc7XHJcbmltcG9ydCB7IHRyYW5zbGF0aW9ucyB9IGZyb20gJy4vdHJhbnNsYXRpb25zJztcclxuaW1wb3J0IHsgQWRkcmVzc1ZhbGlkYXRpb25SZXN1bHQsIExvb2t1cEFkZHJlc3MsIExvb2t1cFYyUmVzcG9uc2UsIExvb2t1cFczV1Jlc3BvbnNlLCBQaWNrbGlzdCwgUGlja2xpc3RJdGVtLCBQb3dlcmVkQnlMb2dvLCBTZWFyY2hSZXNwb25zZSwgV2hhdDNXb3Jkc1BpY2tMaXN0IH0gZnJvbSAnLi9jbGFzcy10eXBlcyc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRyZXNzVmFsaWRhdGlvbiB7XHJcbiAgcHVibGljIG9wdGlvbnM6IEFkZHJlc3NTZWFyY2hPcHRpb25zO1xyXG4gIHB1YmxpYyBzZWFyY2hUeXBlOiBBZGRyZXNzVmFsaWRhdGlvbk1vZGU7XHJcbiAgcHVibGljIGV2ZW50cztcclxuICBwdWJsaWMgcmVxdWVzdDogUmVxdWVzdDtcclxuXHJcbiAgcHJpdmF0ZSBiYXNlVXJsID0gJ2h0dHBzOi8vYXBpLmV4cGVyaWFuYXBlcnR1cmUuaW8vJztcclxuICBwcml2YXRlIHNlYXJjaEVuZHBvaW50ID0gJ2FkZHJlc3Mvc2VhcmNoL3YxJztcclxuICBwcml2YXRlIGxvb2t1cEVuZHBvaW50ID0gJ2FkZHJlc3MvbG9va3VwL3YyJztcclxuICBwcml2YXRlIHZhbGlkYXRlRW5kcG9pbnQgPSAnYWRkcmVzcy92YWxpZGF0ZS92MSc7XHJcbiAgcHJpdmF0ZSBwcm9tcHRzZXRFbmRwb2ludCA9ICdhZGRyZXNzL3Byb21wdHNldHMvdjEnO1xyXG4gIHByaXZhdGUgc3RlcEluRW5kcG9pbnQgPSAnYWRkcmVzcy9zdWdnZXN0aW9ucy9zdGVwaW4vdjEnO1xyXG4gIHByaXZhdGUgcmVmaW5lRW5kcG9pbnQgPSAnYWRkcmVzcy9zdWdnZXN0aW9ucy9yZWZpbmUvdjEnO1xyXG4gIHByaXZhdGUgZW5yaWNobWVudEVuZHBvaW50ID0gJ2VucmljaG1lbnQvdjInO1xyXG5cclxuICBwcml2YXRlIHdoYXQzV29yZENvdW50cmllcyA9IFsnR0JSJ107XHJcbiAgcHJpdmF0ZSB3aGF0M1dvcmRzS2V5d29yZCA9ICd3aGF0M3dvcmRzJztcclxuXHJcbiAgcHJpdmF0ZSBwaWNrbGlzdDogUGlja2xpc3Q7XHJcbiAgcHJpdmF0ZSBpbnB1dHM6IEhUTUxJbnB1dEVsZW1lbnRbXTtcclxuICBwcml2YXRlIGxhc3RTZWFyY2hUZXJtOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjdXJyZW50U2VhcmNoVGVybTogc3RyaW5nO1xyXG4gIHByaXZhdGUgY3VycmVudENvdW50cnlDb2RlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjdXJyZW50RGF0YVNldDogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBoYXNTZWFyY2hJbnB1dEJlZW5SZXNldDogYm9vbGVhbjtcclxuICBwcml2YXRlIGNvdW50cnlDb2RlTWFwcGluZztcclxuICBwcml2YXRlIGxvb2t1cEZuO1xyXG4gIHByaXZhdGUga2V5VXBGbjtcclxuICBwcml2YXRlIGNoZWNrVGFiRm47XHJcbiAgcHJpdmF0ZSBpc1doYXQzV29yZHM6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFkZHJlc3NTZWFyY2hPcHRpb25zKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm1lcmdlRGVmYXVsdE9wdGlvbnMob3B0aW9ucyk7XHJcblxyXG4gICAgdGhpcy5ldmVudHMgPSBuZXcgRXZlbnRGYWN0b3J5KCk7XHJcblxyXG4gICAgdGhpcy5zZXR1cCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFRva2VuKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMub3B0aW9ucy50b2tlbiA9IHRva2VuO1xyXG4gICAgdGhpcy5zZXR1cCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFNlYXJjaFR5cGUoc2VhcmNoVHlwZTogQWRkcmVzc1ZhbGlkYXRpb25Nb2RlKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFR5cGUgPSBzZWFyY2hUeXBlO1xyXG4gICAgdGhpcy5nbG9iYWxSZXNldCgpO1xyXG4gICAgdGhpcy5zZXRJbnB1dHMoKTtcclxuICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3Bvc3Qtc2VhcmNoLXR5cGUtY2hhbmdlJywgc2VhcmNoVHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RW5yaWNobWVudERhdGEoZ2xvYmFsQWRkcmVzc0tleTogc3RyaW5nKSB7XHJcbiAgICBpZiAoZ2xvYmFsQWRkcmVzc0tleSkge1xyXG4gICAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICAgIGNvdW50cnlfaXNvOiB0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZSxcclxuICAgICAgICBrZXlzOiB7XHJcbiAgICAgICAgICBnbG9iYWxfYWRkcmVzc19rZXk6IGdsb2JhbEFkZHJlc3NLZXlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgIGdlb2NvZGVzOiBbJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZScsICdtYXRjaF9sZXZlbCddXHJcbiAgICAgICAgfVxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLmV2ZW50cy50cmlnZ2VyKCdwcmUtZW5yaWNobWVudCcpO1xyXG4gICAgICB0aGlzLnJlcXVlc3Quc2VuZCh0aGlzLmJhc2VVcmwgKyB0aGlzLmVucmljaG1lbnRFbmRwb2ludCwgJ1BPU1QnLCB0aGlzLmhhbmRsZUVucmljaG1lbnRSZXN1bHQuYmluZCh0aGlzKSwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXR1cCgpOiB2b2lkIHtcclxuICAgIC8vIEdldCB0b2tlbiBhbmQgcHJvY2VlZCBpZiBpdCdzIHByZXNlbnRcclxuICAgIGlmICh0aGlzLnRva2VuKSB7XHJcbiAgICAgIHRoaXMuaGFzU2VhcmNoSW5wdXRCZWVuUmVzZXQgPSB0cnVlO1xyXG5cclxuICAgICAgLy8gSW5zdGFudGlhdGUgYSBuZXcgUmVxdWVzdCBjbGFzcyBmb3IgdXNlIHdoZW4gbWFraW5nIEFQSSBjYWxsc1xyXG4gICAgICB0aGlzLnJlcXVlc3QgPSBuZXcgUmVxdWVzdCh0aGlzKTtcclxuXHJcbiAgICAgIC8vIFNldCB0aGUgY291bnRyeSBsaXN0XHJcbiAgICAgIHRoaXMuc2V0Q291bnRyeUxpc3QoKTtcclxuXHJcbiAgICAgIC8vIFNldCB0aGUgaW5wdXQgZmllbGRzIGZvciB0aGlzIHNlYXJjaCB0eXBlXHJcbiAgICAgIHRoaXMuc2V0SW5wdXRzKCk7XHJcblxyXG4gICAgICAvLyBTZXR1cCBhIHBpY2tsaXN0IG9iamVjdFxyXG4gICAgICB0aGlzLmNyZWF0ZVBpY2tsaXN0KCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBUcmlnZ2VyIGEgNDAxIFVuYXV0aG9yaXplZCBldmVudCBpZiBhIHRva2VuIGRvZXMgbm90IGV4aXN0XHJcbiAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5ldmVudHMudHJpZ2dlcigncmVxdWVzdC1lcnJvci00MDEnKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZUVucmljaG1lbnRSZXN1bHQocmVzcG9uc2UpIHtcclxuICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3Bvc3QtZW5yaWNobWVudCcsIHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UGFyYW1ldGVyKG5hbWUpOiBzdHJpbmcge1xyXG4gICAgbmFtZSA9IG5hbWUucmVwbGFjZSgvW1tdLywgJ1xcXFxbJykucmVwbGFjZSgvW1xcXV0vLCAnXFxcXF0nKTtcclxuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cCgnW1xcXFw/Jl0nICsgbmFtZSArICc9KFteJiNdKiknKSxcclxuICAgICAgcmVzdWx0cyA9IHJlZ2V4LmV4ZWMobG9jYXRpb24uc2VhcmNoKTtcclxuICAgIHJldHVybiByZXN1bHRzID09PSBudWxsID8gJycgOiBkZWNvZGVVUklDb21wb25lbnQocmVzdWx0c1sxXS5yZXBsYWNlKC9cXCsvZywgJyAnKSk7XHJcbiAgfVxyXG5cclxuICAvLyBUcnkgYW5kIGdldCB0b2tlbiBmcm9tIHRoZSBxdWVyeSBzdHJpbmcgaWYgaXQncyBub3QgYWxyZWFkeSBwcm92aWRlZFxyXG4gIHByaXZhdGUgZ2V0IHRva2VuKCk6IHN0cmluZyB7XHJcbiAgICBpZiAoIXRoaXMub3B0aW9ucy50b2tlbikge1xyXG4gICAgICB0aGlzLm9wdGlvbnMudG9rZW4gPSB0aGlzLmdldFBhcmFtZXRlcigndG9rZW4nKTtcclxuICAgIH1cclxuICAgIHJldHVybiB0aGlzLm9wdGlvbnMudG9rZW47XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIG1lcmdlRGVmYXVsdE9wdGlvbnMoY3VzdG9tT3B0aW9ucyk6IEFkZHJlc3NTZWFyY2hPcHRpb25zIHtcclxuICAgIGNvbnN0IGluc3RhbmNlOiBBZGRyZXNzU2VhcmNoT3B0aW9ucyA9IGN1c3RvbU9wdGlvbnMgfHwge307XHJcblxyXG4gICAgaW5zdGFuY2UuZW5hYmxlZCA9IHRydWU7XHJcbiAgICB0aGlzLnNlYXJjaFR5cGUgPSBpbnN0YW5jZS5zZWFyY2hUeXBlIHx8IGRlZmF1bHRzLnNlYXJjaFR5cGU7XHJcbiAgICBpbnN0YW5jZS5lbmFibGVXaGF0M1dvcmRzID0gaW5zdGFuY2UuZW5hYmxlV2hhdDNXb3JkcyB8fCBkZWZhdWx0cy5lbmFibGVXaGF0M1dvcmRzO1xyXG4gICAgaW5zdGFuY2Uuc2VhcmNoVHlwZSA9IGluc3RhbmNlLnNlYXJjaFR5cGUgfHwgZGVmYXVsdHMuc2VhcmNoVHlwZTtcclxuICAgIGluc3RhbmNlLmxhbmd1YWdlID0gaW5zdGFuY2UubGFuZ3VhZ2UgfHwgZGVmYXVsdHMubGFuZ3VhZ2U7XHJcbiAgICBpbnN0YW5jZS51c2VTcGlubmVyID0gaW5zdGFuY2UudXNlU3Bpbm5lciB8fCBkZWZhdWx0cy51c2VTcGlubmVyO1xyXG4gICAgaW5zdGFuY2UuYXBwbHlGb2N1cyA9ICh0eXBlb2YgaW5zdGFuY2UuYXBwbHlGb2N1cyAhPT0gJ3VuZGVmaW5lZCcpID8gaW5zdGFuY2UuYXBwbHlGb2N1cyA6IGRlZmF1bHRzLmlucHV0LmFwcGx5Rm9jdXM7XHJcbiAgICBpbnN0YW5jZS5wbGFjZWhvbGRlclRleHQgPSBpbnN0YW5jZS5wbGFjZWhvbGRlclRleHQgfHwgZGVmYXVsdHMuaW5wdXQucGxhY2Vob2xkZXJUZXh0O1xyXG4gICAgaW5zdGFuY2Uuc2VhcmNoQWdhaW4gPSBpbnN0YW5jZS5zZWFyY2hBZ2FpbiB8fCB7fTtcclxuICAgIGluc3RhbmNlLnNlYXJjaEFnYWluLnZpc2libGUgPSAodHlwZW9mIGluc3RhbmNlLnNlYXJjaEFnYWluLnZpc2libGUgIT09ICd1bmRlZmluZWQnKSA/IGluc3RhbmNlLnNlYXJjaEFnYWluLnZpc2libGUgOiBkZWZhdWx0cy5zZWFyY2hBZ2Fpbi52aXNpYmxlO1xyXG4gICAgaW5zdGFuY2Uuc2VhcmNoQWdhaW4udGV4dCA9IGluc3RhbmNlLnNlYXJjaEFnYWluLnRleHQgfHwgZGVmYXVsdHMuc2VhcmNoQWdhaW4udGV4dDtcclxuICAgIGluc3RhbmNlLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIgPSBpbnN0YW5jZS5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyIHx8IGRlZmF1bHRzLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXI7XHJcbiAgICBpbnN0YW5jZS5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnNob3dIZWFkaW5nID0gKHR5cGVvZiBpbnN0YW5jZS5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnNob3dIZWFkaW5nICE9PSAndW5kZWZpbmVkJykgPyBpbnN0YW5jZS5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnNob3dIZWFkaW5nIDogZGVmYXVsdHMuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5zaG93SGVhZGluZztcclxuICAgIGluc3RhbmNlLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuaGVhZGluZ1R5cGUgPSBpbnN0YW5jZS5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLmhlYWRpbmdUeXBlIHx8IGRlZmF1bHRzLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuaGVhZGluZ1R5cGU7XHJcbiAgICBpbnN0YW5jZS5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnZhbGlkYXRlZEhlYWRpbmdUZXh0ID0gaW5zdGFuY2UuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci52YWxpZGF0ZWRIZWFkaW5nVGV4dCB8fCBkZWZhdWx0cy5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnZhbGlkYXRlZEhlYWRpbmdUZXh0O1xyXG4gICAgaW5zdGFuY2UuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5tYW51YWxIZWFkaW5nVGV4dCA9IGluc3RhbmNlLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIubWFudWFsSGVhZGluZ1RleHQgfHwgZGVmYXVsdHMuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5tYW51YWxIZWFkaW5nVGV4dDtcclxuICAgIGluc3RhbmNlLnVzZUFkZHJlc3NFbnRlcmVkVGV4dCA9IGluc3RhbmNlLnVzZUFkZHJlc3NFbnRlcmVkVGV4dCB8fCBkZWZhdWx0cy51c2VBZGRyZXNzRW50ZXJlZFRleHQ7XHJcbiAgICBpbnN0YW5jZS5lbGVtZW50cyA9IGluc3RhbmNlLmVsZW1lbnRzIHx8IHt9O1xyXG5cclxuICAgIHJldHVybiBpbnN0YW5jZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0UHJvbXB0c2V0KCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY3VycmVudENvdW50cnlDb2RlKSB7XHJcbiAgICAgIC8vIFVzaW5nIHRoZSBjb3VudHJ5IGNvZGUgYW5kIHRoZSBzZWFyY2ggdHlwZSwgbG9va3VwIHdoYXQgdGhlIHJlbGV2YW50IGRhdGFzZXQgY29kZSBzaG91bGQgYmVcclxuICAgICAgdGhpcy5jdXJyZW50RGF0YVNldCA9IHRoaXMubG9va3VwRGF0YXNldENvZGUoKTtcclxuICAgICAgaWYgKHRoaXMuY3VycmVudERhdGFTZXQpIHtcclxuXHJcbiAgICAgICAgLy8vIFRlbXBvcmFyeSBtZWFzdXJlIHVudGlsIHRoZSBwcm9tcHRzZXQgZW5kcG9pbnQgc3VwcG9ydHMgQXV0b2NvbXBsZXRlIGFuZCBWYWxpZGF0ZVxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5BVVRPQ09NUExFVEUpIHtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5oYW5kbGVQcm9tcHRzZXRSZXN1bHQoeyByZXN1bHQ6IHsgbGluZXM6IFt7IGV4YW1wbGU6IHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlclRleHQsIHByb21wdDogJ0FkZHJlc3MnLCBzdWdnZXN0ZWRfaW5wdXRfbGVuZ3RoOiAxNjAgfV0gfSB9KSk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5WQUxJREFURSkge1xyXG4gICAgICAgICAgY29uc3QgbGluZXMgPSBbXHJcbiAgICAgICAgICAgIHsgcHJvbXB0OiAnQWRkcmVzcyBsaW5lIDEnLCBzdWdnZXN0ZWRfaW5wdXRfbGVuZ3RoOiAxNjAgfSxcclxuICAgICAgICAgICAgeyBwcm9tcHQ6ICdBZGRyZXNzIGxpbmUgMicsIHN1Z2dlc3RlZF9pbnB1dF9sZW5ndGg6IDE2MCB9LFxyXG4gICAgICAgICAgICB7IHByb21wdDogJ0FkZHJlc3MgbGluZSAzJywgc3VnZ2VzdGVkX2lucHV0X2xlbmd0aDogMTYwIH0sXHJcbiAgICAgICAgICAgIHsgcHJvbXB0OiB0aGlzLnJlc3VsdC5jcmVhdGVBZGRyZXNzTGluZS5sYWJlbCgnbG9jYWxpdHknKSwgc3VnZ2VzdGVkX2lucHV0X2xlbmd0aDogMTYwIH0sXHJcbiAgICAgICAgICAgIHsgcHJvbXB0OiB0aGlzLnJlc3VsdC5jcmVhdGVBZGRyZXNzTGluZS5sYWJlbCgncmVnaW9uJyksIHN1Z2dlc3RlZF9pbnB1dF9sZW5ndGg6IDE2MCB9LFxyXG4gICAgICAgICAgICB7IHByb21wdDogdGhpcy5yZXN1bHQuY3JlYXRlQWRkcmVzc0xpbmUubGFiZWwoJ3Bvc3RhbF9jb2RlJyksIHN1Z2dlc3RlZF9pbnB1dF9sZW5ndGg6IDE2MCB9XHJcbiAgICAgICAgICBdO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhhbmRsZVByb21wdHNldFJlc3VsdCh7IHJlc3VsdDogeyBsaW5lcyB9IH0pKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgICAgICBjb3VudHJ5X2lzbzogdGhpcy5jdXJyZW50Q291bnRyeUNvZGUsXHJcbiAgICAgICAgICBkYXRhc2V0czogQXJyYXkuaXNBcnJheSh0aGlzLmN1cnJlbnREYXRhU2V0KSA/IHRoaXMuY3VycmVudERhdGFTZXQgOiBbdGhpcy5jdXJyZW50RGF0YVNldF0sXHJcbiAgICAgICAgICBzZWFyY2hfdHlwZTogdGhpcy5zZWFyY2hUeXBlLFxyXG4gICAgICAgICAgcHJvbXB0X3NldDogJ29wdGltYWwnXHJcbiAgICAgICAgfTtcclxuICAgICAgICB0aGlzLmV2ZW50cy50cmlnZ2VyKCdwcmUtcHJvbXB0c2V0LWNoZWNrJyk7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0LnNlbmQodGhpcy5iYXNlVXJsICsgdGhpcy5wcm9tcHRzZXRFbmRwb2ludCwgJ1BPU1QnLCB0aGlzLmhhbmRsZVByb21wdHNldFJlc3VsdC5iaW5kKHRoaXMpLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgbG9va3VwRGF0YXNldENvZGUoKTogc3RyaW5nIHwgc3RyaW5nW10ge1xyXG4gICAgY29uc3QgaXRlbSA9IGRhdGFzZXRDb2Rlcy5maW5kKGRhdGFzZXQgPT4gZGF0YXNldC5pc28zQ29kZSA9PT0gdGhpcy5jdXJyZW50Q291bnRyeUNvZGUgJiYgZGF0YXNldC5zZWFyY2hUeXBlLmluY2x1ZGVzKHRoaXMuc2VhcmNoVHlwZSkpO1xyXG4gICAgaWYgKGl0ZW0pIHtcclxuICAgICAgcmV0dXJuIGl0ZW0uZGF0YXNldENvZGU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGhhbmRsZVByb21wdHNldFJlc3VsdChyZXNwb25zZSk6IHZvaWQge1xyXG4gICAgLy8gUmVtb3ZlIGFueSBjdXJyZW50bHkgZGlzcGxheWVkIHBpY2tsaXN0IHdoZW4gdGhlIHByb21wdHNldCBjaGFuZ2VzXHJcbiAgICB0aGlzLnBpY2tsaXN0LmhpZGUoKTtcclxuXHJcbiAgICAvLyBUcmlnZ2VyIGEgbmV3IGV2ZW50IHRvIG5vdGlmeSBzdWJzY3JpYmVyc1xyXG4gICAgdGhpcy5ldmVudHMudHJpZ2dlcigncG9zdC1wcm9tcHRzZXQtY2hlY2snLCByZXNwb25zZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0SW5wdXRzKGlucHV0cyA9IHRoaXMub3B0aW9ucy5lbGVtZW50cy5pbnB1dHMpOiB2b2lkIHtcclxuICAgIC8vIElmIGFkZHJlc3MgaW5wdXRzIGV4aXN0IHRoZW4gcmVnaXN0ZXIgdGhlc2Ugd2l0aCBldmVudCBsaXN0ZW5lcnMsIG90aGVyd2lzZSBjYWxsIHRoZSBwcm9tcHRzZXQgZW5kcG9pbnQgdG8gcmV0cmlldmUgdGhlbVxyXG4gICAgaWYgKGlucHV0cykge1xyXG4gICAgICB0aGlzLnJlZ2lzdGVySW5wdXRzKGlucHV0cyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyBNYWtlIGFuIEFQSSBjYWxsIHRvIGdldCB0aGUgcHJvbXB0c2V0IGZvciB0aGlzIGNvdW50cnkvZGF0YXNldC9lbmdpbmVcclxuICAgICAgdGhpcy5nZXRQcm9tcHRzZXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuU0lOR0xFTElORSB8fCB0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5WQUxJREFURSkge1xyXG4gICAgICAvLyBCaW5kIGFuIGV2ZW50IGxpc3RlbmVyIG9uIHRoZSBsb29rdXAgYnV0dG9uXHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZWxlbWVudHMubG9va3VwQnV0dG9uKSB7XHJcbiAgICAgICAgdGhpcy5sb29rdXBGbiA9IHRoaXMuc2VhcmNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLmVsZW1lbnRzLmxvb2t1cEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMubG9va3VwRm4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZ2lzdGVySW5wdXRzKGlucHV0czogSFRNTElucHV0RWxlbWVudFtdKSB7XHJcbiAgICAvLyBJZiBuZXcgaW5wdXRzIGhhdmUgYmVlbiBwcm92aWRlZCwgZW5zdXJlIHdlIHVwZGF0ZSB0aGUgZWxlbWVudHMgYXJyYXkgdG8gY2FwdHVyZSB0aGVtXHJcbiAgICB0aGlzLmlucHV0cyA9IEFycmF5LmZyb20oaW5wdXRzKTtcclxuXHJcbiAgICB0aGlzLmlucHV0cy5mb3JFYWNoKGlucHV0ID0+IHtcclxuICAgICAgLy8gRGlzYWJsZSBhdXRvY29tcGxldGUgb24gdGhlIGZvcm0gZmllbGRcclxuICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdhdXRvY29tcGxldGUnLCAnbmV3LXBhc3N3b3JkJyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuQVVUT0NPTVBMRVRFKSB7XHJcbiAgICAgICAgLy8gQmluZCBhbiBldmVudCBsaXN0ZW5lciBvbiB0aGUgaW5wdXRcclxuICAgICAgICB0aGlzLmtleVVwRm4gPSB0aGlzLnNlYXJjaC5iaW5kKHRoaXMpO1xyXG4gICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5rZXlVcEZuKTtcclxuICAgICAgICB0aGlzLmNoZWNrVGFiRm4gPSB0aGlzLmNoZWNrVGFiLmJpbmQodGhpcyk7XHJcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMuY2hlY2tUYWJGbik7XHJcbiAgICAgICAgLy8gU2V0IGEgcGxhY2Vob2xkZXIgZm9yIHRoZSBpbnB1dFxyXG4gICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgncGxhY2Vob2xkZXInLCB0aGlzLm9wdGlvbnMucGxhY2Vob2xkZXJUZXh0KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQmluZCBhbiBldmVudCBsaXN0ZW5lciBvbiB0aGUgaW5wdXQgdG8gYWxsb3cgdXNlcnMgdG8gdHJhdmVyc2UgdXAgYW5kIGRvd24gdGhlIHBpY2tsaXN0IHVzaW5nIHRoZSBrZXlib2FyZFxyXG4gICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXl1cCcsIHRoaXMuaGFuZGxlS2V5Ym9hcmRFdmVudC5iaW5kKHRoaXMpKTtcclxuICAgIH0pO1xyXG5cclxuICAgIHRoaXMuY291bnRyeUNvZGVNYXBwaW5nID0gdGhpcy5vcHRpb25zLmNvdW50cnlDb2RlTWFwcGluZyB8fCB7fTtcclxuXHJcbiAgICAvLyBBcHBseSBmb2N1cyB0byB0aGUgZmlyc3QgaW5wdXRcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuYXBwbHlGb2N1cykge1xyXG4gICAgICB0aGlzLmlucHV0c1swXS5mb2N1cygpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzZXRDb3VudHJ5TGlzdCgpOiB2b2lkIHtcclxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBjb3VudHJ5IGNvZGUgZnJvbSBlaXRoZXIgdGhlIHZhbHVlIG9mIGEgY291bnRyeSBsaXN0IEhUTUwgZWxlbWVudCBvciBhIHN0YXRpYyBjb3VudHJ5IGNvZGVcclxuICAgIGlmICh0aGlzLm9wdGlvbnMuZWxlbWVudHMuY291bnRyeUxpc3QpIHtcclxuICAgICAgdGhpcy5jdXJyZW50Q291bnRyeUNvZGUgPSB0aGlzLm9wdGlvbnMuZWxlbWVudHMuY291bnRyeUxpc3QudmFsdWU7XHJcblxyXG4gICAgICAvLyBMaXN0ZW4gZm9yIHdoZW4gYSBjb3VudHJ5IGlzIGNoYW5nZWQgYW5kIGNhbGwgdGhlIHByb21wdHNldCBlbmRwb2ludFxyXG4gICAgICB0aGlzLm9wdGlvbnMuZWxlbWVudHMuY291bnRyeUxpc3QuYWRkRXZlbnRMaXN0ZW5lcignY2hhbmdlJywgdGhpcy5oYW5kbGVDb3VudHJ5TGlzdENoYW5nZS5iaW5kKHRoaXMpKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRpb25zLmNvdW50cnlDb2RlKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudENvdW50cnlDb2RlID0gdGhpcy5vcHRpb25zLmNvdW50cnlDb2RlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhyb3cgbmV3IEVycm9yKCdQbGVhc2UgcHJvdmlkZSBhIGNvdW50cnkgY29kZSBvciBhIGNvdW50cnkgbGlzdCBlbGVtZW50Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBXaGVuIGEgY291bnRyeSBmcm9tIHRoZSBsaXN0IGlzIGNoYW5nZWQsIHVwZGF0ZSB0aGUgY3VycmVudCBjb3VudHJ5IGNvZGUgYW5kIGNhbGwgdGhlIHByb21wdHNldCBlbmRwb2ludCBhZ2FpblxyXG4gIHByaXZhdGUgaGFuZGxlQ291bnRyeUxpc3RDaGFuZ2UoKTogdm9pZCB7XHJcbiAgICB0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZSA9IHRoaXMub3B0aW9ucy5lbGVtZW50cy5jb3VudHJ5TGlzdC52YWx1ZTtcclxuICAgIHRoaXMuZ2V0UHJvbXB0c2V0KCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdlbmVyYXRlU2VhcmNoRGF0YUZvckFwaUNhbGwoKTogc3RyaW5nIHtcclxuICAgIC8vIElmIGEgZGF0YXNldCBjb2RlIGhhc24ndCBiZWVuIHNldCB5ZXQsIHRyeSBhbmQgbG9vayBpdCB1cFxyXG4gICAgaWYgKCF0aGlzLmN1cnJlbnREYXRhU2V0KSB7XHJcbiAgICAgIHRoaXMuY3VycmVudERhdGFTZXQgPSB0aGlzLmxvb2t1cERhdGFzZXRDb2RlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgY291bnRyeV9pc286IHRoaXMuY3VycmVudENvdW50cnlDb2RlLFxyXG4gICAgICBjb21wb25lbnRzOiB7IHVuc3BlY2lmaWVkOiBbdGhpcy5jdXJyZW50U2VhcmNoVGVybV0gfSxcclxuICAgICAgZGF0YXNldHM6IEFycmF5LmlzQXJyYXkodGhpcy5jdXJyZW50RGF0YVNldCkgPyB0aGlzLmN1cnJlbnREYXRhU2V0IDogW3RoaXMuY3VycmVudERhdGFTZXRdLFxyXG4gICAgICBtYXhfc3VnZ2VzdGlvbnM6ICh0aGlzLm9wdGlvbnMubWF4U3VnZ2VzdGlvbnMgfHwgdGhpcy5waWNrbGlzdC5tYXhTdWdnZXN0aW9ucylcclxuICAgIH07XHJcblxyXG4gICAgaWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLlNJTkdMRUxJTkUgfHwgdGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuVkFMSURBVEUpIHtcclxuICAgICAgZGF0YVsnb3B0aW9ucyddID0gW1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICdmbGF0dGVuJyxcclxuICAgICAgICAgIFZhbHVlOiAndHJ1ZSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICdpbnRlbnNpdHknLFxyXG4gICAgICAgICAgVmFsdWU6ICdjbG9zZSdcclxuICAgICAgICB9LFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIG5hbWU6ICdwcm9tcHRfc2V0JyxcclxuICAgICAgICAgIFZhbHVlOiAnZGVmYXVsdCdcclxuICAgICAgICB9XHJcbiAgICAgIF07XHJcblxyXG4gICAgICBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuU0lOR0xFTElORSkge1xyXG4gICAgICAgIGRhdGFbJ29wdGlvbnMnXS5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6ICdzZWFyY2hfdHlwZScsXHJcbiAgICAgICAgICBWYWx1ZTogJ3NpbmdsZWxpbmUnXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5WQUxJREFURSkge1xyXG4gICAgICAgIGRhdGFbJ2xheW91dHMnXSA9IFsnZGVmYXVsdCddO1xyXG4gICAgICAgIGRhdGFbJ2xheW91dF9mb3JtYXQnXSA9ICdkZWZhdWx0JztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLm9wdGlvbnMubG9jYXRpb24pIHtcclxuICAgICAgZGF0YVsnbG9jYXRpb24nXSA9IHRoaXMub3B0aW9ucy5sb2NhdGlvbjtcclxuICAgIH1cclxuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShkYXRhKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVMb29rdXBEYXRhRm9yQXBpQ2FsbChpbnB1dDogc3RyaW5nLCBzaG91bGRHZXRTdWdnZXN0aW9uczogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICAvLyBJZiBhIGRhdGFzZXQgY29kZSBoYXNuJ3QgYmVlbiBzZXQgeWV0LCB0cnkgYW5kIGxvb2sgaXQgdXBcclxuICAgIGlmICghdGhpcy5jdXJyZW50RGF0YVNldCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnREYXRhU2V0ID0gdGhpcy5sb29rdXBEYXRhc2V0Q29kZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGRhdGEgPSB7XHJcbiAgICAgIGNvdW50cnlfaXNvOiB0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZSxcclxuICAgICAgZGF0YXNldHM6IEFycmF5LmlzQXJyYXkodGhpcy5jdXJyZW50RGF0YVNldCkgPyB0aGlzLmN1cnJlbnREYXRhU2V0IDogW3RoaXMuY3VycmVudERhdGFTZXRdLFxyXG4gICAgICBtYXhfc3VnZ2VzdGlvbnM6ICh0aGlzLm9wdGlvbnMubWF4U3VnZ2VzdGlvbnMgfHwgdGhpcy5waWNrbGlzdC5tYXhTdWdnZXN0aW9ucyksXHJcbiAgICAgIGtleToge1xyXG4gICAgICAgIHR5cGU6IHRoaXMud2hhdDNXb3Jkc0tleXdvcmQsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuZ2V0V2hhdDNXb3Jkc0xvb2t1cFZhbHVlKGlucHV0LCBzaG91bGRHZXRTdWdnZXN0aW9ucyksXHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRXaGF0M1dvcmRzTG9va3VwVmFsdWUoaW5wdXQ6IHN0cmluZywgc2hvdWxkR2V0U3VnZ2VzdGlvbnM6IGJvb2xlYW4pOiBzdHJpbmcge1xyXG4gICAgaWYgKGlucHV0LnN0YXJ0c1dpdGgoJy8vLycpICYmIHNob3VsZEdldFN1Z2dlc3Rpb25zKSB7XHJcbiAgICAgIGlucHV0ID0gaW5wdXQuc2xpY2UoMyk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIGlucHV0O1xyXG4gIH1cclxuXHJcbiAgLy8gQWxsb3cgdGhlIGtleWJvYXJkIHRvIGJlIHVzZWQgdG8gZWl0aGVyIHRyYXZlcnNlIHVwIGFuZCBkb3duIHRoZSBwaWNrbGlzdCBhbmQgc2VsZWN0IGFuIGl0ZW0sIG9yIHRyaWdnZXIgYSBuZXcgc2VhcmNoXHJcbiAgcHJpdmF0ZSBoYW5kbGVLZXlib2FyZEV2ZW50KGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cclxuICAgIC8vIEhhbmRsZSBrZXlib2FyZCBuYXZpZ2F0aW9uXHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleShldmVudCk7XHJcblxyXG4gICAgLy8gSWYgYSBwaWNrbGlzdCBpcyBwb3B1bGF0ZWQgdGhlbiB0cmlnZ2VyIGl0cyBrZXl1cCBldmVudCB0byBzZWxlY3QgYW4gaXRlbVxyXG4gICAgaWYgKHRoaXMucGlja2xpc3Quc2l6ZSkge1xyXG4gICAgICBpZiAoa2V5ID09PSAnQXJyb3dVcCcgfHwga2V5ID09PSAnQXJyb3dEb3duJyB8fCBrZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LmtleXVwKGV2ZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIE90aGVyd2lzZSwgZW5hYmxlIHByZXNzaW5nICdlbnRlcicgdG8gdHJpZ2dlciBhIG5ldyBzZWFyY2hcclxuICAgICAgaWYgKGtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgIHRoaXMuc2VhcmNoKGV2ZW50KTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIE1haW4gZnVuY3Rpb24gdG8gc2VhcmNoIGZvciBhbiBhZGRyZXNzIGZyb20gYW4gaW5wdXQgc3RyaW5nXHJcbiAgcHJpdmF0ZSBzZWFyY2goZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50U2VhcmNoVGVybSA9IHRoaXMuaW5wdXRzLm1hcChpbnB1dCA9PiBpbnB1dC52YWx1ZSkuam9pbignLCcpO1xyXG5cclxuICAgIC8vIEdyYWIgdGhlIGNvdW50cnkgSVNPIGNvZGUgYW5kIChpZiBpdCBpcyBwcmVzZW50KSB0aGUgZGF0YXNldCBuYW1lIGZyb20gdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGNvdW50cnlMaXN0IChmb3JtYXQ6IHtjb3VudHJ5SXNvQ29kZX07e2RhdGFzZXR9KVxyXG4gICAgY29uc3QgY3VycmVudENvdW50cnlJbmZvID0gdGhpcy5jb3VudHJ5Q29kZU1hcHBpbmdbdGhpcy5jdXJyZW50Q291bnRyeUNvZGVdIHx8IHRoaXMuY3VycmVudENvdW50cnlDb2RlO1xyXG4gICAgY29uc3QgY291bnRyeUNvZGVBbmREYXRhc2V0ID0gY3VycmVudENvdW50cnlJbmZvLnNwbGl0KCc7Jyk7XHJcblxyXG4gICAgdGhpcy5jdXJyZW50Q291bnRyeUNvZGUgPSBjb3VudHJ5Q29kZUFuZERhdGFzZXRbMF07XHJcbiAgICBpZiAoY291bnRyeUNvZGVBbmREYXRhc2V0WzFdKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudERhdGFTZXQgPSBjb3VudHJ5Q29kZUFuZERhdGFzZXRbMV07XHJcbiAgICB9XHJcblxyXG4gICAgLy8gKFJlLSlzZXQgdGhlIHByb3BlcnR5IHN0YXRpbmcgd2hldGhlciB0aGUgc2VhcmNoIGlucHV0IGhhcyBiZWVuIHJlc2V0LlxyXG4gICAgLy8gVGhpcyBpcyBuZWVkZWQgZm9yIGluc3RhbmNlcyB3aGVuIHRoZSBzZWFyY2ggaW5wdXQgaXMgYWxzbyBhbiBhZGRyZXNzXHJcbiAgICAvLyBvdXRwdXQgZmllbGQuIEFmdGVyIGFuIGFkZHJlc3MgaGFzIGJlZW4gcmV0dXJuZWQsIHlvdSBkb24ndCB3YW50IGEgbmV3IFxyXG4gICAgLy8gc2VhcmNoIGJlaW5nIHRyaWdnZXJlZCB1bnRpbCB0aGUgZmllbGQgaGFzIGJlZW4gY2xlYXJlZC5cclxuICAgIGlmICh0aGlzLmN1cnJlbnRTZWFyY2hUZXJtID09PSAnJykge1xyXG4gICAgICB0aGlzLmhhc1NlYXJjaElucHV0QmVlblJlc2V0ID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBDaGVjayBpZiBzZWFyY2hpbmcgaXMgcGVybWl0dGVkXHJcbiAgICBpZiAodGhpcy5jYW5TZWFyY2goKSkge1xyXG4gICAgICAvLyBBYm9ydCBhbnkgb3V0c3RhbmRpbmcgcmVxdWVzdHNcclxuICAgICAgaWYgKHRoaXMucmVxdWVzdC5jdXJyZW50UmVxdWVzdCkge1xyXG4gICAgICAgIHRoaXMucmVxdWVzdC5jdXJyZW50UmVxdWVzdC5hYm9ydCgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZWdleCB0aGF0IGNoZWNrcyBpZiB0aGUgaW5wdXQgaXMgdGhlIGZvcm1hdCBmb3IgYSB3aGF0M3dvcmRzIHNlYXJjaC4gRXg6IC8vL2EuYi5jXHJcbiAgICAgIGNvbnN0IHJlZ2V4ID0gL15cXC97MCx9KD86W14wLTlgfiFAIyQlXiYqKCkrXFwtXz1be1xcXX1cXFxcfCc8LC4+Py9cIjs6wqPCp8K6wqnCrlxcc10rWy7vvaHjgILvvaXjg7vvuJLhn5TWieGBi9uU4Y2i4KWkXVteMC05YH4hQCMkJV4mKigpK1xcLV89W3tcXF19XFxcXHwnPCwuPj8vXCI7OsKjwqfCusKpwq5cXHNdK1su772h44CC772l44O777iS4Z+U1onhgYvblOGNouClpF1bXjAtOWB+IUAjJCVeJiooKStcXC1fPVt7XFxdfVxcXFx8JzwsLj4/L1wiOzrCo8KnwrrCqcKuXFxzXSt8W14wLTlgfiFAIyQlXiYqKCkrXFwtXz1be1xcXX1cXFxcfCc8LC4+Py9cIjs6wqPCp8K6wqnCrlxcc10rKFtcXHUwMDIwXFx1MDBBMF1bXjAtOWB+IUAjJCVeJiooKStcXC1fPVt7XFxdfVxcXFx8JzwsLj4/L1wiOzrCo8KnwrrCqcKuXFxzXSspezEsM31bLu+9oeOAgu+9peODu++4kuGflNaJ4YGL25ThjaLgpaRdW14wLTlgfiFAIyQlXiYqKCkrXFwtXz1be1xcXX1cXFxcfCc8LC4+Py9cIjs6wqPCp8K6wqnCrlxcc10rKFtcXHUwMDIwXFx1MDBBMF1bXjAtOWB+IUAjJCVeJiooKStcXC1fPVt7XFxdfVxcXFx8JzwsLj4/L1wiOzrCo8KnwrrCqcKuXFxzXSspezEsM31bLu+9oeOAgu+9peODu++4kuGflNaJ4YGL25ThjaLgpaRdW14wLTlgfiFAIyQlXiYqKCkrXFwtXz1be1xcXX1cXFxcfCc8LC4+Py9cIjs6wqPCp8K6wqnCrlxcc10rKFtcXHUwMDIwXFx1MDBBMF1bXjAtOWB+IUAjJCVeJiooKStcXC1fPVt7XFxdfVxcXFx8JzwsLj4/L1wiOzrCo8KnwrrCqcKuXFxzXSspezEsM30pJC87XHJcblxyXG4gICAgICBpZiAocmVnZXgudGVzdCh0aGlzLmN1cnJlbnRTZWFyY2hUZXJtLnRyaW0oKSkgJiYgdGhpcy5vcHRpb25zLmVuYWJsZVdoYXQzV29yZHMgJiYgdGhpcy53aGF0M1dvcmRDb3VudHJpZXMuaW5kZXhPZih0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZSkgPiAtMSkge1xyXG4gICAgICAgIHRoaXMuaXNXaGF0M1dvcmRzID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtID0gdGhpcy5jdXJyZW50U2VhcmNoVGVybS50cmltKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgdGhpcy5pc1doYXQzV29yZHMgPSBmYWxzZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRmlyZSBhbiBldmVudCBiZWZvcmUgYSBzZWFyY2ggdGFrZXMgcGxhY2VcclxuICAgICAgdGhpcy5ldmVudHMudHJpZ2dlcigncHJlLXNlYXJjaCcsIHRoaXMuY3VycmVudFNlYXJjaFRlcm0pO1xyXG5cclxuICAgICAgLy8gQ29uc3RydWN0IHRoZSBuZXcgU2VhcmNoIFVSTCBhbmQgZGF0YVxyXG4gICAgICBjb25zdCBkYXRhID0gdGhpcy5pc1doYXQzV29yZHMgPyB0aGlzLmdlbmVyYXRlTG9va3VwRGF0YUZvckFwaUNhbGwodGhpcy5jdXJyZW50U2VhcmNoVGVybSwgdHJ1ZSkgOiB0aGlzLmdlbmVyYXRlU2VhcmNoRGF0YUZvckFwaUNhbGwoKTtcclxuXHJcbiAgICAgIC8vIFN0b3JlIHRoZSBsYXN0IHNlYXJjaCB0ZXJtXHJcbiAgICAgIHRoaXMubGFzdFNlYXJjaFRlcm0gPSB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtO1xyXG5cclxuICAgICAgLy8gSGlkZSB0aGUgaW5saW5lIHNlYXJjaCBzcGlubmVyXHJcbiAgICAgIHRoaXMuc2VhcmNoU3Bpbm5lci5oaWRlKCk7XHJcblxyXG4gICAgICAvLyBTaG93IGFuIGlubGluZSBzcGlubmVyIHdoaWxzdCBzZWFyY2hpbmdcclxuICAgICAgdGhpcy5zZWFyY2hTcGlubmVyLnNob3coKTtcclxuXHJcbiAgICAgIGxldCB1cmwsIGhlYWRlcnMsIGNhbGxiYWNrO1xyXG4gICAgICAvLyBTZXQgdGhlIEFQSSBVUkwsIGhlYWRlcnMgYW5kIGNhbGxiYWNrIGZ1bmN0aW9uIGRlcGVuZGluZyBvbiB0aGUgc2VhcmNoIHR5cGVcclxuICAgICAgaWYgKHRoaXMuaXNXaGF0M1dvcmRzKSB7XHJcbiAgICAgICAgdXJsID0gdGhpcy5iYXNlVXJsICsgdGhpcy5sb29rdXBFbmRwb2ludDtcclxuICAgICAgICBoZWFkZXJzID0gW107XHJcbiAgICAgICAgY2FsbGJhY2sgPSB0aGlzLnBpY2tsaXN0LnNob3dXaGF0M1dvcmRzO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHVybCA9IHRoaXMuYmFzZVVybCArICh0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5WQUxJREFURSA/IHRoaXMudmFsaWRhdGVFbmRwb2ludCA6IHRoaXMuc2VhcmNoRW5kcG9pbnQpO1xyXG4gICAgICAgIGhlYWRlcnMgPSB0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5WQUxJREFURSA/IFt7IGtleTogJ0FkZC1NZXRhZGF0YScsIHZhbHVlOiB0cnVlIH1dIDogW107XHJcbiAgICAgICAgY2FsbGJhY2sgPSB0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5WQUxJREFURSA/IHRoaXMucmVzdWx0LmhhbmRsZVZhbGlkYXRlUmVzcG9uc2UgOiB0aGlzLnBpY2tsaXN0LnNob3c7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEluaXRpYXRlIG5ldyBTZWFyY2ggcmVxdWVzdFxyXG4gICAgICB0aGlzLnJlcXVlc3Quc2VuZCh1cmwsICdQT1NUJywgY2FsbGJhY2ssIGRhdGEsIGhlYWRlcnMpO1xyXG5cclxuICAgIH0gZWxzZSBpZiAodGhpcy5sYXN0U2VhcmNoVGVybSAhPT0gdGhpcy5jdXJyZW50U2VhcmNoVGVybSkge1xyXG4gICAgICAvLyBDbGVhciB0aGUgcGlja2xpc3QgaWYgdGhlIHNlYXJjaCB0ZXJtIGlzIGNsZWFyZWQvZW1wdHlcclxuICAgICAgdGhpcy5waWNrbGlzdC5oaWRlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLyBIZWxwZXIgbWV0aG9kIHRvIHJldHVybiBhIGNvbnNpc3RlbnQga2V5IG5hbWVcclxuICBwcml2YXRlIGdldEtleSh7IGtleSB9KTogc3RyaW5nIHtcclxuICAgIHN3aXRjaCAoa2V5KSB7XHJcbiAgICAgIGNhc2UgJ0Rvd24nOlxyXG4gICAgICBjYXNlICdBcnJvd0Rvd24nOlxyXG4gICAgICAgIHJldHVybiAnQXJyb3dEb3duJztcclxuICAgICAgY2FzZSAnVXAnOlxyXG4gICAgICBjYXNlICdBcnJvd1VwJzpcclxuICAgICAgICByZXR1cm4gJ0Fycm93VXAnO1xyXG4gICAgICBjYXNlICdTcGFjZWJhcic6XHJcbiAgICAgIGNhc2UgJyAnOlxyXG4gICAgICAgIHJldHVybiAnICc7XHJcbiAgICAgIGNhc2UgJ0VzY2FwZSc6XHJcbiAgICAgIGNhc2UgJ0VzYyc6XHJcbiAgICAgICAgcmV0dXJuICdFc2NhcGUnO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHJldHVybiBrZXk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNhblNlYXJjaCgpOiBib29sZWFuIHtcclxuICAgIC8vIElmIHNlYXJjaGluZyBvbiB0aGlzIGluc3RhbmNlIGlzIGVuYWJsZWQsIGFuZFxyXG4gICAgcmV0dXJuICh0aGlzLm9wdGlvbnMuZW5hYmxlZCAmJlxyXG4gICAgICAvLyBJZiBzZWFyY2ggdGVybSBpcyBub3QgZW1wdHksIGFuZFxyXG4gICAgICB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtICE9PSAnJyAmJlxyXG4gICAgICAvLyBJZiB0aGUgc2VhcmNoIHRlcm0gaXMgYXQgbGVhc3QgNCBjaGFyYWN0ZXJzXHJcbiAgICAgIHRoaXMuY3VycmVudFNlYXJjaFRlcm0ubGVuZ3RoID4gMyAmJlxyXG4gICAgICAvLyBJZiBzZWFyY2ggdGVybSBpcyBub3QgdGhlIHNhbWUgYXMgcHJldmlvdXMgc2VhcmNoIHRlcm0sIGFuZFxyXG4gICAgICB0aGlzLmxhc3RTZWFyY2hUZXJtICE9PSB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtICYmXHJcbiAgICAgIC8vIElmIHRoZSBjb3VudHJ5IGlzIG5vdCBlbXB0eSwgYW5kXHJcbiAgICAgIHRoaXMuY3VycmVudENvdW50cnlDb2RlICYmXHJcbiAgICAgIC8vIElmIHNlYXJjaCBpbnB1dCBoYXMgYmVlbiByZXNldCAoaWYgYXBwbGljYWJsZSlcclxuICAgICAgdGhpcy5oYXNTZWFyY2hJbnB1dEJlZW5SZXNldCA9PT0gdHJ1ZSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHBvd2VyZWRCeUxvZ286IFBvd2VyZWRCeUxvZ28gPSB7XHJcbiAgICBlbGVtZW50OiBudWxsLFxyXG4gICAgLy8gQ3JlYXRlIGEgXCJQb3dlcmVkIGJ5IEV4cGVyaWFuXCIgZm9vdGVyXHJcbiAgICBjcmVhdGUocGlja2xpc3QpIHtcclxuICAgICAgY29uc3QgaXRlbSA9IHtcclxuICAgICAgICB0ZXh0OiBgJHt0aGlzLnN2Z30gPGVtPlBvd2VyZWQgYnkgRXhwZXJpYW48L2VtPmAsXHJcbiAgICAgICAgZm9ybWF0OiAnJ1xyXG4gICAgICB9O1xyXG4gICAgICBjb25zdCBsaXN0SXRlbSA9IHBpY2tsaXN0LmNyZWF0ZUxpc3RJdGVtKGl0ZW0pO1xyXG4gICAgICBsaXN0SXRlbS5jbGFzc0xpc3QuYWRkKCdwb3dlcmVkLWJ5LWV4cGVyaWFuJyk7XHJcbiAgICAgIHBpY2tsaXN0Lmxpc3QucGFyZW50Tm9kZS5hcHBlbmRDaGlsZChsaXN0SXRlbSk7XHJcbiAgICAgIHJldHVybiBsaXN0SXRlbTtcclxuICAgIH0sXHJcbiAgICAvLyBEZXN0cm95IHRoZSBcIlBvd2VyZWQgYnkgRXhwZXJpYW5cIiBmb290ZXJcclxuICAgIGRlc3Ryb3kocGlja2xpc3QpIHtcclxuICAgICAgaWYgKHRoaXMuZWxlbWVudCkge1xyXG4gICAgICAgIHBpY2tsaXN0Lmxpc3QucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLmVsZW1lbnQpO1xyXG4gICAgICAgIHRoaXMuZWxlbWVudCA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHN2ZzogYDxzdmcgY2xhc3M9XCJleHBlcmlhbi1sb2dvXCIgdmVyc2lvbj1cIjEuMVwiIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiB4bWxuczp4bGluaz1cImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIiB4PVwiMHB4XCIgeT1cIjBweFwiIHZpZXdCb3g9XCIwIDAgMTIwIDEyMFwiIHN0eWxlPVwiXCIgeG1sOnNwYWNlPVwicHJlc2VydmVcIiByb2xlPVwiaW1nXCIgYXJpYS1sYWJlbD1cIlBvd2VyZWQgYnkgRXhwZXJpYW5cIj5cclxuICAgICAgICAgICAgPHRpdGxlPkV4cGVyaWFuIGxvZ288L3RpdGxlPlxyXG4gICAgICAgICAgICA8Zz5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0eWxlPVwiZmlsbDogIzBFNkVCNlwiIGQ9XCJNNTYuMSwyN2gtMTNjLTMuOSwwLTctMy4xLTctN1Y3YzAtMy45LDMuMS03LDctN2gxM2MzLjksMCw3LDMuMSw3LDd2MTNDNjMuMSwyMy44LDYwLDI3LDU2LjEsMjdcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBzdHlsZT1cImZpbGw6ICM3MjIxN0JcIiBkPVwiTTIyLjUsNTYuMUg3LjljLTQuMywwLTcuOS0zLjUtNy45LTcuOVYzMy42YzAtNC4zLDMuNS03LjksNy45LTcuOWgxNC42YzQuMywwLDcuOSwzLjUsNy45LDcuOXYxNC42QzMwLjQsNTIuNiwyNi44LDU2LjEsMjIuNSw1Ni4xXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9XCJmaWxsOiAjQjEyMzg0XCIgZD1cIk0yMS4xLDg2LjRoLTguOWMtMi43LDAtNC44LTIuMS00LjgtNC44di04LjljMC0yLjcsMi4yLTQuOCw0LjgtNC44aDguOWMyLjcsMCw0LjgsMi4yLDQuOCw0Ljh2OC45QzI1LjksODQuMywyMy43LDg2LjQsMjEuMSw4Ni40XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9XCJmaWxsOiAjRTcyODg3XCIgZD1cIk00NS4xLDExNC43SDM0LjVjLTMuMSwwLTUuNy0yLjUtNS43LTUuN1Y5OC40YzAtMy4xLDIuNS01LjcsNS43LTUuN2gxMC42YzMuMSwwLDUuNywyLjUsNS43LDUuN1YxMDlDNTAuNywxMTIuMSw0OC4yLDExNC43LDQ1LjEsMTE0LjdcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBzdHlsZT1cImZpbGw6ICNFNzI4ODdcIiBkPVwiTTgzLjgsMzIuM2gtNy4zYy0yLjIsMC0zLjktMS44LTMuOS0zLjl2LTcuM2MwLTIuMiwxLjgtMy45LDMuOS0zLjloNy4zYzIuMiwwLDMuOSwxLjgsMy45LDMuOXY3LjNDODcuNywzMC41LDg1LjksMzIuMyw4My44LDMyLjNcIj48L3BhdGg+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBzdHlsZT1cImZpbGw6ICMwMDQ2OTFcIiBkPVwiTTgxLjcsNjEuOEM4MS41LDUxLjEsNzIsNDIsNjAuNyw0MkM0OSw0MiwzOS42LDUxLjMsMzkuNiw2Mi45QzM5LjYsNzQuNiw0OSw4NCw2MC43LDg0YzUuNiwwLDEwLjgtMi4yLDE0LjYtNS45YzAuNy0wLjcsMS4yLTEuNiwxLjItMi42YzAtMS45LTEuNi0zLjUtMy41LTMuNWMtMS4xLDAtMiwwLjctMi44LDEuNGMtMi40LDIuNS01LjksMy43LTkuNSwzLjdjLTcsMC0xMi43LTQuOC0xMy45LTExLjVoMzEuNWMwLDAsMCwwLDAuMSwwaDAuMWMwLjEsMCwwLjEsMCwwLjIsMGMwLjEsMCwwLjIsMCwwLjQtMC4xQzgwLjQsNjUsODEuNyw2My42LDgxLjcsNjEuOHogTTYwLjcsNDguOWM2LjMsMCwxMS42LDQuMSwxMy40LDkuN0g0Ny4zQzQ5LjEsNTMsNTQuMyw0OC45LDYwLjcsNDguOXpcIj48L3BhdGg+XHJcbiAgICAgICAgICAgIDwvZz5cclxuICAgICAgICA8L3N2Zz5gXHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBjcmVhdGVQaWNrbGlzdCgpIHtcclxuICAgIC8vIEluc3RhbnRpYXRlIGEgbmV3IFBpY2tsaXN0IGNsYXNzIGFuZCBzZXQgdGhlIHByb3BlcnRpZXMgYmVsb3dcclxuICAgIHRoaXMucGlja2xpc3QgPSBuZXcgUGlja2xpc3QoKTtcclxuXHJcbiAgICAvLyBTZXQgaW5pdGlhbCBtYXggc2l6ZVxyXG4gICAgdGhpcy5waWNrbGlzdC5tYXhTdWdnZXN0aW9ucyA9IDI1O1xyXG4gICAgLy8gVGFiIGNvdW50IHVzZWQgZm9yIGtleWJvYXJkIG5hdmlnYXRpb25cclxuICAgIHRoaXMucGlja2xpc3QudGFiQ291bnQgPSAtMTtcclxuICAgIC8vIFJlbmRlciBhIHBpY2tsaXN0IG9mIHNlYXJjaCByZXN1bHRzXHJcblxyXG4gICAgdGhpcy5waWNrbGlzdC5zaG93ID0gKGl0ZW1zOiBTZWFyY2hSZXNwb25zZSkgPT4ge1xyXG4gICAgICAvLyBTdG9yZSB0aGUgcGlja2xpc3QgaXRlbXNcclxuICAgICAgdGhpcy5waWNrbGlzdC5pdGVtcyA9IGl0ZW1zPy5yZXN1bHQuc3VnZ2VzdGlvbnM7XHJcblxyXG4gICAgICB0aGlzLnBpY2tsaXN0LmhhbmRsZUNvbW1vblNob3dQaWNrbGlzdExvZ2ljKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5waWNrbGlzdC5pdGVtcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vIElmIGEgcGlja2xpc3QgbmVlZHMgXCJyZWZpbmluZ1wiIHRoZW4gcHJlcGVuZCBhIHRleHRib3ggdG8gYWxsb3cgdGhlIHVzZXIgdG8gZW50ZXIgdGhlaXIgc2VsZWN0aW9uXHJcbiAgICAgICAgaWYgKHRoaXMucGlja2xpc3QucmVmaW5lLmlzTmVlZGVkKGl0ZW1zKSkge1xyXG4gICAgICAgICAgdGhpcy5waWNrbGlzdC5yZWZpbmUuY3JlYXRlSW5wdXQoaXRlbXMucmVzdWx0LnN1Z2dlc3Rpb25zX3Byb21wdCwgaXRlbXMucmVzdWx0LnN1Z2dlc3Rpb25zX2tleSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuVkFMSURBVEUpIHtcclxuICAgICAgICAgIHRoaXMucGlja2xpc3QuZGlzcGxheVN1Z2dlc3Rpb25zSGVhZGVyKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBJdGVyYXRlIG92ZXIgYW5kIHNob3cgcmVzdWx0c1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBpdGVtL3JvdyBpbiB0aGUgcGlja2xpc3RcclxuICAgICAgICAgIGNvbnN0IGxpc3RJdGVtID0gdGhpcy5waWNrbGlzdC5jcmVhdGVMaXN0SXRlbShpdGVtKTtcclxuICAgICAgICAgIHRoaXMucGlja2xpc3QubGlzdC5hcHBlbmRDaGlsZChsaXN0SXRlbSk7XHJcblxyXG4gICAgICAgICAgLy8gTGlzdGVuIGZvciBzZWxlY3Rpb24gb24gdGhpcyBpdGVtXHJcbiAgICAgICAgICB0aGlzLnBpY2tsaXN0Lmxpc3RlbihsaXN0SXRlbSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5WQUxJREFURSkge1xyXG4gICAgICAgICAgdGhpcy5waWNrbGlzdC5kaXNwbGF5VXNlQWRkcmVzc0VudGVyZWRGb290ZXIoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucGlja2xpc3Quc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QuaGFuZGxlRW1wdHlQaWNrbGlzdChpdGVtcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFkZCBhIFwiUG93ZXJlZCBieSBFeHBlcmlhblwiIGxvZ28gdG8gdGhlIHBpY2tsaXN0IGZvb3RlclxyXG4gICAgICB0aGlzLnBvd2VyZWRCeUxvZ28uZWxlbWVudCA9IHRoaXMucG93ZXJlZEJ5TG9nby5lbGVtZW50IHx8IHRoaXMucG93ZXJlZEJ5TG9nby5jcmVhdGUodGhpcy5waWNrbGlzdCk7XHJcblxyXG4gICAgICAvLyBGaXJlIGFuIGV2ZW50IGFmdGVyIHBpY2tsaXN0IGlzIGNyZWF0ZWRcclxuICAgICAgdGhpcy5ldmVudHMudHJpZ2dlcigncG9zdC1waWNrbGlzdC1jcmVhdGUnLCB0aGlzLnBpY2tsaXN0Lml0ZW1zKTtcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5waWNrbGlzdC5zaG93V2hhdDNXb3JkcyA9IChpdGVtczogTG9va3VwVzNXUmVzcG9uc2UpID0+IHtcclxuICAgICAgLy8gU3RvcmUgdGhlIHBpY2tsaXN0IGl0ZW1zXHJcbiAgICAgIHRoaXMucGlja2xpc3Qud2hhdDN3b3Jkc0l0ZW1zID0gaXRlbXM/LnJlc3VsdC5zdWdnZXN0aW9ucztcclxuXHJcbiAgICAgIHRoaXMucGlja2xpc3QuaGFuZGxlQ29tbW9uU2hvd1BpY2tsaXN0TG9naWMoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnBpY2tsaXN0LndoYXQzd29yZHNJdGVtcz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIC8vIEl0ZXJhdGUgb3ZlciBhbmQgc2hvdyByZXN1bHRzXHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC53aGF0M3dvcmRzSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBpdGVtL3JvdyBpbiB0aGUgcGlja2xpc3RcclxuICAgICAgICAgIGNvbnN0IGxpc3RJdGVtID0gdGhpcy5waWNrbGlzdC5jcmVhdGVXaGF0M1dvcmRzTGlzdEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICB0aGlzLnBpY2tsaXN0Lmxpc3QuYXBwZW5kQ2hpbGQobGlzdEl0ZW0pO1xyXG5cclxuICAgICAgICAgIC8vIExpc3RlbiBmb3Igc2VsZWN0aW9uIG9uIHRoaXMgaXRlbVxyXG4gICAgICAgICAgdGhpcy5waWNrbGlzdC5saXN0ZW4obGlzdEl0ZW0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnBpY2tsaXN0LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LmhhbmRsZUVtcHR5UGlja2xpc3QoaXRlbXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBBZGQgYSBcIlBvd2VyZWQgYnkgRXhwZXJpYW5cIiBsb2dvIHRvIHRoZSBwaWNrbGlzdCBmb290ZXJcclxuICAgICAgdGhpcy5wb3dlcmVkQnlMb2dvLmVsZW1lbnQgPSB0aGlzLnBvd2VyZWRCeUxvZ28uZWxlbWVudCB8fCB0aGlzLnBvd2VyZWRCeUxvZ28uY3JlYXRlKHRoaXMucGlja2xpc3QpO1xyXG5cclxuICAgICAgLy8gRmlyZSBhbiBldmVudCBhZnRlciBwaWNrbGlzdCBpcyBjcmVhdGVkXHJcbiAgICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3Bvc3QtcGlja2xpc3QtY3JlYXRlJywgdGhpcy5waWNrbGlzdC5pdGVtcyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMucGlja2xpc3Quc2hvd0xvb2t1cCA9IChpdGVtczogTG9va3VwVjJSZXNwb25zZSkgPT4ge1xyXG4gICAgICAvLyBTZXQgaXNXaGF0M1dvcmRzIHRvIFwiZmFsc2VcIiBhcyB3ZSBhcmUgbm8gbG9uZ2VyIHNob3dpbmcgd2hhdDN3b3JkcyBhZGRyZXNzZXMgXHJcbiAgICAgIHRoaXMuaXNXaGF0M1dvcmRzID0gZmFsc2U7XHJcblxyXG4gICAgICAvLyBTdG9yZSB0aGUgcGlja2xpc3QgaXRlbXNcclxuICAgICAgdGhpcy5waWNrbGlzdC5sb29rdXBJdGVtcyA9IGl0ZW1zPy5yZXN1bHQuYWRkcmVzc2VzO1xyXG5cclxuICAgICAgdGhpcy5waWNrbGlzdC5oYW5kbGVDb21tb25TaG93UGlja2xpc3RMb2dpYygpO1xyXG5cclxuICAgICAgaWYgKHRoaXMucGlja2xpc3QubG9va3VwSXRlbXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyBJdGVyYXRlIG92ZXIgYW5kIHNob3cgcmVzdWx0c1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QubG9va3VwSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuICAgICAgICAgIC8vIENyZWF0ZSBhIG5ldyBpdGVtL3JvdyBpbiB0aGUgcGlja2xpc3RcclxuICAgICAgICAgIGNvbnN0IGxpc3RJdGVtID0gdGhpcy5waWNrbGlzdC5jcmVhdGVMb29rdXBMaXN0SXRlbShpdGVtKTtcclxuICAgICAgICAgIHRoaXMucGlja2xpc3QubGlzdC5hcHBlbmRDaGlsZChsaXN0SXRlbSk7XHJcblxyXG4gICAgICAgICAgLy8gTGlzdGVuIGZvciBzZWxlY3Rpb24gb24gdGhpcyBpdGVtXHJcbiAgICAgICAgICB0aGlzLnBpY2tsaXN0Lmxpc3RlbihsaXN0SXRlbSk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMucGlja2xpc3Quc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QuaGFuZGxlRW1wdHlQaWNrbGlzdChpdGVtcyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEFkZCBhIFwiUG93ZXJlZCBieSBFeHBlcmlhblwiIGxvZ28gdG8gdGhlIHBpY2tsaXN0IGZvb3RlclxyXG4gICAgICB0aGlzLnBvd2VyZWRCeUxvZ28uZWxlbWVudCA9IHRoaXMucG93ZXJlZEJ5TG9nby5lbGVtZW50IHx8IHRoaXMucG93ZXJlZEJ5TG9nby5jcmVhdGUodGhpcy5waWNrbGlzdCk7XHJcblxyXG4gICAgICAvLyBGaXJlIGFuIGV2ZW50IGFmdGVyIHBpY2tsaXN0IGlzIGNyZWF0ZWRcclxuICAgICAgdGhpcy5ldmVudHMudHJpZ2dlcigncG9zdC1waWNrbGlzdC1jcmVhdGUnLCB0aGlzLnBpY2tsaXN0Lml0ZW1zKTtcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5waWNrbGlzdC5oYW5kbGVDb21tb25TaG93UGlja2xpc3RMb2dpYyA9ICgpID0+IHtcclxuICAgICAgLy8gUmVzZXQgYW55IHByZXZpb3VzbHkgc2VsZWN0ZWQgY3VycmVudCBpdGVtXHJcbiAgICAgIHRoaXMucGlja2xpc3QuY3VycmVudEl0ZW0gPSBudWxsO1xyXG5cclxuICAgICAgLy8gVXBkYXRlIHBpY2tsaXN0IHNpemVcclxuICAgICAgdGhpcy5waWNrbGlzdC5zaXplID0gdGhpcy5waWNrbGlzdC5pdGVtcz8ubGVuZ3RoO1xyXG5cclxuICAgICAgLy8gUmVzZXQgdGhlIHBpY2tsaXN0IHRhYiBjb3VudCAodXNlZCBmb3Iga2V5Ym9hcmQgbmF2aWdhdGlvbilcclxuICAgICAgdGhpcy5waWNrbGlzdC5yZXNldFRhYkNvdW50KCk7XHJcblxyXG4gICAgICAvLyBIaWRlIHRoZSBpbmxpbmUgc2VhcmNoIHNwaW5uZXJcclxuICAgICAgdGhpcy5zZWFyY2hTcGlubmVyLmhpZGUoKTtcclxuXHJcbiAgICAgIC8vIEdldC9DcmVhdGUgcGlja2xpc3QgY29udGFpbmVyIGVsZW1lbnRcclxuICAgICAgdGhpcy5waWNrbGlzdC5saXN0ID0gdGhpcy5waWNrbGlzdC5saXN0IHx8IHRoaXMucGlja2xpc3QuY3JlYXRlTGlzdCgpO1xyXG5cclxuICAgICAgLy8gRW5zdXJlIHByZXZpb3VzIHJlc3VsdHMgYXJlIGNsZWFyZWRcclxuICAgICAgdGhpcy5waWNrbGlzdC5saXN0LmlubmVySFRNTCA9ICcnO1xyXG4gICAgICB0aGlzLnBpY2tsaXN0LnVzZUFkZHJlc3NFbnRlcmVkLmRlc3Ryb3koKTtcclxuXHJcbiAgICAgIC8vIEZpcmUgYW4gZXZlbnQgYmVmb3JlIHBpY2tsaXN0IGlzIGNyZWF0ZWRcclxuICAgICAgdGhpcy5ldmVudHMudHJpZ2dlcigncHJlLXBpY2tsaXN0LWNyZWF0ZScsIHRoaXMucGlja2xpc3QuaXRlbXMpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBSZW1vdmUgdGhlIHBpY2tsaXN0XHJcbiAgICB0aGlzLnBpY2tsaXN0LmhpZGUgPSAoKSA9PiB7XHJcbiAgICAgIC8vIENsZWFyIHRoZSBjdXJyZW50IHBpY2tsaXN0IGl0ZW1cclxuICAgICAgdGhpcy5waWNrbGlzdC5jdXJyZW50SXRlbSA9IG51bGw7XHJcbiAgICAgIC8vIFJlbW92ZSB0aGUgXCJ1c2UgYWRkcmVzcyBlbnRlcmVkXCIgb3B0aW9uIHRvb1xyXG4gICAgICB0aGlzLnBpY2tsaXN0LnVzZUFkZHJlc3NFbnRlcmVkLmRlc3Ryb3koKTtcclxuICAgICAgLy8gUmVtb3ZlIHRoZSBcIlBvd2VyZWQgYnkgRXhwZXJpYW5cIiBsb2dvXHJcbiAgICAgIHRoaXMucG93ZXJlZEJ5TG9nby5kZXN0cm95KHRoaXMucGlja2xpc3QpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuaW5wdXRzKSB7XHJcbiAgICAgICAgLy8gUmVtb3ZlIHRoZSBjbGFzcyBkZW5vdGluZyBhIHBpY2tsaXN0IC0gaWYgU2luZ2xlbGluZSBtb2RlIGlzIHVzZWQsIHRoZW4gaXQgaXMgdGhlIGxhc3QgaW5wdXQgZmllbGQsIG90aGVyd2lzZSB1c2UgdGhlIGZpcnN0IG9uZVxyXG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuU0lOR0xFTElORSA/IHRoaXMuaW5wdXRzLmxlbmd0aCAtIDEgOiAwO1xyXG4gICAgICAgIHRoaXMuaW5wdXRzW3Bvc2l0aW9uXS5jbGFzc0xpc3QucmVtb3ZlKCdzaG93aW5nLXN1Z2dlc3Rpb25zJyk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJlbW92ZSB0aGUgbWFpbiBwaWNrbGlzdCBjb250YWluZXJcclxuICAgICAgaWYgKHRoaXMucGlja2xpc3QubGlzdCkge1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QuY29udGFpbmVyLnJlbW92ZSgpO1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QubGlzdCA9IHVuZGVmaW5lZDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnBpY2tsaXN0LmhhbmRsZUVtcHR5UGlja2xpc3QgPSAoaXRlbXM6IFNlYXJjaFJlc3BvbnNlIHwgTG9va3VwVzNXUmVzcG9uc2UgfCBMb29rdXBWMlJlc3BvbnNlKSA9PiB7XHJcbiAgICAgIC8vIENyZWF0ZSBhIG5ldyBpdGVtL3JvdyBpbiB0aGUgcGlja2xpc3Qgc2hvd2luZyBcIk5vIG1hdGNoZXNcIiB0aGF0IGFsbG93cyB0aGUgXCJ1c2UgYWRkcmVzcyBlbnRlcmVkXCIgb3B0aW9uXHJcbiAgICAgIHRoaXMucGlja2xpc3QudXNlQWRkcmVzc0VudGVyZWQuZWxlbWVudCA9IHRoaXMucGlja2xpc3QudXNlQWRkcmVzc0VudGVyZWQuZWxlbWVudCB8fCB0aGlzLnBpY2tsaXN0LnVzZUFkZHJlc3NFbnRlcmVkLmNyZWF0ZShpdGVtcy5yZXN1bHQ/LmNvbmZpZGVuY2UpO1xyXG5cclxuICAgICAgdGhpcy5waWNrbGlzdC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKCk7XHJcblxyXG4gICAgICAvLyBQcm92aWRlIGltcGxlbWVudGluZyBzZWFyY2ggdHlwZXMgd2l0aCBhIG1lYW5zIG9mIGludm9raW5nIGEgY3VzdG9tIGNhbGxiYWNrXHJcbiAgICAgIGlmICh0eXBlb2YgdGhpcy5waWNrbGlzdC5oYW5kbGVFbXB0eVBpY2tsaXN0Q2FsbGJhY2sgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LmhhbmRsZUVtcHR5UGlja2xpc3RDYWxsYmFjaygpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIFByZXBlbmQgYSB0aXRsZSBiZWZvcmUgdGhlIHN1Z2dlc3Rpb25zXHJcbiAgICB0aGlzLnBpY2tsaXN0LmRpc3BsYXlTdWdnZXN0aW9uc0hlYWRlciA9ICgpID0+IHtcclxuICAgICAgY29uc3QgdGl0bGVEaXYgPSAoPEhUTUxFbGVtZW50PmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5waWNrbGlzdC1zdWdnZXN0aW9ucy1oZWFkZXInKSB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XHJcbiAgICAgIHRpdGxlRGl2LmNsYXNzTGlzdC5hZGQoJ3BpY2tsaXN0LXN1Z2dlc3Rpb25zLWhlYWRlcicpO1xyXG4gICAgICB0aXRsZURpdi5pbm5lclRleHQgPSAnU3VnZ2VzdGlvbnM6JztcclxuICAgICAgdGhpcy5waWNrbGlzdC5saXN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRpdGxlRGl2LCB0aGlzLnBpY2tsaXN0Lmxpc3QpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBBcHBlbmQgYSBmb290ZXIgYXQgdGhlIGJvdHRvbSBvZiB0aGUgcGlja2xpc3QgcHJvdmlkaW5nIGFuIG9wdGlvbiB0byBcInVzZSBhZGRyZXNzIGVudGVyZWRcIlxyXG4gICAgdGhpcy5waWNrbGlzdC5kaXNwbGF5VXNlQWRkcmVzc0VudGVyZWRGb290ZXIgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IGNvbnRhaW5lckRpdiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5waWNrbGlzdC11c2UtZW50ZXJlZC1jb250YWluZXInKSB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGFpbmVyRGl2LmNsYXNzTGlzdC5hZGQoJ3BpY2tsaXN0LXVzZS1lbnRlcmVkLWNvbnRhaW5lcicpO1xyXG4gICAgICB0aGlzLnBpY2tsaXN0Lmxpc3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoY29udGFpbmVyRGl2LCB0aGlzLnBpY2tsaXN0Lmxpc3QubmV4dEVsZW1lbnRTaWJsaW5nKTtcclxuXHJcbiAgICAgIGNvbnN0IHRpdGxlRGl2ID0gKDxIVE1MRWxlbWVudD5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGlja2xpc3QtdXNlLWVudGVyZWQtaGVhZGVyJykgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xyXG4gICAgICB0aXRsZURpdi5jbGFzc0xpc3QuYWRkKCdwaWNrbGlzdC11c2UtZW50ZXJlZC1oZWFkZXInKTtcclxuICAgICAgdGl0bGVEaXYuaW5uZXJUZXh0ID0gJ09yIHVzZSBhZGRyZXNzIGVudGVyZWQ6JztcclxuICAgICAgY29udGFpbmVyRGl2LmFwcGVuZENoaWxkKHRpdGxlRGl2KTtcclxuXHJcbiAgICAgIGNvbnN0IGl0ZW1EaXYgPSAoPEhUTUxFbGVtZW50PmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5waWNrbGlzdC11c2UtZW50ZXJlZC1vcHRpb24nKSB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSk7XHJcbiAgICAgIGl0ZW1EaXYuY2xhc3NMaXN0LmFkZCgncGlja2xpc3QtdXNlLWVudGVyZWQtb3B0aW9uJyk7XHJcbiAgICAgIGl0ZW1EaXYuaW5uZXJUZXh0ID0gdGhpcy5jdXJyZW50U2VhcmNoVGVybS5yZXBsYWNlKC8sKy9nLCAnLCAnKTtcclxuICAgICAgaXRlbURpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMucGlja2xpc3QudXNlQWRkcmVzc0VudGVyZWQuY2xpY2spO1xyXG4gICAgICBjb250YWluZXJEaXYuYXBwZW5kQ2hpbGQoaXRlbURpdik7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIElmIHRoZSBwaWNrbGlzdCBjb250YWluZXIgaXMgb3V0IG9mIGJvdW5kcyB0byB0aGUgdG9wIG9yIGJvdHRvbSwgdGhlbiBzY3JvbGwgaXQgaW50byB2aWV3XHJcbiAgICB0aGlzLnBpY2tsaXN0LnNjcm9sbEludG9WaWV3SWZOZWVkZWQgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IG91dE9mQm91bmRzVG9wID0gdGhpcy5waWNrbGlzdC5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkudG9wIDwgMDtcclxuICAgICAgY29uc3Qgb3V0T2ZCb3VuZHNCb3R0b20gPSB0aGlzLnBpY2tsaXN0LmNvbnRhaW5lci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gPiB3aW5kb3cuaW5uZXJIZWlnaHQ7XHJcblxyXG4gICAgICBpZiAob3V0T2ZCb3VuZHNUb3AgfHwgb3V0T2ZCb3VuZHNCb3R0b20pIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LmNvbnRhaW5lci5zY3JvbGxJbnRvVmlldygpO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMucGlja2xpc3QudXNlQWRkcmVzc0VudGVyZWQgPSB7XHJcbiAgICAgIGVsZW1lbnQ6IG51bGwsXHJcbiAgICAgIC8vIENyZWF0ZSBhIFwidXNlIGFkZHJlc3MgZW50ZXJlZFwiIG9wdGlvblxyXG4gICAgICBjcmVhdGU6IChjb25maWRlbmNlOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBjb25zdCBpdGVtID0ge1xyXG4gICAgICAgICAgdGV4dDogYCR7Y29uZmlkZW5jZX0gJHt0aGlzLm9wdGlvbnMudXNlQWRkcmVzc0VudGVyZWRUZXh0fWBcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbnN0IGxpc3RJdGVtID0gdGhpcy5waWNrbGlzdC5jcmVhdGVMaXN0SXRlbShpdGVtKTtcclxuICAgICAgICBsaXN0SXRlbS5jbGFzc0xpc3QuYWRkKCd1c2UtYWRkcmVzcy1lbnRlcmVkJyk7XHJcbiAgICAgICAgbGlzdEl0ZW0uc2V0QXR0cmlidXRlKCd0aXRsZScsICdFbnRlciBhZGRyZXNzIG1hbnVhbGx5Jyk7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC5saXN0ID0gdGhpcy5waWNrbGlzdC5saXN0IHx8IHRoaXMucGlja2xpc3QuY3JlYXRlTGlzdCgpO1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QubGlzdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShsaXN0SXRlbSwgdGhpcy5waWNrbGlzdC5jb250YWluZXIuZmlyc3RDaGlsZCk7XHJcbiAgICAgICAgbGlzdEl0ZW0uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnBpY2tsaXN0LnVzZUFkZHJlc3NFbnRlcmVkLmNsaWNrKTtcclxuICAgICAgICByZXR1cm4gbGlzdEl0ZW07XHJcbiAgICAgIH0sXHJcbiAgICAgIC8vIERlc3Ryb3kgdGhlIFwidXNlIGFkZHJlc3MgZW50ZXJlZFwiIG9wdGlvblxyXG4gICAgICBkZXN0cm95OiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucGlja2xpc3QudXNlQWRkcmVzc0VudGVyZWQuZWxlbWVudCkge1xyXG4gICAgICAgICAgdGhpcy5waWNrbGlzdC5saXN0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5waWNrbGlzdC51c2VBZGRyZXNzRW50ZXJlZC5lbGVtZW50KTtcclxuICAgICAgICAgIHRoaXMucGlja2xpc3QudXNlQWRkcmVzc0VudGVyZWQuZWxlbWVudCA9IHVuZGVmaW5lZDtcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIC8vIFVzZSB0aGUgYWRkcmVzcyBlbnRlcmVkIGFzIHRoZSBGb3JtYXR0ZWQgYWRkcmVzc1xyXG4gICAgICBjbGljazogKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IGlucHV0RGF0YSA9IHtcclxuICAgICAgICAgIHJlc3VsdDoge1xyXG4gICAgICAgICAgICBjb25maWRlbmNlOiAnTm8gbWF0Y2hlcycsXHJcbiAgICAgICAgICAgIGFkZHJlc3M6IHtcclxuICAgICAgICAgICAgICBhZGRyZXNzX2xpbmVfMTogJycsXHJcbiAgICAgICAgICAgICAgYWRkcmVzc19saW5lXzI6ICcnLFxyXG4gICAgICAgICAgICAgIGFkZHJlc3NfbGluZV8zOiAnJyxcclxuICAgICAgICAgICAgICBsb2NhbGl0eTogJycsXHJcbiAgICAgICAgICAgICAgcmVnaW9uOiAnJyxcclxuICAgICAgICAgICAgICBwb3N0YWxfY29kZTogJycsXHJcbiAgICAgICAgICAgICAgY291bnRyeTogJydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmN1cnJlbnRTZWFyY2hUZXJtKSB7XHJcbiAgICAgICAgICAvLyBUcnkgYW5kIHNwbGl0IGludG8gbGluZXMgYnkgdXNpbmcgY29tbWEgZGVsaW1pdGVyXHJcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IHRoaXMuY3VycmVudFNlYXJjaFRlcm0uc3BsaXQoJywnKTtcclxuICAgICAgICAgIGlmIChsaW5lc1swXSkge1xyXG4gICAgICAgICAgICBpbnB1dERhdGEucmVzdWx0LmFkZHJlc3MuYWRkcmVzc19saW5lXzEgPSBsaW5lc1swXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChsaW5lc1sxXSkge1xyXG4gICAgICAgICAgICBpbnB1dERhdGEucmVzdWx0LmFkZHJlc3MuYWRkcmVzc19saW5lXzIgPSBsaW5lc1sxXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChsaW5lc1syXSkge1xyXG4gICAgICAgICAgICBpbnB1dERhdGEucmVzdWx0LmFkZHJlc3MuYWRkcmVzc19saW5lXzMgPSBsaW5lc1syXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGZvciAobGV0IGkgPSAzOyBpIDwgbGluZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaW5wdXREYXRhLnJlc3VsdC5hZGRyZXNzLmFkZHJlc3NfbGluZV8zICs9IGxpbmVzW2ldO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5yZXN1bHQuc2hvdyhpbnB1dERhdGEpO1xyXG4gICAgICAgIHRoaXMucmVzdWx0LnVwZGF0ZUhlYWRpbmcodGhpcy5vcHRpb25zLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIubWFudWFsSGVhZGluZ1RleHQpO1xyXG4gICAgICB9LFxyXG4gICAgICAvLyBDcmVhdGUgYW5kIHJldHVybiBhbiBhZGRyZXNzIGxpbmUgb2JqZWN0IHdpdGggdGhlIGtleSBhcyB0aGUgbGFiZWxcclxuICAgICAgZm9ybWF0TWFudWFsQWRkcmVzc0xpbmU6IGZ1bmN0aW9uIChsaW5lcywgaSkge1xyXG4gICAgICAgIGNvbnN0IGtleSA9IGRlZmF1bHRzLmFkZHJlc3NMaW5lTGFiZWxzW2ldO1xyXG4gICAgICAgIGNvbnN0IGxpbmVPYmplY3QgPSB7fTtcclxuICAgICAgICBsaW5lT2JqZWN0W2tleV0gPSBsaW5lc1tpXSB8fCAnJztcclxuICAgICAgICByZXR1cm4gbGluZU9iamVjdDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBDcmVhdGUgdGhlIHBpY2tsaXN0IGxpc3QgKGFuZCBjb250YWluZXIpIGFuZCBpbmplY3QgYWZ0ZXIgdGhlIGlucHV0XHJcbiAgICB0aGlzLnBpY2tsaXN0LmNyZWF0ZUxpc3QgPSAoKSA9PiB7XHJcbiAgICAgIC8vIElmIFNpbmdsZWxpbmUgbW9kZSBpcyB1c2VkLCB0aGVuIGFwcGVuZCB0aGUgcGlja2xpc3QgYWZ0ZXIgdGhlIGxhc3QgaW5wdXQgZmllbGQsIG90aGVyd2lzZSB1c2UgdGhlIGZpcnN0IG9uZVxyXG4gICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuc2VhcmNoVHlwZSA9PT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLlNJTkdMRUxJTkUgPyB0aGlzLmlucHV0cy5sZW5ndGggLSAxIDogMDtcclxuXHJcbiAgICAgIGNvbnN0IGNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb250YWluZXIuY2xhc3NMaXN0LmFkZCgnYWRkcmVzcy1waWNrbGlzdC1jb250YWluZXInKTtcclxuICAgICAgdGhpcy5waWNrbGlzdC5jb250YWluZXIgPSBjb250YWluZXI7XHJcblxyXG4gICAgICAvLyBJbnNlcnQgdGhlIHBpY2tsaXN0IGNvbnRhaW5lciBhZnRlciB0aGUgaW5wdXRcclxuICAgICAgdGhpcy5pbnB1dHNbcG9zaXRpb25dLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMucGlja2xpc3QuY29udGFpbmVyLCB0aGlzLmlucHV0c1twb3NpdGlvbl0ubmV4dEVsZW1lbnRTaWJsaW5nKTtcclxuXHJcbiAgICAgIGNvbnN0IGxpc3QgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgbGlzdC5jbGFzc0xpc3QuYWRkKCdhZGRyZXNzLXBpY2tsaXN0Jyk7XHJcbiAgICAgIC8vIEFwcGVuZCB0aGUgcGlja2xpc3QgdG8gdGhlIGlubmVyIHdyYXBwZXJcclxuICAgICAgdGhpcy5waWNrbGlzdC5jb250YWluZXIuYXBwZW5kQ2hpbGQobGlzdCk7XHJcblxyXG4gICAgICAvLyBBZGQgYSBjbGFzcyB0byB0aGUgaW5wdXQgdG8gZGVub3RlIHRoYXQgYSBwaWNrbGlzdCB3aXRoIHN1Z2dlc3Rpb25zIGlzIGJlaW5nIHNob3duXHJcbiAgICAgIHRoaXMuaW5wdXRzW3Bvc2l0aW9uXS5jbGFzc0xpc3QuYWRkKCdzaG93aW5nLXN1Z2dlc3Rpb25zJyk7XHJcblxyXG4gICAgICBsaXN0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLnBpY2tsaXN0LmNoZWNrRW50ZXIpO1xyXG4gICAgICByZXR1cm4gbGlzdDtcclxuICAgIH07XHJcblxyXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHBpY2tsaXN0IGl0ZW0vcm93XHJcbiAgICB0aGlzLnBpY2tsaXN0LmNyZWF0ZUxpc3RJdGVtID0gKGl0ZW06IFBpY2tsaXN0SXRlbSkgPT4ge1xyXG4gICAgICBjb25zdCByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgcm93LmlubmVySFRNTCA9IHRoaXMucGlja2xpc3QuYWRkTWF0Y2hpbmdFbXBoYXNpcyhpdGVtKTtcclxuXHJcbiAgICAgIC8vIFN0b3JlIHRoZSBGb3JtYXQgVVJMIGlmIGl0IGV4aXN0cywgb3RoZXJ3aXNlIHVzZSB0aGUgZ2xvYmFsX2FkZHJlc3Nfa2V5IGFzIGEgXCJyZWZpbmVtZW50XCIgcHJvcGVydHlcclxuICAgICAgaWYgKGl0ZW0uZm9ybWF0KSB7XHJcbiAgICAgICAgcm93LnNldEF0dHJpYnV0ZSgnZm9ybWF0JywgaXRlbS5mb3JtYXQpO1xyXG4gICAgICB9IGVsc2UgaWYgKGl0ZW0uZ2xvYmFsX2FkZHJlc3Nfa2V5KSB7XHJcbiAgICAgICAgcm93LnNldEF0dHJpYnV0ZSgncmVmaW5lJywgaXRlbS5nbG9iYWxfYWRkcmVzc19rZXkpO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiByb3c7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIENyZWF0ZSBhIG5ldyBwaWNrbGlzdCBpdGVtL3JvdyBmb3Igd2hhdDN3b3Jkc1xyXG4gICAgdGhpcy5waWNrbGlzdC5jcmVhdGVXaGF0M1dvcmRzTGlzdEl0ZW0gPSAoaXRlbTogV2hhdDNXb3Jkc1BpY2tMaXN0KSA9PiB7XHJcbiAgICAgIGNvbnN0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb25zdCBuYW1lID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcblxyXG4gICAgICByb3cuY2xhc3NOYW1lID0gdGhpcy53aGF0M1dvcmRzS2V5d29yZDtcclxuICAgICAgbmFtZS5jbGFzc05hbWUgPSAnd2hhdDNXb3Jkcy1uYW1lJztcclxuICAgICAgZGVzY3JpcHRpb24uY2xhc3NOYW1lID0gJ3doYXQzV29yZHMtZGVzY3JpcHRpb24nO1xyXG5cclxuICAgICAgbmFtZS5pbm5lckhUTUwgPSAnLy8vJyArIGl0ZW0ud2hhdDN3b3Jkcy5uYW1lO1xyXG4gICAgICBkZXNjcmlwdGlvbi5pbm5lckhUTUwgPSBpdGVtLndoYXQzd29yZHMuZGVzY3JpcHRpb247XHJcblxyXG4gICAgICByb3cuYXBwZW5kQ2hpbGQobmFtZSk7XHJcbiAgICAgIHJvdy5hcHBlbmRDaGlsZChkZXNjcmlwdGlvbik7XHJcblxyXG4gICAgICByZXR1cm4gcm93O1xyXG4gICAgfTtcclxuXHJcblxyXG4gICAgLy8gQ3JlYXRlIGEgbmV3IHBpY2tsaXN0IGl0ZW0vcm93IGZvciBsb29rdXAgaXRlbXNcclxuICAgIHRoaXMucGlja2xpc3QuY3JlYXRlTG9va3VwTGlzdEl0ZW0gPSAoaXRlbTogTG9va3VwQWRkcmVzcykgPT4ge1xyXG4gICAgICBjb25zdCByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuXHJcbiAgICAgIHJvdy5pbm5lckhUTUwgPSBpdGVtLnRleHQ7XHJcblxyXG4gICAgICAvLyBTdG9yZSB0aGUgRm9ybWF0IFVSTCBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSB1c2UgdGhlIGdsb2JhbF9hZGRyZXNzX2tleSBhcyBhIFwicmVmaW5lbWVudFwiIHByb3BlcnR5XHJcbiAgICAgIGlmIChpdGVtLmZvcm1hdCkge1xyXG4gICAgICAgIHJvdy5zZXRBdHRyaWJ1dGUoJ2Zvcm1hdCcsIGl0ZW0uZm9ybWF0KTtcclxuICAgICAgfSBlbHNlIGlmIChpdGVtLmdsb2JhbF9hZGRyZXNzX2tleSkge1xyXG4gICAgICAgIHJvdy5zZXRBdHRyaWJ1dGUoJ3JlZmluZScsIGl0ZW0uZ2xvYmFsX2FkZHJlc3Nfa2V5KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcm93O1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnBpY2tsaXN0LnJlZmluZSA9IHtcclxuICAgICAgZWxlbWVudDogbnVsbCxcclxuICAgICAgLy8gUmV0dXJucyB3aGV0aGVyIHRoZSBwaWNrbGlzdCBuZWVkcyByZWZpbmluZy4gVGhpcyBoYXBwZW5zIGFmdGVyIGFuIGl0ZW0gaGFzIGJlZW4gXCJzdGVwcGVkIGludG9cIiBidXQgaGFzIGFuIHVucmVzb2x2YWJsZSByYW5nZS5cclxuICAgICAgLy8gVGhlIHVzZXIgaXMgcHJvbXB0ZWQgdG8gZW50ZXIgdGhlaXIgc2VsZWN0aW9uIChlLmcuIGJ1aWxkaW5nIG51bWJlcikuXHJcbiAgICAgIGlzTmVlZGVkOiAocmVzcG9uc2U6IFNlYXJjaFJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc2VhcmNoVHlwZSAhPT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLkFVVE9DT01QTEVURSAmJiAocmVzcG9uc2UucmVzdWx0LmNvbmZpZGVuY2UgPT09ICdQcmVtaXNlcyBwYXJ0aWFsJyB8fCByZXNwb25zZS5yZXN1bHQuY29uZmlkZW5jZSA9PT0gJ1N0cmVldCBwYXJ0aWFsJyB8fCByZXNwb25zZS5yZXN1bHQuY29uZmlkZW5jZSA9PT0gJ011bHRpcGxlIG1hdGNoZXMnKTtcclxuICAgICAgfSxcclxuICAgICAgY3JlYXRlSW5wdXQ6IChwcm9tcHQ6IHN0cmluZywga2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICBjb25zdCByb3cgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGlja2xpc3QtcmVmaW5lbWVudC1ib3gnKSB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICByb3cuY2xhc3NMaXN0LmFkZCgncGlja2xpc3QtcmVmaW5lbWVudC1ib3gnKTtcclxuXHJcbiAgICAgICAgY29uc3QgaW5wdXQgPSAoPEhUTUxJbnB1dEVsZW1lbnQ+ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBpY2tsaXN0LXJlZmluZW1lbnQtYm94IGlucHV0JykgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW5wdXQnKSk7XHJcbiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCd0eXBlJywgJ3RleHQnKTtcclxuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3BsYWNlaG9sZGVyJywgcHJvbXB0KTtcclxuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2tleScsIGtleSk7XHJcbiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdhdXRvY29tcGxldGUnLCAnbmV3LXBhc3N3b3JkJyk7XHJcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMucGlja2xpc3QucmVmaW5lLmVudGVyLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QucmVmaW5lLmVsZW1lbnQgPSBpbnB1dDtcclxuXHJcbiAgICAgICAgY29uc3QgYnV0dG9uID0gKDxIVE1MQnV0dG9uRWxlbWVudD5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGlja2xpc3QtcmVmaW5lbWVudC1ib3ggYnV0dG9uJykgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYnV0dG9uJykpO1xyXG4gICAgICAgIGJ1dHRvbi5pbm5lclRleHQgPSAnUmVmaW5lJztcclxuICAgICAgICBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnBpY2tsaXN0LnJlZmluZS5lbnRlcik7XHJcblxyXG4gICAgICAgIHJvdy5hcHBlbmRDaGlsZChpbnB1dCk7XHJcbiAgICAgICAgcm93LmFwcGVuZENoaWxkKGJ1dHRvbik7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC5saXN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHJvdywgdGhpcy5waWNrbGlzdC5saXN0KTtcclxuXHJcbiAgICAgICAgaW5wdXQuZm9jdXMoKTtcclxuICAgICAgfSxcclxuICAgICAgZW50ZXI6IChldmVudDogRXZlbnQpID0+IHtcclxuICAgICAgICAvLyBBbGxvdyBhIG5ldyByZWZpbmVtZW50IGVudHJ5IGlmIHRoZSBlbnRlciBrZXkgd2FzIHVzZWQgaW5zaWRlIHRoZSB0ZXh0Ym94IG9yIHRoZSBidXR0b24gd2FzIGNsaWNrZWRcclxuICAgICAgICBpZiAoKGV2ZW50IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCAmJiBldmVudC5rZXkgPT09ICdFbnRlcicpIHx8IGV2ZW50IGluc3RhbmNlb2YgTW91c2VFdmVudCkge1xyXG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICAgICAgICAvLyBJZiBhIHBpY2tsaXN0IGl0ZW0gaXMgY3VycmVudGx5IHNlbGVjdGVkLCB0aGVuIHBvdGVudGlhbGx5IHVzZSB0aGlzIGluc3RlYWQgb2Ygd2hhdCdzIGluIHRoZSBpbnB1dCBmaWVsZFxyXG4gICAgICAgICAgaWYgKHRoaXMucGlja2xpc3QuY3VycmVudEl0ZW0pIHtcclxuICAgICAgICAgICAgdGhpcy5waWNrbGlzdC5jaGVja0VudGVyKGV2ZW50IGFzIEtleWJvYXJkRXZlbnQpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XHJcblxyXG4gICAgICAgICAgLy8gVGFrZSB0aGUgdmFsdWUgZnJvbSB0aGUgaW5wdXQgZmllbGQgYW5kIHVzZSB0aGlzIHRvIGZ1cnRoZXIgcmVmaW5lIHRoZSBhZGRyZXNzXHJcbiAgICAgICAgICBpZiAodGhpcy5waWNrbGlzdC5yZWZpbmUuZWxlbWVudC52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5zdHJpbmdpZnkoeyByZWZpbmVtZW50OiB0aGlzLnBpY2tsaXN0LnJlZmluZS5lbGVtZW50LnZhbHVlIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBrZXkgPSB0aGlzLnBpY2tsaXN0LnJlZmluZS5lbGVtZW50LmdldEF0dHJpYnV0ZSgna2V5Jyk7XHJcbiAgICAgICAgICAgIHRoaXMucmVxdWVzdC5zZW5kKGAke3RoaXMuYmFzZVVybH0ke3RoaXMucmVmaW5lRW5kcG9pbnR9LyR7a2V5fWAsICdQT1NUJywgdGhpcy5yZXN1bHQuaGFuZGxlVmFsaWRhdGVSZXNwb25zZSwgZGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnBpY2tsaXN0LnNpemUgJiYgZXZlbnQgaW5zdGFuY2VvZiBLZXlib2FyZEV2ZW50ICYmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJyB8fCBldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nIHx8IGV2ZW50LmtleSA9PT0gJ0VudGVyJykpIHtcclxuICAgICAgICAgIHRoaXMucGlja2xpc3Qua2V5dXAoZXZlbnQpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnBpY2tsaXN0LnJlc2V0VGFiQ291bnQgPSAoKSA9PiB7XHJcbiAgICAgIHRoaXMucGlja2xpc3QudGFiQ291bnQgPSAtMTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gS2V5Ym9hcmQgbmF2aWdhdGlvblxyXG4gICAgdGhpcy5waWNrbGlzdC5rZXl1cCA9IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xyXG4gICAgICBpZiAoIXRoaXMucGlja2xpc3QubGlzdCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgdGhpcy5waWNrbGlzdC5jaGVja0VudGVyKGV2ZW50KTtcclxuXHJcbiAgICAgIC8vIEdldCBhIGxpc3Qgb2YgYWxsIHRoZSBhZGRyZXNzZXMgaW4gdGhlIHBpY2tsaXN0XHJcbiAgICAgIGNvbnN0IGFkZHJlc3NlcyA9IHRoaXMucGlja2xpc3QubGlzdC5xdWVyeVNlbGVjdG9yQWxsKCdkaXYnKTtcclxuICAgICAgbGV0IGZpcnN0QWRkcmVzcztcclxuICAgICAgbGV0IGxhc3RBZGRyZXNzO1xyXG5cclxuICAgICAgLy8gSWYgdGhlIHBpY2tsaXN0IGlzIGVtcHR5LCBqdXN0IHJldHVyblxyXG4gICAgICBpZiAoYWRkcmVzc2VzLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gU2V0IHRoZSB0YWJDb3VudCBiYXNlZCBvbiBwcmV2aW91cyBhbmQgZGlyZWN0aW9uXHJcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QudGFiQ291bnQtLTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChldmVudC5rZXkgPT09ICdBcnJvd0Rvd24nKSB7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC50YWJDb3VudCsrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBTZXQgdG9wIGFuZCBib3R0b20gcG9zaXRpb25zIGFuZCBlbmFibGUgd3JhcC1hcm91bmRcclxuICAgICAgaWYgKHRoaXMucGlja2xpc3QudGFiQ291bnQgPCAwKSB7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC50YWJDb3VudCA9IGFkZHJlc3Nlcy5sZW5ndGggLSAxO1xyXG4gICAgICAgIGxhc3RBZGRyZXNzID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGhpcy5waWNrbGlzdC50YWJDb3VudCA+IGFkZHJlc3Nlcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC50YWJDb3VudCA9IDA7XHJcbiAgICAgICAgZmlyc3RBZGRyZXNzID0gdHJ1ZTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gSGlnaGxpZ2h0IHRoZSBzZWxlY3RlZCBhZGRyZXNzXHJcbiAgICAgIGNvbnN0IGN1cnJlbnRseUhpZ2hsaWdodGVkID0gYWRkcmVzc2VzW3RoaXMucGlja2xpc3QudGFiQ291bnRdO1xyXG4gICAgICAvLyBSZW1vdmUgYW55IHByZXZpb3VzbHkgaGlnaGxpZ2h0ZWQgb25lc1xyXG4gICAgICBjb25zdCBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQgPSB0aGlzLnBpY2tsaXN0Lmxpc3QucXVlcnlTZWxlY3RvcignLnNlbGVjdGVkJyk7XHJcbiAgICAgIGlmIChwcmV2aW91c2x5SGlnaGxpZ2h0ZWQpIHtcclxuICAgICAgICBwcmV2aW91c2x5SGlnaGxpZ2h0ZWQuY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0ZWQnKTtcclxuICAgICAgfVxyXG4gICAgICBjdXJyZW50bHlIaWdobGlnaHRlZC5jbGFzc0xpc3QuYWRkKCdzZWxlY3RlZCcpO1xyXG4gICAgICAvLyBTZXQgdGhlIGN1cnJlbnRJdGVtIG9uIHRoZSBwaWNrbGlzdCB0byB0aGUgY3VycmVudGx5IGhpZ2hsaWdodGVkIGFkZHJlc3NcclxuICAgICAgdGhpcy5waWNrbGlzdC5jdXJyZW50SXRlbSA9IGN1cnJlbnRseUhpZ2hsaWdodGVkO1xyXG5cclxuICAgICAgLy8gU2Nyb2xsIGFkZHJlc3MgaW50byB2aWV3LCBpZiByZXF1aXJlZFxyXG4gICAgICBjb25zdCBhZGRyZXNzTGlzdENvb3JkcyA9IHtcclxuICAgICAgICB0b3A6IHRoaXMucGlja2xpc3QubGlzdC5vZmZzZXRUb3AsXHJcbiAgICAgICAgYm90dG9tOiB0aGlzLnBpY2tsaXN0Lmxpc3Qub2Zmc2V0VG9wICsgdGhpcy5waWNrbGlzdC5saXN0Lm9mZnNldEhlaWdodCxcclxuICAgICAgICBzY3JvbGxUb3A6IHRoaXMucGlja2xpc3QubGlzdC5zY3JvbGxUb3AsXHJcbiAgICAgICAgc2VsZWN0ZWRUb3A6IGN1cnJlbnRseUhpZ2hsaWdodGVkLm9mZnNldFRvcCxcclxuICAgICAgICBzZWxlY3RlZEJvdHRvbTogY3VycmVudGx5SGlnaGxpZ2h0ZWQub2Zmc2V0VG9wICsgY3VycmVudGx5SGlnaGxpZ2h0ZWQub2Zmc2V0SGVpZ2h0LFxyXG4gICAgICAgIHNjcm9sbEFtb3VudDogY3VycmVudGx5SGlnaGxpZ2h0ZWQub2Zmc2V0SGVpZ2h0XHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChmaXJzdEFkZHJlc3MpIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0Lmxpc3Quc2Nyb2xsVG9wID0gMDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChsYXN0QWRkcmVzcykge1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QubGlzdC5zY3JvbGxUb3AgPSA5OTk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoYWRkcmVzc0xpc3RDb29yZHMuc2VsZWN0ZWRCb3R0b20gKyBhZGRyZXNzTGlzdENvb3Jkcy5zY3JvbGxBbW91bnQgPiBhZGRyZXNzTGlzdENvb3Jkcy5ib3R0b20pIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0Lmxpc3Quc2Nyb2xsVG9wID0gYWRkcmVzc0xpc3RDb29yZHMuc2Nyb2xsVG9wICsgYWRkcmVzc0xpc3RDb29yZHMuc2Nyb2xsQW1vdW50O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGFkZHJlc3NMaXN0Q29vcmRzLnNlbGVjdGVkVG9wIC0gYWRkcmVzc0xpc3RDb29yZHMuc2Nyb2xsQW1vdW50IC0gYWRkcmVzc0xpc3RDb29yZHMudG9wIDwgYWRkcmVzc0xpc3RDb29yZHMuc2Nyb2xsVG9wKSB7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC5saXN0LnNjcm9sbFRvcCA9IGFkZHJlc3NMaXN0Q29vcmRzLnNjcm9sbFRvcCAtIGFkZHJlc3NMaXN0Q29vcmRzLnNjcm9sbEFtb3VudDtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBBZGQgZW1waGFzaXMgdG8gdGhlIHBpY2tsaXN0IGl0ZW1zIGhpZ2hsaWdodGluZyB0aGUgbWF0Y2hcclxuICAgIHRoaXMucGlja2xpc3QuYWRkTWF0Y2hpbmdFbXBoYXNpcyA9IGZ1bmN0aW9uIChpdGVtKSB7XHJcbiAgICAgIGNvbnN0IGhpZ2hsaWdodHMgPSBpdGVtLm1hdGNoZWQgfHwgW107XHJcbiAgICAgIGxldCBsYWJlbCA9IGl0ZW0udGV4dDtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBoaWdobGlnaHRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3QgcmVwbGFjZW1lbnQgPSAnPGI+JyArIGxhYmVsLnN1YnN0cmluZyhoaWdobGlnaHRzW2ldWzBdLCBoaWdobGlnaHRzW2ldWzFdKSArICc8L2I+JztcclxuICAgICAgICBsYWJlbCA9IGxhYmVsLnN1YnN0cmluZygwLCBoaWdobGlnaHRzW2ldWzBdKSArIHJlcGxhY2VtZW50ICsgbGFiZWwuc3Vic3RyaW5nKGhpZ2hsaWdodHNbaV1bMV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICByZXR1cm4gbGFiZWw7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIExpc3RlbiB0byBhIHBpY2tsaXN0IHNlbGVjdGlvblxyXG4gICAgdGhpcy5waWNrbGlzdC5saXN0ZW4gPSAocm93KSA9PiB7XHJcbiAgICAgIHJvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIHRoaXMucGlja2xpc3QucGljay5iaW5kKG51bGwsIHJvdykpO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnBpY2tsaXN0LmNoZWNrRW50ZXIgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VudGVyJyB8fCBldmVudC5rZXkgPT09ICdUYWInKSB7XHJcbiAgICAgICAgbGV0IHBpY2tsaXN0SXRlbTtcclxuICAgICAgICAvLyBJZiBwaWNrbGlzdCBjb250YWlucyAxIGFkZHJlc3MgdGhlbiB1c2UgdGhpcyBvbmUgdG8gZm9ybWF0XHJcbiAgICAgICAgaWYgKHRoaXMucGlja2xpc3Quc2l6ZSA9PT0gMSkge1xyXG4gICAgICAgICAgcGlja2xpc3RJdGVtID0gdGhpcy5waWNrbGlzdC5saXN0LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RpdicpWzBdO1xyXG4gICAgICAgIH0gLy8gRWxzZSB1c2UgdGhlIGN1cnJlbnRseSBoaWdobGlnaHRlZCBvbmUgd2hlbiBuYXZpZ2F0aW9uIHVzaW5nIGtleWJvYXJkXHJcbiAgICAgICAgZWxzZSBpZiAodGhpcy5waWNrbGlzdC5jdXJyZW50SXRlbSkge1xyXG4gICAgICAgICAgcGlja2xpc3RJdGVtID0gdGhpcy5waWNrbGlzdC5jdXJyZW50SXRlbTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHBpY2tsaXN0SXRlbSkge1xyXG4gICAgICAgICAgdGhpcy5waWNrbGlzdC5waWNrKHBpY2tsaXN0SXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEhvdyB0byBoYW5kbGUgYSBwaWNrbGlzdCBzZWxlY3Rpb25cclxuICAgIHRoaXMucGlja2xpc3QucGljayA9IChpdGVtKSA9PiB7XHJcbiAgICAgIC8vIEZpcmUgYW4gZXZlbnQgd2hlbiBhbiBhZGRyZXNzIGlzIHBpY2tlZFxyXG4gICAgICB0aGlzLmV2ZW50cy50cmlnZ2VyKCdwb3N0LXBpY2tsaXN0LXNlbGVjdGlvbicsIGl0ZW0pO1xyXG5cclxuICAgICAgY29uc3QgZWxlbWVudHMgPSBpdGVtLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdkaXYnKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlzV2hhdDNXb3Jkcykge1xyXG4gICAgICAgIHRoaXMubG9va3VwKGVsZW1lbnRzWzBdLmlubmVySFRNTCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgLy8gR2V0IGEgZmluYWwgYWRkcmVzcyB1c2luZyBwaWNrbGlzdCBpdGVtIHVubGVzcyBpdCBuZWVkcyByZWZpbmVtZW50XHJcbiAgICAgICAgaWYgKGl0ZW0uZ2V0QXR0cmlidXRlKCdmb3JtYXQnKSkge1xyXG4gICAgICAgICAgdGhpcy5mb3JtYXQoaXRlbS5nZXRBdHRyaWJ1dGUoJ2Zvcm1hdCcpKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5yZWZpbmUoaXRlbS5nZXRBdHRyaWJ1dGUoJ3JlZmluZScpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZvcm1hdCh1cmw6IHN0cmluZykge1xyXG4gICAgLy8gVHJpZ2dlciBhbiBldmVudFxyXG4gICAgdGhpcy5ldmVudHMudHJpZ2dlcigncHJlLWZvcm1hdHRpbmctc2VhcmNoJywgdXJsKTtcclxuXHJcbiAgICAvLyBIaWRlIHRoZSBzZWFyY2hpbmcgc3Bpbm5lclxyXG4gICAgdGhpcy5zZWFyY2hTcGlubmVyLmhpZGUoKTtcclxuXHJcbiAgICAvLyBJbml0aWF0ZSBhIG5ldyBGb3JtYXQgcmVxdWVzdFxyXG4gICAgdGhpcy5yZXF1ZXN0LnNlbmQodXJsLCAnR0VUJywgdGhpcy5yZXN1bHQuc2hvdywgdW5kZWZpbmVkLCBbeyBrZXk6ICdBZGQtTWV0YWRhdGEnLCB2YWx1ZTogdHJ1ZSB9LyosIHtrZXk6ICdBZGQtQ29tcG9uZW50cycsIHZhbHVlOiB0cnVlfSovXSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHJlZmluZShrZXk6IHN0cmluZykge1xyXG4gICAgLy8gVHJpZ2dlciBhbiBldmVudFxyXG4gICAgdGhpcy5ldmVudHMudHJpZ2dlcigncHJlLXJlZmluZW1lbnQnLCBrZXkpO1xyXG5cclxuICAgIC8vIEhpZGUgdGhlIHNlYXJjaGluZyBzcGlubmVyXHJcbiAgICB0aGlzLnNlYXJjaFNwaW5uZXIuaGlkZSgpO1xyXG5cclxuICAgIC8vIEluaXRpYXRlIGEgbmV3IFN0ZXAtaW4gcmVxdWVzdCB1c2luZyB0aGUgZ2xvYmFsIGFkZHJlc3Mga2V5XHJcbiAgICB0aGlzLnJlcXVlc3Quc2VuZChgJHt0aGlzLmJhc2VVcmx9JHt0aGlzLnN0ZXBJbkVuZHBvaW50fS8ke2tleX1gLCAnR0VUJywgdGhpcy5waWNrbGlzdC5zaG93KTtcclxuICB9XHJcblxyXG5cclxuICBwcml2YXRlIGxvb2t1cChrZXk6IHN0cmluZykge1xyXG4gICAgLy8gVHJpZ2dlciBhbiBldmVudFxyXG4gICAgdGhpcy5ldmVudHMudHJpZ2dlcigncHJlLWxvb2t1cCcsIGtleSk7XHJcblxyXG4gICAgLy8gSGlkZSB0aGUgc2VhcmNoaW5nIHNwaW5uZXJcclxuICAgIHRoaXMuc2VhcmNoU3Bpbm5lci5oaWRlKCk7XHJcblxyXG4gICAgLy9HZXQgdGhlIGxvb2t1cCByZXF1ZXRcclxuICAgIGNvbnN0IGxvb2t1cFYyUmVxdWVzdCA9IHRoaXMuZ2VuZXJhdGVMb29rdXBEYXRhRm9yQXBpQ2FsbChrZXksIGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCB1cmwgPSB0aGlzLmJhc2VVcmwgKyB0aGlzLmxvb2t1cEVuZHBvaW50O1xyXG4gICAgY29uc3QgaGVhZGVycyA9IFt7IGtleTogJ0FkZC1BZGRyZXNzZXMnLCB2YWx1ZTogdHJ1ZSB9XTtcclxuICAgIGNvbnN0IGNhbGxiYWNrID0gdGhpcy5waWNrbGlzdC5zaG93TG9va3VwO1xyXG5cclxuICAgIC8vIEluaXRpYXRlIG5ldyBTZWFyY2ggcmVxdWVzdFxyXG4gICAgdGhpcy5yZXF1ZXN0LnNlbmQodXJsLCAnUE9TVCcsIGNhbGxiYWNrLCBsb29rdXBWMlJlcXVlc3QsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXN1bHQ6IEFkZHJlc3NWYWxpZGF0aW9uUmVzdWx0ID0ge1xyXG4gICAgZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lcjogbnVsbCxcclxuICAgIGxhc3RBZGRyZXNzRmllbGQ6IG51bGwsXHJcbiAgICBnZW5lcmF0ZUFkZHJlc3NMaW5lUmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgLy8gUmVuZGVyIGEgRm9ybWF0dGVkIGFkZHJlc3NcclxuICAgIHNob3c6IChkYXRhOiBTZWFyY2hSZXNwb25zZSkgPT4ge1xyXG4gICAgICAvLyBIaWRlIHRoZSBpbmxpbmUgc2VhcmNoIHNwaW5uZXJcclxuICAgICAgdGhpcy5zZWFyY2hTcGlubmVyLmhpZGUoKTtcclxuXHJcbiAgICAgIC8vIEhpZGUgdGhlIHBpY2tsaXN0XHJcbiAgICAgIHRoaXMucGlja2xpc3QuaGlkZSgpO1xyXG5cclxuICAgICAgLy8gQ2xlYXIgdGhlIHByZXZpb3VzIHNlYXJjaCB0ZXJtXHJcbiAgICAgIHRoaXMubGFzdFNlYXJjaFRlcm0gPSAnJztcclxuXHJcbiAgICAgIC8vIEFsbG93IEF1dG9jb21wbGV0ZSB0aHJvdWdoIGFzIGl0IHdpbGwgbmVlZCB0byBjcmVhdGUgdGhlIGFkZGl0aW9uYWwgb3V0cHV0IGZpZWxkcyBmb3IgdGhlIGZpbmFsIGFkZHJlc3MuXHJcbiAgICAgIC8vIE90aGVyd2lzZSwgb25seSByZW5kZXIgdGhlIGZpbmFsIGFkZHJlc3MgaWYgdGhlcmUgYXJlIHJlc3VsdHMgYXZhaWxhYmxlLlxyXG4gICAgICBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuQVVUT0NPTVBMRVRFIHx8IChkYXRhLnJlc3VsdC5hZGRyZXNzICYmIGRhdGEucmVzdWx0LmNvbmZpZGVuY2UgIT09ICdObyBtYXRjaGVzJykpIHtcclxuXHJcbiAgICAgICAgLy8gQ2xlYXIgc2VhcmNoIGlucHV0KHMpXHJcbiAgICAgICAgdGhpcy5pbnB1dHMuZm9yRWFjaChpbnB1dCA9PiBpbnB1dC52YWx1ZSA9ICcnKTtcclxuXHJcbiAgICAgICAgLy8gQ2FsY3VsYXRlIGlmIHdlIG5lZWRlZCB0byBnZW5lcmF0ZSB0aGUgZm9ybWF0dGVkIGFkZHJlc3MgaW5wdXQgZmllbGRzIGxhdGVyXHJcbiAgICAgICAgdGhpcy5yZXN1bHQuY2FsY3VsYXRlSWZBZGRyZXNzTGluZUdlbmVyYXRpb25SZXF1aXJlZCgpO1xyXG5cclxuICAgICAgICAvLyBHZXQgZm9ybWF0dGVkIGFkZHJlc3MgY29udGFpbmVyIGVsZW1lbnRcclxuICAgICAgICAvLyBPbmx5IGNyZWF0ZSBhIGNvbnRhaW5lciBpZiB3ZSdyZSBjcmVhdGluZyBpbnB1dHMuIE90aGVyd2lzZSB0aGUgdXNlciB3aWxsIGhhdmUgdGhlaXIgb3duIGNvbnRhaW5lci5cclxuICAgICAgICB0aGlzLnJlc3VsdC5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyID0gdGhpcy5vcHRpb25zLmVsZW1lbnRzLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXI7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlc3VsdC5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyICYmIHRoaXMucmVzdWx0LmdlbmVyYXRlQWRkcmVzc0xpbmVSZXF1aXJlZCkge1xyXG4gICAgICAgICAgdGhpcy5yZXN1bHQuY3JlYXRlRm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTG9vcCBvdmVyIGVhY2ggZm9ybWF0dGVkIGFkZHJlc3MgY29tcG9uZW50XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBPYmplY3Qua2V5cyhkYXRhLnJlc3VsdC5hZGRyZXNzKS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoZGF0YS5yZXN1bHQuYWRkcmVzcylbaV07XHJcbiAgICAgICAgICBjb25zdCBhZGRyZXNzQ29tcG9uZW50ID0gZGF0YS5yZXN1bHQuYWRkcmVzc1trZXldO1xyXG4gICAgICAgICAgLy8gQmluZCB0aGUgYWRkcmVzcyBlbGVtZW50IHRvIHRoZSB1c2VyJ3MgYWRkcmVzcyBmaWVsZCAob3IgY3JlYXRlIGEgbmV3IG9uZSlcclxuICAgICAgICAgIHRoaXMucmVzdWx0LnVwZGF0ZUFkZHJlc3NMaW5lKGtleSwgYWRkcmVzc0NvbXBvbmVudCwgJ2FkZHJlc3MtbGluZS1pbnB1dCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSGlkZSBjb3VudHJ5IGFuZCBhZGRyZXNzIHNlYXJjaCBmaWVsZHMgKGlmIHRoZXkgaGF2ZSBhICd0b2dnbGUnIGNsYXNzKVxyXG4gICAgICAgIHRoaXMudG9nZ2xlU2VhcmNoSW5wdXRzKCdoaWRlJyk7XHJcblxyXG4gICAgICAgIC8vIEVuYWJsZSB1c2VycyB0byBzZWFyY2ggYWdhaW4gc3Vic2VxdWVudGx5XHJcbiAgICAgICAgdGhpcy5oYXNTZWFyY2hJbnB1dEJlZW5SZXNldCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIElmIGFuIGFkZHJlc3MgbGluZSBpcyBhbHNvIHRoZSBtYWluIHNlYXJjaCBpbnB1dCwgc2V0IHByb3BlcnR5IHRvIGZhbHNlLlxyXG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHR5cGluZyBpbiB0aGUgZmllbGQgYWdhaW4gKGFmdGVyIGFuIGFkZHJlc3MgaGFzIGJlZW5cclxuICAgICAgICAvLyByZXR1cm5lZCkgd2lsbCBub3QgdHJpZ2dlciBhIG5ldyBzZWFyY2guXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLkFVVE9DT01QTEVURSkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IGluIHRoaXMub3B0aW9ucy5lbGVtZW50cykge1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMub3B0aW9ucy5lbGVtZW50cywgZWxlbWVudCkpIHtcclxuICAgICAgICAgICAgICAvLyBFeGNsdWRpbmcgdGhlIGlucHV0IGl0c2VsZiwgZG9lcyBhbm90aGVyIGVsZW1lbnQgbWF0Y2ggdGhlIGlucHV0IGZpZWxkP1xyXG4gICAgICAgICAgICAgIGlmIChlbGVtZW50ICE9PSAnaW5wdXQnICYmIHRoaXMub3B0aW9ucy5lbGVtZW50c1tlbGVtZW50XSA9PT0gdGhpcy5pbnB1dHNbMF0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzU2VhcmNoSW5wdXRCZWVuUmVzZXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSAnU2VhcmNoIGFnYWluJyBsaW5rIGFuZCBpbnNlcnQgaW50byBET01cclxuICAgICAgICB0aGlzLnJlc3VsdC5jcmVhdGVTZWFyY2hBZ2FpbkxpbmsoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRmlyZSBhbiBldmVudCB0byBzYXkgd2UndmUgZ290IHRoZSBmb3JtYXR0ZWQgYWRkcmVzc1xyXG4gICAgICB0aGlzLmV2ZW50cy50cmlnZ2VyKCdwb3N0LWZvcm1hdHRpbmctc2VhcmNoJywgZGF0YSk7XHJcbiAgICB9LFxyXG4gICAgaGlkZTogKCkgPT4ge1xyXG4gICAgICAvLyBEZWxldGUgdGhlIGZvcm1hdHRlZCBhZGRyZXNzIGNvbnRhaW5lclxyXG4gICAgICBpZiAodGhpcy5yZXN1bHQuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lcikge1xyXG4gICAgICAgIHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnJlc3VsdC5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyKTtcclxuICAgICAgICB0aGlzLnJlc3VsdC5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIERlbGV0ZSB0aGUgc2VhcmNoIGFnYWluIGxpbmtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5zZWFyY2hBZ2Fpbi5saW5rKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlYXJjaEFnYWluLmxpbmsucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLm9wdGlvbnMuc2VhcmNoQWdhaW4ubGluayk7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlYXJjaEFnYWluLmxpbmsgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgICAgLy8gUmVtb3ZlIHByZXZpb3VzIHZhbHVlIGZyb20gdXNlcidzIHJlc3VsdCBmaWVsZFxyXG4gICAgICAvLyBMb29wIG92ZXIgdGhlaXIgZWxlbWVudHNcclxuICAgICAgZm9yIChjb25zdCBlbGVtZW50IGluIHRoaXMub3B0aW9ucy5lbGVtZW50cykge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5vcHRpb25zLmVsZW1lbnRzLCBlbGVtZW50KSkge1xyXG4gICAgICAgICAgLy8gSWYgaXQgbWF0Y2hlcyBhbiBcImFkZHJlc3NcIiBlbGVtZW50XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlZmF1bHRzLmFkZHJlc3NMaW5lTGFiZWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZGVmYXVsdHMuYWRkcmVzc0xpbmVMYWJlbHNbaV07XHJcbiAgICAgICAgICAgIC8vIE9ubHkgcmVzZXQgdGhlIHZhbHVlIGlmIGl0J3Mgbm90IGFuIGlucHV0IGZpZWxkXHJcbiAgICAgICAgICAgIGlmIChsYWJlbCA9PT0gZWxlbWVudCAmJiB0aGlzLm9wdGlvbnMuZWxlbWVudHNbZWxlbWVudF0gIT09IHRoaXMuaW5wdXRzWzBdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmVsZW1lbnRzW2VsZW1lbnRdLnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjcmVhdGVBZGRyZXNzTGluZToge1xyXG4gICAgICAvLyBDcmVhdGUgYW4gaW5wdXQgdG8gc3RvcmUgdGhlIGFkZHJlc3MgbGluZVxyXG4gICAgICBpbnB1dDogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBjbGFzc05hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIC8vIENyZWF0ZSBhIHdyYXBwZXJcclxuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBkaXYuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgdGhlIGxhYmVsXHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpO1xyXG4gICAgICAgIGxhYmVsLmlubmVySFRNTCA9IGtleS5yZXBsYWNlKC8oW0EtWl0pL2csICcgJDEnKSAvLyBBZGQgc3BhY2UgYmVmb3JlIGNhcGl0YWwgTGV0dGVyc1xyXG4gICAgICAgICAgLnJlcGxhY2UoLyhbMC05XSkvZywgJyAkMScpIC8vIEFkZCBzcGFjZSBiZWZvcmUgbnVtYmVyc1xyXG4gICAgICAgICAgLnJlcGxhY2UoL14uLywgZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyLnRvVXBwZXJDYXNlKCk7IH0pOyAvLyBNYWtlIGZpcnN0IGxldHRlciBvZiB3b3JkIGEgY2FwaXRhbCBsZXR0ZXJcclxuICAgICAgICBkaXYuYXBwZW5kQ2hpbGQobGFiZWwpO1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgdGhlIGlucHV0XHJcbiAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7XHJcbiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywga2V5KTtcclxuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpO1xyXG4gICAgICAgIGRpdi5hcHBlbmRDaGlsZChpbnB1dCk7XHJcbiAgICAgICAgcmV0dXJuIGRpdjtcclxuICAgICAgfSxcclxuICAgICAgLy8gQ3JlYXRlIHRoZSBhZGRyZXNzIGxpbmUgbGFiZWwgYmFzZWQgb24gdGhlIGNvdW50cnkgYW5kIGxhbmd1YWdlXHJcbiAgICAgIGxhYmVsOiAoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWwgPSBrZXk7XHJcbiAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLm9wdGlvbnMubGFuZ3VhZ2UudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5jdXJyZW50Q291bnRyeUNvZGUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodHJhbnNsYXRpb25zKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkTGFiZWwgPSB0cmFuc2xhdGlvbnNbbGFuZ3VhZ2VdW2NvdW50cnldW2tleV07XHJcbiAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkTGFiZWwpIHtcclxuICAgICAgICAgICAgICBsYWJlbCA9IHRyYW5zbGF0ZWRMYWJlbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBkb2Vzbid0IGV4aXN0IGZvciBrZXlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gQ3JlYXRlIHRoZSBmb3JtYXR0ZWQgYWRkcmVzcyBjb250YWluZXIgYW5kIGluamVjdCBhZnRlciB0aGUgaW5wdXRcclxuICAgIGNyZWF0ZUZvcm1hdHRlZEFkZHJlc3NDb250YWluZXI6ICgpID0+IHtcclxuICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdmb3JtYXR0ZWQtYWRkcmVzcycpO1xyXG5cclxuICAgICAgLy8gSWYgU2luZ2xlbGluZSBtb2RlIGlzIHVzZWQsIHRoZW4gYXBwZW5kIHRoZSBmb3JtYXR0ZWQgYWRkcmVzcyBhZnRlciB0aGUgbGFzdCBpbnB1dCBmaWVsZCwgb3RoZXJ3aXNlIHVzZSB0aGUgZmlyc3Qgb25lXHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuU0lOR0xFTElORSA/IHRoaXMuaW5wdXRzLmxlbmd0aCAtIDEgOiAwO1xyXG5cclxuICAgICAgLy8gSW5zZXJ0IHRoZSBjb250YWluZXIgYWZ0ZXIgdGhlIGlucHV0XHJcbiAgICAgIHRoaXMuaW5wdXRzW3Bvc2l0aW9uXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjb250YWluZXIsIHRoaXMuaW5wdXRzW3Bvc2l0aW9uXS5uZXh0U2libGluZyk7XHJcbiAgICAgIHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIgPSBjb250YWluZXI7XHJcbiAgICB9LFxyXG4gICAgLy8gQ3JlYXRlIGEgaGVhZGluZyBmb3IgdGhlIGZvcm1hdHRlZCBhZGRyZXNzIGNvbnRhaW5lclxyXG4gICAgY3JlYXRlSGVhZGluZzogKCkgPT4ge1xyXG4gICAgICAvLyBDcmVhdGUgYSBoZWFkaW5nIGZvciB0aGUgZm9ybWF0dGVkIGFkZHJlc3NcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnNob3dIZWFkaW5nKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5vcHRpb25zLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuaGVhZGluZ1R5cGUpO1xyXG4gICAgICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIudmFsaWRhdGVkSGVhZGluZ1RleHQ7XHJcbiAgICAgICAgdGhpcy5yZXN1bHQuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5hcHBlbmRDaGlsZChoZWFkaW5nKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vIFVwZGF0ZSB0aGUgaGVhZGluZyB0ZXh0IGluIHRoZSBmb3JtYXR0ZWQgYWRkcmVzcyBjb250YWluZXJcclxuICAgIHVwZGF0ZUhlYWRpbmc6ICh0ZXh0KSA9PiB7XHJcbiAgICAgIC8vQ2hhbmdlIHRoZSBoZWFkaW5nIHRleHQgdG8gXCJNYW51YWwgYWRkcmVzcyBlbnRlcmVkXCJcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnNob3dIZWFkaW5nKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGluZyA9IHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIucXVlcnlTZWxlY3Rvcih0aGlzLm9wdGlvbnMuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5oZWFkaW5nVHlwZSk7XHJcbiAgICAgICAgaGVhZGluZy5pbm5lckhUTUwgPSB0ZXh0O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgY2FsY3VsYXRlSWZBZGRyZXNzTGluZUdlbmVyYXRpb25SZXF1aXJlZDogKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlc3VsdC5nZW5lcmF0ZUFkZHJlc3NMaW5lUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlZmF1bHRzLmFkZHJlc3NMaW5lTGFiZWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gZGVmYXVsdHMuYWRkcmVzc0xpbmVMYWJlbHNbaV07XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5lbGVtZW50c1trZXldKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3VsdC5nZW5lcmF0ZUFkZHJlc3NMaW5lUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHVwZGF0ZUFkZHJlc3NMaW5lOiAoa2V5OiBzdHJpbmcsIGFkZHJlc3NMaW5lT2JqZWN0LCBjbGFzc05hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAvLyBFaXRoZXIgYXBwZW5kIHRoZSByZXN1bHQgdG8gdGhlIHVzZXIncyBhZGRyZXNzIGZpZWxkIG9yIGNyZWF0ZSBhIG5ldyBmaWVsZCBmb3IgdGhlbVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmVsZW1lbnRzW2tleV0pIHtcclxuICAgICAgICBjb25zdCBhZGRyZXNzRmllbGQgPSB0aGlzLm9wdGlvbnMuZWxlbWVudHNba2V5XTtcclxuICAgICAgICB0aGlzLnJlc3VsdC51cGRhdGVMYWJlbChrZXkpO1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGFkZHJlc3NMaW5lT2JqZWN0O1xyXG4gICAgICAgIC8vIElmIGEgdmFsdWUgaXMgYWxyZWFkeSBwcmVzZW50LCBwcmVwZW5kIGEgY29tbWEgYW5kIHNwYWNlXHJcbiAgICAgICAgaWYgKGFkZHJlc3NGaWVsZC52YWx1ZSAmJiB2YWx1ZSkge1xyXG4gICAgICAgICAgdmFsdWUgPSAnLCAnICsgdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIERlY2lkZSB3aGF0IHByb3BlcnR5IG9mIHRoZSBub2RlIHdlIG5lZWQgdG8gdXBkYXRlLiBpLmUuIGlmIGl0J3Mgbm90IGEgZm9ybSBmaWVsZCwgdXBkYXRlIHRoZSBpbm5lclRleHQuXHJcbiAgICAgICAgaWYgKGFkZHJlc3NGaWVsZC5ub2RlTmFtZSA9PT0gJ0lOUFVUJyB8fCBhZGRyZXNzRmllbGQubm9kZU5hbWUgPT09ICdURVhUQVJFQScgfHwgYWRkcmVzc0ZpZWxkLm5vZGVOYW1lID09PSAnU0VMRUNUJykge1xyXG4gICAgICAgICAgYWRkcmVzc0ZpZWxkLnZhbHVlICs9IHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhZGRyZXNzRmllbGQuaW5uZXJUZXh0ICs9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTdG9yZSBhIHJlY29yZCBvZiB0aGVpciBsYXN0IGFkZHJlc3MgZmllbGRcclxuICAgICAgICB0aGlzLnJlc3VsdC5sYXN0QWRkcmVzc0ZpZWxkID0gYWRkcmVzc0ZpZWxkO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucmVzdWx0LmdlbmVyYXRlQWRkcmVzc0xpbmVSZXF1aXJlZCkge1xyXG4gICAgICAgIC8vIENyZWF0ZSBhbiBpbnB1dCB0byBzdG9yZSB0aGUgYWRkcmVzcyBsaW5lXHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnJlc3VsdC5jcmVhdGVBZGRyZXNzTGluZS5sYWJlbChrZXkpO1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5yZXN1bHQuY3JlYXRlQWRkcmVzc0xpbmUuaW5wdXQobGFiZWwsIGFkZHJlc3NMaW5lT2JqZWN0LCBjbGFzc05hbWUpO1xyXG4gICAgICAgIC8vIEluc2VydCBpbnRvIERPTVxyXG4gICAgICAgIHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuYXBwZW5kQ2hpbGQoZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gVXBkYXRlIHRoZSBsYWJlbCBpZiB0cmFuc2xhdGlvbiBpcyBwcmVzZW50XHJcbiAgICB1cGRhdGVMYWJlbDogKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGxldCBsYWJlbCA9IGtleTtcclxuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLm9wdGlvbnMubGFuZ3VhZ2UudG9Mb3dlckNhc2UoKTtcclxuICAgICAgY29uc3QgY291bnRyeSA9IHRoaXMuY3VycmVudENvdW50cnlDb2RlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGlmICh0cmFuc2xhdGlvbnMpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgdHJhbnNsYXRlZExhYmVsID0gdHJhbnNsYXRpb25zW2xhbmd1YWdlXVtjb3VudHJ5XVtrZXldO1xyXG4gICAgICAgICAgaWYgKHRyYW5zbGF0ZWRMYWJlbCkge1xyXG4gICAgICAgICAgICBsYWJlbCA9IHRyYW5zbGF0ZWRMYWJlbDtcclxuICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xhYmVsJyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGFiZWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxhYmVsc1tpXS5odG1sRm9yID09PSBrZXkpIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsc1tpXS5pbm5lckhUTUwgPSB0cmFuc2xhdGVkTGFiZWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgLy8gVHJhbnNsYXRpb24gZG9lc24ndCBleGlzdCBmb3Iga2V5XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH0sXHJcbiAgICAvLyBDcmVhdGUgdGhlICdTZWFyY2ggYWdhaW4nIGxpbmsgdGhhdCByZXNldHMgdGhlIHNlYXJjaFxyXG4gICAgY3JlYXRlU2VhcmNoQWdhaW5MaW5rOiAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2VhcmNoQWdhaW4udmlzaWJsZSkge1xyXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcclxuICAgICAgICBsaW5rLmNsYXNzTGlzdC5hZGQoJ3NlYXJjaC1hZ2Fpbi1idXR0b24nKTtcclxuICAgICAgICBsaW5rLmlubmVyVGV4dCA9IHRoaXMub3B0aW9ucy5zZWFyY2hBZ2Fpbi50ZXh0O1xyXG4gICAgICAgIC8vIEJpbmQgZXZlbnQgbGlzdGVuZXJcclxuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5nbG9iYWxSZXNldC5iaW5kKHRoaXMpKTtcclxuICAgICAgICAvLyBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgbGluayBlbGVtZW50XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlYXJjaEFnYWluLmxpbmsgPSBsaW5rO1xyXG5cclxuICAgICAgICAvLyBJbnNlcnQgaW50byB0aGUgZm9ybWF0dGVkIGFkZHJlc3MgY29udGFpbmVyXHJcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIpIHtcclxuICAgICAgICAgIHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlc3VsdC5sYXN0QWRkcmVzc0ZpZWxkKSB7XHJcbiAgICAgICAgICAvLyBJbnNlcnQgYWZ0ZXIgbGFzdCBhZGRyZXNzIGZpZWxkXHJcbiAgICAgICAgICB0aGlzLnJlc3VsdC5sYXN0QWRkcmVzc0ZpZWxkLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGxpbmssIHRoaXMucmVzdWx0Lmxhc3RBZGRyZXNzRmllbGQubmV4dFNpYmxpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vIFdyaXRlIHRoZSBsaXN0IG9mIGhpZGRlbiBhZGRyZXNzIGxpbmUgaW5wdXRzIHRvIHRoZSBET01cclxuICAgIHJlbmRlcklucHV0TGlzdDogKGlucHV0QXJyYXkpID0+IHtcclxuICAgICAgaWYgKGlucHV0QXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5yZXN1bHQuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5hcHBlbmRDaGlsZChpbnB1dEFycmF5W2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyBEZWNpZGUgd2hldGhlciB0byBlaXRoZXIgc2hvdyBhIHBpY2tsaXN0IG9yIGEgdmVyaWZpZWQgcmVzdWx0IGZyb20gYSBWYWxpZGF0ZSByZXNwb25zZVxyXG4gICAgaGFuZGxlVmFsaWRhdGVSZXNwb25zZTogKHJlc3BvbnNlOiBTZWFyY2hSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2UucmVzdWx0LmNvbmZpZGVuY2UgPT09ICdWZXJpZmllZCBtYXRjaCcpIHtcclxuICAgICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgYW4gYWRkcmVzcywgdGhlbiB1c2UgdGhpcyBkaXJlY3RseSBpbiB0aGUgcmVzdWx0XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3VsdC5hZGRyZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3VsdC5zaG93KHJlc3BvbnNlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnJlc3VsdC5zdWdnZXN0aW9ucykge1xyXG4gICAgICAgICAgLy8gSWYgdGhlIHZlcmlmaWVkIG1hdGNoIHN0aWxsIGNvbnRhaW5zIGEgc3VnZ2VzdGlvbiwgdGhlbiB3ZSBuZWVkIHRvIGZvcm1hdCB0aGlzIGZpcnN0XHJcbiAgICAgICAgICB0aGlzLmZvcm1hdChyZXNwb25zZS5yZXN1bHQuc3VnZ2VzdGlvbnNbMF0uZm9ybWF0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UucmVzdWx0LnN1Z2dlc3Rpb25zKSB7XHJcbiAgICAgICAgLy8gSWYgdGhlIHVzZXIgbmVlZHMgdG8gcGljayBhIHN1Z2dlc3Rpb24sIHRoZW4gZGlzcGxheSB0aGUgcGlja2xpc3RcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LnNob3cocmVzcG9uc2UpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnJlc3VsdC5jb25maWRlbmNlID09PSAnTm8gbWF0Y2hlcycpIHtcclxuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gbWF0Y2hlcywgdGhlbiBhbGxvdyBcInVzZSBhZGRyZXNzIGVudGVyZWRcIlxyXG4gICAgICAgIHRoaXMucGlja2xpc3QuaGFuZGxlRW1wdHlQaWNrbGlzdChyZXNwb25zZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNoZWNrVGFiKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleShldmVudCk7XHJcbiAgICBpZiAoa2V5ID09PSAnVGFiJykge1xyXG4gICAgICB0aGlzLnBpY2tsaXN0LmtleXVwKGV2ZW50KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgLy8gUHJldmVudCBhbiAnRW50ZXInIGtleXByZXNzIG9uIHRoZSBpbnB1dCBzdWJtaXR0aW5nIHRoZSBmb3JtXHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlYXJjaFNwaW5uZXIgPSB7XHJcbiAgICBzaG93OiAoKSA9PiB7XHJcbiAgICAgIC8vIFJldHVybiBpZiB3ZSdyZSBub3QgZGlzcGxheWluZyBhIHNwaW5uZXJcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMudXNlU3Bpbm5lcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICAvLyBDcmVhdGUgdGhlIHNwaW5uZXIgY29udGFpbmVyXHJcbiAgICAgIGNvbnN0IHNwaW5uZXJDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgc3Bpbm5lckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdsb2FkZXInKTtcclxuICAgICAgc3Bpbm5lckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdsb2FkZXItaW5saW5lJyk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgdGhlIHNwaW5uZXJcclxuICAgICAgY29uc3Qgc3Bpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBzcGlubmVyLmNsYXNzTGlzdC5hZGQoJ3NwaW5uZXInKTtcclxuICAgICAgc3Bpbm5lckNvbnRhaW5lci5hcHBlbmRDaGlsZChzcGlubmVyKTtcclxuXHJcbiAgICAgIC8vIEluc2VydCB0aGUgc3Bpbm5lciBhZnRlciB0aGUgZmllbGRcclxuICAgICAgdGhpcy5pbnB1dHNbMF0ucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKHNwaW5uZXJDb250YWluZXIsIHRoaXMuaW5wdXRzWzBdLm5leHRTaWJsaW5nKTtcclxuICAgIH0sXHJcblxyXG4gICAgaGlkZTogKCkgPT4ge1xyXG4gICAgICAvLyBSZXR1cm4gaWYgd2UncmUgbm90IGRpc3BsYXlpbmcgYSBzcGlubmVyXHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLnVzZVNwaW5uZXIpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgc3Bpbm5lciA9IHRoaXMuaW5wdXRzWzBdLnBhcmVudE5vZGU/LnF1ZXJ5U2VsZWN0b3IoJy5sb2FkZXItaW5saW5lJyk7XHJcbiAgICAgIGlmIChzcGlubmVyKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dHNbMF0ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoc3Bpbm5lcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvLyBUb2dnbGUgdGhlIFwiaGlkZGVuXCIgY2xhc3MgdG8gZWl0aGVyIHNob3cgb3IgaGlkZSB0aGUgaW5wdXQgYW5kIGNvdW50cnkgZmllbGQocylcclxuICBwcml2YXRlIHRvZ2dsZVNlYXJjaElucHV0cyhzdGF0ZTogJ3Nob3cnIHwgJ2hpZGUnKSB7XHJcbiAgICBjb25zdCBtb2RpZmllciA9IHN0YXRlID09PSAnc2hvdycgPyAncmVtb3ZlJyA6ICdhZGQnO1xyXG4gICAgdGhpcy5vcHRpb25zLmVsZW1lbnRzLmlucHV0cz8uZm9yRWFjaChpbnB1dCA9PiBpbnB1dC5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKS5mb3JFYWNoKGVsZW1lbnQgPT4gZWxlbWVudC5jbGFzc0xpc3RbbW9kaWZpZXJdKCdoaWRkZW4nKSkpO1xyXG4gICAgdGhpcy5vcHRpb25zLmVsZW1lbnRzLmNvdW50cnlMaXN0Py5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKS5mb3JFYWNoKGVsZW1lbnQgPT4gZWxlbWVudC5jbGFzc0xpc3RbbW9kaWZpZXJdKCdoaWRkZW4nKSk7XHJcbiAgICB0aGlzLm9wdGlvbnMuZWxlbWVudHMubG9va3VwQnV0dG9uPy5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKS5mb3JFYWNoKGVsZW1lbnQgPT4gZWxlbWVudC5jbGFzc0xpc3RbbW9kaWZpZXJdKCdoaWRkZW4nKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdsb2JhbFJlc2V0KGV2ZW50Pykge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgICAvLyBFbmFibGUgc2VhcmNoaW5nXHJcbiAgICB0aGlzLm9wdGlvbnMuZW5hYmxlZCA9IHRydWU7XHJcbiAgICAvLyBIaWRlIGZvcm1hdHRlZCBhZGRyZXNzXHJcbiAgICB0aGlzLnJlc3VsdC5oaWRlKCk7XHJcbiAgICAvLyBSZXNldCBzZWFyY2ggaW5wdXQgYmFja1xyXG4gICAgdGhpcy5oYXNTZWFyY2hJbnB1dEJlZW5SZXNldCA9IHRydWU7XHJcblxyXG4gICAgLy8gQ2xlYXIgdGhlIGlucHV0IGZpZWxkKHMpXHJcbiAgICB0aGlzLmlucHV0cy5mb3JFYWNoKGlucHV0ID0+IGlucHV0LnZhbHVlID0gJycpO1xyXG4gICAgLy8gUmVtb3ZlIHRoZSBwaWNrbGlzdCAoaWYgcHJlc2VudClcclxuICAgIHRoaXMucGlja2xpc3QuaGlkZSgpO1xyXG4gICAgLy8gU2hvdyBzZWFyY2ggaW5wdXRcclxuICAgIHRoaXMudG9nZ2xlU2VhcmNoSW5wdXRzKCdzaG93Jyk7XHJcbiAgICAvLyBBcHBseSBmb2N1cyB0byBpbnB1dFxyXG4gICAgdGhpcy5pbnB1dHNbMF0uZm9jdXMoKTtcclxuXHJcbiAgICAvLyBGaXJlIGFuIGV2ZW50IGFmdGVyIGEgcmVzZXRcclxuICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3Bvc3QtcmVzZXQnKTtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IEFkZHJlc3NWYWxpZGF0aW9uIGZyb20gJy4vYWRkcmVzcy1zZWFyY2gnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIEFkZHJlc3NWYWxpZGF0aW9uOiBhbnk7XG4gIH1cbn1cblxud2luZG93LkFkZHJlc3NWYWxpZGF0aW9uID0gQWRkcmVzc1ZhbGlkYXRpb247Il0sIm5hbWVzIjpbIkFkZHJlc3NWYWxpZGF0aW9uTW9kZSIsImNvbGxlY3Rpb24iLCJvbiIsImV2ZW50IiwiYWN0aW9uIiwidGhpcyIsInB1c2giLCJ0cmlnZ2VyIiwiZGF0YSIsImkiLCJsZW5ndGgiLCJhcmdzIiwiYSIsImFyZ3VtZW50cyIsImFwcGx5IiwiZSIsImluc3RhbmNlIiwic2VuZCIsInVybCIsIm1ldGhvZCIsImNhbGxiYWNrIiwiaGVhZGVycyIsImN1cnJlbnRSZXF1ZXN0IiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwidGltZW91dCIsInNldFJlcXVlc3RIZWFkZXIiLCJvcHRpb25zIiwidG9rZW4iLCJmb3JFYWNoIiwiaGVhZGVyIiwia2V5IiwidmFsdWUiLCJvbmxvYWQiLCJ4aHIiLCJzdGF0dXMiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJzZWFyY2hTcGlubmVyIiwiaGlkZSIsImV2ZW50cyIsIm9uZXJyb3IiLCJvbnRpbWVvdXQiLCJkZWZhdWx0cyIsImVuYWJsZVdoYXQzV29yZHMiLCJzZWFyY2hUeXBlIiwiQVVUT0NPTVBMRVRFIiwiaW5wdXQiLCJwbGFjZWhvbGRlclRleHQiLCJhcHBseUZvY3VzIiwiZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lciIsInNob3dIZWFkaW5nIiwiaGVhZGluZ1R5cGUiLCJ2YWxpZGF0ZWRIZWFkaW5nVGV4dCIsIm1hbnVhbEhlYWRpbmdUZXh0Iiwic2VhcmNoQWdhaW4iLCJ2aXNpYmxlIiwidGV4dCIsInVzZUFkZHJlc3NFbnRlcmVkVGV4dCIsInVzZVNwaW5uZXIiLCJsYW5ndWFnZSIsImFkZHJlc3NMaW5lTGFiZWxzIiwiZGF0YXNldENvZGVzIiwiY291bnRyeSIsImlzbzNDb2RlIiwiaXNvMkNvZGUiLCJkYXRhc2V0Q29kZSIsInRyYW5zbGF0aW9ucyIsImVuIiwiZ2JyIiwibG9jYWxpdHkiLCJyZWdpb24iLCJwb3N0YWxfY29kZSIsInVzYSIsInNpemUiLCJtYXhTdWdnZXN0aW9ucyIsImJhc2VVcmwiLCJzZWFyY2hFbmRwb2ludCIsImxvb2t1cEVuZHBvaW50IiwidmFsaWRhdGVFbmRwb2ludCIsInByb21wdHNldEVuZHBvaW50Iiwic3RlcEluRW5kcG9pbnQiLCJyZWZpbmVFbmRwb2ludCIsImVucmljaG1lbnRFbmRwb2ludCIsIndoYXQzV29yZENvdW50cmllcyIsIndoYXQzV29yZHNLZXl3b3JkIiwicG93ZXJlZEJ5TG9nbyIsImVsZW1lbnQiLCJjcmVhdGUiLCJwaWNrbGlzdCIsIml0ZW0iLCJzdmciLCJmb3JtYXQiLCJsaXN0SXRlbSIsImNyZWF0ZUxpc3RJdGVtIiwiY2xhc3NMaXN0IiwiYWRkIiwibGlzdCIsInBhcmVudE5vZGUiLCJhcHBlbmRDaGlsZCIsImRlc3Ryb3kiLCJyZW1vdmVDaGlsZCIsInVuZGVmaW5lZCIsInJlc3VsdCIsImxhc3RBZGRyZXNzRmllbGQiLCJnZW5lcmF0ZUFkZHJlc3NMaW5lUmVxdWlyZWQiLCJzaG93IiwibGFzdFNlYXJjaFRlcm0iLCJhZGRyZXNzIiwiY29uZmlkZW5jZSIsImlucHV0cyIsImNhbGN1bGF0ZUlmQWRkcmVzc0xpbmVHZW5lcmF0aW9uUmVxdWlyZWQiLCJlbGVtZW50cyIsImNyZWF0ZUZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIiLCJPYmplY3QiLCJrZXlzIiwiYWRkcmVzc0NvbXBvbmVudCIsInVwZGF0ZUFkZHJlc3NMaW5lIiwidG9nZ2xlU2VhcmNoSW5wdXRzIiwiaGFzU2VhcmNoSW5wdXRCZWVuUmVzZXQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJjcmVhdGVTZWFyY2hBZ2FpbkxpbmsiLCJsaW5rIiwiY3JlYXRlQWRkcmVzc0xpbmUiLCJjbGFzc05hbWUiLCJkaXYiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJsYWJlbCIsImlubmVySFRNTCIsInJlcGxhY2UiLCJzdHIiLCJ0b1VwcGVyQ2FzZSIsInNldEF0dHJpYnV0ZSIsInRvTG93ZXJDYXNlIiwiY3VycmVudENvdW50cnlDb2RlIiwidHJhbnNsYXRlZExhYmVsIiwiY29udGFpbmVyIiwicG9zaXRpb24iLCJTSU5HTEVMSU5FIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJjcmVhdGVIZWFkaW5nIiwiaGVhZGluZyIsInVwZGF0ZUhlYWRpbmciLCJxdWVyeVNlbGVjdG9yIiwiYWRkcmVzc0xpbmVPYmplY3QiLCJhZGRyZXNzRmllbGQiLCJ1cGRhdGVMYWJlbCIsIm5vZGVOYW1lIiwiaW5uZXJUZXh0IiwiZmllbGQiLCJsYWJlbHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImh0bWxGb3IiLCJhZGRFdmVudExpc3RlbmVyIiwiZ2xvYmFsUmVzZXQiLCJiaW5kIiwicmVuZGVySW5wdXRMaXN0IiwiaW5wdXRBcnJheSIsImhhbmRsZVZhbGlkYXRlUmVzcG9uc2UiLCJyZXNwb25zZSIsInN1Z2dlc3Rpb25zIiwiaGFuZGxlRW1wdHlQaWNrbGlzdCIsInNwaW5uZXJDb250YWluZXIiLCJzcGlubmVyIiwibWVyZ2VEZWZhdWx0T3B0aW9ucyIsInNldHVwIiwic2V0VG9rZW4iLCJzZXRTZWFyY2hUeXBlIiwic2V0SW5wdXRzIiwiZ2V0RW5yaWNobWVudERhdGEiLCJnbG9iYWxBZGRyZXNzS2V5IiwiY291bnRyeV9pc28iLCJnbG9iYWxfYWRkcmVzc19rZXkiLCJhdHRyaWJ1dGVzIiwiZ2VvY29kZXMiLCJyZXF1ZXN0IiwiaGFuZGxlRW5yaWNobWVudFJlc3VsdCIsInN0cmluZ2lmeSIsInNldENvdW50cnlMaXN0IiwiY3JlYXRlUGlja2xpc3QiLCJzZXRUaW1lb3V0IiwiZ2V0UGFyYW1ldGVyIiwibmFtZSIsInJlc3VsdHMiLCJSZWdFeHAiLCJleGVjIiwibG9jYXRpb24iLCJzZWFyY2giLCJkZWNvZGVVUklDb21wb25lbnQiLCJjdXN0b21PcHRpb25zIiwiZW5hYmxlZCIsImdldFByb21wdHNldCIsImN1cnJlbnREYXRhU2V0IiwibG9va3VwRGF0YXNldENvZGUiLCJoYW5kbGVQcm9tcHRzZXRSZXN1bHQiLCJsaW5lcyIsImV4YW1wbGUiLCJwcm9tcHQiLCJzdWdnZXN0ZWRfaW5wdXRfbGVuZ3RoIiwiVkFMSURBVEUiLCJkYXRhc2V0cyIsIkFycmF5IiwiaXNBcnJheSIsInNlYXJjaF90eXBlIiwicHJvbXB0X3NldCIsImZpbmQiLCJkYXRhc2V0IiwiaW5jbHVkZXMiLCJyZWdpc3RlcklucHV0cyIsImxvb2t1cEJ1dHRvbiIsImxvb2t1cEZuIiwiZnJvbSIsImtleVVwRm4iLCJjaGVja1RhYkZuIiwiY2hlY2tUYWIiLCJoYW5kbGVLZXlib2FyZEV2ZW50IiwiY291bnRyeUNvZGVNYXBwaW5nIiwiZm9jdXMiLCJjb3VudHJ5TGlzdCIsImhhbmRsZUNvdW50cnlMaXN0Q2hhbmdlIiwiY291bnRyeUNvZGUiLCJFcnJvciIsImdlbmVyYXRlU2VhcmNoRGF0YUZvckFwaUNhbGwiLCJjb21wb25lbnRzIiwidW5zcGVjaWZpZWQiLCJjdXJyZW50U2VhcmNoVGVybSIsIm1heF9zdWdnZXN0aW9ucyIsIlZhbHVlIiwiZ2VuZXJhdGVMb29rdXBEYXRhRm9yQXBpQ2FsbCIsInNob3VsZEdldFN1Z2dlc3Rpb25zIiwidHlwZSIsImdldFdoYXQzV29yZHNMb29rdXBWYWx1ZSIsInN0YXJ0c1dpdGgiLCJzbGljZSIsInByZXZlbnREZWZhdWx0IiwiZ2V0S2V5Iiwia2V5dXAiLCJtYXAiLCJqb2luIiwiY291bnRyeUNvZGVBbmREYXRhc2V0Iiwic3BsaXQiLCJjYW5TZWFyY2giLCJhYm9ydCIsInRlc3QiLCJ0cmltIiwiaW5kZXhPZiIsImlzV2hhdDNXb3JkcyIsInNob3dXaGF0M1dvcmRzIiwiUGlja2xpc3QiLCJ0YWJDb3VudCIsIml0ZW1zIiwiaGFuZGxlQ29tbW9uU2hvd1BpY2tsaXN0TG9naWMiLCJyZWZpbmUiLCJpc05lZWRlZCIsImNyZWF0ZUlucHV0Iiwic3VnZ2VzdGlvbnNfcHJvbXB0Iiwic3VnZ2VzdGlvbnNfa2V5IiwiZGlzcGxheVN1Z2dlc3Rpb25zSGVhZGVyIiwibGlzdGVuIiwiZGlzcGxheVVzZUFkZHJlc3NFbnRlcmVkRm9vdGVyIiwic2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCIsIndoYXQzd29yZHNJdGVtcyIsImNyZWF0ZVdoYXQzV29yZHNMaXN0SXRlbSIsInNob3dMb29rdXAiLCJsb29rdXBJdGVtcyIsImFkZHJlc3NlcyIsImNyZWF0ZUxvb2t1cExpc3RJdGVtIiwiY3VycmVudEl0ZW0iLCJyZXNldFRhYkNvdW50IiwiY3JlYXRlTGlzdCIsInVzZUFkZHJlc3NFbnRlcmVkIiwicmVtb3ZlIiwiaGFuZGxlRW1wdHlQaWNrbGlzdENhbGxiYWNrIiwidGl0bGVEaXYiLCJjb250YWluZXJEaXYiLCJuZXh0RWxlbWVudFNpYmxpbmciLCJpdGVtRGl2IiwiY2xpY2siLCJvdXRPZkJvdW5kc1RvcCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInRvcCIsIm91dE9mQm91bmRzQm90dG9tIiwiYm90dG9tIiwid2luZG93IiwiaW5uZXJIZWlnaHQiLCJzY3JvbGxJbnRvVmlldyIsImZpcnN0Q2hpbGQiLCJpbnB1dERhdGEiLCJhZGRyZXNzX2xpbmVfMSIsImFkZHJlc3NfbGluZV8yIiwiYWRkcmVzc19saW5lXzMiLCJmb3JtYXRNYW51YWxBZGRyZXNzTGluZSIsImxpbmVPYmplY3QiLCJjaGVja0VudGVyIiwicm93IiwiYWRkTWF0Y2hpbmdFbXBoYXNpcyIsImRlc2NyaXB0aW9uIiwid2hhdDN3b3JkcyIsImVudGVyIiwiYnV0dG9uIiwiS2V5Ym9hcmRFdmVudCIsIk1vdXNlRXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJyZWZpbmVtZW50IiwiZ2V0QXR0cmlidXRlIiwiZmlyc3RBZGRyZXNzIiwibGFzdEFkZHJlc3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwiY3VycmVudGx5SGlnaGxpZ2h0ZWQiLCJwcmV2aW91c2x5SGlnaGxpZ2h0ZWQiLCJhZGRyZXNzTGlzdENvb3JkcyIsIm9mZnNldFRvcCIsIm9mZnNldEhlaWdodCIsInNjcm9sbFRvcCIsImhpZ2hsaWdodHMiLCJtYXRjaGVkIiwicmVwbGFjZW1lbnQiLCJzdWJzdHJpbmciLCJwaWNrIiwicGlja2xpc3RJdGVtIiwibG9va3VwIiwibG9va3VwVjJSZXF1ZXN0Iiwic3RhdGUiLCJtb2RpZmllciIsIkFkZHJlc3NWYWxpZGF0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +!function(){"use strict";var e,s=function(){function e(){this.collection={}}return e.prototype.on=function(e,s){this.collection[e]=this.collection[e]||[],this.collection[e].push(s)},e.prototype.trigger=function(e,s){if(this.collection[e])for(var t=0;t=200&&d.currentRequest.status<400){var s=JSON.parse(d.currentRequest.responseText);t(s)}else d.instance.searchSpinner.hide(),d.instance.events.trigger("request-error",e),d.instance.events.trigger("request-error-".concat(d.currentRequest.status),e)},this.currentRequest.onerror=function(e){d.instance.searchSpinner.hide(),d.instance.events.trigger("request-error",e)},this.currentRequest.ontimeout=function(e){d.instance.searchSpinner.hide(),d.instance.events.trigger("request-timeout",e)},this.currentRequest.send(o)},e}();!function(e){e.AUTOCOMPLETE="autocomplete",e.SINGLELINE="singleline",e.VALIDATE="validate"}(e||(e={}));var a={enableWhat3Words:!0,searchType:e.AUTOCOMPLETE,input:{placeholderText:"Start typing an address...",applyFocus:!1},formattedAddressContainer:{showHeading:!1,headingType:"h3",validatedHeadingText:"Validated address",manualHeadingText:"Manual address entered"},searchAgain:{visible:!0,text:"Search again"},useAddressEnteredText:" - Use address entered or try again...",useSpinner:!1,language:"en",addressLineLabels:["address_line_1","address_line_2","address_line_3","locality","region","postal_code","country"]},d=[{country:"Afghanistan",iso3Code:"AFG",iso2Code:"AF",datasetCode:"af-address-ed",searchType:"singleline, validate"},{country:"Afghanistan",iso3Code:"AFG",iso2Code:"AF",datasetCode:"af-address-eh",searchType:"autocomplete"},{country:"Albania",iso3Code:"ALB",iso2Code:"AL",datasetCode:"al-address-ed",searchType:"singleline, validate"},{country:"Albania",iso3Code:"ALB",iso2Code:"AL",datasetCode:"al-address-eh",searchType:"autocomplete"},{country:"Algeria",iso3Code:"DZA",iso2Code:"DZ",datasetCode:"dz-address-ed",searchType:"singleline, validate"},{country:"Algeria",iso3Code:"DZA",iso2Code:"DZ",datasetCode:"dz-address-eh",searchType:"autocomplete"},{country:"American Samoa",iso3Code:"ASM",iso2Code:"AS",datasetCode:"as-address-eh",searchType:"autocomplete"},{country:"Andorra",iso3Code:"AND",iso2Code:"AD",datasetCode:"ad-address-ed",searchType:"singleline, validate"},{country:"Andorra",iso3Code:"AND",iso2Code:"AD",datasetCode:"ad-address-eh",searchType:"autocomplete"},{country:"Angola",iso3Code:"AGO",iso2Code:"AO",datasetCode:"ao-address-ed",searchType:"singleline, validate"},{country:"Angola",iso3Code:"AGO",iso2Code:"AO",datasetCode:"ao-address-eh",searchType:"autocomplete"},{country:"Anguilla",iso3Code:"AIA",iso2Code:"AI",datasetCode:"ai-address-eh",searchType:"autocomplete"},{country:"Antarctica",iso3Code:"ATA",iso2Code:"AQ",datasetCode:"aq-address-ed",searchType:"singleline, validate"},{country:"Antigua and Barbuda",iso3Code:"ATG",iso2Code:"AG",datasetCode:"ag-address-ed",searchType:"singleline, validate"},{country:"Antigua and Barbuda",iso3Code:"ATG",iso2Code:"AG",datasetCode:"ag-address-eh",searchType:"autocomplete"},{country:"Argentina",iso3Code:"ARG",iso2Code:"AR",datasetCode:"ar-address-ed",searchType:"singleline, validate"},{country:"Argentina",iso3Code:"ARG",iso2Code:"AR",datasetCode:"ar-address-eh",searchType:"autocomplete"},{country:"Armenia",iso3Code:"ARM",iso2Code:"AM",datasetCode:"am-address-ed",searchType:"singleline, validate"},{country:"Armenia",iso3Code:"ARM",iso2Code:"AM",datasetCode:"am-address-eh",searchType:"autocomplete"},{country:"Aruba",iso3Code:"ABW",iso2Code:"AW",datasetCode:"aw-address-ed",searchType:"singleline, validate"},{country:"Aruba",iso3Code:"ABW",iso2Code:"AW",datasetCode:"aw-address-eh",searchType:"autocomplete"},{country:"Australia DataFusion",iso3Code:"AUS",iso2Code:"AU",datasetCode:"au-address-datafusion",searchType:"autocomplete, singleline, typedown"},{country:"Australia Geocoded National Address",iso3Code:"AUS",iso2Code:"AU",datasetCode:"au-address-gnaf",searchType:"autocomplete, singleline, typedown, validate"},{country:"Australia Postal Address",iso3Code:"AUS",iso2Code:"AU",datasetCode:"au-address",searchType:"autocomplete, singleline, typedown, validate"},{country:"Austria",iso3Code:"AUT",iso2Code:"AT",datasetCode:"at-address-eh",searchType:"autocomplete"},{country:"Austria",iso3Code:"AUT",iso2Code:"AT",datasetCode:"az-address-ed",searchType:"singleline, validate"},{country:"Azerbaijan",iso3Code:"AZE",iso2Code:"AZ",datasetCode:"az-address-ed",searchType:"singleline, validate"},{country:"Azerbaijan",iso3Code:"AZE",iso2Code:"AZ",datasetCode:"az-address-eh",searchType:"autocomplete"},{country:"Bahamas",iso3Code:"BHS",iso2Code:"BS",datasetCode:"bs-address-ed",searchType:"singleline, validate"},{country:"Bahamas",iso3Code:"BHS",iso2Code:"BS",datasetCode:"bs-address-eh",searchType:"autocomplete"},{country:"Bahrain",iso3Code:"BHR",iso2Code:"BH",datasetCode:"bh-address-ed",searchType:"singleline, validate"},{country:"Bahrain",iso3Code:"BHR",iso2Code:"BH",datasetCode:"bh-address-eh",searchType:"autocomplete"},{country:"Bangladesh",iso3Code:"BGD",iso2Code:"BD",datasetCode:"bd-address-ed",searchType:"singleline, validate"},{country:"Bangladesh",iso3Code:"BGD",iso2Code:"BD",datasetCode:"bd-address-eh",searchType:"autocomplete"},{country:"Barbados",iso3Code:"BRB",iso2Code:"BB",datasetCode:"bb-address-ed",searchType:"singleline, validate"},{country:"Barbados",iso3Code:"BRB",iso2Code:"BB",datasetCode:"bb-address-eh",searchType:"autocomplete"},{country:"Belarus",iso3Code:"BLR",iso2Code:"BY",datasetCode:"by-address-ed",searchType:"singleline, validate"},{country:"Belarus",iso3Code:"BLR",iso2Code:"BY",datasetCode:"by-address-eh",searchType:"autocomplete"},{country:"Belgium",iso3Code:"BEL",iso2Code:"BE",datasetCode:"be-address",searchType:"singleline, typedown"},{country:"Belgium",iso3Code:"BEL",iso2Code:"BE",datasetCode:"be-address-ed",searchType:" validate"},{country:"Belgium",iso3Code:"BEL",iso2Code:"BE",datasetCode:"be-address-eh",searchType:"autocomplete"},{country:"Belize",iso3Code:"BLZ",iso2Code:"BZ",datasetCode:"bz-address-ed",searchType:"singleline, validate"},{country:"Belize",iso3Code:"BLZ",iso2Code:"BZ",datasetCode:"bz-address-eh",searchType:"autocomplete"},{country:"Benin",iso3Code:"BEN",iso2Code:"BJ",datasetCode:"bj-address-ed",searchType:"singleline, validate"},{country:"Benin",iso3Code:"BEN",iso2Code:"BJ",datasetCode:"bj-address-eh",searchType:"autocomplete"},{country:"Bermuda",iso3Code:"BMU",iso2Code:"BM",datasetCode:"bm-address-ed",searchType:"singleline, validate"},{country:"Bermuda",iso3Code:"BMU",iso2Code:"BM",datasetCode:"bm-address-eh",searchType:"autocomplete"},{country:"Bhutan",iso3Code:"BTN",iso2Code:"BT",datasetCode:"bt-address-ed",searchType:"singleline, validate"},{country:"Bhutan",iso3Code:"BTN",iso2Code:"BT",datasetCode:"bt-address-eh",searchType:"autocomplete"},{country:"Bolivia",iso3Code:"BOL",iso2Code:"BO",datasetCode:"bo-address-ed",searchType:"singleline, validate"},{country:"Bolivia",iso3Code:"BOL",iso2Code:"BO",datasetCode:"bo-address-eh",searchType:"autocomplete"},{country:"Bonaire, Sint Eustatius and Saba",iso3Code:"BES",iso2Code:"BQ",datasetCode:"bq-address-ed",searchType:"singleline, validate"},{country:"Bonaire, Sint Eustatius and Saba",iso3Code:"BES",iso2Code:"BQ",datasetCode:"bq-address-eh",searchType:"autocomplete"},{country:"Bosnia and Herzegovina",iso3Code:"BIH",iso2Code:"BA",datasetCode:"ba-address-ed",searchType:"singleline, validate"},{country:"Bosnia and Herzegovina",iso3Code:"BIH",iso2Code:"BA",datasetCode:"ba-address-eh",searchType:"autocomplete"},{country:"Botswana",iso3Code:"BWA",iso2Code:"BW",datasetCode:"bw-address-ed",searchType:"singleline, validate"},{country:"Botswana",iso3Code:"BWA",iso2Code:"BW",datasetCode:"bw-address-eh",searchType:"autocomplete"},{country:"Brazil",iso3Code:"BRA",iso2Code:"BR",datasetCode:"br-address-ed",searchType:"singleline, validate"},{country:"Brazil",iso3Code:"BRA",iso2Code:"BR",datasetCode:"br-address-eh",searchType:"autocomplete"},{country:"Brunei Darussalam",iso3Code:"BRN",iso2Code:"BN",datasetCode:"bn-address-ed",searchType:"singleline, validate"},{country:"Brunei Darussalam",iso3Code:"BRN",iso2Code:"BN",datasetCode:"bn-address-eh",searchType:"autocomplete"},{country:"Bulgaria",iso3Code:"BGR",iso2Code:"BG",datasetCode:"bg-address-ed",searchType:"singleline, validate"},{country:"Bulgaria",iso3Code:"BGR",iso2Code:"BG",datasetCode:"bg-address-eh",searchType:"autocomplete"},{country:"Burkina Faso",iso3Code:"BFA",iso2Code:"BF",datasetCode:"bf-address-ed",searchType:"singleline, validate"},{country:"Burkina Faso",iso3Code:"BFA",iso2Code:"BF",datasetCode:"bf-address-eh",searchType:"autocomplete"},{country:"Burundi",iso3Code:"BDI",iso2Code:"BI",datasetCode:"bi-address-eh",searchType:"autocomplete"},{country:"Cambodia",iso3Code:"KHM",iso2Code:"KH",datasetCode:"kh-address-ed",searchType:"singleline, validate"},{country:"Cambodia",iso3Code:"KHM",iso2Code:"KH",datasetCode:"kh-address-eh",searchType:"autocomplete"},{country:"Cameroon",iso3Code:"CMR",iso2Code:"CM",datasetCode:"cm-address-ed",searchType:"singleline, validate"},{country:"Cameroon",iso3Code:"CMR",iso2Code:"CM",datasetCode:"cm-address-eh",searchType:"autocomplete"},{country:"Canada",iso3Code:"CAN",iso2Code:"CA",datasetCode:"ca-address",searchType:"autocomplete, singleline, typedown, validate"},{country:"Cape Verde",iso3Code:"CPV",iso2Code:"CV",datasetCode:"cv-address-ed",searchType:"singleline, validate"},{country:"Cape Verde",iso3Code:"CPV",iso2Code:"CV",datasetCode:"cv-address-eh",searchType:"autocomplete"},{country:"Cayman Islands",iso3Code:"CYM",iso2Code:"KY",datasetCode:"ky-address-ed",searchType:"singleline, validate"},{country:"Cayman Islands",iso3Code:"CYM",iso2Code:"KY",datasetCode:"ky-address-eh",searchType:"autocomplete"},{country:"Central African Republic",iso3Code:"CAF",iso2Code:"CF",datasetCode:"cf-address-ed",searchType:"singleline, validate"},{country:"Central African Republic",iso3Code:"CAF",iso2Code:"CF",datasetCode:"cf-address-eh",searchType:"autocomplete"},{country:"Chad",iso3Code:"TCD",iso2Code:"TD",datasetCode:"td-address-ed",searchType:"singleline, validate"},{country:"Chad",iso3Code:"TCD",iso2Code:"TD",datasetCode:"td-address-eh",searchType:"autocomplete"},{country:"Chile",iso3Code:"CHL",iso2Code:"CL",datasetCode:"cl-address-ed",searchType:"singleline, validate"},{country:"Chile",iso3Code:"CHL",iso2Code:"CL",datasetCode:"cl-address-eh",searchType:"autocomplete"},{country:"China",iso3Code:"CHN",iso2Code:"CN",datasetCode:"cn-address-ed",searchType:"singleline, validate"},{country:"China",iso3Code:"CHN",iso2Code:"CN",datasetCode:"cn-address-eh",searchType:"autocomplete"},{country:"Christmas Island",iso3Code:"CXR",iso2Code:"CX",datasetCode:"cx-address-eh",searchType:"autocomplete"},{country:"Cocos Island",iso3Code:"CCK",iso2Code:"CC",datasetCode:"cc-address-eh",searchType:"autocomplete"},{country:"Colombia",iso3Code:"COL",iso2Code:"CO",datasetCode:"co-address-ed",searchType:"singleline, validate"},{country:"Colombia",iso3Code:"COL",iso2Code:"CO",datasetCode:"co-address-eh",searchType:"autocomplete"},{country:"Comoros",iso3Code:"COM",iso2Code:"KM",datasetCode:"km-address-ed",searchType:"singleline, validate"},{country:"Comoros",iso3Code:"COM",iso2Code:"KM",datasetCode:"km-address-eh",searchType:"autocomplete"},{country:"Congo",iso3Code:"COG",iso2Code:"CG",datasetCode:"cg-address-ed",searchType:"singleline, validate"},{country:"Congo",iso3Code:"COG",iso2Code:"CG",datasetCode:"cg-address-eh",searchType:"autocomplete"},{country:"Congo, The Democratic Republic of the",iso3Code:"COD",iso2Code:"CD",datasetCode:"cd-address-ed",searchType:"singleline, validate"},{country:"Congo, The Democratic Republic of the",iso3Code:"COD",iso2Code:"CD",datasetCode:"cd-address-eh",searchType:"autocomplete"},{country:"Cook Islands",iso3Code:"COK",iso2Code:"CK",datasetCode:"ck-address-ed",searchType:"singleline, validate"},{country:"Cook Islands",iso3Code:"COK",iso2Code:"CK",datasetCode:"ck-address-eh",searchType:"autocomplete"},{country:"Costa Rica",iso3Code:"CRI",iso2Code:"CR",datasetCode:"cr-address-ed",searchType:"singleline, validate"},{country:"Costa Rica",iso3Code:"CRI",iso2Code:"CR",datasetCode:"cr-address-eh",searchType:"autocomplete"},{country:"Croatia",iso3Code:"HRV",iso2Code:"HR",datasetCode:"hr-address-ed",searchType:"singleline, validate"},{country:"Croatia",iso3Code:"HRV",iso2Code:"HR",datasetCode:"hr-address-eh",searchType:"autocomplete"},{country:"Cuba",iso3Code:"CUB",iso2Code:"CU",datasetCode:"cu-address-ed",searchType:"singleline, validate"},{country:"Cuba",iso3Code:"CUB",iso2Code:"CU",datasetCode:"cu-address-eh",searchType:"autocomplete"},{country:"Curaçao",iso3Code:"CUW",iso2Code:"CW",datasetCode:"cw-address-ed",searchType:"singleline, validate"},{country:"Curaçao",iso3Code:"CUW",iso2Code:"CW",datasetCode:"cw-address-eh",searchType:"autocomplete"},{country:"Cyprus",iso3Code:"CYP",iso2Code:"CY",datasetCode:"cy-address-ed",searchType:"singleline, validate"},{country:"Cyprus",iso3Code:"CYP",iso2Code:"CY",datasetCode:"cy-address-eh",searchType:"autocomplete"},{country:"Czech Republic",iso3Code:"CZE",iso2Code:"CZ",datasetCode:"cz-address-ed",searchType:"singleline, validate"},{country:"Czech Republic",iso3Code:"CZE",iso2Code:"CZ",datasetCode:"cz-address-eh",searchType:"autocomplete"},{country:"Côte d'Ivoire",iso3Code:"CIV",iso2Code:"CI",datasetCode:"ci-address-ed",searchType:"singleline, validate"},{country:"Côte d'Ivoire",iso3Code:"CIV",iso2Code:"CI",datasetCode:"ci-address-eh",searchType:"autocomplete"},{country:"Denmark",iso3Code:"DNK",iso2Code:"DK",datasetCode:"dk-address-ed",searchType:"singleline, validate"},{country:"Denmark",iso3Code:"DNK",iso2Code:"DK",datasetCode:"dk-address-eh",searchType:"autocomplete"},{country:"Djibouti",iso3Code:"DJI",iso2Code:"DJ",datasetCode:"dj-address-ed",searchType:"singleline, validate"},{country:"Djibouti",iso3Code:"DJI",iso2Code:"DJ",datasetCode:"dj-address-eh",searchType:"autocomplete"},{country:"Dominica",iso3Code:"DMA",iso2Code:"DM",datasetCode:"dm-address-ed",searchType:"singleline, validate"},{country:"Dominica",iso3Code:"DMA",iso2Code:"DM",datasetCode:"dm-address-eh",searchType:"autocomplete"},{country:"Dominican Republic",iso3Code:"DOM",iso2Code:"DO",datasetCode:"do-address-ed",searchType:"singleline, validate"},{country:"Dominican Republic",iso3Code:"DOM",iso2Code:"DO",datasetCode:"do-address-eh",searchType:"autocomplete"},{country:"Ecuador",iso3Code:"ECU",iso2Code:"EC",datasetCode:"ec-address-ed",searchType:"singleline, validate"},{country:"Ecuador",iso3Code:"ECU",iso2Code:"EC",datasetCode:"ec-address-eh",searchType:"autocomplete"},{country:"Egypt",iso3Code:"EGY",iso2Code:"EG",datasetCode:"eg-address-ed",searchType:"singleline, validate"},{country:"Egypt",iso3Code:"EGY",iso2Code:"EG",datasetCode:"eg-address-eh",searchType:"autocomplete"},{country:"El Salvador",iso3Code:"SLV",iso2Code:"SV",datasetCode:"sv-address-ed",searchType:"singleline, validate"},{country:"El Salvador",iso3Code:"SLV",iso2Code:"SV",datasetCode:"sv-address-eh",searchType:"autocomplete"},{country:"Equatorial Guinea",iso3Code:"GNQ",iso2Code:"GQ",datasetCode:"gq-address-ed",searchType:"singleline, validate"},{country:"Equatorial Guinea",iso3Code:"GNQ",iso2Code:"GQ",datasetCode:"gq-address-eh",searchType:"autocomplete"},{country:"Eritrea",iso3Code:"ERI",iso2Code:"ER",datasetCode:"er-address-ed",searchType:"singleline, validate"},{country:"Eritrea",iso3Code:"ERI",iso2Code:"ER",datasetCode:"er-address-eh",searchType:"autocomplete"},{country:"Estonia",iso3Code:"EST",iso2Code:"EE",datasetCode:"ee-address-ed",searchType:"singleline, validate"},{country:"Estonia",iso3Code:"EST",iso2Code:"EE",datasetCode:"ee-address-eh",searchType:"autocomplete"},{country:"Ethiopia",iso3Code:"ETH",iso2Code:"ET",datasetCode:"et-address-ed",searchType:"singleline, validate"},{country:"Ethiopia",iso3Code:"ETH",iso2Code:"ET",datasetCode:"et-address-eh",searchType:"autocomplete"},{country:"Falkland Islands (Malvinas)",iso3Code:"FLK",iso2Code:"FK",datasetCode:"fk-address-eh",searchType:"autocomplete"},{country:"Faroe Islands",iso3Code:"FRO",iso2Code:"FO",datasetCode:"fo-address-ed",searchType:"singleline, validate"},{country:"Faroe Islands",iso3Code:"FRO",iso2Code:"FO",datasetCode:"fo-address-eh",searchType:"autocomplete"},{country:"Fiji",iso3Code:"FJI",iso2Code:"FJ",datasetCode:"fj-address-ed",searchType:"singleline, validate"},{country:"Fiji",iso3Code:"FJI",iso2Code:"FJ",datasetCode:"fj-address-eh",searchType:"autocomplete"},{country:"Finland",iso3Code:"FIN",iso2Code:"FI",datasetCode:"fi-address",searchType:"singleline, typedown"},{country:"Finland",iso3Code:"FIN",iso2Code:"FI",datasetCode:"fi-address-ed",searchType:"validate"},{country:"Finland",iso3Code:"FIN",iso2Code:"FI",datasetCode:"fi-address-eh",searchType:"autocomplete"},{country:"France Street Level",iso3Code:"FRA",iso2Code:"FR",datasetCode:"fr-address-streetlevel",searchType:"singleline, typedown, validate"},{country:"France Sub-Premises Level",iso3Code:"FRA",iso2Code:"FR",datasetCode:"fr-additional-hexaline3",searchType:"autocomplete, singleline, typedown"},{country:"France Premises Level",iso3Code:"FRA",iso2Code:"FR",datasetCode:"fr-address",searchType:"singleline, typedown, validate"},{country:"French Guiana",iso3Code:"GUF",iso2Code:"GF",datasetCode:"gf-address-eh",searchType:"autocomplete"},{country:"French Polynesia",iso3Code:"PYF",iso2Code:"PF",datasetCode:"pf-address-eh",searchType:"autocomplete"},{country:"Gabon",iso3Code:"GAB",iso2Code:"GA",datasetCode:"ga-address-ed",searchType:"singleline, validate"},{country:"Gabon",iso3Code:"GAB",iso2Code:"GA",datasetCode:"ga-address-eh",searchType:"autocomplete"},{country:"Gambia",iso3Code:"GMB",iso2Code:"GM",datasetCode:"gm-address-ed",searchType:"singleline, validate"},{country:"Gambia",iso3Code:"GMB",iso2Code:"GM",datasetCode:"gm-address-eh",searchType:"autocomplete"},{country:"Georgia",iso3Code:"GEO",iso2Code:"GE",datasetCode:"ge-address-ed",searchType:"singleline, validate"},{country:"Georgia",iso3Code:"GEO",iso2Code:"GE",datasetCode:"ge-address-eh",searchType:"autocomplete"},{country:"Germany",iso3Code:"DEU",iso2Code:"DE",datasetCode:"de-address",searchType:"singleline, typedown, validate"},{country:"Germany",iso3Code:"DEU",iso2Code:"DE",datasetCode:"de-address-ed",searchType:"validate"},{country:"Germany",iso3Code:"DEU",iso2Code:"DE",datasetCode:"de-address-eh",searchType:"autocomplete"},{country:"Ghana",iso3Code:"GHA",iso2Code:"GH",datasetCode:"gh-address-ed",searchType:"singleline, validate"},{country:"Ghana",iso3Code:"GHA",iso2Code:"GH",datasetCode:"gh-address-eh",searchType:"autocomplete"},{country:"Gibraltar",iso3Code:"GIB",iso2Code:"GI",datasetCode:"gi-address-eh",searchType:"autocomplete"},{country:"Greece",iso3Code:"GRC",iso2Code:"GR",datasetCode:"gr-address-ed",searchType:"singleline, validate"},{country:"Greece",iso3Code:"GRC",iso2Code:"GR",datasetCode:"gr-address-eh",searchType:"autocomplete"},{country:"Greenland",iso3Code:"GRL",iso2Code:"GL",datasetCode:"gl-address-ed",searchType:"singleline, validate"},{country:"Greenland",iso3Code:"GRL",iso2Code:"GL",datasetCode:"gl-address-eh",searchType:"autocomplete"},{country:"Grenada",iso3Code:"GRD",iso2Code:"GD",datasetCode:"gd-address-ed",searchType:"singleline, validate"},{country:"Grenada",iso3Code:"GRD",iso2Code:"GD",datasetCode:"gd-address-eh",searchType:"autocomplete"},{country:"Guadeloupe",iso3Code:"GLP",iso2Code:"GP",datasetCode:"gp-address-eh",searchType:"autocomplete"},{country:"Guam",iso3Code:"GUM",iso2Code:"GU",datasetCode:"gu-address-eh",searchType:"autocomplete"},{country:"Guatemala",iso3Code:"GTM",iso2Code:"GT",datasetCode:"gt-address-ed",searchType:"singleline, validate"},{country:"Guatemala",iso3Code:"GTM",iso2Code:"GT",datasetCode:"gt-address-eh",searchType:"autocomplete"},{country:"Guinea",iso3Code:"GIN",iso2Code:"GN",datasetCode:"gn-address-ed",searchType:"singleline, validate"},{country:"Guinea",iso3Code:"GIN",iso2Code:"GN",datasetCode:"gn-address-eh",searchType:"autocomplete"},{country:"Guinea-Bissau",iso3Code:"GNB",iso2Code:"GW",datasetCode:"gw-address-ed",searchType:"singleline, validate"},{country:"Guinea-Bissau",iso3Code:"GNB",iso2Code:"GW",datasetCode:"gw-address-eh",searchType:"autocomplete"},{country:"Guyana",iso3Code:"GUY",iso2Code:"GY",datasetCode:"gy-address-ed",searchType:"singleline, validate"},{country:"Guyana",iso3Code:"GUY",iso2Code:"GY",datasetCode:"gy-address-eh",searchType:"autocomplete"},{country:"Haiti",iso3Code:"HTI",iso2Code:"HT",datasetCode:"ht-address-ed",searchType:"singleline, validate"},{country:"Haiti",iso3Code:"HTI",iso2Code:"HT",datasetCode:"ht-address-eh",searchType:"autocomplete"},{country:"Honduras",iso3Code:"HND",iso2Code:"HN",datasetCode:"hn-address-ed",searchType:"singleline, validate"},{country:"Honduras",iso3Code:"HND",iso2Code:"HN",datasetCode:"hn-address-eh",searchType:"autocomplete"},{country:"Hong Kong",iso3Code:"HKG",iso2Code:"HK",datasetCode:"hk-address-ed",searchType:"singleline, validate"},{country:"Hong Kong",iso3Code:"HKG",iso2Code:"HK",datasetCode:"hk-address-eh",searchType:"autocomplete"},{country:"Hungary",iso3Code:"HUN",iso2Code:"HU",datasetCode:"hu-address-ed",searchType:"singleline, validate"},{country:"Hungary",iso3Code:"HUN",iso2Code:"HU",datasetCode:"hu-address-eh",searchType:"autocomplete"},{country:"Iceland",iso3Code:"ISL",iso2Code:"IS",datasetCode:"is-address-ed",searchType:"singleline, validate"},{country:"Iceland",iso3Code:"ISL",iso2Code:"IS",datasetCode:"is-address-eh",searchType:"autocomplete"},{country:"India",iso3Code:"IND",iso2Code:"IN",datasetCode:"in-address-ed",searchType:"singleline, validate"},{country:"India",iso3Code:"IND",iso2Code:"IN",datasetCode:"in-address-eh",searchType:"autocomplete"},{country:"Indonesia",iso3Code:"IDN",iso2Code:"ID",datasetCode:"id-address-ed",searchType:"singleline, validate"},{country:"Indonesia",iso3Code:"IDN",iso2Code:"ID",datasetCode:"id-address-eh",searchType:"autocomplete"},{country:"Iran, Islamic Republic of",iso3Code:"IRN",iso2Code:"IR",datasetCode:"ir-address-ed",searchType:"singleline, validate"},{country:"Iran, Islamic Republic of",iso3Code:"IRN",iso2Code:"IR",datasetCode:"ir-address-eh",searchType:"autocomplete"},{country:"Iraq",iso3Code:"IRQ",iso2Code:"IQ",datasetCode:"iq-address-ed",searchType:"singleline, validate"},{country:"Iraq",iso3Code:"IRQ",iso2Code:"IQ",datasetCode:"iq-address-eh",searchType:"autocomplete"},{country:"Ireland",iso3Code:"IRL",iso2Code:"IE",datasetCode:"ie-address",searchType:"singleline, typedown"},{country:"Ireland",iso3Code:"IRL",iso2Code:"IE",datasetCode:"ie-address-ed",searchType:"singleline, validate"},{country:"Ireland",iso3Code:"IRL",iso2Code:"IE",datasetCode:"ie-address-eh",searchType:"autocomplete"},{country:"Ireland Eircode",iso3Code:"IRL",iso2Code:"IE",datasetCode:"ie-additional-eircode",searchType:"autocomplete"},{country:"Ireland ECAD",iso3Code:"IRL",iso2Code:"IE",datasetCode:"ie-address-ecad",searchType:"autocomplete"},{country:"Israel",iso3Code:"ISR",iso2Code:"IL",datasetCode:"il-address-ed",searchType:"singleline, validate"},{country:"Israel",iso3Code:"ISR",iso2Code:"IL",datasetCode:"il-address-eh",searchType:"autocomplete"},{country:"Italy",iso3Code:"ITA",iso2Code:"IT",datasetCode:"it-address-ed",searchType:"singleline, validate"},{country:"Italy",iso3Code:"ITA",iso2Code:"IT",datasetCode:"it-address-eh",searchType:"autocomplete"},{country:"Jamaica",iso3Code:"JAM",iso2Code:"JM",datasetCode:"jm-address-ed",searchType:"singleline, validate"},{country:"Jamaica",iso3Code:"JAM",iso2Code:"JM",datasetCode:"jm-address-eh",searchType:"autocomplete"},{country:"Japan",iso3Code:"JPN",iso2Code:"JP",datasetCode:"jp-address-ed",searchType:"singleline, validate"},{country:"Japan",iso3Code:"JPN",iso2Code:"JP",datasetCode:"jp-address",searchType:"singleline, validate"},{country:"Jordan",iso3Code:"JOR",iso2Code:"JO",datasetCode:"jo-address-ed",searchType:"singleline, validate"},{country:"Jordan",iso3Code:"JOR",iso2Code:"JO",datasetCode:"jo-address-eh",searchType:"autocomplete"},{country:"Kazakhstan",iso3Code:"KAZ",iso2Code:"KZ",datasetCode:"kz-address-ed",searchType:"singleline, validate"},{country:"Kazakhstan",iso3Code:"KAZ",iso2Code:"KZ",datasetCode:"kz-address-eh",searchType:"autocomplete"},{country:"Kenya",iso3Code:"KEN",iso2Code:"KE",datasetCode:"ke-address-ed",searchType:"singleline, validate"},{country:"Kenya",iso3Code:"KEN",iso2Code:"KE",datasetCode:"ke-address-eh",searchType:"autocomplete"},{country:"Kiribati",iso3Code:"KIR",iso2Code:"KI",datasetCode:"ki-address-ed",searchType:"singleline, validate"},{country:"Kiribati",iso3Code:"KIR",iso2Code:"KI",datasetCode:"ki-address-eh",searchType:"autocomplete"},{country:"Korea, Democratic People's Republic of",iso3Code:"PRK",iso2Code:"KP",datasetCode:"kp-address-ed",searchType:"singleline, validate"},{country:"Korea, Democratic People's Republic of",iso3Code:"PRK",iso2Code:"KP",datasetCode:"kp-address-eh",searchType:"autocomplete"},{country:"Korea, Republic of",iso3Code:"KOR",iso2Code:"KR",datasetCode:"kr-address-ed",searchType:"singleline, validate"},{country:"Korea, Republic of",iso3Code:"KOR",iso2Code:"KR",datasetCode:"kr-address-eh",searchType:"autocomplete"},{country:"Kosovo",iso3Code:"KOS",iso2Code:"XK",datasetCode:"kv-address-eh",searchType:"autocomplete"},{country:"Kuwait",iso3Code:"KWT",iso2Code:"KW",datasetCode:"kw-address-ed",searchType:"singleline, validate"},{country:"Kuwait",iso3Code:"KWT",iso2Code:"KW",datasetCode:"kw-address-eh",searchType:"autocomplete"},{country:"Kyrgyzstan",iso3Code:"KGZ",iso2Code:"KG",datasetCode:"kg-address-ed",searchType:"singleline, validate"},{country:"Kyrgyzstan",iso3Code:"KGZ",iso2Code:"KG",datasetCode:"kg-address-eh",searchType:"autocomplete"},{country:"Laos",iso3Code:"LAO",iso2Code:"LA",datasetCode:"la-address-ed",searchType:"singleline, validate"},{country:"Laos",iso3Code:"LAO",iso2Code:"LA",datasetCode:"la-address-eh",searchType:"autocomplete"},{country:"Latvia",iso3Code:"LVA",iso2Code:"LV",datasetCode:"lv-address-ed",searchType:"singleline, validate"},{country:"Latvia",iso3Code:"LVA",iso2Code:"LV",datasetCode:"lv-address-eh",searchType:"autocomplete"},{country:"Lebanon",iso3Code:"LBN",iso2Code:"LB",datasetCode:"lb-address-ed",searchType:"singleline, validate"},{country:"Lebanon",iso3Code:"LBN",iso2Code:"LB",datasetCode:"lb-address-eh",searchType:"autocomplete"},{country:"Lesotho",iso3Code:"LSO",iso2Code:"LS",datasetCode:"ls-address-ed",searchType:"singleline, validate"},{country:"Lesotho",iso3Code:"LSO",iso2Code:"LS",datasetCode:"ls-address-eh",searchType:"autocomplete"},{country:"Liberia",iso3Code:"LBR",iso2Code:"LR",datasetCode:"lr-address-ed",searchType:"singleline, validate"},{country:"Liberia",iso3Code:"LBR",iso2Code:"LR",datasetCode:"lr-address-eh",searchType:"autocomplete"},{country:"Libya",iso3Code:"LBY",iso2Code:"LY",datasetCode:"ly-address-ed",searchType:"singleline, validate"},{country:"Libya",iso3Code:"LBY",iso2Code:"LY",datasetCode:"ly-address-eh",searchType:"autocomplete"},{country:"Liechtenstein",iso3Code:"LIE",iso2Code:"LI",datasetCode:"li-address-ed",searchType:"singleline, validate"},{country:"Liechtenstein",iso3Code:"LIE",iso2Code:"LI",datasetCode:"li-address-eh",searchType:"autocomplete"},{country:"Lithuania",iso3Code:"LTU",iso2Code:"LT",datasetCode:"lt-address-ed",searchType:"singleline, validate"},{country:"Lithuania",iso3Code:"LTU",iso2Code:"LT",datasetCode:"lt-address-eh",searchType:"autocomplete"},{country:"Luxembourg",iso3Code:"LUX",iso2Code:"LU",datasetCode:"lu-address-ed",searchType:"singleline, validate"},{country:"Luxembourg",iso3Code:"LUX",iso2Code:"LU",datasetCode:"lu-address-eh",searchType:"autocomplete"},{country:"Macau",iso3Code:"MAC",iso2Code:"MO",datasetCode:"lv-address-ed",searchType:"singleline, validate"},{country:"Macau",iso3Code:"MAC",iso2Code:"MO",datasetCode:"lv-address-eh",searchType:"autocomplete"},{country:"Madagascar",iso3Code:"MDG",iso2Code:"MG",datasetCode:"mo-address-ed",searchType:"singleline, validate"},{country:"Madagascar",iso3Code:"MDG",iso2Code:"MG",datasetCode:"mo-address-eh",searchType:"autocomplete"},{country:"Malawi",iso3Code:"MWI",iso2Code:"MW",datasetCode:"mw-address-ed",searchType:"singleline, validate"},{country:"Malawi",iso3Code:"MWI",iso2Code:"MW",datasetCode:"mw-address-eh",searchType:"autocomplete"},{country:"Malaysia",iso3Code:"MYS",iso2Code:"MY",datasetCode:"my-address-ed",searchType:"singleline, validate"},{country:"Malaysia",iso3Code:"MYS",iso2Code:"MY",datasetCode:"my-address-eh",searchType:"autocomplete"},{country:"Maldives",iso3Code:"MDV",iso2Code:"MV",datasetCode:"mv-address-ed",searchType:"singleline, validate"},{country:"Maldives",iso3Code:"MDV",iso2Code:"MV",datasetCode:"mv-address-eh",searchType:"autocomplete"},{country:"Mali",iso3Code:"MLI",iso2Code:"ML",datasetCode:"ml-address-ed",searchType:"singleline, validate"},{country:"Mali",iso3Code:"MLI",iso2Code:"ML",datasetCode:"ml-address-eh",searchType:"autocomplete"},{country:"Malta",iso3Code:"MLT",iso2Code:"MT",datasetCode:"mt-address-ed",searchType:"singleline, validate"},{country:"Malta",iso3Code:"MLT",iso2Code:"MT",datasetCode:"mt-address-eh",searchType:"autocomplete"},{country:"Marshall Islands",iso3Code:"MHL",iso2Code:"MH",datasetCode:"mh-address-eh",searchType:"autocomplete"},{country:"Martinique",iso3Code:"MTQ",iso2Code:"MQ",datasetCode:"mq-address-eh",searchType:"autocomplete"},{country:"Mauritania",iso3Code:"MRT",iso2Code:"MR",datasetCode:"mr-address-ed",searchType:"singleline, validate"},{country:"Mauritania",iso3Code:"MRT",iso2Code:"MR",datasetCode:"mr-address-eh",searchType:"autocomplete"},{country:"Mauritius",iso3Code:"MUS",iso2Code:"MU",datasetCode:"mu-address-ed",searchType:"singleline, validate"},{country:"Mauritius",iso3Code:"MUS",iso2Code:"MU",datasetCode:"mu-address-eh",searchType:"autocomplete"},{country:"Mayotte",iso3Code:"MYT",iso2Code:"YT",datasetCode:"yt-address-eh",searchType:"autocomplete"},{country:"Mexico",iso3Code:"MEX",iso2Code:"MX",datasetCode:"mx-address-ed",searchType:"singleline, validate"},{country:"Mexico",iso3Code:"MEX",iso2Code:"MX",datasetCode:"mx-address-eh",searchType:"autocomplete"},{country:"Micronesia, Federated States of",iso3Code:"FSM",iso2Code:"FM",datasetCode:"fm-address-eh",searchType:"autocomplete"},{country:"Moldova",iso3Code:"MDA",iso2Code:"MD",datasetCode:"md-address-ed",searchType:"singleline, validate"},{country:"Moldova",iso3Code:"MDA",iso2Code:"MD",datasetCode:"md-address-eh",searchType:"autocomplete"},{country:"Monaco",iso3Code:"MCO",iso2Code:"MC",datasetCode:"mc-address-ed",searchType:"singleline, validate"},{country:"Monaco",iso3Code:"MCO",iso2Code:"MC",datasetCode:"mc-address-eh",searchType:"autocomplete"},{country:"Mongolia",iso3Code:"MNG",iso2Code:"MN",datasetCode:"mn-address-ed",searchType:"singleline, validate"},{country:"Mongolia",iso3Code:"MNG",iso2Code:"MN",datasetCode:"mn-address-eh",searchType:"autocomplete"},{country:"Montenegro",iso3Code:"MNE",iso2Code:"ME",datasetCode:"me-address-ed",searchType:"singleline, validate"},{country:"Montenegro",iso3Code:"MNE",iso2Code:"ME",datasetCode:"me-address-eh",searchType:"autocomplete"},{country:"Montserrat",iso3Code:"MSR",iso2Code:"MS",datasetCode:"ms-address-eh",searchType:"autocomplete"},{country:"Morocco",iso3Code:"MAR",iso2Code:"MA",datasetCode:"ma-address-ed",searchType:"singleline, validate"},{country:"Morocco",iso3Code:"MAR",iso2Code:"MA",datasetCode:"ma-address-eh",searchType:"autocomplete"},{country:"Mozambique",iso3Code:"MOZ",iso2Code:"MZ",datasetCode:"mz-address-ed",searchType:"singleline, validate"},{country:"Mozambique",iso3Code:"MOZ",iso2Code:"MZ",datasetCode:"mz-address-eh",searchType:"autocomplete"},{country:"Myanmar",iso3Code:"MMR",iso2Code:"MM",datasetCode:"mm-address-ed",searchType:"singleline, validate"},{country:"Myanmar",iso3Code:"MMR",iso2Code:"MM",datasetCode:"mm-address-eh",searchType:"autocomplete"},{country:"Namibia",iso3Code:"NAM",iso2Code:"NA",datasetCode:"na-address-ed",searchType:"singleline, validate"},{country:"Namibia",iso3Code:"NAM",iso2Code:"NA",datasetCode:"na-address-eh",searchType:"autocomplete"},{country:"Nauru",iso3Code:"NRU",iso2Code:"NR",datasetCode:"nr-address-ed",searchType:"singleline, validate"},{country:"Nauru",iso3Code:"NRU",iso2Code:"NR",datasetCode:"nr-address-eh",searchType:"autocomplete"},{country:"Nepal",iso3Code:"NPL",iso2Code:"NP",datasetCode:"np-address-ed",searchType:"singleline, validate"},{country:"Nepal",iso3Code:"NPL",iso2Code:"NP",datasetCode:"np-address-eh",searchType:"autocomplete"},{country:"Netherlands",iso3Code:"NLD",iso2Code:"NL",datasetCode:"nl-address-ed",searchType:"singleline, validate"},{country:"Netherlands",iso3Code:"NLD",iso2Code:"NL",datasetCode:"nl-address-eh",searchType:"autocomplete"},{country:"New Caledonia",iso3Code:"NCL",iso2Code:"NC",datasetCode:"nc-address-eh",searchType:"autocomplete"},{country:"New Zealand DataFusion",iso3Code:"NZL",iso2Code:"NZ",datasetCode:"nz-additional-datafusion",searchType:"autocomplete, singleline, typedown, validate"},{country:"New Zealand Postal Address",iso3Code:"NZL",iso2Code:"NZ",datasetCode:"nz-address",searchType:"autocomplete, singleline, typedown, validate"},{country:"Nicaragua",iso3Code:"NIC",iso2Code:"NI",datasetCode:"ni-address-ed",searchType:"singleline, validate"},{country:"Nicaragua",iso3Code:"NIC",iso2Code:"NI",datasetCode:"ni-address-eh",searchType:"autocomplete"},{country:"Niger",iso3Code:"NER",iso2Code:"NE",datasetCode:"ne-address-ed",searchType:"singleline, validate"},{country:"Niger",iso3Code:"NER",iso2Code:"NE",datasetCode:"ne-address-eh",searchType:"autocomplete"},{country:"Nigeria",iso3Code:"NGA",iso2Code:"NG",datasetCode:"ng-address-ed",searchType:"singleline, validate"},{country:"Nigeria",iso3Code:"NGA",iso2Code:"NG",datasetCode:"ng-address-eh",searchType:"autocomplete"},{country:"Niue",iso3Code:"NIU",iso2Code:"NU",datasetCode:"nu-address-ed",searchType:"singleline, validate"},{country:"Norfolk Island",iso3Code:"NFK",iso2Code:"NF",datasetCode:"nf-address-ed",searchType:"singleline, validate"},{country:"Norfolk Island",iso3Code:"NFK",iso2Code:"NF",datasetCode:"nf-address-eh",searchType:"autocomplete"},{country:"North Macedonia",iso3Code:"MKD",iso2Code:"MK",datasetCode:"mk-address-ed",searchType:"singleline, validate"},{country:"North Macedonia",iso3Code:"MKD",iso2Code:"MK",datasetCode:"mk-address-eh",searchType:"autocomplete"},{country:"Northern Mariana Islands",iso3Code:"MNP",iso2Code:"MP",datasetCode:"mp-address-eh",searchType:"autocomplete"},{country:"Norway",iso3Code:"NOR",iso2Code:"NO",datasetCode:"no-address-ed",searchType:"validate"},{country:"Norway",iso3Code:"NOR",iso2Code:"NO",datasetCode:"no-address-eh",searchType:"autocomplete"},{country:"Oman",iso3Code:"OMN",iso2Code:"OM",datasetCode:"om-address-ed",searchType:"singleline, validate"},{country:"Oman",iso3Code:"OMN",iso2Code:"OM",datasetCode:"om-address-eh",searchType:"autocomplete"},{country:"Pakistan",iso3Code:"PAK",iso2Code:"PK",datasetCode:"pk-address-ed",searchType:"singleline, validate"},{country:"Pakistan",iso3Code:"PAK",iso2Code:"PK",datasetCode:"pk-address-eh",searchType:"autocomplete"},{country:"Palau",iso3Code:"PLW",iso2Code:"PW",datasetCode:"pw-address-eh",searchType:"autocomplete"},{country:"Palestine",iso3Code:"PSE",iso2Code:"PS",datasetCode:"ps-address-eh",searchType:"autocomplete"},{country:"Panama",iso3Code:"PAN",iso2Code:"PA",datasetCode:"pa-address-ed",searchType:"singleline, validate"},{country:"Panama",iso3Code:"PAN",iso2Code:"PA",datasetCode:"pa-address-eh",searchType:"autocomplete"},{country:"Papua New Guinea",iso3Code:"PNG",iso2Code:"PG",datasetCode:"pg-address-ed",searchType:"singleline, validate"},{country:"Papua New Guinea",iso3Code:"PNG",iso2Code:"PG",datasetCode:"pg-address-eh",searchType:"autocomplete"},{country:"Paraguay",iso3Code:"PRY",iso2Code:"PY",datasetCode:"py-address-ed",searchType:"singleline, validate"},{country:"Paraguay",iso3Code:"PRY",iso2Code:"PY",datasetCode:"py-address-eh",searchType:"autocomplete"},{country:"Peru",iso3Code:"PER",iso2Code:"PE",datasetCode:"pe-address-ed",searchType:"singleline, validate"},{country:"Peru",iso3Code:"PER",iso2Code:"PE",datasetCode:"pe-address-eh",searchType:"autocomplete"},{country:"Philippines",iso3Code:"PHL",iso2Code:"PH",datasetCode:"ph-address-ed",searchType:"singleline, validate"},{country:"Philippines",iso3Code:"PHL",iso2Code:"PH",datasetCode:"ph-address-eh",searchType:"autocomplete"},{country:"Pitcairn Islands",iso3Code:"PCN",iso2Code:"PN",datasetCode:"pn-address-eh",searchType:"autocomplete"},{country:"Poland",iso3Code:"POL",iso2Code:"PL",datasetCode:"pl-address-ed",searchType:"singleline, validate"},{country:"Poland",iso3Code:"POL",iso2Code:"PL",datasetCode:"pl-address-eh",searchType:"autocomplete"},{country:"Portugal",iso3Code:"PRT",iso2Code:"PT",datasetCode:"pt-address-ed",searchType:"singleline, validate"},{country:"Portugal",iso3Code:"PRT",iso2Code:"PT",datasetCode:"pt-address-eh",searchType:"autocomplete"},{country:"Qatar",iso3Code:"QAT",iso2Code:"QA",datasetCode:"qa-address-ed",searchType:"singleline, validate"},{country:"Qatar",iso3Code:"QAT",iso2Code:"QA",datasetCode:"qa-address-eh",searchType:"autocomplete"},{country:"Romania",iso3Code:"ROU",iso2Code:"RO",datasetCode:"ro-address-ed",searchType:"singleline, validate"},{country:"Romania",iso3Code:"ROU",iso2Code:"RO",datasetCode:"ro-address-eh",searchType:"autocomplete"},{country:"Russian Federation",iso3Code:"RUS",iso2Code:"RU",datasetCode:"ru-address-ed",searchType:"singleline, validate"},{country:"Russian Federation",iso3Code:"RUS",iso2Code:"RU",datasetCode:"ru-address-eh",searchType:"autocomplete"},{country:"Rwanda",iso3Code:"RWA",iso2Code:"RW",datasetCode:"rw-address-ed",searchType:"singleline, validate"},{country:"Rwanda",iso3Code:"RWA",iso2Code:"RW",datasetCode:"rw-address-eh",searchType:"autocomplete"},{country:"Réunion",iso3Code:"REU",iso2Code:"RE",datasetCode:"re-address-eh",searchType:"autocomplete"},{country:"Saint Barthélemy",iso3Code:"BLM",iso2Code:"BL",datasetCode:"bl-address-eh",searchType:"autocomplete"},{country:"Saint Helena",iso3Code:"SHN",iso2Code:"SH",datasetCode:"sh-address-eh",searchType:"autocomplete"},{country:"Saint Kitts and Nevis",iso3Code:"KNA",iso2Code:"KN",datasetCode:"kn-address-ed",searchType:"singleline, validate"},{country:"Saint Kitts and Nevis",iso3Code:"KNA",iso2Code:"KN",datasetCode:"kn-address-eh",searchType:"autocomplete"},{country:"Saint Lucia",iso3Code:"LCA",iso2Code:"LC",datasetCode:"lc-address-eh",searchType:"autocomplete"},{country:"Saint Pierre and Miquelon",iso3Code:"SPM",iso2Code:"PM",datasetCode:"pm-address-eh",searchType:"autocomplete"},{country:"Saint Vincent and the Grenadines",iso3Code:"VCT",iso2Code:"VC",datasetCode:"vc-address-ed",searchType:"singleline, validate"},{country:"Saint Vincent and the Grenadines",iso3Code:"VCT",iso2Code:"VC",datasetCode:"vc-address-eh",searchType:"autocomplete"},{country:"Samoa",iso3Code:"WSM",iso2Code:"WS",datasetCode:"ws-address-ed",searchType:"singleline, validate"},{country:"Samoa",iso3Code:"WSM",iso2Code:"WS",datasetCode:"ws-address-eh",searchType:"autocomplete"},{country:"San Marino",iso3Code:"SMR",iso2Code:"SM",datasetCode:"sm-address-ed",searchType:"singleline, validate"},{country:"San Marino",iso3Code:"SMR",iso2Code:"SM",datasetCode:"sm-address-eh",searchType:"autocomplete"},{country:"Sao Tome and Principe",iso3Code:"STP",iso2Code:"ST",datasetCode:"st-address-ed",searchType:"singleline, validate"},{country:"Sao Tome and Principe",iso3Code:"STP",iso2Code:"ST",datasetCode:"st-address-eh",searchType:"autocomplete"},{country:"Saudi Arabia",iso3Code:"SAU",iso2Code:"SA",datasetCode:"sa-address-ed",searchType:"singleline, validate"},{country:"Saudi Arabia",iso3Code:"SAU",iso2Code:"SA",datasetCode:"sa-address-eh",searchType:"autocomplete"},{country:"Senegal",iso3Code:"SEN",iso2Code:"SN",datasetCode:"sn-address-ed",searchType:"singleline, validate"},{country:"Senegal",iso3Code:"SEN",iso2Code:"SN",datasetCode:"sn-address-eh",searchType:"autocomplete"},{country:"Serbia",iso3Code:"SRB",iso2Code:"RS",datasetCode:"rs-address-ed",searchType:"singleline, validate"},{country:"Serbia",iso3Code:"SRB",iso2Code:"RS",datasetCode:"rs-address-eh",searchType:"autocomplete"},{country:"Seychelles",iso3Code:"SYC",iso2Code:"SC",datasetCode:"sc-address-ed",searchType:"singleline, validate"},{country:"Seychelles",iso3Code:"SYC",iso2Code:"SC",datasetCode:"sc-address-eh",searchType:"autocomplete"},{country:"Sierra Leone",iso3Code:"SLE",iso2Code:"SL",datasetCode:"sl-address-ed",searchType:"singleline, validate"},{country:"Sierra Leone",iso3Code:"SLE",iso2Code:"SL",datasetCode:"sl-address-eh",searchType:"autocomplete"},{country:"Singapore",iso3Code:"SGP",iso2Code:"SG",datasetCode:"sg-address",searchType:"autocomplete, singleline, typedown, validate"},{country:"Sint Maarten",iso3Code:"SXM",iso2Code:"SX",datasetCode:"sx-address-ed",searchType:"singleline, validate"},{country:"Sint Maarten",iso3Code:"SXM",iso2Code:"SX",datasetCode:"sx-address-eh",searchType:"autocomplete"},{country:"Slovakia",iso3Code:"SVK",iso2Code:"SK",datasetCode:"sk-address-ed",searchType:"singleline, validate"},{country:"Slovakia",iso3Code:"SVK",iso2Code:"SK",datasetCode:"sk-address-eh",searchType:"autocomplete"},{country:"Slovenia",iso3Code:"SVN",iso2Code:"SI",datasetCode:"si-address-ed",searchType:"singleline, validate"},{country:"Slovenia",iso3Code:"SVN",iso2Code:"SI",datasetCode:"si-address-eh",searchType:"autocomplete"},{country:"Solomon Islands",iso3Code:"SLB",iso2Code:"SB",datasetCode:"sb-address-ed",searchType:"singleline, validate"},{country:"Solomon Islands",iso3Code:"SLB",iso2Code:"SB",datasetCode:"sb-address-eh",searchType:"autocomplete"},{country:"Somalia",iso3Code:"SOM",iso2Code:"SO",datasetCode:"so-address-ed",searchType:"singleline, validate"},{country:"Somalia",iso3Code:"SOM",iso2Code:"SO",datasetCode:"so-address-eh",searchType:"autocomplete"},{country:"South Africa",iso3Code:"ZAF",iso2Code:"ZA",datasetCode:"za-address-ed",searchType:"singleline, validate"},{country:"South Africa",iso3Code:"ZAF",iso2Code:"ZA",datasetCode:"za-address-eh",searchType:"autocomplete"},{country:"South Georgia and the South Sandwich Islands",iso3Code:"SGS",iso2Code:"GS",datasetCode:"gs-address-eh",searchType:"autocomplete"},{country:"South Sudan",iso3Code:"SSD",iso2Code:"SS",datasetCode:"ss-address-ed",searchType:"singleline, validate"},{country:"South Sudan",iso3Code:"SSD",iso2Code:"SS",datasetCode:"ss-address-eh",searchType:"autocomplete"},{country:"Spain",iso3Code:"ESP",iso2Code:"ES",datasetCode:"es-address",searchType:"singleline, typedown"},{country:"Spain",iso3Code:"ESP",iso2Code:"ES",datasetCode:"es-address-ed",searchType:"validate"},{country:"Spain",iso3Code:"ESP",iso2Code:"ES",datasetCode:"es-address-eh",searchType:"autocomplete"},{country:"Sri Lanka",iso3Code:"LKA",iso2Code:"LK",datasetCode:"lk-address-ed",searchType:"singleline, validate"},{country:"Sudan",iso3Code:"SDN",iso2Code:"SD",datasetCode:"sd-address-ed",searchType:"singleline, validate"},{country:"Sudan",iso3Code:"SDN",iso2Code:"SD",datasetCode:"sd-address-eh",searchType:"autocomplete"},{country:"Suriname",iso3Code:"SUR",iso2Code:"SR",datasetCode:"sr-address-ed",searchType:"singleline, validate"},{country:"Suriname",iso3Code:"SUR",iso2Code:"SR",datasetCode:"sr-address-eh",searchType:"autocomplete"},{country:"Svalbard and Jan Mayen Islands",iso3Code:"SJM",iso2Code:"SJ",datasetCode:"sj-address-eh",searchType:"autocomplete"},{country:"Swaziland (Eswatini)",iso3Code:"SWZ",iso2Code:"SZ",datasetCode:"sz-address-ed",searchType:"singleline, validate"},{country:"Swaziland (Eswatini)",iso3Code:"SWZ",iso2Code:"SZ",datasetCode:"sz-address-eh",searchType:"autocomplete"},{country:"Sweden",iso3Code:"SWE",iso2Code:"SE",datasetCode:"se-address",searchType:"singleline, typedown"},{country:"Sweden",iso3Code:"SWE",iso2Code:"SE",datasetCode:"se-address-ed",searchType:"validate"},{country:"Sweden",iso3Code:"SWE",iso2Code:"SE",datasetCode:"se-address-eh",searchType:"autocomplete"},{country:"Switzerland",iso3Code:"CHE",iso2Code:"CH",datasetCode:"ch-address",searchType:"singleline, typedown"},{country:"Switzerland",iso3Code:"CHE",iso2Code:"CH",datasetCode:"ch-address-ed",searchType:"validate"},{country:"Switzerland",iso3Code:"CHE",iso2Code:"CH",datasetCode:"ch-address-eh",searchType:"autocomplete"},{country:"Syria",iso3Code:"SYR",iso2Code:"SY",datasetCode:"sy-address-ed",searchType:"singleline, validate"},{country:"Syria",iso3Code:"SYR",iso2Code:"SY",datasetCode:"sy-address-eh",searchType:"autocomplete"},{country:"Taiwan",iso3Code:"TWN",iso2Code:"TW",datasetCode:"tw-address-ed",searchType:"singleline, validate"},{country:"Taiwan",iso3Code:"TWN",iso2Code:"TW",datasetCode:"tw-address-eh",searchType:"autocomplete"},{country:"Tajikistan",iso3Code:"TJK",iso2Code:"TJ",datasetCode:"tj-address-ed",searchType:"singleline, validate"},{country:"Tajikistan",iso3Code:"TJK",iso2Code:"TJ",datasetCode:"tj-address-eh",searchType:"autocomplete"},{country:"Tanzania",iso3Code:"TZA",iso2Code:"TZ",datasetCode:"tz-address-ed",searchType:"singleline, validate"},{country:"Tanzania",iso3Code:"TZA",iso2Code:"TZ",datasetCode:"tz-address-eh",searchType:"autocomplete"},{country:"Thailand",iso3Code:"THA",iso2Code:"TH",datasetCode:"th-address-ed",searchType:"singleline, validate"},{country:"Thailand",iso3Code:"THA",iso2Code:"TH",datasetCode:"th-address-eh",searchType:"autocomplete"},{country:"Timor-Leste",iso3Code:"TLS",iso2Code:"TL",datasetCode:"tl-address-ed",searchType:"singleline, validate"},{country:"Timor-Leste",iso3Code:"TLS",iso2Code:"TL",datasetCode:"tl-address-eh",searchType:"autocomplete"},{country:"Togo",iso3Code:"TGO",iso2Code:"TG",datasetCode:"tg-address-ed",searchType:"singleline, validate"},{country:"Togo",iso3Code:"TGO",iso2Code:"TG",datasetCode:"tg-address-eh",searchType:"autocomplete"},{country:"Tokelau",iso3Code:"TKL",iso2Code:"TK",datasetCode:"tk-address-ed",searchType:"singleline, validate"},{country:"Tokelau",iso3Code:"TKL",iso2Code:"TK",datasetCode:"tk-address-eh",searchType:"autocomplete"},{country:"Tonga",iso3Code:"TON",iso2Code:"TO",datasetCode:"to-address-ed",searchType:"singleline, validate"},{country:"Tonga",iso3Code:"TON",iso2Code:"TO",datasetCode:"to-address-eh",searchType:"autocomplete"},{country:"Trinidad and Tobago",iso3Code:"TTO",iso2Code:"TT",datasetCode:"tt-address-ed",searchType:"singleline, validate"},{country:"Trinidad and Tobago",iso3Code:"TTO",iso2Code:"TT",datasetCode:"tt-address-eh",searchType:"autocomplete"},{country:"Tunisia",iso3Code:"TUN",iso2Code:"TN",datasetCode:"tn-address-ed",searchType:"singleline, validate"},{country:"Tunisia",iso3Code:"TUN",iso2Code:"TN",datasetCode:"tn-address-eh",searchType:"autocomplete"},{country:"Turkey",iso3Code:"TUR",iso2Code:"TR",datasetCode:"tr-address-ed",searchType:"singleline, validate"},{country:"Turkey",iso3Code:"TUR",iso2Code:"TR",datasetCode:"tr-address-eh",searchType:"autocomplete"},{country:"Turkish Republic of Northern Cyprus",iso3Code:"NCY",iso2Code:"CY",datasetCode:"ny-address-eh",searchType:"autocomplete"},{country:"Turkmenistan",iso3Code:"TKM",iso2Code:"TM",datasetCode:"tm-address-ed",searchType:"singleline, validate"},{country:"Turkmenistan",iso3Code:"TKM",iso2Code:"TM",datasetCode:"tm-address-eh",searchType:"autocomplete"},{country:"Turks and Caicos Islands",iso3Code:"TCA",iso2Code:"TC",datasetCode:"tc-address-eh",searchType:"autocomplete"},{country:"Tuvalu",iso3Code:"TUV",iso2Code:"TV",datasetCode:"tv-address-ed",searchType:"singleline, validate"},{country:"Tuvalu",iso3Code:"TUV",iso2Code:"TV",datasetCode:"tv-address-eh",searchType:"autocomplete"},{country:"Uganda",iso3Code:"UGA",iso2Code:"UG",datasetCode:"ug-address-ed",searchType:"singleline, validate"},{country:"Uganda",iso3Code:"UGA",iso2Code:"UG",datasetCode:"ug-address-eh",searchType:"autocomplete"},{country:"Ukraine",iso3Code:"UKR",iso2Code:"UA",datasetCode:"ua-address-ed",searchType:"singleline, validate"},{country:"Ukraine",iso3Code:"UKR",iso2Code:"UA",datasetCode:"ua-address-eh",searchType:"autocomplete"},{country:"United Arab Emirates",iso3Code:"ARE",iso2Code:"AE",datasetCode:"ae-address-ed",searchType:"singleline, validate"},{country:"United Arab Emirates",iso3Code:"ARE",iso2Code:"AE",datasetCode:"ae-address-eh",searchType:"autocomplete"},{country:"United Kingdom",iso3Code:"GBR",iso2Code:"GB",datasetCode:["gb-address"],searchType:"autocomplete"},{country:"United Kingdom",iso3Code:"GBR",iso2Code:"GB",datasetCode:["gb-additional-business","gb-additional-multipleresidence","gb-additional-notyetbuilt"],searchType:"singleline"},{country:"United Kingdom AddressBase Premium",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-address-addressbase",searchType:"singleline, typedown, validate, lookup"},{country:"United Kingdom AddressBase Premium with Islands",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-additional-addressbaseislands",searchType:"singleline, typedown, validate, lookup"},{country:"United Kingdom Business Names",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-additional-business",searchType:"singleline, typedown"},{country:"United Kingdom Electricity",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-additional-electricity",searchType:"singleline, typedown, validate, lookup"},{country:"United Kingdom Gas",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-additional-gas",searchType:"singleline, typedown, validate, lookup"},{country:"United Kingdom Street Level",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-address-streetlevel",searchType:"singleline, typedown"},{country:"United Kingdom Extended Business",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-additional-businessextended",searchType:"singleline, typedown, validate, lookup"},{country:"United Kingdom Cymraeg (Welsh Language) Postal Address",iso3Code:"GBR",iso2Code:"GB",datasetCode:"gb-address-wales",searchType:"singleline, typedown, validate"},{country:"United States of America",iso3Code:"USA",iso2Code:"US",datasetCode:"us-address",searchType:"autocomplete, singleline, typedown, validate"},{country:"Uruguay",iso3Code:"URY",iso2Code:"UY",datasetCode:"uy-address-ed",searchType:"singleline, validate"},{country:"Uruguay",iso3Code:"URY",iso2Code:"UY",datasetCode:"uy-address-eh",searchType:"autocomplete"},{country:"Uzbekistan",iso3Code:"UZB",iso2Code:"UZ",datasetCode:"uz-address-ed",searchType:"singleline, validate"},{country:"Uzbekistan",iso3Code:"UZB",iso2Code:"UZ",datasetCode:"uz-address-eh",searchType:"autocomplete"},{country:"Vanuatu",iso3Code:"VUT",iso2Code:"VU",datasetCode:"vu-address-ed",searchType:"singleline, validate"},{country:"Vanuatu",iso3Code:"VUT",iso2Code:"VU",datasetCode:"vu-address-eh",searchType:"autocomplete"},{country:"Vatican City (Holy See)",iso3Code:"VAT",iso2Code:"VA",datasetCode:"va-address-ed",searchType:"singleline, validate"},{country:"Vatican City (Holy See)",iso3Code:"VAT",iso2Code:"VA",datasetCode:"va-address-eh",searchType:"autocomplete"},{country:"Venezuela",iso3Code:"VEN",iso2Code:"VE",datasetCode:"ve-address-ed",searchType:"singleline, validate"},{country:"Venezuela",iso3Code:"VEN",iso2Code:"VE",datasetCode:"ve-address-eh",searchType:"autocomplete"},{country:"Viet Nam",iso3Code:"VNM",iso2Code:"VN",datasetCode:"vn-address-ed",searchType:"singleline, validate"},{country:"Viet Nam",iso3Code:"VNM",iso2Code:"VN",datasetCode:"vn-address-eh",searchType:"autocomplete"},{country:"Virgin Islands, British",iso3Code:"VGB",iso2Code:"VG",datasetCode:"vg-address-eh",searchType:"autocomplete"},{country:"Virgin Islands, U.S.",iso3Code:"VIR",iso2Code:"VI",datasetCode:"vi-address-eh",searchType:"autocomplete"},{country:"Wallis and Futuna Islands",iso3Code:"WLF",iso2Code:"WF",datasetCode:"wf-address-eh",searchType:"autocomplete"},{country:"Western Sahara",iso3Code:"ESH",iso2Code:"EH",datasetCode:"eh-address-ed",searchType:"singleline, validate"},{country:"Western Sahara",iso3Code:"ESH",iso2Code:"EH",datasetCode:"eh-address-eh",searchType:"autocomplete"},{country:"Yemen",iso3Code:"YEM",iso2Code:"YE",datasetCode:"ye-address-ed",searchType:"singleline, validate"},{country:"Yemen",iso3Code:"YEM",iso2Code:"YE",datasetCode:"ye-address-eh",searchType:"autocomplete"},{country:"Zambia",iso3Code:"ZMB",iso2Code:"ZM",datasetCode:"zm-address-ed",searchType:"singleline, validate"},{country:"Zambia",iso3Code:"ZMB",iso2Code:"ZM",datasetCode:"zm-address-eh",searchType:"autocomplete"},{country:"Zimbabwe",iso3Code:"ZWE",iso2Code:"ZW",datasetCode:"zw-address-ed",searchType:"singleline, validate"},{country:"Zimbabwe",iso3Code:"ZWE",iso2Code:"ZW",datasetCode:"zw-address-eh",searchType:"autocomplete"}],i={en:{gbr:{locality:"Town/City",region:"County",postal_code:"Post code"},usa:{locality:"City",region:"State",postal_code:"ZIP code"}}},r=function(){this.size=0,this.maxSuggestions=25},n=function(){function s(s){var o=this;this.baseUrl="https://api.experianaperture.io/",this.searchEndpoint="address/search/v1",this.lookupEndpoint="address/lookup/v2",this.validateEndpoint="address/validate/v1",this.promptsetEndpoint="address/promptsets/v1",this.stepInEndpoint="address/suggestions/stepin/v1",this.refineEndpoint="address/suggestions/refine/v1",this.enrichmentEndpoint="enrichment/v2",this.what3WordCountries=["GBR"],this.what3WordsKeyword="what3words",this.poweredByLogo={element:null,create:function(e){var s={text:"".concat(this.svg," Powered by Experian"),format:""},t=e.createListItem(s);return t.classList.add("powered-by-experian"),e.list.parentNode.appendChild(t),t},destroy:function(e){this.element&&(e.list.parentNode.removeChild(this.element),this.element=void 0)},svg:''},this.result={formattedAddressContainer:null,lastAddressField:null,generateAddressLineRequired:!1,show:function(s){if(o.searchSpinner.hide(),o.picklist.hide(),o.lastSearchTerm="",o.searchType===e.AUTOCOMPLETE||s.result.address&&"No matches"!==s.result.confidence){o.inputs.forEach((function(e){return e.value=""})),o.result.calculateIfAddressLineGenerationRequired(),o.result.formattedAddressContainer=o.options.elements.formattedAddressContainer,!o.result.formattedAddressContainer&&o.result.generateAddressLineRequired&&o.result.createFormattedAddressContainer();for(var t=0;t0)for(var s=0;s?/";:£§º©®\s]+[.。。・・︒។։။۔።।][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+[.。。・・︒។։။۔።।][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+|[^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+([\u0020\u00A0][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+){1,3}[.。。・・︒។։။۔።।][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+([\u0020\u00A0][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+){1,3}[.。。・・︒។։။۔።।][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+([\u0020\u00A0][^0-9`~!@#$%^&*()+\-_=[{\]}\\|'<,.>?/";:£§º©®\s]+){1,3})$/.test(this.currentSearchTerm.trim())&&this.options.enableWhat3Words&&this.what3WordCountries.indexOf(this.currentCountryCode)>-1?(this.isWhat3Words=!0,this.currentSearchTerm=this.currentSearchTerm.trim()):(this.isWhat3Words=!1,this.shouldTriggerWhat3WordsEnrichment=!1),this.events.trigger("pre-search",this.currentSearchTerm);var o=this.isWhat3Words?this.generateLookupDataForApiCall(this.currentSearchTerm,!0):this.generateSearchDataForApiCall();this.lastSearchTerm=this.currentSearchTerm,this.searchSpinner.hide(),this.searchSpinner.show();var a=void 0,d=void 0,i=void 0;this.isWhat3Words?(a=this.baseUrl+this.lookupEndpoint,d=[],i=this.picklist.showWhat3Words):(a=this.baseUrl+(this.searchType===e.VALIDATE?this.validateEndpoint:this.searchEndpoint),d=this.searchType===e.VALIDATE?[{key:"Add-Metadata",value:!0}]:[],i=this.searchType===e.VALIDATE?this.result.handleValidateResponse:this.picklist.show),this.request.send(a,"POST",i,o,d)}else this.lastSearchTerm!==this.currentSearchTerm&&this.picklist.hide()},s.prototype.getKey=function(e){var s=e.key;switch(s){case"Down":case"ArrowDown":return"ArrowDown";case"Up":case"ArrowUp":return"ArrowUp";case"Spacebar":case" ":return" ";case"Escape":case"Esc":return"Escape";default:return s}},s.prototype.canSearch=function(){return this.options.enabled&&""!==this.currentSearchTerm&&this.currentSearchTerm.length>3&&this.lastSearchTerm!==this.currentSearchTerm&&this.currentCountryCode&&!0===this.hasSearchInputBeenReset},s.prototype.createPicklist=function(){var s=this;this.picklist=new r,this.picklist.maxSuggestions=25,this.picklist.tabCount=-1,this.picklist.show=function(t){var o;s.picklist.items=null==t?void 0:t.result.suggestions,s.picklist.handleCommonShowPicklistLogic(),(null===(o=s.picklist.items)||void 0===o?void 0:o.length)>0?(s.picklist.refine.isNeeded(t)&&s.picklist.refine.createInput(t.result.suggestions_prompt,t.result.suggestions_key),s.searchType===e.VALIDATE&&s.picklist.displaySuggestionsHeader(),s.picklist.items.forEach((function(e){var t=s.picklist.createListItem(e);s.picklist.list.appendChild(t),s.picklist.listen(t)})),s.searchType===e.VALIDATE&&s.picklist.displayUseAddressEnteredFooter(),s.picklist.scrollIntoViewIfNeeded()):s.picklist.handleEmptyPicklist(t),s.poweredByLogo.element=s.poweredByLogo.element||s.poweredByLogo.create(s.picklist),s.events.trigger("post-picklist-create",s.picklist.items)},this.picklist.showWhat3Words=function(e){var t;s.picklist.what3wordsItems=null==e?void 0:e.result.suggestions,s.picklist.handleCommonShowPicklistLogic(),(null===(t=s.picklist.what3wordsItems)||void 0===t?void 0:t.length)>0?(s.picklist.what3wordsItems.forEach((function(e){var t=s.picklist.createWhat3WordsListItem(e);s.picklist.list.appendChild(t),s.picklist.listen(t)})),s.picklist.scrollIntoViewIfNeeded()):s.picklist.handleEmptyPicklist(e),s.poweredByLogo.element=s.poweredByLogo.element||s.poweredByLogo.create(s.picklist),s.events.trigger("post-picklist-create",s.picklist.items)},this.picklist.showLookup=function(e){var t;s.isWhat3Words=!1,s.picklist.lookupItems=null==e?void 0:e.result.addresses,s.picklist.handleCommonShowPicklistLogic(),(null===(t=s.picklist.lookupItems)||void 0===t?void 0:t.length)>0?(s.picklist.lookupItems.forEach((function(e){var t=s.picklist.createLookupListItem(e);s.picklist.list.appendChild(t),s.picklist.listen(t)})),s.picklist.scrollIntoViewIfNeeded()):s.picklist.handleEmptyPicklist(e),s.poweredByLogo.element=s.poweredByLogo.element||s.poweredByLogo.create(s.picklist),s.events.trigger("post-picklist-create",s.picklist.items)},this.picklist.handleCommonShowPicklistLogic=function(){var e;s.picklist.currentItem=null,s.picklist.size=null===(e=s.picklist.items)||void 0===e?void 0:e.length,s.picklist.resetTabCount(),s.searchSpinner.hide(),s.picklist.list=s.picklist.list||s.picklist.createList(),s.picklist.list.innerHTML="",s.picklist.useAddressEntered.destroy(),s.events.trigger("pre-picklist-create",s.picklist.items)},this.picklist.hide=function(){if(s.picklist.currentItem=null,s.picklist.useAddressEntered.destroy(),s.poweredByLogo.destroy(s.picklist),s.inputs){var t=s.searchType===e.SINGLELINE?s.inputs.length-1:0;s.inputs[t].classList.remove("showing-suggestions")}s.picklist.list&&(s.picklist.container.remove(),s.picklist.list=void 0)},this.picklist.handleEmptyPicklist=function(e){var t;s.picklist.useAddressEntered.element=s.picklist.useAddressEntered.element||s.picklist.useAddressEntered.create(null===(t=e.result)||void 0===t?void 0:t.confidence),s.picklist.scrollIntoViewIfNeeded(),"function"==typeof s.picklist.handleEmptyPicklistCallback&&s.picklist.handleEmptyPicklistCallback()},this.picklist.displaySuggestionsHeader=function(){var e=document.querySelector(".picklist-suggestions-header")||document.createElement("div");e.classList.add("picklist-suggestions-header"),e.innerText="Suggestions:",s.picklist.list.parentNode.insertBefore(e,s.picklist.list)},this.picklist.displayUseAddressEnteredFooter=function(){var e=document.querySelector(".picklist-use-entered-container")||document.createElement("div");e.classList.add("picklist-use-entered-container"),s.picklist.list.parentNode.insertBefore(e,s.picklist.list.nextElementSibling);var t=document.querySelector(".picklist-use-entered-header")||document.createElement("div");t.classList.add("picklist-use-entered-header"),t.innerText="Or use address entered:",e.appendChild(t);var o=document.querySelector(".picklist-use-entered-option")||document.createElement("div");o.classList.add("picklist-use-entered-option"),o.innerText=s.currentSearchTerm.replace(/,+/g,", "),o.addEventListener("click",s.picklist.useAddressEntered.click),e.appendChild(o)},this.picklist.scrollIntoViewIfNeeded=function(){var e=s.picklist.container.getBoundingClientRect().top<0,t=s.picklist.container.getBoundingClientRect().bottom>window.innerHeight;(e||t)&&s.picklist.container.scrollIntoView()},this.picklist.useAddressEntered={element:null,create:function(e){var t={text:"".concat(e," ").concat(s.options.useAddressEnteredText)},o=s.picklist.createListItem(t);return o.classList.add("use-address-entered"),o.setAttribute("title","Enter address manually"),s.picklist.list=s.picklist.list||s.picklist.createList(),s.picklist.list.parentNode.insertBefore(o,s.picklist.container.firstChild),o.addEventListener("click",s.picklist.useAddressEntered.click),o},destroy:function(){s.picklist.useAddressEntered.element&&(s.picklist.list.parentNode.removeChild(s.picklist.useAddressEntered.element),s.picklist.useAddressEntered.element=void 0)},click:function(){var e={result:{confidence:"No matches",address:{address_line_1:"",address_line_2:"",address_line_3:"",locality:"",region:"",postal_code:"",country:""}}};if(s.currentSearchTerm){var t=s.currentSearchTerm.split(",");t[0]&&(e.result.address.address_line_1=t[0]),t[1]&&(e.result.address.address_line_2=t[1]),t[2]&&(e.result.address.address_line_3=t[2]);for(var o=3;oa.length-1&&(s.picklist.tabCount=0,t=!0);var d=a[s.picklist.tabCount],i=s.picklist.list.querySelector(".selected");i&&i.classList.remove("selected"),d.classList.add("selected"),s.picklist.currentItem=d;var r=s.picklist.list.offsetTop,n=s.picklist.list.offsetTop+s.picklist.list.offsetHeight,c=s.picklist.list.scrollTop,l=d.offsetTop,C=d.offsetTop+d.offsetHeight,u=d.offsetHeight;t?s.picklist.list.scrollTop=0:o?s.picklist.list.scrollTop=999:C+u>n?s.picklist.list.scrollTop=c+u:l-u-r";t=t.substring(0,s[o][0])+a+t.substring(s[o][1])}return t},this.picklist.listen=function(e){e.addEventListener("click",s.picklist.pick.bind(null,e))},this.picklist.checkEnter=function(e){if("Enter"===e.key||"Tab"===e.key){var t=void 0;1===s.picklist.size?t=s.picklist.list.querySelectorAll("div")[0]:s.picklist.currentItem&&(t=s.picklist.currentItem),t&&s.picklist.pick(t)}},this.picklist.pick=function(e){s.events.trigger("post-picklist-selection",e);var t=e.getElementsByTagName("div");s.isWhat3Words?s.lookup(t[0].innerHTML):e.getAttribute("format")?s.format(e.getAttribute("format")):s.refine(e.getAttribute("refine"))}},s.prototype.format=function(e){this.events.trigger("pre-formatting-search",e),this.searchSpinner.hide(),this.request.send(e,"GET",this.result.show,void 0,[{key:"Add-Metadata",value:!0}])},s.prototype.refine=function(e){this.events.trigger("pre-refinement",e),this.searchSpinner.hide(),this.request.send("".concat(this.baseUrl).concat(this.stepInEndpoint,"/").concat(e),"GET",this.picklist.show)},s.prototype.lookup=function(e){this.events.trigger("pre-lookup",e),this.searchSpinner.hide();var s=this.generateLookupDataForApiCall(e,!1),t=this.baseUrl+this.lookupEndpoint,o=this.picklist.showLookup;this.shouldTriggerWhat3WordsEnrichment=!0,this.request.send(t,"POST",o,s,[{key:"Add-Addresses",value:!0}])},s.prototype.checkTab=function(e){var s=this.getKey(e);"Tab"!==s?"Enter"===s&&e.preventDefault():this.picklist.keyup(e)},s.prototype.toggleSearchInputs=function(e){var s,t,o,a="show"===e?"remove":"add";null===(s=this.options.elements.inputs)||void 0===s||s.forEach((function(e){return e.parentNode.querySelectorAll(".toggle").forEach((function(e){return e.classList[a]("hidden")}))})),null===(t=this.options.elements.countryList)||void 0===t||t.parentNode.querySelectorAll(".toggle").forEach((function(e){return e.classList[a]("hidden")})),null===(o=this.options.elements.lookupButton)||void 0===o||o.parentNode.querySelectorAll(".toggle").forEach((function(e){return e.classList[a]("hidden")}))},s.prototype.globalReset=function(e){e&&e.preventDefault(),this.options.enabled=!0,this.result.hide(),this.hasSearchInputBeenReset=!0,this.inputs.forEach((function(e){return e.value=""})),this.picklist.hide(),this.toggleSearchInputs("show"),this.inputs[0].focus(),this.events.trigger("post-reset")},s}();window.AddressValidation=n}(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Z0JBQy9GLENBQUNrQixRQUFTLGFBQWNDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQ25HLENBQUNrQixRQUFTLGFBQWNDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQ25HLENBQUNrQixRQUFTLE9BQVFDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQzdGLENBQUNrQixRQUFTLE9BQVFDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQzdGLENBQUNrQixRQUFTLFNBQVVDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQy9GLENBQUNrQixRQUFTLFNBQVVDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQy9GLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQ2hHLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQ2hHLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQ2hHLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQ2hHLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQ2hHLENBQUNrQixRQUFTLFVBQVdDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksZ0JBQ2hHLENBQUNrQixRQUFTLFFBQVNDLFNBQVUsTUFBT0MsU0FBVSxLQUFNQyxZQUFhLGdCQUFpQnJCLFdBQVksd0JBQzlGLENBQUNrQixRQUFTLFFBQVNDLFNBQVUsTUFBT0MsU0FBVSxL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VSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDaEcsQ0FBQ2tCLFFBQVMsYUFBY0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDbkcsQ0FBQ2tCLFFBQVMsYUFBY0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDbkcsQ0FBQ2tCLFFBQVMsVUFBV0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDaEcsQ0FBQ2tCLFFBQVMsVUFBV0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDaEcsQ0FBQ2tCLFFBQVMsVUFBV0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDaEcsQ0FBQ2tCLFFBQVMsVUFBV0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDaEcsQ0FBQ2tCLFFBQVMsUUFBU0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDOUYsQ0FBQ2tCLFFBQVMsUUFBU0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDOUYsQ0FBQ2tCLFFBQVMsUUFBU0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDOUYsQ0FBQ2tCLFFBQVMsUUFBU0MsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDOUYsQ0FBQ2tCLFFBQVMsY0FBZUMsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSx3QkFDcEcsQ0FBQ2tCLFFBQVMsY0FBZUMsU0FBVSxNQUFPQyxTQUFVLEtBQU1DLFlBQWEsZ0JBQWlCckIsV0FBWSxnQkFDcEcsQ0FBQ2tCLFFBQVMsZ0JBQWlCQyxTQUFVLE1BQU9DLFNBQVUsS0FBTUMsWUFBYSxnQkFBaUJyQixXQUFZLGdC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QixHQUFTLE9BQUFBLEVBQU1tRCxXQUFXc04saUJBQWlCLFdBQVc1UixTQUFRLFNBQUEyRCxHQUFXLE9BQUFBLEVBQVFRLFVBQVV5TyxHQUFVLGdCQUMxRyxRQUFqQyxFQUFBcFUsS0FBS3NCLFFBQVFzRixTQUFTZ0gsbUJBQVcsU0FBRTlILFdBQVdzTixpQkFBaUIsV0FBVzVSLFNBQVEsU0FBQTJELEdBQVcsT0FBQUEsRUFBUVEsVUFBVXlPLEdBQVUsYUFDdkYsUUFBbEMsRUFBQXBVLEtBQUtzQixRQUFRc0YsU0FBU3VHLG9CQUFZLFNBQUVySCxXQUFXc04saUJBQWlCLFdBQVc1UixTQUFRLFNBQUEyRCxHQUFXLE9BQUFBLEVBQVFRLFVBQVV5TyxHQUFVLGNBR3BILFlBQUExSyxZQUFSLFNBQW9CNUosR0FDZEEsR0FDRkEsRUFBTThPLGlCQUdSNU8sS0FBS3NCLFFBQVEwSyxTQUFVLEVBRXZCaE0sS0FBS21HLE9BQU9oRSxPQUVabkMsS0FBS21ILHlCQUEwQixFQUcvQm5ILEtBQUswRyxPQUFPbEYsU0FBUSxTQUFBbUIsR0FBUyxPQUFBQSxFQUFNaEIsTUFBUSxNQUUzQzNCLEtBQUtxRixTQUFTbEQsT0FFZG5DLEtBQUtrSCxtQkFBbUIsUUFFeEJsSCxLQUFLMEcsT0FBTyxHQUFHaUgsUUFHZjNOLEtBQUtvQyxPQUFPbEMsUUFBUSxlQUV4QixFQTE0Q0EsR0NDQTJSLE9BQU93QyxrQkFBb0IsRSIsInNvdXJjZXMiOlsid2VicGFjazovL2V4cGVyaWFuLWFkZHJlc3MtdmFsaWRhdGlvbi8uL3NyYy90cy9ldmVudC1mYWN0b3J5LnRzIiwid2VicGFjazovL2V4cGVyaWFuLWFkZHJlc3MtdmFsaWRhdGlvbi8uL3NyYy90cy9zZWFyY2gtb3B0aW9ucy50cyIsIndlYnBhY2s6Ly9leHBlcmlhbi1hZGRyZXNzLXZhbGlkYXRpb24vLi9zcmMvdHMvcmVxdWVzdC50cyIsIndlYnBhY2s6Ly9leHBlcmlhbi1hZGRyZXNzLXZhbGlkYXRpb24vLi9zcmMvdHMvZGF0YXNldHMtY29kZXMudHMiLCJ3ZWJwYWNrOi8vZXhwZXJpYW4tYWRkcmVzcy12YWxpZGF0aW9uLy4vc3JjL3RzL3RyYW5zbGF0aW9ucy50cyIsIndlYnBhY2s6Ly9leHBlcmlhbi1hZGRyZXNzLXZhbGlkYXRpb24vLi9zcmMvdHMvY2xhc3MtdHlwZXMudHMiLCJ3ZWJwYWNrOi8vZXhwZXJpYW4tYWRkcmVzcy12YWxpZGF0aW9uLy4vc3JjL3RzL2FkZHJlc3Mtc2VhcmNoLnRzIiwid2VicGFjazovL2V4cGVyaWFuLWFkZHJlc3MtdmFsaWRhdGlvbi8uL3NyYy90cy9pbmRleC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ldGhvZCBldmVudCBsaXN0ZW5lciAocHViL3N1YiB0eXBlIHRoaW5nKVxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBFdmVudEZhY3Rvcnkge1xuICAvLyBDcmVhdGUgYW4gb2JqZWN0IHRvIGhvbGQgdGhlIGNvbGxlY3Rpb24gb2YgZXZlbnRzXG4gIGNvbGxlY3Rpb24gPSB7fTtcblxuICAvLyBTdWJzY3JpYmUgYSBuZXcgZXZlbnRcbiAgb24oZXZlbnQsIGFjdGlvbikge1xuICAgIC8vIENyZWF0ZSB0aGUgcHJvcGVydHkgYXJyYXkgb24gdGhlIGNvbGxlY3Rpb24gb2JqZWN0XG4gICAgdGhpcy5jb2xsZWN0aW9uW2V2ZW50XSA9IHRoaXMuY29sbGVjdGlvbltldmVudF0gfHwgW107XG4gICAgLy8gUHVzaCBhIG5ldyBhY3Rpb24gZm9yIHRoaXMgZXZlbnQgb250byB0aGUgYXJyYXlcbiAgICB0aGlzLmNvbGxlY3Rpb25bZXZlbnRdLnB1c2goYWN0aW9uKTtcbiAgfVxuXG4gIC8vIFB1Ymxpc2ggKHRyaWdnZXIpIGFuIGV2ZW50XG4gIHRyaWdnZXIoZXZlbnQsIGRhdGEpIHtcbiAgICAvLyBJZiB0aGlzIGV2ZW50IGlzIGluIG91ciBjb2xsZWN0aW9uIChpLmUuIGFueW9uZSdzIHN1YnNjcmliZWQpXG4gICAgaWYgKHRoaXMuY29sbGVjdGlvbltldmVudF0pIHtcbiAgICAgIC8vIExvb3Agb3ZlciBhbGwgdGhlIGFjdGlvbnMgZm9yIHRoaXMgZXZlbnRcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2xsZWN0aW9uW2V2ZW50XS5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBDcmVhdGUgYXJyYXkgd2l0aCBkZWZhdWx0IGRhdGEgYXMgMXN0IGl0ZW1cbiAgICAgICAgY29uc3QgYXJncyA9IFtkYXRhXTtcblxuICAgICAgICAvLyBMb29wIG92ZXIgYWRkaXRpb25hbCBhcmdzIGFuZCBhZGQgdG8gYXJyYXlcbiAgICAgICAgZm9yIChsZXQgYSA9IDI7IGEgPCBhcmd1bWVudHMubGVuZ3RoOyBhKyspIHtcbiAgICAgICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2FdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIENhbGwgZWFjaCBhY3Rpb24gZm9yIHRoaXMgZXZlbnQgdHlwZSwgcGFzc2luZyB0aGUgYXJnc1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHRoaXMuY29sbGVjdGlvbltldmVudF1baV0uYXBwbHkodGhpcy5jb2xsZWN0aW9uLCBhcmdzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIC8vIFdoYXQgdG8gZG8/IFVuY29tbWVudCB0aGUgYmVsb3cgdG8gc2hvdyBlcnJvcnMgaW4geW91ciBldmVudCBhY3Rpb25zXG4gICAgICAgICAgLy9jb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJleHBvcnQgaW50ZXJmYWNlIEFkZHJlc3NTZWFyY2hPcHRpb25zIHtcclxuICBlbmFibGVkOiBib29sZWFuO1xyXG4gIHRva2VuOiBzdHJpbmc7XHJcbiAgZW5hYmxlV2hhdDNXb3JkczogYm9vbGVhbjtcclxuICBzZWFyY2hUeXBlOiBBZGRyZXNzVmFsaWRhdGlvbk1vZGU7XHJcbiAgbWF4U3VnZ2VzdGlvbnM6IG51bWJlcjtcclxuICBsYW5ndWFnZTogc3RyaW5nO1xyXG4gIGxvY2F0aW9uOiBzdHJpbmc7XHJcbiAgdXNlU3Bpbm5lcjogYm9vbGVhbjtcclxuICBjb3VudHJ5Q29kZT86IHN0cmluZztcclxuICBjb3VudHJ5Q29kZU1hcHBpbmc/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xyXG4gIGFwcGx5Rm9jdXM6IGJvb2xlYW47XHJcbiAgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmc7XHJcbiAgdXNlQWRkcmVzc0VudGVyZWRUZXh0OiBzdHJpbmc7XHJcbiAgc2VhcmNoQWdhaW46IHsgdmlzaWJsZT86IGJvb2xlYW4sIHRleHQ/OiBzdHJpbmcsIGxpbms/OiBIVE1MQnV0dG9uRWxlbWVudCB9O1xyXG4gIGZvcm1hdHRlZEFkZHJlc3NDb250YWluZXI6IHsgc2hvd0hlYWRpbmc6IGJvb2xlYW4sIGhlYWRpbmdUeXBlOiBzdHJpbmcsIHZhbGlkYXRlZEhlYWRpbmdUZXh0OiBzdHJpbmcsIG1hbnVhbEhlYWRpbmdUZXh0OiBzdHJpbmcgfTtcclxuICBlbGVtZW50czogeyBpbnB1dD86IEhUTUxJbnB1dEVsZW1lbnQsIGlucHV0cz86IEhUTUxJbnB1dEVsZW1lbnRbXSwgY291bnRyeUxpc3Q/OiBIVE1MU2VsZWN0RWxlbWVudCwgYWRkcmVzc19saW5lXzE/OiBIVE1MSW5wdXRFbGVtZW50LCBhZGRyZXNzX2xpbmVfMj86IEhUTUxJbnB1dEVsZW1lbnQsIGFkZHJlc3NfbGluZV8zPzogSFRNTElucHV0RWxlbWVudCwgbG9jYWxpdHk/OiBIVE1MSW5wdXRFbGVtZW50LCByZWdpb24/OiBIVE1MSW5wdXRFbGVtZW50LCBwb3N0YWxfY29kZT86IEhUTUxJbnB1dEVsZW1lbnQsIGNvdW50cnk/OiBIVE1MSW5wdXRFbGVtZW50LCBmb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyPzogSFRNTEVsZW1lbnQsIGxvb2t1cEJ1dHRvbj86IEhUTUxCdXR0b25FbGVtZW50IH07XHJcbn1cclxuXHJcbmV4cG9ydCBlbnVtIEFkZHJlc3NWYWxpZGF0aW9uTW9kZSB7XHJcbiAgQVVUT0NPTVBMRVRFID0gJ2F1dG9jb21wbGV0ZScsXHJcbiAgU0lOR0xFTElORSA9ICdzaW5nbGVsaW5lJyxcclxuICBWQUxJREFURSA9ICd2YWxpZGF0ZSdcclxufVxyXG5cclxuLy8gRGVmYXVsdCBzZXR0aW5nc1xyXG5leHBvcnQgY29uc3QgZGVmYXVsdHMgPSB7XHJcbiAgZW5hYmxlV2hhdDNXb3JkczogdHJ1ZSxcclxuICBzZWFyY2hUeXBlOiBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuQVVUT0NPTVBMRVRFLFxyXG4gIGlucHV0OiB7IHBsYWNlaG9sZGVyVGV4dDogJ1N0YXJ0IHR5cGluZyBhbiBhZGRyZXNzLi4uJywgYXBwbHlGb2N1czogZmFsc2UgfSxcclxuICBmb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyOiB7IHNob3dIZWFkaW5nOiBmYWxzZSwgaGVhZGluZ1R5cGU6ICdoMycsIHZhbGlkYXRlZEhlYWRpbmdUZXh0OiAnVmFsaWRhdGVkIGFkZHJlc3MnLCBtYW51YWxIZWFkaW5nVGV4dDogJ01hbnVhbCBhZGRyZXNzIGVudGVyZWQnIH0sXHJcbiAgc2VhcmNoQWdhaW46IHsgdmlzaWJsZTogdHJ1ZSwgdGV4dDogJ1NlYXJjaCBhZ2FpbicgfSxcclxuICB1c2VBZGRyZXNzRW50ZXJlZFRleHQ6ICc8ZW0+IC0gVXNlIGFkZHJlc3MgZW50ZXJlZCBvciB0cnkgYWdhaW4uLi48L2VtPicsXHJcbiAgdXNlU3Bpbm5lcjogZmFsc2UsXHJcbiAgbGFuZ3VhZ2U6ICdlbicsXHJcbiAgYWRkcmVzc0xpbmVMYWJlbHM6IFtcclxuICAgICdhZGRyZXNzX2xpbmVfMScsXHJcbiAgICAnYWRkcmVzc19saW5lXzInLFxyXG4gICAgJ2FkZHJlc3NfbGluZV8zJyxcclxuICAgICdsb2NhbGl0eScsXHJcbiAgICAncmVnaW9uJyxcclxuICAgICdwb3N0YWxfY29kZScsXHJcbiAgICAnY291bnRyeSdcclxuICBdXHJcbn07IiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVxdWVzdCB7XG4gIGluc3RhbmNlO1xuICBjb25zdHJ1Y3RvcihpbnN0YW5jZSkge1xuICAgIHRoaXMuaW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgfVxuXG4gIHB1YmxpYyBjdXJyZW50UmVxdWVzdDtcblxuXG4gIHB1YmxpYyBzZW5kKHVybDogc3RyaW5nLCBtZXRob2Q6ICdHRVQnIHwgJ1BPU1QnLCBjYWxsYmFjazogKGRhdGE6IG9iamVjdCkgPT4gdm9pZCwgZGF0YT86IHN0cmluZywgaGVhZGVyczoge2tleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nIHwgYm9vbGVhbn1bXSA9IFtdKTogdm9pZCB7XG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdCA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgIHRoaXMuY3VycmVudFJlcXVlc3Qub3BlbihtZXRob2QsIHVybCwgdHJ1ZSk7XG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC50aW1lb3V0ID0gNTAwMDsgLy8gNSBzZWNvbmRzXG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCdhdXRoLXRva2VuJywgdGhpcy5pbnN0YW5jZS5vcHRpb25zLnRva2VuKTtcbiAgICB0aGlzLmN1cnJlbnRSZXF1ZXN0LnNldFJlcXVlc3RIZWFkZXIoJ0NvbnRlbnQtVHlwZScsICdhcHBsaWNhdGlvbi9qc29uJyk7XG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpO1xuXG4gICAgLy8gQWRkIGFkZGl0aW9uYWwgaGVhZGVycyBpZiBzdXBwbGllZFxuICAgIGhlYWRlcnMuZm9yRWFjaChoZWFkZXIgPT4gdGhpcy5jdXJyZW50UmVxdWVzdC5zZXRSZXF1ZXN0SGVhZGVyKGhlYWRlci5rZXksIGhlYWRlci52YWx1ZSkpO1xuXG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC5vbmxvYWQgPSAoeGhyKSA9PiB7XG4gICAgICBpZiAodGhpcy5jdXJyZW50UmVxdWVzdC5zdGF0dXMgPj0gMjAwICYmIHRoaXMuY3VycmVudFJlcXVlc3Quc3RhdHVzIDwgNDAwKSB7XG4gICAgICAgIC8vIFN1Y2Nlc3MhXG4gICAgICAgIGNvbnN0IGRhdGEgPSBKU09OLnBhcnNlKHRoaXMuY3VycmVudFJlcXVlc3QucmVzcG9uc2VUZXh0KTtcbiAgICAgICAgY2FsbGJhY2soZGF0YSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBXZSByZWFjaGVkIG91ciB0YXJnZXQgc2VydmVyLCBidXQgaXQgcmV0dXJuZWQgYW4gZXJyb3JcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5zZWFyY2hTcGlubmVyLmhpZGUoKTtcblxuICAgICAgICAvLyBGaXJlIGFuIGV2ZW50IHRvIG5vdGlmeSB1c2VycyBvZiBhIGdlbmVyYWwgZXJyb3JcbiAgICAgICAgdGhpcy5pbnN0YW5jZS5ldmVudHMudHJpZ2dlcigncmVxdWVzdC1lcnJvcicsIHhocik7XG4gICAgICAgIC8vIEZpcmUgYW4gZXZlbnQgZm9yIHRoZSBzcGVjaWZpYyBzdGF0dXMgY29kZVxuICAgICAgICB0aGlzLmluc3RhbmNlLmV2ZW50cy50cmlnZ2VyKGByZXF1ZXN0LWVycm9yLSR7dGhpcy5jdXJyZW50UmVxdWVzdC5zdGF0dXN9YCwgeGhyKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC5vbmVycm9yID0gKHhocikgPT4ge1xuICAgICAgLy8gVGhlcmUgd2FzIGEgY29ubmVjdGlvbiBlcnJvciBvZiBzb21lIHNvcnRcbiAgICAgIC8vIEhpZGUgdGhlIGlubGluZSBzZWFyY2ggc3Bpbm5lclxuICAgICAgdGhpcy5pbnN0YW5jZS5zZWFyY2hTcGlubmVyLmhpZGUoKTtcblxuICAgICAgLy8gRmlyZSBhbiBldmVudCB0byBub3RpZnkgdXNlcnMgb2YgYW4gZXJyb3JcbiAgICAgIHRoaXMuaW5zdGFuY2UuZXZlbnRzLnRyaWdnZXIoJ3JlcXVlc3QtZXJyb3InLCB4aHIpO1xuICAgIH07XG5cbiAgICB0aGlzLmN1cnJlbnRSZXF1ZXN0Lm9udGltZW91dCA9ICh4aHIpID0+IHtcbiAgICAgIC8vIFRoZXJlIHdhcyBhIGNvbm5lY3Rpb24gdGltZW91dFxuICAgICAgLy8gSGlkZSB0aGUgaW5saW5lIHNlYXJjaCBzcGlubmVyXG4gICAgICB0aGlzLmluc3RhbmNlLnNlYXJjaFNwaW5uZXIuaGlkZSgpO1xuXG4gICAgICAvLyBGaXJlIGFuIGV2ZW50IHRvIG5vdGlmeSB1c2VycyBvZiB0aGUgdGltZW91dFxuICAgICAgdGhpcy5pbnN0YW5jZS5ldmVudHMudHJpZ2dlcigncmVxdWVzdC10aW1lb3V0JywgeGhyKTtcbiAgICB9O1xuXG4gICAgdGhpcy5jdXJyZW50UmVxdWVzdC5zZW5kKGRhdGEpO1xuICB9XG59IiwiZXhwb3J0IGNvbnN0IGRhdGFzZXRDb2RlcyA9IFtcbiAge2NvdW50cnk6ICdBZmdoYW5pc3RhbicsIGlzbzNDb2RlOiAnQUZHJywgaXNvMkNvZGU6ICdBRicsIGRhdGFzZXRDb2RlOiAnYWYtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0FmZ2hhbmlzdGFuJywgaXNvM0NvZGU6ICdBRkcnLCBpc28yQ29kZTogJ0FGJywgZGF0YXNldENvZGU6ICdhZi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FsYmFuaWEnLCBpc28zQ29kZTogJ0FMQicsIGlzbzJDb2RlOiAnQUwnLCBkYXRhc2V0Q29kZTogJ2FsLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdBbGJhbmlhJywgaXNvM0NvZGU6ICdBTEInLCBpc28yQ29kZTogJ0FMJywgZGF0YXNldENvZGU6ICdhbC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FsZ2VyaWEnLCBpc28zQ29kZTogJ0RaQScsIGlzbzJDb2RlOiAnRFonLCBkYXRhc2V0Q29kZTogJ2R6LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdBbGdlcmlhJywgaXNvM0NvZGU6ICdEWkEnLCBpc28yQ29kZTogJ0RaJywgZGF0YXNldENvZGU6ICdkei1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FtZXJpY2FuIFNhbW9hJywgaXNvM0NvZGU6ICdBU00nLCBpc28yQ29kZTogJ0FTJywgZGF0YXNldENvZGU6ICdhcy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FuZG9ycmEnLCBpc28zQ29kZTogJ0FORCcsIGlzbzJDb2RlOiAnQUQnLCBkYXRhc2V0Q29kZTogJ2FkLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdBbmRvcnJhJywgaXNvM0NvZGU6ICdBTkQnLCBpc28yQ29kZTogJ0FEJywgZGF0YXNldENvZGU6ICdhZC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FuZ29sYScsIGlzbzNDb2RlOiAnQUdPJywgaXNvMkNvZGU6ICdBTycsIGRhdGFzZXRDb2RlOiAnYW8tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0FuZ29sYScsIGlzbzNDb2RlOiAnQUdPJywgaXNvMkNvZGU6ICdBTycsIGRhdGFzZXRDb2RlOiAnYW8tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdBbmd1aWxsYScsIGlzbzNDb2RlOiAnQUlBJywgaXNvMkNvZGU6ICdBSScsIGRhdGFzZXRDb2RlOiAnYWktYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdBbnRhcmN0aWNhJywgaXNvM0NvZGU6ICdBVEEnLCBpc28yQ29kZTogJ0FRJywgZGF0YXNldENvZGU6ICdhcS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQW50aWd1YSBhbmQgQmFyYnVkYScsIGlzbzNDb2RlOiAnQVRHJywgaXNvMkNvZGU6ICdBRycsIGRhdGFzZXRDb2RlOiAnYWctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0FudGlndWEgYW5kIEJhcmJ1ZGEnLCBpc28zQ29kZTogJ0FURycsIGlzbzJDb2RlOiAnQUcnLCBkYXRhc2V0Q29kZTogJ2FnLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQXJnZW50aW5hJywgaXNvM0NvZGU6ICdBUkcnLCBpc28yQ29kZTogJ0FSJywgZGF0YXNldENvZGU6ICdhci1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQXJnZW50aW5hJywgaXNvM0NvZGU6ICdBUkcnLCBpc28yQ29kZTogJ0FSJywgZGF0YXNldENvZGU6ICdhci1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FybWVuaWEnLCBpc28zQ29kZTogJ0FSTScsIGlzbzJDb2RlOiAnQU0nLCBkYXRhc2V0Q29kZTogJ2FtLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdBcm1lbmlhJywgaXNvM0NvZGU6ICdBUk0nLCBpc28yQ29kZTogJ0FNJywgZGF0YXNldENvZGU6ICdhbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0FydWJhJywgaXNvM0NvZGU6ICdBQlcnLCBpc28yQ29kZTogJ0FXJywgZGF0YXNldENvZGU6ICdhdy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQXJ1YmEnLCBpc28zQ29kZTogJ0FCVycsIGlzbzJDb2RlOiAnQVcnLCBkYXRhc2V0Q29kZTogJ2F3LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQXVzdHJhbGlhIERhdGFGdXNpb24nLCBpc28zQ29kZTogJ0FVUycsIGlzbzJDb2RlOiAnQVUnLCBkYXRhc2V0Q29kZTogJ2F1LWFkZHJlc3MtZGF0YWZ1c2lvbicsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duJ30sXG4gIHtjb3VudHJ5OiAnQXVzdHJhbGlhIEdlb2NvZGVkIE5hdGlvbmFsIEFkZHJlc3MnLCBpc28zQ29kZTogJ0FVUycsIGlzbzJDb2RlOiAnQVUnLCBkYXRhc2V0Q29kZTogJ2F1LWFkZHJlc3MtZ25hZicsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0F1c3RyYWxpYSBQb3N0YWwgQWRkcmVzcycsIGlzbzNDb2RlOiAnQVVTJywgaXNvMkNvZGU6ICdBVScsIGRhdGFzZXRDb2RlOiAnYXUtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0F1c3RyaWEnLCBpc28zQ29kZTogJ0FVVCcsIGlzbzJDb2RlOiAnQVQnLCBkYXRhc2V0Q29kZTogJ2F0LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQXVzdHJpYScsIGlzbzNDb2RlOiAnQVVUJywgaXNvMkNvZGU6ICdBVCcsIGRhdGFzZXRDb2RlOiAnYXotYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0F6ZXJiYWlqYW4nLCBpc28zQ29kZTogJ0FaRScsIGlzbzJDb2RlOiAnQVonLCBkYXRhc2V0Q29kZTogJ2F6LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdBemVyYmFpamFuJywgaXNvM0NvZGU6ICdBWkUnLCBpc28yQ29kZTogJ0FaJywgZGF0YXNldENvZGU6ICdhei1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0JhaGFtYXMnLCBpc28zQ29kZTogJ0JIUycsIGlzbzJDb2RlOiAnQlMnLCBkYXRhc2V0Q29kZTogJ2JzLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCYWhhbWFzJywgaXNvM0NvZGU6ICdCSFMnLCBpc28yQ29kZTogJ0JTJywgZGF0YXNldENvZGU6ICdicy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0JhaHJhaW4nLCBpc28zQ29kZTogJ0JIUicsIGlzbzJDb2RlOiAnQkgnLCBkYXRhc2V0Q29kZTogJ2JoLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCYWhyYWluJywgaXNvM0NvZGU6ICdCSFInLCBpc28yQ29kZTogJ0JIJywgZGF0YXNldENvZGU6ICdiaC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0JhbmdsYWRlc2gnLCBpc28zQ29kZTogJ0JHRCcsIGlzbzJDb2RlOiAnQkQnLCBkYXRhc2V0Q29kZTogJ2JkLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCYW5nbGFkZXNoJywgaXNvM0NvZGU6ICdCR0QnLCBpc28yQ29kZTogJ0JEJywgZGF0YXNldENvZGU6ICdiZC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0JhcmJhZG9zJywgaXNvM0NvZGU6ICdCUkInLCBpc28yQ29kZTogJ0JCJywgZGF0YXNldENvZGU6ICdiYi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQmFyYmFkb3MnLCBpc28zQ29kZTogJ0JSQicsIGlzbzJDb2RlOiAnQkInLCBkYXRhc2V0Q29kZTogJ2JiLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQmVsYXJ1cycsIGlzbzNDb2RlOiAnQkxSJywgaXNvMkNvZGU6ICdCWScsIGRhdGFzZXRDb2RlOiAnYnktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0JlbGFydXMnLCBpc28zQ29kZTogJ0JMUicsIGlzbzJDb2RlOiAnQlknLCBkYXRhc2V0Q29kZTogJ2J5LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQmVsZ2l1bScsIGlzbzNDb2RlOiAnQkVMJywgaXNvMkNvZGU6ICdCRScsIGRhdGFzZXRDb2RlOiAnYmUtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93bid9LFxuICB7Y291bnRyeTogJ0JlbGdpdW0nLCBpc28zQ29kZTogJ0JFTCcsIGlzbzJDb2RlOiAnQkUnLCBkYXRhc2V0Q29kZTogJ2JlLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQmVsZ2l1bScsIGlzbzNDb2RlOiAnQkVMJywgaXNvMkNvZGU6ICdCRScsIGRhdGFzZXRDb2RlOiAnYmUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCZWxpemUnLCBpc28zQ29kZTogJ0JMWicsIGlzbzJDb2RlOiAnQlonLCBkYXRhc2V0Q29kZTogJ2J6LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCZWxpemUnLCBpc28zQ29kZTogJ0JMWicsIGlzbzJDb2RlOiAnQlonLCBkYXRhc2V0Q29kZTogJ2J6LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQmVuaW4nLCBpc28zQ29kZTogJ0JFTicsIGlzbzJDb2RlOiAnQkonLCBkYXRhc2V0Q29kZTogJ2JqLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCZW5pbicsIGlzbzNDb2RlOiAnQkVOJywgaXNvMkNvZGU6ICdCSicsIGRhdGFzZXRDb2RlOiAnYmotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCZXJtdWRhJywgaXNvM0NvZGU6ICdCTVUnLCBpc28yQ29kZTogJ0JNJywgZGF0YXNldENvZGU6ICdibS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQmVybXVkYScsIGlzbzNDb2RlOiAnQk1VJywgaXNvMkNvZGU6ICdCTScsIGRhdGFzZXRDb2RlOiAnYm0tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCaHV0YW4nLCBpc28zQ29kZTogJ0JUTicsIGlzbzJDb2RlOiAnQlQnLCBkYXRhc2V0Q29kZTogJ2J0LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCaHV0YW4nLCBpc28zQ29kZTogJ0JUTicsIGlzbzJDb2RlOiAnQlQnLCBkYXRhc2V0Q29kZTogJ2J0LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQm9saXZpYScsIGlzbzNDb2RlOiAnQk9MJywgaXNvMkNvZGU6ICdCTycsIGRhdGFzZXRDb2RlOiAnYm8tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0JvbGl2aWEnLCBpc28zQ29kZTogJ0JPTCcsIGlzbzJDb2RlOiAnQk8nLCBkYXRhc2V0Q29kZTogJ2JvLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQm9uYWlyZSwgU2ludCBFdXN0YXRpdXMgYW5kIFNhYmEnLCBpc28zQ29kZTogJ0JFUycsIGlzbzJDb2RlOiAnQlEnLCBkYXRhc2V0Q29kZTogJ2JxLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdCb25haXJlLCBTaW50IEV1c3RhdGl1cyBhbmQgU2FiYScsIGlzbzNDb2RlOiAnQkVTJywgaXNvMkNvZGU6ICdCUScsIGRhdGFzZXRDb2RlOiAnYnEtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCb3NuaWEgYW5kIEhlcnplZ292aW5hJywgaXNvM0NvZGU6ICdCSUgnLCBpc28yQ29kZTogJ0JBJywgZGF0YXNldENvZGU6ICdiYS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQm9zbmlhIGFuZCBIZXJ6ZWdvdmluYScsIGlzbzNDb2RlOiAnQklIJywgaXNvMkNvZGU6ICdCQScsIGRhdGFzZXRDb2RlOiAnYmEtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCb3Rzd2FuYScsIGlzbzNDb2RlOiAnQldBJywgaXNvMkNvZGU6ICdCVycsIGRhdGFzZXRDb2RlOiAnYnctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0JvdHN3YW5hJywgaXNvM0NvZGU6ICdCV0EnLCBpc28yQ29kZTogJ0JXJywgZGF0YXNldENvZGU6ICdidy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0JyYXppbCcsIGlzbzNDb2RlOiAnQlJBJywgaXNvMkNvZGU6ICdCUicsIGRhdGFzZXRDb2RlOiAnYnItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0JyYXppbCcsIGlzbzNDb2RlOiAnQlJBJywgaXNvMkNvZGU6ICdCUicsIGRhdGFzZXRDb2RlOiAnYnItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdCcnVuZWkgRGFydXNzYWxhbScsIGlzbzNDb2RlOiAnQlJOJywgaXNvMkNvZGU6ICdCTicsIGRhdGFzZXRDb2RlOiAnYm4tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0JydW5laSBEYXJ1c3NhbGFtJywgaXNvM0NvZGU6ICdCUk4nLCBpc28yQ29kZTogJ0JOJywgZGF0YXNldENvZGU6ICdibi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0J1bGdhcmlhJywgaXNvM0NvZGU6ICdCR1InLCBpc28yQ29kZTogJ0JHJywgZGF0YXNldENvZGU6ICdiZy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQnVsZ2FyaWEnLCBpc28zQ29kZTogJ0JHUicsIGlzbzJDb2RlOiAnQkcnLCBkYXRhc2V0Q29kZTogJ2JnLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQnVya2luYSBGYXNvJywgaXNvM0NvZGU6ICdCRkEnLCBpc28yQ29kZTogJ0JGJywgZGF0YXNldENvZGU6ICdiZi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQnVya2luYSBGYXNvJywgaXNvM0NvZGU6ICdCRkEnLCBpc28yQ29kZTogJ0JGJywgZGF0YXNldENvZGU6ICdiZi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0J1cnVuZGknLCBpc28zQ29kZTogJ0JESScsIGlzbzJDb2RlOiAnQkknLCBkYXRhc2V0Q29kZTogJ2JpLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2FtYm9kaWEnLCBpc28zQ29kZTogJ0tITScsIGlzbzJDb2RlOiAnS0gnLCBkYXRhc2V0Q29kZTogJ2toLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDYW1ib2RpYScsIGlzbzNDb2RlOiAnS0hNJywgaXNvMkNvZGU6ICdLSCcsIGRhdGFzZXRDb2RlOiAna2gtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdDYW1lcm9vbicsIGlzbzNDb2RlOiAnQ01SJywgaXNvMkNvZGU6ICdDTScsIGRhdGFzZXRDb2RlOiAnY20tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0NhbWVyb29uJywgaXNvM0NvZGU6ICdDTVInLCBpc28yQ29kZTogJ0NNJywgZGF0YXNldENvZGU6ICdjbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NhbmFkYScsIGlzbzNDb2RlOiAnQ0FOJywgaXNvMkNvZGU6ICdDQScsIGRhdGFzZXRDb2RlOiAnY2EtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0NhcGUgVmVyZGUnLCBpc28zQ29kZTogJ0NQVicsIGlzbzJDb2RlOiAnQ1YnLCBkYXRhc2V0Q29kZTogJ2N2LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDYXBlIFZlcmRlJywgaXNvM0NvZGU6ICdDUFYnLCBpc28yQ29kZTogJ0NWJywgZGF0YXNldENvZGU6ICdjdi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NheW1hbiBJc2xhbmRzJywgaXNvM0NvZGU6ICdDWU0nLCBpc28yQ29kZTogJ0tZJywgZGF0YXNldENvZGU6ICdreS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2F5bWFuIElzbGFuZHMnLCBpc28zQ29kZTogJ0NZTScsIGlzbzJDb2RlOiAnS1knLCBkYXRhc2V0Q29kZTogJ2t5LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJywgaXNvM0NvZGU6ICdDQUYnLCBpc28yQ29kZTogJ0NGJywgZGF0YXNldENvZGU6ICdjZi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2VudHJhbCBBZnJpY2FuIFJlcHVibGljJywgaXNvM0NvZGU6ICdDQUYnLCBpc28yQ29kZTogJ0NGJywgZGF0YXNldENvZGU6ICdjZi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NoYWQnLCBpc28zQ29kZTogJ1RDRCcsIGlzbzJDb2RlOiAnVEQnLCBkYXRhc2V0Q29kZTogJ3RkLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDaGFkJywgaXNvM0NvZGU6ICdUQ0QnLCBpc28yQ29kZTogJ1REJywgZGF0YXNldENvZGU6ICd0ZC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NoaWxlJywgaXNvM0NvZGU6ICdDSEwnLCBpc28yQ29kZTogJ0NMJywgZGF0YXNldENvZGU6ICdjbC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2hpbGUnLCBpc28zQ29kZTogJ0NITCcsIGlzbzJDb2RlOiAnQ0wnLCBkYXRhc2V0Q29kZTogJ2NsLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ2hpbmEnLCBpc28zQ29kZTogJ0NITicsIGlzbzJDb2RlOiAnQ04nLCBkYXRhc2V0Q29kZTogJ2NuLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDaGluYScsIGlzbzNDb2RlOiAnQ0hOJywgaXNvMkNvZGU6ICdDTicsIGRhdGFzZXRDb2RlOiAnY24tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdDaHJpc3RtYXMgSXNsYW5kJywgaXNvM0NvZGU6ICdDWFInLCBpc28yQ29kZTogJ0NYJywgZGF0YXNldENvZGU6ICdjeC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NvY29zIElzbGFuZCcsIGlzbzNDb2RlOiAnQ0NLJywgaXNvMkNvZGU6ICdDQycsIGRhdGFzZXRDb2RlOiAnY2MtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdDb2xvbWJpYScsIGlzbzNDb2RlOiAnQ09MJywgaXNvMkNvZGU6ICdDTycsIGRhdGFzZXRDb2RlOiAnY28tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0NvbG9tYmlhJywgaXNvM0NvZGU6ICdDT0wnLCBpc28yQ29kZTogJ0NPJywgZGF0YXNldENvZGU6ICdjby1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NvbW9yb3MnLCBpc28zQ29kZTogJ0NPTScsIGlzbzJDb2RlOiAnS00nLCBkYXRhc2V0Q29kZTogJ2ttLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDb21vcm9zJywgaXNvM0NvZGU6ICdDT00nLCBpc28yQ29kZTogJ0tNJywgZGF0YXNldENvZGU6ICdrbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0NvbmdvJywgaXNvM0NvZGU6ICdDT0cnLCBpc28yQ29kZTogJ0NHJywgZGF0YXNldENvZGU6ICdjZy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ29uZ28nLCBpc28zQ29kZTogJ0NPRycsIGlzbzJDb2RlOiAnQ0cnLCBkYXRhc2V0Q29kZTogJ2NnLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ29uZ28sIFRoZSBEZW1vY3JhdGljIFJlcHVibGljIG9mIHRoZScsIGlzbzNDb2RlOiAnQ09EJywgaXNvMkNvZGU6ICdDRCcsIGRhdGFzZXRDb2RlOiAnY2QtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0NvbmdvLCBUaGUgRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUnLCBpc28zQ29kZTogJ0NPRCcsIGlzbzJDb2RlOiAnQ0QnLCBkYXRhc2V0Q29kZTogJ2NkLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ29vayBJc2xhbmRzJywgaXNvM0NvZGU6ICdDT0snLCBpc28yQ29kZTogJ0NLJywgZGF0YXNldENvZGU6ICdjay1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ29vayBJc2xhbmRzJywgaXNvM0NvZGU6ICdDT0snLCBpc28yQ29kZTogJ0NLJywgZGF0YXNldENvZGU6ICdjay1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0Nvc3RhIFJpY2EnLCBpc28zQ29kZTogJ0NSSScsIGlzbzJDb2RlOiAnQ1InLCBkYXRhc2V0Q29kZTogJ2NyLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDb3N0YSBSaWNhJywgaXNvM0NvZGU6ICdDUkknLCBpc28yQ29kZTogJ0NSJywgZGF0YXNldENvZGU6ICdjci1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0Nyb2F0aWEnLCBpc28zQ29kZTogJ0hSVicsIGlzbzJDb2RlOiAnSFInLCBkYXRhc2V0Q29kZTogJ2hyLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDcm9hdGlhJywgaXNvM0NvZGU6ICdIUlYnLCBpc28yQ29kZTogJ0hSJywgZGF0YXNldENvZGU6ICdoci1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0N1YmEnLCBpc28zQ29kZTogJ0NVQicsIGlzbzJDb2RlOiAnQ1UnLCBkYXRhc2V0Q29kZTogJ2N1LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdDdWJhJywgaXNvM0NvZGU6ICdDVUInLCBpc28yQ29kZTogJ0NVJywgZGF0YXNldENvZGU6ICdjdS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0N1cmHDp2FvJywgaXNvM0NvZGU6ICdDVVcnLCBpc28yQ29kZTogJ0NXJywgZGF0YXNldENvZGU6ICdjdy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ3VyYcOnYW8nLCBpc28zQ29kZTogJ0NVVycsIGlzbzJDb2RlOiAnQ1cnLCBkYXRhc2V0Q29kZTogJ2N3LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ3lwcnVzJywgaXNvM0NvZGU6ICdDWVAnLCBpc28yQ29kZTogJ0NZJywgZGF0YXNldENvZGU6ICdjeS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ3lwcnVzJywgaXNvM0NvZGU6ICdDWVAnLCBpc28yQ29kZTogJ0NZJywgZGF0YXNldENvZGU6ICdjeS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0N6ZWNoIFJlcHVibGljJywgaXNvM0NvZGU6ICdDWkUnLCBpc28yQ29kZTogJ0NaJywgZGF0YXNldENvZGU6ICdjei1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnQ3plY2ggUmVwdWJsaWMnLCBpc28zQ29kZTogJ0NaRScsIGlzbzJDb2RlOiAnQ1onLCBkYXRhc2V0Q29kZTogJ2N6LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnQ8O0dGUgZFxcJ0l2b2lyZScsIGlzbzNDb2RlOiAnQ0lWJywgaXNvMkNvZGU6ICdDSScsIGRhdGFzZXRDb2RlOiAnY2ktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0PDtHRlIGRcXCdJdm9pcmUnLCBpc28zQ29kZTogJ0NJVicsIGlzbzJDb2RlOiAnQ0knLCBkYXRhc2V0Q29kZTogJ2NpLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnRGVubWFyaycsIGlzbzNDb2RlOiAnRE5LJywgaXNvMkNvZGU6ICdESycsIGRhdGFzZXRDb2RlOiAnZGstYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0Rlbm1hcmsnLCBpc28zQ29kZTogJ0ROSycsIGlzbzJDb2RlOiAnREsnLCBkYXRhc2V0Q29kZTogJ2RrLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnRGppYm91dGknLCBpc28zQ29kZTogJ0RKSScsIGlzbzJDb2RlOiAnREonLCBkYXRhc2V0Q29kZTogJ2RqLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdEamlib3V0aScsIGlzbzNDb2RlOiAnREpJJywgaXNvMkNvZGU6ICdESicsIGRhdGFzZXRDb2RlOiAnZGotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdEb21pbmljYScsIGlzbzNDb2RlOiAnRE1BJywgaXNvMkNvZGU6ICdETScsIGRhdGFzZXRDb2RlOiAnZG0tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0RvbWluaWNhJywgaXNvM0NvZGU6ICdETUEnLCBpc28yQ29kZTogJ0RNJywgZGF0YXNldENvZGU6ICdkbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0RvbWluaWNhbiBSZXB1YmxpYycsIGlzbzNDb2RlOiAnRE9NJywgaXNvMkNvZGU6ICdETycsIGRhdGFzZXRDb2RlOiAnZG8tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0RvbWluaWNhbiBSZXB1YmxpYycsIGlzbzNDb2RlOiAnRE9NJywgaXNvMkNvZGU6ICdETycsIGRhdGFzZXRDb2RlOiAnZG8tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdFY3VhZG9yJywgaXNvM0NvZGU6ICdFQ1UnLCBpc28yQ29kZTogJ0VDJywgZGF0YXNldENvZGU6ICdlYy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRWN1YWRvcicsIGlzbzNDb2RlOiAnRUNVJywgaXNvMkNvZGU6ICdFQycsIGRhdGFzZXRDb2RlOiAnZWMtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdFZ3lwdCcsIGlzbzNDb2RlOiAnRUdZJywgaXNvMkNvZGU6ICdFRycsIGRhdGFzZXRDb2RlOiAnZWctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0VneXB0JywgaXNvM0NvZGU6ICdFR1knLCBpc28yQ29kZTogJ0VHJywgZGF0YXNldENvZGU6ICdlZy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0VsIFNhbHZhZG9yJywgaXNvM0NvZGU6ICdTTFYnLCBpc28yQ29kZTogJ1NWJywgZGF0YXNldENvZGU6ICdzdi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRWwgU2FsdmFkb3InLCBpc28zQ29kZTogJ1NMVicsIGlzbzJDb2RlOiAnU1YnLCBkYXRhc2V0Q29kZTogJ3N2LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnRXF1YXRvcmlhbCBHdWluZWEnLCBpc28zQ29kZTogJ0dOUScsIGlzbzJDb2RlOiAnR1EnLCBkYXRhc2V0Q29kZTogJ2dxLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdFcXVhdG9yaWFsIEd1aW5lYScsIGlzbzNDb2RlOiAnR05RJywgaXNvMkNvZGU6ICdHUScsIGRhdGFzZXRDb2RlOiAnZ3EtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdFcml0cmVhJywgaXNvM0NvZGU6ICdFUkknLCBpc28yQ29kZTogJ0VSJywgZGF0YXNldENvZGU6ICdlci1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRXJpdHJlYScsIGlzbzNDb2RlOiAnRVJJJywgaXNvMkNvZGU6ICdFUicsIGRhdGFzZXRDb2RlOiAnZXItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdFc3RvbmlhJywgaXNvM0NvZGU6ICdFU1QnLCBpc28yQ29kZTogJ0VFJywgZGF0YXNldENvZGU6ICdlZS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRXN0b25pYScsIGlzbzNDb2RlOiAnRVNUJywgaXNvMkNvZGU6ICdFRScsIGRhdGFzZXRDb2RlOiAnZWUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdFdGhpb3BpYScsIGlzbzNDb2RlOiAnRVRIJywgaXNvMkNvZGU6ICdFVCcsIGRhdGFzZXRDb2RlOiAnZXQtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0V0aGlvcGlhJywgaXNvM0NvZGU6ICdFVEgnLCBpc28yQ29kZTogJ0VUJywgZGF0YXNldENvZGU6ICdldC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0ZhbGtsYW5kIElzbGFuZHMgKE1hbHZpbmFzKScsIGlzbzNDb2RlOiAnRkxLJywgaXNvMkNvZGU6ICdGSycsIGRhdGFzZXRDb2RlOiAnZmstYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdGYXJvZSBJc2xhbmRzJywgaXNvM0NvZGU6ICdGUk8nLCBpc28yQ29kZTogJ0ZPJywgZGF0YXNldENvZGU6ICdmby1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRmFyb2UgSXNsYW5kcycsIGlzbzNDb2RlOiAnRlJPJywgaXNvMkNvZGU6ICdGTycsIGRhdGFzZXRDb2RlOiAnZm8tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdGaWppJywgaXNvM0NvZGU6ICdGSkknLCBpc28yQ29kZTogJ0ZKJywgZGF0YXNldENvZGU6ICdmai1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnRmlqaScsIGlzbzNDb2RlOiAnRkpJJywgaXNvMkNvZGU6ICdGSicsIGRhdGFzZXRDb2RlOiAnZmotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdGaW5sYW5kJywgaXNvM0NvZGU6ICdGSU4nLCBpc28yQ29kZTogJ0ZJJywgZGF0YXNldENvZGU6ICdmaS1hZGRyZXNzJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duJ30sXG4gIHtjb3VudHJ5OiAnRmlubGFuZCcsIGlzbzNDb2RlOiAnRklOJywgaXNvMkNvZGU6ICdGSScsIGRhdGFzZXRDb2RlOiAnZmktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICd2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0ZpbmxhbmQnLCBpc28zQ29kZTogJ0ZJTicsIGlzbzJDb2RlOiAnRkknLCBkYXRhc2V0Q29kZTogJ2ZpLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnRnJhbmNlIFN0cmVldCBMZXZlbCcsIGlzbzNDb2RlOiAnRlJBJywgaXNvMkNvZGU6ICdGUicsIGRhdGFzZXRDb2RlOiAnZnItYWRkcmVzcy1zdHJlZXRsZXZlbCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdGcmFuY2UgU3ViLVByZW1pc2VzIExldmVsJywgaXNvM0NvZGU6ICdGUkEnLCBpc28yQ29kZTogJ0ZSJywgZGF0YXNldENvZGU6ICdmci1hZGRpdGlvbmFsLWhleGFsaW5lMycsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duJ30sXG4gIHtjb3VudHJ5OiAnRnJhbmNlIFByZW1pc2VzIExldmVsJywgaXNvM0NvZGU6ICdGUkEnLCBpc28yQ29kZTogJ0ZSJywgZGF0YXNldENvZGU6ICdmci1hZGRyZXNzJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0ZyZW5jaCBHdWlhbmEnLCBpc28zQ29kZTogJ0dVRicsIGlzbzJDb2RlOiAnR0YnLCBkYXRhc2V0Q29kZTogJ2dmLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnRnJlbmNoIFBvbHluZXNpYScsIGlzbzNDb2RlOiAnUFlGJywgaXNvMkNvZGU6ICdQRicsIGRhdGFzZXRDb2RlOiAncGYtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHYWJvbicsIGlzbzNDb2RlOiAnR0FCJywgaXNvMkNvZGU6ICdHQScsIGRhdGFzZXRDb2RlOiAnZ2EtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0dhYm9uJywgaXNvM0NvZGU6ICdHQUInLCBpc28yQ29kZTogJ0dBJywgZGF0YXNldENvZGU6ICdnYS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0dhbWJpYScsIGlzbzNDb2RlOiAnR01CJywgaXNvMkNvZGU6ICdHTScsIGRhdGFzZXRDb2RlOiAnZ20tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0dhbWJpYScsIGlzbzNDb2RlOiAnR01CJywgaXNvMkNvZGU6ICdHTScsIGRhdGFzZXRDb2RlOiAnZ20tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHZW9yZ2lhJywgaXNvM0NvZGU6ICdHRU8nLCBpc28yQ29kZTogJ0dFJywgZGF0YXNldENvZGU6ICdnZS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnR2VvcmdpYScsIGlzbzNDb2RlOiAnR0VPJywgaXNvMkNvZGU6ICdHRScsIGRhdGFzZXRDb2RlOiAnZ2UtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHZXJtYW55JywgaXNvM0NvZGU6ICdERVUnLCBpc28yQ29kZTogJ0RFJywgZGF0YXNldENvZGU6ICdkZS1hZGRyZXNzJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0dlcm1hbnknLCBpc28zQ29kZTogJ0RFVScsIGlzbzJDb2RlOiAnREUnLCBkYXRhc2V0Q29kZTogJ2RlLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAndmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdHZXJtYW55JywgaXNvM0NvZGU6ICdERVUnLCBpc28yQ29kZTogJ0RFJywgZGF0YXNldENvZGU6ICdkZS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0doYW5hJywgaXNvM0NvZGU6ICdHSEEnLCBpc28yQ29kZTogJ0dIJywgZGF0YXNldENvZGU6ICdnaC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnR2hhbmEnLCBpc28zQ29kZTogJ0dIQScsIGlzbzJDb2RlOiAnR0gnLCBkYXRhc2V0Q29kZTogJ2doLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnR2licmFsdGFyJywgaXNvM0NvZGU6ICdHSUInLCBpc28yQ29kZTogJ0dJJywgZGF0YXNldENvZGU6ICdnaS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0dyZWVjZScsIGlzbzNDb2RlOiAnR1JDJywgaXNvMkNvZGU6ICdHUicsIGRhdGFzZXRDb2RlOiAnZ3ItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0dyZWVjZScsIGlzbzNDb2RlOiAnR1JDJywgaXNvMkNvZGU6ICdHUicsIGRhdGFzZXRDb2RlOiAnZ3ItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHcmVlbmxhbmQnLCBpc28zQ29kZTogJ0dSTCcsIGlzbzJDb2RlOiAnR0wnLCBkYXRhc2V0Q29kZTogJ2dsLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdHcmVlbmxhbmQnLCBpc28zQ29kZTogJ0dSTCcsIGlzbzJDb2RlOiAnR0wnLCBkYXRhc2V0Q29kZTogJ2dsLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnR3JlbmFkYScsIGlzbzNDb2RlOiAnR1JEJywgaXNvMkNvZGU6ICdHRCcsIGRhdGFzZXRDb2RlOiAnZ2QtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0dyZW5hZGEnLCBpc28zQ29kZTogJ0dSRCcsIGlzbzJDb2RlOiAnR0QnLCBkYXRhc2V0Q29kZTogJ2dkLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnR3VhZGVsb3VwZScsIGlzbzNDb2RlOiAnR0xQJywgaXNvMkNvZGU6ICdHUCcsIGRhdGFzZXRDb2RlOiAnZ3AtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHdWFtJywgaXNvM0NvZGU6ICdHVU0nLCBpc28yQ29kZTogJ0dVJywgZGF0YXNldENvZGU6ICdndS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0d1YXRlbWFsYScsIGlzbzNDb2RlOiAnR1RNJywgaXNvMkNvZGU6ICdHVCcsIGRhdGFzZXRDb2RlOiAnZ3QtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0d1YXRlbWFsYScsIGlzbzNDb2RlOiAnR1RNJywgaXNvMkNvZGU6ICdHVCcsIGRhdGFzZXRDb2RlOiAnZ3QtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdHdWluZWEnLCBpc28zQ29kZTogJ0dJTicsIGlzbzJDb2RlOiAnR04nLCBkYXRhc2V0Q29kZTogJ2duLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdHdWluZWEnLCBpc28zQ29kZTogJ0dJTicsIGlzbzJDb2RlOiAnR04nLCBkYXRhc2V0Q29kZTogJ2duLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnR3VpbmVhLUJpc3NhdScsIGlzbzNDb2RlOiAnR05CJywgaXNvMkNvZGU6ICdHVycsIGRhdGFzZXRDb2RlOiAnZ3ctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0d1aW5lYS1CaXNzYXUnLCBpc28zQ29kZTogJ0dOQicsIGlzbzJDb2RlOiAnR1cnLCBkYXRhc2V0Q29kZTogJ2d3LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnR3V5YW5hJywgaXNvM0NvZGU6ICdHVVknLCBpc28yQ29kZTogJ0dZJywgZGF0YXNldENvZGU6ICdneS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnR3V5YW5hJywgaXNvM0NvZGU6ICdHVVknLCBpc28yQ29kZTogJ0dZJywgZGF0YXNldENvZGU6ICdneS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0hhaXRpJywgaXNvM0NvZGU6ICdIVEknLCBpc28yQ29kZTogJ0hUJywgZGF0YXNldENvZGU6ICdodC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnSGFpdGknLCBpc28zQ29kZTogJ0hUSScsIGlzbzJDb2RlOiAnSFQnLCBkYXRhc2V0Q29kZTogJ2h0LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSG9uZHVyYXMnLCBpc28zQ29kZTogJ0hORCcsIGlzbzJDb2RlOiAnSE4nLCBkYXRhc2V0Q29kZTogJ2huLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdIb25kdXJhcycsIGlzbzNDb2RlOiAnSE5EJywgaXNvMkNvZGU6ICdITicsIGRhdGFzZXRDb2RlOiAnaG4tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdIb25nIEtvbmcnLCBpc28zQ29kZTogJ0hLRycsIGlzbzJDb2RlOiAnSEsnLCBkYXRhc2V0Q29kZTogJ2hrLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdIb25nIEtvbmcnLCBpc28zQ29kZTogJ0hLRycsIGlzbzJDb2RlOiAnSEsnLCBkYXRhc2V0Q29kZTogJ2hrLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSHVuZ2FyeScsIGlzbzNDb2RlOiAnSFVOJywgaXNvMkNvZGU6ICdIVScsIGRhdGFzZXRDb2RlOiAnaHUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0h1bmdhcnknLCBpc28zQ29kZTogJ0hVTicsIGlzbzJDb2RlOiAnSFUnLCBkYXRhc2V0Q29kZTogJ2h1LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSWNlbGFuZCcsIGlzbzNDb2RlOiAnSVNMJywgaXNvMkNvZGU6ICdJUycsIGRhdGFzZXRDb2RlOiAnaXMtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0ljZWxhbmQnLCBpc28zQ29kZTogJ0lTTCcsIGlzbzJDb2RlOiAnSVMnLCBkYXRhc2V0Q29kZTogJ2lzLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSW5kaWEnLCBpc28zQ29kZTogJ0lORCcsIGlzbzJDb2RlOiAnSU4nLCBkYXRhc2V0Q29kZTogJ2luLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdJbmRpYScsIGlzbzNDb2RlOiAnSU5EJywgaXNvMkNvZGU6ICdJTicsIGRhdGFzZXRDb2RlOiAnaW4tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdJbmRvbmVzaWEnLCBpc28zQ29kZTogJ0lETicsIGlzbzJDb2RlOiAnSUQnLCBkYXRhc2V0Q29kZTogJ2lkLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdJbmRvbmVzaWEnLCBpc28zQ29kZTogJ0lETicsIGlzbzJDb2RlOiAnSUQnLCBkYXRhc2V0Q29kZTogJ2lkLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSXJhbiwgSXNsYW1pYyBSZXB1YmxpYyBvZicsIGlzbzNDb2RlOiAnSVJOJywgaXNvMkNvZGU6ICdJUicsIGRhdGFzZXRDb2RlOiAnaXItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0lyYW4sIElzbGFtaWMgUmVwdWJsaWMgb2YnLCBpc28zQ29kZTogJ0lSTicsIGlzbzJDb2RlOiAnSVInLCBkYXRhc2V0Q29kZTogJ2lyLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSXJhcScsIGlzbzNDb2RlOiAnSVJRJywgaXNvMkNvZGU6ICdJUScsIGRhdGFzZXRDb2RlOiAnaXEtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0lyYXEnLCBpc28zQ29kZTogJ0lSUScsIGlzbzJDb2RlOiAnSVEnLCBkYXRhc2V0Q29kZTogJ2lxLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnSXJlbGFuZCcsIGlzbzNDb2RlOiAnSVJMJywgaXNvMkNvZGU6ICdJRScsIGRhdGFzZXRDb2RlOiAnaWUtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93bid9LFxuICB7Y291bnRyeTogJ0lyZWxhbmQnLCBpc28zQ29kZTogJ0lSTCcsIGlzbzJDb2RlOiAnSUUnLCBkYXRhc2V0Q29kZTogJ2llLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdJcmVsYW5kJywgaXNvM0NvZGU6ICdJUkwnLCBpc28yQ29kZTogJ0lFJywgZGF0YXNldENvZGU6ICdpZS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0lyZWxhbmQgRWlyY29kZScsIGlzbzNDb2RlOiAnSVJMJywgaXNvMkNvZGU6ICdJRScsIGRhdGFzZXRDb2RlOiAnaWUtYWRkaXRpb25hbC1laXJjb2RlJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0lyZWxhbmQgRUNBRCcsIGlzbzNDb2RlOiAnSVJMJywgaXNvMkNvZGU6ICdJRScsIGRhdGFzZXRDb2RlOiAnaWUtYWRkcmVzcy1lY2FkJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0lzcmFlbCcsIGlzbzNDb2RlOiAnSVNSJywgaXNvMkNvZGU6ICdJTCcsIGRhdGFzZXRDb2RlOiAnaWwtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0lzcmFlbCcsIGlzbzNDb2RlOiAnSVNSJywgaXNvMkNvZGU6ICdJTCcsIGRhdGFzZXRDb2RlOiAnaWwtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdJdGFseScsIGlzbzNDb2RlOiAnSVRBJywgaXNvMkNvZGU6ICdJVCcsIGRhdGFzZXRDb2RlOiAnaXQtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0l0YWx5JywgaXNvM0NvZGU6ICdJVEEnLCBpc28yQ29kZTogJ0lUJywgZGF0YXNldENvZGU6ICdpdC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0phbWFpY2EnLCBpc28zQ29kZTogJ0pBTScsIGlzbzJDb2RlOiAnSk0nLCBkYXRhc2V0Q29kZTogJ2ptLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdKYW1haWNhJywgaXNvM0NvZGU6ICdKQU0nLCBpc28yQ29kZTogJ0pNJywgZGF0YXNldENvZGU6ICdqbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0phcGFuJywgaXNvM0NvZGU6ICdKUE4nLCBpc28yQ29kZTogJ0pQJywgZGF0YXNldENvZGU6ICdqcC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnSmFwYW4nLCBpc28zQ29kZTogJ0pQTicsIGlzbzJDb2RlOiAnSlAnLCBkYXRhc2V0Q29kZTogJ2pwLWFkZHJlc3MnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdKb3JkYW4nLCBpc28zQ29kZTogJ0pPUicsIGlzbzJDb2RlOiAnSk8nLCBkYXRhc2V0Q29kZTogJ2pvLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdKb3JkYW4nLCBpc28zQ29kZTogJ0pPUicsIGlzbzJDb2RlOiAnSk8nLCBkYXRhc2V0Q29kZTogJ2pvLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnS2F6YWtoc3RhbicsIGlzbzNDb2RlOiAnS0FaJywgaXNvMkNvZGU6ICdLWicsIGRhdGFzZXRDb2RlOiAna3otYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0themFraHN0YW4nLCBpc28zQ29kZTogJ0tBWicsIGlzbzJDb2RlOiAnS1onLCBkYXRhc2V0Q29kZTogJ2t6LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnS2VueWEnLCBpc28zQ29kZTogJ0tFTicsIGlzbzJDb2RlOiAnS0UnLCBkYXRhc2V0Q29kZTogJ2tlLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdLZW55YScsIGlzbzNDb2RlOiAnS0VOJywgaXNvMkNvZGU6ICdLRScsIGRhdGFzZXRDb2RlOiAna2UtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdLaXJpYmF0aScsIGlzbzNDb2RlOiAnS0lSJywgaXNvMkNvZGU6ICdLSScsIGRhdGFzZXRDb2RlOiAna2ktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0tpcmliYXRpJywgaXNvM0NvZGU6ICdLSVInLCBpc28yQ29kZTogJ0tJJywgZGF0YXNldENvZGU6ICdraS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0tvcmVhLCBEZW1vY3JhdGljIFBlb3BsZVxcJ3MgUmVwdWJsaWMgb2YnLCBpc28zQ29kZTogJ1BSSycsIGlzbzJDb2RlOiAnS1AnLCBkYXRhc2V0Q29kZTogJ2twLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdLb3JlYSwgRGVtb2NyYXRpYyBQZW9wbGVcXCdzIFJlcHVibGljIG9mJywgaXNvM0NvZGU6ICdQUksnLCBpc28yQ29kZTogJ0tQJywgZGF0YXNldENvZGU6ICdrcC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0tvcmVhLCBSZXB1YmxpYyBvZicsIGlzbzNDb2RlOiAnS09SJywgaXNvMkNvZGU6ICdLUicsIGRhdGFzZXRDb2RlOiAna3ItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0tvcmVhLCBSZXB1YmxpYyBvZicsIGlzbzNDb2RlOiAnS09SJywgaXNvMkNvZGU6ICdLUicsIGRhdGFzZXRDb2RlOiAna3ItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdLb3Nvdm8nLCBpc28zQ29kZTogJ0tPUycsIGlzbzJDb2RlOiAnWEsnLCBkYXRhc2V0Q29kZTogJ2t2LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnS3V3YWl0JywgaXNvM0NvZGU6ICdLV1QnLCBpc28yQ29kZTogJ0tXJywgZGF0YXNldENvZGU6ICdrdy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnS3V3YWl0JywgaXNvM0NvZGU6ICdLV1QnLCBpc28yQ29kZTogJ0tXJywgZGF0YXNldENvZGU6ICdrdy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0t5cmd5enN0YW4nLCBpc28zQ29kZTogJ0tHWicsIGlzbzJDb2RlOiAnS0cnLCBkYXRhc2V0Q29kZTogJ2tnLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdLeXJneXpzdGFuJywgaXNvM0NvZGU6ICdLR1onLCBpc28yQ29kZTogJ0tHJywgZGF0YXNldENvZGU6ICdrZy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0xhb3MnLCBpc28zQ29kZTogJ0xBTycsIGlzbzJDb2RlOiAnTEEnLCBkYXRhc2V0Q29kZTogJ2xhLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdMYW9zJywgaXNvM0NvZGU6ICdMQU8nLCBpc28yQ29kZTogJ0xBJywgZGF0YXNldENvZGU6ICdsYS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0xhdHZpYScsIGlzbzNDb2RlOiAnTFZBJywgaXNvMkNvZGU6ICdMVicsIGRhdGFzZXRDb2RlOiAnbHYtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0xhdHZpYScsIGlzbzNDb2RlOiAnTFZBJywgaXNvMkNvZGU6ICdMVicsIGRhdGFzZXRDb2RlOiAnbHYtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdMZWJhbm9uJywgaXNvM0NvZGU6ICdMQk4nLCBpc28yQ29kZTogJ0xCJywgZGF0YXNldENvZGU6ICdsYi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTGViYW5vbicsIGlzbzNDb2RlOiAnTEJOJywgaXNvMkNvZGU6ICdMQicsIGRhdGFzZXRDb2RlOiAnbGItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdMZXNvdGhvJywgaXNvM0NvZGU6ICdMU08nLCBpc28yQ29kZTogJ0xTJywgZGF0YXNldENvZGU6ICdscy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTGVzb3RobycsIGlzbzNDb2RlOiAnTFNPJywgaXNvMkNvZGU6ICdMUycsIGRhdGFzZXRDb2RlOiAnbHMtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdMaWJlcmlhJywgaXNvM0NvZGU6ICdMQlInLCBpc28yQ29kZTogJ0xSJywgZGF0YXNldENvZGU6ICdsci1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTGliZXJpYScsIGlzbzNDb2RlOiAnTEJSJywgaXNvMkNvZGU6ICdMUicsIGRhdGFzZXRDb2RlOiAnbHItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdMaWJ5YScsIGlzbzNDb2RlOiAnTEJZJywgaXNvMkNvZGU6ICdMWScsIGRhdGFzZXRDb2RlOiAnbHktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0xpYnlhJywgaXNvM0NvZGU6ICdMQlknLCBpc28yQ29kZTogJ0xZJywgZGF0YXNldENvZGU6ICdseS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0xpZWNodGVuc3RlaW4nLCBpc28zQ29kZTogJ0xJRScsIGlzbzJDb2RlOiAnTEknLCBkYXRhc2V0Q29kZTogJ2xpLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdMaWVjaHRlbnN0ZWluJywgaXNvM0NvZGU6ICdMSUUnLCBpc28yQ29kZTogJ0xJJywgZGF0YXNldENvZGU6ICdsaS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ0xpdGh1YW5pYScsIGlzbzNDb2RlOiAnTFRVJywgaXNvMkNvZGU6ICdMVCcsIGRhdGFzZXRDb2RlOiAnbHQtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ0xpdGh1YW5pYScsIGlzbzNDb2RlOiAnTFRVJywgaXNvMkNvZGU6ICdMVCcsIGRhdGFzZXRDb2RlOiAnbHQtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdMdXhlbWJvdXJnJywgaXNvM0NvZGU6ICdMVVgnLCBpc28yQ29kZTogJ0xVJywgZGF0YXNldENvZGU6ICdsdS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTHV4ZW1ib3VyZycsIGlzbzNDb2RlOiAnTFVYJywgaXNvMkNvZGU6ICdMVScsIGRhdGFzZXRDb2RlOiAnbHUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNYWNhdScsIGlzbzNDb2RlOiAnTUFDJywgaXNvMkNvZGU6ICdNTycsIGRhdGFzZXRDb2RlOiAnbHYtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01hY2F1JywgaXNvM0NvZGU6ICdNQUMnLCBpc28yQ29kZTogJ01PJywgZGF0YXNldENvZGU6ICdsdi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01hZGFnYXNjYXInLCBpc28zQ29kZTogJ01ERycsIGlzbzJDb2RlOiAnTUcnLCBkYXRhc2V0Q29kZTogJ21vLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdNYWRhZ2FzY2FyJywgaXNvM0NvZGU6ICdNREcnLCBpc28yQ29kZTogJ01HJywgZGF0YXNldENvZGU6ICdtby1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01hbGF3aScsIGlzbzNDb2RlOiAnTVdJJywgaXNvMkNvZGU6ICdNVycsIGRhdGFzZXRDb2RlOiAnbXctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01hbGF3aScsIGlzbzNDb2RlOiAnTVdJJywgaXNvMkNvZGU6ICdNVycsIGRhdGFzZXRDb2RlOiAnbXctYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNYWxheXNpYScsIGlzbzNDb2RlOiAnTVlTJywgaXNvMkNvZGU6ICdNWScsIGRhdGFzZXRDb2RlOiAnbXktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01hbGF5c2lhJywgaXNvM0NvZGU6ICdNWVMnLCBpc28yQ29kZTogJ01ZJywgZGF0YXNldENvZGU6ICdteS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01hbGRpdmVzJywgaXNvM0NvZGU6ICdNRFYnLCBpc28yQ29kZTogJ01WJywgZGF0YXNldENvZGU6ICdtdi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTWFsZGl2ZXMnLCBpc28zQ29kZTogJ01EVicsIGlzbzJDb2RlOiAnTVYnLCBkYXRhc2V0Q29kZTogJ212LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTWFsaScsIGlzbzNDb2RlOiAnTUxJJywgaXNvMkNvZGU6ICdNTCcsIGRhdGFzZXRDb2RlOiAnbWwtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01hbGknLCBpc28zQ29kZTogJ01MSScsIGlzbzJDb2RlOiAnTUwnLCBkYXRhc2V0Q29kZTogJ21sLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTWFsdGEnLCBpc28zQ29kZTogJ01MVCcsIGlzbzJDb2RlOiAnTVQnLCBkYXRhc2V0Q29kZTogJ210LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdNYWx0YScsIGlzbzNDb2RlOiAnTUxUJywgaXNvMkNvZGU6ICdNVCcsIGRhdGFzZXRDb2RlOiAnbXQtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNYXJzaGFsbCBJc2xhbmRzJywgaXNvM0NvZGU6ICdNSEwnLCBpc28yQ29kZTogJ01IJywgZGF0YXNldENvZGU6ICdtaC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01hcnRpbmlxdWUnLCBpc28zQ29kZTogJ01UUScsIGlzbzJDb2RlOiAnTVEnLCBkYXRhc2V0Q29kZTogJ21xLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTWF1cml0YW5pYScsIGlzbzNDb2RlOiAnTVJUJywgaXNvMkNvZGU6ICdNUicsIGRhdGFzZXRDb2RlOiAnbXItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01hdXJpdGFuaWEnLCBpc28zQ29kZTogJ01SVCcsIGlzbzJDb2RlOiAnTVInLCBkYXRhc2V0Q29kZTogJ21yLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTWF1cml0aXVzJywgaXNvM0NvZGU6ICdNVVMnLCBpc28yQ29kZTogJ01VJywgZGF0YXNldENvZGU6ICdtdS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTWF1cml0aXVzJywgaXNvM0NvZGU6ICdNVVMnLCBpc28yQ29kZTogJ01VJywgZGF0YXNldENvZGU6ICdtdS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01heW90dGUnLCBpc28zQ29kZTogJ01ZVCcsIGlzbzJDb2RlOiAnWVQnLCBkYXRhc2V0Q29kZTogJ3l0LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTWV4aWNvJywgaXNvM0NvZGU6ICdNRVgnLCBpc28yQ29kZTogJ01YJywgZGF0YXNldENvZGU6ICdteC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTWV4aWNvJywgaXNvM0NvZGU6ICdNRVgnLCBpc28yQ29kZTogJ01YJywgZGF0YXNldENvZGU6ICdteC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01pY3JvbmVzaWEsIEZlZGVyYXRlZCBTdGF0ZXMgb2YnLCBpc28zQ29kZTogJ0ZTTScsIGlzbzJDb2RlOiAnRk0nLCBkYXRhc2V0Q29kZTogJ2ZtLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9sZG92YScsIGlzbzNDb2RlOiAnTURBJywgaXNvMkNvZGU6ICdNRCcsIGRhdGFzZXRDb2RlOiAnbWQtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01vbGRvdmEnLCBpc28zQ29kZTogJ01EQScsIGlzbzJDb2RlOiAnTUQnLCBkYXRhc2V0Q29kZTogJ21kLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9uYWNvJywgaXNvM0NvZGU6ICdNQ08nLCBpc28yQ29kZTogJ01DJywgZGF0YXNldENvZGU6ICdtYy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9uYWNvJywgaXNvM0NvZGU6ICdNQ08nLCBpc28yQ29kZTogJ01DJywgZGF0YXNldENvZGU6ICdtYy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ01vbmdvbGlhJywgaXNvM0NvZGU6ICdNTkcnLCBpc28yQ29kZTogJ01OJywgZGF0YXNldENvZGU6ICdtbi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9uZ29saWEnLCBpc28zQ29kZTogJ01ORycsIGlzbzJDb2RlOiAnTU4nLCBkYXRhc2V0Q29kZTogJ21uLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9udGVuZWdybycsIGlzbzNDb2RlOiAnTU5FJywgaXNvMkNvZGU6ICdNRScsIGRhdGFzZXRDb2RlOiAnbWUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ01vbnRlbmVncm8nLCBpc28zQ29kZTogJ01ORScsIGlzbzJDb2RlOiAnTUUnLCBkYXRhc2V0Q29kZTogJ21lLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9udHNlcnJhdCcsIGlzbzNDb2RlOiAnTVNSJywgaXNvMkNvZGU6ICdNUycsIGRhdGFzZXRDb2RlOiAnbXMtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNb3JvY2NvJywgaXNvM0NvZGU6ICdNQVInLCBpc28yQ29kZTogJ01BJywgZGF0YXNldENvZGU6ICdtYS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTW9yb2NjbycsIGlzbzNDb2RlOiAnTUFSJywgaXNvMkNvZGU6ICdNQScsIGRhdGFzZXRDb2RlOiAnbWEtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNb3phbWJpcXVlJywgaXNvM0NvZGU6ICdNT1onLCBpc28yQ29kZTogJ01aJywgZGF0YXNldENvZGU6ICdtei1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTW96YW1iaXF1ZScsIGlzbzNDb2RlOiAnTU9aJywgaXNvMkNvZGU6ICdNWicsIGRhdGFzZXRDb2RlOiAnbXotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdNeWFubWFyJywgaXNvM0NvZGU6ICdNTVInLCBpc28yQ29kZTogJ01NJywgZGF0YXNldENvZGU6ICdtbS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTXlhbm1hcicsIGlzbzNDb2RlOiAnTU1SJywgaXNvMkNvZGU6ICdNTScsIGRhdGFzZXRDb2RlOiAnbW0tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdOYW1pYmlhJywgaXNvM0NvZGU6ICdOQU0nLCBpc28yQ29kZTogJ05BJywgZGF0YXNldENvZGU6ICduYS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTmFtaWJpYScsIGlzbzNDb2RlOiAnTkFNJywgaXNvMkNvZGU6ICdOQScsIGRhdGFzZXRDb2RlOiAnbmEtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdOYXVydScsIGlzbzNDb2RlOiAnTlJVJywgaXNvMkNvZGU6ICdOUicsIGRhdGFzZXRDb2RlOiAnbnItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ05hdXJ1JywgaXNvM0NvZGU6ICdOUlUnLCBpc28yQ29kZTogJ05SJywgZGF0YXNldENvZGU6ICduci1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ05lcGFsJywgaXNvM0NvZGU6ICdOUEwnLCBpc28yQ29kZTogJ05QJywgZGF0YXNldENvZGU6ICducC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTmVwYWwnLCBpc28zQ29kZTogJ05QTCcsIGlzbzJDb2RlOiAnTlAnLCBkYXRhc2V0Q29kZTogJ25wLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTmV0aGVybGFuZHMnLCBpc28zQ29kZTogJ05MRCcsIGlzbzJDb2RlOiAnTkwnLCBkYXRhc2V0Q29kZTogJ25sLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdOZXRoZXJsYW5kcycsIGlzbzNDb2RlOiAnTkxEJywgaXNvMkNvZGU6ICdOTCcsIGRhdGFzZXRDb2RlOiAnbmwtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdOZXcgQ2FsZWRvbmlhJywgaXNvM0NvZGU6ICdOQ0wnLCBpc28yQ29kZTogJ05DJywgZGF0YXNldENvZGU6ICduYy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ05ldyBaZWFsYW5kIERhdGFGdXNpb24nLCBpc28zQ29kZTogJ05aTCcsIGlzbzJDb2RlOiAnTlonLCBkYXRhc2V0Q29kZTogJ256LWFkZGl0aW9uYWwtZGF0YWZ1c2lvbicsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUsIHNpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ05ldyBaZWFsYW5kIFBvc3RhbCBBZGRyZXNzJywgaXNvM0NvZGU6ICdOWkwnLCBpc28yQ29kZTogJ05aJywgZGF0YXNldENvZGU6ICduei1hZGRyZXNzJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSwgc2luZ2xlbGluZSwgdHlwZWRvd24sIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTmljYXJhZ3VhJywgaXNvM0NvZGU6ICdOSUMnLCBpc28yQ29kZTogJ05JJywgZGF0YXNldENvZGU6ICduaS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTmljYXJhZ3VhJywgaXNvM0NvZGU6ICdOSUMnLCBpc28yQ29kZTogJ05JJywgZGF0YXNldENvZGU6ICduaS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ05pZ2VyJywgaXNvM0NvZGU6ICdORVInLCBpc28yQ29kZTogJ05FJywgZGF0YXNldENvZGU6ICduZS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTmlnZXInLCBpc28zQ29kZTogJ05FUicsIGlzbzJDb2RlOiAnTkUnLCBkYXRhc2V0Q29kZTogJ25lLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTmlnZXJpYScsIGlzbzNDb2RlOiAnTkdBJywgaXNvMkNvZGU6ICdORycsIGRhdGFzZXRDb2RlOiAnbmctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ05pZ2VyaWEnLCBpc28zQ29kZTogJ05HQScsIGlzbzJDb2RlOiAnTkcnLCBkYXRhc2V0Q29kZTogJ25nLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTml1ZScsIGlzbzNDb2RlOiAnTklVJywgaXNvMkNvZGU6ICdOVScsIGRhdGFzZXRDb2RlOiAnbnUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ05vcmZvbGsgSXNsYW5kJywgaXNvM0NvZGU6ICdORksnLCBpc28yQ29kZTogJ05GJywgZGF0YXNldENvZGU6ICduZi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTm9yZm9sayBJc2xhbmQnLCBpc28zQ29kZTogJ05GSycsIGlzbzJDb2RlOiAnTkYnLCBkYXRhc2V0Q29kZTogJ25mLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnTm9ydGggTWFjZWRvbmlhJywgaXNvM0NvZGU6ICdNS0QnLCBpc28yQ29kZTogJ01LJywgZGF0YXNldENvZGU6ICdtay1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnTm9ydGggTWFjZWRvbmlhJywgaXNvM0NvZGU6ICdNS0QnLCBpc28yQ29kZTogJ01LJywgZGF0YXNldENvZGU6ICdtay1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ05vcnRoZXJuIE1hcmlhbmEgSXNsYW5kcycsIGlzbzNDb2RlOiAnTU5QJywgaXNvMkNvZGU6ICdNUCcsIGRhdGFzZXRDb2RlOiAnbXAtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdOb3J3YXknLCBpc28zQ29kZTogJ05PUicsIGlzbzJDb2RlOiAnTk8nLCBkYXRhc2V0Q29kZTogJ25vLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAndmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdOb3J3YXknLCBpc28zQ29kZTogJ05PUicsIGlzbzJDb2RlOiAnTk8nLCBkYXRhc2V0Q29kZTogJ25vLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnT21hbicsIGlzbzNDb2RlOiAnT01OJywgaXNvMkNvZGU6ICdPTScsIGRhdGFzZXRDb2RlOiAnb20tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ09tYW4nLCBpc28zQ29kZTogJ09NTicsIGlzbzJDb2RlOiAnT00nLCBkYXRhc2V0Q29kZTogJ29tLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUGFraXN0YW4nLCBpc28zQ29kZTogJ1BBSycsIGlzbzJDb2RlOiAnUEsnLCBkYXRhc2V0Q29kZTogJ3BrLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdQYWtpc3RhbicsIGlzbzNDb2RlOiAnUEFLJywgaXNvMkNvZGU6ICdQSycsIGRhdGFzZXRDb2RlOiAncGstYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdQYWxhdScsIGlzbzNDb2RlOiAnUExXJywgaXNvMkNvZGU6ICdQVycsIGRhdGFzZXRDb2RlOiAncHctYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdQYWxlc3RpbmUnLCBpc28zQ29kZTogJ1BTRScsIGlzbzJDb2RlOiAnUFMnLCBkYXRhc2V0Q29kZTogJ3BzLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUGFuYW1hJywgaXNvM0NvZGU6ICdQQU4nLCBpc28yQ29kZTogJ1BBJywgZGF0YXNldENvZGU6ICdwYS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnUGFuYW1hJywgaXNvM0NvZGU6ICdQQU4nLCBpc28yQ29kZTogJ1BBJywgZGF0YXNldENvZGU6ICdwYS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1BhcHVhIE5ldyBHdWluZWEnLCBpc28zQ29kZTogJ1BORycsIGlzbzJDb2RlOiAnUEcnLCBkYXRhc2V0Q29kZTogJ3BnLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdQYXB1YSBOZXcgR3VpbmVhJywgaXNvM0NvZGU6ICdQTkcnLCBpc28yQ29kZTogJ1BHJywgZGF0YXNldENvZGU6ICdwZy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1BhcmFndWF5JywgaXNvM0NvZGU6ICdQUlknLCBpc28yQ29kZTogJ1BZJywgZGF0YXNldENvZGU6ICdweS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnUGFyYWd1YXknLCBpc28zQ29kZTogJ1BSWScsIGlzbzJDb2RlOiAnUFknLCBkYXRhc2V0Q29kZTogJ3B5LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUGVydScsIGlzbzNDb2RlOiAnUEVSJywgaXNvMkNvZGU6ICdQRScsIGRhdGFzZXRDb2RlOiAncGUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1BlcnUnLCBpc28zQ29kZTogJ1BFUicsIGlzbzJDb2RlOiAnUEUnLCBkYXRhc2V0Q29kZTogJ3BlLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUGhpbGlwcGluZXMnLCBpc28zQ29kZTogJ1BITCcsIGlzbzJDb2RlOiAnUEgnLCBkYXRhc2V0Q29kZTogJ3BoLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdQaGlsaXBwaW5lcycsIGlzbzNDb2RlOiAnUEhMJywgaXNvMkNvZGU6ICdQSCcsIGRhdGFzZXRDb2RlOiAncGgtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdQaXRjYWlybiBJc2xhbmRzJywgaXNvM0NvZGU6ICdQQ04nLCBpc28yQ29kZTogJ1BOJywgZGF0YXNldENvZGU6ICdwbi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1BvbGFuZCcsIGlzbzNDb2RlOiAnUE9MJywgaXNvMkNvZGU6ICdQTCcsIGRhdGFzZXRDb2RlOiAncGwtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1BvbGFuZCcsIGlzbzNDb2RlOiAnUE9MJywgaXNvMkNvZGU6ICdQTCcsIGRhdGFzZXRDb2RlOiAncGwtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdQb3J0dWdhbCcsIGlzbzNDb2RlOiAnUFJUJywgaXNvMkNvZGU6ICdQVCcsIGRhdGFzZXRDb2RlOiAncHQtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1BvcnR1Z2FsJywgaXNvM0NvZGU6ICdQUlQnLCBpc28yQ29kZTogJ1BUJywgZGF0YXNldENvZGU6ICdwdC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1FhdGFyJywgaXNvM0NvZGU6ICdRQVQnLCBpc28yQ29kZTogJ1FBJywgZGF0YXNldENvZGU6ICdxYS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnUWF0YXInLCBpc28zQ29kZTogJ1FBVCcsIGlzbzJDb2RlOiAnUUEnLCBkYXRhc2V0Q29kZTogJ3FhLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUm9tYW5pYScsIGlzbzNDb2RlOiAnUk9VJywgaXNvMkNvZGU6ICdSTycsIGRhdGFzZXRDb2RlOiAncm8tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1JvbWFuaWEnLCBpc28zQ29kZTogJ1JPVScsIGlzbzJDb2RlOiAnUk8nLCBkYXRhc2V0Q29kZTogJ3JvLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnUnVzc2lhbiBGZWRlcmF0aW9uJywgaXNvM0NvZGU6ICdSVVMnLCBpc28yQ29kZTogJ1JVJywgZGF0YXNldENvZGU6ICdydS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnUnVzc2lhbiBGZWRlcmF0aW9uJywgaXNvM0NvZGU6ICdSVVMnLCBpc28yQ29kZTogJ1JVJywgZGF0YXNldENvZGU6ICdydS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1J3YW5kYScsIGlzbzNDb2RlOiAnUldBJywgaXNvMkNvZGU6ICdSVycsIGRhdGFzZXRDb2RlOiAncnctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1J3YW5kYScsIGlzbzNDb2RlOiAnUldBJywgaXNvMkNvZGU6ICdSVycsIGRhdGFzZXRDb2RlOiAncnctYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdSw6l1bmlvbicsIGlzbzNDb2RlOiAnUkVVJywgaXNvMkNvZGU6ICdSRScsIGRhdGFzZXRDb2RlOiAncmUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTYWludCBCYXJ0aMOpbGVteScsIGlzbzNDb2RlOiAnQkxNJywgaXNvMkNvZGU6ICdCTCcsIGRhdGFzZXRDb2RlOiAnYmwtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTYWludCBIZWxlbmEnLCBpc28zQ29kZTogJ1NITicsIGlzbzJDb2RlOiAnU0gnLCBkYXRhc2V0Q29kZTogJ3NoLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU2FpbnQgS2l0dHMgYW5kIE5ldmlzJywgaXNvM0NvZGU6ICdLTkEnLCBpc28yQ29kZTogJ0tOJywgZGF0YXNldENvZGU6ICdrbi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU2FpbnQgS2l0dHMgYW5kIE5ldmlzJywgaXNvM0NvZGU6ICdLTkEnLCBpc28yQ29kZTogJ0tOJywgZGF0YXNldENvZGU6ICdrbi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NhaW50IEx1Y2lhJywgaXNvM0NvZGU6ICdMQ0EnLCBpc28yQ29kZTogJ0xDJywgZGF0YXNldENvZGU6ICdsYy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NhaW50IFBpZXJyZSBhbmQgTWlxdWVsb24nLCBpc28zQ29kZTogJ1NQTScsIGlzbzJDb2RlOiAnUE0nLCBkYXRhc2V0Q29kZTogJ3BtLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXMnLCBpc28zQ29kZTogJ1ZDVCcsIGlzbzJDb2RlOiAnVkMnLCBkYXRhc2V0Q29kZTogJ3ZjLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTYWludCBWaW5jZW50IGFuZCB0aGUgR3JlbmFkaW5lcycsIGlzbzNDb2RlOiAnVkNUJywgaXNvMkNvZGU6ICdWQycsIGRhdGFzZXRDb2RlOiAndmMtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTYW1vYScsIGlzbzNDb2RlOiAnV1NNJywgaXNvMkNvZGU6ICdXUycsIGRhdGFzZXRDb2RlOiAnd3MtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1NhbW9hJywgaXNvM0NvZGU6ICdXU00nLCBpc28yQ29kZTogJ1dTJywgZGF0YXNldENvZGU6ICd3cy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NhbiBNYXJpbm8nLCBpc28zQ29kZTogJ1NNUicsIGlzbzJDb2RlOiAnU00nLCBkYXRhc2V0Q29kZTogJ3NtLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTYW4gTWFyaW5vJywgaXNvM0NvZGU6ICdTTVInLCBpc28yQ29kZTogJ1NNJywgZGF0YXNldENvZGU6ICdzbS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NhbyBUb21lIGFuZCBQcmluY2lwZScsIGlzbzNDb2RlOiAnU1RQJywgaXNvMkNvZGU6ICdTVCcsIGRhdGFzZXRDb2RlOiAnc3QtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1NhbyBUb21lIGFuZCBQcmluY2lwZScsIGlzbzNDb2RlOiAnU1RQJywgaXNvMkNvZGU6ICdTVCcsIGRhdGFzZXRDb2RlOiAnc3QtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTYXVkaSBBcmFiaWEnLCBpc28zQ29kZTogJ1NBVScsIGlzbzJDb2RlOiAnU0EnLCBkYXRhc2V0Q29kZTogJ3NhLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTYXVkaSBBcmFiaWEnLCBpc28zQ29kZTogJ1NBVScsIGlzbzJDb2RlOiAnU0EnLCBkYXRhc2V0Q29kZTogJ3NhLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU2VuZWdhbCcsIGlzbzNDb2RlOiAnU0VOJywgaXNvMkNvZGU6ICdTTicsIGRhdGFzZXRDb2RlOiAnc24tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1NlbmVnYWwnLCBpc28zQ29kZTogJ1NFTicsIGlzbzJDb2RlOiAnU04nLCBkYXRhc2V0Q29kZTogJ3NuLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU2VyYmlhJywgaXNvM0NvZGU6ICdTUkInLCBpc28yQ29kZTogJ1JTJywgZGF0YXNldENvZGU6ICdycy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU2VyYmlhJywgaXNvM0NvZGU6ICdTUkInLCBpc28yQ29kZTogJ1JTJywgZGF0YXNldENvZGU6ICdycy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NleWNoZWxsZXMnLCBpc28zQ29kZTogJ1NZQycsIGlzbzJDb2RlOiAnU0MnLCBkYXRhc2V0Q29kZTogJ3NjLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTZXljaGVsbGVzJywgaXNvM0NvZGU6ICdTWUMnLCBpc28yQ29kZTogJ1NDJywgZGF0YXNldENvZGU6ICdzYy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NpZXJyYSBMZW9uZScsIGlzbzNDb2RlOiAnU0xFJywgaXNvMkNvZGU6ICdTTCcsIGRhdGFzZXRDb2RlOiAnc2wtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1NpZXJyYSBMZW9uZScsIGlzbzNDb2RlOiAnU0xFJywgaXNvMkNvZGU6ICdTTCcsIGRhdGFzZXRDb2RlOiAnc2wtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTaW5nYXBvcmUnLCBpc28zQ29kZTogJ1NHUCcsIGlzbzJDb2RlOiAnU0cnLCBkYXRhc2V0Q29kZTogJ3NnLWFkZHJlc3MnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlLCBzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTaW50IE1hYXJ0ZW4nLCBpc28zQ29kZTogJ1NYTScsIGlzbzJDb2RlOiAnU1gnLCBkYXRhc2V0Q29kZTogJ3N4LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTaW50IE1hYXJ0ZW4nLCBpc28zQ29kZTogJ1NYTScsIGlzbzJDb2RlOiAnU1gnLCBkYXRhc2V0Q29kZTogJ3N4LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU2xvdmFraWEnLCBpc28zQ29kZTogJ1NWSycsIGlzbzJDb2RlOiAnU0snLCBkYXRhc2V0Q29kZTogJ3NrLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTbG92YWtpYScsIGlzbzNDb2RlOiAnU1ZLJywgaXNvMkNvZGU6ICdTSycsIGRhdGFzZXRDb2RlOiAnc2stYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTbG92ZW5pYScsIGlzbzNDb2RlOiAnU1ZOJywgaXNvMkNvZGU6ICdTSScsIGRhdGFzZXRDb2RlOiAnc2ktYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1Nsb3ZlbmlhJywgaXNvM0NvZGU6ICdTVk4nLCBpc28yQ29kZTogJ1NJJywgZGF0YXNldENvZGU6ICdzaS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1NvbG9tb24gSXNsYW5kcycsIGlzbzNDb2RlOiAnU0xCJywgaXNvMkNvZGU6ICdTQicsIGRhdGFzZXRDb2RlOiAnc2ItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1NvbG9tb24gSXNsYW5kcycsIGlzbzNDb2RlOiAnU0xCJywgaXNvMkNvZGU6ICdTQicsIGRhdGFzZXRDb2RlOiAnc2ItYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTb21hbGlhJywgaXNvM0NvZGU6ICdTT00nLCBpc28yQ29kZTogJ1NPJywgZGF0YXNldENvZGU6ICdzby1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU29tYWxpYScsIGlzbzNDb2RlOiAnU09NJywgaXNvMkNvZGU6ICdTTycsIGRhdGFzZXRDb2RlOiAnc28tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTb3V0aCBBZnJpY2EnLCBpc28zQ29kZTogJ1pBRicsIGlzbzJDb2RlOiAnWkEnLCBkYXRhc2V0Q29kZTogJ3phLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTb3V0aCBBZnJpY2EnLCBpc28zQ29kZTogJ1pBRicsIGlzbzJDb2RlOiAnWkEnLCBkYXRhc2V0Q29kZTogJ3phLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU291dGggR2VvcmdpYSBhbmQgdGhlIFNvdXRoIFNhbmR3aWNoIElzbGFuZHMnLCBpc28zQ29kZTogJ1NHUycsIGlzbzJDb2RlOiAnR1MnLCBkYXRhc2V0Q29kZTogJ2dzLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU291dGggU3VkYW4nLCBpc28zQ29kZTogJ1NTRCcsIGlzbzJDb2RlOiAnU1MnLCBkYXRhc2V0Q29kZTogJ3NzLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTb3V0aCBTdWRhbicsIGlzbzNDb2RlOiAnU1NEJywgaXNvMkNvZGU6ICdTUycsIGRhdGFzZXRDb2RlOiAnc3MtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTcGFpbicsIGlzbzNDb2RlOiAnRVNQJywgaXNvMkNvZGU6ICdFUycsIGRhdGFzZXRDb2RlOiAnZXMtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93bid9LFxuICB7Y291bnRyeTogJ1NwYWluJywgaXNvM0NvZGU6ICdFU1AnLCBpc28yQ29kZTogJ0VTJywgZGF0YXNldENvZGU6ICdlcy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3ZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU3BhaW4nLCBpc28zQ29kZTogJ0VTUCcsIGlzbzJDb2RlOiAnRVMnLCBkYXRhc2V0Q29kZTogJ2VzLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU3JpIExhbmthJywgaXNvM0NvZGU6ICdMS0EnLCBpc28yQ29kZTogJ0xLJywgZGF0YXNldENvZGU6ICdsay1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU3VkYW4nLCBpc28zQ29kZTogJ1NETicsIGlzbzJDb2RlOiAnU0QnLCBkYXRhc2V0Q29kZTogJ3NkLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTdWRhbicsIGlzbzNDb2RlOiAnU0ROJywgaXNvMkNvZGU6ICdTRCcsIGRhdGFzZXRDb2RlOiAnc2QtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTdXJpbmFtZScsIGlzbzNDb2RlOiAnU1VSJywgaXNvMkNvZGU6ICdTUicsIGRhdGFzZXRDb2RlOiAnc3ItYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1N1cmluYW1lJywgaXNvM0NvZGU6ICdTVVInLCBpc28yQ29kZTogJ1NSJywgZGF0YXNldENvZGU6ICdzci1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1N2YWxiYXJkIGFuZCBKYW4gTWF5ZW4gSXNsYW5kcycsIGlzbzNDb2RlOiAnU0pNJywgaXNvMkNvZGU6ICdTSicsIGRhdGFzZXRDb2RlOiAnc2otYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTd2F6aWxhbmQgKEVzd2F0aW5pKScsIGlzbzNDb2RlOiAnU1daJywgaXNvMkNvZGU6ICdTWicsIGRhdGFzZXRDb2RlOiAnc3otYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1N3YXppbGFuZCAoRXN3YXRpbmkpJywgaXNvM0NvZGU6ICdTV1onLCBpc28yQ29kZTogJ1NaJywgZGF0YXNldENvZGU6ICdzei1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1N3ZWRlbicsIGlzbzNDb2RlOiAnU1dFJywgaXNvMkNvZGU6ICdTRScsIGRhdGFzZXRDb2RlOiAnc2UtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93bid9LFxuICB7Y291bnRyeTogJ1N3ZWRlbicsIGlzbzNDb2RlOiAnU1dFJywgaXNvMkNvZGU6ICdTRScsIGRhdGFzZXRDb2RlOiAnc2UtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICd2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1N3ZWRlbicsIGlzbzNDb2RlOiAnU1dFJywgaXNvMkNvZGU6ICdTRScsIGRhdGFzZXRDb2RlOiAnc2UtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdTd2l0emVybGFuZCcsIGlzbzNDb2RlOiAnQ0hFJywgaXNvMkNvZGU6ICdDSCcsIGRhdGFzZXRDb2RlOiAnY2gtYWRkcmVzcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93bid9LFxuICB7Y291bnRyeTogJ1N3aXR6ZXJsYW5kJywgaXNvM0NvZGU6ICdDSEUnLCBpc28yQ29kZTogJ0NIJywgZGF0YXNldENvZGU6ICdjaC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3ZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnU3dpdHplcmxhbmQnLCBpc28zQ29kZTogJ0NIRScsIGlzbzJDb2RlOiAnQ0gnLCBkYXRhc2V0Q29kZTogJ2NoLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnU3lyaWEnLCBpc28zQ29kZTogJ1NZUicsIGlzbzJDb2RlOiAnU1knLCBkYXRhc2V0Q29kZTogJ3N5LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdTeXJpYScsIGlzbzNDb2RlOiAnU1lSJywgaXNvMkNvZGU6ICdTWScsIGRhdGFzZXRDb2RlOiAnc3ktYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUYWl3YW4nLCBpc28zQ29kZTogJ1RXTicsIGlzbzJDb2RlOiAnVFcnLCBkYXRhc2V0Q29kZTogJ3R3LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdUYWl3YW4nLCBpc28zQ29kZTogJ1RXTicsIGlzbzJDb2RlOiAnVFcnLCBkYXRhc2V0Q29kZTogJ3R3LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVGFqaWtpc3RhbicsIGlzbzNDb2RlOiAnVEpLJywgaXNvMkNvZGU6ICdUSicsIGRhdGFzZXRDb2RlOiAndGotYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1RhamlraXN0YW4nLCBpc28zQ29kZTogJ1RKSycsIGlzbzJDb2RlOiAnVEonLCBkYXRhc2V0Q29kZTogJ3RqLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVGFuemFuaWEnLCBpc28zQ29kZTogJ1RaQScsIGlzbzJDb2RlOiAnVFonLCBkYXRhc2V0Q29kZTogJ3R6LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdUYW56YW5pYScsIGlzbzNDb2RlOiAnVFpBJywgaXNvMkNvZGU6ICdUWicsIGRhdGFzZXRDb2RlOiAndHotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUaGFpbGFuZCcsIGlzbzNDb2RlOiAnVEhBJywgaXNvMkNvZGU6ICdUSCcsIGRhdGFzZXRDb2RlOiAndGgtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1RoYWlsYW5kJywgaXNvM0NvZGU6ICdUSEEnLCBpc28yQ29kZTogJ1RIJywgZGF0YXNldENvZGU6ICd0aC1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1RpbW9yLUxlc3RlJywgaXNvM0NvZGU6ICdUTFMnLCBpc28yQ29kZTogJ1RMJywgZGF0YXNldENvZGU6ICd0bC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVGltb3ItTGVzdGUnLCBpc28zQ29kZTogJ1RMUycsIGlzbzJDb2RlOiAnVEwnLCBkYXRhc2V0Q29kZTogJ3RsLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVG9nbycsIGlzbzNDb2RlOiAnVEdPJywgaXNvMkNvZGU6ICdURycsIGRhdGFzZXRDb2RlOiAndGctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1RvZ28nLCBpc28zQ29kZTogJ1RHTycsIGlzbzJDb2RlOiAnVEcnLCBkYXRhc2V0Q29kZTogJ3RnLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVG9rZWxhdScsIGlzbzNDb2RlOiAnVEtMJywgaXNvMkNvZGU6ICdUSycsIGRhdGFzZXRDb2RlOiAndGstYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1Rva2VsYXUnLCBpc28zQ29kZTogJ1RLTCcsIGlzbzJDb2RlOiAnVEsnLCBkYXRhc2V0Q29kZTogJ3RrLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVG9uZ2EnLCBpc28zQ29kZTogJ1RPTicsIGlzbzJDb2RlOiAnVE8nLCBkYXRhc2V0Q29kZTogJ3RvLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdUb25nYScsIGlzbzNDb2RlOiAnVE9OJywgaXNvMkNvZGU6ICdUTycsIGRhdGFzZXRDb2RlOiAndG8tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUcmluaWRhZCBhbmQgVG9iYWdvJywgaXNvM0NvZGU6ICdUVE8nLCBpc28yQ29kZTogJ1RUJywgZGF0YXNldENvZGU6ICd0dC1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVHJpbmlkYWQgYW5kIFRvYmFnbycsIGlzbzNDb2RlOiAnVFRPJywgaXNvMkNvZGU6ICdUVCcsIGRhdGFzZXRDb2RlOiAndHQtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUdW5pc2lhJywgaXNvM0NvZGU6ICdUVU4nLCBpc28yQ29kZTogJ1ROJywgZGF0YXNldENvZGU6ICd0bi1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVHVuaXNpYScsIGlzbzNDb2RlOiAnVFVOJywgaXNvMkNvZGU6ICdUTicsIGRhdGFzZXRDb2RlOiAndG4tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUdXJrZXknLCBpc28zQ29kZTogJ1RVUicsIGlzbzJDb2RlOiAnVFInLCBkYXRhc2V0Q29kZTogJ3RyLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdUdXJrZXknLCBpc28zQ29kZTogJ1RVUicsIGlzbzJDb2RlOiAnVFInLCBkYXRhc2V0Q29kZTogJ3RyLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVHVya2lzaCBSZXB1YmxpYyBvZiBOb3J0aGVybiBDeXBydXMnLCBpc28zQ29kZTogJ05DWScsIGlzbzJDb2RlOiAnQ1knLCBkYXRhc2V0Q29kZTogJ255LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVHVya21lbmlzdGFuJywgaXNvM0NvZGU6ICdUS00nLCBpc28yQ29kZTogJ1RNJywgZGF0YXNldENvZGU6ICd0bS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVHVya21lbmlzdGFuJywgaXNvM0NvZGU6ICdUS00nLCBpc28yQ29kZTogJ1RNJywgZGF0YXNldENvZGU6ICd0bS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1R1cmtzIGFuZCBDYWljb3MgSXNsYW5kcycsIGlzbzNDb2RlOiAnVENBJywgaXNvMkNvZGU6ICdUQycsIGRhdGFzZXRDb2RlOiAndGMtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdUdXZhbHUnLCBpc28zQ29kZTogJ1RVVicsIGlzbzJDb2RlOiAnVFYnLCBkYXRhc2V0Q29kZTogJ3R2LWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdUdXZhbHUnLCBpc28zQ29kZTogJ1RVVicsIGlzbzJDb2RlOiAnVFYnLCBkYXRhc2V0Q29kZTogJ3R2LWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVWdhbmRhJywgaXNvM0NvZGU6ICdVR0EnLCBpc28yQ29kZTogJ1VHJywgZGF0YXNldENvZGU6ICd1Zy1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVWdhbmRhJywgaXNvM0NvZGU6ICdVR0EnLCBpc28yQ29kZTogJ1VHJywgZGF0YXNldENvZGU6ICd1Zy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1VrcmFpbmUnLCBpc28zQ29kZTogJ1VLUicsIGlzbzJDb2RlOiAnVUEnLCBkYXRhc2V0Q29kZTogJ3VhLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdVa3JhaW5lJywgaXNvM0NvZGU6ICdVS1InLCBpc28yQ29kZTogJ1VBJywgZGF0YXNldENvZGU6ICd1YS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1VuaXRlZCBBcmFiIEVtaXJhdGVzJywgaXNvM0NvZGU6ICdBUkUnLCBpc28yQ29kZTogJ0FFJywgZGF0YXNldENvZGU6ICdhZS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEFyYWIgRW1pcmF0ZXMnLCBpc28zQ29kZTogJ0FSRScsIGlzbzJDb2RlOiAnQUUnLCBkYXRhc2V0Q29kZTogJ2FlLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEtpbmdkb20nLCBpc28zQ29kZTogJ0dCUicsIGlzbzJDb2RlOiAnR0InLCBkYXRhc2V0Q29kZTogWydnYi1hZGRyZXNzJ10sIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdVbml0ZWQgS2luZ2RvbScsIGlzbzNDb2RlOiAnR0JSJywgaXNvMkNvZGU6ICdHQicsIGRhdGFzZXRDb2RlOiBbJ2diLWFkZGl0aW9uYWwtYnVzaW5lc3MnLCAnZ2ItYWRkaXRpb25hbC1tdWx0aXBsZXJlc2lkZW5jZScsICdnYi1hZGRpdGlvbmFsLW5vdHlldGJ1aWx0J10sIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEtpbmdkb20gQWRkcmVzc0Jhc2UgUHJlbWl1bScsIGlzbzNDb2RlOiAnR0JSJywgaXNvMkNvZGU6ICdHQicsIGRhdGFzZXRDb2RlOiAnZ2ItYWRkcmVzcy1hZGRyZXNzYmFzZScsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUsIGxvb2t1cCd9LFxuICB7Y291bnRyeTogJ1VuaXRlZCBLaW5nZG9tIEFkZHJlc3NCYXNlIFByZW1pdW0gd2l0aCBJc2xhbmRzJywgaXNvM0NvZGU6ICdHQlInLCBpc28yQ29kZTogJ0dCJywgZGF0YXNldENvZGU6ICdnYi1hZGRpdGlvbmFsLWFkZHJlc3NiYXNlaXNsYW5kcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUsIGxvb2t1cCd9LFxuICB7Y291bnRyeTogJ1VuaXRlZCBLaW5nZG9tIEJ1c2luZXNzIE5hbWVzJywgaXNvM0NvZGU6ICdHQlInLCBpc28yQ29kZTogJ0dCJywgZGF0YXNldENvZGU6ICdnYi1hZGRpdGlvbmFsLWJ1c2luZXNzJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEtpbmdkb20gRWxlY3RyaWNpdHknLCBpc28zQ29kZTogJ0dCUicsIGlzbzJDb2RlOiAnR0InLCBkYXRhc2V0Q29kZTogJ2diLWFkZGl0aW9uYWwtZWxlY3RyaWNpdHknLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdHlwZWRvd24sIHZhbGlkYXRlLCBsb29rdXAnfSxcbiAge2NvdW50cnk6ICdVbml0ZWQgS2luZ2RvbSBHYXMnLCBpc28zQ29kZTogJ0dCUicsIGlzbzJDb2RlOiAnR0InLCBkYXRhc2V0Q29kZTogJ2diLWFkZGl0aW9uYWwtZ2FzJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duLCB2YWxpZGF0ZSwgbG9va3VwJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEtpbmdkb20gU3RyZWV0IExldmVsJywgaXNvM0NvZGU6ICdHQlInLCBpc28yQ29kZTogJ0dCJywgZGF0YXNldENvZGU6ICdnYi1hZGRyZXNzLXN0cmVldGxldmVsJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHR5cGVkb3duJ30sXG4gIHtjb3VudHJ5OiAnVW5pdGVkIEtpbmdkb20gRXh0ZW5kZWQgQnVzaW5lc3MnLCBpc28zQ29kZTogJ0dCUicsIGlzbzJDb2RlOiAnR0InLCBkYXRhc2V0Q29kZTogJ2diLWFkZGl0aW9uYWwtYnVzaW5lc3NleHRlbmRlZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUsIGxvb2t1cCd9LFxuICB7Y291bnRyeTogJ1VuaXRlZCBLaW5nZG9tIEN5bXJhZWcgKFdlbHNoIExhbmd1YWdlKSBQb3N0YWwgQWRkcmVzcycsIGlzbzNDb2RlOiAnR0JSJywgaXNvMkNvZGU6ICdHQicsIGRhdGFzZXRDb2RlOiAnZ2ItYWRkcmVzcy13YWxlcycsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EnLCBpc28zQ29kZTogJ1VTQScsIGlzbzJDb2RlOiAnVVMnLCBkYXRhc2V0Q29kZTogJ3VzLWFkZHJlc3MnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlLCBzaW5nbGVsaW5lLCB0eXBlZG93biwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdVcnVndWF5JywgaXNvM0NvZGU6ICdVUlknLCBpc28yQ29kZTogJ1VZJywgZGF0YXNldENvZGU6ICd1eS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVXJ1Z3VheScsIGlzbzNDb2RlOiAnVVJZJywgaXNvMkNvZGU6ICdVWScsIGRhdGFzZXRDb2RlOiAndXktYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdVemJla2lzdGFuJywgaXNvM0NvZGU6ICdVWkInLCBpc28yQ29kZTogJ1VaJywgZGF0YXNldENvZGU6ICd1ei1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVXpiZWtpc3RhbicsIGlzbzNDb2RlOiAnVVpCJywgaXNvMkNvZGU6ICdVWicsIGRhdGFzZXRDb2RlOiAndXotYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdWYW51YXR1JywgaXNvM0NvZGU6ICdWVVQnLCBpc28yQ29kZTogJ1ZVJywgZGF0YXNldENvZGU6ICd2dS1hZGRyZXNzLWVkJywgc2VhcmNoVHlwZTogJ3NpbmdsZWxpbmUsIHZhbGlkYXRlJ30sXG4gIHtjb3VudHJ5OiAnVmFudWF0dScsIGlzbzNDb2RlOiAnVlVUJywgaXNvMkNvZGU6ICdWVScsIGRhdGFzZXRDb2RlOiAndnUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdWYXRpY2FuIENpdHkgKEhvbHkgU2VlKScsIGlzbzNDb2RlOiAnVkFUJywgaXNvMkNvZGU6ICdWQScsIGRhdGFzZXRDb2RlOiAndmEtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1ZhdGljYW4gQ2l0eSAoSG9seSBTZWUpJywgaXNvM0NvZGU6ICdWQVQnLCBpc28yQ29kZTogJ1ZBJywgZGF0YXNldENvZGU6ICd2YS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1ZlbmV6dWVsYScsIGlzbzNDb2RlOiAnVkVOJywgaXNvMkNvZGU6ICdWRScsIGRhdGFzZXRDb2RlOiAndmUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1ZlbmV6dWVsYScsIGlzbzNDb2RlOiAnVkVOJywgaXNvMkNvZGU6ICdWRScsIGRhdGFzZXRDb2RlOiAndmUtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdWaWV0IE5hbScsIGlzbzNDb2RlOiAnVk5NJywgaXNvMkNvZGU6ICdWTicsIGRhdGFzZXRDb2RlOiAndm4tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1ZpZXQgTmFtJywgaXNvM0NvZGU6ICdWTk0nLCBpc28yQ29kZTogJ1ZOJywgZGF0YXNldENvZGU6ICd2bi1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1ZpcmdpbiBJc2xhbmRzLCBCcml0aXNoJywgaXNvM0NvZGU6ICdWR0InLCBpc28yQ29kZTogJ1ZHJywgZGF0YXNldENvZGU6ICd2Zy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1ZpcmdpbiBJc2xhbmRzLCBVLlMuJywgaXNvM0NvZGU6ICdWSVInLCBpc28yQ29kZTogJ1ZJJywgZGF0YXNldENvZGU6ICd2aS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1dhbGxpcyBhbmQgRnV0dW5hIElzbGFuZHMnLCBpc28zQ29kZTogJ1dMRicsIGlzbzJDb2RlOiAnV0YnLCBkYXRhc2V0Q29kZTogJ3dmLWFkZHJlc3MtZWgnLCBzZWFyY2hUeXBlOiAnYXV0b2NvbXBsZXRlJ30sXG4gIHtjb3VudHJ5OiAnV2VzdGVybiBTYWhhcmEnLCBpc28zQ29kZTogJ0VTSCcsIGlzbzJDb2RlOiAnRUgnLCBkYXRhc2V0Q29kZTogJ2VoLWFkZHJlc3MtZWQnLCBzZWFyY2hUeXBlOiAnc2luZ2xlbGluZSwgdmFsaWRhdGUnfSxcbiAge2NvdW50cnk6ICdXZXN0ZXJuIFNhaGFyYScsIGlzbzNDb2RlOiAnRVNIJywgaXNvMkNvZGU6ICdFSCcsIGRhdGFzZXRDb2RlOiAnZWgtYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdZZW1lbicsIGlzbzNDb2RlOiAnWUVNJywgaXNvMkNvZGU6ICdZRScsIGRhdGFzZXRDb2RlOiAneWUtYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1llbWVuJywgaXNvM0NvZGU6ICdZRU0nLCBpc28yQ29kZTogJ1lFJywgZGF0YXNldENvZGU6ICd5ZS1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9LFxuICB7Y291bnRyeTogJ1phbWJpYScsIGlzbzNDb2RlOiAnWk1CJywgaXNvMkNvZGU6ICdaTScsIGRhdGFzZXRDb2RlOiAnem0tYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1phbWJpYScsIGlzbzNDb2RlOiAnWk1CJywgaXNvMkNvZGU6ICdaTScsIGRhdGFzZXRDb2RlOiAnem0tYWRkcmVzcy1laCcsIHNlYXJjaFR5cGU6ICdhdXRvY29tcGxldGUnfSxcbiAge2NvdW50cnk6ICdaaW1iYWJ3ZScsIGlzbzNDb2RlOiAnWldFJywgaXNvMkNvZGU6ICdaVycsIGRhdGFzZXRDb2RlOiAnenctYWRkcmVzcy1lZCcsIHNlYXJjaFR5cGU6ICdzaW5nbGVsaW5lLCB2YWxpZGF0ZSd9LFxuICB7Y291bnRyeTogJ1ppbWJhYndlJywgaXNvM0NvZGU6ICdaV0UnLCBpc28yQ29kZTogJ1pXJywgZGF0YXNldENvZGU6ICd6dy1hZGRyZXNzLWVoJywgc2VhcmNoVHlwZTogJ2F1dG9jb21wbGV0ZSd9XG5dOyIsIi8vIFRyYW5zbGF0aW9uc1xuZXhwb3J0IGNvbnN0IHRyYW5zbGF0aW9ucyA9IHtcbiAgLy8gbGFuZ3VhZ2UgLyBjb3VudHJ5IC8gcHJvcGVydHlcbiAgZW46IHtcbiAgICBnYnI6IHtcbiAgICAgIGxvY2FsaXR5OiAnVG93bi9DaXR5JyxcbiAgICAgIHJlZ2lvbjogJ0NvdW50eScsXG4gICAgICBwb3N0YWxfY29kZTogJ1Bvc3QgY29kZSdcbiAgICB9LFxuICAgIHVzYToge1xuICAgICAgbG9jYWxpdHk6ICdDaXR5JyxcbiAgICAgIHJlZ2lvbjogJ1N0YXRlJyxcbiAgICAgIHBvc3RhbF9jb2RlOiAnWklQIGNvZGUnXG4gICAgfVxuICB9XG4gIC8vIEFkZCBvdGhlciBsYW5ndWFnZXMgYmVsb3dcbn07IiwiZXhwb3J0IGNsYXNzIFBpY2tsaXN0IHtcclxuICBpdGVtczogUGlja2xpc3RJdGVtW107XHJcbiAgd2hhdDN3b3Jkc0l0ZW1zOiBXaGF0M1dvcmRzUGlja0xpc3RbXTtcclxuICBsb29rdXBJdGVtczogTG9va3VwQWRkcmVzc1tdO1xyXG4gIGN1cnJlbnRJdGVtO1xyXG4gIGxpc3Q6IEhUTUxEaXZFbGVtZW50O1xyXG4gIGNvbnRhaW5lcjogSFRNTEVsZW1lbnQ7XHJcbiAgc2l6ZSA9IDA7XHJcbiAgbWF4U3VnZ2VzdGlvbnMgPSAyNTtcclxuICBzaG93OiAoaXRlbXM6IFNlYXJjaFJlc3BvbnNlKSA9PiB2b2lkO1xyXG4gIHNob3dXaGF0M1dvcmRzOiAoaXRlbXM6IExvb2t1cFczV1Jlc3BvbnNlKSA9PiB2b2lkO1xyXG4gIHNob3dMb29rdXA6IChpdGVtczogTG9va3VwVjJSZXNwb25zZSkgPT4gdm9pZDtcclxuICBoaWRlOiAoKSA9PiB2b2lkO1xyXG4gIGhhbmRsZUVtcHR5UGlja2xpc3Q6IChpdGVtczogU2VhcmNoUmVzcG9uc2UgfCBMb29rdXBXM1dSZXNwb25zZSB8IExvb2t1cFYyUmVzcG9uc2UpID0+IHZvaWQ7XHJcbiAgaGFuZGxlRW1wdHlQaWNrbGlzdENhbGxiYWNrOiAoKSA9PiB2b2lkO1xyXG4gIGhhbmRsZUNvbW1vblNob3dQaWNrbGlzdExvZ2ljOiAoKSA9PiB2b2lkO1xyXG4gIHJlZmluZTogUmVmaW5lbWVudDtcclxuICB1c2VBZGRyZXNzRW50ZXJlZDogVXNlQWRkcmVzc0VudGVyZWQ7XHJcbiAgY3JlYXRlTGlzdDogKCkgPT4gSFRNTERpdkVsZW1lbnQ7XHJcbiAgY3JlYXRlTGlzdEl0ZW06IChpdGVtOiBQaWNrbGlzdEl0ZW0pID0+IEhUTUxEaXZFbGVtZW50O1xyXG4gIGNyZWF0ZUxvb2t1cExpc3RJdGVtOiAoaXRlbTogTG9va3VwQWRkcmVzcykgPT4gSFRNTERpdkVsZW1lbnQ7XHJcbiAgY3JlYXRlV2hhdDNXb3Jkc0xpc3RJdGVtOiAoaXRlbTogV2hhdDNXb3Jkc1BpY2tMaXN0KSA9PiBIVE1MRGl2RWxlbWVudDtcclxuICB0YWJDb3VudDogbnVtYmVyO1xyXG4gIHJlc2V0VGFiQ291bnQ6ICgpID0+IHZvaWQ7XHJcbiAga2V5dXA6IChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4gdm9pZDtcclxuICBhZGRNYXRjaGluZ0VtcGhhc2lzOiAoaXRlbSkgPT4gc3RyaW5nO1xyXG4gIGxpc3RlbjogKHJvdykgPT4gdm9pZDtcclxuICBjaGVja0VudGVyOiAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHZvaWQ7XHJcbiAgcGljazogKGl0ZW0pID0+IHZvaWQ7XHJcbiAgc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZDogKCkgPT4gdm9pZDtcclxuICBkaXNwbGF5U3VnZ2VzdGlvbnNIZWFkZXI6ICgpID0+IHZvaWQ7XHJcbiAgZGlzcGxheVVzZUFkZHJlc3NFbnRlcmVkRm9vdGVyOiAoKSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgQWRkcmVzc1ZhbGlkYXRpb25SZXN1bHQge1xyXG4gIGZvcm1hdHRlZEFkZHJlc3NDb250YWluZXI7XHJcbiAgbGFzdEFkZHJlc3NGaWVsZDtcclxuICBnZW5lcmF0ZUFkZHJlc3NMaW5lUmVxdWlyZWQ6IGJvb2xlYW47XHJcbiAgc2hvdzogKGRhdGEpID0+IHZvaWQ7XHJcbiAgaGlkZTogKCkgPT4gdm9pZDtcclxuICBjcmVhdGVBZGRyZXNzTGluZTogQ3JlYXRlQWRkcmVzc0xpbmU7XHJcbiAgY3JlYXRlRm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lcjogKCkgPT4gdm9pZDtcclxuICBjcmVhdGVIZWFkaW5nOiAoKSA9PiB2b2lkO1xyXG4gIHVwZGF0ZUhlYWRpbmc6ICh0ZXh0OiBzdHJpbmcpID0+IHZvaWQ7XHJcbiAgY2FsY3VsYXRlSWZBZGRyZXNzTGluZUdlbmVyYXRpb25SZXF1aXJlZDogKCkgPT4gdm9pZDtcclxuICB1cGRhdGVBZGRyZXNzTGluZTogKGtleTogc3RyaW5nLCBhZGRyZXNzTGluZU9iamVjdCwgY2xhc3NOYW1lOiBzdHJpbmcpID0+IHZvaWQ7XHJcbiAgdXBkYXRlTGFiZWw6IChrZXk6IHN0cmluZykgPT4gc3RyaW5nO1xyXG4gIGNyZWF0ZVNlYXJjaEFnYWluTGluazogKCkgPT4gdm9pZDtcclxuICByZW5kZXJJbnB1dExpc3Q6IChpbnB1dEFycmF5KSA9PiB2b2lkO1xyXG4gIGhhbmRsZVZhbGlkYXRlUmVzcG9uc2U6IChyZXNwb25zZTogU2VhcmNoUmVzcG9uc2UpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmNsYXNzIENyZWF0ZUFkZHJlc3NMaW5lIHtcclxuICBpbnB1dDogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBjbGFzc05hbWU6IHN0cmluZykgPT4gSFRNTERpdkVsZW1lbnQ7XHJcbiAgbGFiZWw6IChrZXk6IHN0cmluZykgPT4gc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFNlYXJjaFJlc3BvbnNlIHtcclxuICByZXN1bHQ/OiB7XHJcbiAgICBzdWdnZXN0aW9uczogUGlja2xpc3RJdGVtW107XHJcbiAgICBzdWdnZXN0aW9uc19wcm9tcHQ/OiBzdHJpbmc7XHJcbiAgICBzdWdnZXN0aW9uc19rZXk/OiBzdHJpbmc7XHJcbiAgICBjb25maWRlbmNlOiBzdHJpbmc7XHJcbiAgICBhZGRyZXNzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTG9va3VwVzNXUmVzcG9uc2Uge1xyXG4gIHJlc3VsdD86IHtcclxuICAgIG1vcmVfcmVzdWx0c19hdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgICBzdWdnZXN0aW9uczogV2hhdDNXb3Jkc1BpY2tMaXN0W107XHJcbiAgICBjb25maWRlbmNlOiBzdHJpbmc7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIExvb2t1cFYyUmVzcG9uc2Uge1xyXG4gIHJlc3VsdD86IHtcclxuICAgIG1vcmVfcmVzdWx0c19hdmFpbGFibGU6IGJvb2xlYW47XHJcbiAgICBjb25maWRlbmNlOiBzdHJpbmc7XHJcbiAgICBhZGRyZXNzZXM6IExvb2t1cEFkZHJlc3NbXTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTG9va3VwQWRkcmVzcyB7XHJcbiAgdGV4dDogc3RyaW5nO1xyXG4gIGdsb2JhbF9hZGRyZXNzX2tleTogc3RyaW5nO1xyXG4gIGZvcm1hdDogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIFdoYXQzV29yZHNQaWNrTGlzdCB7XHJcbiAgd2hhdDN3b3JkczogV2hhdDNXb3Jkc1N1Z2dlc3Rpb247XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgV2hhdDNXb3Jkc1N1Z2dlc3Rpb24ge1xyXG4gIG5hbWU6IHN0cmluZztcclxuICBkZXNjcmlwdGlvbjogc3RyaW5nXHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgUGlja2xpc3RJdGVtIHtcclxuICB0ZXh0OiBzdHJpbmc7XHJcbiAgZm9ybWF0Pzogc3RyaW5nO1xyXG4gIG1hdGNoZWQ/OiBudW1iZXJbXVtdO1xyXG4gIGdsb2JhbF9hZGRyZXNzX2tleT86IHN0cmluZztcclxuICBhZGRpdGlvbmFsX2F0dHJpYnV0ZXM/OiB7IG5hbWU6IHN0cmluZywgVmFsdWU6IHN0cmluZyB9W107XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBVc2VBZGRyZXNzRW50ZXJlZCB7XHJcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgY3JlYXRlOiAoY29uZmlkZW5jZTogc3RyaW5nKSA9PiBIVE1MRGl2RWxlbWVudDtcclxuICBkZXN0cm95OiAoKSA9PiB2b2lkO1xyXG4gIGNsaWNrOiAoKSA9PiB2b2lkO1xyXG4gIGZvcm1hdE1hbnVhbEFkZHJlc3NMaW5lOiAobGluZXMsIGkpID0+IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XHJcbn1cclxuXHJcbmV4cG9ydCBjbGFzcyBSZWZpbmVtZW50IHtcclxuICBlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xyXG4gIGlzTmVlZGVkOiAocmVzcG9uc2U6IFNlYXJjaFJlc3BvbnNlKSA9PiBib29sZWFuO1xyXG4gIGNyZWF0ZUlucHV0OiAocHJvbXB0OiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB2b2lkO1xyXG4gIGVudGVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgU2VhcmNoU3Bpbm5lciB7XHJcbiAgc2hvdzogKCkgPT4gdm9pZDtcclxuICBoaWRlOiAoKSA9PiB2b2lkO1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUG93ZXJlZEJ5TG9nbyB7XHJcbiAgZWxlbWVudDogSFRNTEVsZW1lbnQ7XHJcbiAgY3JlYXRlOiAocGlja2xpc3QpID0+IEhUTUxEaXZFbGVtZW50O1xyXG4gIGRlc3Ryb3k6IChwaWNrbGlzdCkgPT4gdm9pZDtcclxuICBzdmc6IHN0cmluZztcclxufSIsImltcG9ydCBFdmVudEZhY3RvcnkgZnJvbSAnLi9ldmVudC1mYWN0b3J5JztcclxuaW1wb3J0IFJlcXVlc3QgZnJvbSAnLi9yZXF1ZXN0JztcclxuaW1wb3J0IHsgQWRkcmVzc1NlYXJjaE9wdGlvbnMsIEFkZHJlc3NWYWxpZGF0aW9uTW9kZSwgZGVmYXVsdHMgfSBmcm9tICcuL3NlYXJjaC1vcHRpb25zJztcclxuaW1wb3J0IHsgZGF0YXNldENvZGVzIH0gZnJvbSAnLi9kYXRhc2V0cy1jb2Rlcyc7XHJcbmltcG9ydCB7IHRyYW5zbGF0aW9ucyB9IGZyb20gJy4vdHJhbnNsYXRpb25zJztcclxuaW1wb3J0IHsgQWRkcmVzc1ZhbGlkYXRpb25SZXN1bHQsIExvb2t1cEFkZHJlc3MsIExvb2t1cFYyUmVzcG9uc2UsIExvb2t1cFczV1Jlc3BvbnNlLCBQaWNrbGlzdCwgUGlja2xpc3RJdGVtLCBQb3dlcmVkQnlMb2dvLCBTZWFyY2hSZXNwb25zZSwgV2hhdDNXb3Jkc1BpY2tMaXN0IH0gZnJvbSAnLi9jbGFzcy10eXBlcyc7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBBZGRyZXNzVmFsaWRhdGlvbiB7XHJcbiAgcHVibGljIG9wdGlvbnM6IEFkZHJlc3NTZWFyY2hPcHRpb25zO1xyXG4gIHB1YmxpYyBzZWFyY2hUeXBlOiBBZGRyZXNzVmFsaWRhdGlvbk1vZGU7XHJcbiAgcHVibGljIGV2ZW50cztcclxuICBwdWJsaWMgcmVxdWVzdDogUmVxdWVzdDtcclxuXHJcbiAgcHJpdmF0ZSBiYXNlVXJsID0gJ2h0dHBzOi8vYXBpLmV4cGVyaWFuYXBlcnR1cmUuaW8vJztcclxuICBwcml2YXRlIHNlYXJjaEVuZHBvaW50ID0gJ2FkZHJlc3Mvc2VhcmNoL3YxJztcclxuICBwcml2YXRlIGxvb2t1cEVuZHBvaW50ID0gJ2FkZHJlc3MvbG9va3VwL3YyJztcclxuICBwcml2YXRlIHZhbGlkYXRlRW5kcG9pbnQgPSAnYWRkcmVzcy92YWxpZGF0ZS92MSc7XHJcbiAgcHJpdmF0ZSBwcm9tcHRzZXRFbmRwb2ludCA9ICdhZGRyZXNzL3Byb21wdHNldHMvdjEnO1xyXG4gIHByaXZhdGUgc3RlcEluRW5kcG9pbnQgPSAnYWRkcmVzcy9zdWdnZXN0aW9ucy9zdGVwaW4vdjEnO1xyXG4gIHByaXZhdGUgcmVmaW5lRW5kcG9pbnQgPSAnYWRkcmVzcy9zdWdnZXN0aW9ucy9yZWZpbmUvdjEnO1xyXG4gIHByaXZhdGUgZW5yaWNobWVudEVuZHBvaW50ID0gJ2VucmljaG1lbnQvdjInO1xyXG5cclxuICBwcml2YXRlIHdoYXQzV29yZENvdW50cmllcyA9IFsnR0JSJ107XHJcbiAgcHJpdmF0ZSB3aGF0M1dvcmRzS2V5d29yZCA9ICd3aGF0M3dvcmRzJztcclxuXHJcbiAgcHJpdmF0ZSBwaWNrbGlzdDogUGlja2xpc3Q7XHJcbiAgcHJpdmF0ZSBpbnB1dHM6IEhUTUxJbnB1dEVsZW1lbnRbXTtcclxuICBwcml2YXRlIGxhc3RTZWFyY2hUZXJtOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjdXJyZW50U2VhcmNoVGVybTogc3RyaW5nO1xyXG4gIHByaXZhdGUgc2hvdWxkVHJpZ2dlcldoYXQzV29yZHNFbnJpY2htZW50OiBib29sZWFuO1xyXG4gIHByaXZhdGUgY3VycmVudENvdW50cnlDb2RlOiBzdHJpbmc7XHJcbiAgcHJpdmF0ZSBjdXJyZW50RGF0YVNldDogc3RyaW5nIHwgc3RyaW5nW107XHJcbiAgcHJpdmF0ZSBoYXNTZWFyY2hJbnB1dEJlZW5SZXNldDogYm9vbGVhbjtcclxuICBwcml2YXRlIGNvdW50cnlDb2RlTWFwcGluZztcclxuICBwcml2YXRlIGxvb2t1cEZuO1xyXG4gIHByaXZhdGUga2V5VXBGbjtcclxuICBwcml2YXRlIGNoZWNrVGFiRm47XHJcbiAgcHJpdmF0ZSBpc1doYXQzV29yZHM6IGJvb2xlYW47XHJcblxyXG4gIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEFkZHJlc3NTZWFyY2hPcHRpb25zKSB7XHJcbiAgICB0aGlzLm9wdGlvbnMgPSB0aGlzLm1lcmdlRGVmYXVsdE9wdGlvbnMob3B0aW9ucyk7XHJcblxyXG4gICAgdGhpcy5ldmVudHMgPSBuZXcgRXZlbnRGYWN0b3J5KCk7XHJcblxyXG4gICAgdGhpcy5zZXR1cCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFRva2VuKHRva2VuOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMub3B0aW9ucy50b2tlbiA9IHRva2VuO1xyXG4gICAgdGhpcy5zZXR1cCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFNlYXJjaFR5cGUoc2VhcmNoVHlwZTogQWRkcmVzc1ZhbGlkYXRpb25Nb2RlKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlYXJjaFR5cGUgPSBzZWFyY2hUeXBlO1xyXG4gICAgdGhpcy5nbG9iYWxSZXNldCgpO1xyXG4gICAgdGhpcy5zZXRJbnB1dHMoKTtcclxuICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3Bvc3Qtc2VhcmNoLXR5cGUtY2hhbmdlJywgc2VhcmNoVHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RW5yaWNobWVudERhdGEoZ2xvYmFsQWRkcmVzc0tleTogc3RyaW5nKSB7XHJcbiAgICBpZiAoZ2xvYmFsQWRkcmVzc0tleSkge1xyXG4gICAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICAgIGNvdW50cnlfaXNvOiB0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZSxcclxuICAgICAgICBrZXlzOiB7XHJcbiAgICAgICAgICBnbG9iYWxfYWRkcmVzc19rZXk6IGdsb2JhbEFkZHJlc3NLZXlcclxuICAgICAgICB9LFxyXG4gICAgICAgIGF0dHJpYnV0ZXM6IHtcclxuICAgICAgICAgIGdlb2NvZGVzOiBbJ2xhdGl0dWRlJywgJ2xvbmdpdHVkZScsICdtYXRjaF9sZXZlbCddLFxyXG4gICAgICAgICAgd2hhdDN3b3JkczogdGhpcy5zaG91bGRUcmlnZ2VyV2hhdDNXb3Jkc0VucmljaG1lbnQgPyBcclxuICAgICAgICAgICAgWydsYXRpdHVkZScsICdsb25naXR1ZGUnLCAnbmFtZScsICdkZXNjcmlwdGlvbiddIDogbnVsbFxyXG4gICAgICAgIH1cclxuICAgICAgfTtcclxuICAgICAgXHJcbiAgICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3ByZS1lbnJpY2htZW50Jyk7XHJcbiAgICAgIHRoaXMucmVxdWVzdC5zZW5kKHRoaXMuYmFzZVVybCArIHRoaXMuZW5yaWNobWVudEVuZHBvaW50LCAnUE9TVCcsIHRoaXMuaGFuZGxlRW5yaWNobWVudFJlc3VsdC5iaW5kKHRoaXMpLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldHVwKCk6IHZvaWQge1xyXG4gICAgLy8gR2V0IHRva2VuIGFuZCBwcm9jZWVkIGlmIGl0J3MgcHJlc2VudFxyXG4gICAgaWYgKHRoaXMudG9rZW4pIHtcclxuICAgICAgdGhpcy5oYXNTZWFyY2hJbnB1dEJlZW5SZXNldCA9IHRydWU7XHJcblxyXG4gICAgICAvLyBJbnN0YW50aWF0ZSBhIG5ldyBSZXF1ZXN0IGNsYXNzIGZvciB1c2Ugd2hlbiBtYWtpbmcgQVBJIGNhbGxzXHJcbiAgICAgIHRoaXMucmVxdWVzdCA9IG5ldyBSZXF1ZXN0KHRoaXMpO1xyXG5cclxuICAgICAgLy8gU2V0IHRoZSBjb3VudHJ5IGxpc3RcclxuICAgICAgdGhpcy5zZXRDb3VudHJ5TGlzdCgpO1xyXG5cclxuICAgICAgLy8gU2V0IHRoZSBpbnB1dCBmaWVsZHMgZm9yIHRoaXMgc2VhcmNoIHR5cGVcclxuICAgICAgdGhpcy5zZXRJbnB1dHMoKTtcclxuXHJcbiAgICAgIC8vIFNldHVwIGEgcGlja2xpc3Qgb2JqZWN0XHJcbiAgICAgIHRoaXMuY3JlYXRlUGlja2xpc3QoKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIFRyaWdnZXIgYSA0MDEgVW5hdXRob3JpemVkIGV2ZW50IGlmIGEgdG9rZW4gZG9lcyBub3QgZXhpc3RcclxuICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmV2ZW50cy50cmlnZ2VyKCdyZXF1ZXN0LWVycm9yLTQwMScpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlRW5yaWNobWVudFJlc3VsdChyZXNwb25zZSkge1xyXG4gICAgdGhpcy5ldmVudHMudHJpZ2dlcigncG9zdC1lbnJpY2htZW50JywgcmVzcG9uc2UpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQYXJhbWV0ZXIobmFtZSk6IHN0cmluZyB7XHJcbiAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9bW10vLCAnXFxcXFsnKS5yZXBsYWNlKC9bXFxdXS8sICdcXFxcXScpO1xyXG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKCdbXFxcXD8mXScgKyBuYW1lICsgJz0oW14mI10qKScpLFxyXG4gICAgICByZXN1bHRzID0gcmVnZXguZXhlYyhsb2NhdGlvbi5zZWFyY2gpO1xyXG4gICAgcmV0dXJuIHJlc3VsdHMgPT09IG51bGwgPyAnJyA6IGRlY29kZVVSSUNvbXBvbmVudChyZXN1bHRzWzFdLnJlcGxhY2UoL1xcKy9nLCAnICcpKTtcclxuICB9XHJcblxyXG4gIC8vIFRyeSBhbmQgZ2V0IHRva2VuIGZyb20gdGhlIHF1ZXJ5IHN0cmluZyBpZiBpdCdzIG5vdCBhbHJlYWR5IHByb3ZpZGVkXHJcbiAgcHJpdmF0ZSBnZXQgdG9rZW4oKTogc3RyaW5nIHtcclxuICAgIGlmICghdGhpcy5vcHRpb25zLnRva2VuKSB7XHJcbiAgICAgIHRoaXMub3B0aW9ucy50b2tlbiA9IHRoaXMuZ2V0UGFyYW1ldGVyKCd0b2tlbicpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy50b2tlbjtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgbWVyZ2VEZWZhdWx0T3B0aW9ucyhjdXN0b21PcHRpb25zKTogQWRkcmVzc1NlYXJjaE9wdGlvbnMge1xyXG4gICAgY29uc3QgaW5zdGFuY2U6IEFkZHJlc3NTZWFyY2hPcHRpb25zID0gY3VzdG9tT3B0aW9ucyB8fCB7fTtcclxuXHJcbiAgICBpbnN0YW5jZS5lbmFibGVkID0gdHJ1ZTtcclxuICAgIHRoaXMuc2VhcmNoVHlwZSA9IGluc3RhbmNlLnNlYXJjaFR5cGUgfHwgZGVmYXVsdHMuc2VhcmNoVHlwZTtcclxuICAgIGluc3RhbmNlLmVuYWJsZVdoYXQzV29yZHMgPSBpbnN0YW5jZS5lbmFibGVXaGF0M1dvcmRzIHx8IGRlZmF1bHRzLmVuYWJsZVdoYXQzV29yZHM7XHJcbiAgICBpbnN0YW5jZS5zZWFyY2hUeXBlID0gaW5zdGFuY2Uuc2VhcmNoVHlwZSB8fCBkZWZhdWx0cy5zZWFyY2hUeXBlO1xyXG4gICAgaW5zdGFuY2UubGFuZ3VhZ2UgPSBpbnN0YW5jZS5sYW5ndWFnZSB8fCBkZWZhdWx0cy5sYW5ndWFnZTtcclxuICAgIGluc3RhbmNlLnVzZVNwaW5uZXIgPSBpbnN0YW5jZS51c2VTcGlubmVyIHx8IGRlZmF1bHRzLnVzZVNwaW5uZXI7XHJcbiAgICBpbnN0YW5jZS5hcHBseUZvY3VzID0gKHR5cGVvZiBpbnN0YW5jZS5hcHBseUZvY3VzICE9PSAndW5kZWZpbmVkJykgPyBpbnN0YW5jZS5hcHBseUZvY3VzIDogZGVmYXVsdHMuaW5wdXQuYXBwbHlGb2N1cztcclxuICAgIGluc3RhbmNlLnBsYWNlaG9sZGVyVGV4dCA9IGluc3RhbmNlLnBsYWNlaG9sZGVyVGV4dCB8fCBkZWZhdWx0cy5pbnB1dC5wbGFjZWhvbGRlclRleHQ7XHJcbiAgICBpbnN0YW5jZS5zZWFyY2hBZ2FpbiA9IGluc3RhbmNlLnNlYXJjaEFnYWluIHx8IHt9O1xyXG4gICAgaW5zdGFuY2Uuc2VhcmNoQWdhaW4udmlzaWJsZSA9ICh0eXBlb2YgaW5zdGFuY2Uuc2VhcmNoQWdhaW4udmlzaWJsZSAhPT0gJ3VuZGVmaW5lZCcpID8gaW5zdGFuY2Uuc2VhcmNoQWdhaW4udmlzaWJsZSA6IGRlZmF1bHRzLnNlYXJjaEFnYWluLnZpc2libGU7XHJcbiAgICBpbnN0YW5jZS5zZWFyY2hBZ2Fpbi50ZXh0ID0gaW5zdGFuY2Uuc2VhcmNoQWdhaW4udGV4dCB8fCBkZWZhdWx0cy5zZWFyY2hBZ2Fpbi50ZXh0O1xyXG4gICAgaW5zdGFuY2UuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lciA9IGluc3RhbmNlLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIgfHwgZGVmYXVsdHMuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lcjtcclxuICAgIGluc3RhbmNlLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuc2hvd0hlYWRpbmcgPSAodHlwZW9mIGluc3RhbmNlLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuc2hvd0hlYWRpbmcgIT09ICd1bmRlZmluZWQnKSA/IGluc3RhbmNlLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuc2hvd0hlYWRpbmcgOiBkZWZhdWx0cy5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnNob3dIZWFkaW5nO1xyXG4gICAgaW5zdGFuY2UuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5oZWFkaW5nVHlwZSA9IGluc3RhbmNlLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuaGVhZGluZ1R5cGUgfHwgZGVmYXVsdHMuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5oZWFkaW5nVHlwZTtcclxuICAgIGluc3RhbmNlLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIudmFsaWRhdGVkSGVhZGluZ1RleHQgPSBpbnN0YW5jZS5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnZhbGlkYXRlZEhlYWRpbmdUZXh0IHx8IGRlZmF1bHRzLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIudmFsaWRhdGVkSGVhZGluZ1RleHQ7XHJcbiAgICBpbnN0YW5jZS5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLm1hbnVhbEhlYWRpbmdUZXh0ID0gaW5zdGFuY2UuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5tYW51YWxIZWFkaW5nVGV4dCB8fCBkZWZhdWx0cy5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLm1hbnVhbEhlYWRpbmdUZXh0O1xyXG4gICAgaW5zdGFuY2UudXNlQWRkcmVzc0VudGVyZWRUZXh0ID0gaW5zdGFuY2UudXNlQWRkcmVzc0VudGVyZWRUZXh0IHx8IGRlZmF1bHRzLnVzZUFkZHJlc3NFbnRlcmVkVGV4dDtcclxuICAgIGluc3RhbmNlLmVsZW1lbnRzID0gaW5zdGFuY2UuZWxlbWVudHMgfHwge307XHJcblxyXG4gICAgcmV0dXJuIGluc3RhbmNlO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQcm9tcHRzZXQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50Q291bnRyeUNvZGUpIHtcclxuICAgICAgLy8gVXNpbmcgdGhlIGNvdW50cnkgY29kZSBhbmQgdGhlIHNlYXJjaCB0eXBlLCBsb29rdXAgd2hhdCB0aGUgcmVsZXZhbnQgZGF0YXNldCBjb2RlIHNob3VsZCBiZVxyXG4gICAgICB0aGlzLmN1cnJlbnREYXRhU2V0ID0gdGhpcy5sb29rdXBEYXRhc2V0Q29kZSgpO1xyXG4gICAgICBpZiAodGhpcy5jdXJyZW50RGF0YVNldCkge1xyXG5cclxuICAgICAgICAvLy8gVGVtcG9yYXJ5IG1lYXN1cmUgdW50aWwgdGhlIHByb21wdHNldCBlbmRwb2ludCBzdXBwb3J0cyBBdXRvY29tcGxldGUgYW5kIFZhbGlkYXRlXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLkFVVE9DT01QTEVURSkge1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLmhhbmRsZVByb21wdHNldFJlc3VsdCh7IHJlc3VsdDogeyBsaW5lczogW3sgZXhhbXBsZTogdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyVGV4dCwgcHJvbXB0OiAnQWRkcmVzcycsIHN1Z2dlc3RlZF9pbnB1dF9sZW5ndGg6IDE2MCB9XSB9IH0pKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLlZBTElEQVRFKSB7XHJcbiAgICAgICAgICBjb25zdCBsaW5lcyA9IFtcclxuICAgICAgICAgICAgeyBwcm9tcHQ6ICdBZGRyZXNzIGxpbmUgMScsIHN1Z2dlc3RlZF9pbnB1dF9sZW5ndGg6IDE2MCB9LFxyXG4gICAgICAgICAgICB7IHByb21wdDogJ0FkZHJlc3MgbGluZSAyJywgc3VnZ2VzdGVkX2lucHV0X2xlbmd0aDogMTYwIH0sXHJcbiAgICAgICAgICAgIHsgcHJvbXB0OiAnQWRkcmVzcyBsaW5lIDMnLCBzdWdnZXN0ZWRfaW5wdXRfbGVuZ3RoOiAxNjAgfSxcclxuICAgICAgICAgICAgeyBwcm9tcHQ6IHRoaXMucmVzdWx0LmNyZWF0ZUFkZHJlc3NMaW5lLmxhYmVsKCdsb2NhbGl0eScpLCBzdWdnZXN0ZWRfaW5wdXRfbGVuZ3RoOiAxNjAgfSxcclxuICAgICAgICAgICAgeyBwcm9tcHQ6IHRoaXMucmVzdWx0LmNyZWF0ZUFkZHJlc3NMaW5lLmxhYmVsKCdyZWdpb24nKSwgc3VnZ2VzdGVkX2lucHV0X2xlbmd0aDogMTYwIH0sXHJcbiAgICAgICAgICAgIHsgcHJvbXB0OiB0aGlzLnJlc3VsdC5jcmVhdGVBZGRyZXNzTGluZS5sYWJlbCgncG9zdGFsX2NvZGUnKSwgc3VnZ2VzdGVkX2lucHV0X2xlbmd0aDogMTYwIH1cclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuaGFuZGxlUHJvbXB0c2V0UmVzdWx0KHsgcmVzdWx0OiB7IGxpbmVzIH0gfSkpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgICAgIGNvdW50cnlfaXNvOiB0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZSxcclxuICAgICAgICAgIGRhdGFzZXRzOiBBcnJheS5pc0FycmF5KHRoaXMuY3VycmVudERhdGFTZXQpID8gdGhpcy5jdXJyZW50RGF0YVNldCA6IFt0aGlzLmN1cnJlbnREYXRhU2V0XSxcclxuICAgICAgICAgIHNlYXJjaF90eXBlOiB0aGlzLnNlYXJjaFR5cGUsXHJcbiAgICAgICAgICBwcm9tcHRfc2V0OiAnb3B0aW1hbCdcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3ByZS1wcm9tcHRzZXQtY2hlY2snKTtcclxuICAgICAgICB0aGlzLnJlcXVlc3Quc2VuZCh0aGlzLmJhc2VVcmwgKyB0aGlzLnByb21wdHNldEVuZHBvaW50LCAnUE9TVCcsIHRoaXMuaGFuZGxlUHJvbXB0c2V0UmVzdWx0LmJpbmQodGhpcyksIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb29rdXBEYXRhc2V0Q29kZSgpOiBzdHJpbmcgfCBzdHJpbmdbXSB7XHJcbiAgICBjb25zdCBpdGVtID0gZGF0YXNldENvZGVzLmZpbmQoZGF0YXNldCA9PiBkYXRhc2V0LmlzbzNDb2RlID09PSB0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZSAmJiBkYXRhc2V0LnNlYXJjaFR5cGUuaW5jbHVkZXModGhpcy5zZWFyY2hUeXBlKSk7XHJcbiAgICBpZiAoaXRlbSkge1xyXG4gICAgICByZXR1cm4gaXRlbS5kYXRhc2V0Q29kZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgaGFuZGxlUHJvbXB0c2V0UmVzdWx0KHJlc3BvbnNlKTogdm9pZCB7XHJcbiAgICAvLyBSZW1vdmUgYW55IGN1cnJlbnRseSBkaXNwbGF5ZWQgcGlja2xpc3Qgd2hlbiB0aGUgcHJvbXB0c2V0IGNoYW5nZXNcclxuICAgIHRoaXMucGlja2xpc3QuaGlkZSgpO1xyXG5cclxuICAgIC8vIFRyaWdnZXIgYSBuZXcgZXZlbnQgdG8gbm90aWZ5IHN1YnNjcmliZXJzXHJcbiAgICB0aGlzLmV2ZW50cy50cmlnZ2VyKCdwb3N0LXByb21wdHNldC1jaGVjaycsIHJlc3BvbnNlKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZXRJbnB1dHMoaW5wdXRzID0gdGhpcy5vcHRpb25zLmVsZW1lbnRzLmlucHV0cyk6IHZvaWQge1xyXG4gICAgLy8gSWYgYWRkcmVzcyBpbnB1dHMgZXhpc3QgdGhlbiByZWdpc3RlciB0aGVzZSB3aXRoIGV2ZW50IGxpc3RlbmVycywgb3RoZXJ3aXNlIGNhbGwgdGhlIHByb21wdHNldCBlbmRwb2ludCB0byByZXRyaWV2ZSB0aGVtXHJcbiAgICBpZiAoaW5wdXRzKSB7XHJcbiAgICAgIHRoaXMucmVnaXN0ZXJJbnB1dHMoaW5wdXRzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIC8vIE1ha2UgYW4gQVBJIGNhbGwgdG8gZ2V0IHRoZSBwcm9tcHRzZXQgZm9yIHRoaXMgY291bnRyeS9kYXRhc2V0L2VuZ2luZVxyXG4gICAgICB0aGlzLmdldFByb21wdHNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5TSU5HTEVMSU5FIHx8IHRoaXMuc2VhcmNoVHlwZSA9PT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLlZBTElEQVRFKSB7XHJcbiAgICAgIC8vIEJpbmQgYW4gZXZlbnQgbGlzdGVuZXIgb24gdGhlIGxvb2t1cCBidXR0b25cclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5lbGVtZW50cy5sb29rdXBCdXR0b24pIHtcclxuICAgICAgICB0aGlzLmxvb2t1cEZuID0gdGhpcy5zZWFyY2guYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLm9wdGlvbnMuZWxlbWVudHMubG9va3VwQnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5sb29rdXBGbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgcmVnaXN0ZXJJbnB1dHMoaW5wdXRzOiBIVE1MSW5wdXRFbGVtZW50W10pIHtcclxuICAgIC8vIElmIG5ldyBpbnB1dHMgaGF2ZSBiZWVuIHByb3ZpZGVkLCBlbnN1cmUgd2UgdXBkYXRlIHRoZSBlbGVtZW50cyBhcnJheSB0byBjYXB0dXJlIHRoZW1cclxuICAgIHRoaXMuaW5wdXRzID0gQXJyYXkuZnJvbShpbnB1dHMpO1xyXG5cclxuICAgIHRoaXMuaW5wdXRzLmZvckVhY2goaW5wdXQgPT4ge1xyXG4gICAgICAvLyBEaXNhYmxlIGF1dG9jb21wbGV0ZSBvbiB0aGUgZm9ybSBmaWVsZFxyXG4gICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ2F1dG9jb21wbGV0ZScsICduZXctcGFzc3dvcmQnKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5BVVRPQ09NUExFVEUpIHtcclxuICAgICAgICAvLyBCaW5kIGFuIGV2ZW50IGxpc3RlbmVyIG9uIHRoZSBpbnB1dFxyXG4gICAgICAgIHRoaXMua2V5VXBGbiA9IHRoaXMuc2VhcmNoLmJpbmQodGhpcyk7XHJcbiAgICAgICAgaW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigna2V5dXAnLCB0aGlzLmtleVVwRm4pO1xyXG4gICAgICAgIHRoaXMuY2hlY2tUYWJGbiA9IHRoaXMuY2hlY2tUYWIuYmluZCh0aGlzKTtcclxuICAgICAgICBpbnB1dC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5jaGVja1RhYkZuKTtcclxuICAgICAgICAvLyBTZXQgYSBwbGFjZWhvbGRlciBmb3IgdGhlIGlucHV0XHJcbiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsIHRoaXMub3B0aW9ucy5wbGFjZWhvbGRlclRleHQpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBCaW5kIGFuIGV2ZW50IGxpc3RlbmVyIG9uIHRoZSBpbnB1dCB0byBhbGxvdyB1c2VycyB0byB0cmF2ZXJzZSB1cCBhbmQgZG93biB0aGUgcGlja2xpc3QgdXNpbmcgdGhlIGtleWJvYXJkXHJcbiAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleXVwJywgdGhpcy5oYW5kbGVLZXlib2FyZEV2ZW50LmJpbmQodGhpcykpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgdGhpcy5jb3VudHJ5Q29kZU1hcHBpbmcgPSB0aGlzLm9wdGlvbnMuY291bnRyeUNvZGVNYXBwaW5nIHx8IHt9O1xyXG5cclxuICAgIC8vIEFwcGx5IGZvY3VzIHRvIHRoZSBmaXJzdCBpbnB1dFxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hcHBseUZvY3VzKSB7XHJcbiAgICAgIHRoaXMuaW5wdXRzWzBdLmZvY3VzKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNldENvdW50cnlMaXN0KCk6IHZvaWQge1xyXG4gICAgLy8gU2V0IHRoZSBpbml0aWFsIGNvdW50cnkgY29kZSBmcm9tIGVpdGhlciB0aGUgdmFsdWUgb2YgYSBjb3VudHJ5IGxpc3QgSFRNTCBlbGVtZW50IG9yIGEgc3RhdGljIGNvdW50cnkgY29kZVxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5lbGVtZW50cy5jb3VudHJ5TGlzdCkge1xyXG4gICAgICB0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZSA9IHRoaXMub3B0aW9ucy5lbGVtZW50cy5jb3VudHJ5TGlzdC52YWx1ZTtcclxuXHJcbiAgICAgIC8vIExpc3RlbiBmb3Igd2hlbiBhIGNvdW50cnkgaXMgY2hhbmdlZCBhbmQgY2FsbCB0aGUgcHJvbXB0c2V0IGVuZHBvaW50XHJcbiAgICAgIHRoaXMub3B0aW9ucy5lbGVtZW50cy5jb3VudHJ5TGlzdC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCB0aGlzLmhhbmRsZUNvdW50cnlMaXN0Q2hhbmdlLmJpbmQodGhpcykpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdGlvbnMuY291bnRyeUNvZGUpIHtcclxuICAgICAgdGhpcy5jdXJyZW50Q291bnRyeUNvZGUgPSB0aGlzLm9wdGlvbnMuY291bnRyeUNvZGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSBwcm92aWRlIGEgY291bnRyeSBjb2RlIG9yIGEgY291bnRyeSBsaXN0IGVsZW1lbnQnKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vIFdoZW4gYSBjb3VudHJ5IGZyb20gdGhlIGxpc3QgaXMgY2hhbmdlZCwgdXBkYXRlIHRoZSBjdXJyZW50IGNvdW50cnkgY29kZSBhbmQgY2FsbCB0aGUgcHJvbXB0c2V0IGVuZHBvaW50IGFnYWluXHJcbiAgcHJpdmF0ZSBoYW5kbGVDb3VudHJ5TGlzdENoYW5nZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuY3VycmVudENvdW50cnlDb2RlID0gdGhpcy5vcHRpb25zLmVsZW1lbnRzLmNvdW50cnlMaXN0LnZhbHVlO1xyXG4gICAgdGhpcy5nZXRQcm9tcHRzZXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2VuZXJhdGVTZWFyY2hEYXRhRm9yQXBpQ2FsbCgpOiBzdHJpbmcge1xyXG4gICAgLy8gSWYgYSBkYXRhc2V0IGNvZGUgaGFzbid0IGJlZW4gc2V0IHlldCwgdHJ5IGFuZCBsb29rIGl0IHVwXHJcbiAgICBpZiAoIXRoaXMuY3VycmVudERhdGFTZXQpIHtcclxuICAgICAgdGhpcy5jdXJyZW50RGF0YVNldCA9IHRoaXMubG9va3VwRGF0YXNldENvZGUoKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICBjb3VudHJ5X2lzbzogdGhpcy5jdXJyZW50Q291bnRyeUNvZGUsXHJcbiAgICAgIGNvbXBvbmVudHM6IHsgdW5zcGVjaWZpZWQ6IFt0aGlzLmN1cnJlbnRTZWFyY2hUZXJtXSB9LFxyXG4gICAgICBkYXRhc2V0czogQXJyYXkuaXNBcnJheSh0aGlzLmN1cnJlbnREYXRhU2V0KSA/IHRoaXMuY3VycmVudERhdGFTZXQgOiBbdGhpcy5jdXJyZW50RGF0YVNldF0sXHJcbiAgICAgIG1heF9zdWdnZXN0aW9uczogKHRoaXMub3B0aW9ucy5tYXhTdWdnZXN0aW9ucyB8fCB0aGlzLnBpY2tsaXN0Lm1heFN1Z2dlc3Rpb25zKVxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuU0lOR0xFTElORSB8fCB0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5WQUxJREFURSkge1xyXG4gICAgICBkYXRhWydvcHRpb25zJ10gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ2ZsYXR0ZW4nLFxyXG4gICAgICAgICAgVmFsdWU6ICd0cnVlJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ2ludGVuc2l0eScsXHJcbiAgICAgICAgICBWYWx1ZTogJ2Nsb3NlJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbmFtZTogJ3Byb21wdF9zZXQnLFxyXG4gICAgICAgICAgVmFsdWU6ICdkZWZhdWx0J1xyXG4gICAgICAgIH1cclxuICAgICAgXTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5TSU5HTEVMSU5FKSB7XHJcbiAgICAgICAgZGF0YVsnb3B0aW9ucyddLnB1c2goe1xyXG4gICAgICAgICAgbmFtZTogJ3NlYXJjaF90eXBlJyxcclxuICAgICAgICAgIFZhbHVlOiAnc2luZ2xlbGluZSdcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgaWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLlZBTElEQVRFKSB7XHJcbiAgICAgICAgZGF0YVsnbGF5b3V0cyddID0gWydkZWZhdWx0J107XHJcbiAgICAgICAgZGF0YVsnbGF5b3V0X2Zvcm1hdCddID0gJ2RlZmF1bHQnO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMub3B0aW9ucy5sb2NhdGlvbikge1xyXG4gICAgICBkYXRhWydsb2NhdGlvbiddID0gdGhpcy5vcHRpb25zLmxvY2F0aW9uO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZW5lcmF0ZUxvb2t1cERhdGFGb3JBcGlDYWxsKGlucHV0OiBzdHJpbmcsIHNob3VsZEdldFN1Z2dlc3Rpb25zOiBib29sZWFuKTogc3RyaW5nIHtcclxuICAgIC8vIElmIGEgZGF0YXNldCBjb2RlIGhhc24ndCBiZWVuIHNldCB5ZXQsIHRyeSBhbmQgbG9vayBpdCB1cFxyXG4gICAgaWYgKCF0aGlzLmN1cnJlbnREYXRhU2V0KSB7XHJcbiAgICAgIHRoaXMuY3VycmVudERhdGFTZXQgPSB0aGlzLmxvb2t1cERhdGFzZXRDb2RlKCk7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgZGF0YSA9IHtcclxuICAgICAgY291bnRyeV9pc286IHRoaXMuY3VycmVudENvdW50cnlDb2RlLFxyXG4gICAgICBkYXRhc2V0czogQXJyYXkuaXNBcnJheSh0aGlzLmN1cnJlbnREYXRhU2V0KSA/IHRoaXMuY3VycmVudERhdGFTZXQgOiBbdGhpcy5jdXJyZW50RGF0YVNldF0sXHJcbiAgICAgIG1heF9zdWdnZXN0aW9uczogKHRoaXMub3B0aW9ucy5tYXhTdWdnZXN0aW9ucyB8fCB0aGlzLnBpY2tsaXN0Lm1heFN1Z2dlc3Rpb25zKSxcclxuICAgICAga2V5OiB7XHJcbiAgICAgICAgdHlwZTogdGhpcy53aGF0M1dvcmRzS2V5d29yZCxcclxuICAgICAgICB2YWx1ZTogdGhpcy5nZXRXaGF0M1dvcmRzTG9va3VwVmFsdWUoaW5wdXQsIHNob3VsZEdldFN1Z2dlc3Rpb25zKSxcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldFdoYXQzV29yZHNMb29rdXBWYWx1ZShpbnB1dDogc3RyaW5nLCBzaG91bGRHZXRTdWdnZXN0aW9uczogYm9vbGVhbik6IHN0cmluZyB7XHJcbiAgICBpZiAoaW5wdXQuc3RhcnRzV2l0aCgnLy8vJykgJiYgc2hvdWxkR2V0U3VnZ2VzdGlvbnMpIHtcclxuICAgICAgaW5wdXQgPSBpbnB1dC5zbGljZSgzKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gaW5wdXQ7XHJcbiAgfVxyXG5cclxuICAvLyBBbGxvdyB0aGUga2V5Ym9hcmQgdG8gYmUgdXNlZCB0byBlaXRoZXIgdHJhdmVyc2UgdXAgYW5kIGRvd24gdGhlIHBpY2tsaXN0IGFuZCBzZWxlY3QgYW4gaXRlbSwgb3IgdHJpZ2dlciBhIG5ldyBzZWFyY2hcclxuICBwcml2YXRlIGhhbmRsZUtleWJvYXJkRXZlbnQoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcclxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgLy8gSGFuZGxlIGtleWJvYXJkIG5hdmlnYXRpb25cclxuICAgIGNvbnN0IGtleSA9IHRoaXMuZ2V0S2V5KGV2ZW50KTtcclxuXHJcbiAgICAvLyBJZiBhIHBpY2tsaXN0IGlzIHBvcHVsYXRlZCB0aGVuIHRyaWdnZXIgaXRzIGtleXVwIGV2ZW50IHRvIHNlbGVjdCBhbiBpdGVtXHJcbiAgICBpZiAodGhpcy5waWNrbGlzdC5zaXplKSB7XHJcbiAgICAgIGlmIChrZXkgPT09ICdBcnJvd1VwJyB8fCBrZXkgPT09ICdBcnJvd0Rvd24nIHx8IGtleSA9PT0gJ0VudGVyJykge1xyXG4gICAgICAgIHRoaXMucGlja2xpc3Qua2V5dXAoZXZlbnQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgLy8gT3RoZXJ3aXNlLCBlbmFibGUgcHJlc3NpbmcgJ2VudGVyJyB0byB0cmlnZ2VyIGEgbmV3IHNlYXJjaFxyXG4gICAgICBpZiAoa2V5ID09PSAnRW50ZXInKSB7XHJcbiAgICAgICAgdGhpcy5zZWFyY2goZXZlbnQpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gTWFpbiBmdW5jdGlvbiB0byBzZWFyY2ggZm9yIGFuIGFkZHJlc3MgZnJvbSBhbiBpbnB1dCBzdHJpbmdcclxuICBwcml2YXRlIHNlYXJjaChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xyXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtID0gdGhpcy5pbnB1dHMubWFwKGlucHV0ID0+IGlucHV0LnZhbHVlKS5qb2luKCcsJyk7XHJcblxyXG4gICAgLy8gR3JhYiB0aGUgY291bnRyeSBJU08gY29kZSBhbmQgKGlmIGl0IGlzIHByZXNlbnQpIHRoZSBkYXRhc2V0IG5hbWUgZnJvbSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgY291bnRyeUxpc3QgKGZvcm1hdDoge2NvdW50cnlJc29Db2RlfTt7ZGF0YXNldH0pXHJcbiAgICBjb25zdCBjdXJyZW50Q291bnRyeUluZm8gPSB0aGlzLmNvdW50cnlDb2RlTWFwcGluZ1t0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZV0gfHwgdGhpcy5jdXJyZW50Q291bnRyeUNvZGU7XHJcbiAgICBjb25zdCBjb3VudHJ5Q29kZUFuZERhdGFzZXQgPSBjdXJyZW50Q291bnRyeUluZm8uc3BsaXQoJzsnKTtcclxuXHJcbiAgICB0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZSA9IGNvdW50cnlDb2RlQW5kRGF0YXNldFswXTtcclxuICAgIGlmIChjb3VudHJ5Q29kZUFuZERhdGFzZXRbMV0pIHtcclxuICAgICAgdGhpcy5jdXJyZW50RGF0YVNldCA9IGNvdW50cnlDb2RlQW5kRGF0YXNldFsxXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyAoUmUtKXNldCB0aGUgcHJvcGVydHkgc3RhdGluZyB3aGV0aGVyIHRoZSBzZWFyY2ggaW5wdXQgaGFzIGJlZW4gcmVzZXQuXHJcbiAgICAvLyBUaGlzIGlzIG5lZWRlZCBmb3IgaW5zdGFuY2VzIHdoZW4gdGhlIHNlYXJjaCBpbnB1dCBpcyBhbHNvIGFuIGFkZHJlc3NcclxuICAgIC8vIG91dHB1dCBmaWVsZC4gQWZ0ZXIgYW4gYWRkcmVzcyBoYXMgYmVlbiByZXR1cm5lZCwgeW91IGRvbid0IHdhbnQgYSBuZXcgXHJcbiAgICAvLyBzZWFyY2ggYmVpbmcgdHJpZ2dlcmVkIHVudGlsIHRoZSBmaWVsZCBoYXMgYmVlbiBjbGVhcmVkLlxyXG4gICAgaWYgKHRoaXMuY3VycmVudFNlYXJjaFRlcm0gPT09ICcnKSB7XHJcbiAgICAgIHRoaXMuaGFzU2VhcmNoSW5wdXRCZWVuUmVzZXQgPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIENoZWNrIGlmIHNlYXJjaGluZyBpcyBwZXJtaXR0ZWRcclxuICAgIGlmICh0aGlzLmNhblNlYXJjaCgpKSB7XHJcbiAgICAgIC8vIEFib3J0IGFueSBvdXRzdGFuZGluZyByZXF1ZXN0c1xyXG4gICAgICBpZiAodGhpcy5yZXF1ZXN0LmN1cnJlbnRSZXF1ZXN0KSB7XHJcbiAgICAgICAgdGhpcy5yZXF1ZXN0LmN1cnJlbnRSZXF1ZXN0LmFib3J0KCk7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFJlZ2V4IHRoYXQgY2hlY2tzIGlmIHRoZSBpbnB1dCBpcyB0aGUgZm9ybWF0IGZvciBhIHdoYXQzd29yZHMgc2VhcmNoLiBFeDogLy8vYS5iLmNcclxuICAgICAgY29uc3QgcmVnZXggPSAvXlxcL3swLH0oPzpbXjAtOWB+IUAjJCVeJiooKStcXC1fPVt7XFxdfVxcXFx8JzwsLj4/L1wiOzrCo8KnwrrCqcKuXFxzXStbLu+9oeOAgu+9peODu++4kuGflNaJ4YGL25ThjaLgpaRdW14wLTlgfiFAIyQlXiYqKCkrXFwtXz1be1xcXX1cXFxcfCc8LC4+Py9cIjs6wqPCp8K6wqnCrlxcc10rWy7vvaHjgILvvaXjg7vvuJLhn5TWieGBi9uU4Y2i4KWkXVteMC05YH4hQCMkJV4mKigpK1xcLV89W3tcXF19XFxcXHwnPCwuPj8vXCI7OsKjwqfCusKpwq5cXHNdK3xbXjAtOWB+IUAjJCVeJiooKStcXC1fPVt7XFxdfVxcXFx8JzwsLj4/L1wiOzrCo8KnwrrCqcKuXFxzXSsoW1xcdTAwMjBcXHUwMEEwXVteMC05YH4hQCMkJV4mKigpK1xcLV89W3tcXF19XFxcXHwnPCwuPj8vXCI7OsKjwqfCusKpwq5cXHNdKyl7MSwzfVsu772h44CC772l44O777iS4Z+U1onhgYvblOGNouClpF1bXjAtOWB+IUAjJCVeJiooKStcXC1fPVt7XFxdfVxcXFx8JzwsLj4/L1wiOzrCo8KnwrrCqcKuXFxzXSsoW1xcdTAwMjBcXHUwMEEwXVteMC05YH4hQCMkJV4mKigpK1xcLV89W3tcXF19XFxcXHwnPCwuPj8vXCI7OsKjwqfCusKpwq5cXHNdKyl7MSwzfVsu772h44CC772l44O777iS4Z+U1onhgYvblOGNouClpF1bXjAtOWB+IUAjJCVeJiooKStcXC1fPVt7XFxdfVxcXFx8JzwsLj4/L1wiOzrCo8KnwrrCqcKuXFxzXSsoW1xcdTAwMjBcXHUwMEEwXVteMC05YH4hQCMkJV4mKigpK1xcLV89W3tcXF19XFxcXHwnPCwuPj8vXCI7OsKjwqfCusKpwq5cXHNdKyl7MSwzfSkkLztcclxuXHJcbiAgICAgIGlmIChyZWdleC50ZXN0KHRoaXMuY3VycmVudFNlYXJjaFRlcm0udHJpbSgpKSAmJiB0aGlzLm9wdGlvbnMuZW5hYmxlV2hhdDNXb3JkcyAmJiB0aGlzLndoYXQzV29yZENvdW50cmllcy5pbmRleE9mKHRoaXMuY3VycmVudENvdW50cnlDb2RlKSA+IC0xKSB7XHJcbiAgICAgICAgdGhpcy5pc1doYXQzV29yZHMgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFNlYXJjaFRlcm0gPSB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtLnRyaW0oKTtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIHtcclxuICAgICAgICB0aGlzLmlzV2hhdDNXb3JkcyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvdWxkVHJpZ2dlcldoYXQzV29yZHNFbnJpY2htZW50ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEZpcmUgYW4gZXZlbnQgYmVmb3JlIGEgc2VhcmNoIHRha2VzIHBsYWNlXHJcbiAgICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3ByZS1zZWFyY2gnLCB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtKTtcclxuXHJcbiAgICAgIC8vIENvbnN0cnVjdCB0aGUgbmV3IFNlYXJjaCBVUkwgYW5kIGRhdGFcclxuICAgICAgY29uc3QgZGF0YSA9IHRoaXMuaXNXaGF0M1dvcmRzID8gdGhpcy5nZW5lcmF0ZUxvb2t1cERhdGFGb3JBcGlDYWxsKHRoaXMuY3VycmVudFNlYXJjaFRlcm0sIHRydWUpIDogdGhpcy5nZW5lcmF0ZVNlYXJjaERhdGFGb3JBcGlDYWxsKCk7XHJcblxyXG4gICAgICAvLyBTdG9yZSB0aGUgbGFzdCBzZWFyY2ggdGVybVxyXG4gICAgICB0aGlzLmxhc3RTZWFyY2hUZXJtID0gdGhpcy5jdXJyZW50U2VhcmNoVGVybTtcclxuXHJcbiAgICAgIC8vIEhpZGUgdGhlIGlubGluZSBzZWFyY2ggc3Bpbm5lclxyXG4gICAgICB0aGlzLnNlYXJjaFNwaW5uZXIuaGlkZSgpO1xyXG5cclxuICAgICAgLy8gU2hvdyBhbiBpbmxpbmUgc3Bpbm5lciB3aGlsc3Qgc2VhcmNoaW5nXHJcbiAgICAgIHRoaXMuc2VhcmNoU3Bpbm5lci5zaG93KCk7XHJcblxyXG4gICAgICBsZXQgdXJsLCBoZWFkZXJzLCBjYWxsYmFjaztcclxuICAgICAgLy8gU2V0IHRoZSBBUEkgVVJMLCBoZWFkZXJzIGFuZCBjYWxsYmFjayBmdW5jdGlvbiBkZXBlbmRpbmcgb24gdGhlIHNlYXJjaCB0eXBlXHJcbiAgICAgIGlmICh0aGlzLmlzV2hhdDNXb3Jkcykge1xyXG4gICAgICAgIHVybCA9IHRoaXMuYmFzZVVybCArIHRoaXMubG9va3VwRW5kcG9pbnQ7XHJcbiAgICAgICAgaGVhZGVycyA9IFtdO1xyXG4gICAgICAgIGNhbGxiYWNrID0gdGhpcy5waWNrbGlzdC5zaG93V2hhdDNXb3JkcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB1cmwgPSB0aGlzLmJhc2VVcmwgKyAodGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuVkFMSURBVEUgPyB0aGlzLnZhbGlkYXRlRW5kcG9pbnQgOiB0aGlzLnNlYXJjaEVuZHBvaW50KTtcclxuICAgICAgICBoZWFkZXJzID0gdGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuVkFMSURBVEUgPyBbeyBrZXk6ICdBZGQtTWV0YWRhdGEnLCB2YWx1ZTogdHJ1ZSB9XSA6IFtdO1xyXG4gICAgICAgIGNhbGxiYWNrID0gdGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuVkFMSURBVEUgPyB0aGlzLnJlc3VsdC5oYW5kbGVWYWxpZGF0ZVJlc3BvbnNlIDogdGhpcy5waWNrbGlzdC5zaG93O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBJbml0aWF0ZSBuZXcgU2VhcmNoIHJlcXVlc3RcclxuICAgICAgdGhpcy5yZXF1ZXN0LnNlbmQodXJsLCAnUE9TVCcsIGNhbGxiYWNrLCBkYXRhLCBoZWFkZXJzKTtcclxuXHJcbiAgICB9IGVsc2UgaWYgKHRoaXMubGFzdFNlYXJjaFRlcm0gIT09IHRoaXMuY3VycmVudFNlYXJjaFRlcm0pIHtcclxuICAgICAgLy8gQ2xlYXIgdGhlIHBpY2tsaXN0IGlmIHRoZSBzZWFyY2ggdGVybSBpcyBjbGVhcmVkL2VtcHR5XHJcbiAgICAgIHRoaXMucGlja2xpc3QuaGlkZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8gSGVscGVyIG1ldGhvZCB0byByZXR1cm4gYSBjb25zaXN0ZW50IGtleSBuYW1lXHJcbiAgcHJpdmF0ZSBnZXRLZXkoeyBrZXkgfSk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKGtleSkge1xyXG4gICAgICBjYXNlICdEb3duJzpcclxuICAgICAgY2FzZSAnQXJyb3dEb3duJzpcclxuICAgICAgICByZXR1cm4gJ0Fycm93RG93bic7XHJcbiAgICAgIGNhc2UgJ1VwJzpcclxuICAgICAgY2FzZSAnQXJyb3dVcCc6XHJcbiAgICAgICAgcmV0dXJuICdBcnJvd1VwJztcclxuICAgICAgY2FzZSAnU3BhY2ViYXInOlxyXG4gICAgICBjYXNlICcgJzpcclxuICAgICAgICByZXR1cm4gJyAnO1xyXG4gICAgICBjYXNlICdFc2NhcGUnOlxyXG4gICAgICBjYXNlICdFc2MnOlxyXG4gICAgICAgIHJldHVybiAnRXNjYXBlJztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4ga2V5O1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBjYW5TZWFyY2goKTogYm9vbGVhbiB7XHJcbiAgICAvLyBJZiBzZWFyY2hpbmcgb24gdGhpcyBpbnN0YW5jZSBpcyBlbmFibGVkLCBhbmRcclxuICAgIHJldHVybiAodGhpcy5vcHRpb25zLmVuYWJsZWQgJiZcclxuICAgICAgLy8gSWYgc2VhcmNoIHRlcm0gaXMgbm90IGVtcHR5LCBhbmRcclxuICAgICAgdGhpcy5jdXJyZW50U2VhcmNoVGVybSAhPT0gJycgJiZcclxuICAgICAgLy8gSWYgdGhlIHNlYXJjaCB0ZXJtIGlzIGF0IGxlYXN0IDQgY2hhcmFjdGVyc1xyXG4gICAgICB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtLmxlbmd0aCA+IDMgJiZcclxuICAgICAgLy8gSWYgc2VhcmNoIHRlcm0gaXMgbm90IHRoZSBzYW1lIGFzIHByZXZpb3VzIHNlYXJjaCB0ZXJtLCBhbmRcclxuICAgICAgdGhpcy5sYXN0U2VhcmNoVGVybSAhPT0gdGhpcy5jdXJyZW50U2VhcmNoVGVybSAmJlxyXG4gICAgICAvLyBJZiB0aGUgY291bnRyeSBpcyBub3QgZW1wdHksIGFuZFxyXG4gICAgICB0aGlzLmN1cnJlbnRDb3VudHJ5Q29kZSAmJlxyXG4gICAgICAvLyBJZiBzZWFyY2ggaW5wdXQgaGFzIGJlZW4gcmVzZXQgKGlmIGFwcGxpY2FibGUpXHJcbiAgICAgIHRoaXMuaGFzU2VhcmNoSW5wdXRCZWVuUmVzZXQgPT09IHRydWUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBwb3dlcmVkQnlMb2dvOiBQb3dlcmVkQnlMb2dvID0ge1xyXG4gICAgZWxlbWVudDogbnVsbCxcclxuICAgIC8vIENyZWF0ZSBhIFwiUG93ZXJlZCBieSBFeHBlcmlhblwiIGZvb3RlclxyXG4gICAgY3JlYXRlKHBpY2tsaXN0KSB7XHJcbiAgICAgIGNvbnN0IGl0ZW0gPSB7XHJcbiAgICAgICAgdGV4dDogYCR7dGhpcy5zdmd9IDxlbT5Qb3dlcmVkIGJ5IEV4cGVyaWFuPC9lbT5gLFxyXG4gICAgICAgIGZvcm1hdDogJydcclxuICAgICAgfTtcclxuICAgICAgY29uc3QgbGlzdEl0ZW0gPSBwaWNrbGlzdC5jcmVhdGVMaXN0SXRlbShpdGVtKTtcclxuICAgICAgbGlzdEl0ZW0uY2xhc3NMaXN0LmFkZCgncG93ZXJlZC1ieS1leHBlcmlhbicpO1xyXG4gICAgICBwaWNrbGlzdC5saXN0LnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobGlzdEl0ZW0pO1xyXG4gICAgICByZXR1cm4gbGlzdEl0ZW07XHJcbiAgICB9LFxyXG4gICAgLy8gRGVzdHJveSB0aGUgXCJQb3dlcmVkIGJ5IEV4cGVyaWFuXCIgZm9vdGVyXHJcbiAgICBkZXN0cm95KHBpY2tsaXN0KSB7XHJcbiAgICAgIGlmICh0aGlzLmVsZW1lbnQpIHtcclxuICAgICAgICBwaWNrbGlzdC5saXN0LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5lbGVtZW50KTtcclxuICAgICAgICB0aGlzLmVsZW1lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzdmc6IGA8c3ZnIGNsYXNzPVwiZXhwZXJpYW4tbG9nb1wiIHZlcnNpb249XCIxLjFcIiB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgeG1sbnM6eGxpbms9XCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIgeD1cIjBweFwiIHk9XCIwcHhcIiB2aWV3Qm94PVwiMCAwIDEyMCAxMjBcIiBzdHlsZT1cIlwiIHhtbDpzcGFjZT1cInByZXNlcnZlXCIgcm9sZT1cImltZ1wiIGFyaWEtbGFiZWw9XCJQb3dlcmVkIGJ5IEV4cGVyaWFuXCI+XHJcbiAgICAgICAgICAgIDx0aXRsZT5FeHBlcmlhbiBsb2dvPC90aXRsZT5cclxuICAgICAgICAgICAgPGc+XHJcbiAgICAgICAgICAgICAgICA8cGF0aCBzdHlsZT1cImZpbGw6ICMwRTZFQjZcIiBkPVwiTTU2LjEsMjdoLTEzYy0zLjksMC03LTMuMS03LTdWN2MwLTMuOSwzLjEtNyw3LTdoMTNjMy45LDAsNywzLjEsNyw3djEzQzYzLjEsMjMuOCw2MCwyNyw1Ni4xLDI3XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9XCJmaWxsOiAjNzIyMTdCXCIgZD1cIk0yMi41LDU2LjFINy45Yy00LjMsMC03LjktMy41LTcuOS03LjlWMzMuNmMwLTQuMywzLjUtNy45LDcuOS03LjloMTQuNmM0LjMsMCw3LjksMy41LDcuOSw3Ljl2MTQuNkMzMC40LDUyLjYsMjYuOCw1Ni4xLDIyLjUsNTYuMVwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0eWxlPVwiZmlsbDogI0IxMjM4NFwiIGQ9XCJNMjEuMSw4Ni40aC04LjljLTIuNywwLTQuOC0yLjEtNC44LTQuOHYtOC45YzAtMi43LDIuMi00LjgsNC44LTQuOGg4LjljMi43LDAsNC44LDIuMiw0LjgsNC44djguOUMyNS45LDg0LjMsMjMuNyw4Ni40LDIxLjEsODYuNFwiPjwvcGF0aD5cclxuICAgICAgICAgICAgICAgIDxwYXRoIHN0eWxlPVwiZmlsbDogI0U3Mjg4N1wiIGQ9XCJNNDUuMSwxMTQuN0gzNC41Yy0zLjEsMC01LjctMi41LTUuNy01LjdWOTguNGMwLTMuMSwyLjUtNS43LDUuNy01LjdoMTAuNmMzLjEsMCw1LjcsMi41LDUuNyw1LjdWMTA5QzUwLjcsMTEyLjEsNDguMiwxMTQuNyw0NS4xLDExNC43XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9XCJmaWxsOiAjRTcyODg3XCIgZD1cIk04My44LDMyLjNoLTcuM2MtMi4yLDAtMy45LTEuOC0zLjktMy45di03LjNjMC0yLjIsMS44LTMuOSwzLjktMy45aDcuM2MyLjIsMCwzLjksMS44LDMuOSwzLjl2Ny4zQzg3LjcsMzAuNSw4NS45LDMyLjMsODMuOCwzMi4zXCI+PC9wYXRoPlxyXG4gICAgICAgICAgICAgICAgPHBhdGggc3R5bGU9XCJmaWxsOiAjMDA0NjkxXCIgZD1cIk04MS43LDYxLjhDODEuNSw1MS4xLDcyLDQyLDYwLjcsNDJDNDksNDIsMzkuNiw1MS4zLDM5LjYsNjIuOUMzOS42LDc0LjYsNDksODQsNjAuNyw4NGM1LjYsMCwxMC44LTIuMiwxNC42LTUuOWMwLjctMC43LDEuMi0xLjYsMS4yLTIuNmMwLTEuOS0xLjYtMy41LTMuNS0zLjVjLTEuMSwwLTIsMC43LTIuOCwxLjRjLTIuNCwyLjUtNS45LDMuNy05LjUsMy43Yy03LDAtMTIuNy00LjgtMTMuOS0xMS41aDMxLjVjMCwwLDAsMCwwLjEsMGgwLjFjMC4xLDAsMC4xLDAsMC4yLDBjMC4xLDAsMC4yLDAsMC40LTAuMUM4MC40LDY1LDgxLjcsNjMuNiw4MS43LDYxLjh6IE02MC43LDQ4LjljNi4zLDAsMTEuNiw0LjEsMTMuNCw5LjdINDcuM0M0OS4xLDUzLDU0LjMsNDguOSw2MC43LDQ4Ljl6XCI+PC9wYXRoPlxyXG4gICAgICAgICAgICA8L2c+XHJcbiAgICAgICAgPC9zdmc+YFxyXG4gIH07XHJcblxyXG4gIHByaXZhdGUgY3JlYXRlUGlja2xpc3QoKSB7XHJcbiAgICAvLyBJbnN0YW50aWF0ZSBhIG5ldyBQaWNrbGlzdCBjbGFzcyBhbmQgc2V0IHRoZSBwcm9wZXJ0aWVzIGJlbG93XHJcbiAgICB0aGlzLnBpY2tsaXN0ID0gbmV3IFBpY2tsaXN0KCk7XHJcblxyXG4gICAgLy8gU2V0IGluaXRpYWwgbWF4IHNpemVcclxuICAgIHRoaXMucGlja2xpc3QubWF4U3VnZ2VzdGlvbnMgPSAyNTtcclxuICAgIC8vIFRhYiBjb3VudCB1c2VkIGZvciBrZXlib2FyZCBuYXZpZ2F0aW9uXHJcbiAgICB0aGlzLnBpY2tsaXN0LnRhYkNvdW50ID0gLTE7XHJcbiAgICAvLyBSZW5kZXIgYSBwaWNrbGlzdCBvZiBzZWFyY2ggcmVzdWx0c1xyXG5cclxuICAgIHRoaXMucGlja2xpc3Quc2hvdyA9IChpdGVtczogU2VhcmNoUmVzcG9uc2UpID0+IHtcclxuICAgICAgLy8gU3RvcmUgdGhlIHBpY2tsaXN0IGl0ZW1zXHJcbiAgICAgIHRoaXMucGlja2xpc3QuaXRlbXMgPSBpdGVtcz8ucmVzdWx0LnN1Z2dlc3Rpb25zO1xyXG5cclxuICAgICAgdGhpcy5waWNrbGlzdC5oYW5kbGVDb21tb25TaG93UGlja2xpc3RMb2dpYygpO1xyXG5cclxuICAgICAgaWYgKHRoaXMucGlja2xpc3QuaXRlbXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyBJZiBhIHBpY2tsaXN0IG5lZWRzIFwicmVmaW5pbmdcIiB0aGVuIHByZXBlbmQgYSB0ZXh0Ym94IHRvIGFsbG93IHRoZSB1c2VyIHRvIGVudGVyIHRoZWlyIHNlbGVjdGlvblxyXG4gICAgICAgIGlmICh0aGlzLnBpY2tsaXN0LnJlZmluZS5pc05lZWRlZChpdGVtcykpIHtcclxuICAgICAgICAgIHRoaXMucGlja2xpc3QucmVmaW5lLmNyZWF0ZUlucHV0KGl0ZW1zLnJlc3VsdC5zdWdnZXN0aW9uc19wcm9tcHQsIGl0ZW1zLnJlc3VsdC5zdWdnZXN0aW9uc19rZXkpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLlZBTElEQVRFKSB7XHJcbiAgICAgICAgICB0aGlzLnBpY2tsaXN0LmRpc3BsYXlTdWdnZXN0aW9uc0hlYWRlcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGFuZCBzaG93IHJlc3VsdHNcclxuICAgICAgICB0aGlzLnBpY2tsaXN0Lml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgaXRlbS9yb3cgaW4gdGhlIHBpY2tsaXN0XHJcbiAgICAgICAgICBjb25zdCBsaXN0SXRlbSA9IHRoaXMucGlja2xpc3QuY3JlYXRlTGlzdEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICB0aGlzLnBpY2tsaXN0Lmxpc3QuYXBwZW5kQ2hpbGQobGlzdEl0ZW0pO1xyXG5cclxuICAgICAgICAgIC8vIExpc3RlbiBmb3Igc2VsZWN0aW9uIG9uIHRoaXMgaXRlbVxyXG4gICAgICAgICAgdGhpcy5waWNrbGlzdC5saXN0ZW4obGlzdEl0ZW0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuVkFMSURBVEUpIHtcclxuICAgICAgICAgIHRoaXMucGlja2xpc3QuZGlzcGxheVVzZUFkZHJlc3NFbnRlcmVkRm9vdGVyKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLnBpY2tsaXN0LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LmhhbmRsZUVtcHR5UGlja2xpc3QoaXRlbXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBBZGQgYSBcIlBvd2VyZWQgYnkgRXhwZXJpYW5cIiBsb2dvIHRvIHRoZSBwaWNrbGlzdCBmb290ZXJcclxuICAgICAgdGhpcy5wb3dlcmVkQnlMb2dvLmVsZW1lbnQgPSB0aGlzLnBvd2VyZWRCeUxvZ28uZWxlbWVudCB8fCB0aGlzLnBvd2VyZWRCeUxvZ28uY3JlYXRlKHRoaXMucGlja2xpc3QpO1xyXG5cclxuICAgICAgLy8gRmlyZSBhbiBldmVudCBhZnRlciBwaWNrbGlzdCBpcyBjcmVhdGVkXHJcbiAgICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3Bvc3QtcGlja2xpc3QtY3JlYXRlJywgdGhpcy5waWNrbGlzdC5pdGVtcyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMucGlja2xpc3Quc2hvd1doYXQzV29yZHMgPSAoaXRlbXM6IExvb2t1cFczV1Jlc3BvbnNlKSA9PiB7XHJcbiAgICAgIC8vIFN0b3JlIHRoZSBwaWNrbGlzdCBpdGVtc1xyXG4gICAgICB0aGlzLnBpY2tsaXN0LndoYXQzd29yZHNJdGVtcyA9IGl0ZW1zPy5yZXN1bHQuc3VnZ2VzdGlvbnM7XHJcblxyXG4gICAgICB0aGlzLnBpY2tsaXN0LmhhbmRsZUNvbW1vblNob3dQaWNrbGlzdExvZ2ljKCk7XHJcblxyXG4gICAgICBpZiAodGhpcy5waWNrbGlzdC53aGF0M3dvcmRzSXRlbXM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAvLyBJdGVyYXRlIG92ZXIgYW5kIHNob3cgcmVzdWx0c1xyXG4gICAgICAgIHRoaXMucGlja2xpc3Qud2hhdDN3b3Jkc0l0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgaXRlbS9yb3cgaW4gdGhlIHBpY2tsaXN0XHJcbiAgICAgICAgICBjb25zdCBsaXN0SXRlbSA9IHRoaXMucGlja2xpc3QuY3JlYXRlV2hhdDNXb3Jkc0xpc3RJdGVtKGl0ZW0pO1xyXG4gICAgICAgICAgdGhpcy5waWNrbGlzdC5saXN0LmFwcGVuZENoaWxkKGxpc3RJdGVtKTtcclxuXHJcbiAgICAgICAgICAvLyBMaXN0ZW4gZm9yIHNlbGVjdGlvbiBvbiB0aGlzIGl0ZW1cclxuICAgICAgICAgIHRoaXMucGlja2xpc3QubGlzdGVuKGxpc3RJdGVtKTtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC5oYW5kbGVFbXB0eVBpY2tsaXN0KGl0ZW1zKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gQWRkIGEgXCJQb3dlcmVkIGJ5IEV4cGVyaWFuXCIgbG9nbyB0byB0aGUgcGlja2xpc3QgZm9vdGVyXHJcbiAgICAgIHRoaXMucG93ZXJlZEJ5TG9nby5lbGVtZW50ID0gdGhpcy5wb3dlcmVkQnlMb2dvLmVsZW1lbnQgfHwgdGhpcy5wb3dlcmVkQnlMb2dvLmNyZWF0ZSh0aGlzLnBpY2tsaXN0KTtcclxuXHJcbiAgICAgIC8vIEZpcmUgYW4gZXZlbnQgYWZ0ZXIgcGlja2xpc3QgaXMgY3JlYXRlZFxyXG4gICAgICB0aGlzLmV2ZW50cy50cmlnZ2VyKCdwb3N0LXBpY2tsaXN0LWNyZWF0ZScsIHRoaXMucGlja2xpc3QuaXRlbXMpO1xyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnBpY2tsaXN0LnNob3dMb29rdXAgPSAoaXRlbXM6IExvb2t1cFYyUmVzcG9uc2UpID0+IHtcclxuICAgICAgLy8gU2V0IGlzV2hhdDNXb3JkcyB0byBcImZhbHNlXCIgYXMgd2UgYXJlIG5vIGxvbmdlciBzaG93aW5nIHdoYXQzd29yZHMgYWRkcmVzc2VzIFxyXG4gICAgICB0aGlzLmlzV2hhdDNXb3JkcyA9IGZhbHNlO1xyXG5cclxuICAgICAgLy8gU3RvcmUgdGhlIHBpY2tsaXN0IGl0ZW1zXHJcbiAgICAgIHRoaXMucGlja2xpc3QubG9va3VwSXRlbXMgPSBpdGVtcz8ucmVzdWx0LmFkZHJlc3NlcztcclxuXHJcbiAgICAgIHRoaXMucGlja2xpc3QuaGFuZGxlQ29tbW9uU2hvd1BpY2tsaXN0TG9naWMoKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLnBpY2tsaXN0Lmxvb2t1cEl0ZW1zPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy8gSXRlcmF0ZSBvdmVyIGFuZCBzaG93IHJlc3VsdHNcclxuICAgICAgICB0aGlzLnBpY2tsaXN0Lmxvb2t1cEl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcbiAgICAgICAgICAvLyBDcmVhdGUgYSBuZXcgaXRlbS9yb3cgaW4gdGhlIHBpY2tsaXN0XHJcbiAgICAgICAgICBjb25zdCBsaXN0SXRlbSA9IHRoaXMucGlja2xpc3QuY3JlYXRlTG9va3VwTGlzdEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgICB0aGlzLnBpY2tsaXN0Lmxpc3QuYXBwZW5kQ2hpbGQobGlzdEl0ZW0pO1xyXG5cclxuICAgICAgICAgIC8vIExpc3RlbiBmb3Igc2VsZWN0aW9uIG9uIHRoaXMgaXRlbVxyXG4gICAgICAgICAgdGhpcy5waWNrbGlzdC5saXN0ZW4obGlzdEl0ZW0pO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLnBpY2tsaXN0LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LmhhbmRsZUVtcHR5UGlja2xpc3QoaXRlbXMpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBBZGQgYSBcIlBvd2VyZWQgYnkgRXhwZXJpYW5cIiBsb2dvIHRvIHRoZSBwaWNrbGlzdCBmb290ZXJcclxuICAgICAgdGhpcy5wb3dlcmVkQnlMb2dvLmVsZW1lbnQgPSB0aGlzLnBvd2VyZWRCeUxvZ28uZWxlbWVudCB8fCB0aGlzLnBvd2VyZWRCeUxvZ28uY3JlYXRlKHRoaXMucGlja2xpc3QpO1xyXG5cclxuICAgICAgLy8gRmlyZSBhbiBldmVudCBhZnRlciBwaWNrbGlzdCBpcyBjcmVhdGVkXHJcbiAgICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3Bvc3QtcGlja2xpc3QtY3JlYXRlJywgdGhpcy5waWNrbGlzdC5pdGVtcyk7XHJcbiAgICB9O1xyXG5cclxuICAgIHRoaXMucGlja2xpc3QuaGFuZGxlQ29tbW9uU2hvd1BpY2tsaXN0TG9naWMgPSAoKSA9PiB7XHJcbiAgICAgIC8vIFJlc2V0IGFueSBwcmV2aW91c2x5IHNlbGVjdGVkIGN1cnJlbnQgaXRlbVxyXG4gICAgICB0aGlzLnBpY2tsaXN0LmN1cnJlbnRJdGVtID0gbnVsbDtcclxuXHJcbiAgICAgIC8vIFVwZGF0ZSBwaWNrbGlzdCBzaXplXHJcbiAgICAgIHRoaXMucGlja2xpc3Quc2l6ZSA9IHRoaXMucGlja2xpc3QuaXRlbXM/Lmxlbmd0aDtcclxuXHJcbiAgICAgIC8vIFJlc2V0IHRoZSBwaWNrbGlzdCB0YWIgY291bnQgKHVzZWQgZm9yIGtleWJvYXJkIG5hdmlnYXRpb24pXHJcbiAgICAgIHRoaXMucGlja2xpc3QucmVzZXRUYWJDb3VudCgpO1xyXG5cclxuICAgICAgLy8gSGlkZSB0aGUgaW5saW5lIHNlYXJjaCBzcGlubmVyXHJcbiAgICAgIHRoaXMuc2VhcmNoU3Bpbm5lci5oaWRlKCk7XHJcblxyXG4gICAgICAvLyBHZXQvQ3JlYXRlIHBpY2tsaXN0IGNvbnRhaW5lciBlbGVtZW50XHJcbiAgICAgIHRoaXMucGlja2xpc3QubGlzdCA9IHRoaXMucGlja2xpc3QubGlzdCB8fCB0aGlzLnBpY2tsaXN0LmNyZWF0ZUxpc3QoKTtcclxuXHJcbiAgICAgIC8vIEVuc3VyZSBwcmV2aW91cyByZXN1bHRzIGFyZSBjbGVhcmVkXHJcbiAgICAgIHRoaXMucGlja2xpc3QubGlzdC5pbm5lckhUTUwgPSAnJztcclxuICAgICAgdGhpcy5waWNrbGlzdC51c2VBZGRyZXNzRW50ZXJlZC5kZXN0cm95KCk7XHJcblxyXG4gICAgICAvLyBGaXJlIGFuIGV2ZW50IGJlZm9yZSBwaWNrbGlzdCBpcyBjcmVhdGVkXHJcbiAgICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3ByZS1waWNrbGlzdC1jcmVhdGUnLCB0aGlzLnBpY2tsaXN0Lml0ZW1zKTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gUmVtb3ZlIHRoZSBwaWNrbGlzdFxyXG4gICAgdGhpcy5waWNrbGlzdC5oaWRlID0gKCkgPT4ge1xyXG4gICAgICAvLyBDbGVhciB0aGUgY3VycmVudCBwaWNrbGlzdCBpdGVtXHJcbiAgICAgIHRoaXMucGlja2xpc3QuY3VycmVudEl0ZW0gPSBudWxsO1xyXG4gICAgICAvLyBSZW1vdmUgdGhlIFwidXNlIGFkZHJlc3MgZW50ZXJlZFwiIG9wdGlvbiB0b29cclxuICAgICAgdGhpcy5waWNrbGlzdC51c2VBZGRyZXNzRW50ZXJlZC5kZXN0cm95KCk7XHJcbiAgICAgIC8vIFJlbW92ZSB0aGUgXCJQb3dlcmVkIGJ5IEV4cGVyaWFuXCIgbG9nb1xyXG4gICAgICB0aGlzLnBvd2VyZWRCeUxvZ28uZGVzdHJveSh0aGlzLnBpY2tsaXN0KTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmlucHV0cykge1xyXG4gICAgICAgIC8vIFJlbW92ZSB0aGUgY2xhc3MgZGVub3RpbmcgYSBwaWNrbGlzdCAtIGlmIFNpbmdsZWxpbmUgbW9kZSBpcyB1c2VkLCB0aGVuIGl0IGlzIHRoZSBsYXN0IGlucHV0IGZpZWxkLCBvdGhlcndpc2UgdXNlIHRoZSBmaXJzdCBvbmVcclxuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHRoaXMuc2VhcmNoVHlwZSA9PT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLlNJTkdMRUxJTkUgPyB0aGlzLmlucHV0cy5sZW5ndGggLSAxIDogMDtcclxuICAgICAgICB0aGlzLmlucHV0c1twb3NpdGlvbl0uY2xhc3NMaXN0LnJlbW92ZSgnc2hvd2luZy1zdWdnZXN0aW9ucycpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAvLyBSZW1vdmUgdGhlIG1haW4gcGlja2xpc3QgY29udGFpbmVyXHJcbiAgICAgIGlmICh0aGlzLnBpY2tsaXN0Lmxpc3QpIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LmNvbnRhaW5lci5yZW1vdmUoKTtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0Lmxpc3QgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5waWNrbGlzdC5oYW5kbGVFbXB0eVBpY2tsaXN0ID0gKGl0ZW1zOiBTZWFyY2hSZXNwb25zZSB8IExvb2t1cFczV1Jlc3BvbnNlIHwgTG9va3VwVjJSZXNwb25zZSkgPT4ge1xyXG4gICAgICAvLyBDcmVhdGUgYSBuZXcgaXRlbS9yb3cgaW4gdGhlIHBpY2tsaXN0IHNob3dpbmcgXCJObyBtYXRjaGVzXCIgdGhhdCBhbGxvd3MgdGhlIFwidXNlIGFkZHJlc3MgZW50ZXJlZFwiIG9wdGlvblxyXG4gICAgICB0aGlzLnBpY2tsaXN0LnVzZUFkZHJlc3NFbnRlcmVkLmVsZW1lbnQgPSB0aGlzLnBpY2tsaXN0LnVzZUFkZHJlc3NFbnRlcmVkLmVsZW1lbnQgfHwgdGhpcy5waWNrbGlzdC51c2VBZGRyZXNzRW50ZXJlZC5jcmVhdGUoaXRlbXMucmVzdWx0Py5jb25maWRlbmNlKTtcclxuXHJcbiAgICAgIHRoaXMucGlja2xpc3Quc2Nyb2xsSW50b1ZpZXdJZk5lZWRlZCgpO1xyXG5cclxuICAgICAgLy8gUHJvdmlkZSBpbXBsZW1lbnRpbmcgc2VhcmNoIHR5cGVzIHdpdGggYSBtZWFucyBvZiBpbnZva2luZyBhIGN1c3RvbSBjYWxsYmFja1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMucGlja2xpc3QuaGFuZGxlRW1wdHlQaWNrbGlzdENhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC5oYW5kbGVFbXB0eVBpY2tsaXN0Q2FsbGJhY2soKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBQcmVwZW5kIGEgdGl0bGUgYmVmb3JlIHRoZSBzdWdnZXN0aW9uc1xyXG4gICAgdGhpcy5waWNrbGlzdC5kaXNwbGF5U3VnZ2VzdGlvbnNIZWFkZXIgPSAoKSA9PiB7XHJcbiAgICAgIGNvbnN0IHRpdGxlRGl2ID0gKDxIVE1MRWxlbWVudD5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGlja2xpc3Qtc3VnZ2VzdGlvbnMtaGVhZGVyJykgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xyXG4gICAgICB0aXRsZURpdi5jbGFzc0xpc3QuYWRkKCdwaWNrbGlzdC1zdWdnZXN0aW9ucy1oZWFkZXInKTtcclxuICAgICAgdGl0bGVEaXYuaW5uZXJUZXh0ID0gJ1N1Z2dlc3Rpb25zOic7XHJcbiAgICAgIHRoaXMucGlja2xpc3QubGlzdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aXRsZURpdiwgdGhpcy5waWNrbGlzdC5saXN0KTtcclxuICAgIH07XHJcblxyXG4gICAgLy8gQXBwZW5kIGEgZm9vdGVyIGF0IHRoZSBib3R0b20gb2YgdGhlIHBpY2tsaXN0IHByb3ZpZGluZyBhbiBvcHRpb24gdG8gXCJ1c2UgYWRkcmVzcyBlbnRlcmVkXCJcclxuICAgIHRoaXMucGlja2xpc3QuZGlzcGxheVVzZUFkZHJlc3NFbnRlcmVkRm9vdGVyID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBjb250YWluZXJEaXYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGlja2xpc3QtdXNlLWVudGVyZWQtY29udGFpbmVyJykgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRhaW5lckRpdi5jbGFzc0xpc3QuYWRkKCdwaWNrbGlzdC11c2UtZW50ZXJlZC1jb250YWluZXInKTtcclxuICAgICAgdGhpcy5waWNrbGlzdC5saXN0LnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGNvbnRhaW5lckRpdiwgdGhpcy5waWNrbGlzdC5saXN0Lm5leHRFbGVtZW50U2libGluZyk7XHJcblxyXG4gICAgICBjb25zdCB0aXRsZURpdiA9ICg8SFRNTEVsZW1lbnQ+ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBpY2tsaXN0LXVzZS1lbnRlcmVkLWhlYWRlcicpIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpKTtcclxuICAgICAgdGl0bGVEaXYuY2xhc3NMaXN0LmFkZCgncGlja2xpc3QtdXNlLWVudGVyZWQtaGVhZGVyJyk7XHJcbiAgICAgIHRpdGxlRGl2LmlubmVyVGV4dCA9ICdPciB1c2UgYWRkcmVzcyBlbnRlcmVkOic7XHJcbiAgICAgIGNvbnRhaW5lckRpdi5hcHBlbmRDaGlsZCh0aXRsZURpdik7XHJcblxyXG4gICAgICBjb25zdCBpdGVtRGl2ID0gKDxIVE1MRWxlbWVudD5kb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcucGlja2xpc3QtdXNlLWVudGVyZWQtb3B0aW9uJykgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JykpO1xyXG4gICAgICBpdGVtRGl2LmNsYXNzTGlzdC5hZGQoJ3BpY2tsaXN0LXVzZS1lbnRlcmVkLW9wdGlvbicpO1xyXG4gICAgICBpdGVtRGl2LmlubmVyVGV4dCA9IHRoaXMuY3VycmVudFNlYXJjaFRlcm0ucmVwbGFjZSgvLCsvZywgJywgJyk7XHJcbiAgICAgIGl0ZW1EaXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnBpY2tsaXN0LnVzZUFkZHJlc3NFbnRlcmVkLmNsaWNrKTtcclxuICAgICAgY29udGFpbmVyRGl2LmFwcGVuZENoaWxkKGl0ZW1EaXYpO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBJZiB0aGUgcGlja2xpc3QgY29udGFpbmVyIGlzIG91dCBvZiBib3VuZHMgdG8gdGhlIHRvcCBvciBib3R0b20sIHRoZW4gc2Nyb2xsIGl0IGludG8gdmlld1xyXG4gICAgdGhpcy5waWNrbGlzdC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkID0gKCkgPT4ge1xyXG4gICAgICBjb25zdCBvdXRPZkJvdW5kc1RvcCA9IHRoaXMucGlja2xpc3QuY29udGFpbmVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLnRvcCA8IDA7XHJcbiAgICAgIGNvbnN0IG91dE9mQm91bmRzQm90dG9tID0gdGhpcy5waWNrbGlzdC5jb250YWluZXIuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tID4gd2luZG93LmlubmVySGVpZ2h0O1xyXG5cclxuICAgICAgaWYgKG91dE9mQm91bmRzVG9wIHx8IG91dE9mQm91bmRzQm90dG9tKSB7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC5jb250YWluZXIuc2Nyb2xsSW50b1ZpZXcoKTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICB0aGlzLnBpY2tsaXN0LnVzZUFkZHJlc3NFbnRlcmVkID0ge1xyXG4gICAgICBlbGVtZW50OiBudWxsLFxyXG4gICAgICAvLyBDcmVhdGUgYSBcInVzZSBhZGRyZXNzIGVudGVyZWRcIiBvcHRpb25cclxuICAgICAgY3JlYXRlOiAoY29uZmlkZW5jZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgY29uc3QgaXRlbSA9IHtcclxuICAgICAgICAgIHRleHQ6IGAke2NvbmZpZGVuY2V9ICR7dGhpcy5vcHRpb25zLnVzZUFkZHJlc3NFbnRlcmVkVGV4dH1gXHJcbiAgICAgICAgfTtcclxuICAgICAgICBjb25zdCBsaXN0SXRlbSA9IHRoaXMucGlja2xpc3QuY3JlYXRlTGlzdEl0ZW0oaXRlbSk7XHJcbiAgICAgICAgbGlzdEl0ZW0uY2xhc3NMaXN0LmFkZCgndXNlLWFkZHJlc3MtZW50ZXJlZCcpO1xyXG4gICAgICAgIGxpc3RJdGVtLnNldEF0dHJpYnV0ZSgndGl0bGUnLCAnRW50ZXIgYWRkcmVzcyBtYW51YWxseScpO1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QubGlzdCA9IHRoaXMucGlja2xpc3QubGlzdCB8fCB0aGlzLnBpY2tsaXN0LmNyZWF0ZUxpc3QoKTtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0Lmxpc3QucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobGlzdEl0ZW0sIHRoaXMucGlja2xpc3QuY29udGFpbmVyLmZpcnN0Q2hpbGQpO1xyXG4gICAgICAgIGxpc3RJdGVtLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5waWNrbGlzdC51c2VBZGRyZXNzRW50ZXJlZC5jbGljayk7XHJcbiAgICAgICAgcmV0dXJuIGxpc3RJdGVtO1xyXG4gICAgICB9LFxyXG4gICAgICAvLyBEZXN0cm95IHRoZSBcInVzZSBhZGRyZXNzIGVudGVyZWRcIiBvcHRpb25cclxuICAgICAgZGVzdHJveTogKCkgPT4ge1xyXG4gICAgICAgIGlmICh0aGlzLnBpY2tsaXN0LnVzZUFkZHJlc3NFbnRlcmVkLmVsZW1lbnQpIHtcclxuICAgICAgICAgIHRoaXMucGlja2xpc3QubGlzdC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHRoaXMucGlja2xpc3QudXNlQWRkcmVzc0VudGVyZWQuZWxlbWVudCk7XHJcbiAgICAgICAgICB0aGlzLnBpY2tsaXN0LnVzZUFkZHJlc3NFbnRlcmVkLmVsZW1lbnQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICAvLyBVc2UgdGhlIGFkZHJlc3MgZW50ZXJlZCBhcyB0aGUgRm9ybWF0dGVkIGFkZHJlc3NcclxuICAgICAgY2xpY2s6ICgpID0+IHtcclxuICAgICAgICBjb25zdCBpbnB1dERhdGEgPSB7XHJcbiAgICAgICAgICByZXN1bHQ6IHtcclxuICAgICAgICAgICAgY29uZmlkZW5jZTogJ05vIG1hdGNoZXMnLFxyXG4gICAgICAgICAgICBhZGRyZXNzOiB7XHJcbiAgICAgICAgICAgICAgYWRkcmVzc19saW5lXzE6ICcnLFxyXG4gICAgICAgICAgICAgIGFkZHJlc3NfbGluZV8yOiAnJyxcclxuICAgICAgICAgICAgICBhZGRyZXNzX2xpbmVfMzogJycsXHJcbiAgICAgICAgICAgICAgbG9jYWxpdHk6ICcnLFxyXG4gICAgICAgICAgICAgIHJlZ2lvbjogJycsXHJcbiAgICAgICAgICAgICAgcG9zdGFsX2NvZGU6ICcnLFxyXG4gICAgICAgICAgICAgIGNvdW50cnk6ICcnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50U2VhcmNoVGVybSkge1xyXG4gICAgICAgICAgLy8gVHJ5IGFuZCBzcGxpdCBpbnRvIGxpbmVzIGJ5IHVzaW5nIGNvbW1hIGRlbGltaXRlclxyXG4gICAgICAgICAgY29uc3QgbGluZXMgPSB0aGlzLmN1cnJlbnRTZWFyY2hUZXJtLnNwbGl0KCcsJyk7XHJcbiAgICAgICAgICBpZiAobGluZXNbMF0pIHtcclxuICAgICAgICAgICAgaW5wdXREYXRhLnJlc3VsdC5hZGRyZXNzLmFkZHJlc3NfbGluZV8xID0gbGluZXNbMF07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAobGluZXNbMV0pIHtcclxuICAgICAgICAgICAgaW5wdXREYXRhLnJlc3VsdC5hZGRyZXNzLmFkZHJlc3NfbGluZV8yID0gbGluZXNbMV07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAobGluZXNbMl0pIHtcclxuICAgICAgICAgICAgaW5wdXREYXRhLnJlc3VsdC5hZGRyZXNzLmFkZHJlc3NfbGluZV8zID0gbGluZXNbMl07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMzsgaSA8IGxpbmVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlucHV0RGF0YS5yZXN1bHQuYWRkcmVzcy5hZGRyZXNzX2xpbmVfMyArPSBsaW5lc1tpXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMucmVzdWx0LnNob3coaW5wdXREYXRhKTtcclxuICAgICAgICB0aGlzLnJlc3VsdC51cGRhdGVIZWFkaW5nKHRoaXMub3B0aW9ucy5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLm1hbnVhbEhlYWRpbmdUZXh0KTtcclxuICAgICAgfSxcclxuICAgICAgLy8gQ3JlYXRlIGFuZCByZXR1cm4gYW4gYWRkcmVzcyBsaW5lIG9iamVjdCB3aXRoIHRoZSBrZXkgYXMgdGhlIGxhYmVsXHJcbiAgICAgIGZvcm1hdE1hbnVhbEFkZHJlc3NMaW5lOiBmdW5jdGlvbiAobGluZXMsIGkpIHtcclxuICAgICAgICBjb25zdCBrZXkgPSBkZWZhdWx0cy5hZGRyZXNzTGluZUxhYmVsc1tpXTtcclxuICAgICAgICBjb25zdCBsaW5lT2JqZWN0ID0ge307XHJcbiAgICAgICAgbGluZU9iamVjdFtrZXldID0gbGluZXNbaV0gfHwgJyc7XHJcbiAgICAgICAgcmV0dXJuIGxpbmVPYmplY3Q7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8gQ3JlYXRlIHRoZSBwaWNrbGlzdCBsaXN0IChhbmQgY29udGFpbmVyKSBhbmQgaW5qZWN0IGFmdGVyIHRoZSBpbnB1dFxyXG4gICAgdGhpcy5waWNrbGlzdC5jcmVhdGVMaXN0ID0gKCkgPT4ge1xyXG4gICAgICAvLyBJZiBTaW5nbGVsaW5lIG1vZGUgaXMgdXNlZCwgdGhlbiBhcHBlbmQgdGhlIHBpY2tsaXN0IGFmdGVyIHRoZSBsYXN0IGlucHV0IGZpZWxkLCBvdGhlcndpc2UgdXNlIHRoZSBmaXJzdCBvbmVcclxuICAgICAgY29uc3QgcG9zaXRpb24gPSB0aGlzLnNlYXJjaFR5cGUgPT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5TSU5HTEVMSU5FID8gdGhpcy5pbnB1dHMubGVuZ3RoIC0gMSA6IDA7XHJcblxyXG4gICAgICBjb25zdCBjb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29udGFpbmVyLmNsYXNzTGlzdC5hZGQoJ2FkZHJlc3MtcGlja2xpc3QtY29udGFpbmVyJyk7XHJcbiAgICAgIHRoaXMucGlja2xpc3QuY29udGFpbmVyID0gY29udGFpbmVyO1xyXG5cclxuICAgICAgLy8gSW5zZXJ0IHRoZSBwaWNrbGlzdCBjb250YWluZXIgYWZ0ZXIgdGhlIGlucHV0XHJcbiAgICAgIHRoaXMuaW5wdXRzW3Bvc2l0aW9uXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0aGlzLnBpY2tsaXN0LmNvbnRhaW5lciwgdGhpcy5pbnB1dHNbcG9zaXRpb25dLm5leHRFbGVtZW50U2libGluZyk7XHJcblxyXG4gICAgICBjb25zdCBsaXN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGxpc3QuY2xhc3NMaXN0LmFkZCgnYWRkcmVzcy1waWNrbGlzdCcpO1xyXG4gICAgICAvLyBBcHBlbmQgdGhlIHBpY2tsaXN0IHRvIHRoZSBpbm5lciB3cmFwcGVyXHJcbiAgICAgIHRoaXMucGlja2xpc3QuY29udGFpbmVyLmFwcGVuZENoaWxkKGxpc3QpO1xyXG5cclxuICAgICAgLy8gQWRkIGEgY2xhc3MgdG8gdGhlIGlucHV0IHRvIGRlbm90ZSB0aGF0IGEgcGlja2xpc3Qgd2l0aCBzdWdnZXN0aW9ucyBpcyBiZWluZyBzaG93blxyXG4gICAgICB0aGlzLmlucHV0c1twb3NpdGlvbl0uY2xhc3NMaXN0LmFkZCgnc2hvd2luZy1zdWdnZXN0aW9ucycpO1xyXG5cclxuICAgICAgbGlzdC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgdGhpcy5waWNrbGlzdC5jaGVja0VudGVyKTtcclxuICAgICAgcmV0dXJuIGxpc3Q7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIENyZWF0ZSBhIG5ldyBwaWNrbGlzdCBpdGVtL3Jvd1xyXG4gICAgdGhpcy5waWNrbGlzdC5jcmVhdGVMaXN0SXRlbSA9IChpdGVtOiBQaWNrbGlzdEl0ZW0pID0+IHtcclxuICAgICAgY29uc3Qgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIHJvdy5pbm5lckhUTUwgPSB0aGlzLnBpY2tsaXN0LmFkZE1hdGNoaW5nRW1waGFzaXMoaXRlbSk7XHJcblxyXG4gICAgICAvLyBTdG9yZSB0aGUgRm9ybWF0IFVSTCBpZiBpdCBleGlzdHMsIG90aGVyd2lzZSB1c2UgdGhlIGdsb2JhbF9hZGRyZXNzX2tleSBhcyBhIFwicmVmaW5lbWVudFwiIHByb3BlcnR5XHJcbiAgICAgIGlmIChpdGVtLmZvcm1hdCkge1xyXG4gICAgICAgIHJvdy5zZXRBdHRyaWJ1dGUoJ2Zvcm1hdCcsIGl0ZW0uZm9ybWF0KTtcclxuICAgICAgfSBlbHNlIGlmIChpdGVtLmdsb2JhbF9hZGRyZXNzX2tleSkge1xyXG4gICAgICAgIHJvdy5zZXRBdHRyaWJ1dGUoJ3JlZmluZScsIGl0ZW0uZ2xvYmFsX2FkZHJlc3Nfa2V5KTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gcm93O1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBDcmVhdGUgYSBuZXcgcGlja2xpc3QgaXRlbS9yb3cgZm9yIHdoYXQzd29yZHNcclxuICAgIHRoaXMucGlja2xpc3QuY3JlYXRlV2hhdDNXb3Jkc0xpc3RJdGVtID0gKGl0ZW06IFdoYXQzV29yZHNQaWNrTGlzdCkgPT4ge1xyXG4gICAgICBjb25zdCByb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgY29uc3QgbmFtZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBjb25zdCBkZXNjcmlwdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG5cclxuICAgICAgcm93LmNsYXNzTmFtZSA9IHRoaXMud2hhdDNXb3Jkc0tleXdvcmQ7XHJcbiAgICAgIG5hbWUuY2xhc3NOYW1lID0gJ3doYXQzV29yZHMtbmFtZSc7XHJcbiAgICAgIGRlc2NyaXB0aW9uLmNsYXNzTmFtZSA9ICd3aGF0M1dvcmRzLWRlc2NyaXB0aW9uJztcclxuXHJcbiAgICAgIG5hbWUuaW5uZXJIVE1MID0gJy8vLycgKyBpdGVtLndoYXQzd29yZHMubmFtZTtcclxuICAgICAgZGVzY3JpcHRpb24uaW5uZXJIVE1MID0gaXRlbS53aGF0M3dvcmRzLmRlc2NyaXB0aW9uO1xyXG5cclxuICAgICAgcm93LmFwcGVuZENoaWxkKG5hbWUpO1xyXG4gICAgICByb3cuYXBwZW5kQ2hpbGQoZGVzY3JpcHRpb24pO1xyXG5cclxuICAgICAgcmV0dXJuIHJvdztcclxuICAgIH07XHJcblxyXG5cclxuICAgIC8vIENyZWF0ZSBhIG5ldyBwaWNrbGlzdCBpdGVtL3JvdyBmb3IgbG9va3VwIGl0ZW1zXHJcbiAgICB0aGlzLnBpY2tsaXN0LmNyZWF0ZUxvb2t1cExpc3RJdGVtID0gKGl0ZW06IExvb2t1cEFkZHJlc3MpID0+IHtcclxuICAgICAgY29uc3Qgcm93ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcblxyXG4gICAgICByb3cuaW5uZXJIVE1MID0gaXRlbS50ZXh0O1xyXG5cclxuICAgICAgLy8gU3RvcmUgdGhlIEZvcm1hdCBVUkwgaWYgaXQgZXhpc3RzLCBvdGhlcndpc2UgdXNlIHRoZSBnbG9iYWxfYWRkcmVzc19rZXkgYXMgYSBcInJlZmluZW1lbnRcIiBwcm9wZXJ0eVxyXG4gICAgICBpZiAoaXRlbS5mb3JtYXQpIHtcclxuICAgICAgICByb3cuc2V0QXR0cmlidXRlKCdmb3JtYXQnLCBpdGVtLmZvcm1hdCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXRlbS5nbG9iYWxfYWRkcmVzc19rZXkpIHtcclxuICAgICAgICByb3cuc2V0QXR0cmlidXRlKCdyZWZpbmUnLCBpdGVtLmdsb2JhbF9hZGRyZXNzX2tleSk7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJvdztcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5waWNrbGlzdC5yZWZpbmUgPSB7XHJcbiAgICAgIGVsZW1lbnQ6IG51bGwsXHJcbiAgICAgIC8vIFJldHVybnMgd2hldGhlciB0aGUgcGlja2xpc3QgbmVlZHMgcmVmaW5pbmcuIFRoaXMgaGFwcGVucyBhZnRlciBhbiBpdGVtIGhhcyBiZWVuIFwic3RlcHBlZCBpbnRvXCIgYnV0IGhhcyBhbiB1bnJlc29sdmFibGUgcmFuZ2UuXHJcbiAgICAgIC8vIFRoZSB1c2VyIGlzIHByb21wdGVkIHRvIGVudGVyIHRoZWlyIHNlbGVjdGlvbiAoZS5nLiBidWlsZGluZyBudW1iZXIpLlxyXG4gICAgICBpc05lZWRlZDogKHJlc3BvbnNlOiBTZWFyY2hSZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnNlYXJjaFR5cGUgIT09IEFkZHJlc3NWYWxpZGF0aW9uTW9kZS5BVVRPQ09NUExFVEUgJiYgKHJlc3BvbnNlLnJlc3VsdC5jb25maWRlbmNlID09PSAnUHJlbWlzZXMgcGFydGlhbCcgfHwgcmVzcG9uc2UucmVzdWx0LmNvbmZpZGVuY2UgPT09ICdTdHJlZXQgcGFydGlhbCcgfHwgcmVzcG9uc2UucmVzdWx0LmNvbmZpZGVuY2UgPT09ICdNdWx0aXBsZSBtYXRjaGVzJyk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGNyZWF0ZUlucHV0OiAocHJvbXB0OiBzdHJpbmcsIGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgY29uc3Qgcm93ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBpY2tsaXN0LXJlZmluZW1lbnQtYm94JykgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgICAgcm93LmNsYXNzTGlzdC5hZGQoJ3BpY2tsaXN0LXJlZmluZW1lbnQtYm94Jyk7XHJcblxyXG4gICAgICAgIGNvbnN0IGlucHV0ID0gKDxIVE1MSW5wdXRFbGVtZW50PmRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5waWNrbGlzdC1yZWZpbmVtZW50LWJveCBpbnB1dCcpIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2lucHV0JykpO1xyXG4gICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7XHJcbiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdwbGFjZWhvbGRlcicsIHByb21wdCk7XHJcbiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCdrZXknLCBrZXkpO1xyXG4gICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgnYXV0b2NvbXBsZXRlJywgJ25ldy1wYXNzd29yZCcpO1xyXG4gICAgICAgIGlucHV0LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCB0aGlzLnBpY2tsaXN0LnJlZmluZS5lbnRlci5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LnJlZmluZS5lbGVtZW50ID0gaW5wdXQ7XHJcblxyXG4gICAgICAgIGNvbnN0IGJ1dHRvbiA9ICg8SFRNTEJ1dHRvbkVsZW1lbnQ+ZG9jdW1lbnQucXVlcnlTZWxlY3RvcignLnBpY2tsaXN0LXJlZmluZW1lbnQtYm94IGJ1dHRvbicpIHx8IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2J1dHRvbicpKTtcclxuICAgICAgICBidXR0b24uaW5uZXJUZXh0ID0gJ1JlZmluZSc7XHJcbiAgICAgICAgYnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5waWNrbGlzdC5yZWZpbmUuZW50ZXIpO1xyXG5cclxuICAgICAgICByb3cuYXBwZW5kQ2hpbGQoaW5wdXQpO1xyXG4gICAgICAgIHJvdy5hcHBlbmRDaGlsZChidXR0b24pO1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QubGlzdC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShyb3csIHRoaXMucGlja2xpc3QubGlzdCk7XHJcblxyXG4gICAgICAgIGlucHV0LmZvY3VzKCk7XHJcbiAgICAgIH0sXHJcbiAgICAgIGVudGVyOiAoZXZlbnQ6IEV2ZW50KSA9PiB7XHJcbiAgICAgICAgLy8gQWxsb3cgYSBuZXcgcmVmaW5lbWVudCBlbnRyeSBpZiB0aGUgZW50ZXIga2V5IHdhcyB1c2VkIGluc2lkZSB0aGUgdGV4dGJveCBvciB0aGUgYnV0dG9uIHdhcyBjbGlja2VkXHJcbiAgICAgICAgaWYgKChldmVudCBpbnN0YW5jZW9mIEtleWJvYXJkRXZlbnQgJiYgZXZlbnQua2V5ID09PSAnRW50ZXInKSB8fCBldmVudCBpbnN0YW5jZW9mIE1vdXNlRXZlbnQpIHtcclxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgICAgICAgLy8gSWYgYSBwaWNrbGlzdCBpdGVtIGlzIGN1cnJlbnRseSBzZWxlY3RlZCwgdGhlbiBwb3RlbnRpYWxseSB1c2UgdGhpcyBpbnN0ZWFkIG9mIHdoYXQncyBpbiB0aGUgaW5wdXQgZmllbGRcclxuICAgICAgICAgIGlmICh0aGlzLnBpY2tsaXN0LmN1cnJlbnRJdGVtKSB7XHJcbiAgICAgICAgICAgIHRoaXMucGlja2xpc3QuY2hlY2tFbnRlcihldmVudCBhcyBLZXlib2FyZEV2ZW50KTtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xyXG5cclxuICAgICAgICAgIC8vIFRha2UgdGhlIHZhbHVlIGZyb20gdGhlIGlucHV0IGZpZWxkIGFuZCB1c2UgdGhpcyB0byBmdXJ0aGVyIHJlZmluZSB0aGUgYWRkcmVzc1xyXG4gICAgICAgICAgaWYgKHRoaXMucGlja2xpc3QucmVmaW5lLmVsZW1lbnQudmFsdWUpIHtcclxuICAgICAgICAgICAgY29uc3QgZGF0YSA9IEpTT04uc3RyaW5naWZ5KHsgcmVmaW5lbWVudDogdGhpcy5waWNrbGlzdC5yZWZpbmUuZWxlbWVudC52YWx1ZSB9KTtcclxuICAgICAgICAgICAgY29uc3Qga2V5ID0gdGhpcy5waWNrbGlzdC5yZWZpbmUuZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2tleScpO1xyXG4gICAgICAgICAgICB0aGlzLnJlcXVlc3Quc2VuZChgJHt0aGlzLmJhc2VVcmx9JHt0aGlzLnJlZmluZUVuZHBvaW50fS8ke2tleX1gLCAnUE9TVCcsIHRoaXMucmVzdWx0LmhhbmRsZVZhbGlkYXRlUmVzcG9uc2UsIGRhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5waWNrbGlzdC5zaXplICYmIGV2ZW50IGluc3RhbmNlb2YgS2V5Ym9hcmRFdmVudCAmJiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJyB8fCBldmVudC5rZXkgPT09ICdFbnRlcicpKSB7XHJcbiAgICAgICAgICB0aGlzLnBpY2tsaXN0LmtleXVwKGV2ZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5waWNrbGlzdC5yZXNldFRhYkNvdW50ID0gKCkgPT4ge1xyXG4gICAgICB0aGlzLnBpY2tsaXN0LnRhYkNvdW50ID0gLTE7XHJcbiAgICB9O1xyXG5cclxuICAgIC8vIEtleWJvYXJkIG5hdmlnYXRpb25cclxuICAgIHRoaXMucGlja2xpc3Qua2V5dXAgPSAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcclxuICAgICAgaWYgKCF0aGlzLnBpY2tsaXN0Lmxpc3QpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMucGlja2xpc3QuY2hlY2tFbnRlcihldmVudCk7XHJcblxyXG4gICAgICAvLyBHZXQgYSBsaXN0IG9mIGFsbCB0aGUgYWRkcmVzc2VzIGluIHRoZSBwaWNrbGlzdFxyXG4gICAgICBjb25zdCBhZGRyZXNzZXMgPSB0aGlzLnBpY2tsaXN0Lmxpc3QucXVlcnlTZWxlY3RvckFsbCgnZGl2Jyk7XHJcbiAgICAgIGxldCBmaXJzdEFkZHJlc3M7XHJcbiAgICAgIGxldCBsYXN0QWRkcmVzcztcclxuXHJcbiAgICAgIC8vIElmIHRoZSBwaWNrbGlzdCBpcyBlbXB0eSwganVzdCByZXR1cm5cclxuICAgICAgaWYgKGFkZHJlc3Nlcy5sZW5ndGggPT09IDApIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIFNldCB0aGUgdGFiQ291bnQgYmFzZWQgb24gcHJldmlvdXMgYW5kIGRpcmVjdGlvblxyXG4gICAgICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LnRhYkNvdW50LS07XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QudGFiQ291bnQrKztcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gU2V0IHRvcCBhbmQgYm90dG9tIHBvc2l0aW9ucyBhbmQgZW5hYmxlIHdyYXAtYXJvdW5kXHJcbiAgICAgIGlmICh0aGlzLnBpY2tsaXN0LnRhYkNvdW50IDwgMCkge1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QudGFiQ291bnQgPSBhZGRyZXNzZXMubGVuZ3RoIC0gMTtcclxuICAgICAgICBsYXN0QWRkcmVzcyA9IHRydWU7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMucGlja2xpc3QudGFiQ291bnQgPiBhZGRyZXNzZXMubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QudGFiQ291bnQgPSAwO1xyXG4gICAgICAgIGZpcnN0QWRkcmVzcyA9IHRydWU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC8vIEhpZ2hsaWdodCB0aGUgc2VsZWN0ZWQgYWRkcmVzc1xyXG4gICAgICBjb25zdCBjdXJyZW50bHlIaWdobGlnaHRlZCA9IGFkZHJlc3Nlc1t0aGlzLnBpY2tsaXN0LnRhYkNvdW50XTtcclxuICAgICAgLy8gUmVtb3ZlIGFueSBwcmV2aW91c2x5IGhpZ2hsaWdodGVkIG9uZXNcclxuICAgICAgY29uc3QgcHJldmlvdXNseUhpZ2hsaWdodGVkID0gdGhpcy5waWNrbGlzdC5saXN0LnF1ZXJ5U2VsZWN0b3IoJy5zZWxlY3RlZCcpO1xyXG4gICAgICBpZiAocHJldmlvdXNseUhpZ2hsaWdodGVkKSB7XHJcbiAgICAgICAgcHJldmlvdXNseUhpZ2hsaWdodGVkLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdGVkJyk7XHJcbiAgICAgIH1cclxuICAgICAgY3VycmVudGx5SGlnaGxpZ2h0ZWQuY2xhc3NMaXN0LmFkZCgnc2VsZWN0ZWQnKTtcclxuICAgICAgLy8gU2V0IHRoZSBjdXJyZW50SXRlbSBvbiB0aGUgcGlja2xpc3QgdG8gdGhlIGN1cnJlbnRseSBoaWdobGlnaHRlZCBhZGRyZXNzXHJcbiAgICAgIHRoaXMucGlja2xpc3QuY3VycmVudEl0ZW0gPSBjdXJyZW50bHlIaWdobGlnaHRlZDtcclxuXHJcbiAgICAgIC8vIFNjcm9sbCBhZGRyZXNzIGludG8gdmlldywgaWYgcmVxdWlyZWRcclxuICAgICAgY29uc3QgYWRkcmVzc0xpc3RDb29yZHMgPSB7XHJcbiAgICAgICAgdG9wOiB0aGlzLnBpY2tsaXN0Lmxpc3Qub2Zmc2V0VG9wLFxyXG4gICAgICAgIGJvdHRvbTogdGhpcy5waWNrbGlzdC5saXN0Lm9mZnNldFRvcCArIHRoaXMucGlja2xpc3QubGlzdC5vZmZzZXRIZWlnaHQsXHJcbiAgICAgICAgc2Nyb2xsVG9wOiB0aGlzLnBpY2tsaXN0Lmxpc3Quc2Nyb2xsVG9wLFxyXG4gICAgICAgIHNlbGVjdGVkVG9wOiBjdXJyZW50bHlIaWdobGlnaHRlZC5vZmZzZXRUb3AsXHJcbiAgICAgICAgc2VsZWN0ZWRCb3R0b206IGN1cnJlbnRseUhpZ2hsaWdodGVkLm9mZnNldFRvcCArIGN1cnJlbnRseUhpZ2hsaWdodGVkLm9mZnNldEhlaWdodCxcclxuICAgICAgICBzY3JvbGxBbW91bnQ6IGN1cnJlbnRseUhpZ2hsaWdodGVkLm9mZnNldEhlaWdodFxyXG4gICAgICB9O1xyXG4gICAgICBpZiAoZmlyc3RBZGRyZXNzKSB7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC5saXN0LnNjcm9sbFRvcCA9IDA7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSBpZiAobGFzdEFkZHJlc3MpIHtcclxuICAgICAgICB0aGlzLnBpY2tsaXN0Lmxpc3Quc2Nyb2xsVG9wID0gOTk5O1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2UgaWYgKGFkZHJlc3NMaXN0Q29vcmRzLnNlbGVjdGVkQm90dG9tICsgYWRkcmVzc0xpc3RDb29yZHMuc2Nyb2xsQW1vdW50ID4gYWRkcmVzc0xpc3RDb29yZHMuYm90dG9tKSB7XHJcbiAgICAgICAgdGhpcy5waWNrbGlzdC5saXN0LnNjcm9sbFRvcCA9IGFkZHJlc3NMaXN0Q29vcmRzLnNjcm9sbFRvcCArIGFkZHJlc3NMaXN0Q29vcmRzLnNjcm9sbEFtb3VudDtcclxuICAgICAgfVxyXG4gICAgICBlbHNlIGlmIChhZGRyZXNzTGlzdENvb3Jkcy5zZWxlY3RlZFRvcCAtIGFkZHJlc3NMaXN0Q29vcmRzLnNjcm9sbEFtb3VudCAtIGFkZHJlc3NMaXN0Q29vcmRzLnRvcCA8IGFkZHJlc3NMaXN0Q29vcmRzLnNjcm9sbFRvcCkge1xyXG4gICAgICAgIHRoaXMucGlja2xpc3QubGlzdC5zY3JvbGxUb3AgPSBhZGRyZXNzTGlzdENvb3Jkcy5zY3JvbGxUb3AgLSBhZGRyZXNzTGlzdENvb3Jkcy5zY3JvbGxBbW91bnQ7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLy8gQWRkIGVtcGhhc2lzIHRvIHRoZSBwaWNrbGlzdCBpdGVtcyBoaWdobGlnaHRpbmcgdGhlIG1hdGNoXHJcbiAgICB0aGlzLnBpY2tsaXN0LmFkZE1hdGNoaW5nRW1waGFzaXMgPSBmdW5jdGlvbiAoaXRlbSkge1xyXG4gICAgICBjb25zdCBoaWdobGlnaHRzID0gaXRlbS5tYXRjaGVkIHx8IFtdO1xyXG4gICAgICBsZXQgbGFiZWwgPSBpdGVtLnRleHQ7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaGlnaGxpZ2h0cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGNvbnN0IHJlcGxhY2VtZW50ID0gJzxiPicgKyBsYWJlbC5zdWJzdHJpbmcoaGlnaGxpZ2h0c1tpXVswXSwgaGlnaGxpZ2h0c1tpXVsxXSkgKyAnPC9iPic7XHJcbiAgICAgICAgbGFiZWwgPSBsYWJlbC5zdWJzdHJpbmcoMCwgaGlnaGxpZ2h0c1tpXVswXSkgKyByZXBsYWNlbWVudCArIGxhYmVsLnN1YnN0cmluZyhoaWdobGlnaHRzW2ldWzFdKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgfTtcclxuXHJcbiAgICAvLyBMaXN0ZW4gdG8gYSBwaWNrbGlzdCBzZWxlY3Rpb25cclxuICAgIHRoaXMucGlja2xpc3QubGlzdGVuID0gKHJvdykgPT4ge1xyXG4gICAgICByb3cuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnBpY2tsaXN0LnBpY2suYmluZChudWxsLCByb3cpKTtcclxuICAgIH07XHJcblxyXG4gICAgdGhpcy5waWNrbGlzdC5jaGVja0VudGVyID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50KSA9PiB7XHJcbiAgICAgIGlmIChldmVudC5rZXkgPT09ICdFbnRlcicgfHwgZXZlbnQua2V5ID09PSAnVGFiJykge1xyXG4gICAgICAgIGxldCBwaWNrbGlzdEl0ZW07XHJcbiAgICAgICAgLy8gSWYgcGlja2xpc3QgY29udGFpbnMgMSBhZGRyZXNzIHRoZW4gdXNlIHRoaXMgb25lIHRvIGZvcm1hdFxyXG4gICAgICAgIGlmICh0aGlzLnBpY2tsaXN0LnNpemUgPT09IDEpIHtcclxuICAgICAgICAgIHBpY2tsaXN0SXRlbSA9IHRoaXMucGlja2xpc3QubGlzdC5xdWVyeVNlbGVjdG9yQWxsKCdkaXYnKVswXTtcclxuICAgICAgICB9IC8vIEVsc2UgdXNlIHRoZSBjdXJyZW50bHkgaGlnaGxpZ2h0ZWQgb25lIHdoZW4gbmF2aWdhdGlvbiB1c2luZyBrZXlib2FyZFxyXG4gICAgICAgIGVsc2UgaWYgKHRoaXMucGlja2xpc3QuY3VycmVudEl0ZW0pIHtcclxuICAgICAgICAgIHBpY2tsaXN0SXRlbSA9IHRoaXMucGlja2xpc3QuY3VycmVudEl0ZW07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChwaWNrbGlzdEl0ZW0pIHtcclxuICAgICAgICAgIHRoaXMucGlja2xpc3QucGljayhwaWNrbGlzdEl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvLyBIb3cgdG8gaGFuZGxlIGEgcGlja2xpc3Qgc2VsZWN0aW9uXHJcbiAgICB0aGlzLnBpY2tsaXN0LnBpY2sgPSAoaXRlbSkgPT4ge1xyXG4gICAgICAvLyBGaXJlIGFuIGV2ZW50IHdoZW4gYW4gYWRkcmVzcyBpcyBwaWNrZWRcclxuICAgICAgdGhpcy5ldmVudHMudHJpZ2dlcigncG9zdC1waWNrbGlzdC1zZWxlY3Rpb24nLCBpdGVtKTtcclxuXHJcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gaXRlbS5nZXRFbGVtZW50c0J5VGFnTmFtZSgnZGl2Jyk7XHJcblxyXG4gICAgICBpZiAodGhpcy5pc1doYXQzV29yZHMpIHtcclxuICAgICAgICB0aGlzLmxvb2t1cChlbGVtZW50c1swXS5pbm5lckhUTUwpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIC8vIEdldCBhIGZpbmFsIGFkZHJlc3MgdXNpbmcgcGlja2xpc3QgaXRlbSB1bmxlc3MgaXQgbmVlZHMgcmVmaW5lbWVudFxyXG4gICAgICAgIGlmIChpdGVtLmdldEF0dHJpYnV0ZSgnZm9ybWF0JykpIHtcclxuICAgICAgICAgIHRoaXMuZm9ybWF0KGl0ZW0uZ2V0QXR0cmlidXRlKCdmb3JtYXQnKSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMucmVmaW5lKGl0ZW0uZ2V0QXR0cmlidXRlKCdyZWZpbmUnKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmb3JtYXQodXJsOiBzdHJpbmcpIHtcclxuICAgIC8vIFRyaWdnZXIgYW4gZXZlbnRcclxuICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3ByZS1mb3JtYXR0aW5nLXNlYXJjaCcsIHVybCk7XHJcblxyXG4gICAgLy8gSGlkZSB0aGUgc2VhcmNoaW5nIHNwaW5uZXJcclxuICAgIHRoaXMuc2VhcmNoU3Bpbm5lci5oaWRlKCk7XHJcblxyXG4gICAgLy8gSW5pdGlhdGUgYSBuZXcgRm9ybWF0IHJlcXVlc3RcclxuICAgIHRoaXMucmVxdWVzdC5zZW5kKHVybCwgJ0dFVCcsIHRoaXMucmVzdWx0LnNob3csIHVuZGVmaW5lZCwgW3sga2V5OiAnQWRkLU1ldGFkYXRhJywgdmFsdWU6IHRydWUgfS8qLCB7a2V5OiAnQWRkLUNvbXBvbmVudHMnLCB2YWx1ZTogdHJ1ZX0qL10pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZWZpbmUoa2V5OiBzdHJpbmcpIHtcclxuICAgIC8vIFRyaWdnZXIgYW4gZXZlbnRcclxuICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3ByZS1yZWZpbmVtZW50Jywga2V5KTtcclxuXHJcbiAgICAvLyBIaWRlIHRoZSBzZWFyY2hpbmcgc3Bpbm5lclxyXG4gICAgdGhpcy5zZWFyY2hTcGlubmVyLmhpZGUoKTtcclxuXHJcbiAgICAvLyBJbml0aWF0ZSBhIG5ldyBTdGVwLWluIHJlcXVlc3QgdXNpbmcgdGhlIGdsb2JhbCBhZGRyZXNzIGtleVxyXG4gICAgdGhpcy5yZXF1ZXN0LnNlbmQoYCR7dGhpcy5iYXNlVXJsfSR7dGhpcy5zdGVwSW5FbmRwb2ludH0vJHtrZXl9YCwgJ0dFVCcsIHRoaXMucGlja2xpc3Quc2hvdyk7XHJcbiAgfVxyXG5cclxuXHJcbiAgcHJpdmF0ZSBsb29rdXAoa2V5OiBzdHJpbmcpIHtcclxuICAgIC8vIFRyaWdnZXIgYW4gZXZlbnRcclxuICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3ByZS1sb29rdXAnLCBrZXkpO1xyXG5cclxuICAgIC8vIEhpZGUgdGhlIHNlYXJjaGluZyBzcGlubmVyXHJcbiAgICB0aGlzLnNlYXJjaFNwaW5uZXIuaGlkZSgpO1xyXG5cclxuICAgIC8vR2V0IHRoZSBsb29rdXAgcmVxdWV0XHJcbiAgICBjb25zdCBsb29rdXBWMlJlcXVlc3QgPSB0aGlzLmdlbmVyYXRlTG9va3VwRGF0YUZvckFwaUNhbGwoa2V5LCBmYWxzZSk7XHJcblxyXG4gICAgY29uc3QgdXJsID0gdGhpcy5iYXNlVXJsICsgdGhpcy5sb29rdXBFbmRwb2ludDtcclxuICAgIGNvbnN0IGhlYWRlcnMgPSBbeyBrZXk6ICdBZGQtQWRkcmVzc2VzJywgdmFsdWU6IHRydWUgfV07XHJcbiAgICBjb25zdCBjYWxsYmFjayA9IHRoaXMucGlja2xpc3Quc2hvd0xvb2t1cDtcclxuXHJcbiAgICAvL1NldCB0aGUgc2hvdWxkVHJpZ2dlcldoYXQzV29yZHNFbnJpY2htZW50IHNvIHRoYXQgd2UgY2FuIHRyaWdnZXIgaXQgYWZ0ZXIgdGhlIHVzZXIgY2hvb3NlcyBhbiBhZGRyZXNzLlxyXG4gICAgdGhpcy5zaG91bGRUcmlnZ2VyV2hhdDNXb3Jkc0VucmljaG1lbnQgPSB0cnVlO1xyXG5cclxuICAgIC8vIEluaXRpYXRlIG5ldyBTZWFyY2ggcmVxdWVzdFxyXG4gICAgdGhpcy5yZXF1ZXN0LnNlbmQodXJsLCAnUE9TVCcsIGNhbGxiYWNrLCBsb29rdXBWMlJlcXVlc3QsIGhlYWRlcnMpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSByZXN1bHQ6IEFkZHJlc3NWYWxpZGF0aW9uUmVzdWx0ID0ge1xyXG4gICAgZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lcjogbnVsbCxcclxuICAgIGxhc3RBZGRyZXNzRmllbGQ6IG51bGwsXHJcbiAgICBnZW5lcmF0ZUFkZHJlc3NMaW5lUmVxdWlyZWQ6IGZhbHNlLFxyXG4gICAgLy8gUmVuZGVyIGEgRm9ybWF0dGVkIGFkZHJlc3NcclxuICAgIHNob3c6IChkYXRhOiBTZWFyY2hSZXNwb25zZSkgPT4ge1xyXG4gICAgICAvLyBIaWRlIHRoZSBpbmxpbmUgc2VhcmNoIHNwaW5uZXJcclxuICAgICAgdGhpcy5zZWFyY2hTcGlubmVyLmhpZGUoKTtcclxuXHJcbiAgICAgIC8vIEhpZGUgdGhlIHBpY2tsaXN0XHJcbiAgICAgIHRoaXMucGlja2xpc3QuaGlkZSgpO1xyXG5cclxuICAgICAgLy8gQ2xlYXIgdGhlIHByZXZpb3VzIHNlYXJjaCB0ZXJtXHJcbiAgICAgIHRoaXMubGFzdFNlYXJjaFRlcm0gPSAnJztcclxuXHJcbiAgICAgIC8vIEFsbG93IEF1dG9jb21wbGV0ZSB0aHJvdWdoIGFzIGl0IHdpbGwgbmVlZCB0byBjcmVhdGUgdGhlIGFkZGl0aW9uYWwgb3V0cHV0IGZpZWxkcyBmb3IgdGhlIGZpbmFsIGFkZHJlc3MuXHJcbiAgICAgIC8vIE90aGVyd2lzZSwgb25seSByZW5kZXIgdGhlIGZpbmFsIGFkZHJlc3MgaWYgdGhlcmUgYXJlIHJlc3VsdHMgYXZhaWxhYmxlLlxyXG4gICAgICBpZiAodGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuQVVUT0NPTVBMRVRFIHx8IChkYXRhLnJlc3VsdC5hZGRyZXNzICYmIGRhdGEucmVzdWx0LmNvbmZpZGVuY2UgIT09ICdObyBtYXRjaGVzJykpIHtcclxuXHJcbiAgICAgICAgLy8gQ2xlYXIgc2VhcmNoIGlucHV0KHMpXHJcbiAgICAgICAgdGhpcy5pbnB1dHMuZm9yRWFjaChpbnB1dCA9PiBpbnB1dC52YWx1ZSA9ICcnKTtcclxuXHJcbiAgICAgICAgLy8gQ2FsY3VsYXRlIGlmIHdlIG5lZWRlZCB0byBnZW5lcmF0ZSB0aGUgZm9ybWF0dGVkIGFkZHJlc3MgaW5wdXQgZmllbGRzIGxhdGVyXHJcbiAgICAgICAgdGhpcy5yZXN1bHQuY2FsY3VsYXRlSWZBZGRyZXNzTGluZUdlbmVyYXRpb25SZXF1aXJlZCgpO1xyXG5cclxuICAgICAgICAvLyBHZXQgZm9ybWF0dGVkIGFkZHJlc3MgY29udGFpbmVyIGVsZW1lbnRcclxuICAgICAgICAvLyBPbmx5IGNyZWF0ZSBhIGNvbnRhaW5lciBpZiB3ZSdyZSBjcmVhdGluZyBpbnB1dHMuIE90aGVyd2lzZSB0aGUgdXNlciB3aWxsIGhhdmUgdGhlaXIgb3duIGNvbnRhaW5lci5cclxuICAgICAgICB0aGlzLnJlc3VsdC5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyID0gdGhpcy5vcHRpb25zLmVsZW1lbnRzLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXI7XHJcbiAgICAgICAgaWYgKCF0aGlzLnJlc3VsdC5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyICYmIHRoaXMucmVzdWx0LmdlbmVyYXRlQWRkcmVzc0xpbmVSZXF1aXJlZCkge1xyXG4gICAgICAgICAgdGhpcy5yZXN1bHQuY3JlYXRlRm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lcigpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gTG9vcCBvdmVyIGVhY2ggZm9ybWF0dGVkIGFkZHJlc3MgY29tcG9uZW50XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBPYmplY3Qua2V5cyhkYXRhLnJlc3VsdC5hZGRyZXNzKS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgY29uc3Qga2V5ID0gT2JqZWN0LmtleXMoZGF0YS5yZXN1bHQuYWRkcmVzcylbaV07XHJcbiAgICAgICAgICBjb25zdCBhZGRyZXNzQ29tcG9uZW50ID0gZGF0YS5yZXN1bHQuYWRkcmVzc1trZXldO1xyXG4gICAgICAgICAgLy8gQmluZCB0aGUgYWRkcmVzcyBlbGVtZW50IHRvIHRoZSB1c2VyJ3MgYWRkcmVzcyBmaWVsZCAob3IgY3JlYXRlIGEgbmV3IG9uZSlcclxuICAgICAgICAgIHRoaXMucmVzdWx0LnVwZGF0ZUFkZHJlc3NMaW5lKGtleSwgYWRkcmVzc0NvbXBvbmVudCwgJ2FkZHJlc3MtbGluZS1pbnB1dCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gSGlkZSBjb3VudHJ5IGFuZCBhZGRyZXNzIHNlYXJjaCBmaWVsZHMgKGlmIHRoZXkgaGF2ZSBhICd0b2dnbGUnIGNsYXNzKVxyXG4gICAgICAgIHRoaXMudG9nZ2xlU2VhcmNoSW5wdXRzKCdoaWRlJyk7XHJcblxyXG4gICAgICAgIC8vIEVuYWJsZSB1c2VycyB0byBzZWFyY2ggYWdhaW4gc3Vic2VxdWVudGx5XHJcbiAgICAgICAgdGhpcy5oYXNTZWFyY2hJbnB1dEJlZW5SZXNldCA9IHRydWU7XHJcblxyXG4gICAgICAgIC8vIElmIGFuIGFkZHJlc3MgbGluZSBpcyBhbHNvIHRoZSBtYWluIHNlYXJjaCBpbnB1dCwgc2V0IHByb3BlcnR5IHRvIGZhbHNlLlxyXG4gICAgICAgIC8vIFRoaXMgZW5zdXJlcyB0aGF0IHR5cGluZyBpbiB0aGUgZmllbGQgYWdhaW4gKGFmdGVyIGFuIGFkZHJlc3MgaGFzIGJlZW5cclxuICAgICAgICAvLyByZXR1cm5lZCkgd2lsbCBub3QgdHJpZ2dlciBhIG5ldyBzZWFyY2guXHJcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoVHlwZSA9PT0gQWRkcmVzc1ZhbGlkYXRpb25Nb2RlLkFVVE9DT01QTEVURSkge1xyXG4gICAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IGluIHRoaXMub3B0aW9ucy5lbGVtZW50cykge1xyXG4gICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMub3B0aW9ucy5lbGVtZW50cywgZWxlbWVudCkpIHtcclxuICAgICAgICAgICAgICAvLyBFeGNsdWRpbmcgdGhlIGlucHV0IGl0c2VsZiwgZG9lcyBhbm90aGVyIGVsZW1lbnQgbWF0Y2ggdGhlIGlucHV0IGZpZWxkP1xyXG4gICAgICAgICAgICAgIGlmIChlbGVtZW50ICE9PSAnaW5wdXQnICYmIHRoaXMub3B0aW9ucy5lbGVtZW50c1tlbGVtZW50XSA9PT0gdGhpcy5pbnB1dHNbMF0pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGFzU2VhcmNoSW5wdXRCZWVuUmVzZXQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gQ3JlYXRlIHRoZSAnU2VhcmNoIGFnYWluJyBsaW5rIGFuZCBpbnNlcnQgaW50byBET01cclxuICAgICAgICB0aGlzLnJlc3VsdC5jcmVhdGVTZWFyY2hBZ2FpbkxpbmsoKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gRmlyZSBhbiBldmVudCB0byBzYXkgd2UndmUgZ290IHRoZSBmb3JtYXR0ZWQgYWRkcmVzc1xyXG4gICAgICB0aGlzLmV2ZW50cy50cmlnZ2VyKCdwb3N0LWZvcm1hdHRpbmctc2VhcmNoJywgZGF0YSk7XHJcbiAgICB9LFxyXG4gICAgaGlkZTogKCkgPT4ge1xyXG4gICAgICAvLyBEZWxldGUgdGhlIGZvcm1hdHRlZCBhZGRyZXNzIGNvbnRhaW5lclxyXG4gICAgICBpZiAodGhpcy5yZXN1bHQuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lcikge1xyXG4gICAgICAgIHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnJlc3VsdC5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyKTtcclxuICAgICAgICB0aGlzLnJlc3VsdC5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyID0gdW5kZWZpbmVkO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIERlbGV0ZSB0aGUgc2VhcmNoIGFnYWluIGxpbmtcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5zZWFyY2hBZ2Fpbi5saW5rKSB7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlYXJjaEFnYWluLmxpbmsucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLm9wdGlvbnMuc2VhcmNoQWdhaW4ubGluayk7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlYXJjaEFnYWluLmxpbmsgPSB1bmRlZmluZWQ7XHJcbiAgICAgIH1cclxuICAgICAgLy8gUmVtb3ZlIHByZXZpb3VzIHZhbHVlIGZyb20gdXNlcidzIHJlc3VsdCBmaWVsZFxyXG4gICAgICAvLyBMb29wIG92ZXIgdGhlaXIgZWxlbWVudHNcclxuICAgICAgZm9yIChjb25zdCBlbGVtZW50IGluIHRoaXMub3B0aW9ucy5lbGVtZW50cykge1xyXG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5vcHRpb25zLmVsZW1lbnRzLCBlbGVtZW50KSkge1xyXG4gICAgICAgICAgLy8gSWYgaXQgbWF0Y2hlcyBhbiBcImFkZHJlc3NcIiBlbGVtZW50XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlZmF1bHRzLmFkZHJlc3NMaW5lTGFiZWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGxhYmVsID0gZGVmYXVsdHMuYWRkcmVzc0xpbmVMYWJlbHNbaV07XHJcbiAgICAgICAgICAgIC8vIE9ubHkgcmVzZXQgdGhlIHZhbHVlIGlmIGl0J3Mgbm90IGFuIGlucHV0IGZpZWxkXHJcbiAgICAgICAgICAgIGlmIChsYWJlbCA9PT0gZWxlbWVudCAmJiB0aGlzLm9wdGlvbnMuZWxlbWVudHNbZWxlbWVudF0gIT09IHRoaXMuaW5wdXRzWzBdKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5vcHRpb25zLmVsZW1lbnRzW2VsZW1lbnRdLnZhbHVlID0gJyc7XHJcbiAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBjcmVhdGVBZGRyZXNzTGluZToge1xyXG4gICAgICAvLyBDcmVhdGUgYW4gaW5wdXQgdG8gc3RvcmUgdGhlIGFkZHJlc3MgbGluZVxyXG4gICAgICBpbnB1dDogKGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBjbGFzc05hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAgIC8vIENyZWF0ZSBhIHdyYXBwZXJcclxuICAgICAgICBjb25zdCBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgICBkaXYuY2xhc3NMaXN0LmFkZChjbGFzc05hbWUpO1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgdGhlIGxhYmVsXHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsYWJlbCcpO1xyXG4gICAgICAgIGxhYmVsLmlubmVySFRNTCA9IGtleS5yZXBsYWNlKC8oW0EtWl0pL2csICcgJDEnKSAvLyBBZGQgc3BhY2UgYmVmb3JlIGNhcGl0YWwgTGV0dGVyc1xyXG4gICAgICAgICAgLnJlcGxhY2UoLyhbMC05XSkvZywgJyAkMScpIC8vIEFkZCBzcGFjZSBiZWZvcmUgbnVtYmVyc1xyXG4gICAgICAgICAgLnJlcGxhY2UoL14uLywgZnVuY3Rpb24gKHN0cikgeyByZXR1cm4gc3RyLnRvVXBwZXJDYXNlKCk7IH0pOyAvLyBNYWtlIGZpcnN0IGxldHRlciBvZiB3b3JkIGEgY2FwaXRhbCBsZXR0ZXJcclxuICAgICAgICBkaXYuYXBwZW5kQ2hpbGQobGFiZWwpO1xyXG5cclxuICAgICAgICAvLyBDcmVhdGUgdGhlIGlucHV0XHJcbiAgICAgICAgY29uc3QgaW5wdXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbnB1dCcpO1xyXG4gICAgICAgIGlucHV0LnNldEF0dHJpYnV0ZSgndHlwZScsICd0ZXh0Jyk7XHJcbiAgICAgICAgaW5wdXQuc2V0QXR0cmlidXRlKCduYW1lJywga2V5KTtcclxuICAgICAgICBpbnB1dC5zZXRBdHRyaWJ1dGUoJ3ZhbHVlJywgdmFsdWUpO1xyXG4gICAgICAgIGRpdi5hcHBlbmRDaGlsZChpbnB1dCk7XHJcbiAgICAgICAgcmV0dXJuIGRpdjtcclxuICAgICAgfSxcclxuICAgICAgLy8gQ3JlYXRlIHRoZSBhZGRyZXNzIGxpbmUgbGFiZWwgYmFzZWQgb24gdGhlIGNvdW50cnkgYW5kIGxhbmd1YWdlXHJcbiAgICAgIGxhYmVsOiAoa2V5OiBzdHJpbmcpID0+IHtcclxuICAgICAgICBsZXQgbGFiZWwgPSBrZXk7XHJcbiAgICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLm9wdGlvbnMubGFuZ3VhZ2UudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBjb25zdCBjb3VudHJ5ID0gdGhpcy5jdXJyZW50Q291bnRyeUNvZGUudG9Mb3dlckNhc2UoKTtcclxuICAgICAgICBpZiAodHJhbnNsYXRpb25zKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCB0cmFuc2xhdGVkTGFiZWwgPSB0cmFuc2xhdGlvbnNbbGFuZ3VhZ2VdW2NvdW50cnldW2tleV07XHJcbiAgICAgICAgICAgIGlmICh0cmFuc2xhdGVkTGFiZWwpIHtcclxuICAgICAgICAgICAgICBsYWJlbCA9IHRyYW5zbGF0ZWRMYWJlbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAvLyBUcmFuc2xhdGlvbiBkb2Vzbid0IGV4aXN0IGZvciBrZXlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGxhYmVsO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gQ3JlYXRlIHRoZSBmb3JtYXR0ZWQgYWRkcmVzcyBjb250YWluZXIgYW5kIGluamVjdCBhZnRlciB0aGUgaW5wdXRcclxuICAgIGNyZWF0ZUZvcm1hdHRlZEFkZHJlc3NDb250YWluZXI6ICgpID0+IHtcclxuICAgICAgY29uc3QgY29udGFpbmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XHJcbiAgICAgIGNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdmb3JtYXR0ZWQtYWRkcmVzcycpO1xyXG5cclxuICAgICAgLy8gSWYgU2luZ2xlbGluZSBtb2RlIGlzIHVzZWQsIHRoZW4gYXBwZW5kIHRoZSBmb3JtYXR0ZWQgYWRkcmVzcyBhZnRlciB0aGUgbGFzdCBpbnB1dCBmaWVsZCwgb3RoZXJ3aXNlIHVzZSB0aGUgZmlyc3Qgb25lXHJcbiAgICAgIGNvbnN0IHBvc2l0aW9uID0gdGhpcy5zZWFyY2hUeXBlID09PSBBZGRyZXNzVmFsaWRhdGlvbk1vZGUuU0lOR0xFTElORSA/IHRoaXMuaW5wdXRzLmxlbmd0aCAtIDEgOiAwO1xyXG5cclxuICAgICAgLy8gSW5zZXJ0IHRoZSBjb250YWluZXIgYWZ0ZXIgdGhlIGlucHV0XHJcbiAgICAgIHRoaXMuaW5wdXRzW3Bvc2l0aW9uXS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShjb250YWluZXIsIHRoaXMuaW5wdXRzW3Bvc2l0aW9uXS5uZXh0U2libGluZyk7XHJcbiAgICAgIHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIgPSBjb250YWluZXI7XHJcbiAgICB9LFxyXG4gICAgLy8gQ3JlYXRlIGEgaGVhZGluZyBmb3IgdGhlIGZvcm1hdHRlZCBhZGRyZXNzIGNvbnRhaW5lclxyXG4gICAgY3JlYXRlSGVhZGluZzogKCkgPT4ge1xyXG4gICAgICAvLyBDcmVhdGUgYSBoZWFkaW5nIGZvciB0aGUgZm9ybWF0dGVkIGFkZHJlc3NcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnNob3dIZWFkaW5nKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGluZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGhpcy5vcHRpb25zLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuaGVhZGluZ1R5cGUpO1xyXG4gICAgICAgIGhlYWRpbmcuaW5uZXJIVE1MID0gdGhpcy5vcHRpb25zLmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIudmFsaWRhdGVkSGVhZGluZ1RleHQ7XHJcbiAgICAgICAgdGhpcy5yZXN1bHQuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5hcHBlbmRDaGlsZChoZWFkaW5nKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vIFVwZGF0ZSB0aGUgaGVhZGluZyB0ZXh0IGluIHRoZSBmb3JtYXR0ZWQgYWRkcmVzcyBjb250YWluZXJcclxuICAgIHVwZGF0ZUhlYWRpbmc6ICh0ZXh0KSA9PiB7XHJcbiAgICAgIC8vQ2hhbmdlIHRoZSBoZWFkaW5nIHRleHQgdG8gXCJNYW51YWwgYWRkcmVzcyBlbnRlcmVkXCJcclxuICAgICAgaWYgKHRoaXMub3B0aW9ucy5mb3JtYXR0ZWRBZGRyZXNzQ29udGFpbmVyLnNob3dIZWFkaW5nKSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGluZyA9IHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIucXVlcnlTZWxlY3Rvcih0aGlzLm9wdGlvbnMuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5oZWFkaW5nVHlwZSk7XHJcbiAgICAgICAgaGVhZGluZy5pbm5lckhUTUwgPSB0ZXh0O1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgY2FsY3VsYXRlSWZBZGRyZXNzTGluZUdlbmVyYXRpb25SZXF1aXJlZDogKCkgPT4ge1xyXG4gICAgICB0aGlzLnJlc3VsdC5nZW5lcmF0ZUFkZHJlc3NMaW5lUmVxdWlyZWQgPSB0cnVlO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRlZmF1bHRzLmFkZHJlc3NMaW5lTGFiZWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgY29uc3Qga2V5ID0gZGVmYXVsdHMuYWRkcmVzc0xpbmVMYWJlbHNbaV07XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5lbGVtZW50c1trZXldKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3VsdC5nZW5lcmF0ZUFkZHJlc3NMaW5lUmVxdWlyZWQgPSBmYWxzZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHVwZGF0ZUFkZHJlc3NMaW5lOiAoa2V5OiBzdHJpbmcsIGFkZHJlc3NMaW5lT2JqZWN0LCBjbGFzc05hbWU6IHN0cmluZykgPT4ge1xyXG4gICAgICAvLyBFaXRoZXIgYXBwZW5kIHRoZSByZXN1bHQgdG8gdGhlIHVzZXIncyBhZGRyZXNzIGZpZWxkIG9yIGNyZWF0ZSBhIG5ldyBmaWVsZCBmb3IgdGhlbVxyXG4gICAgICBpZiAodGhpcy5vcHRpb25zLmVsZW1lbnRzW2tleV0pIHtcclxuICAgICAgICBjb25zdCBhZGRyZXNzRmllbGQgPSB0aGlzLm9wdGlvbnMuZWxlbWVudHNba2V5XTtcclxuICAgICAgICB0aGlzLnJlc3VsdC51cGRhdGVMYWJlbChrZXkpO1xyXG4gICAgICAgIGxldCB2YWx1ZSA9IGFkZHJlc3NMaW5lT2JqZWN0O1xyXG4gICAgICAgIC8vIElmIGEgdmFsdWUgaXMgYWxyZWFkeSBwcmVzZW50LCBwcmVwZW5kIGEgY29tbWEgYW5kIHNwYWNlXHJcbiAgICAgICAgaWYgKGFkZHJlc3NGaWVsZC52YWx1ZSAmJiB2YWx1ZSkge1xyXG4gICAgICAgICAgdmFsdWUgPSAnLCAnICsgdmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIERlY2lkZSB3aGF0IHByb3BlcnR5IG9mIHRoZSBub2RlIHdlIG5lZWQgdG8gdXBkYXRlLiBpLmUuIGlmIGl0J3Mgbm90IGEgZm9ybSBmaWVsZCwgdXBkYXRlIHRoZSBpbm5lclRleHQuXHJcbiAgICAgICAgaWYgKGFkZHJlc3NGaWVsZC5ub2RlTmFtZSA9PT0gJ0lOUFVUJyB8fCBhZGRyZXNzRmllbGQubm9kZU5hbWUgPT09ICdURVhUQVJFQScgfHwgYWRkcmVzc0ZpZWxkLm5vZGVOYW1lID09PSAnU0VMRUNUJykge1xyXG4gICAgICAgICAgYWRkcmVzc0ZpZWxkLnZhbHVlICs9IHZhbHVlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBhZGRyZXNzRmllbGQuaW5uZXJUZXh0ICs9IHZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBTdG9yZSBhIHJlY29yZCBvZiB0aGVpciBsYXN0IGFkZHJlc3MgZmllbGRcclxuICAgICAgICB0aGlzLnJlc3VsdC5sYXN0QWRkcmVzc0ZpZWxkID0gYWRkcmVzc0ZpZWxkO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucmVzdWx0LmdlbmVyYXRlQWRkcmVzc0xpbmVSZXF1aXJlZCkge1xyXG4gICAgICAgIC8vIENyZWF0ZSBhbiBpbnB1dCB0byBzdG9yZSB0aGUgYWRkcmVzcyBsaW5lXHJcbiAgICAgICAgY29uc3QgbGFiZWwgPSB0aGlzLnJlc3VsdC5jcmVhdGVBZGRyZXNzTGluZS5sYWJlbChrZXkpO1xyXG4gICAgICAgIGNvbnN0IGZpZWxkID0gdGhpcy5yZXN1bHQuY3JlYXRlQWRkcmVzc0xpbmUuaW5wdXQobGFiZWwsIGFkZHJlc3NMaW5lT2JqZWN0LCBjbGFzc05hbWUpO1xyXG4gICAgICAgIC8vIEluc2VydCBpbnRvIERPTVxyXG4gICAgICAgIHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuYXBwZW5kQ2hpbGQoZmllbGQpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gVXBkYXRlIHRoZSBsYWJlbCBpZiB0cmFuc2xhdGlvbiBpcyBwcmVzZW50XHJcbiAgICB1cGRhdGVMYWJlbDogKGtleTogc3RyaW5nKSA9PiB7XHJcbiAgICAgIGxldCBsYWJlbCA9IGtleTtcclxuICAgICAgY29uc3QgbGFuZ3VhZ2UgPSB0aGlzLm9wdGlvbnMubGFuZ3VhZ2UudG9Mb3dlckNhc2UoKTtcclxuICAgICAgY29uc3QgY291bnRyeSA9IHRoaXMuY3VycmVudENvdW50cnlDb2RlLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGlmICh0cmFuc2xhdGlvbnMpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgY29uc3QgdHJhbnNsYXRlZExhYmVsID0gdHJhbnNsYXRpb25zW2xhbmd1YWdlXVtjb3VudHJ5XVtrZXldO1xyXG4gICAgICAgICAgaWYgKHRyYW5zbGF0ZWRMYWJlbCkge1xyXG4gICAgICAgICAgICBsYWJlbCA9IHRyYW5zbGF0ZWRMYWJlbDtcclxuICAgICAgICAgICAgY29uc3QgbGFiZWxzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2xhYmVsJyk7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGFiZWxzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxhYmVsc1tpXS5odG1sRm9yID09PSBrZXkpIHtcclxuICAgICAgICAgICAgICAgIGxhYmVsc1tpXS5pbm5lckhUTUwgPSB0cmFuc2xhdGVkTGFiZWw7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgLy8gVHJhbnNsYXRpb24gZG9lc24ndCBleGlzdCBmb3Iga2V5XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBsYWJlbDtcclxuICAgIH0sXHJcbiAgICAvLyBDcmVhdGUgdGhlICdTZWFyY2ggYWdhaW4nIGxpbmsgdGhhdCByZXNldHMgdGhlIHNlYXJjaFxyXG4gICAgY3JlYXRlU2VhcmNoQWdhaW5MaW5rOiAoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuc2VhcmNoQWdhaW4udmlzaWJsZSkge1xyXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdidXR0b24nKTtcclxuICAgICAgICBsaW5rLnNldEF0dHJpYnV0ZSgndHlwZScsICdidXR0b24nKTtcclxuICAgICAgICBsaW5rLmNsYXNzTGlzdC5hZGQoJ3NlYXJjaC1hZ2Fpbi1idXR0b24nKTtcclxuICAgICAgICBsaW5rLmlubmVyVGV4dCA9IHRoaXMub3B0aW9ucy5zZWFyY2hBZ2Fpbi50ZXh0O1xyXG4gICAgICAgIC8vIEJpbmQgZXZlbnQgbGlzdGVuZXJcclxuICAgICAgICBsaW5rLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgdGhpcy5nbG9iYWxSZXNldC5iaW5kKHRoaXMpKTtcclxuICAgICAgICAvLyBTdG9yZSBhIHJlZmVyZW5jZSB0byB0aGUgbGluayBlbGVtZW50XHJcbiAgICAgICAgdGhpcy5vcHRpb25zLnNlYXJjaEFnYWluLmxpbmsgPSBsaW5rO1xyXG5cclxuICAgICAgICAvLyBJbnNlcnQgaW50byB0aGUgZm9ybWF0dGVkIGFkZHJlc3MgY29udGFpbmVyXHJcbiAgICAgICAgaWYgKHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIpIHtcclxuICAgICAgICAgIHRoaXMucmVzdWx0LmZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIuYXBwZW5kQ2hpbGQobGluayk7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlc3VsdC5sYXN0QWRkcmVzc0ZpZWxkKSB7XHJcbiAgICAgICAgICAvLyBJbnNlcnQgYWZ0ZXIgbGFzdCBhZGRyZXNzIGZpZWxkXHJcbiAgICAgICAgICB0aGlzLnJlc3VsdC5sYXN0QWRkcmVzc0ZpZWxkLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGxpbmssIHRoaXMucmVzdWx0Lmxhc3RBZGRyZXNzRmllbGQubmV4dFNpYmxpbmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIC8vIFdyaXRlIHRoZSBsaXN0IG9mIGhpZGRlbiBhZGRyZXNzIGxpbmUgaW5wdXRzIHRvIHRoZSBET01cclxuICAgIHJlbmRlcklucHV0TGlzdDogKGlucHV0QXJyYXkpID0+IHtcclxuICAgICAgaWYgKGlucHV0QXJyYXkubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW5wdXRBcnJheS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgdGhpcy5yZXN1bHQuZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lci5hcHBlbmRDaGlsZChpbnB1dEFycmF5W2ldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICAvLyBEZWNpZGUgd2hldGhlciB0byBlaXRoZXIgc2hvdyBhIHBpY2tsaXN0IG9yIGEgdmVyaWZpZWQgcmVzdWx0IGZyb20gYSBWYWxpZGF0ZSByZXNwb25zZVxyXG4gICAgaGFuZGxlVmFsaWRhdGVSZXNwb25zZTogKHJlc3BvbnNlOiBTZWFyY2hSZXNwb25zZSkgPT4ge1xyXG4gICAgICBpZiAocmVzcG9uc2UucmVzdWx0LmNvbmZpZGVuY2UgPT09ICdWZXJpZmllZCBtYXRjaCcpIHtcclxuICAgICAgICAvLyBJZiB0aGUgcmVzcG9uc2UgY29udGFpbnMgYW4gYWRkcmVzcywgdGhlbiB1c2UgdGhpcyBkaXJlY3RseSBpbiB0aGUgcmVzdWx0XHJcbiAgICAgICAgaWYgKHJlc3BvbnNlLnJlc3VsdC5hZGRyZXNzKSB7XHJcbiAgICAgICAgICB0aGlzLnJlc3VsdC5zaG93KHJlc3BvbnNlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnJlc3VsdC5zdWdnZXN0aW9ucykge1xyXG4gICAgICAgICAgLy8gSWYgdGhlIHZlcmlmaWVkIG1hdGNoIHN0aWxsIGNvbnRhaW5zIGEgc3VnZ2VzdGlvbiwgdGhlbiB3ZSBuZWVkIHRvIGZvcm1hdCB0aGlzIGZpcnN0XHJcbiAgICAgICAgICB0aGlzLmZvcm1hdChyZXNwb25zZS5yZXN1bHQuc3VnZ2VzdGlvbnNbMF0uZm9ybWF0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSBpZiAocmVzcG9uc2UucmVzdWx0LnN1Z2dlc3Rpb25zKSB7XHJcbiAgICAgICAgLy8gSWYgdGhlIHVzZXIgbmVlZHMgdG8gcGljayBhIHN1Z2dlc3Rpb24sIHRoZW4gZGlzcGxheSB0aGUgcGlja2xpc3RcclxuICAgICAgICB0aGlzLnBpY2tsaXN0LnNob3cocmVzcG9uc2UpO1xyXG4gICAgICB9IGVsc2UgaWYgKHJlc3BvbnNlLnJlc3VsdC5jb25maWRlbmNlID09PSAnTm8gbWF0Y2hlcycpIHtcclxuICAgICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gbWF0Y2hlcywgdGhlbiBhbGxvdyBcInVzZSBhZGRyZXNzIGVudGVyZWRcIlxyXG4gICAgICAgIHRoaXMucGlja2xpc3QuaGFuZGxlRW1wdHlQaWNrbGlzdChyZXNwb25zZSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwcml2YXRlIGNoZWNrVGFiKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XHJcbiAgICBjb25zdCBrZXkgPSB0aGlzLmdldEtleShldmVudCk7XHJcbiAgICBpZiAoa2V5ID09PSAnVGFiJykge1xyXG4gICAgICB0aGlzLnBpY2tsaXN0LmtleXVwKGV2ZW50KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfSBlbHNlIGlmIChrZXkgPT09ICdFbnRlcicpIHtcclxuICAgICAgLy8gUHJldmVudCBhbiAnRW50ZXInIGtleXByZXNzIG9uIHRoZSBpbnB1dCBzdWJtaXR0aW5nIHRoZSBmb3JtXHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHNlYXJjaFNwaW5uZXIgPSB7XHJcbiAgICBzaG93OiAoKSA9PiB7XHJcbiAgICAgIC8vIFJldHVybiBpZiB3ZSdyZSBub3QgZGlzcGxheWluZyBhIHNwaW5uZXJcclxuICAgICAgaWYgKCF0aGlzLm9wdGlvbnMudXNlU3Bpbm5lcikge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICAvLyBDcmVhdGUgdGhlIHNwaW5uZXIgY29udGFpbmVyXHJcbiAgICAgIGNvbnN0IHNwaW5uZXJDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcclxuICAgICAgc3Bpbm5lckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdsb2FkZXInKTtcclxuICAgICAgc3Bpbm5lckNvbnRhaW5lci5jbGFzc0xpc3QuYWRkKCdsb2FkZXItaW5saW5lJyk7XHJcblxyXG4gICAgICAvLyBDcmVhdGUgdGhlIHNwaW5uZXJcclxuICAgICAgY29uc3Qgc3Bpbm5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xyXG4gICAgICBzcGlubmVyLmNsYXNzTGlzdC5hZGQoJ3NwaW5uZXInKTtcclxuICAgICAgc3Bpbm5lckNvbnRhaW5lci5hcHBlbmRDaGlsZChzcGlubmVyKTtcclxuXHJcbiAgICAgIC8vIEluc2VydCB0aGUgc3Bpbm5lciBhZnRlciB0aGUgZmllbGRcclxuICAgICAgdGhpcy5pbnB1dHNbMF0ucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKHNwaW5uZXJDb250YWluZXIsIHRoaXMuaW5wdXRzWzBdLm5leHRTaWJsaW5nKTtcclxuICAgIH0sXHJcblxyXG4gICAgaGlkZTogKCkgPT4ge1xyXG4gICAgICAvLyBSZXR1cm4gaWYgd2UncmUgbm90IGRpc3BsYXlpbmcgYSBzcGlubmVyXHJcbiAgICAgIGlmICghdGhpcy5vcHRpb25zLnVzZVNwaW5uZXIpIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc3Qgc3Bpbm5lciA9IHRoaXMuaW5wdXRzWzBdLnBhcmVudE5vZGU/LnF1ZXJ5U2VsZWN0b3IoJy5sb2FkZXItaW5saW5lJyk7XHJcbiAgICAgIGlmIChzcGlubmVyKSB7XHJcbiAgICAgICAgdGhpcy5pbnB1dHNbMF0ucGFyZW50Tm9kZT8ucmVtb3ZlQ2hpbGQoc3Bpbm5lcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICAvLyBUb2dnbGUgdGhlIFwiaGlkZGVuXCIgY2xhc3MgdG8gZWl0aGVyIHNob3cgb3IgaGlkZSB0aGUgaW5wdXQgYW5kIGNvdW50cnkgZmllbGQocylcclxuICBwcml2YXRlIHRvZ2dsZVNlYXJjaElucHV0cyhzdGF0ZTogJ3Nob3cnIHwgJ2hpZGUnKSB7XHJcbiAgICBjb25zdCBtb2RpZmllciA9IHN0YXRlID09PSAnc2hvdycgPyAncmVtb3ZlJyA6ICdhZGQnO1xyXG4gICAgdGhpcy5vcHRpb25zLmVsZW1lbnRzLmlucHV0cz8uZm9yRWFjaChpbnB1dCA9PiBpbnB1dC5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKS5mb3JFYWNoKGVsZW1lbnQgPT4gZWxlbWVudC5jbGFzc0xpc3RbbW9kaWZpZXJdKCdoaWRkZW4nKSkpO1xyXG4gICAgdGhpcy5vcHRpb25zLmVsZW1lbnRzLmNvdW50cnlMaXN0Py5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKS5mb3JFYWNoKGVsZW1lbnQgPT4gZWxlbWVudC5jbGFzc0xpc3RbbW9kaWZpZXJdKCdoaWRkZW4nKSk7XHJcbiAgICB0aGlzLm9wdGlvbnMuZWxlbWVudHMubG9va3VwQnV0dG9uPy5wYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJy50b2dnbGUnKS5mb3JFYWNoKGVsZW1lbnQgPT4gZWxlbWVudC5jbGFzc0xpc3RbbW9kaWZpZXJdKCdoaWRkZW4nKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdsb2JhbFJlc2V0KGV2ZW50Pykge1xyXG4gICAgaWYgKGV2ZW50KSB7XHJcbiAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICB9XHJcbiAgICAvLyBFbmFibGUgc2VhcmNoaW5nXHJcbiAgICB0aGlzLm9wdGlvbnMuZW5hYmxlZCA9IHRydWU7XHJcbiAgICAvLyBIaWRlIGZvcm1hdHRlZCBhZGRyZXNzXHJcbiAgICB0aGlzLnJlc3VsdC5oaWRlKCk7XHJcbiAgICAvLyBSZXNldCBzZWFyY2ggaW5wdXQgYmFja1xyXG4gICAgdGhpcy5oYXNTZWFyY2hJbnB1dEJlZW5SZXNldCA9IHRydWU7XHJcblxyXG4gICAgLy8gQ2xlYXIgdGhlIGlucHV0IGZpZWxkKHMpXHJcbiAgICB0aGlzLmlucHV0cy5mb3JFYWNoKGlucHV0ID0+IGlucHV0LnZhbHVlID0gJycpO1xyXG4gICAgLy8gUmVtb3ZlIHRoZSBwaWNrbGlzdCAoaWYgcHJlc2VudClcclxuICAgIHRoaXMucGlja2xpc3QuaGlkZSgpO1xyXG4gICAgLy8gU2hvdyBzZWFyY2ggaW5wdXRcclxuICAgIHRoaXMudG9nZ2xlU2VhcmNoSW5wdXRzKCdzaG93Jyk7XHJcbiAgICAvLyBBcHBseSBmb2N1cyB0byBpbnB1dFxyXG4gICAgdGhpcy5pbnB1dHNbMF0uZm9jdXMoKTtcclxuXHJcbiAgICAvLyBGaXJlIGFuIGV2ZW50IGFmdGVyIGEgcmVzZXRcclxuICAgIHRoaXMuZXZlbnRzLnRyaWdnZXIoJ3Bvc3QtcmVzZXQnKTtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IEFkZHJlc3NWYWxpZGF0aW9uIGZyb20gJy4vYWRkcmVzcy1zZWFyY2gnO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIEFkZHJlc3NWYWxpZGF0aW9uOiBhbnk7XG4gIH1cbn1cblxud2luZG93LkFkZHJlc3NWYWxpZGF0aW9uID0gQWRkcmVzc1ZhbGlkYXRpb247Il0sIm5hbWVzIjpbIkFkZHJlc3NWYWxpZGF0aW9uTW9kZSIsImNvbGxlY3Rpb24iLCJvbiIsImV2ZW50IiwiYWN0aW9uIiwidGhpcyIsInB1c2giLCJ0cmlnZ2VyIiwiZGF0YSIsImkiLCJsZW5ndGgiLCJhcmdzIiwiYSIsImFyZ3VtZW50cyIsImFwcGx5IiwiZSIsImluc3RhbmNlIiwic2VuZCIsInVybCIsIm1ldGhvZCIsImNhbGxiYWNrIiwiaGVhZGVycyIsImN1cnJlbnRSZXF1ZXN0IiwiWE1MSHR0cFJlcXVlc3QiLCJvcGVuIiwidGltZW91dCIsInNldFJlcXVlc3RIZWFkZXIiLCJvcHRpb25zIiwidG9rZW4iLCJmb3JFYWNoIiwiaGVhZGVyIiwia2V5IiwidmFsdWUiLCJvbmxvYWQiLCJ4aHIiLCJzdGF0dXMiLCJKU09OIiwicGFyc2UiLCJyZXNwb25zZVRleHQiLCJzZWFyY2hTcGlubmVyIiwiaGlkZSIsImV2ZW50cyIsIm9uZXJyb3IiLCJvbnRpbWVvdXQiLCJkZWZhdWx0cyIsImVuYWJsZVdoYXQzV29yZHMiLCJzZWFyY2hUeXBlIiwiQVVUT0NPTVBMRVRFIiwiaW5wdXQiLCJwbGFjZWhvbGRlclRleHQiLCJhcHBseUZvY3VzIiwiZm9ybWF0dGVkQWRkcmVzc0NvbnRhaW5lciIsInNob3dIZWFkaW5nIiwiaGVhZGluZ1R5cGUiLCJ2YWxpZGF0ZWRIZWFkaW5nVGV4dCIsIm1hbnVhbEhlYWRpbmdUZXh0Iiwic2VhcmNoQWdhaW4iLCJ2aXNpYmxlIiwidGV4dCIsInVzZUFkZHJlc3NFbnRlcmVkVGV4dCIsInVzZVNwaW5uZXIiLCJsYW5ndWFnZSIsImFkZHJlc3NMaW5lTGFiZWxzIiwiZGF0YXNldENvZGVzIiwiY291bnRyeSIsImlzbzNDb2RlIiwiaXNvMkNvZGUiLCJkYXRhc2V0Q29kZSIsInRyYW5zbGF0aW9ucyIsImVuIiwiZ2JyIiwibG9jYWxpdHkiLCJyZWdpb24iLCJwb3N0YWxfY29kZSIsInVzYSIsInNpemUiLCJtYXhTdWdnZXN0aW9ucyIsImJhc2VVcmwiLCJzZWFyY2hFbmRwb2ludCIsImxvb2t1cEVuZHBvaW50IiwidmFsaWRhdGVFbmRwb2ludCIsInByb21wdHNldEVuZHBvaW50Iiwic3RlcEluRW5kcG9pbnQiLCJyZWZpbmVFbmRwb2ludCIsImVucmljaG1lbnRFbmRwb2ludCIsIndoYXQzV29yZENvdW50cmllcyIsIndoYXQzV29yZHNLZXl3b3JkIiwicG93ZXJlZEJ5TG9nbyIsImVsZW1lbnQiLCJjcmVhdGUiLCJwaWNrbGlzdCIsIml0ZW0iLCJzdmciLCJmb3JtYXQiLCJsaXN0SXRlbSIsImNyZWF0ZUxpc3RJdGVtIiwiY2xhc3NMaXN0IiwiYWRkIiwibGlzdCIsInBhcmVudE5vZGUiLCJhcHBlbmRDaGlsZCIsImRlc3Ryb3kiLCJyZW1vdmVDaGlsZCIsInVuZGVmaW5lZCIsInJlc3VsdCIsImxhc3RBZGRyZXNzRmllbGQiLCJnZW5lcmF0ZUFkZHJlc3NMaW5lUmVxdWlyZWQiLCJzaG93IiwibGFzdFNlYXJjaFRlcm0iLCJhZGRyZXNzIiwiY29uZmlkZW5jZSIsImlucHV0cyIsImNhbGN1bGF0ZUlmQWRkcmVzc0xpbmVHZW5lcmF0aW9uUmVxdWlyZWQiLCJlbGVtZW50cyIsImNyZWF0ZUZvcm1hdHRlZEFkZHJlc3NDb250YWluZXIiLCJPYmplY3QiLCJrZXlzIiwiYWRkcmVzc0NvbXBvbmVudCIsInVwZGF0ZUFkZHJlc3NMaW5lIiwidG9nZ2xlU2VhcmNoSW5wdXRzIiwiaGFzU2VhcmNoSW5wdXRCZWVuUmVzZXQiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJjcmVhdGVTZWFyY2hBZ2FpbkxpbmsiLCJsaW5rIiwiY3JlYXRlQWRkcmVzc0xpbmUiLCJjbGFzc05hbWUiLCJkaXYiLCJkb2N1bWVudCIsImNyZWF0ZUVsZW1lbnQiLCJsYWJlbCIsImlubmVySFRNTCIsInJlcGxhY2UiLCJzdHIiLCJ0b1VwcGVyQ2FzZSIsInNldEF0dHJpYnV0ZSIsInRvTG93ZXJDYXNlIiwiY3VycmVudENvdW50cnlDb2RlIiwidHJhbnNsYXRlZExhYmVsIiwiY29udGFpbmVyIiwicG9zaXRpb24iLCJTSU5HTEVMSU5FIiwiaW5zZXJ0QmVmb3JlIiwibmV4dFNpYmxpbmciLCJjcmVhdGVIZWFkaW5nIiwiaGVhZGluZyIsInVwZGF0ZUhlYWRpbmciLCJxdWVyeVNlbGVjdG9yIiwiYWRkcmVzc0xpbmVPYmplY3QiLCJhZGRyZXNzRmllbGQiLCJ1cGRhdGVMYWJlbCIsIm5vZGVOYW1lIiwiaW5uZXJUZXh0IiwiZmllbGQiLCJsYWJlbHMiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsImh0bWxGb3IiLCJhZGRFdmVudExpc3RlbmVyIiwiZ2xvYmFsUmVzZXQiLCJiaW5kIiwicmVuZGVySW5wdXRMaXN0IiwiaW5wdXRBcnJheSIsImhhbmRsZVZhbGlkYXRlUmVzcG9uc2UiLCJyZXNwb25zZSIsInN1Z2dlc3Rpb25zIiwiaGFuZGxlRW1wdHlQaWNrbGlzdCIsInNwaW5uZXJDb250YWluZXIiLCJzcGlubmVyIiwibWVyZ2VEZWZhdWx0T3B0aW9ucyIsInNldHVwIiwic2V0VG9rZW4iLCJzZXRTZWFyY2hUeXBlIiwic2V0SW5wdXRzIiwiZ2V0RW5yaWNobWVudERhdGEiLCJnbG9iYWxBZGRyZXNzS2V5IiwiY291bnRyeV9pc28iLCJnbG9iYWxfYWRkcmVzc19rZXkiLCJhdHRyaWJ1dGVzIiwiZ2VvY29kZXMiLCJ3aGF0M3dvcmRzIiwic2hvdWxkVHJpZ2dlcldoYXQzV29yZHNFbnJpY2htZW50IiwicmVxdWVzdCIsImhhbmRsZUVucmljaG1lbnRSZXN1bHQiLCJzdHJpbmdpZnkiLCJzZXRDb3VudHJ5TGlzdCIsImNyZWF0ZVBpY2tsaXN0Iiwic2V0VGltZW91dCIsImdldFBhcmFtZXRlciIsIm5hbWUiLCJyZXN1bHRzIiwiUmVnRXhwIiwiZXhlYyIsImxvY2F0aW9uIiwic2VhcmNoIiwiZGVjb2RlVVJJQ29tcG9uZW50IiwiY3VzdG9tT3B0aW9ucyIsImVuYWJsZWQiLCJnZXRQcm9tcHRzZXQiLCJjdXJyZW50RGF0YVNldCIsImxvb2t1cERhdGFzZXRDb2RlIiwiaGFuZGxlUHJvbXB0c2V0UmVzdWx0IiwibGluZXMiLCJleGFtcGxlIiwicHJvbXB0Iiwic3VnZ2VzdGVkX2lucHV0X2xlbmd0aCIsIlZBTElEQVRFIiwiZGF0YXNldHMiLCJBcnJheSIsImlzQXJyYXkiLCJzZWFyY2hfdHlwZSIsInByb21wdF9zZXQiLCJmaW5kIiwiZGF0YXNldCIsImluY2x1ZGVzIiwicmVnaXN0ZXJJbnB1dHMiLCJsb29rdXBCdXR0b24iLCJsb29rdXBGbiIsImZyb20iLCJrZXlVcEZuIiwiY2hlY2tUYWJGbiIsImNoZWNrVGFiIiwiaGFuZGxlS2V5Ym9hcmRFdmVudCIsImNvdW50cnlDb2RlTWFwcGluZyIsImZvY3VzIiwiY291bnRyeUxpc3QiLCJoYW5kbGVDb3VudHJ5TGlzdENoYW5nZSIsImNvdW50cnlDb2RlIiwiRXJyb3IiLCJnZW5lcmF0ZVNlYXJjaERhdGFGb3JBcGlDYWxsIiwiY29tcG9uZW50cyIsInVuc3BlY2lmaWVkIiwiY3VycmVudFNlYXJjaFRlcm0iLCJtYXhfc3VnZ2VzdGlvbnMiLCJWYWx1ZSIsImdlbmVyYXRlTG9va3VwRGF0YUZvckFwaUNhbGwiLCJzaG91bGRHZXRTdWdnZXN0aW9ucyIsInR5cGUiLCJnZXRXaGF0M1dvcmRzTG9va3VwVmFsdWUiLCJzdGFydHNXaXRoIiwic2xpY2UiLCJwcmV2ZW50RGVmYXVsdCIsImdldEtleSIsImtleXVwIiwibWFwIiwiam9pbiIsImNvdW50cnlDb2RlQW5kRGF0YXNldCIsInNwbGl0IiwiY2FuU2VhcmNoIiwiYWJvcnQiLCJ0ZXN0IiwidHJpbSIsImluZGV4T2YiLCJpc1doYXQzV29yZHMiLCJzaG93V2hhdDNXb3JkcyIsIlBpY2tsaXN0IiwidGFiQ291bnQiLCJpdGVtcyIsImhhbmRsZUNvbW1vblNob3dQaWNrbGlzdExvZ2ljIiwicmVmaW5lIiwiaXNOZWVkZWQiLCJjcmVhdGVJbnB1dCIsInN1Z2dlc3Rpb25zX3Byb21wdCIsInN1Z2dlc3Rpb25zX2tleSIsImRpc3BsYXlTdWdnZXN0aW9uc0hlYWRlciIsImxpc3RlbiIsImRpc3BsYXlVc2VBZGRyZXNzRW50ZXJlZEZvb3RlciIsInNjcm9sbEludG9WaWV3SWZOZWVkZWQiLCJ3aGF0M3dvcmRzSXRlbXMiLCJjcmVhdGVXaGF0M1dvcmRzTGlzdEl0ZW0iLCJzaG93TG9va3VwIiwibG9va3VwSXRlbXMiLCJhZGRyZXNzZXMiLCJjcmVhdGVMb29rdXBMaXN0SXRlbSIsImN1cnJlbnRJdGVtIiwicmVzZXRUYWJDb3VudCIsImNyZWF0ZUxpc3QiLCJ1c2VBZGRyZXNzRW50ZXJlZCIsInJlbW92ZSIsImhhbmRsZUVtcHR5UGlja2xpc3RDYWxsYmFjayIsInRpdGxlRGl2IiwiY29udGFpbmVyRGl2IiwibmV4dEVsZW1lbnRTaWJsaW5nIiwiaXRlbURpdiIsImNsaWNrIiwib3V0T2ZCb3VuZHNUb3AiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJ0b3AiLCJvdXRPZkJvdW5kc0JvdHRvbSIsImJvdHRvbSIsIndpbmRvdyIsImlubmVySGVpZ2h0Iiwic2Nyb2xsSW50b1ZpZXciLCJmaXJzdENoaWxkIiwiaW5wdXREYXRhIiwiYWRkcmVzc19saW5lXzEiLCJhZGRyZXNzX2xpbmVfMiIsImFkZHJlc3NfbGluZV8zIiwiZm9ybWF0TWFudWFsQWRkcmVzc0xpbmUiLCJsaW5lT2JqZWN0IiwiY2hlY2tFbnRlciIsInJvdyIsImFkZE1hdGNoaW5nRW1waGFzaXMiLCJkZXNjcmlwdGlvbiIsImVudGVyIiwiYnV0dG9uIiwiS2V5Ym9hcmRFdmVudCIsIk1vdXNlRXZlbnQiLCJzdG9wUHJvcGFnYXRpb24iLCJyZWZpbmVtZW50IiwiZ2V0QXR0cmlidXRlIiwiZmlyc3RBZGRyZXNzIiwibGFzdEFkZHJlc3MiLCJxdWVyeVNlbGVjdG9yQWxsIiwiY3VycmVudGx5SGlnaGxpZ2h0ZWQiLCJwcmV2aW91c2x5SGlnaGxpZ2h0ZWQiLCJhZGRyZXNzTGlzdENvb3JkcyIsIm9mZnNldFRvcCIsIm9mZnNldEhlaWdodCIsInNjcm9sbFRvcCIsImhpZ2hsaWdodHMiLCJtYXRjaGVkIiwicmVwbGFjZW1lbnQiLCJzdWJzdHJpbmciLCJwaWNrIiwicGlja2xpc3RJdGVtIiwibG9va3VwIiwibG9va3VwVjJSZXF1ZXN0Iiwic3RhdGUiLCJtb2RpZmllciIsIkFkZHJlc3NWYWxpZGF0aW9uIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/dist/lib/address-search.d.ts b/dist/lib/address-search.d.ts index d34724b..e084ca2 100644 --- a/dist/lib/address-search.d.ts +++ b/dist/lib/address-search.d.ts @@ -19,6 +19,7 @@ export default class AddressValidation { private inputs; private lastSearchTerm; private currentSearchTerm; + private shouldTriggerWhat3WordsEnrichment; private currentCountryCode; private currentDataSet; private hasSearchInputBeenReset; diff --git a/index.html b/index.html index 886cd1d..5794eab 100644 --- a/index.html +++ b/index.html @@ -341,6 +341,7 @@

Validated address information

+ Download sample code @@ -466,13 +467,31 @@

Validated address information

// Display a map with the lat/long details after a data enrichment lookup address.events.on("post-enrichment", function(data) { - if (data.result.geocodes && data.result.geocodes.latitude) { + if ((data.result.geocodes && data.result.geocodes.latitude) || + (data.result.what3words && data.result.what3words.latitude)) { document.querySelector("#map").classList.remove("hidden"); + + let lat, long; + if (data.result.what3words) { + document.querySelector(".metadata #what3words-key").classList.remove("hidden"); + document.querySelector(".metadata #what3words-value").classList.remove("hidden"); + document.querySelector(".metadata #what3words-value").innerHTML = '///' + data.result.what3words.name; + + lat = data.result.what3words.latitude; + long = data.result.what3words.longitude; + } else { + document.querySelector(".metadata #what3words-key").classList.add("hidden"); + document.querySelector(".metadata #what3words-value").classList.add("hidden"); + + lat = data.result.geocodes.latitude; + long = data.result.geocodes.longitude; + } - var latlong = [data.result.geocodes.latitude, data.result.geocodes.longitude]; + var latlong = [lat, long]; var zoom = 16; var attribution = '© OpenStreetMap contributors'; + // Intantiate a new map if (!addressValidationMap) { addressValidationMap = L.map('map').setView(latlong, zoom); diff --git a/src/css/experian-address-validation.css b/src/css/experian-address-validation.css index 5f8862c..f0e5f9c 100644 --- a/src/css/experian-address-validation.css +++ b/src/css/experian-address-validation.css @@ -191,4 +191,13 @@ input.showing-suggestions { font-style: italic; padding-top: 0px; font-size: 12px; +} + +#what3words-key { + padding-top: 10px; + padding-right: 5px; +} + +#what3words-value { + padding-top: 10px; } \ No newline at end of file diff --git a/src/images/w3w_Symbol_RGB_WhiteRed.png b/src/images/w3w_Symbol_RGB_WhiteRed.png new file mode 100644 index 0000000..5a7b829 Binary files /dev/null and b/src/images/w3w_Symbol_RGB_WhiteRed.png differ diff --git a/src/ts/address-search.ts b/src/ts/address-search.ts index ed73e8c..8922351 100644 --- a/src/ts/address-search.ts +++ b/src/ts/address-search.ts @@ -27,6 +27,7 @@ export default class AddressValidation { private inputs: HTMLInputElement[]; private lastSearchTerm: string; private currentSearchTerm: string; + private shouldTriggerWhat3WordsEnrichment: boolean; private currentCountryCode: string; private currentDataSet: string | string[]; private hasSearchInputBeenReset: boolean; @@ -64,9 +65,12 @@ export default class AddressValidation { global_address_key: globalAddressKey }, attributes: { - geocodes: ['latitude', 'longitude', 'match_level'] + geocodes: ['latitude', 'longitude', 'match_level'], + what3words: this.shouldTriggerWhat3WordsEnrichment ? + ['latitude', 'longitude', 'name', 'description'] : null } }; + this.events.trigger('pre-enrichment'); this.request.send(this.baseUrl + this.enrichmentEndpoint, 'POST', this.handleEnrichmentResult.bind(this), JSON.stringify(data)); } @@ -392,6 +396,7 @@ export default class AddressValidation { } else { this.isWhat3Words = false; + this.shouldTriggerWhat3WordsEnrichment = false; } // Fire an event before a search takes place @@ -1065,6 +1070,9 @@ export default class AddressValidation { const headers = [{ key: 'Add-Addresses', value: true }]; const callback = this.picklist.showLookup; + //Set the shouldTriggerWhat3WordsEnrichment so that we can trigger it after the user chooses an address. + this.shouldTriggerWhat3WordsEnrichment = true; + // Initiate new Search request this.request.send(url, 'POST', callback, lookupV2Request, headers); }