ZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvLmdpdGlnbm9yZSBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvLmdpdGlnbm9yZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWRiNTA3Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC8uZ2l0aWdub3JlCkBAIC0wLDAgKzEsMzggQEAKKyMgQ29tcGlsZWQgc291cmNlICMKKyMjIyMjIyMjIyMjIyMjIyMjIyMKKyouY29tCisqLmNsYXNzCisqLmRsbAorKi5leGUKKyoubworKi5zbworKi5weWMKKyoubWluLmNzcworIyoubWluLmpzCisuc2Fzcy1jYWNoZS8qCisKKyMgUGFja2FnZXMgIworIyMjIyMjIyMjIyMjCisjIGl0J3MgYmV0dGVyIHRvIHVucGFjayB0aGVzZSBmaWxlcyBhbmQgY29tbWl0IHRoZSByYXcgc291cmNlCisjIGdpdCBoYXMgaXRzIG93biBidWlsdCBpbiBjb21wcmVzc2lvbiBtZXRob2RzCisqLjd6CisqLmRtZworKi5negorKi5pc28KKyoucmFyCisqLnRhcgorKi56aXAKKworIyBMb2dzIGFuZCBkYXRhYmFzZXMgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKi5sb2cKKyouc3FsCisqLnNxbGl0ZQorCisjIE9TIGdlbmVyYXRlZCBmaWxlcyAjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisuRFNfU3RvcmUqCitlaHRodW1icy5kYgorSWNvbj8KK1RodW1icy5kYgorKn4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL0RvY0RyaXZlblRlc3RpbmdfRWNvbkJvc3RvbjIwMTMuaHRtbCBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvRG9jRHJpdmVuVGVzdGluZ19FY29uQm9zdG9uMjAxMy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4NTFjY2EKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL0RvY0RyaXZlblRlc3RpbmdfRWNvbkJvc3RvbjIwMTMuaHRtbApAQCAtMCwwICsxLDU1MSBAQAorPCEtLQorR29vZ2xlIElPIDIwMTIgSFRNTDUgU2xpZGUgVGVtcGxhdGUKKworQXV0aG9yczogRXJpYyBCaWRlbG1hbiA8ZWJpZGVsQGdtYWlsLmNvbT4KKyAgICAgICAgIEx1a2UgTWFow6kgPGx1a2VtQGdvb2dsZS5jb20+CisKK1VSTDogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9pby0yMDEyLXNsaWRlcworLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJjaHJvbWU9MSI+CisgIDwhLS08bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWluaW11bS1zY2FsZT0xLjAiPi0tPgorICA8IS0tPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPi0tPgorICA8IS0tVGhpcyBvbmUgc2VlbXMgdG8gd29yayBhbGwgdGhlIHRpbWUsIGJ1dCByZWFsbHkgc21hbGwgb24gaXBhZC0tPgorICA8IS0tPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MC40Ij4tLT4KKyAgPG1ldGEgbmFtZT0iYXBwbGUtbW9iaWxlLXdlYi1hcHAtY2FwYWJsZSIgY29udGVudD0ieWVzIj4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiBocmVmPSJ0aGVtZS9jc3MvZGVmYXVsdC5jc3MiPgorICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiBocmVmPSJ0aGVtZS9jc3MvY3VzdG8uY3NzIj4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0ib25seSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0ODBweCkiIGhyZWY9InRoZW1lL2Nzcy9waG9uZS5jc3MiPgorICA8YmFzZSB0YXJnZXQ9Il9ibGFuayI+IDwhLS0gVGhpcyBhbWF6aW5nbmVzcyBvcGVucyBhbGwgbGlua3MgaW4gYSBuZXcgdGFiLiAtLT4KKyAgPHNjcmlwdCBkYXRhLW1haW49ImpzL3NsaWRlcyIgc3JjPSJqcy9yZXF1aXJlLTEuMC44Lm1pbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ib3BhY2l0eTogMCI+CisKKzxzbGlkZXMgY2xhc3M9ImxheW91dC13aWRlc2NyZWVuIj4KKworICA8c2xpZGUgY2xhc3M9InRpdGxlLXNsaWRlIHNlZ3VlIG5vYmFja2dyb3VuZCBwYXJ0VGl0bGUiIHN0eWxlPSJiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL0ludGVudC9kb2MvcnRmbV9jYXIuanBnKTtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjBweCAwcHg7IGJhY2tncm91bmQtc2l6ZTogMTQwJTsiPgorCTxoMiBzdHlsZT0ibGVmdDoxMDBweDt0b3A6MHB4OyI+IERvY3VtZW50YXRpb24gRHJpdmVuIFRlc3Rpbmc8L2gyPgorCTxhc2lkZSBjbGFzcz0iZ2RiYXIiIHN0eWxlPSJ0b3A6NTBweDt3aWR0aDogMTkwMHB4O2hlaWdodDo4MHB4OyI+CQorCTwvYXNpZGU+CisJCisgICAgPCEtLSBUaGUgY29udGVudCBvZiB0aGlzIGhncm91cCBpcyByZXBsYWNlZCBwcm9ncmFtbWF0aWNhbGx5IHRocm91Z2ggdGhlIHNsaWRlX2NvbmZpZy5qc29uLiAtLT4KKyAgICA8aGdyb3VwIHN0eWxlPSJwb3NpdGlvbjpyZWxhdGl2ZTtsZWZ0Oi0xMDBweDt0b3A6MjUwcHg7cGFkZGluZzogMHB4IDBweCAwcHggMHB4O21hcmdpbjowcHggMHB4IDBweCAwcHg7Ij4KKwkJPGRpdj4KKyAgICAgIDxoMSAgc3R5bGU9ImRpc3BsYXk6bm9uZSIgZGF0YS1jb25maWctdGl0bGUgY2xhc3M9InN0cm9rZSB3aGl0ZSI+PCEtLSBwb3B1bGF0ZWQgZnJvbSBzbGlkZV9jb25maWcuanNvbiAtLT48L2gxPgorICAgICAgPGgyICBzdHlsZT0iZGlzcGxheTpub25lIiBkYXRhLWNvbmZpZy1zdWJ0aXRsZSBjbGFzcz0ic3Ryb2tlIHdoaXRlIj48IS0tIHBvcHVsYXRlZCBmcm9tIHNsaWRlX2NvbmZpZy5qc29uIC0tPjwvaDI+CisJICA8YnIvPjxici8+PGJyLz4gPGJyLz48YnIvPjxici8+PGJyLz4KKwkgIDxwIHN0eWxlPSJmb250LXNpemU6MjdweCIgY2xhc3M9InN0cm9rZSB3aGl0ZSI+R291bHdlbiBMZSBGdXIgPGJyLz5BbGV4IExhZ2FyZGUgKE1vcmVsKTxici8+U29mdHdhcmUgRW5naW5lZXJzLCBPYmVvPC9wPgorCSAJPHAgc3R5bGU9ImZvbnQtc2l6ZToyN3B4O3dpZHRoOjMwMHB4O21hcmdpbi10b3A6LTcwcHg7IG1hcmdpbi1sZWZ0Ojg2MHB4Ij48aW1nIHNyYz0iaW1hZ2VzL0REVC9lY19ib3N0b24ucG5nIiBzdHlsZT0id2lkdGg6NzAlIiAvPjwvcD4KKwkgIDwvZGl2PgorICAgIDwvaGdyb3VwPgkKKworICA8L3NsaWRlPgorCisgIDxzbGlkZSBjbGFzcz0iaW50cm8iPgorICAgIDxoZ3JvdXA+CisgICAgICA8aDI+CisJCU15IDxiPlByb2JsZW08L2I+CisJICA8L2gyPgorICAgIDwvaGdyb3VwPgorICAgIDxhcnRpY2xlIGNsYXNzPSJub0J1bGxldHMiPgorCQk8aDM+RGV2ZWxvcGVyIG9mIHRoZSBFRUYgcHJvamVjdDwvaDM+CisJCTx1bD4gCisJCTxsaT5BIHByZXNlbnRhdGlvbiBmcmFtZXdvcmsgZm9yIEVNRjwvbGk+CisJCTxsaT5CYXNlZCBvbiBTV1Q8L2xpPgorCQk8bGk+QW4gRWNsaXBzZSBQcm9qZWN0PC9saT4KKwkJPC91bD4KKworCQk8aDMgPkFzIGFsbCBzb2Z0d2FyZSBkZXZlbG9wZXJzLCBuZWVkIHRvIGNyZWF0ZSB0ZXN0czwvaDM+CisJCTx1bCA+IDxsaT5Fc3BlY2lhbGx5IGZ1bmN0aW9uYWwgdGVzdHM8L2xpPjwvdWw+CisKKwkJPGgzPkdVSSB0ZXN0aW5nIGlzIG5ldmVyIGFuIGVhc3kgdGFzazwvaDM+CisKKwkJPGgzICA+TGFzdCBzdHVtYmxpbmcgYmxvY2s6PC9oMz4KKwkJPHVsICA+IAk8bGk+IFRoZSBuZWVkIGZvciBhbiBPcGVuIFNvdXJjZSBzb2x1dGlvbjwvbGk+CisJCTwvdWw+CisJCSA8L3A+CisJPC9hcnRpY2xlPgorICAgPC9zbGlkZT4KKyAgPHNsaWRlIGNsYXNzPSJpbnRybyIgc3R5bGU9ImJhY2tncm91bmQ6IHVybChpbWFnZXMvRERUL3JvYm90LmpwZyk7YmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0O2JhY2tncm91bmQtcG9zaXRpb246NTQ1cHggMHB4OyI+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj4KKwkJRmlyc3Qgc3RlcHMgdG93YXJkIHRoZSBzb2x1dGlvbgorCSAgPC9oMj4KKyAgICA8L2hncm91cD4KKworICAgIDxhcnRpY2xlIGNsYXNzPSJub0J1bGxldHMiID4KKwkJCisJCTxoMz5GaXJzdCBldmVudCBsZWFkaW5nIHRvIHRoZSBzb2x1dGlvbjwvaDM+CisJCTx1bD4gCisJCTxsaT4gPGI+U1dUQm90PC9iPiBwcm9qZWN0IGNyZWF0aW9uPC9iPjwvbGk+CisJCTwvdWw+CisKKwkJPGgzID5BbGxvd3MgY3JlYXRpb24gb2YgYSBCb3Q8L2gzPgorCQk8dWwgPiA8bGk+QWJsZSB0byBoYW5kbGUgU1dUIEdVSXM8L2xpPjwvdWw+CisJCQorCQk8YnIvPjxici8+CisJCTxoMz5BIGZsdWVudCBzeW50YXggZW5hYmxpbmcgdXNlcnMgdG8gZGVmaW5lIHRoZSBzY2VuYXJpbyBwZXJmb3JtZWQgYnkgdGhlIGJvdDwvaDM+CisJCTxpbWcgc3JjPSJpbWFnZXMvRERUL2ZpcnN0IHN3dGJvdC5wbmciIHN0eWxlPSJtYXJnaW4tbGVmdDotMjBweCIvPgorCQkgPC9wPgorCTwvYXJ0aWNsZT4KKyAgIDwvc2xpZGU+CisgICAKKyAgIDxzbGlkZSBjbGFzcz0ibm9iYWNrZ3JvdW5kIj4KKyAgICA8aGdyb3VwPgorICAgICAgPGgyPgorCQlHcmVhdCEgSSBoYXZlIG15IHRlc3RzIDxiPmJ1dC4uLjwvYj4KKwkgIDwvaDI+CisgICAgPC9oZ3JvdXA+CisKKwkJPGgzIHN0eWxlPSJwYWRkaW5nLXRvcDoyMHB4Ij5EZXNwaXRlIG9mIHRoZSBmbHVlbnQgc3ludGF4PC9oMz4KKwkJPHVsPiAKKwkJPGxpPlRlc3RzIHJlcXVpcmUgbWFueSBzb3VyY2UgY29kZTwvbGk+CisJCTxsaT5UZXN0IGNvZGUgaXMgY29tcGxpY2F0ZWQsIG9ubHkgZGV2ZWxvcGVycyBjYW4gd3JpdGUgaXQ8L2xpPgorCQk8bGk+VGhlIHRlc3RzIHVuZGVyc3RhbmRpbmcgaXMgb25seSBiYXNlZCBvbiBKYXZhRG9jPC9saT4KKwkJPC91bD4KKwkJPGgzID48Yj5NYWludGVuYW5jZTwvYj4gcmVtYWlucyB2ZXJ5IGNvbXBsaWNhdGVkPC9oMz4JCQorCQk8aW1nIHNyYz0iaW1hZ2VzL0REVC9TV1RCb3RfY29tcGxpY2F0ZWQxLnBuZyIgc3R5bGU9InBhZGRpbmctbGVmdDozMHB4O21hcmdpbi10b3A6LTEwcHgiLz4KKyAgIDwvc2xpZGU+CisgICAKKyAgPHNsaWRlIGNsYXNzPSJzZWd1ZSBub2JhY2tncm91bmQgcGFydFRpdGxlIiBzdHlsZT0iYmFja2dyb3VuZDogdXJsKGltYWdlcy9ERFQvbHV0aGVyLmpwZyk7IGJhY2tncm91bmQtc2l6ZTogMTAwJTsiPgorICA8aDIgc3R5bGU9InRvcDozNXB4O3BhZGRpbmdsZWZ0OjBweDsiPkkgaGFkIGEgZHJlYW08L2gyPgorICAgPGFzaWRlIHN0eWxlPSJ0b3A6ODBweDt3aWR0aDo1MDBweDsiIGNsYXNzPSJnZGJhciIgPjwvYXNpZGU+CisgICAKKyAgIDxici8+IDxici8+IDxici8+CisgICAgPGgzIGNsYXNzPSJzdHJva2UiIHN0eWxlPSJjb2xvcjp3aGl0ZTttYXJnaW4tbGVmdDotNDBweDsiPkEgVGVzdCBmcmFtZXdvcms8L2gzPgorICAgIDx1bCBjbGFzcz0ic3Ryb2tlIiBzdHlsZT0ibWFyZ2luLWxlZnQ6MHB4O2NvbG9yOndoaXRlO21hcmdpbi1sZWZ0Oi00MHB4OyI+CisgICAgPGxpPkFsbG93aW5nIGFic3RyYWN0aW9uIHVwb24gdGVzdHMgc2NlbmFyaW8gKG5vIGNvZGUpPC9saT4KKyAgICA8bGk+Tm90IG9ubHkgZGVkaWNhdGVkIHRvIGRldmVsb3BlcnM8L2xpPgorICAgIDxsaT5FbnN1cmluZyBhIGdvb2QgZG9jdW1lbnRhdGlvbiBsZXZlbDwvbGk+CisgICAgPC91bD4KKwkgIAorCSAKKyAgPC9zbGlkZT4KKyAgCisgIDxzbGlkZSBjbGFzcz0ic2VndWUgbm9iYWNrZ3JvdW5kIHBhcnRUaXRsZSIgc3R5bGU9ImJhY2tncm91bmQ6IHVybChpbWFnZXMvRERUL2FybXkuanBnKTsgYmFja2dyb3VuZC1zaXplOiAxMDAlOyI+CisJICA8aDIgc3R5bGU9Im1hcmdpbi10b3A6LTEzMHB4O3BhZGRpbmctbGVmdDowcHg7Y29sb3I6YmxhY2s7dGV4dC1zaGFkb3c6bm9uZSI+T2JlbyBpcyBhIHNvZnR3YXJlIHRvb2xtYWtlciE8L2gyPgorCSAgPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjgwcHg7bWFyZ2luLWxlZnQ6LTUwcHg7Ij5TbyBsZXQncyBtYWtlIGEgdG9vbGluZzxici8+IGFib3ZlIFNXVEJvdCE8L2gyPgorCisgIDwvc2xpZGU+CisgIAorICA8c2xpZGUgY2xhc3M9InNlZ3VlIG5vYmFja2dyb3VuZCBwYXJ0VGl0bGUiIHN0eWxlPSJiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL0REVC9lYXN5LmpwZyk7IGJhY2tncm91bmQtc2l6ZTogMTAwJTsiPgorCSAgPGgyPjEuIFNpbXBsaWZ5IHRlc3RzIGRldmVsb3BtZW50IDxzcGFuIHN0eWxlPSJmb250LXNpemU6MHB4OyI+Xzwvc3Bhbj48L2gyPgorCSAgPGFzaWRlIHN0eWxlPSJ3aWR0aDo5MjVweCIgY2xhc3M9ImdkYmFyIiA+PC9hc2lkZT4KKyAgPC9zbGlkZT4KKyAgICAgPHNsaWRlIGNsYXNzPSJwYXJ0MSI+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj4KKwkJIEZpcnN0IGFwcHJvYWNoOiA8Yj5Db2RlIGdlbmVyYXRpb248L2I+CisJICA8L2gyPgorICAgIDwvaGdyb3VwPgorCTxici8+PGJyLz4KKwkJPGgzPlRoZSBpZGVhPC9oMz4KKwkJPHVsPjxsaT5FYXNlIHRoZSBjcmVhdGlvbiBvZiB0ZXN0cyB3aXRoIGFuIDxiPkFjY2VsZW8gZ2VuZXJhdG9yPC9iPjwvbGk+PC91bD4KKwk8YnIvPgorCQk8aDM+TWFpbnRlbmFuY2UgaXMgcGFydGx5IGVuc3VyZWQgYnk8L2gzPgorCQk8aW1nIHNyYz0iaW1hZ2VzL0REVC9JbWFnZS1BY2NlbGVvLnBuZyIgc3R5bGU9ImZsb2F0OnJpZ2h0O3dpZHRoOjU1JTtwYWRkaW5nLXJpZ2h0OjEwMHB4Ii8+CisJCTx1bD48bGk+R2VuZXJhdG9yIHVwZGF0ZXM8L2xpPjwvdWw+CisJCTx1bD48bGk+VGVzdHMgcmVnZW5lcmF0aW9uPC9saT48L3VsPgorCQk8YnIvPgorCQk8aDM+V2l0aCB0aGlzIHNvbHV0aW9uPC9oMz4KKzx1bD48bGk+d2UgYXJlIGFibGUgdG8gcHJvZHVjZSB0ZXN0cyBtb3JlIHF1aWNrbHk8L2xpPgorPGxpPkFuZCB1cGRhdGluZyB0aGUgY29kZSBnZW5lcmF0b3IgYWxsb3dzIHRvIHN5bmNocm9uaXplIGFsbCB0ZXN0cyB3aXRoIGEgcmVnZW5lcmF0aW9uPC9saT4gPC91bD4KKworICAgPC9zbGlkZT4KKworICA8c2xpZGUgY2xhc3M9InRpdGxlLXNsaWRlIHNlZ3VlIG5vYmFja2dyb3VuZCBwYXJ0VGl0bGUiIHN0eWxlPSJiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL0REVC9odXJyYXkuanBnKTtiYWNrZ3JvdW5kLXNpemU6MTAwJTsiPiAgICAKKwkgPGgyIHN0eWxlPSJtYXJnaW4tdG9wOjQwMHB4O21hcmdpbi1sZWZ0OjQ1MHB4O2ZvbnQtc2l6ZToxMjBweCI+SHVycmF5ITwvaDI+CisgIDwvc2xpZGU+CisgIAorICA8c2xpZGUgY2xhc3M9InBhcnQxIj4KKyAgCisgIDxoZ3JvdXA+CisgICAgICA8aDI+CisJCSBCdXQgdGhpcyA8Yj5pc24ndCA8L2I+dGhlIGVuZCBvZiB0aGUgc3RvcnkhCisJICA8L2gyPgorICAgIDwvaGdyb3VwPgorCQorCTxici8+PGJyLz4KKwk8aW1nIHNyYz0iaW1hZ2VzL0REVC9ub3QtdGhlLWVuZC5qcGciIHN0eWxlPSJmbG9hdDpsZWZ0O3dpZHRoOjM1JTttYXJnaW4tcmlnaHQ6NjBweCIvPgorCQk8YnIvPgorCQk8aDM+VGhlIGluY3JlYXNpbmcgdGVzdHMgYW1vdW50PC9oMz4KKwkJPGJyLz4KKwkJPGgzPlRoZSBpbmNyZWFzaW5nIGZ1bmN0aW9uYWwgY292ZXJhZ2U8L2gzPgorCQk8YnIvPgorCQk8aDM+PT4gYSBjb2RlIGdlbmVyYXRvciA8Yj5oYXJkCXRvIG1haW50YWluPC9iPjwvaDM+CisJCTxici8+CisgIDwvc2xpZGU+CisgPHNsaWRlIGNsYXNzPSJwYXJ0MSI+CisgPGgyPldlIG5lZWQgYSBwbGFuIEI8L2gyPgorIDxpbWcgc3JjPSJpbWFnZXMvRERUL2dyYXBoLnBuZyIgc3R5bGU9InBhZGRpbmctdG9wOjYwcHg7IHBhZGRpbmctbGVmdDoxNTBweDt3aWR0aDo3NCUiLz4KKyA8L3NsaWRlPgorIAorIDxzbGlkZSBjbGFzcz0icGFydDEiPgorIDxoMj5TZWNvbmQgYXBwcm9hY2g6IFRlc3RzIDxiPm1vZGVsaW5nPC9iPjwvaDI+CisgCisgPGJyLz48YnIvPgorIDxoMz4zIHJlcXVpcmVkIHN0ZXBzOjwvaDM+CisJPG9sIHN0eWxlPSJjb2xvcjpibGFjaztwYWRkaW5nLWxlZnQ6NTBweCI+CisJPGxpPjxici8+MS4gQ3JlYXRlIGEgRFNMIGRlc2NyaWJpbmcgZnVuY3Rpb25hbCB0ZXN0czxici8+PC9saT4KKwk8bGk+PGJyLz4yLiBJbXBsZW1lbnQgaXQgd2l0aCB0aGUgRWNsaXBzZSBNb2RlbGluZyBQcm9qZWN0PGJyLz48L2xpPgorCTxsaT48YnIvPjMuIENyZWF0ZSBhIFNXVEJvdCBpbnRlcnByZXRlciBmb3IgdGhlc2UgdGVzdCBtb2RlbHM8YnIvPjwvbGk+CisJPC9vbD4KKyA8L3NsaWRlPgorIAorIAorIDxzbGlkZSBjbGFzcz0idGl0bGUtc2xpZGUgc2VndWUgbm9iYWNrZ3JvdW5kIHBhcnRUaXRsZSIgc3R5bGU9ImJhY2tncm91bmQ6IHVybChpbWFnZXMvRERUL3Blbi5qcGcpO2JhY2tncm91bmQtc2l6ZToxMDAlOyI+ICAgIAorCSA8aDIgc3R5bGU9Im1hcmdpbi10b3A6MzUwcHg7bWFyZ2luLWxlZnQ6ODBweDtmb250LXNpemU6NjBweCI+V2hhdCBkb2VzIGEgRnVuY3Rpb25hbCBUZXN0IE1vZGVsIGxvb2sgbGlrZSA/PC9oMj4KKyAgPC9zbGlkZT4KKyAgCisgIDxzbGlkZSBjbGFzcz0icGFydDEiPgorICA8aDI+TW9kZWxpbmcgQm90IDxpPihJKTwvaT48L2gyPgorICA8YnIvPjxici8+CisgIDxpbWcgc3JjPSJpbWFnZXMvRERUL01vZGVsaW5nQm90UGFydEkucG5nIi8+CisgIDwvc2xpZGU+CisgICA8c2xpZGUgY2xhc3M9InBhcnQxIj4KKyAgPGgyPk1vZGVsaW5nIEJvdCA8aT4oSUkpPC9pPjwvaDI+CisgIDxici8+PGJyLz4KKyAgPGltZyBzcmM9ImltYWdlcy9ERFQvTW9kZWxpbmdCb3RQYXJ0SUkucG5nIi8+CisgIDwvc2xpZGU+CisgIDxzbGlkZSBjbGFzcz0icGFydDEiPgorICA8aDI+TW9kZWxpbmcgQm90IDxpPihJSUkpPC9pPjwvaDI+CisgIDxici8+PGJyLz4KKyAgPGltZyBzcmM9ImltYWdlcy9ERFQvTW9kZWxpbmdCb3RQYXJ0SUlJLnBuZyIvPgorICA8L3NsaWRlPgorICAgIDxzbGlkZSBjbGFzcz0icGFydDEiPgorICA8aDI+QSBUZXN0IDxiPm1vZGVsPC9iPjwvaT48L2gyPgorICA8YnIvPjxici8+CisgIDxpbWcgc3JjPSJpbWFnZXMvRERUL1Rlc3QtbW9kZWwucG5nIiBzdHlsZT0iZmxvYXQ6bGVmdDtwYWRkaW5nLXJpZ2h0OjgwcHgiLz4KKyAgPHVsPgorCTxsaT5DcmVhdGUgYSBwcm9qZWN0CisJPGxpPkNyZWF0ZSBhIG1vZGVsPC9saT4KKwk8bGk+RW5zdXJlIGVudi4gUmVhZHk8L2xpPgorCTxsaT5JbiBhIGRldGFpbHMgcGFnZTwvbGk+CisJPGxpPkFkZCBhIG5ldyBjb25jZXB0PC9saT4KKwk8bGk+RWRpdCBwcm9wZXJ0eSBvZiB0aGlzIG9uZTwvbGk+CisJPGxpPlNhdmU8L2xpPgorCTxsaT5FbnN1cmUgZWRpdGluZyB3ZWxsIHBlcmZvcm1lZDwvbGk+CisJPGxpPkRlbGV0ZSB0aGUgcHJvamVjdDwvbGk+CisgIDwvdWw+CisgIDwvc2xpZGU+CisgIAorICAgICA8c2xpZGUgY2xhc3M9InBhcnQxIj4KKyAgPGJyLz48YnIvPgorICA8aW1nIHNyYz0iaW1hZ2VzL0REVC9hd2Vzb21lLmpwZyIgc3R5bGU9ImZsb2F0OnJpZ2h0O3BhZGRpbmctcmlnaHQ6ODBweCIvPgorICA8YnIvPjxici8+PGJyLz48YnIvPgorICA8aDI+QXdlc29tZSBidXQuLi48YnIvPjxici8+SG93IGNhbiBJIHVzZSB0aGF0PzwvaDI+CisgIDxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDowcHgiID5Vc2luZyBhIFRyZWV2aWV3IHRvIGNyZWF0ZSB0ZXN0cyBtb2RlbCBpc24ndCB0aGUgYmVzdCB3YXkuLi48L3NwYW4+CisgIDwvc2xpZGU+CisgIAorICAKKyAgIDxzbGlkZSBjbGFzcz0ic2VndWUgbm9iYWNrZ3JvdW5kIHBhcnRUaXRsZSIgc3R5bGU9ImJhY2tncm91bmQ6IHVybChpbWFnZXMvRERUL29wZW4ucG5nKTsgYmFja2dyb3VuZC1zaXplOiAxMDAlOyI+CisJICA8aDIgc3R5bGU9ImZvbnQtc2l6ZTo1MHB4Ij4yLiBPcGVuIHRoZSB0b29saW5nIHRvIGZ1bmN0aW9uYWwgdXNlcnMgPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTowcHg7Ij5fPC9zcGFuPjwvaDI+CisJICA8YXNpZGUgc3R5bGU9IndpZHRoOjEwMDVweCIgY2xhc3M9ImdkYmFyIiA+PC9hc2lkZT4KKyAgPC9zbGlkZT4KKyAKKyAgPHNsaWRlIGNsYXNzPSJwYXJ0MiI+CisgIDxoMj5Ub3dhcmQgYW4gYWNjZXNzaWJsZSB0b29saW5nPC9oMj4KKyAgCisgIDxici8+PGJyLz4KKyAgPGgzPlRoaXMga2luZCBvZiBtb2RlbCBpcyB3ZWxsIHN1aXRlZCBmb3IgYSA8Yj50ZXh0dWFsIHN5bnRheDwvYj48L2gzPgorCTxici8+PGJyLz4KKyAgPGgzPkxldCdzIHVzZSB0aGUgPGltZyBzcmM9ImltYWdlcy9ERFQvWHRleHQucG5nIiBzdHlsZT0id2lkdGg6MTUlIj4gcHJvamVjdCB0byBjcmVhdGUgYSB0ZXh0dWFsIHN5bnRheCBmb3Igb3VyIHRlc3QgRFNMPC9oMz4KKyAgCisgIDwvc2xpZGU+CisgIAorICA8c2xpZGUgY2xhc3M9IiBub2JhY2tncm91bmQiPgorICA8aDI+QSA8Yj5HcmFtbWFyPC9iPiBmb3IgdGV4dHVhbCBzeW50YXg8L2gyPgorICA8YnIvPgorICA8aW1nIHNyYz0iaW1hZ2VzL0REVC9YVGV4dCBncmFtbWFyLnBuZyIgc3R5bGU9ImZsb2F0OmxlZnQiLz4KKyAgPGltZyBzcmM9ImltYWdlcy9ERFQvVGV4dHVhbE1vZGVsLnBuZyIgc3R5bGU9InBhZGRpbmctdG9wOjEwMHB4O2Zsb2F0OnJpZ2h0Ii8+CisgIDwvc2xpZGU+CisgICAgIDxzbGlkZSBjbGFzcz0ic2VndWUgbm9iYWNrZ3JvdW5kIHBhcnRUaXRsZSIgc3R5bGU9ImJhY2tncm91bmQ6IHVybChpbWFnZXMvRERUL3VuZGVyc3RhbmQuanBnKTsgYmFja2dyb3VuZC1zaXplOiAxMDAlOyI+CisJICA8aDIgc3R5bGU9ImZvbnQtc2l6ZTo1MHB4Ij4zLiBVbmRlcnN0YW5kIGludGVudHMgYmVoaW5kIHRlc3RzICA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjBweDsiPl88L3NwYW4+PC9oMj4KKwkgIDxhc2lkZSBzdHlsZT0id2lkdGg6ODY1cHgiIGNsYXNzPSJnZGJhciIgPjwvYXNpZGU+CisJCisgIDwvc2xpZGU+CisgPHNsaWRlIGNsYXNzPSJwYXJ0MyI+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj4KKwkJTXlseW4gPGI+SW50ZW50PC9iPgorCSAgPC9oMj4KKyAgICA8L2hncm91cD4KKyAgICA8YXJ0aWNsZSBjbGFzcz0iYXV0by1mYWRlaW4gbm9CdWxsZXRzIj4KKwkJPHA+CisJCSA8aW1nICBzcmM9ImltYWdlcy9JbnRlbnQvZG9jL2RvY19tb25zdGVyLnBuZyIgIHN0eWxlPSJmbG9hdDpsZWZ0O3BhZGRpbmctcmlnaHQ6MTVweDt3aWR0aDoyNSUiLz4gCisJCSA8aDMgc3R5bGU9ImNvbG9yOmJsYWNrIj48Yj5LZWVwaW5nIGRvYyBzeW5jaHJvbml6ZWQ8L2I+IHdpdGggU29mdHdhcmUgaXMgYSBidXJkZW48L2gzPgkJIAorCQkgPHA+CisJCSAgU28geW91IGtlZXAgYnJlYWtpbmcgc3BlY2lmaWNhdGlvbnMgd2l0aG91dCByZWFsaXppbmcgaXQKKwkJIDwvcD4KKwkJIDxkaXYgc3R5bGU9ImNsZWFyOmJvdGgiLz4KKwkJICA8YnIvPjxici8+PGJyLz4KKwkJICA8aW1nIHN0eWxlPSJmbG9hdDpsZWZ0O3BhZGRpbmctcmlnaHQ6MjVweDt3aWR0aDoyMyUiIHNyYz0iaW1hZ2VzL0ludGVudC9JbWFnZS1JbnRlbnRfbG9nby5wbmciPgorCQkgPGgzIHN0eWxlPSJjb2xvcjpibGFjayI+Q2xlYXIgPGI+bGFjayBvZiB0b29saW5nPC9iPiB0byByZWFjdCB0byBjaGFuZ2VzPC9oMz4JCSAKKwkJIDxwPgorCQkJVGhhdCBpcyBleGFjdGx5IHdoYXQgSW50ZW50IGlzIGFib3V0CisJCSA8L3A+CisJPC9hcnRpY2xlPgorICAgPC9zbGlkZT4KKyAgCisgICA8c2xpZGUgY2xhc3M9InBhcnROT05FIiBzdHlsZT0iYmFja2dyb3VuZDogdXJsKGltYWdlcy9ERFQvaW5zdGVhZF9vZl92Mi5wbmcpOyBiYWNrZ3JvdW5kLXNpemU6IDkwJTtiYWNrZ3JvdW5kLXBvc2l0aW9uOjMwcHggMzBweDtiYWNrZ3JvdW5kLWNvbG9yOndoaXRlOyBiYWNrZ3JvdW5kLXJlcGVhdCA6IG5vLXJlcGVhdDsiPgorICA8L3NsaWRlPgorICAKKyAgPHNsaWRlIGNsYXNzPSJwYXJ0MyI+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj4KKwkJT25lIDxiPkludGVudCBEb2N1bWVudDwvYj4gbWl4aW5nIGJvdGgKKwkgIDwvaDI+CisgICAgPC9oZ3JvdXA+CisJCQk8cCBzdHlsZT0icGFkZGluZy1sZWZ0OjUwcHg7cGFkZGluZy10b3A6MTBweDtjb2xvcjpibGFjayI+CisJCQkJPHNwYW4gc3R5bGU9IiI+LSBQdXJlIGRvY3VtZW50YXRpb24gem9uZXM8YnIvPjwvc3Bhbj4KKwkJCQk8YnIvPgorCQkJCTxzcGFuIHN0eWxlIj4tIEZvcm1hbCBsaW5rcyB6b25lczxici8+PC9zcGFuPgorCQkJCTxici8+CisJCQk8L3A+CisKKwkJPGRpdiBjbGFzcz0iaW50ZW50X2NvbnRlbnQiPgorCQkJPGIgY2xhc3M9Imt3Ij5DaGFwdGVyPC9iPiA8Yj5TdGFuZGFyZCBFRUYgU1dUIFRvb2xraXQ8L2I+IHsKKwkJCQk8ZGl2IGNsYXNzPSJpbnRlbnRfc3Vic2VjdGlvbmNvbnRhaW5lciI+CisJCQkJPGRpdiBjbGFzcz0iZHUiPjxici8+CisJCQkJCQkJVGhlIFNXVCBpcyBjb21wb3NlZCBvZiA3IG1haW4gd2lkZ2V0czo8YnIvPgorCQkJCQkJCSogVGV4dDxici8+CisJCQkJCQkJKiBUZXh0QXJlYTxici8+CisJCQkJCQkJKiBDaGVja2JveDxici8+CisJCQkJCQkJKiBSYWRpbzxici8+CisJCQkJCQkJKiBDb21ibzxici8+CisJCQkJCQkJKiBHcm91cDxici8+CisJCQkJCQkJKiBIYm94PGJyLz4KKwkJCQk8L2Rpdj4KKwkJCQkJPGJyLz48YiBjbGFzcz0ia3ciPlNlY3Rpb248L2I+IDxiPlRoZSBUZXh0IHdpZGdldDwvYj4geworCQkJCQkJPGRpdiBjbGFzcz0iaW50ZW50X3N1YnNlY3Rpb25jb250YWluZXIiPgorCQkJCQkJCQk8ZGl2IGNsYXNzPSJkdSI+PGJyLz4KKwkJCQkJCQlUaGUgdGV4dCB3aWRnZXQgYWxsb3dzIHVzZXJzIHRvIGVkaXQgPGk+X0VBdHRyaWJ1dGVzXzwvaT4gYnkgZW50ZXJpbmcgYSBTdHJpbmcgdmFsdWUuPGJyLz4KKwkJCQkJCQlUaGUgc3RhbmRhcmQgdXNlIGNhc2UgaXMgdG8gZWRpdCBhbiA8aT5fRUF0dHJpYnV0ZV88L2k+IGFzIGFuIDxiPipFU3RyaW5nKjwvYj4uIDxici8+CisJCQkJCQkJRm9yIGluc3RhbmNlLCBpbiB0aGlzIHNjZW5hcmlvLCBhbiB1c2VyIGlzIGFibGUgZG8gZGVmaW5lcyB0aGUgZmlyc3RuYW1lIG9mIGNvbmZlcmVuY2UgcGFydGljaXBhbnQgdXNpbmcgYSB0ZXh0IHdpZGdldDoKKwkJCQkJCQkJPC9kaXY+CisJCQkJCQkJCTxkaXYgY2xhc3M9ImludGVudF9tb2RlbGluZ3VuaXQiPgorCQkJCQkJCQk8YiBjbGFzcz0ia3ciPkBNPC9iPjxici8+CisJCQkJCQkJCTxkaXYgY2xhc3M9ImludGVudF9zdWJzZWN0aW9uY29udGFpbmVyIj4KKwkJCQkJCQkJPGIgY2xhc3M9Imt3Ij5AcmVmPC9iPjxpIHN0eWxlPSJjb2xvcjpibHVlIj4gIm9yZy5lY2xpcHNlLmVtZi5lZWYuc2NlbmFyaW9zL21vZGVscy9zZXRBdHRyaWJ1dGVUZXh0Lm1vZGVsaW5nYm90IjwvaT4KKwkJCQkJCQkJCTxici8+CisJCQkJCQkJCTwvZGl2PgorCQkJCQkJCQk8YiBjbGFzcz0ia3ciPk1APC9iPgorCQkJCQkJCQk8L2Rpdj48L2Rpdj4KKwkJCQkJCQl9CQorCQkJCTwvZGl2PgorCQkJCX0KKwkJCQkKKwkJCTwvZGl2PgorCQkJPGJyLz4KKworICA8L3NsaWRlPgorICAKKyAgIDxzbGlkZSBjbGFzcz0icGFydDMiPgorICAgIDxoZ3JvdXA+CisgICAgICA8aDI+CisJCU9uZSA8Yj5JbnRlbnQgRG9jdW1lbnQ8L2I+IG1peGluZyBib3RoCisJICA8L2gyPgorICAgIDwvaGdyb3VwPgorCQk8cCBzdHlsZT0icGFkZGluZy1sZWZ0OjUwcHg7cGFkZGluZy10b3A6MTBweDtjb2xvcjpibGFjayI+CisJCQk8c3BhbiBzdHlsZT0iIj4tIFB1cmUgZG9jdW1lbnRhdGlvbiB6b25lczxici8+CisJCQkJPHNwYW4gc3R5bGU9InBhZGRpbmctbGVmdDozMHB4OyI+RXhwbGFuYXRpb25zIGluIE5hdHVyYWwgbGFuZ3VhZ2U8YnIvPjwvc3Bhbj4KKwkJCQk8c3BhbiBzdHlsZT0icGFkZGluZy1sZWZ0OjMwcHg7Ij5Vc2UgdGhlIDxiPlRleHRpbGU8L2I+IHN5bnRheDxici8+PGJyLz48L3NwYW4+CisJCQk8L3NwYW4+CisJCTwvcD4KKwkJPGRpdiBjbGFzcz0iaW50ZW50X2NvbnRlbnQiPgorPGIgY2xhc3M9Imt3Ij5DaGFwdGVyPC9iPiA8Yj5TdGFuZGFyZCBFRUYgU1dUIFRvb2xraXQ8L2I+IHsKKwkJCQk8ZGl2IGNsYXNzPSJpbnRlbnRfc3Vic2VjdGlvbmNvbnRhaW5lciI+CisJCQkJPGRpdiBjbGFzcz0iZHUiPjxici8+CisJCQkJCQkJVGhlIFNXVCBpcyBjb21wb3NlZCBvZiA3IG1haW4gd2lkZ2V0czo8YnIvPgorCQkJCQkJCSogVGV4dDxici8+CisJCQkJCQkJKiBUZXh0QXJlYTxici8+CisJCQkJCQkJKiBDaGVja2JveDxici8+CisJCQkJCQkJKiBSYWRpbzxici8+CisJCQkJCQkJKiBDb21ibzxici8+CisJCQkJCQkJKiBHcm91cDxici8+CisJCQkJCQkJKiBIYm94PGJyLz4KKwkJCQk8L2Rpdj4KKwkJCQkJPGJyLz48YiBjbGFzcz0ia3ciPlNlY3Rpb248L2I+IDxiPlRoZSBUZXh0IHdpZGdldDwvYj4geworCQkJCQkJPGRpdiBjbGFzcz0iaW50ZW50X3N1YnNlY3Rpb25jb250YWluZXIiPgorCQkJCQkJCQk8ZGl2IGNsYXNzPSJkdSI+PGJyLz4KKwkJCQkJCQlUaGUgdGV4dCB3aWRnZXQgYWxsb3dzIHVzZXJzIHRvIGVkaXQgPGk+X0VBdHRyaWJ1dGVzXzwvaT4gYnkgZW50ZXJpbmcgYSBTdHJpbmcgdmFsdWUuPGJyLz4KKwkJCQkJCQlUaGUgc3RhbmRhcmQgdXNlIGNhc2UgaXMgdG8gZWRpdCBhbiA8aT5fRUF0dHJpYnV0ZV88L2k+IGFzIGFuIDxiPipFU3RyaW5nKjwvYj4uIDxici8+CisJCQkJCQkJRm9yIGluc3RhbmNlLCBpbiB0aGlzIHNjZW5hcmlvLCBhbiB1c2VyIGlzIGFibGUgZG8gZGVmaW5lcyB0aGUgZmlyc3RuYW1lIG9mIGNvbmZlcmVuY2UgcGFydGljaXBhbnQgdXNpbmcgYSB0ZXh0IHdpZGdldDoKKwkJCQkJCQkJPC9kaXY+CisJCQkJCQkJCTxkaXYgY2xhc3M9ImdyZXllZCI+CisJCQkJCQkJCTxkaXYgY2xhc3M9ImludGVudF9tb2RlbGluZ3VuaXQiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiNGOEY4Rjg7Y29sb3I6Z3JleTtmb250LXNpemU6IDE0cHg7Ij4KKwkJCQkJCQkJQE08YnIvPgorCQkJCQkJCQk8ZGl2IGNsYXNzPSJpbnRlbnRfc3Vic2VjdGlvbmNvbnRhaW5lciI+CisJCQkJCQkJCUByZWYgIm9yZy5lY2xpcHNlLmVtZi5lZWYuc2NlbmFyaW9zL21vZGVscy9zZXRBdHRyaWJ1dGVUZXh0Lm1vZGVsaW5nYm90IgorCQkJCQkJCQkJPC9kaXY+CisJCQkJCQkJCU1ACisJCQkJCQkJCTwvZGl2PgorCQkJCQkJCQk8L2Rpdj4KKwkJCQkJCQkJCQkJCQkKKwkJCQkJCTwvZGl2Pn0JCQkJCisJCQkJPC9kaXY+CisJCQkJfQorCQkJCQorCQk8L2Rpdj4KKyAgPC9zbGlkZT4KKyAgCisgICAgCisgIDxzbGlkZSBjbGFzcz0icGFydDMiPgorICAgIDxoZ3JvdXA+CisgICAgICA8aDI+CisJCU9uZSA8Yj5JbnRlbnQgRG9jdW1lbnQ8L2I+IG1peGluZyBib3RoCisJICA8L2gyPgorICAgIDwvaGdyb3VwPgorCQk8cCBzdHlsZT0icGFkZGluZy1sZWZ0OjUwcHg7cGFkZGluZy10b3A6MTBweDtjb2xvcjpibGFjayI+CisJCQk8c3BhbiBzdHlsZT0iIj4tIEZvcm1hbCBsaW5rcyB6b25lczxici8+CisJCQkJPHNwYW4gc3R5bGU9InBhZGRpbmctbGVmdDozMHB4OyI+UmVmZXJlbmNlIHRvIHRlY2huaWNhbCBhcnRpZmFjdHMgKEphdmEsIG1vZGVscywgTWFuaWZlc3RzLi4uKTxici8+PC9zcGFuPgorCQkJCTxzcGFuIHN0eWxlPSJwYWRkaW5nLWxlZnQ6MzBweDsiPkV4dGVuc2libGUgYmVoYXZpb3IgKGRpc3BsYXksIGh5cGVybGlua3MsIHZhbGlkYXRpb24uLi4pPGJyLz48YnIvPjwvc3Bhbj4KKwkJCTwvc3Bhbj4KKwkJPC9wPgorCQk8ZGl2IGNsYXNzPSJpbnRlbnRfY29udGVudCBncmV5ZWQiPgorCQkJQ2hhcHRlciBTdGFuZGFyZCBFRUYgU1dUIFRvb2xraXQ8L2I+IHsKKwkJCQk8ZGl2IGNsYXNzPSJpbnRlbnRfc3Vic2VjdGlvbmNvbnRhaW5lciI+CisJCQkJPGRpdiBjbGFzcz0iZHUiPjxici8+CisJCQkJCQkJVGhlIFNXVCBpcyBjb21wb3NlZCBvZiA3IG1haW4gd2lkZ2V0czo8YnIvPgorCQkJCQkJCSogVGV4dDxici8+CisJCQkJCQkJKiBUZXh0QXJlYTxici8+CisJCQkJCQkJKiBDaGVja2JveDxici8+CisJCQkJCQkJKiBSYWRpbzxici8+CisJCQkJCQkJKiBDb21ibzxici8+CisJCQkJCQkJKiBHcm91cDxici8+CisJCQkJCQkJKiBIYm94PGJyLz4KKwkJCQk8L2Rpdj4KKwkJCQkJPGJyLz5TZWN0aW9uIFRoZSBUZXh0IHdpZGdldCB7CisJCQkJCQk8ZGl2IGNsYXNzPSJpbnRlbnRfc3Vic2VjdGlvbmNvbnRhaW5lciI+CisJCQkJCQkJCTxkaXYgY2xhc3M9ImR1Ij48YnIvPgorCQkJCQkJCVRoZSB0ZXh0IHdpZGdldCBhbGxvd3MgdXNlcnMgdG8gZWRpdCBfRUF0dHJpYnV0ZXNfIGJ5IGVudGVyaW5nIGEgU3RyaW5nIHZhbHVlLjxici8+CisJCQkJCQkJVGhlIHN0YW5kYXJkIHVzZSBjYXNlIGlzIHRvIGVkaXQgYW4gX0VBdHRyaWJ1dGVfIGFzIGFuICpFU3RyaW5nKi4gPGJyLz4KKwkJCQkJCQlGb3IgaW5zdGFuY2UsIGluIHRoaXMgc2NlbmFyaW8sIGFuIHVzZXIgaXMgYWJsZSBkbyBkZWZpbmVzIHRoZSBmaXJzdG5hbWUgb2YgY29uZmVyZW5jZSBwYXJ0aWNpcGFudCB1c2luZyBhIHRleHQgd2lkZ2V0OgorCQkJCQkJCQk8L2Rpdj4KKwkJCQkJCQkJPGRpdiBjbGFzcz0iaW50ZW50X21vZGVsaW5ndW5pdCI+CisJCQkJCQkJCTxiIGNsYXNzPSJrdyI+QE08L2I+PGJyLz4KKwkJCQkJCQkJPGRpdiBjbGFzcz0iaW50ZW50X3N1YnNlY3Rpb25jb250YWluZXIiPgorCQkJCQkJCQk8YiBjbGFzcz0ia3ciPkByZWY8L2I+PGkgc3R5bGU9ImNvbG9yOmJsdWUiPiAib3JnLmVjbGlwc2UuZW1mLmVlZi5zY2VuYXJpb3MvbW9kZWxzL3NldEF0dHJpYnV0ZVRleHQubW9kZWxpbmdib3QiPC9pPgorCQkJCQkJCQkJPGJyLz4KKwkJCQkJCQkJPC9kaXY+CisJCQkJCQkJCTxiIGNsYXNzPSJrdyI+TUA8L2I+CisJCQkJCQkJCTwvZGl2PjwvZGl2PgorCQkJCQkJfTxici8+CisJCQkJPC9kaXY+CisJCQkJfQorCQkJCQorCQkJCQkJCTwvZGl2PgorCTwvZGl2PgorICA8L3NsaWRlPgorICA8c2xpZGUgY2xhc3M9InNlZ3VlIG5vYmFja2dyb3VuZCBwYXJ0VGl0bGUiIHN0eWxlPSJiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL0REVC9sZWFybi5qcGcpOyBiYWNrZ3JvdW5kLXNpemU6IDEwMCU7YmFja2dyb3VuZC1wb3NpdGlvbjowcHggLTcwMHB4OyI+CisJICA8aDIgc3R5bGU9InRvcDozNjBweCI+NC4gTGVzc29ucyBsZWFybmVkPC9oMj4KKwkgIDxhc2lkZSBzdHlsZT0idG9wOjQwMHB4O3dpZHRoOjY1NXB4IiBjbGFzcz0iZ2RiYXIiID48L2FzaWRlPgorICA8L3NsaWRlPiAKKyAgCisgIDxzbGlkZSBjbGFzcz0icGFydDQiPgorICAgIDxoZ3JvdXA+CisgICAgICA8aDI+CisJIExlc3NvbnMgbGVhcm5lZAorCSAgPC9oMj4JICAKKyAgICA8L2hncm91cD4KKwkgIDxhcnRpY2xlIHN0eWxlPSJwYWRkaW5nLXRvcDo4MHB4O3BhZGRpbmctcmlnaHQ6MzBweDsiPgorCSAgMS4gU1dUQm90IGlzIGNvb2wsIGJ1dCB0ZXN0cyBjYW4gYmUgPGI+aGFyZCB0byBtYWludGFpbiAmIHVuZGVyc3RhbmQ8L2I+PGJyLz4KKwkgIDxici8+Mi4gQ2FwdHVyaW5nIHNjZW5hcmlvcyB0aHJvdWdoIG1vZGVscyBpbnN0ZWFkIG9mIGNvZGUgbWFrZXMgdGVzdCA8Yj5lYXNpZXIgdG8gbWFpbnRhaW48L2I+PGJyLz4KKwkgIDxici8+My4gUHJvdmlkaW5nIGEgdGV4dHVhbCBzeW50YXggdG8gZWRpdCB0aG9zZSBtb2RlbHMgPGI+aW1wcm92ZXMgdXNlciBleHBlcmllbmNlPC9iPjxici8+CisJICA8YnIvPjQuIFVzaW5nIEludGVudCB0byB0aWUgZG9jLCBtb2RlbHMgJiBjb2RlIG1ha2VzIHN1cmUgPGI+aW50ZW50aW9uIGlzIG5ldmVyIGxvc3Q8L2I+PGJyLz4KKwkgICA8L2FydGljbGU+CisgIDwvc2xpZGU+CisgIAorICAgPHNsaWRlIGNsYXNzPSJwYXJ0NCI+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj4KKwkJSW1wcm92ZW1lbnRzICYgSXNzdWVzIHRvIHRhY2tsZSAoSSkKKwkgIDwvaDI+CQkJICA8L2hncm91cD4KKwkgICAgPGFydGljbGUgc3R5bGU9InBhZGRpbmctdG9wOjUwcHg7cGFkZGluZy1yaWdodDozMHB4OyI+CisJCTxoMz4gQ29uY2VwdHVhbCBjb25jZXJucyA8L2gzPgorCQk8YnIvPgorCQkxLiBBcHBseSB0aGUgRG9jLURyaXZlbiBUZXN0aW5nIGFwcHJvYWNoIG9uIG1vcmUgdXNlIGNhc2VzPGJyLz48YnIvPgorCQkyLiBJbXByb3ZlIDxpPmNoZWNraW5nPC9pPiBkZWZpbml0aW9uCisJCTwvYXJ0aWNsZT4KKyAgIDwvc2xpZGU+CisgICAKKyAgIDxzbGlkZSBjbGFzcz0icGFydDQiPgorICAgIDxoZ3JvdXA+CisgICAgICA8aDI+CisJCUltcHJvdmVtZW50cyAmIElzc3VlcyB0byB0YWNrbGUgKElJKQorCSAgPC9oMj4JCQkgIDwvaGdyb3VwPgorCSAgICA8YXJ0aWNsZSBzdHlsZT0icGFkZGluZy10b3A6NTBweDtwYWRkaW5nLXJpZ2h0OjMwcHg7Ij4KKwkJPGgzPiBEZXNpZ24gY29uY2VybnMgPC9oMz4KKwkJPGJyLz4KKwkJMS4gRXh0ZW5zaWJpbGl0eTogYWxsb3cgdG8gcHJvdmlkZSBuZXcgQWN0aW9ucyBzZXRzPGJyLz48YnIvPgorCQkyLiBFeHRlbnNpYmlsaXR5OiB3aGF0IGFib3V0IG5vbiBTV1RCb3QtYmFzZWQgdGVzdHM/IChKdWJ1bGEsIFE3Li4uKQorCQk8L2FydGljbGU+CisgICA8L3NsaWRlPgorCisgICA8c2xpZGUgY2xhc3M9InBhcnQ0Ij4KKyAgICA8aGdyb3VwPgorICAgICAgPGgyPgorCQlJbXByb3ZlbWVudHMgJiBJc3N1ZXMgdG8gdGFja2xlIChJSUkpCisJICA8L2gyPgkJCSAgIDwvaGdyb3VwPgorCSAgICA8YXJ0aWNsZSBzdHlsZT0icGFkZGluZy10b3A6NTBweDtwYWRkaW5nLXJpZ2h0OjMwcHg7Ij4KKwkJPGgzPiBUb29saW5nIGNvbmNlcm5zOiB0ZXh0dWFsIHN5bnRheCA8L2gzPgorCQkxLiBOZWVkIGZvciBhbiBleHRlbnNpYmxlIGdyYW1tYXIgaXMgaXQgcG9zc2libGUgd2l0aCBYdGV4dCA/PGJyLz4KKwkKKwkJIAorCQk8YnIvPjxoMz5Ub29saW5nIGNvbmNlcm5zOiBNeWx5biBJbnRlbnQgYnJpZGdlPC9oMz4KKwkJIDEuIEpVbml0IHRlc3RzIHNob3VsZCBiZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCAoaW5zdGVhZCBvZiB1c2luZyBxdWljay1maXgpPGJyLz4KKwkJMi4gR2VuZXJhdGVkIHRlc3RzIHNob3VsZCBiZSBoaWRkZW46IGxhdW5jaCBUZXN0U3VpdGUgZGlyZWN0bHkgZnJvbSBkb2N1bWVudDxici8+CisJCTMuIEltcHJvdmUganVuaXQgZmFpbHVyZXM6IGRpcmVjdGx5IG9wZW4gcmVsYXRlZCBkb2N1bWVudGF0aW9uCisJCTwvYXJ0aWNsZT4KKwk8L3NsaWRlPgorICAgPHNsaWRlIGNsYXNzPSJ0aGFua3MiPgorICAgIDxoZ3JvdXA+CisgICAgICA8aDI+CisJCVRoYW5rIFlvdSEKKwkgIDwvaDI+CisgICAgPC9oZ3JvdXA+CisKKworCQk8YXJ0aWNsZSBzdHlsZT0ibWFyZ2luLXRvcCA6MzBweCI+CisJCTxpbWcgY2xhc3M9InJlZmxlY3QiIHNyYz0iaW1hZ2VzL2NvbnRhY3Qvd2Vic2l0ZS5wbmciICBzdHlsZT0id2lkdGg6NTBweCIvPiAKKwkJPGEgaHJlZj0iaHR0cDovL3d3dy5lY2xpcHNlLm9yZy9lZWYiPmh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvZWVmPC9hPiA8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTAwcHgiPgorCQk8YSBocmVmPSJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL2ludGVudCI+aHR0cDovL3d3dy5lY2xpcHNlLm9yZy9pbnRlbnQ8L2E+PC9zcGFuPgorCQkKKwkJPGJyLz4gPGltZyBjbGFzcz0icmVmbGVjdCIgc3JjPSJpbWFnZXMvSW50ZW50L0ltYWdlLUludGVudF9sb2dvX2Nyb3BwZWQucG5nIiAgc3R5bGU9IndpZHRoOjUwcHgiLz4gCisJCTxhIGhyZWY9Imh0dHA6Ly93aWtpLmVjbGlwc2Uub3JnL0VFRiI+aHR0cDovL3dpa2kuZWNsaXBzZS5vcmcvRUVGPC9hPjxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDoxMDBweCI+CisJCTxhIGhyZWY9Imh0dHA6Ly93aWtpLmVjbGlwc2Uub3JnL0ludGVudCI+aHR0cDovL3dpa2kuZWNsaXBzZS5vcmcvSW50ZW50PC9hPjwvc3Bhbj4KKwkJPGgyPjxici8+RG9uJ3QgbWlzcyBJbnRlbnQgJiBFRUYgdGFsa3MgdG9tb3Jyb3c6PC9oMj4KKwkJPHVsPjxsaT4xMWggLSBTdG9wIHRocm93aW5nIHlvdXIgZG9jIGF3YXk6IEFnaWxlIERvY3VtZW50YXRpb24gd2l0aCBNeWx5biBJbnRlbnQ8L2xpPjwvdWw+CisJCTx1bD48bGk+MTVoIC0gRU1GIENvbW11bml0eSwgdGltZSBmb3IgbW92aW5nIG9uIEVjbGlwc2U0IHRoYW5rcyB0byB0aGUgRUVGIDIuMCE8L2xpPjwvdWw+CisJCTxici8+PGgyPgorCQlEb24ndCBmb3JnZXQgdG8gZ2l2ZSBGZWVkYmFjayA8YnIvPgorCQkgPGltZyBjbGFzcz0icmVmbGVjdCIgc3R5bGU9InBhZGRpbmctdG9wOjIwcHgiIHNyYz0iaW1hZ2VzL0ludGVudC9mZWVkYmFjay5wbmciLz4gCisJCTwvaDI+CisJICAgPC9hcnRpY2xlPgorICA8L3NsaWRlPgorICAKKyAgPHNsaWRlIGNsYXNzPSJiYWNrZHJvcCI+PC9zbGlkZT4KKworPC9zbGlkZXM+CisKKzxzY3JpcHQ+Cit2YXIgX2dhcSA9IF9nYXEgfHwgW107CitfZ2FxLnB1c2goWydfc2V0QWNjb3VudCcsICdVQS1YWFhYWFhYWC0xJ10pOworX2dhcS5wdXNoKFsnX3RyYWNrUGFnZXZpZXcnXSk7CisKKyhmdW5jdGlvbigpIHsKKyAgdmFyIGdhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7IGdhLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsgZ2EuYXN5bmMgPSB0cnVlOworICBnYS5zcmMgPSAoJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wgPyAnaHR0cHM6Ly9zc2wnIDogJ2h0dHA6Ly93d3cnKSArICcuZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanMnOworICB2YXIgcyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXTsgcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShnYSwgcyk7Cit9KSgpOworPC9zY3JpcHQ+CisKKzwhLS1baWYgSUVdPgorICA8c2NyaXB0IHNyYz0iaHR0cDovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2Nocm9tZS1mcmFtZS8xL0NGSW5zdGFsbC5taW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0PkNGSW5zdGFsbC5jaGVjayh7bW9kZTogJ292ZXJsYXknfSk7PC9zY3JpcHQ+Cis8IVtlbmRpZl0tLT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvUkVBRE1FLm1kIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9SRUFETUUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU1N2U3MAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvUkVBRE1FLm1kCkBAIC0wLDAgKzEsNCBAQAorZWNsaXBzZWNvbi1ldXJvcGUtMjAxMi1zbGlkZXMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK1NsaWRlcyBmb3IgRWNsaXBzZUNvbiBFdXJvcGUgMjAxMgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvYXBwLnlhbWwgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2FwcC55YW1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2OTJhYjIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2FwcC55YW1sCkBAIC0wLDAgKzEsMjMgQEAKK2FwcGxpY2F0aW9uOiBteS1pby10YWxrCit2ZXJzaW9uOiAxCitydW50aW1lOiBweXRob24yNworYXBpX3ZlcnNpb246IDEKK3RocmVhZHNhZmU6IHllcworCitoYW5kbGVyczoKKy0gdXJsOiAvCisgIHN0YXRpY19maWxlczogdGVtcGxhdGUuaHRtbAorICB1cGxvYWQ6IHRlbXBsYXRlXC5odG1sCisKKy0gdXJsOiAvc2xpZGVfY29uZmlnXC5qcworICBzdGF0aWNfZmlsZXM6IHNsaWRlX2NvbmZpZy5qcworICB1cGxvYWQ6IHNsaWRlX2NvbmZpZ1wuanMKKworLSB1cmw6IC9qcworICBzdGF0aWNfZGlyOiBqcworCistIHVybDogL3RoZW1lCisgIHN0YXRpY19kaXI6IHRoZW1lCisKKy0gdXJsOiAvaW1hZ2VzCisgIHN0YXRpY19kaXI6IGltYWdlcwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9jb25maWcucmIgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2NvbmZpZy5yYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmM2NzUxCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9jb25maWcucmIKQEAgLTAsMCArMSwyNCBAQAorIyBSZXF1aXJlIGFueSBhZGRpdGlvbmFsIGNvbXBhc3MgcGx1Z2lucyBoZXJlLgorCisjIFNldCB0aGlzIHRvIHRoZSByb290IG9mIHlvdXIgcHJvamVjdCB3aGVuIGRlcGxveWVkOgoraHR0cF9wYXRoID0gIi8iCitjc3NfZGlyID0gInRoZW1lL2NzcyIKK3Nhc3NfZGlyID0gInRoZW1lL3Njc3MiCitpbWFnZXNfZGlyID0gImltYWdlcyIKK2phdmFzY3JpcHRzX2RpciA9ICJqcyIKKworIyBZb3UgY2FuIHNlbGVjdCB5b3VyIHByZWZlcnJlZCBvdXRwdXQgc3R5bGUgaGVyZSAoY2FuIGJlIG92ZXJyaWRkZW4gdmlhIHRoZSBjb21tYW5kIGxpbmUpOgorb3V0cHV0X3N0eWxlID0gOmNvbXByZXNzZWQgIzpleHBhbmRlZCBvciA6bmVzdGVkIG9yIDpjb21wYWN0IG9yIDpjb21wcmVzc2VkCisKKyMgVG8gZW5hYmxlIHJlbGF0aXZlIHBhdGhzIHRvIGFzc2V0cyB2aWEgY29tcGFzcyBoZWxwZXIgZnVuY3Rpb25zLiBVbmNvbW1lbnQ6CisjIHJlbGF0aXZlX2Fzc2V0cyA9IHRydWUKKworIyBUbyBkaXNhYmxlIGRlYnVnZ2luZyBjb21tZW50cyB0aGF0IGRpc3BsYXkgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG9mIHlvdXIgc2VsZWN0b3JzLiBVbmNvbW1lbnQ6CisjIGxpbmVfY29tbWVudHMgPSBmYWxzZQorCisKKyMgSWYgeW91IHByZWZlciB0aGUgaW5kZW50ZWQgc3ludGF4LCB5b3UgbWlnaHQgd2FudCB0byByZWdlbmVyYXRlIHRoaXMKKyMgcHJvamVjdCBhZ2FpbiBwYXNzaW5nIC0tc3ludGF4IHNhc3MsIG9yIHlvdSBjYW4gdW5jb21tZW50IHRoaXM6CisjIHByZWZlcnJlZF9zeW50YXggPSA6c2FzcworIyBhbmQgdGhlbiBydW46CisjIHNhc3MtY29udmVydCAtUiAtLWZyb20gc2NzcyAtLXRvIHNhc3Mgc2FzcyBzY3NzICYmIHJtIC1yZiBzYXNzICYmIG12IHNjc3Mgc2FzcwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL0ltYWdlLUFjY2VsZW8ucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL0ltYWdlLUFjY2VsZW8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZWNiMzkKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvSW1hZ2UtQWNjZWxlby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL01vZGVsaW5nQm90UGFydEkucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL01vZGVsaW5nQm90UGFydEkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxOGViZjAKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvTW9kZWxpbmdCb3RQYXJ0SS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL01vZGVsaW5nQm90UGFydElJLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9Nb2RlbGluZ0JvdFBhcnRJSS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI5ZDliZAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9Nb2RlbGluZ0JvdFBhcnRJSS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL01vZGVsaW5nQm90UGFydElJSS5wbmcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvTW9kZWxpbmdCb3RQYXJ0SUlJLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzg5ZWZjCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL01vZGVsaW5nQm90UGFydElJSS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL1NXVEJvdF9jb21wbGljYXRlZDEucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL1NXVEJvdF9jb21wbGljYXRlZDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MjhmZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvU1dUQm90X2NvbXBsaWNhdGVkMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL1Rlc3QtbW9kZWwucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL1Rlc3QtbW9kZWwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNGQ3Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvVGVzdC1tb2RlbC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL1RleHR1YWxNb2RlbC5wbmcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvVGV4dHVhbE1vZGVsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWM1Y2QxCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL1RleHR1YWxNb2RlbC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL1hUZXh0IGdyYW1tYXIucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL1hUZXh0IGdyYW1tYXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNWFmOTIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvWFRleHQgZ3JhbW1hci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL1h0ZXh0LnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9YdGV4dC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI3ZGExNwotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9YdGV4dC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2FybXkuanBnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2FybXkuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZGQxZGEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvYXJteS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2F3ZXNvbWUuanBnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2F3ZXNvbWUuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZGJjYjcKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvYXdlc29tZS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2NvZGVnZW5lcmF0b3IgYmVuZWZpdHMuc3ZnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2NvZGVnZW5lcmF0b3IgYmVuZWZpdHMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkY2ZjZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvY29kZWdlbmVyYXRvciBiZW5lZml0cy5zdmcKQEAgLTAsMCArMSwxMTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiBzdGFuZGFsb25lPSJubyI/PgorPCEtLSBDcmVhdGVkIHdpdGggSW5rc2NhcGUgKGh0dHA6Ly93d3cuaW5rc2NhcGUub3JnLykgLS0+CisKKzxzdmcKKyAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIKKyAgIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiCisgICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCisgICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgorICAgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIgorICAgeG1sbnM6c29kaXBvZGk9Imh0dHA6Ly9zb2RpcG9kaS5zb3VyY2Vmb3JnZS5uZXQvRFREL3NvZGlwb2RpLTAuZHRkIgorICAgeG1sbnM6aW5rc2NhcGU9Imh0dHA6Ly93d3cuaW5rc2NhcGUub3JnL25hbWVzcGFjZXMvaW5rc2NhcGUiCisgICB3aWR0aD0iNDU4LjE0NTI2IgorICAgaGVpZ2h0PSIyNzQuMDQ1OTkiCisgICBpZD0ic3ZnMiIKKyAgIHZlcnNpb249IjEuMSIKKyAgIGlua3NjYXBlOnZlcnNpb249IjAuNDguMy4xIHI5ODg2IgorICAgc29kaXBvZGk6ZG9jbmFtZT0iY29kZWdlbmVyYXRvciBiZW5lZml0cy5zdmciCisgICBpbmtzY2FwZTpleHBvcnQtZmlsZW5hbWU9Ii9ob21lL2dsZWZ1ci9Qcm8vRG9jcy9Db25mL2Vjb24gMjAxMy9ERFQvcGljcy9jb2RlZ2VuZXJhdG9yIGJlbmVmaXRzLnBuZyIKKyAgIGlua3NjYXBlOmV4cG9ydC14ZHBpPSI1MDAiCisgICBpbmtzY2FwZTpleHBvcnQteWRwaT0iNTAwIj4KKyAgPGRlZnMKKyAgICAgaWQ9ImRlZnM0IiAvPgorICA8c29kaXBvZGk6bmFtZWR2aWV3CisgICAgIGlkPSJiYXNlIgorICAgICBwYWdlY29sb3I9IiNmZmZmZmYiCisgICAgIGJvcmRlcmNvbG9yPSIjNjY2NjY2IgorICAgICBib3JkZXJvcGFjaXR5PSIxLjAiCisgICAgIGlua3NjYXBlOnBhZ2VvcGFjaXR5PSIwLjAiCisgICAgIGlua3NjYXBlOnBhZ2VzaGFkb3c9IjIiCisgICAgIGlua3NjYXBlOnpvb209IjEuNCIKKyAgICAgaW5rc2NhcGU6Y3g9Ijk1Ljg5NjMzNyIKKyAgICAgaW5rc2NhcGU6Y3k9IjEzMC41MzM1MSIKKyAgICAgaW5rc2NhcGU6ZG9jdW1lbnQtdW5pdHM9InB4IgorICAgICBpbmtzY2FwZTpjdXJyZW50LWxheWVyPSJsYXllcjEiCisgICAgIHNob3dncmlkPSJmYWxzZSIKKyAgICAgZml0LW1hcmdpbi10b3A9IjAiCisgICAgIGZpdC1tYXJnaW4tbGVmdD0iMCIKKyAgICAgZml0LW1hcmdpbi1yaWdodD0iMCIKKyAgICAgZml0LW1hcmdpbi1ib3R0b209IjAiCisgICAgIGlua3NjYXBlOndpbmRvdy13aWR0aD0iMTM2NiIKKyAgICAgaW5rc2NhcGU6d2luZG93LWhlaWdodD0iNzEyIgorICAgICBpbmtzY2FwZTp3aW5kb3cteD0iMCIKKyAgICAgaW5rc2NhcGU6d2luZG93LXk9IjQzOCIKKyAgICAgaW5rc2NhcGU6d2luZG93LW1heGltaXplZD0iMSIgLz4KKyAgPG1ldGFkYXRhCisgICAgIGlkPSJtZXRhZGF0YTciPgorICAgIDxyZGY6UkRGPgorICAgICAgPGNjOldvcmsKKyAgICAgICAgIHJkZjphYm91dD0iIj4KKyAgICAgICAgPGRjOmZvcm1hdD5pbWFnZS9zdmcreG1sPC9kYzpmb3JtYXQ+CisgICAgICAgIDxkYzp0eXBlCisgICAgICAgICAgIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+CisgICAgICAgIDxkYzp0aXRsZT48L2RjOnRpdGxlPgorICAgICAgPC9jYzpXb3JrPgorICAgIDwvcmRmOlJERj4KKyAgPC9tZXRhZGF0YT4KKyAgPGcKKyAgICAgaW5rc2NhcGU6bGFiZWw9IkNhbHF1ZSAxIgorICAgICBpbmtzY2FwZTpncm91cG1vZGU9ImxheWVyIgorICAgICBpZD0ibGF5ZXIxIgorICAgICB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTM0LjI2MDk5LC05NC4xNTYyNSkiPgorICAgIDxwYXRoCisgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiCisgICAgICAgZD0ibSAxNjAuNzE0MjksOTUuMjE5MzI0IDAsMjU3Ljg1NzE0NiA0MzAuNzE0MjgsMCIKKyAgICAgICBpZD0icGF0aDI5ODUiCisgICAgICAgaW5rc2NhcGU6Y29ubmVjdG9yLWN1cnZhdHVyZT0iMCIgLz4KKyAgICA8cGF0aAorICAgICAgIHN0eWxlPSJmaWxsOm5vbmU7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLXdpZHRoOjFweDtzdHJva2UtbGluZWNhcDpidXR0O3N0cm9rZS1saW5lam9pbjptaXRlcjtzdHJva2Utb3BhY2l0eToxIgorICAgICAgIGQ9Im0gMTY0Ljk1MTczLDk5LjE1MzI3OCAtNC4yODU3MSwtNC4yODU3MjUgLTQuMTUxNzgsNC4xNTE3OTIiCisgICAgICAgaWQ9InBhdGgzMDEzIgorICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CisgICAgPHBhdGgKKyAgICAgICBzdHlsZT0iZmlsbDpub25lO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDoxcHg7c3Ryb2tlLWxpbmVjYXA6YnV0dDtzdHJva2UtbGluZWpvaW46bWl0ZXI7c3Ryb2tlLW9wYWNpdHk6MSIKKyAgICAgICBkPSJtIDU4Ny40MTU2NiwzNTcuMzk3NTMgNC4yODU3MSwtNC4yODU3MSAtNC4xNTE3OCwtNC4xNTE3OCIKKyAgICAgICBpZD0icGF0aDMwMTMtMCIKKyAgICAgICBpbmtzY2FwZTpjb25uZWN0b3ItY3VydmF0dXJlPSIwIiAvPgorICAgIDx0ZXh0CisgICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKKyAgICAgICBzdHlsZT0iZm9udC1zaXplOjkuODQ4ODczMTRweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0OjEyNSU7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OlNhbnM7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpTYW5zIEJvbGQiCisgICAgICAgeD0iLTIxNi4xMjc1OCIKKyAgICAgICB5PSIxNDEuNDQwODYiCisgICAgICAgaWQ9InRleHQzMDMzIgorICAgICAgIHNvZGlwb2RpOmxpbmVzcGFjaW5nPSIxMjUlIgorICAgICAgIHRyYW5zZm9ybT0ibWF0cml4KDAsLTEsMSwwLDAsMCkiPjx0c3BhbgorICAgICAgICAgc29kaXBvZGk6cm9sZT0ibGluZSIKKyAgICAgICAgIGlkPSJ0c3BhbjMwMzUiCisgICAgICAgICB4PSItMjE2LjEyNzU4IgorICAgICAgICAgeT0iMTQxLjQ0MDg2IgorICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OkRlamFWdSBTYW5zIE1vbm87LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpEZWphVnUgU2FucyBNb25vIEJvbGQiPlRlc3RzIGNvdW50LzwvdHNwYW4+PHRzcGFuCisgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgorICAgICAgICAgeD0iLTIxNi4xMjc1OCIKKyAgICAgICAgIHk9IjE1My43NTE5NSIKKyAgICAgICAgIHN0eWxlPSJmb250LXN0eWxlOm5vcm1hbDtmb250LXZhcmlhbnQ6bm9ybWFsO2ZvbnQtd2VpZ2h0OmJvbGQ7Zm9udC1zdHJldGNoOm5vcm1hbDtmb250LWZhbWlseTpEZWphVnUgU2FucyBNb25vOy1pbmtzY2FwZS1mb250LXNwZWNpZmljYXRpb246RGVqYVZ1IFNhbnMgTW9ubyBCb2xkIgorICAgICAgICAgaWQ9InRzcGFuMzAzNyI+RnVuY3Rpb25hbCBjb3ZlcmFnZTwvdHNwYW4+PC90ZXh0PgorICAgIDx0ZXh0CisgICAgICAgeG1sOnNwYWNlPSJwcmVzZXJ2ZSIKKyAgICAgICBzdHlsZT0iZm9udC1zaXplOjkuODQ4ODczMTRweDtmb250LXN0eWxlOm5vcm1hbDtmb250LXdlaWdodDpib2xkO2xpbmUtaGVpZ2h0OjEyNSU7bGV0dGVyLXNwYWNpbmc6MHB4O3dvcmQtc3BhY2luZzowcHg7ZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO2ZvbnQtZmFtaWx5OlNhbnM7LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpTYW5zIEJvbGQiCisgICAgICAgeD0iNTMzLjY5ODM2IgorICAgICAgIHk9IjM2OC4wNjI3NyIKKyAgICAgICBpZD0idGV4dDMwMzMtMiIKKyAgICAgICBzb2RpcG9kaTpsaW5lc3BhY2luZz0iMTI1JSI+PHRzcGFuCisgICAgICAgICBzb2RpcG9kaTpyb2xlPSJsaW5lIgorICAgICAgICAgeD0iNTMzLjY5ODM2IgorICAgICAgICAgeT0iMzY4LjA2Mjc3IgorICAgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6bm9ybWFsO2ZvbnQtdmFyaWFudDpub3JtYWw7Zm9udC13ZWlnaHQ6Ym9sZDtmb250LXN0cmV0Y2g6bm9ybWFsO2ZvbnQtZmFtaWx5OkRlamFWdSBTYW5zIE1vbm87LWlua3NjYXBlLWZvbnQtc3BlY2lmaWNhdGlvbjpEZWphVnUgU2FucyBNb25vIEJvbGQiCisgICAgICAgICBpZD0idHNwYW4zMDgyIj5CZW5lZml0czwvdHNwYW4+PC90ZXh0PgorICAgIDxwYXRoCisgICAgICAgc3R5bGU9ImZpbGw6bm9uZTtzdHJva2U6I2ZmMDAwMDtzdHJva2Utd2lkdGg6MXB4O3N0cm9rZS1saW5lY2FwOmJ1dHQ7c3Ryb2tlLWxpbmVqb2luOm1pdGVyO3N0cm9rZS1vcGFjaXR5OjEiCisgICAgICAgZD0ibSAxNjEuNzg1NzEsMzUzLjA3NjQ3IDc3LjUsLTE2MS40Mjg1NyBMIDI4NSwxNjUuMjE5MzIgMzMxLjQyODU3LDE1Ni42NDc5IDUyNS4zNTcxNCwzNTAuNTc2NDciCisgICAgICAgaWQ9InBhdGgzMDg2IgorICAgICAgIGlua3NjYXBlOmNvbm5lY3Rvci1jdXJ2YXR1cmU9IjAiIC8+CisgIDwvZz4KKzwvc3ZnPgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2Vhc3kuanBnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2Vhc3kuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxNzQzZGYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvZWFzeS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2VjX2Jvc3Rvbi5wbmcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvZWNfYm9zdG9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2Y3Y2NjCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2VjX2Jvc3Rvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2ZpcnN0IHN3dGJvdC5wbmcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvZmlyc3Qgc3d0Ym90LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmE3YmI0Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2ZpcnN0IHN3dGJvdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2dyYXBoLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9ncmFwaC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ5OGVmZgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9ncmFwaC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2h1cnJheS5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvaHVycmF5LmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTQ5NzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2h1cnJheS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2xlYXJuLmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9sZWFybi5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThkMjEzMwotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9sZWFybi5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2x1dGhlci5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvbHV0aGVyLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmM3OWE0Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL2x1dGhlci5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL21vZGVsaW5nQm90IHBhY2thZ2UgZW50aXRpZXMuanBnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL21vZGVsaW5nQm90IHBhY2thZ2UgZW50aXRpZXMuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZmY4ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvbW9kZWxpbmdCb3QgcGFja2FnZSBlbnRpdGllcy5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL25vdC10aGUtZW5kLmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9ub3QtdGhlLWVuZC5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2IwOGI1NQotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9ub3QtdGhlLWVuZC5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL29wZW4ucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL29wZW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmOGEzMGIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvb3Blbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL3Blbi5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvcGVuLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTliYThjCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL3Blbi5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL3JvYm90LmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9yb2JvdC5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIzYjU4ZgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0REVC9yb2JvdC5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL3NyYy50eHQgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvc3JjLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDc5YTIxCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL3NyYy50eHQKQEAgLTAsMCArMSw3IEBACitSb2JvdCA6IGh0dHA6Ly95dW1pLWtpZGRvLmRldmlhbnRhcnQuY29tL2FydC9NYXJ2aW4tMTQxODE0MTUxCitoYXJkIDogIFBob3RvIENyZWRpdDogPGEgaHJlZj0iaHR0cDovL3d3dy5mbGlja3IuY29tL3Bob3Rvcy8zNDEyMDk1N0BOMDQvNDE5OTY3NTMzNC8iPkFsZXggRS4gUHJvaW1vczwvYT4gdmlhIDxhIGhyZWY9Imh0dHA6Ly9jb21wZmlnaHQuY29tIj5Db21wZmlnaHQ8L2E+IDxhIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzIuMC8iPmNjPC9hPiAKK2luZ2VuaWV1cnM6IFBob3RvIENyZWRpdDogPGEgaHJlZj0iaHR0cDovL3d3dy5mbGlja3IuY29tL3Bob3Rvcy80MDk5NDQ4NUBOMDQvNjAwNTkxOTU5Ny8iPkdlb3JnaWEgTmF0aW9uYWwgR3VhcmQ8L2E+IHZpYSA8YSBocmVmPSJodHRwOi8vY29tcGZpZ2h0LmNvbSI+Q29tcGZpZ2h0PC9hPiA8YSBocmVmPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9saWNlbnNlcy9ieS8yLjAvIj5jYzwvYT4KK2ZpZXN0YTogIFBob3RvIENyZWRpdDogPGEgaHJlZj0iaHR0cDovL3d3dy5mbGlja3IuY29tL3Bob3Rvcy80MDE0MzczN0BOMDIvNDE2Nzc1MTIyNy8iPngtcmF5IGRlbHRhIG9uZTwvYT4gdmlhIDxhIGhyZWY9Imh0dHA6Ly9jb21wZmlnaHQuY29tIj5Db21wZmlnaHQ8L2E+IDxhIGhyZWY9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LXNhLzIuMC8iPmNjPC9hPgoraGFuZ292ZXI6IFBob3RvIENyZWRpdDogPGEgaHJlZj0iaHR0cDovL3d3dy5mbGlja3IuY29tL3Bob3Rvcy8zNDEwMzMzNEBOMDAvMjg1MDM4NzkyMC8iPn4hPC9hPiB2aWEgPGEgaHJlZj0iaHR0cDovL2NvbXBmaWdodC5jb20iPkNvbXBmaWdodDwvYT4gPGEgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMi4wLyI+Y2M8L2E+IAorRGVzc2luOiBQaG90byBDcmVkaXQ6IDxhIGhyZWY9Imh0dHA6Ly93d3cuZmxpY2tyLmNvbS9waG90b3MvNTkwNzcxMzZATjAwLzMwMDU2NTAxMzUvIj5zaGF3bmNhbXBiZWxsPC9hPiB2aWEgPGEgaHJlZj0iaHR0cDovL2NvbXBmaWdodC5jb20iPkNvbXBmaWdodDwvYT4gPGEgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMi4wLyI+Y2M8L2E+CitOZXJkOiBQaG90byBDcmVkaXQ6IDxhIGhyZWY9Imh0dHA6Ly93d3cuZmxpY2tyLmNvbS9waG90b3MvNDQ2NjczMDRATjAyLzU1MjI5MzI5MDIvIj5rcnlzdGlhbl9vPC9hPiB2aWEgPGEgaHJlZj0iaHR0cDovL2NvbXBmaWdodC5jb20iPkNvbXBmaWdodDwvYT4gPGEgaHJlZj0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbGljZW5zZXMvYnkvMi4wLyI+Y2M8L2E+IApkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL3VuZGVyc3RhbmQuanBnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL3VuZGVyc3RhbmQuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmZGVmZjUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvdW5kZXJzdGFuZC5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL3V0b3BpYS5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9ERFQvdXRvcGlhLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGVhMmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvRERUL3V0b3BpYS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L0FyY2hpdGVjdHVyZV9yZXBvc2l0b3J5LnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9BcmNoaXRlY3R1cmVfcmVwb3NpdG9yeS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE2YzhhMAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9BcmNoaXRlY3R1cmVfcmVwb3NpdG9yeS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L0ltYWdlLUludGVudF9sb2dvLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9JbWFnZS1JbnRlbnRfbG9nby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMxOTM5ZQotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9JbWFnZS1JbnRlbnRfbG9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L0ltYWdlLUludGVudF9sb2dvX2Nyb3BwZWQucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L0ltYWdlLUludGVudF9sb2dvX2Nyb3BwZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MTBlODQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvSW1hZ2UtSW50ZW50X2xvZ29fY3JvcHBlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZi1iMDEucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZi1iMDEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3OWVjN2IKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvU21hcnRFQS9pbnN0ZWFkX29mLWIwMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZi1iMDIucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZi1iMDIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhZDc2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvU21hcnRFQS9pbnN0ZWFkX29mLWIwMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZi1iMDMucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZi1iMDMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYWY1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvU21hcnRFQS9pbnN0ZWFkX29mLWIwMy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZi5wbmcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvU21hcnRFQS9pbnN0ZWFkX29mLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZjEwZGE0Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZjAxLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9TbWFydEVBL2luc3RlYWRfb2YwMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFiODFmYgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9TbWFydEVBL2luc3RlYWRfb2YwMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZjAyLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9TbWFydEVBL2luc3RlYWRfb2YwMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhhY2Q2NgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9TbWFydEVBL2luc3RlYWRfb2YwMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZjAzLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9TbWFydEVBL2luc3RlYWRfb2YwMy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ0MGUwMAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9TbWFydEVBL2luc3RlYWRfb2YwMy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZl92Mi5wbmcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvU21hcnRFQS9pbnN0ZWFkX29mX3YyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjY2YmU0Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvaW5zdGVhZF9vZl92Mi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvdG9nYWYucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L1NtYXJ0RUEvdG9nYWYucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMTkxM2QKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvU21hcnRFQS90b2dhZi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2FyaWFkbmUucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2FyaWFkbmUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3OGVlODIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvYXJpYWRuZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2FyaWFkbmVfYmcucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2FyaWFkbmVfYmcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxMjViNGIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvYXJpYWRuZV9iZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2FyaWFkbmVfd2hpdGUucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2FyaWFkbmVfd2hpdGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NDZkZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvYXJpYWRuZV93aGl0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2Jvb2suanBnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2Jvb2suanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ZTdjOWEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvYm9vay5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2Nkby5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvY2RvLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2U5M2IxCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2Nkby5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2Nkb19zY3JlZW5zaG90LnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9jZG9fc2NyZWVuc2hvdC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNlNGY3NgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9jZG9fc2NyZWVuc2hvdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2NvbW11bmlxdWVyLWZvcm1lcy5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvY29tbXVuaXF1ZXItZm9ybWVzLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjEwMjBkCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2NvbW11bmlxdWVyLWZvcm1lcy5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2NfbW9uc3Rlci5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvZG9jL2RvY19tb25zdGVyLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDVlZmYxCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2NfbW9uc3Rlci5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2NfbW9uc3Rlci5wbmcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvZG9jL2RvY19tb25zdGVyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjhhZjNiCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2NfbW9uc3Rlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2Nfc2hyZWRkZWQuanBnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2Nfc2hyZWRkZWQuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlY2YyZDUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvZG9jL2RvY19zaHJlZGRlZC5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2NfdHJvdG9pci5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvZG9jL2RvY190cm90b2lyLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWQzODBiCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2NfdHJvdG9pci5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2Nfd2FzdGVkLmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9kb2MvZG9jX3dhc3RlZC5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRlZGRiNwotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9kb2MvZG9jX3dhc3RlZC5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2Nfd2FzdGVkMi5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvZG9jL2RvY193YXN0ZWQyLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWVkZTQyCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9kb2Nfd2FzdGVkMi5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9ydGZtLmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9kb2MvcnRmbS5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDI4YWJhZQotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9kb2MvcnRmbS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9ydGZtX2Nhci5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvZG9jL3J0Zm1fY2FyLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWYwNmIxCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy9ydGZtX2Nhci5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy93YXN0ZWRfcGFwZXIuanBnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2RvYy93YXN0ZWRfcGFwZXIuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyOWRhM2EKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvZG9jL3dhc3RlZF9wYXBlci5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2VnZy1pbmN1YmF0aW9uLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9lZ2ctaW5jdWJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYxYzk4MQotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9lZ2ctaW5jdWJhdGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2V1cm9wZTIwMTJfbG9nby5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvZXVyb3BlMjAxMl9sb2dvLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yjk2NzYxCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2V1cm9wZTIwMTJfbG9nby5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2ZlZWRiYWNrLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9mZWVkYmFjay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FiNDgzMQotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9mZWVkYmFjay5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2luQWN0aW9uLmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9pbkFjdGlvbi5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGIzNTM0NQotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9pbkFjdGlvbi5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2MucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2MucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNWMyYjgKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvbGlua2VkX2RvYy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2MyLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9saW5rZWRfZG9jMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RlNTdiNwotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9saW5rZWRfZG9jMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDIucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YTAwZjEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvbGlua2VkX2RvY19zdGVwMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDJhLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9saW5rZWRfZG9jX3N0ZXAyYS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGMzNzhjZgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9saW5rZWRfZG9jX3N0ZXAyYS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDMucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjY2UwZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvbGlua2VkX2RvY19zdGVwMy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDQucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZWNjOTYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvbGlua2VkX2RvY19zdGVwNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDUucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyMTcwNzEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvbGlua2VkX2RvY19zdGVwNS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDViLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9saW5rZWRfZG9jX3N0ZXA1Yi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDEyNGIwYgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9saW5rZWRfZG9jX3N0ZXA1Yi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDYucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L2xpbmtlZF9kb2Nfc3RlcDYucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkOWJmYWQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvbGlua2VkX2RvY19zdGVwNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L21haW50ZW5hbmNlLmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9tYWludGVuYW5jZS5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc1MzM3MgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9tYWludGVuYW5jZS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L21hemUucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L21hemUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjM2Y5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvbWF6ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3BhcnQyLmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9wYXJ0Mi5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc2YWQ2MAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9wYXJ0Mi5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3BlcmR1LmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9wZXJkdS5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU2ODc4NgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9wZXJkdS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0ICJhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9wbHVzIGNvbXBsaXF1XDMwM1wyNTEgcXVlIHByXDMwM1wyNTF2dS5qcGciICJiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9wbHVzIGNvbXBsaXF1XDMwM1wyNTEgcXVlIHByXDMwM1wyNTF2dS5qcGciCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NTI4YWEKLS0tIC9kZXYvbnVsbAorKysgImIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3BsdXMgY29tcGxpcXVcMzAzXDI1MSBxdWUgcHJcMzAzXDI1MXZ1LmpwZyIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0ICJhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9wcm9kdWN0aXZpdFwzMDNcMjUxIC0gcGljaGV0LmpwZyIgImIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3Byb2R1Y3Rpdml0XDMwM1wyNTEgLSBwaWNoZXQuanBnIgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjk5NWNiCi0tLSAvZGV2L251bGwKKysrICJiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9wcm9kdWN0aXZpdFwzMDNcMjUxIC0gcGljaGV0LmpwZyIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3J0Zm0uanBnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3J0Zm0uanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYzJjMzMKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvcnRmbS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3NoYXJlMS5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvc2hhcmUxLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmQzNzUyCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3NoYXJlMS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3NoYXJlMi5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvc2hhcmUyLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWFlNGRjCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3NoYXJlMi5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3Nob3J0X3NpZ2h0LmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9zaG9ydF9zaWdodC5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZiMGVkOAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9zaG9ydF9zaWdodC5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3NtYXJ0RUEucG5nIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3NtYXJ0RUEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzYWRmYmIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvc21hcnRFQS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3NtYXJ0ZWFfc2NyZWVuc2hvdC5wbmcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvc21hcnRlYV9zY3JlZW5zaG90LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Nzg0MGE0Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3NtYXJ0ZWFfc2NyZWVuc2hvdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3N0b25laGVkZ2UuanBnIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3N0b25laGVkZ2UuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNTQyNjMKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvc3RvbmVoZWRnZS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3N0b25laGVkZ2UyLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9zdG9uZWhlZGdlMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhhZjRhOAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC9zdG9uZWhlZGdlMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3N5bmMwMS5wbmcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvc3luYzAxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODg3MjA1Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3N5bmMwMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3N5bmMwMi5wbmcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvc3luYzAyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjAyNGNmCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3N5bmMwMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0ICJhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC90aFwzMDNcMjUxLmpwZyIgImIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3RoXDMwM1wyNTEuanBnIgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGRjNjY1Ci0tLSAvZGV2L251bGwKKysrICJiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL0ludGVudC90aFwzMDNcMjUxLmpwZyIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3VuY2xlLXNhbS5qcGcgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2ltYWdlcy9JbnRlbnQvdW5jbGUtc2FtLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjc3NzBlCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvSW50ZW50L3VuY2xlLXNhbS5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvY29udGFjdC90d2l0dGVyLmpwZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL2NvbnRhY3QvdHdpdHRlci5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmEwZTE4OAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL2NvbnRhY3QvdHdpdHRlci5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9pbWFnZXMvY29udGFjdC93ZWJzaXRlLnBuZyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL2NvbnRhY3Qvd2Vic2l0ZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBkMmVkNAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvaW1hZ2VzL2NvbnRhY3Qvd2Vic2l0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9oYW1tZXIuanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL2hhbW1lci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGE1ODAyCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9oYW1tZXIuanMKQEAgLTAsMCArMSw1ODYgQEAKKy8qCisgKiBIYW1tZXIuSlMKKyAqIHZlcnNpb24gMC40CisgKiBhdXRob3I6IEVpZ2h0IE1lZGlhCisgKiBodHRwczovL2dpdGh1Yi5jb20vRWlnaHRNZWRpYS9oYW1tZXIuanMKKyAqLworZnVuY3Rpb24gSGFtbWVyKGVsZW1lbnQsIG9wdGlvbnMsIHVuZGVmaW5lZCkKK3sKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICB2YXIgZGVmYXVsdHMgPSB7CisgICAgICAgIC8vIHByZXZlbnQgdGhlIGRlZmF1bHQgZXZlbnQgb3Igbm90Li4uIG1pZ2h0IGJlIGJ1Z2d5IHdoZW4gZmFsc2UKKyAgICAgICAgcHJldmVudF9kZWZhdWx0ICAgIDogZmFsc2UsCisgICAgICAgIGNzc19oYWNrcyAgICAgICAgICA6IHRydWUsCisKKyAgICAgICAgZHJhZyAgICAgICAgICAgICAgIDogdHJ1ZSwKKyAgICAgICAgZHJhZ192ZXJ0aWNhbCAgICAgIDogdHJ1ZSwKKyAgICAgICAgZHJhZ19ob3Jpem9udGFsICAgIDogdHJ1ZSwKKyAgICAgICAgLy8gbWluaW11bSBkaXN0YW5jZSBiZWZvcmUgdGhlIGRyYWcgZXZlbnQgc3RhcnRzCisgICAgICAgIGRyYWdfbWluX2Rpc3RhbmNlICA6IDIwLCAvLyBwaXhlbHMKKworICAgICAgICAvLyBwaW5jaCB6b29tIGFuZCByb3RhdGlvbgorICAgICAgICB0cmFuc2Zvcm0gICAgICAgICAgOiB0cnVlLAorICAgICAgICBzY2FsZV90cmVzaG9sZCAgICAgOiAwLjEsCisgICAgICAgIHJvdGF0aW9uX3RyZXNob2xkICA6IDE1LCAvLyBkZWdyZWVzCisKKyAgICAgICAgdGFwICAgICAgICAgICAgICAgIDogdHJ1ZSwKKyAgICAgICAgdGFwX2RvdWJsZSAgICAgICAgIDogdHJ1ZSwKKyAgICAgICAgdGFwX21heF9pbnRlcnZhbCAgIDogMzAwLAorICAgICAgICB0YXBfZG91YmxlX2Rpc3RhbmNlOiAyMCwKKworICAgICAgICBob2xkICAgICAgICAgICAgICAgOiB0cnVlLAorICAgICAgICBob2xkX3RpbWVvdXQgICAgICAgOiA1MDAKKyAgICB9OworICAgIG9wdGlvbnMgPSBtZXJnZU9iamVjdChkZWZhdWx0cywgb3B0aW9ucyk7CisKKyAgICAvLyBzb21lIGNzcyBoYWNrcworICAgIChmdW5jdGlvbigpIHsKKyAgICAgICAgaWYoIW9wdGlvbnMuY3NzX2hhY2tzKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICB2YXIgdmVuZG9ycyA9IFsnd2Via2l0JywnbW96JywnbXMnLCdvJywnJ107CisgICAgICAgIHZhciBjc3NfcHJvcHMgPSB7CisgICAgICAgICAgICAidXNlclNlbGVjdCI6ICJub25lIiwKKyAgICAgICAgICAgICJ0b3VjaENhbGxvdXQiOiAibm9uZSIsCisgICAgICAgICAgICAidXNlckRyYWciOiAibm9uZSIsCisgICAgICAgICAgICAidGFwSGlnaGxpZ2h0Q29sb3IiOiAicmdiYSgwLDAsMCwwKSIKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgcHJvcCA9ICcnOworICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgdmVuZG9ycy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZm9yKHZhciBwIGluIGNzc19wcm9wcykgeworICAgICAgICAgICAgICAgIHByb3AgPSBwOworICAgICAgICAgICAgICAgIGlmKHZlbmRvcnNbaV0pIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvcCA9IHZlbmRvcnNbaV0gKyBwcm9wLnN1YnN0cmluZygwLCAxKS50b1VwcGVyQ2FzZSgpICsgcHJvcC5zdWJzdHJpbmcoMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsZW1lbnQuc3R5bGVbIHByb3AgXSA9IGNzc19wcm9wc1twXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0pKCk7CisKKyAgICAvLyBob2xkcyB0aGUgZGlzdGFuY2UgdGhhdCBoYXMgYmVlbiBtb3ZlZAorICAgIHZhciBfZGlzdGFuY2UgPSAwOworCisgICAgLy8gaG9sZHMgdGhlIGV4YWN0IGFuZ2xlIHRoYXQgaGFzIGJlZW4gbW92ZWQKKyAgICB2YXIgX2FuZ2xlID0gMDsKKworICAgIC8vIGhvbGRzIHRoZSBkaXJhY3Rpb24gdGhhdCBoYXMgYmVlbiBtb3ZlZAorICAgIHZhciBfZGlyZWN0aW9uID0gMDsKKworICAgIC8vIGhvbGRzIHBvc2l0aW9uIG1vdmVtZW50IGZvciBzbGlkaW5nCisgICAgdmFyIF9wb3MgPSB7IH07CisKKyAgICAvLyBob3cgbWFueSBmaW5nZXJzIGFyZSBvbiB0aGUgc2NyZWVuCisgICAgdmFyIF9maW5nZXJzID0gMDsKKworICAgIHZhciBfZmlyc3QgPSBmYWxzZTsKKworICAgIHZhciBfZ2VzdHVyZSA9IG51bGw7CisgICAgdmFyIF9wcmV2X2dlc3R1cmUgPSBudWxsOworCisgICAgdmFyIF90b3VjaF9zdGFydF90aW1lID0gbnVsbDsKKyAgICB2YXIgX3ByZXZfdGFwX3BvcyA9IHt4OiAwLCB5OiAwfTsKKyAgICB2YXIgX3ByZXZfdGFwX2VuZF90aW1lID0gbnVsbDsKKworICAgIHZhciBfaG9sZF90aW1lciA9IG51bGw7CisKKyAgICB2YXIgX29mZnNldCA9IHt9OworCisgICAgLy8ga2VlcCB0cmFjayBvZiB0aGUgbW91c2Ugc3RhdHVzCisgICAgdmFyIF9tb3VzZWRvd24gPSBmYWxzZTsKKworICAgIHZhciBfZXZlbnRfc3RhcnQ7CisgICAgdmFyIF9ldmVudF9tb3ZlOworICAgIHZhciBfZXZlbnRfZW5kOworCisKKyAgICAvKioKKyAgICAgKiBhbmdsZSB0byBkaXJlY3Rpb24gZGVmaW5lCisgICAgICogQHBhcmFtICBmbG9hdCAgICBhbmdsZQorICAgICAqIEByZXR1cm4gc3RyaW5nICAgZGlyZWN0aW9uCisgICAgICovCisgICAgdGhpcy5nZXREaXJlY3Rpb25Gcm9tQW5nbGUgPSBmdW5jdGlvbiggYW5nbGUgKQorICAgIHsKKyAgICAgICAgdmFyIGRpcmVjdGlvbnMgPSB7CisgICAgICAgICAgICBkb3duOiBhbmdsZSA+PSA0NSAmJiBhbmdsZSA8IDEzNSwgLy85MAorICAgICAgICAgICAgbGVmdDogYW5nbGUgPj0gMTM1IHx8IGFuZ2xlIDw9IC0xMzUsIC8vMTgwCisgICAgICAgICAgICB1cDogYW5nbGUgPCAtNDUgJiYgYW5nbGUgPiAtMTM1LCAvLzI3MAorICAgICAgICAgICAgcmlnaHQ6IGFuZ2xlID49IC00NSAmJiBhbmdsZSA8PSA0NSAvLzAKKyAgICAgICAgfTsKKworICAgICAgICB2YXIgZGlyZWN0aW9uLCBrZXk7CisgICAgICAgIGZvcihrZXkgaW4gZGlyZWN0aW9ucyl7CisgICAgICAgICAgICBpZihkaXJlY3Rpb25zW2tleV0peworICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IGtleTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGlyZWN0aW9uOworICAgIH07CisKKworICAgIC8qKgorICAgICAqIGNvdW50IHRoZSBudW1iZXIgb2YgZmluZ2VycyBpbiB0aGUgZXZlbnQKKyAgICAgKiB3aGVuIG5vIGZpbmdlcnMgYXJlIGRldGVjdGVkLCBvbmUgZmluZ2VyIGlzIHJldHVybmVkIChtb3VzZSBwb2ludGVyKQorICAgICAqIEBwYXJhbSAgZXZlbnQKKyAgICAgKiBAcmV0dXJuIGludCAgZmluZ2VycworICAgICAqLworICAgIGZ1bmN0aW9uIGNvdW50RmluZ2VycyggZXZlbnQgKQorICAgIHsKKyAgICAgICAgLy8gdGhlcmUgaXMgYSBidWcgb24gYW5kcm9pZCAodW50aWwgdjQ/KSB0aGF0IHRvdWNoZXMgaXMgYWx3YXlzIDEsCisgICAgICAgIC8vIHNvIG5vIG11bHRpdG91Y2ggaXMgc3VwcG9ydGVkLCBlLmcuIG5vLCB6b29tIGFuZCByb3RhdGlvbi4uLgorICAgICAgICByZXR1cm4gZXZlbnQudG91Y2hlcyA/IGV2ZW50LnRvdWNoZXMubGVuZ3RoIDogMTsKKyAgICB9CisKKworICAgIC8qKgorICAgICAqIGdldCB0aGUgeCBhbmQgeSBwb3NpdGlvbnMgZnJvbSB0aGUgZXZlbnQgb2JqZWN0CisgICAgICogQHBhcmFtICBldmVudAorICAgICAqIEByZXR1cm4gYXJyYXkgIFt7IHg6IGludCwgeTogaW50IH1dCisgICAgICovCisgICAgZnVuY3Rpb24gZ2V0WFlmcm9tRXZlbnQoIGV2ZW50ICkKKyAgICB7CisgICAgICAgIGV2ZW50ID0gZXZlbnQgfHwgd2luZG93LmV2ZW50OworCisgICAgICAgIC8vIG5vIHRvdWNoZXMsIHVzZSB0aGUgZXZlbnQgcGFnZVggYW5kIHBhZ2VZCisgICAgICAgIGlmKCFldmVudC50b3VjaGVzKSB7CisgICAgICAgICAgICB2YXIgZG9jID0gZG9jdW1lbnQsCisgICAgICAgICAgICAgICAgYm9keSA9IGRvYy5ib2R5OworCisgICAgICAgICAgICByZXR1cm4gW3sKKyAgICAgICAgICAgICAgICB4OiBldmVudC5wYWdlWCB8fCBldmVudC5jbGllbnRYICsgKCBkb2MgJiYgZG9jLnNjcm9sbExlZnQgfHwgYm9keSAmJiBib2R5LnNjcm9sbExlZnQgfHwgMCApIC0gKCBkb2MgJiYgZG9jLmNsaWVudExlZnQgfHwgYm9keSAmJiBkb2MuY2xpZW50TGVmdCB8fCAwICksCisgICAgICAgICAgICAgICAgeTogZXZlbnQucGFnZVkgfHwgZXZlbnQuY2xpZW50WSArICggZG9jICYmIGRvYy5zY3JvbGxUb3AgfHwgYm9keSAmJiBib2R5LnNjcm9sbFRvcCB8fCAwICkgLSAoIGRvYyAmJiBkb2MuY2xpZW50VG9wIHx8IGJvZHkgJiYgZG9jLmNsaWVudFRvcCB8fCAwICkKKyAgICAgICAgICAgIH1dOworICAgICAgICB9CisgICAgICAgIC8vIG11bHRpdG91Y2gsIHJldHVybiBhcnJheSB3aXRoIHBvc2l0aW9ucworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhciBwb3MgPSBbXSwgc3JjOworICAgICAgICAgICAgZm9yKHZhciB0PTAsIGxlbj1ldmVudC50b3VjaGVzLmxlbmd0aDsgdDxsZW47IHQrKykgeworICAgICAgICAgICAgICAgIHNyYyA9IGV2ZW50LnRvdWNoZXNbdF07CisgICAgICAgICAgICAgICAgcG9zLnB1c2goeyB4OiBzcmMucGFnZVgsIHk6IHNyYy5wYWdlWSB9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBwb3M7CisgICAgICAgIH0KKyAgICB9CisKKworICAgIC8qKgorICAgICAqIGNhbGN1bGF0ZSB0aGUgYW5nbGUgYmV0d2VlbiB0d28gcG9pbnRzCisgICAgICogQHBhcmFtIG9iamVjdCBwb3MxIHsgeDogaW50LCB5OiBpbnQgfQorICAgICAqIEBwYXJhbSBvYmplY3QgcG9zMiB7IHg6IGludCwgeTogaW50IH0KKyAgICAgKi8KKyAgICBmdW5jdGlvbiBnZXRBbmdsZSggcG9zMSwgcG9zMiApCisgICAgeworICAgICAgICByZXR1cm4gTWF0aC5hdGFuMihwb3MyLnkgLSBwb3MxLnksIHBvczIueCAtIHBvczEueCkgKiAxODAgLyBNYXRoLlBJOworICAgIH0KKworICAgIC8qKgorICAgICAqIHRyaWdnZXIgYW4gZXZlbnQvY2FsbGJhY2sgYnkgbmFtZSB3aXRoIHBhcmFtcworICAgICAqIEBwYXJhbSBzdHJpbmcgbmFtZQorICAgICAqIEBwYXJhbSBhcnJheSAgcGFyYW1zCisgICAgICovCisgICAgZnVuY3Rpb24gdHJpZ2dlckV2ZW50KCBldmVudE5hbWUsIHBhcmFtcyApCisgICAgeworICAgICAgICAvLyByZXR1cm4gdG91Y2hlcyBvYmplY3QKKyAgICAgICAgcGFyYW1zLnRvdWNoZXMgPSBnZXRYWWZyb21FdmVudChwYXJhbXMub3JpZ2luYWxFdmVudCk7CisgICAgICAgIHBhcmFtcy50eXBlID0gZXZlbnROYW1lOworCisgICAgICAgIC8vIHRyaWdnZXIgY2FsbGJhY2sKKyAgICAgICAgaWYoaXNGdW5jdGlvbihzZWxmWyJvbiIrIGV2ZW50TmFtZV0pKSB7CisgICAgICAgICAgICBzZWxmWyJvbiIrIGV2ZW50TmFtZV0uY2FsbChzZWxmLCBwYXJhbXMpOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBjYW5jZWwgZXZlbnQKKyAgICAgKiBAcGFyYW0gICBvYmplY3QgIGV2ZW50CisgICAgICogQHJldHVybiAgdm9pZAorICAgICAqLworCisgICAgZnVuY3Rpb24gY2FuY2VsRXZlbnQoZXZlbnQpeworICAgICAgICBldmVudCA9IGV2ZW50IHx8IHdpbmRvdy5ldmVudDsKKyAgICAgICAgaWYoZXZlbnQucHJldmVudERlZmF1bHQpeworICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgfWVsc2V7CisgICAgICAgICAgICBldmVudC5yZXR1cm5WYWx1ZSA9IGZhbHNlOworICAgICAgICAgICAgZXZlbnQuY2FuY2VsQnViYmxlID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoqCisgICAgICogcmVzZXQgdGhlIGludGVybmFsIHZhcnMgdG8gdGhlIHN0YXJ0IHZhbHVlcworICAgICAqLworICAgIGZ1bmN0aW9uIHJlc2V0KCkKKyAgICB7CisgICAgICAgIF9wb3MgPSB7fTsKKyAgICAgICAgX2ZpcnN0ID0gZmFsc2U7CisgICAgICAgIF9maW5nZXJzID0gMDsKKyAgICAgICAgX2Rpc3RhbmNlID0gMDsKKyAgICAgICAgX2FuZ2xlID0gMDsKKyAgICAgICAgX2dlc3R1cmUgPSBudWxsOworICAgIH0KKworCisgICAgdmFyIGdlc3R1cmVzID0geworICAgICAgICAvLyBob2xkIGdlc3R1cmUKKyAgICAgICAgLy8gZmlyZWQgb24gdG91Y2hzdGFydAorICAgICAgICBob2xkIDogZnVuY3Rpb24oZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIG9ubHkgd2hlbiBvbmUgZmluZ2VyIGlzIG9uIHRoZSBzY3JlZW4KKyAgICAgICAgICAgIGlmKG9wdGlvbnMuaG9sZCkgeworICAgICAgICAgICAgICAgIF9nZXN0dXJlID0gJ2hvbGQnOworICAgICAgICAgICAgICAgIGNsZWFyVGltZW91dChfaG9sZF90aW1lcik7CisKKyAgICAgICAgICAgICAgICBfaG9sZF90aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIGlmKF9nZXN0dXJlID09ICdob2xkJykgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCJob2xkIiwgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQgICA6IGV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICAgICAgICA6IF9wb3Muc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSwgb3B0aW9ucy5ob2xkX3RpbWVvdXQpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCisKKyAgICAgICAgLy8gZHJhZyBnZXN0dXJlCisgICAgICAgIC8vIGZpcmVkIG9uIG1vdXNlbW92ZQorICAgICAgICBkcmFnIDogZnVuY3Rpb24oZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIGdldCB0aGUgZGlzdGFuY2Ugd2UgbW92ZWQKKyAgICAgICAgICAgIHZhciBfZGlzdGFuY2VfeCA9IF9wb3MubW92ZVswXS54IC0gX3Bvcy5zdGFydFswXS54OworICAgICAgICAgICAgdmFyIF9kaXN0YW5jZV95ID0gX3Bvcy5tb3ZlWzBdLnkgLSBfcG9zLnN0YXJ0WzBdLnk7CisgICAgICAgICAgICBfZGlzdGFuY2UgPSBNYXRoLnNxcnQoX2Rpc3RhbmNlX3ggKiBfZGlzdGFuY2VfeCArIF9kaXN0YW5jZV95ICogX2Rpc3RhbmNlX3kpOworCisgICAgICAgICAgICAvLyBkcmFnCisgICAgICAgICAgICAvLyBtaW5pbWFsIG1vdmVtZW50IHJlcXVpcmVkCisgICAgICAgICAgICBpZihvcHRpb25zLmRyYWcgJiYgKF9kaXN0YW5jZSA+IG9wdGlvbnMuZHJhZ19taW5fZGlzdGFuY2UpIHx8IF9nZXN0dXJlID09ICdkcmFnJykgeworICAgICAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSB0aGUgYW5nbGUKKyAgICAgICAgICAgICAgICBfYW5nbGUgPSBnZXRBbmdsZShfcG9zLnN0YXJ0WzBdLCBfcG9zLm1vdmVbMF0pOworICAgICAgICAgICAgICAgIF9kaXJlY3Rpb24gPSBzZWxmLmdldERpcmVjdGlvbkZyb21BbmdsZShfYW5nbGUpOworCisgICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhlIG1vdmVtZW50IGFuZCBzdG9wIGlmIHdlIGdvIGluIHRoZSB3cm9uZyBkaXJlY3Rpb24KKyAgICAgICAgICAgICAgICB2YXIgaXNfdmVydGljYWwgPSAoX2RpcmVjdGlvbiA9PSAndXAnIHx8IF9kaXJlY3Rpb24gPT0gJ2Rvd24nKTsKKyAgICAgICAgICAgICAgICBpZigoKGlzX3ZlcnRpY2FsICYmICFvcHRpb25zLmRyYWdfdmVydGljYWwpIHx8ICghaXNfdmVydGljYWwgJiYgIW9wdGlvbnMuZHJhZ19ob3Jpem9udGFsKSkKKyAgICAgICAgICAgICAgICAgICAgJiYgKF9kaXN0YW5jZSA+IG9wdGlvbnMuZHJhZ19taW5fZGlzdGFuY2UpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBfZ2VzdHVyZSA9ICdkcmFnJzsKKworICAgICAgICAgICAgICAgIHZhciBwb3NpdGlvbiA9IHsgeDogX3Bvcy5tb3ZlWzBdLnggLSBfb2Zmc2V0LmxlZnQsCisgICAgICAgICAgICAgICAgICAgIHk6IF9wb3MubW92ZVswXS55IC0gX29mZnNldC50b3AgfTsKKworICAgICAgICAgICAgICAgIHZhciBldmVudF9vYmogPSB7CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQgICA6IGV2ZW50LAorICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiAgICAgICAgOiBwb3NpdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uICAgICAgIDogX2RpcmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2UgICAgICAgIDogX2Rpc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZVggICAgICAgOiBfZGlzdGFuY2VfeCwKKyAgICAgICAgICAgICAgICAgICAgZGlzdGFuY2VZICAgICAgIDogX2Rpc3RhbmNlX3ksCisgICAgICAgICAgICAgICAgICAgIGFuZ2xlICAgICAgICAgICA6IF9hbmdsZQorICAgICAgICAgICAgICAgIH07CisKKyAgICAgICAgICAgICAgICAvLyBvbiB0aGUgZmlyc3QgdGltZSB0cmlnZ2VyIHRoZSBzdGFydCBldmVudAorICAgICAgICAgICAgICAgIGlmKF9maXJzdCkgeworICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoImRyYWdzdGFydCIsIGV2ZW50X29iaik7CisKKyAgICAgICAgICAgICAgICAgICAgX2ZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gbm9ybWFsIHNsaWRlIGV2ZW50CisgICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCJkcmFnIiwgZXZlbnRfb2JqKTsKKworICAgICAgICAgICAgICAgIGNhbmNlbEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworCisgICAgICAgIC8vIHRyYW5zZm9ybSBnZXN0dXJlCisgICAgICAgIC8vIGZpcmVkIG9uIHRvdWNobW92ZQorICAgICAgICB0cmFuc2Zvcm0gOiBmdW5jdGlvbihldmVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYob3B0aW9ucy50cmFuc2Zvcm0pIHsKKyAgICAgICAgICAgICAgICB2YXIgc2NhbGUgPSBldmVudC5zY2FsZSB8fCAxOworICAgICAgICAgICAgICAgIHZhciByb3RhdGlvbiA9IGV2ZW50LnJvdGF0aW9uIHx8IDA7CisKKyAgICAgICAgICAgICAgICBpZihjb3VudEZpbmdlcnMoZXZlbnQpICE9IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmKF9nZXN0dXJlICE9ICdkcmFnJyAmJgorICAgICAgICAgICAgICAgICAgICAoX2dlc3R1cmUgPT0gJ3RyYW5zZm9ybScgfHwgTWF0aC5hYnMoMS1zY2FsZSkgPiBvcHRpb25zLnNjYWxlX3RyZXNob2xkCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBNYXRoLmFicyhyb3RhdGlvbikgPiBvcHRpb25zLnJvdGF0aW9uX3RyZXNob2xkKSkgeworICAgICAgICAgICAgICAgICAgICBfZ2VzdHVyZSA9ICd0cmFuc2Zvcm0nOworCisgICAgICAgICAgICAgICAgICAgIF9wb3MuY2VudGVyID0geyAgeDogKChfcG9zLm1vdmVbMF0ueCArIF9wb3MubW92ZVsxXS54KSAvIDIpIC0gX29mZnNldC5sZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgeTogKChfcG9zLm1vdmVbMF0ueSArIF9wb3MubW92ZVsxXS55KSAvIDIpIC0gX29mZnNldC50b3AgfTsKKworICAgICAgICAgICAgICAgICAgICB2YXIgZXZlbnRfb2JqID0geworICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudCAgIDogZXZlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiAgICAgICAgOiBfcG9zLmNlbnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlICAgICAgICAgICA6IHNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb24gICAgICAgIDogcm90YXRpb24KKyAgICAgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgICAgICAvLyBvbiB0aGUgZmlyc3QgdGltZSB0cmlnZ2VyIHRoZSBzdGFydCBldmVudAorICAgICAgICAgICAgICAgICAgICBpZihfZmlyc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudCgidHJhbnNmb3Jtc3RhcnQiLCBldmVudF9vYmopOworICAgICAgICAgICAgICAgICAgICAgICAgX2ZpcnN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoInRyYW5zZm9ybSIsIGV2ZW50X29iaik7CisKKyAgICAgICAgICAgICAgICAgICAgY2FuY2VsRXZlbnQoZXZlbnQpOworCisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9LAorCisKKyAgICAgICAgLy8gdGFwIGFuZCBkb3VibGUgdGFwIGdlc3R1cmUKKyAgICAgICAgLy8gZmlyZWQgb24gdG91Y2hlbmQKKyAgICAgICAgdGFwIDogZnVuY3Rpb24oZXZlbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIGNvbXBhcmUgdGhlIGtpbmQgb2YgZ2VzdHVyZSBieSB0aW1lCisgICAgICAgICAgICB2YXIgbm93ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisgICAgICAgICAgICB2YXIgdG91Y2hfdGltZSA9IG5vdyAtIF90b3VjaF9zdGFydF90aW1lOworCisgICAgICAgICAgICAvLyBkb250IGZpcmUgd2hlbiBob2xkIGlzIGZpcmVkCisgICAgICAgICAgICBpZihvcHRpb25zLmhvbGQgJiYgIShvcHRpb25zLmhvbGQgJiYgb3B0aW9ucy5ob2xkX3RpbWVvdXQgPiB0b3VjaF90aW1lKSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gd2hlbiBwcmV2aW91cyBldmVudCB3YXMgdGFwIGFuZCB0aGUgdGFwIHdhcyBtYXhfaW50ZXJ2YWwgbXMgYWdvCisgICAgICAgICAgICB2YXIgaXNfZG91YmxlX3RhcCA9IChmdW5jdGlvbigpeworICAgICAgICAgICAgICAgIGlmIChfcHJldl90YXBfcG9zICYmIG9wdGlvbnMudGFwX2RvdWJsZSAmJiBfcHJldl9nZXN0dXJlID09ICd0YXAnICYmIChfdG91Y2hfc3RhcnRfdGltZSAtIF9wcmV2X3RhcF9lbmRfdGltZSkgPCBvcHRpb25zLnRhcF9tYXhfaW50ZXJ2YWwpIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHhfZGlzdGFuY2UgPSBNYXRoLmFicyhfcHJldl90YXBfcG9zWzBdLnggLSBfcG9zLnN0YXJ0WzBdLngpOworICAgICAgICAgICAgICAgICAgICB2YXIgeV9kaXN0YW5jZSA9IE1hdGguYWJzKF9wcmV2X3RhcF9wb3NbMF0ueSAtIF9wb3Muc3RhcnRbMF0ueSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAoX3ByZXZfdGFwX3BvcyAmJiBfcG9zLnN0YXJ0ICYmIE1hdGgubWF4KHhfZGlzdGFuY2UsIHlfZGlzdGFuY2UpIDwgb3B0aW9ucy50YXBfZG91YmxlX2Rpc3RhbmNlKTsKKworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9KSgpOworCisgICAgICAgICAgICBpZihpc19kb3VibGVfdGFwKSB7CisgICAgICAgICAgICAgICAgX2dlc3R1cmUgPSAnZG91YmxlX3RhcCc7CisgICAgICAgICAgICAgICAgX3ByZXZfdGFwX2VuZF90aW1lID0gbnVsbDsKKworICAgICAgICAgICAgICAgIHRyaWdnZXJFdmVudCgiZG91YmxldGFwIiwgeworICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50ICAgOiBldmVudCwKKyAgICAgICAgICAgICAgICAgICAgcG9zaXRpb24gICAgICAgIDogX3Bvcy5zdGFydAorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGNhbmNlbEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gc2luZ2xlIHRhcCBpcyBzaW5nbGUgdG91Y2gKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIF9nZXN0dXJlID0gJ3RhcCc7CisgICAgICAgICAgICAgICAgX3ByZXZfdGFwX2VuZF90aW1lID0gbm93OworICAgICAgICAgICAgICAgIF9wcmV2X3RhcF9wb3MgPSBfcG9zLnN0YXJ0OworCisgICAgICAgICAgICAgICAgaWYob3B0aW9ucy50YXApIHsKKyAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCJ0YXAiLCB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50ICAgOiBldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICAgICAgICA6IF9wb3Muc3RhcnQKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIGNhbmNlbEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorCisgICAgfTsKKworCisgICAgZnVuY3Rpb24gaGFuZGxlRXZlbnRzKGV2ZW50KQorICAgIHsKKyAgICAgICAgc3dpdGNoKGV2ZW50LnR5cGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIGNhc2UgJ21vdXNlZG93bic6CisgICAgICAgICAgICBjYXNlICd0b3VjaHN0YXJ0JzoKKyAgICAgICAgICAgICAgICBfcG9zLnN0YXJ0ID0gZ2V0WFlmcm9tRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAgIF90b3VjaF9zdGFydF90aW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7CisgICAgICAgICAgICAgICAgX2ZpbmdlcnMgPSBjb3VudEZpbmdlcnMoZXZlbnQpOworICAgICAgICAgICAgICAgIF9maXJzdCA9IHRydWU7CisgICAgICAgICAgICAgICAgX2V2ZW50X3N0YXJ0ID0gZXZlbnQ7CisKKyAgICAgICAgICAgICAgICAvLyBib3Jyb3dlZCBmcm9tIGpxdWVyeSBvZmZzZXQgaHR0cHM6Ly9naXRodWIuY29tL2pxdWVyeS9qcXVlcnkvYmxvYi9tYXN0ZXIvc3JjL29mZnNldC5qcworICAgICAgICAgICAgICAgIHZhciBib3ggPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgICAgICAgIHZhciBjbGllbnRUb3AgID0gZWxlbWVudC5jbGllbnRUb3AgIHx8IGRvY3VtZW50LmJvZHkuY2xpZW50VG9wICB8fCAwOworICAgICAgICAgICAgICAgIHZhciBjbGllbnRMZWZ0ID0gZWxlbWVudC5jbGllbnRMZWZ0IHx8IGRvY3VtZW50LmJvZHkuY2xpZW50TGVmdCB8fCAwOworICAgICAgICAgICAgICAgIHZhciBzY3JvbGxUb3AgID0gd2luZG93LnBhZ2VZT2Zmc2V0IHx8IGVsZW1lbnQuc2Nyb2xsVG9wICB8fCBkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDsKKyAgICAgICAgICAgICAgICB2YXIgc2Nyb2xsTGVmdCA9IHdpbmRvdy5wYWdlWE9mZnNldCB8fCBlbGVtZW50LnNjcm9sbExlZnQgfHwgZG9jdW1lbnQuYm9keS5zY3JvbGxMZWZ0OworCisgICAgICAgICAgICAgICAgX29mZnNldCA9IHsKKyAgICAgICAgICAgICAgICAgICAgdG9wOiBib3gudG9wICsgc2Nyb2xsVG9wIC0gY2xpZW50VG9wLAorICAgICAgICAgICAgICAgICAgICBsZWZ0OiBib3gubGVmdCArIHNjcm9sbExlZnQgLSBjbGllbnRMZWZ0CisgICAgICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgICAgIF9tb3VzZWRvd24gPSB0cnVlOworCisgICAgICAgICAgICAgICAgLy8gaG9sZCBnZXN0dXJlCisgICAgICAgICAgICAgICAgZ2VzdHVyZXMuaG9sZChldmVudCk7CisKKyAgICAgICAgICAgICAgICBpZihvcHRpb25zLnByZXZlbnRfZGVmYXVsdCkgeworICAgICAgICAgICAgICAgICAgICBjYW5jZWxFdmVudChldmVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlICdtb3VzZW1vdmUnOgorICAgICAgICAgICAgY2FzZSAndG91Y2htb3ZlJzoKKyAgICAgICAgICAgICAgICBpZighX21vdXNlZG93bikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF9ldmVudF9tb3ZlID0gZXZlbnQ7CisgICAgICAgICAgICAgICAgX3Bvcy5tb3ZlID0gZ2V0WFlmcm9tRXZlbnQoZXZlbnQpOworCisgICAgICAgICAgICAgICAgaWYoIWdlc3R1cmVzLnRyYW5zZm9ybShldmVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZ2VzdHVyZXMuZHJhZyhldmVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlICdtb3VzZXVwJzoKKyAgICAgICAgICAgIGNhc2UgJ21vdXNlb3V0JzoKKyAgICAgICAgICAgIGNhc2UgJ3RvdWNoY2FuY2VsJzoKKyAgICAgICAgICAgIGNhc2UgJ3RvdWNoZW5kJzoKKyAgICAgICAgICAgICAgICBpZighX21vdXNlZG93biB8fCAoX2dlc3R1cmUgIT0gJ3RyYW5zZm9ybScgJiYgZXZlbnQudG91Y2hlcyAmJiBldmVudC50b3VjaGVzLmxlbmd0aCA+IDApKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBfbW91c2Vkb3duID0gZmFsc2U7CisgICAgICAgICAgICAgICAgX2V2ZW50X2VuZCA9IGV2ZW50OworCisgICAgICAgICAgICAgICAgLy8gZHJhZyBnZXN0dXJlCisgICAgICAgICAgICAgICAgLy8gZHJhZ3N0YXJ0IGlzIHRyaWdnZXJlZCwgc28gZHJhZ2VuZCBpcyBwb3NzaWJsZQorICAgICAgICAgICAgICAgIGlmKF9nZXN0dXJlID09ICdkcmFnJykgeworICAgICAgICAgICAgICAgICAgICB0cmlnZ2VyRXZlbnQoImRyYWdlbmQiLCB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50ICAgOiBldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiAgICAgICA6IF9kaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZSAgICAgICAgOiBfZGlzdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICBhbmdsZSAgICAgICAgICAgOiBfYW5nbGUKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gdHJhbnNmb3JtCisgICAgICAgICAgICAgICAgLy8gdHJhbnNmb3Jtc3RhcnQgaXMgdHJpZ2dlcmVkLCBzbyB0cmFuc2Zvcm1lZCBpcyBwb3NzaWJsZQorICAgICAgICAgICAgICAgIGVsc2UgaWYoX2dlc3R1cmUgPT0gJ3RyYW5zZm9ybScpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJpZ2dlckV2ZW50KCJ0cmFuc2Zvcm1lbmQiLCB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50ICAgOiBldmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uICAgICAgICA6IF9wb3MuY2VudGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgc2NhbGUgICAgICAgICAgIDogZXZlbnQuc2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAgICByb3RhdGlvbiAgICAgICAgOiBldmVudC5yb3RhdGlvbgorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGdlc3R1cmVzLnRhcChfZXZlbnRfc3RhcnQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIF9wcmV2X2dlc3R1cmUgPSBfZ2VzdHVyZTsKKworICAgICAgICAgICAgICAgIC8vIHJlc2V0IHZhcnMKKyAgICAgICAgICAgICAgICByZXNldCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvLyBiaW5kIGV2ZW50cyBmb3IgdG91Y2ggZGV2aWNlcworICAgIC8vIGV4Y2VwdCBmb3Igd2luZG93cyBwaG9uZSA3LjUsIGl0IGRvZXNudCBzdXBwb3J0IHRvdWNoIGV2ZW50cy4uIQorICAgIGlmKCdvbnRvdWNoc3RhcnQnIGluIHdpbmRvdykgeworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoc3RhcnQiLCBoYW5kbGVFdmVudHMsIGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaG1vdmUiLCBoYW5kbGVFdmVudHMsIGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJ0b3VjaGVuZCIsIGhhbmRsZUV2ZW50cywgZmFsc2UpOworICAgICAgICBlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoInRvdWNoY2FuY2VsIiwgaGFuZGxlRXZlbnRzLCBmYWxzZSk7CisgICAgfQorICAgIC8vIGZvciBub24tdG91Y2gKKyAgICBlbHNlIHsKKworICAgICAgICBpZihlbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIpeyAvLyBwcmV2ZW50IG9sZCBJRSBlcnJvcnMKKyAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdXQiLCBmdW5jdGlvbihldmVudCkgeworICAgICAgICAgICAgICAgIGlmKCFpc0luc2lkZUhhbW1lcihlbGVtZW50LCBldmVudC5yZWxhdGVkVGFyZ2V0KSkgeworICAgICAgICAgICAgICAgICAgICBoYW5kbGVFdmVudHMoZXZlbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0sIGZhbHNlKTsKKyAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2V1cCIsIGhhbmRsZUV2ZW50cywgZmFsc2UpOworICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCBoYW5kbGVFdmVudHMsIGZhbHNlKTsKKyAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2Vtb3ZlIiwgaGFuZGxlRXZlbnRzLCBmYWxzZSk7CisKKyAgICAgICAgICAgIC8vIGV2ZW50cyBmb3Igb2xkZXIgSUUKKyAgICAgICAgfWVsc2UgaWYoZG9jdW1lbnQuYXR0YWNoRXZlbnQpeworICAgICAgICAgICAgZWxlbWVudC5hdHRhY2hFdmVudCgib25tb3VzZW91dCIsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICAgICAgICAgICAgaWYoIWlzSW5zaWRlSGFtbWVyKGVsZW1lbnQsIGV2ZW50LnJlbGF0ZWRUYXJnZXQpKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUV2ZW50cyhldmVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwgZmFsc2UpOworICAgICAgICAgICAgZWxlbWVudC5hdHRhY2hFdmVudCgib25tb3VzZXVwIiwgaGFuZGxlRXZlbnRzKTsKKyAgICAgICAgICAgIGVsZW1lbnQuYXR0YWNoRXZlbnQoIm9ubW91c2Vkb3duIiwgaGFuZGxlRXZlbnRzKTsKKyAgICAgICAgICAgIGVsZW1lbnQuYXR0YWNoRXZlbnQoIm9ubW91c2Vtb3ZlIiwgaGFuZGxlRXZlbnRzKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoqCisgICAgICogZmluZCBpZiBlbGVtZW50IGlzIChpbnNpZGUpIGdpdmVuIHBhcmVudCBlbGVtZW50CisgICAgICogQHBhcmFtICAgb2JqZWN0ICBlbGVtZW50CisgICAgICogQHBhcmFtICAgb2JqZWN0ICBwYXJlbnQKKyAgICAgKiBAcmV0dXJuICBib29sICAgIGluc2lkZQorICAgICAqLworICAgIGZ1bmN0aW9uIGlzSW5zaWRlSGFtbWVyKHBhcmVudCwgY2hpbGQpIHsKKyAgICAgICAgLy8gZ2V0IHJlbGF0ZWQgdGFyZ2V0IGZvciBJRQorICAgICAgICBpZighY2hpbGQgJiYgd2luZG93LmV2ZW50ICYmIHdpbmRvdy5ldmVudC50b0VsZW1lbnQpeworICAgICAgICAgICAgY2hpbGQgPSB3aW5kb3cuZXZlbnQudG9FbGVtZW50OworICAgICAgICB9CisKKyAgICAgICAgaWYocGFyZW50ID09PSBjaGlsZCl7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGxvb3Agb3ZlciBwYXJlbnROb2RlcyBvZiBjaGlsZCB1bnRpbCB3ZSBmaW5kIGhhbW1lciBlbGVtZW50CisgICAgICAgIGlmKGNoaWxkKXsKKyAgICAgICAgICAgIHZhciBub2RlID0gY2hpbGQucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIHdoaWxlKG5vZGUgIT09IG51bGwpeworICAgICAgICAgICAgICAgIGlmKG5vZGUgPT09IHBhcmVudCl7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50Tm9kZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBtZXJnZSAyIG9iamVjdHMgaW50byBhIG5ldyBvYmplY3QKKyAgICAgKiBAcGFyYW0gICBvYmplY3QgIG9iajEKKyAgICAgKiBAcGFyYW0gICBvYmplY3QgIG9iajIKKyAgICAgKiBAcmV0dXJuICBvYmplY3QgIG1lcmdlZCBvYmplY3QKKyAgICAgKi8KKyAgICBmdW5jdGlvbiBtZXJnZU9iamVjdChvYmoxLCBvYmoyKSB7CisgICAgICAgIHZhciBvdXRwdXQgPSB7fTsKKworICAgICAgICBpZighb2JqMikgeworICAgICAgICAgICAgcmV0dXJuIG9iajE7CisgICAgICAgIH0KKworICAgICAgICBmb3IgKHZhciBwcm9wIGluIG9iajEpIHsKKyAgICAgICAgICAgIGlmIChwcm9wIGluIG9iajIpIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRbcHJvcF0gPSBvYmoyW3Byb3BdOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRbcHJvcF0gPSBvYmoxW3Byb3BdOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBvdXRwdXQ7CisgICAgfQorCisgICAgZnVuY3Rpb24gaXNGdW5jdGlvbiggb2JqICl7CisgICAgICAgIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoIG9iaiApID09ICJbb2JqZWN0IEZ1bmN0aW9uXSI7CisgICAgfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvbW9kZXJuaXpyLmN1c3RvbS40NTM5NC5qcyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvbW9kZXJuaXpyLmN1c3RvbS40NTM5NC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNmYzOGNkCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9tb2Rlcm5penIuY3VzdG9tLjQ1Mzk0LmpzCkBAIC0wLDAgKzEsNCBAQAorLyogTW9kZXJuaXpyIDIuNS4zIChDdXN0b20gQnVpbGQpIHwgTUlUICYgQlNECisgKiBCdWlsZDogaHR0cDovL3d3dy5tb2Rlcm5penIuY29tL2Rvd25sb2FkLyMtZm9udGZhY2UtYmFja2dyb3VuZHNpemUtYm9yZGVyaW1hZ2UtYm9yZGVycmFkaXVzLWJveHNoYWRvdy1mbGV4Ym94LWZsZXhib3hfbGVnYWN5LWhzbGEtbXVsdGlwbGViZ3Mtb3BhY2l0eS1yZ2JhLXRleHRzaGFkb3ctY3NzYW5pbWF0aW9ucy1jc3Njb2x1bW5zLWdlbmVyYXRlZGNvbnRlbnQtY3NzZ3JhZGllbnRzLWNzc3JlZmxlY3Rpb25zLWNzc3RyYW5zZm9ybXMtY3NzdHJhbnNmb3JtczNkLWNzc3RyYW5zaXRpb25zLWFwcGxpY2F0aW9uY2FjaGUtY2FudmFzLWNhbnZhc3RleHQtZHJhZ2FuZGRyb3AtaGFzaGNoYW5nZS1oaXN0b3J5LWF1ZGlvLXZpZGVvLWluZGV4ZWRkYi1pbnB1dC1pbnB1dHR5cGVzLWxvY2Fsc3RvcmFnZS1wb3N0bWVzc2FnZS1zZXNzaW9uc3RvcmFnZS13ZWJzb2NrZXRzLXdlYnNxbGRhdGFiYXNlLXdlYndvcmtlcnMtZ2VvbG9jYXRpb24taW5saW5lc3ZnLXNtaWwtc3ZnLXN2Z2NsaXBwYXRocy10b3VjaC13ZWJnbC1tcS1wcmVmaXhlZC10ZXN0c3R5bGVzLXRlc3Rwcm9wLXRlc3RhbGxwcm9wcy1oYXNldmVudC1wcmVmaXhlcy1kb21wcmVmaXhlcy1sb2FkCisgKi8KKzt3aW5kb3cuTW9kZXJuaXpyPWZ1bmN0aW9uKGEsYixjKXtmdW5jdGlvbiBDKGEpe2kuY3NzVGV4dD1hfWZ1bmN0aW9uIEQoYSxiKXtyZXR1cm4gQyhtLmpvaW4oYSsiOyIpKyhifHwiIikpfWZ1bmN0aW9uIEUoYSxiKXtyZXR1cm4gdHlwZW9mIGE9PT1ifWZ1bmN0aW9uIEYoYSxiKXtyZXR1cm4hIX4oIiIrYSkuaW5kZXhPZihiKX1mdW5jdGlvbiBHKGEsYil7Zm9yKHZhciBkIGluIGEpaWYoaVthW2RdXSE9PWMpcmV0dXJuIGI9PSJwZngiP2FbZF06ITA7cmV0dXJuITF9ZnVuY3Rpb24gSChhLGIsZCl7Zm9yKHZhciBlIGluIGEpe3ZhciBmPWJbYVtlXV07aWYoZiE9PWMpcmV0dXJuIGQ9PT0hMT9hW2VdOkUoZiwiZnVuY3Rpb24iKT9mLmJpbmQoZHx8Yik6Zn1yZXR1cm4hMX1mdW5jdGlvbiBJKGEsYixjKXt2YXIgZD1hLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpK2Euc3Vic3RyKDEpLGU9KGErIiAiK28uam9pbihkKyIgIikrZCkuc3BsaXQoIiAiKTtyZXR1cm4gRShiLCJzdHJpbmciKXx8RShiLCJ1bmRlZmluZWQiKT9HKGUsYik6KGU9KGErIiAiK3Auam9pbihkKyIgIikrZCkuc3BsaXQoIiAiKSxIKGUsYixjKSl9ZnVuY3Rpb24gSygpe2UuaW5wdXQ9ZnVuY3Rpb24oYyl7Zm9yKHZhciBkPTAsZT1jLmxlbmd0aDtkPGU7ZCsrKXRbY1tkXV09Y1tkXWluIGo7cmV0dXJuIHQubGlzdCYmKHQubGlzdD0hIWIuY3JlYXRlRWxlbWVudCgiZGF0YWxpc3QiKSYmISFhLkhUTUxEYXRhTGlzdEVsZW1lbnQpLHR9KCJhdXRvY29tcGxldGUgYXV0b2ZvY3VzIGxpc3QgcGxhY2Vob2xkZXIgbWF4IG1pbiBtdWx0aXBsZSBwYXR0ZXJuIHJlcXVpcmVkIHN0ZXAiLnNwbGl0KCIgIikpLGUuaW5wdXR0eXBlcz1mdW5jdGlvbihhKXtmb3IodmFyIGQ9MCxlLGcsaCxpPWEubGVuZ3RoO2Q8aTtkKyspai5zZXRBdHRyaWJ1dGUoInR5cGUiLGc9YVtkXSksZT1qLnR5cGUhPT0idGV4dCIsZSYmKGoudmFsdWU9ayxqLnN0eWxlLmNzc1RleHQ9InBvc2l0aW9uOmFic29sdXRlO3Zpc2liaWxpdHk6aGlkZGVuOyIsL15yYW5nZSQvLnRlc3QoZykmJmouc3R5bGUuV2Via2l0QXBwZWFyYW5jZSE9PWM/KGYuYXBwZW5kQ2hpbGQoaiksaD1iLmRlZmF1bHRWaWV3LGU9aC5nZXRDb21wdXRlZFN0eWxlJiZoLmdldENvbXB1dGVkU3R5bGUoaixudWxsKS5XZWJraXRBcHBlYXJhbmNlIT09InRleHRmaWVsZCImJmoub2Zmc2V0SGVpZ2h0IT09MCxmLnJlbW92ZUNoaWxkKGopKTovXihzZWFyY2h8dGVsKSQvLnRlc3QoZyl8fCgvXih1cmx8ZW1haWwpJC8udGVzdChnKT9lPWouY2hlY2tWYWxpZGl0eSYmai5jaGVja1ZhbGlkaXR5KCk9PT0hMTovXmNvbG9yJC8udGVzdChnKT8oZi5hcHBlbmRDaGlsZChqKSxmLm9mZnNldFdpZHRoLGU9ai52YWx1ZSE9ayxmLnJlbW92ZUNoaWxkKGopKTplPWoudmFsdWUhPWspKSxzW2FbZF1dPSEhZTtyZXR1cm4gc30oInNlYXJjaCB0ZWwgdXJsIGVtYWlsIGRhdGV0aW1lIGRhdGUgbW9udGggd2VlayB0aW1lIGRhdGV0aW1lLWxvY2FsIG51bWJlciByYW5nZSBjb2xvciIuc3BsaXQoIiAiKSl9dmFyIGQ9IjIuNS4zIixlPXt9LGY9Yi5kb2N1bWVudEVsZW1lbnQsZz0ibW9kZXJuaXpyIixoPWIuY3JlYXRlRWxlbWVudChnKSxpPWguc3R5bGUsaj1iLmNyZWF0ZUVsZW1lbnQoImlucHV0Iiksaz0iOikiLGw9e30udG9TdHJpbmcsbT0iIC13ZWJraXQtIC1tb3otIC1vLSAtbXMtICIuc3BsaXQoIiAiKSxuPSJXZWJraXQgTW96IE8gbXMiLG89bi5zcGxpdCgiICIpLHA9bi50b0xvd2VyQ2FzZSgpLnNwbGl0KCIgIikscT17c3ZnOiJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyJ9LHI9e30scz17fSx0PXt9LHU9W10sdj11LnNsaWNlLHcseD1mdW5jdGlvbihhLGMsZCxlKXt2YXIgaCxpLGosaz1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGw9Yi5ib2R5LG09bD9sOmIuY3JlYXRlRWxlbWVudCgiYm9keSIpO2lmKHBhcnNlSW50KGQsMTApKXdoaWxlKGQtLSlqPWIuY3JlYXRlRWxlbWVudCgiZGl2Iiksai5pZD1lP2VbZF06ZysoZCsxKSxrLmFwcGVuZENoaWxkKGopO3JldHVybiBoPVsiJiMxNzM7IiwiPHN0eWxlPiIsYSwiPC9zdHlsZT4iXS5qb2luKCIiKSxrLmlkPWcsKGw/azptKS5pbm5lckhUTUwrPWgsbS5hcHBlbmRDaGlsZChrKSxsfHwobS5zdHlsZS5iYWNrZ3JvdW5kPSIiLGYuYXBwZW5kQ2hpbGQobSkpLGk9YyhrLGEpLGw/ay5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGspOm0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChtKSwhIWl9LHk9ZnVuY3Rpb24oYil7dmFyIGM9YS5tYXRjaE1lZGlhfHxhLm1zTWF0Y2hNZWRpYTtpZihjKXJldHVybiBjKGIpLm1hdGNoZXM7dmFyIGQ7cmV0dXJuIHgoIkBtZWRpYSAiK2IrIiB7ICMiK2crIiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgfSB9IixmdW5jdGlvbihiKXtkPShhLmdldENvbXB1dGVkU3R5bGU/Z2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlKVsicG9zaXRpb24iXT09ImFic29sdXRlIn0pLGR9LHo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGQsZSl7ZT1lfHxiLmNyZWF0ZUVsZW1lbnQoYVtkXXx8ImRpdiIpLGQ9Im9uIitkO3ZhciBmPWQgaW4gZTtyZXR1cm4gZnx8KGUuc2V0QXR0cmlidXRlfHwoZT1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpKSxlLnNldEF0dHJpYnV0ZSYmZS5yZW1vdmVBdHRyaWJ1dGUmJihlLnNldEF0dHJpYnV0ZShkLCIiKSxmPUUoZVtkXSwiZnVuY3Rpb24iKSxFKGVbZF0sInVuZGVmaW5lZCIpfHwoZVtkXT1jKSxlLnJlbW92ZUF0dHJpYnV0ZShkKSkpLGU9bnVsbCxmfXZhciBhPXtzZWxlY3Q6ImlucHV0IixjaGFuZ2U6ImlucHV0IixzdWJtaXQ6ImZvcm0iLHJlc2V0OiJmb3JtIixlcnJvcjoiaW1nIixsb2FkOiJpbWciLGFib3J0OiJpbWcifTtyZXR1cm4gZH0oKSxBPXt9Lmhhc093blByb3BlcnR5LEI7IUUoQSwidW5kZWZpbmVkIikmJiFFKEEuY2FsbCwidW5kZWZpbmVkIik/Qj1mdW5jdGlvbihhLGIpe3JldHVybiBBLmNhbGwoYSxiKX06Qj1mdW5jdGlvbihhLGIpe3JldHVybiBiIGluIGEmJkUoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGVbYl0sInVuZGVmaW5lZCIpfSxGdW5jdGlvbi5wcm90b3R5cGUuYmluZHx8KEZ1bmN0aW9uLnByb3RvdHlwZS5iaW5kPWZ1bmN0aW9uKGIpe3ZhciBjPXRoaXM7aWYodHlwZW9mIGMhPSJmdW5jdGlvbiIpdGhyb3cgbmV3IFR5cGVFcnJvcjt2YXIgZD12LmNhbGwoYXJndW1lbnRzLDEpLGU9ZnVuY3Rpb24oKXtpZih0aGlzIGluc3RhbmNlb2YgZSl7dmFyIGE9ZnVuY3Rpb24oKXt9O2EucHJvdG90eXBlPWMucHJvdG90eXBlO3ZhciBmPW5ldyBhLGc9Yy5hcHBseShmLGQuY29uY2F0KHYuY2FsbChhcmd1bWVudHMpKSk7cmV0dXJuIE9iamVjdChnKT09PWc/ZzpmfXJldHVybiBjLmFwcGx5KGIsZC5jb25jYXQodi5jYWxsKGFyZ3VtZW50cykpKX07cmV0dXJuIGV9KTt2YXIgSj1mdW5jdGlvbihjLGQpe3ZhciBmPWMuam9pbigiIiksZz1kLmxlbmd0aDt4KGYsZnVuY3Rpb24oYyxkKXt2YXIgZj1iLnN0eWxlU2hlZXRzW2Iuc3R5bGVTaGVldHMubGVuZ3RoLTFdLGg9Zj9mLmNzc1J1bGVzJiZmLmNzc1J1bGVzWzBdP2YuY3NzUnVsZXNbMF0uY3NzVGV4dDpmLmNzc1RleHR8fCIiOiIiLGk9Yy5jaGlsZE5vZGVzLGo9e307d2hpbGUoZy0tKWpbaVtnXS5pZF09aVtnXTtlLnRvdWNoPSJvbnRvdWNoc3RhcnQiaW4gYXx8YS5Eb2N1bWVudFRvdWNoJiZiIGluc3RhbmNlb2YgRG9jdW1lbnRUb3VjaHx8KGoudG91Y2gmJmoudG91Y2gub2Zmc2V0VG9wKT09PTksZS5jc3N0cmFuc2Zvcm1zM2Q9KGouY3NzdHJhbnNmb3JtczNkJiZqLmNzc3RyYW5zZm9ybXMzZC5vZmZzZXRMZWZ0KT09PTkmJmouY3NzdHJhbnNmb3JtczNkLm9mZnNldEhlaWdodD09PTMsZS5nZW5lcmF0ZWRjb250ZW50PShqLmdlbmVyYXRlZGNvbnRlbnQmJmouZ2VuZXJhdGVkY29udGVudC5vZmZzZXRIZWlnaHQpPj0xLGUuZm9udGZhY2U9L3NyYy9pLnRlc3QoaCkmJmguaW5kZXhPZihkLnNwbGl0KCIgIilbMF0pPT09MH0sZyxkKX0oWydAZm9udC1mYWNlIHtmb250LWZhbWlseToiZm9udCI7c3JjOnVybCgiaHR0cHM6Ly8iKX0nLFsiQG1lZGlhICgiLG0uam9pbigidG91Y2gtZW5hYmxlZCksKCIpLGcsIikiLCJ7I3RvdWNoe3RvcDo5cHg7cG9zaXRpb246YWJzb2x1dGV9fSJdLmpvaW4oIiIpLFsiQG1lZGlhICgiLG0uam9pbigidHJhbnNmb3JtLTNkKSwoIiksZywiKSIsInsjY3NzdHJhbnNmb3JtczNke2xlZnQ6OXB4O3Bvc2l0aW9uOmFic29sdXRlO2hlaWdodDozcHg7fX0iXS5qb2luKCIiKSxbJyNnZW5lcmF0ZWRjb250ZW50OmFmdGVye2NvbnRlbnQ6IicsaywnIjt2aXNpYmlsaXR5OmhpZGRlbn0nXS5qb2luKCIiKV0sWyJmb250ZmFjZSIsInRvdWNoIiwiY3NzdHJhbnNmb3JtczNkIiwiZ2VuZXJhdGVkY29udGVudCJdKTtyLmZsZXhib3g9ZnVuY3Rpb24oKXtyZXR1cm4gSSgiZmxleE9yZGVyIil9LHJbImZsZXhib3gtbGVnYWN5Il09ZnVuY3Rpb24oKXtyZXR1cm4gSSgiYm94RGlyZWN0aW9uIil9LHIuY2FudmFzPWZ1bmN0aW9uKCl7dmFyIGE9Yi5jcmVhdGVFbGVtZW50KCJjYW52YXMiKTtyZXR1cm4hIWEuZ2V0Q29udGV4dCYmISFhLmdldENvbnRleHQoIjJkIil9LHIuY2FudmFzdGV4dD1mdW5jdGlvbigpe3JldHVybiEhZS5jYW52YXMmJiEhRShiLmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpLmdldENvbnRleHQoIjJkIikuZmlsbFRleHQsImZ1bmN0aW9uIil9LHIud2ViZ2w9ZnVuY3Rpb24oKXt0cnl7dmFyIGQ9Yi5jcmVhdGVFbGVtZW50KCJjYW52YXMiKSxlO2U9ISghYS5XZWJHTFJlbmRlcmluZ0NvbnRleHR8fCFkLmdldENvbnRleHQoImV4cGVyaW1lbnRhbC13ZWJnbCIpJiYhZC5nZXRDb250ZXh0KCJ3ZWJnbCIpKSxkPWN9Y2F0Y2goZil7ZT0hMX1yZXR1cm4gZX0sci50b3VjaD1mdW5jdGlvbigpe3JldHVybiBlLnRvdWNofSxyLmdlb2xvY2F0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuISFuYXZpZ2F0b3IuZ2VvbG9jYXRpb259LHIucG9zdG1lc3NhZ2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWEucG9zdE1lc3NhZ2V9LHIud2Vic3FsZGF0YWJhc2U9ZnVuY3Rpb24oKXtyZXR1cm4hIWEub3BlbkRhdGFiYXNlfSxyLmluZGV4ZWREQj1mdW5jdGlvbigpe3JldHVybiEhSSgiaW5kZXhlZERCIixhKX0sci5oYXNoY2hhbmdlPWZ1bmN0aW9uKCl7cmV0dXJuIHooImhhc2hjaGFuZ2UiLGEpJiYoYi5kb2N1bWVudE1vZGU9PT1jfHxiLmRvY3VtZW50TW9kZT43KX0sci5oaXN0b3J5PWZ1bmN0aW9uKCl7cmV0dXJuISFhLmhpc3RvcnkmJiEhaGlzdG9yeS5wdXNoU3RhdGV9LHIuZHJhZ2FuZGRyb3A9ZnVuY3Rpb24oKXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpO3JldHVybiJkcmFnZ2FibGUiaW4gYXx8Im9uZHJhZ3N0YXJ0ImluIGEmJiJvbmRyb3AiaW4gYX0sci53ZWJzb2NrZXRzPWZ1bmN0aW9uKCl7Zm9yKHZhciBiPS0xLGM9by5sZW5ndGg7KytiPGM7KWlmKGFbb1tiXSsiV2ViU29ja2V0Il0pcmV0dXJuITA7cmV0dXJuIldlYlNvY2tldCJpbiBhfSxyLnJnYmE9ZnVuY3Rpb24oKXtyZXR1cm4gQygiYmFja2dyb3VuZC1jb2xvcjpyZ2JhKDE1MCwyNTUsMTUwLC41KSIpLEYoaS5iYWNrZ3JvdW5kQ29sb3IsInJnYmEiKX0sci5oc2xhPWZ1bmN0aW9uKCl7cmV0dXJuIEMoImJhY2tncm91bmQtY29sb3I6aHNsYSgxMjAsNDAlLDEwMCUsLjUpIiksRihpLmJhY2tncm91bmRDb2xvciwicmdiYSIpfHxGKGkuYmFja2dyb3VuZENvbG9yLCJoc2xhIil9LHIubXVsdGlwbGViZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gQygiYmFja2dyb3VuZDp1cmwoaHR0cHM6Ly8pLHVybChodHRwczovLykscmVkIHVybChodHRwczovLykiKSwvKHVybFxzKlwoLio/KXszfS8udGVzdChpLmJhY2tncm91bmQpfSxyLmJhY2tncm91bmRzaXplPWZ1bmN0aW9uKCl7cmV0dXJuIEkoImJhY2tncm91bmRTaXplIil9LHIuYm9yZGVyaW1hZ2U9ZnVuY3Rpb24oKXtyZXR1cm4gSSgiYm9yZGVySW1hZ2UiKX0sci5ib3JkZXJyYWRpdXM9ZnVuY3Rpb24oKXtyZXR1cm4gSSgiYm9yZGVyUmFkaXVzIil9LHIuYm94c2hhZG93PWZ1bmN0aW9uKCl7cmV0dXJuIEkoImJveFNoYWRvdyIpfSxyLnRleHRzaGFkb3c9ZnVuY3Rpb24oKXtyZXR1cm4gYi5jcmVhdGVFbGVtZW50KCJkaXYiKS5zdHlsZS50ZXh0U2hhZG93PT09IiJ9LHIub3BhY2l0eT1mdW5jdGlvbigpe3JldHVybiBEKCJvcGFjaXR5Oi41NSIpLC9eMC41NSQvLnRlc3QoaS5vcGFjaXR5KX0sci5jc3NhbmltYXRpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIEkoImFuaW1hdGlvbk5hbWUiKX0sci5jc3Njb2x1bW5zPWZ1bmN0aW9uKCl7cmV0dXJuIEkoImNvbHVtbkNvdW50Iil9LHIuY3NzZ3JhZGllbnRzPWZ1bmN0aW9uKCl7dmFyIGE9ImJhY2tncm91bmQtaW1hZ2U6IixiPSJncmFkaWVudChsaW5lYXIsbGVmdCB0b3AscmlnaHQgYm90dG9tLGZyb20oIzlmOSksdG8od2hpdGUpKTsiLGM9ImxpbmVhci1ncmFkaWVudChsZWZ0IHRvcCwjOWY5LCB3aGl0ZSk7IjtyZXR1cm4gQygoYSsiLXdlYmtpdC0gIi5zcGxpdCgiICIpLmpvaW4oYithKSttLmpvaW4oYythKSkuc2xpY2UoMCwtYS5sZW5ndGgpKSxGKGkuYmFja2dyb3VuZEltYWdlLCJncmFkaWVudCIpfSxyLmNzc3JlZmxlY3Rpb25zPWZ1bmN0aW9uKCl7cmV0dXJuIEkoImJveFJlZmxlY3QiKX0sci5jc3N0cmFuc2Zvcm1zPWZ1bmN0aW9uKCl7cmV0dXJuISFJKCJ0cmFuc2Zvcm0iKX0sci5jc3N0cmFuc2Zvcm1zM2Q9ZnVuY3Rpb24oKXt2YXIgYT0hIUkoInBlcnNwZWN0aXZlIik7cmV0dXJuIGEmJiJ3ZWJraXRQZXJzcGVjdGl2ZSJpbiBmLnN0eWxlJiYoYT1lLmNzc3RyYW5zZm9ybXMzZCksYX0sci5jc3N0cmFuc2l0aW9ucz1mdW5jdGlvbigpe3JldHVybiBJKCJ0cmFuc2l0aW9uIil9LHIuZm9udGZhY2U9ZnVuY3Rpb24oKXtyZXR1cm4gZS5mb250ZmFjZX0sci5nZW5lcmF0ZWRjb250ZW50PWZ1bmN0aW9uKCl7cmV0dXJuIGUuZ2VuZXJhdGVkY29udGVudH0sci52aWRlbz1mdW5jdGlvbigpe3ZhciBhPWIuY3JlYXRlRWxlbWVudCgidmlkZW8iKSxjPSExO3RyeXtpZihjPSEhYS5jYW5QbGF5VHlwZSljPW5ldyBCb29sZWFuKGMpLGMub2dnPWEuY2FuUGxheVR5cGUoJ3ZpZGVvL29nZzsgY29kZWNzPSJ0aGVvcmEiJykucmVwbGFjZSgvXm5vJC8sIiIpLGMuaDI2ND1hLmNhblBsYXlUeXBlKCd2aWRlby9tcDQ7IGNvZGVjcz0iYXZjMS40MkUwMUUiJykucmVwbGFjZSgvXm5vJC8sIiIpLGMud2VibT1hLmNhblBsYXlUeXBlKCd2aWRlby93ZWJtOyBjb2RlY3M9InZwOCwgdm9yYmlzIicpLnJlcGxhY2UoL15ubyQvLCIiKX1jYXRjaChkKXt9cmV0dXJuIGN9LHIuYXVkaW89ZnVuY3Rpb24oKXt2YXIgYT1iLmNyZWF0ZUVsZW1lbnQoImF1ZGlvIiksYz0hMTt0cnl7aWYoYz0hIWEuY2FuUGxheVR5cGUpYz1uZXcgQm9vbGVhbihjKSxjLm9nZz1hLmNhblBsYXlUeXBlKCdhdWRpby9vZ2c7IGNvZGVjcz0idm9yYmlzIicpLnJlcGxhY2UoL15ubyQvLCIiKSxjLm1wMz1hLmNhblBsYXlUeXBlKCJhdWRpby9tcGVnOyIpLnJlcGxhY2UoL15ubyQvLCIiKSxjLndhdj1hLmNhblBsYXlUeXBlKCdhdWRpby93YXY7IGNvZGVjcz0iMSInKS5yZXBsYWNlKC9ebm8kLywiIiksYy5tNGE9KGEuY2FuUGxheVR5cGUoImF1ZGlvL3gtbTRhOyIpfHxhLmNhblBsYXlUeXBlKCJhdWRpby9hYWM7IikpLnJlcGxhY2UoL15ubyQvLCIiKX1jYXRjaChkKXt9cmV0dXJuIGN9LHIubG9jYWxzdG9yYWdlPWZ1bmN0aW9uKCl7dHJ5e3JldHVybiBsb2NhbFN0b3JhZ2Uuc2V0SXRlbShnLGcpLGxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGcpLCEwfWNhdGNoKGEpe3JldHVybiExfX0sci5zZXNzaW9uc3RvcmFnZT1mdW5jdGlvbigpe3RyeXtyZXR1cm4gc2Vzc2lvblN0b3JhZ2Uuc2V0SXRlbShnLGcpLHNlc3Npb25TdG9yYWdlLnJlbW92ZUl0ZW0oZyksITB9Y2F0Y2goYSl7cmV0dXJuITF9fSxyLndlYndvcmtlcnM9ZnVuY3Rpb24oKXtyZXR1cm4hIWEuV29ya2VyfSxyLmFwcGxpY2F0aW9uY2FjaGU9ZnVuY3Rpb24oKXtyZXR1cm4hIWEuYXBwbGljYXRpb25DYWNoZX0sci5zdmc9ZnVuY3Rpb24oKXtyZXR1cm4hIWIuY3JlYXRlRWxlbWVudE5TJiYhIWIuY3JlYXRlRWxlbWVudE5TKHEuc3ZnLCJzdmciKS5jcmVhdGVTVkdSZWN0fSxyLmlubGluZXN2Zz1mdW5jdGlvbigpe3ZhciBhPWIuY3JlYXRlRWxlbWVudCgiZGl2Iik7cmV0dXJuIGEuaW5uZXJIVE1MPSI8c3ZnLz4iLChhLmZpcnN0Q2hpbGQmJmEuZmlyc3RDaGlsZC5uYW1lc3BhY2VVUkkpPT1xLnN2Z30sci5zbWlsPWZ1bmN0aW9uKCl7cmV0dXJuISFiLmNyZWF0ZUVsZW1lbnROUyYmL1NWR0FuaW1hdGUvLnRlc3QobC5jYWxsKGIuY3JlYXRlRWxlbWVudE5TKHEuc3ZnLCJhbmltYXRlIikpKX0sci5zdmdjbGlwcGF0aHM9ZnVuY3Rpb24oKXtyZXR1cm4hIWIuY3JlYXRlRWxlbWVudE5TJiYvU1ZHQ2xpcFBhdGgvLnRlc3QobC5jYWxsKGIuY3JlYXRlRWxlbWVudE5TKHEuc3ZnLCJjbGlwUGF0aCIpKSl9O2Zvcih2YXIgTCBpbiByKUIocixMKSYmKHc9TC50b0xvd2VyQ2FzZSgpLGVbd109cltMXSgpLHUucHVzaCgoZVt3XT8iIjoibm8tIikrdykpO3JldHVybiBlLmlucHV0fHxLKCksQygiIiksaD1qPW51bGwsZS5fdmVyc2lvbj1kLGUuX3ByZWZpeGVzPW0sZS5fZG9tUHJlZml4ZXM9cCxlLl9jc3NvbVByZWZpeGVzPW8sZS5tcT15LGUuaGFzRXZlbnQ9eixlLnRlc3RQcm9wPWZ1bmN0aW9uKGEpe3JldHVybiBHKFthXSl9LGUudGVzdEFsbFByb3BzPUksZS50ZXN0U3R5bGVzPXgsZS5wcmVmaXhlZD1mdW5jdGlvbihhLGIsYyl7cmV0dXJuIGI/SShhLGIsYyk6SShhLCJwZngiKX0sZX0odGhpcyx0aGlzLmRvY3VtZW50KSxmdW5jdGlvbihhLGIsYyl7ZnVuY3Rpb24gZChhKXtyZXR1cm4gby5jYWxsKGEpPT0iW29iamVjdCBGdW5jdGlvbl0ifWZ1bmN0aW9uIGUoYSl7cmV0dXJuIHR5cGVvZiBhPT0ic3RyaW5nIn1mdW5jdGlvbiBmKCl7fWZ1bmN0aW9uIGcoYSl7cmV0dXJuIWF8fGE9PSJsb2FkZWQifHxhPT0iY29tcGxldGUifHxhPT0idW5pbml0aWFsaXplZCJ9ZnVuY3Rpb24gaCgpe3ZhciBhPXAuc2hpZnQoKTtxPTEsYT9hLnQ/bShmdW5jdGlvbigpeyhhLnQ9PSJjIj9CLmluamVjdENzczpCLmluamVjdEpzKShhLnMsMCxhLmEsYS54LGEuZSwxKX0sMCk6KGEoKSxoKCkpOnE9MH1mdW5jdGlvbiBpKGEsYyxkLGUsZixpLGope2Z1bmN0aW9uIGsoYil7aWYoIW8mJmcobC5yZWFkeVN0YXRlKSYmKHUucj1vPTEsIXEmJmgoKSxsLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGIpKXthIT0iaW1nIiYmbShmdW5jdGlvbigpe3QucmVtb3ZlQ2hpbGQobCl9LDUwKTtmb3IodmFyIGQgaW4geVtjXSl5W2NdLmhhc093blByb3BlcnR5KGQpJiZ5W2NdW2RdLm9ubG9hZCgpfX12YXIgaj1qfHxCLmVycm9yVGltZW91dCxsPXt9LG89MCxyPTAsdT17dDpkLHM6YyxlOmYsYTppLHg6an07eVtjXT09PTEmJihyPTEseVtjXT1bXSxsPWIuY3JlYXRlRWxlbWVudChhKSksYT09Im9iamVjdCI/bC5kYXRhPWM6KGwuc3JjPWMsbC50eXBlPWEpLGwud2lkdGg9bC5oZWlnaHQ9IjAiLGwub25lcnJvcj1sLm9ubG9hZD1sLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2suY2FsbCh0aGlzLHIpfSxwLnNwbGljZShlLDAsdSksYSE9ImltZyImJihyfHx5W2NdPT09Mj8odC5pbnNlcnRCZWZvcmUobCxzP251bGw6biksbShrLGopKTp5W2NdLnB1c2gobCkpfWZ1bmN0aW9uIGooYSxiLGMsZCxmKXtyZXR1cm4gcT0wLGI9Ynx8ImoiLGUoYSk/aShiPT0iYyI/djp1LGEsYix0aGlzLmkrKyxjLGQsZik6KHAuc3BsaWNlKHRoaXMuaSsrLDAsYSkscC5sZW5ndGg9PTEmJmgoKSksdGhpc31mdW5jdGlvbiBrKCl7dmFyIGE9QjtyZXR1cm4gYS5sb2FkZXI9e2xvYWQ6aixpOjB9LGF9dmFyIGw9Yi5kb2N1bWVudEVsZW1lbnQsbT1hLnNldFRpbWVvdXQsbj1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKVswXSxvPXt9LnRvU3RyaW5nLHA9W10scT0wLHI9Ik1vekFwcGVhcmFuY2UiaW4gbC5zdHlsZSxzPXImJiEhYi5jcmVhdGVSYW5nZSgpLmNvbXBhcmVOb2RlLHQ9cz9sOm4ucGFyZW50Tm9kZSxsPWEub3BlcmEmJm8uY2FsbChhLm9wZXJhKT09IltvYmplY3QgT3BlcmFdIixsPSEhYi5hdHRhY2hFdmVudCYmIWwsdT1yPyJvYmplY3QiOmw/InNjcmlwdCI6ImltZyIsdj1sPyJzY3JpcHQiOnUsdz1BcnJheS5pc0FycmF5fHxmdW5jdGlvbihhKXtyZXR1cm4gby5jYWxsKGEpPT0iW29iamVjdCBBcnJheV0ifSx4PVtdLHk9e30sej17dGltZW91dDpmdW5jdGlvbihhLGIpe3JldHVybiBiLmxlbmd0aCYmKGEudGltZW91dD1iWzBdKSxhfX0sQSxCO0I9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt2YXIgYT1hLnNwbGl0KCIhIiksYj14Lmxlbmd0aCxjPWEucG9wKCksZD1hLmxlbmd0aCxjPXt1cmw6YyxvcmlnVXJsOmMscHJlZml4ZXM6YX0sZSxmLGc7Zm9yKGY9MDtmPGQ7ZisrKWc9YVtmXS5zcGxpdCgiPSIpLChlPXpbZy5zaGlmdCgpXSkmJihjPWUoYyxnKSk7Zm9yKGY9MDtmPGI7ZisrKWM9eFtmXShjKTtyZXR1cm4gY31mdW5jdGlvbiBnKGEsZSxmLGcsaSl7dmFyIGo9YihhKSxsPWouYXV0b0NhbGxiYWNrO2oudXJsLnNwbGl0KCIuIikucG9wKCkuc3BsaXQoIj8iKS5zaGlmdCgpLGouYnlwYXNzfHwoZSYmKGU9ZChlKT9lOmVbYV18fGVbZ118fGVbYS5zcGxpdCgiLyIpLnBvcCgpLnNwbGl0KCI/IilbMF1dfHxoKSxqLmluc3RlYWQ/ai5pbnN0ZWFkKGEsZSxmLGcsaSk6KHlbai51cmxdP2oubm9leGVjPSEwOnlbai51cmxdPTEsZi5sb2FkKGoudXJsLGouZm9yY2VDU1N8fCFqLmZvcmNlSlMmJiJjc3MiPT1qLnVybC5zcGxpdCgiLiIpLnBvcCgpLnNwbGl0KCI/Iikuc2hpZnQoKT8iYyI6YyxqLm5vZXhlYyxqLmF0dHJzLGoudGltZW91dCksKGQoZSl8fGQobCkpJiZmLmxvYWQoZnVuY3Rpb24oKXtrKCksZSYmZShqLm9yaWdVcmwsaSxnKSxsJiZsKGoub3JpZ1VybCxpLGcpLHlbai51cmxdPTJ9KSkpfWZ1bmN0aW9uIGkoYSxiKXtmdW5jdGlvbiBjKGEsYyl7aWYoYSl7aWYoZShhKSljfHwoaj1mdW5jdGlvbigpe3ZhciBhPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtrLmFwcGx5KHRoaXMsYSksbCgpfSksZyhhLGosYiwwLGgpO2Vsc2UgaWYoT2JqZWN0KGEpPT09YSlmb3IobiBpbiBtPWZ1bmN0aW9uKCl7dmFyIGI9MCxjO2ZvcihjIGluIGEpYS5oYXNPd25Qcm9wZXJ0eShjKSYmYisrO3JldHVybiBifSgpLGEpYS5oYXNPd25Qcm9wZXJ0eShuKSYmKCFjJiYhLS1tJiYoZChqKT9qPWZ1bmN0aW9uKCl7dmFyIGE9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2suYXBwbHkodGhpcyxhKSxsKCl9Ompbbl09ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9W10uc2xpY2UuY2FsbChhcmd1bWVudHMpO2EmJmEuYXBwbHkodGhpcyxiKSxsKCl9fShrW25dKSksZyhhW25dLGosYixuLGgpKX1lbHNlIWMmJmwoKX12YXIgaD0hIWEudGVzdCxpPWEubG9hZHx8YS5ib3RoLGo9YS5jYWxsYmFja3x8ZixrPWosbD1hLmNvbXBsZXRlfHxmLG0sbjtjKGg/YS55ZXA6YS5ub3BlLCEhaSksaSYmYyhpKX12YXIgaixsLG09dGhpcy55ZXBub3BlLmxvYWRlcjtpZihlKGEpKWcoYSwwLG0sMCk7ZWxzZSBpZih3KGEpKWZvcihqPTA7ajxhLmxlbmd0aDtqKyspbD1hW2pdLGUobCk/ZyhsLDAsbSwwKTp3KGwpP0IobCk6T2JqZWN0KGwpPT09bCYmaShsLG0pO2Vsc2UgT2JqZWN0KGEpPT09YSYmaShhLG0pfSxCLmFkZFByZWZpeD1mdW5jdGlvbihhLGIpe3pbYV09Yn0sQi5hZGRGaWx0ZXI9ZnVuY3Rpb24oYSl7eC5wdXNoKGEpfSxCLmVycm9yVGltZW91dD0xZTQsYi5yZWFkeVN0YXRlPT1udWxsJiZiLmFkZEV2ZW50TGlzdGVuZXImJihiLnJlYWR5U3RhdGU9ImxvYWRpbmciLGIuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQT1mdW5jdGlvbigpe2IucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQSwwKSxiLnJlYWR5U3RhdGU9ImNvbXBsZXRlIn0sMCkpLGEueWVwbm9wZT1rKCksYS55ZXBub3BlLmV4ZWN1dGVTdGFjaz1oLGEueWVwbm9wZS5pbmplY3RKcz1mdW5jdGlvbihhLGMsZCxlLGksail7dmFyIGs9Yi5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKSxsLG8sZT1lfHxCLmVycm9yVGltZW91dDtrLnNyYz1hO2ZvcihvIGluIGQpay5zZXRBdHRyaWJ1dGUobyxkW29dKTtjPWo/aDpjfHxmLGsub25yZWFkeXN0YXRlY2hhbmdlPWsub25sb2FkPWZ1bmN0aW9uKCl7IWwmJmcoay5yZWFkeVN0YXRlKSYmKGw9MSxjKCksay5vbmxvYWQ9ay5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCl9LG0oZnVuY3Rpb24oKXtsfHwobD0xLGMoMSkpfSxlKSxpP2sub25sb2FkKCk6bi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShrLG4pfSxhLnllcG5vcGUuaW5qZWN0Q3NzPWZ1bmN0aW9uKGEsYyxkLGUsZyxpKXt2YXIgZT1iLmNyZWF0ZUVsZW1lbnQoImxpbmsiKSxqLGM9aT9oOmN8fGY7ZS5ocmVmPWEsZS5yZWw9InN0eWxlc2hlZXQiLGUudHlwZT0idGV4dC9jc3MiO2ZvcihqIGluIGQpZS5zZXRBdHRyaWJ1dGUoaixkW2pdKTtnfHwobi5wYXJlbnROb2RlLmluc2VydEJlZm9yZShlLG4pLG0oYywwKSl9fSh0aGlzLGRvY3VtZW50KSxNb2Rlcm5penIubG9hZD1mdW5jdGlvbigpe3llcG5vcGUuYXBwbHkod2luZG93LFtdLnNsaWNlLmNhbGwoYXJndW1lbnRzLDApKX07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9vcmRlci5qcyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvb3JkZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4YzE4MwotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvb3JkZXIuanMKQEAgLTAsMCArMSw4IEBACisvKgorIFJlcXVpcmVKUyBvcmRlciAxLjAuNSBDb3B5cmlnaHQgKGMpIDIwMTAtMjAxMSwgVGhlIERvam8gRm91bmRhdGlvbiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIEF2YWlsYWJsZSB2aWEgdGhlIE1JVCBvciBuZXcgQlNEIGxpY2Vuc2UuCisgc2VlOiBodHRwOi8vZ2l0aHViLmNvbS9qcmJ1cmtlL3JlcXVpcmVqcyBmb3IgZGV0YWlscworKi8KKyhmdW5jdGlvbigpe2Z1bmN0aW9uIGsoYSl7dmFyIGI9YS5jdXJyZW50VGFyZ2V0fHxhLnNyY0VsZW1lbnQsYztpZihhLnR5cGU9PT0ibG9hZCJ8fGwudGVzdChiLnJlYWR5U3RhdGUpKXthPWIuZ2V0QXR0cmlidXRlKCJkYXRhLXJlcXVpcmVtb2R1bGUiKTtqW2FdPSEwO2ZvcihhPTA7Yz1nW2FdO2ErKylpZihqW2MubmFtZV0pYy5yZXEoW2MubmFtZV0sYy5vbkxvYWQpO2Vsc2UgYnJlYWs7YT4wJiZnLnNwbGljZSgwLGEpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYil9LDE1KX19ZnVuY3Rpb24gbShhKXt2YXIgYixjO2Euc2V0QXR0cmlidXRlKCJkYXRhLW9yZGVybG9hZGVkIiwibG9hZGVkIik7Zm9yKGE9MDtjPWhbYV07YSsrKWlmKChiPWlbY10pJiZiLmdldEF0dHJpYnV0ZSgiZGF0YS1vcmRlcmxvYWRlZCIpPT09ImxvYWRlZCIpZGVsZXRlIGlbY10scmVxdWlyZS5hZGRTY3JpcHRUb0RvbShiKTtlbHNlIGJyZWFrO2E+MCYmaC5zcGxpY2UoMCwKK2EpfXZhciBmPXR5cGVvZiBkb2N1bWVudCE9PSJ1bmRlZmluZWQiJiZ0eXBlb2Ygd2luZG93IT09InVuZGVmaW5lZCImJmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLG49ZiYmKGYuYXN5bmN8fHdpbmRvdy5vcGVyYSYmT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHdpbmRvdy5vcGVyYSk9PT0iW29iamVjdCBPcGVyYV0ifHwiTW96QXBwZWFyYW5jZSJpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUpLG89ZiYmZi5yZWFkeVN0YXRlPT09InVuaW5pdGlhbGl6ZWQiLGw9L14oY29tcGxldGV8bG9hZGVkKSQvLGc9W10saj17fSxpPXt9LGg9W10sZj1udWxsO2RlZmluZSh7dmVyc2lvbjoiMS4wLjUiLGxvYWQ6ZnVuY3Rpb24oYSxiLGMsZSl7dmFyIGQ7Yi5uYW1lVG9Vcmw/KGQ9Yi5uYW1lVG9VcmwoYSxudWxsKSxyZXF1aXJlLnMuc2tpcEFzeW5jW2RdPSEwLG58fGUuaXNCdWlsZD9iKFthXSxjKTpvPyhlPXJlcXVpcmUucy5jb250ZXh0cy5fLCFlLnVybEZldGNoZWRbZF0mJgorIWUubG9hZGVkW2FdJiYoZS51cmxGZXRjaGVkW2RdPSEwLHJlcXVpcmUucmVzb3VyY2VzUmVhZHkoITEpLGUuc2NyaXB0Q291bnQrPTEsZD1yZXF1aXJlLmF0dGFjaChkLGUsYSxudWxsLG51bGwsbSksaVthXT1kLGgucHVzaChhKSksYihbYV0sYykpOmIuc3BlY2lmaWVkKGEpP2IoW2FdLGMpOihnLnB1c2goe25hbWU6YSxyZXE6YixvbkxvYWQ6Y30pLHJlcXVpcmUuYXR0YWNoKGQsbnVsbCxhLGssInNjcmlwdC9jYWNoZSIpKSk6YihbYV0sYyl9fSl9KSgpOwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wb2x5ZmlsbHMvY2xhc3NMaXN0Lm1pbi5qcyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcG9seWZpbGxzL2NsYXNzTGlzdC5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMyYzc3NwotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcG9seWZpbGxzL2NsYXNzTGlzdC5taW4uanMKQEAgLTAsMCArMSwyIEBACisvKiBAc291cmNlIGh0dHA6Ly9wdXJsLmVsaWdyZXkuY29tL2dpdGh1Yi9jbGFzc0xpc3QuanMvYmxvYi9tYXN0ZXIvY2xhc3NMaXN0LmpzKi8KKyJ1c2Ugc3RyaWN0IjtpZih0eXBlb2YgZG9jdW1lbnQhPT0idW5kZWZpbmVkIiYmISgiY2xhc3NMaXN0IiBpbiBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikpKXsoZnVuY3Rpb24oYSl7dmFyIGY9ImNsYXNzTGlzdCIsZD0icHJvdG90eXBlIixlPShhLkhUTUxFbGVtZW50fHxhLkVsZW1lbnQpW2RdLGc9T2JqZWN0O3N0clRyaW09U3RyaW5nW2RdLnRyaW18fGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucmVwbGFjZSgvXlxzK3xccyskL2csIiIpfSxhcnJJbmRleE9mPUFycmF5W2RdLmluZGV4T2Z8fGZ1bmN0aW9uKGspe2Zvcih2YXIgaj0wLGg9dGhpcy5sZW5ndGg7ajxoO2orKyl7aWYoaiBpbiB0aGlzJiZ0aGlzW2pdPT09ayl7cmV0dXJuIGp9fXJldHVybiAtMX0sRE9NRXg9ZnVuY3Rpb24oaCxpKXt0aGlzLm5hbWU9aDt0aGlzLmNvZGU9RE9NRXhjZXB0aW9uW2hdO3RoaXMubWVzc2FnZT1pfSxjaGVja1Rva2VuQW5kR2V0SW5kZXg9ZnVuY3Rpb24oaSxoKXtpZihoPT09IiIpe3Rocm93IG5ldyBET01FeCgiU1lOVEFYX0VSUiIsIkFuIGludmFsaWQgb3IgaWxsZWdhbCBzdHJpbmcgd2FzIHNwZWNpZmllZCIpfWlmKC9ccy8udGVzdChoKSl7dGhyb3cgbmV3IERPTUV4KCJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiLCJTdHJpbmcgY29udGFpbnMgYW4gaW52YWxpZCBjaGFyYWN0ZXIiKX1yZXR1cm4gYXJySW5kZXhPZi5jYWxsKGksaCl9LENsYXNzTGlzdD1mdW5jdGlvbihtKXt2YXIgbD1zdHJUcmltLmNhbGwobS5jbGFzc05hbWUpLGs9bD9sLnNwbGl0KC9ccysvKTpbXTtmb3IodmFyIGo9MCxoPWsubGVuZ3RoO2o8aDtqKyspe3RoaXMucHVzaChrW2pdKX10aGlzLl91cGRhdGVDbGFzc05hbWU9ZnVuY3Rpb24oKXttLmNsYXNzTmFtZT10aGlzLnRvU3RyaW5nKCl9fSxjbGFzc0xpc3RQcm90bz1DbGFzc0xpc3RbZF09W10sY2xhc3NMaXN0R2V0dGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDbGFzc0xpc3QodGhpcyl9O0RPTUV4W2RdPUVycm9yW2RdO2NsYXNzTGlzdFByb3RvLml0ZW09ZnVuY3Rpb24oaCl7cmV0dXJuIHRoaXNbaF18fG51bGx9O2NsYXNzTGlzdFByb3RvLmNvbnRhaW5zPWZ1bmN0aW9uKGgpe2grPSIiO3JldHVybiBjaGVja1Rva2VuQW5kR2V0SW5kZXgodGhpcyxoKSE9PS0xfTtjbGFzc0xpc3RQcm90by5hZGQ9ZnVuY3Rpb24oaCl7aCs9IiI7aWYoY2hlY2tUb2tlbkFuZEdldEluZGV4KHRoaXMsaCk9PT0tMSl7dGhpcy5wdXNoKGgpO3RoaXMuX3VwZGF0ZUNsYXNzTmFtZSgpfX07Y2xhc3NMaXN0UHJvdG8ucmVtb3ZlPWZ1bmN0aW9uKGkpe2krPSIiO3ZhciBoPWNoZWNrVG9rZW5BbmRHZXRJbmRleCh0aGlzLGkpO2lmKGghPT0tMSl7dGhpcy5zcGxpY2UoaCwxKTt0aGlzLl91cGRhdGVDbGFzc05hbWUoKX19O2NsYXNzTGlzdFByb3RvLnRvZ2dsZT1mdW5jdGlvbihoKXtoKz0iIjtpZihjaGVja1Rva2VuQW5kR2V0SW5kZXgodGhpcyxoKT09PS0xKXt0aGlzLmFkZChoKX1lbHNle3RoaXMucmVtb3ZlKGgpfX07Y2xhc3NMaXN0UHJvdG8udG9TdHJpbmc9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5qb2luKCIgIil9O2lmKGcuZGVmaW5lUHJvcGVydHkpe3ZhciBjPXtnZXQ6Y2xhc3NMaXN0R2V0dGVyLGVudW1lcmFibGU6dHJ1ZSxjb25maWd1cmFibGU6dHJ1ZX07dHJ5e2cuZGVmaW5lUHJvcGVydHkoZSxmLGMpfWNhdGNoKGIpe2lmKGIubnVtYmVyPT09LTIxNDY4MjMyNTIpe2MuZW51bWVyYWJsZT1mYWxzZTtnLmRlZmluZVByb3BlcnR5KGUsZixjKX19fWVsc2V7aWYoZ1tkXS5fX2RlZmluZUdldHRlcl9fKXtlLl9fZGVmaW5lR2V0dGVyX18oZixjbGFzc0xpc3RHZXR0ZXIpfX19KHNlbGYpKX07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wb2x5ZmlsbHMvZGF0YXNldC5taW4uanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3BvbHlmaWxscy9kYXRhc2V0Lm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjJhNTY0Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wb2x5ZmlsbHMvZGF0YXNldC5taW4uanMKQEAgLTAsMCArMSwyIEBACisoZnVuY3Rpb24oKXtmdW5jdGlvbiBjKCl7ZD0hMDt0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXIoIkRPTUF0dHJNb2RpZmllZCIsYywhMSl9ZnVuY3Rpb24gZyhiKXtyZXR1cm4gYi5yZXBsYWNlKGgsZnVuY3Rpb24oYixhKXtyZXR1cm4gYS50b1VwcGVyQ2FzZSgpfSl9ZnVuY3Rpb24gZSgpe3ZhciBiPXt9O2kuY2FsbCh0aGlzLmF0dHJpYnV0ZXMsZnVuY3Rpb24oYSl7aWYoZj1hLm5hbWUubWF0Y2goaikpYltnKGZbMV0pXT1hLnZhbHVlfSk7cmV0dXJuIGJ9dmFyIGk9W10uZm9yRWFjaCxqPS9eZGF0YS0oLispLyxoPS9cLShbYS16XSkvaWcsYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSExLGY7YS5kYXRhc2V0PT12b2lkIDAmJihhLmFkZEV2ZW50TGlzdGVuZXIoIkRPTUF0dHJNb2RpZmllZCIsYywhMSksYS5zZXRBdHRyaWJ1dGUoImZvbyIsImJhciIpLEVsZW1lbnQucHJvdG90eXBlLl9fZGVmaW5lR2V0dGVyX18oImRhdGFzZXQiLGQ/ZnVuY3Rpb24oKXtpZighdGhpcy5fZGF0YXNldENhY2hlKXRoaXMuX2RhdGFzZXRDYWNoZT0KK2UuY2FsbCh0aGlzKTtyZXR1cm4gdGhpcy5fZGF0YXNldENhY2hlfTplKSxkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCJET01BdHRyTW9kaWZpZWQiLGZ1bmN0aW9uKGEpe2RlbGV0ZSBhLnRhcmdldC5fZGF0YXNldENhY2hlfSwhMSkpfSkoKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3BvbHlmaWxscy9oaXN0b3J5Lm1pbi5qcyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcG9seWZpbGxzL2hpc3RvcnkubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhZWUwN2UKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3BvbHlmaWxscy9oaXN0b3J5Lm1pbi5qcwpAQCAtMCwwICsxIEBACisoZnVuY3Rpb24oYSxiKXsidXNlIHN0cmljdCI7dmFyIGM9YS5jb25zb2xlfHxiLGQ9YS5kb2N1bWVudCxlPWEubmF2aWdhdG9yLGY9YS5zZXNzaW9uU3RvcmFnZXx8ITEsZz1hLnNldFRpbWVvdXQsaD1hLmNsZWFyVGltZW91dCxpPWEuc2V0SW50ZXJ2YWwsaj1hLmNsZWFySW50ZXJ2YWwsaz1hLkpTT04sbD1hLmFsZXJ0LG09YS5IaXN0b3J5PWEuSGlzdG9yeXx8e30sbj1hLmhpc3Rvcnk7ay5zdHJpbmdpZnk9ay5zdHJpbmdpZnl8fGsuZW5jb2RlLGsucGFyc2U9ay5wYXJzZXx8ay5kZWNvZGU7aWYodHlwZW9mIG0uaW5pdCE9InVuZGVmaW5lZCIpdGhyb3cgbmV3IEVycm9yKCJIaXN0b3J5LmpzIENvcmUgaGFzIGFscmVhZHkgYmVlbiBsb2FkZWQuLi4iKTttLmluaXQ9ZnVuY3Rpb24oKXtyZXR1cm4gdHlwZW9mIG0uQWRhcHRlcj09InVuZGVmaW5lZCI/ITE6KHR5cGVvZiBtLmluaXRDb3JlIT0idW5kZWZpbmVkIiYmbS5pbml0Q29yZSgpLHR5cGVvZiBtLmluaXRIdG1sNCE9InVuZGVmaW5lZCImJm0uaW5pdEh0bWw0KCksITApfSxtLmluaXRDb3JlPWZ1bmN0aW9uKCl7aWYodHlwZW9mIG0uaW5pdENvcmUuaW5pdGlhbGl6ZWQhPSJ1bmRlZmluZWQiKXJldHVybiExO20uaW5pdENvcmUuaW5pdGlhbGl6ZWQ9ITAsbS5vcHRpb25zPW0ub3B0aW9uc3x8e30sbS5vcHRpb25zLmhhc2hDaGFuZ2VJbnRlcnZhbD1tLm9wdGlvbnMuaGFzaENoYW5nZUludGVydmFsfHwxMDAsbS5vcHRpb25zLnNhZmFyaVBvbGxJbnRlcnZhbD1tLm9wdGlvbnMuc2FmYXJpUG9sbEludGVydmFsfHw1MDAsbS5vcHRpb25zLmRvdWJsZUNoZWNrSW50ZXJ2YWw9bS5vcHRpb25zLmRvdWJsZUNoZWNrSW50ZXJ2YWx8fDUwMCxtLm9wdGlvbnMuc3RvcmVJbnRlcnZhbD1tLm9wdGlvbnMuc3RvcmVJbnRlcnZhbHx8MWUzLG0ub3B0aW9ucy5idXN5RGVsYXk9bS5vcHRpb25zLmJ1c3lEZWxheXx8MjUwLG0ub3B0aW9ucy5kZWJ1Zz1tLm9wdGlvbnMuZGVidWd8fCExLG0ub3B0aW9ucy5pbml0aWFsVGl0bGU9bS5vcHRpb25zLmluaXRpYWxUaXRsZXx8ZC50aXRsZSxtLmludGVydmFsTGlzdD1bXSxtLmNsZWFyQWxsSW50ZXJ2YWxzPWZ1bmN0aW9uKCl7dmFyIGEsYj1tLmludGVydmFsTGlzdDtpZih0eXBlb2YgYiE9InVuZGVmaW5lZCImJmIhPT1udWxsKXtmb3IoYT0wO2E8Yi5sZW5ndGg7YSsrKWooYlthXSk7bS5pbnRlcnZhbExpc3Q9bnVsbH19LG0uZGVidWc9ZnVuY3Rpb24oKXsobS5vcHRpb25zLmRlYnVnfHwhMSkmJm0ubG9nLmFwcGx5KG0sYXJndW1lbnRzKX0sbS5sb2c9ZnVuY3Rpb24oKXt2YXIgYT10eXBlb2YgYyE9InVuZGVmaW5lZCImJnR5cGVvZiBjLmxvZyE9InVuZGVmaW5lZCImJnR5cGVvZiBjLmxvZy5hcHBseSE9InVuZGVmaW5lZCIsYj1kLmdldEVsZW1lbnRCeUlkKCJsb2ciKSxlLGYsZyxoLGk7YT8oaD1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLGU9aC5zaGlmdCgpLHR5cGVvZiBjLmRlYnVnIT0idW5kZWZpbmVkIj9jLmRlYnVnLmFwcGx5KGMsW2UsaF0pOmMubG9nLmFwcGx5KGMsW2UsaF0pKTplPSJcbiIrYXJndW1lbnRzWzBdKyJcbiI7Zm9yKGY9MSxnPWFyZ3VtZW50cy5sZW5ndGg7ZjxnOysrZil7aT1hcmd1bWVudHNbZl07aWYodHlwZW9mIGk9PSJvYmplY3QiJiZ0eXBlb2YgayE9InVuZGVmaW5lZCIpdHJ5e2k9ay5zdHJpbmdpZnkoaSl9Y2F0Y2goail7fWUrPSJcbiIraSsiXG4ifXJldHVybiBiPyhiLnZhbHVlKz1lKyJcbi0tLS0tXG4iLGIuc2Nyb2xsVG9wPWIuc2Nyb2xsSGVpZ2h0LWIuY2xpZW50SGVpZ2h0KTphfHxsKGUpLCEwfSxtLmdldEludGVybmV0RXhwbG9yZXJNYWpvclZlcnNpb249ZnVuY3Rpb24oKXt2YXIgYT1tLmdldEludGVybmV0RXhwbG9yZXJNYWpvclZlcnNpb24uY2FjaGVkPXR5cGVvZiBtLmdldEludGVybmV0RXhwbG9yZXJNYWpvclZlcnNpb24uY2FjaGVkIT0idW5kZWZpbmVkIj9tLmdldEludGVybmV0RXhwbG9yZXJNYWpvclZlcnNpb24uY2FjaGVkOmZ1bmN0aW9uKCl7dmFyIGE9MyxiPWQuY3JlYXRlRWxlbWVudCgiZGl2IiksYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpIik7d2hpbGUoKGIuaW5uZXJIVE1MPSI8IS0tW2lmIGd0IElFICIrICsrYSsiXT48aT48L2k+PCFbZW5kaWZdLS0+IikmJmNbMF0pO3JldHVybiBhPjQ/YTohMX0oKTtyZXR1cm4gYX0sbS5pc0ludGVybmV0RXhwbG9yZXI9ZnVuY3Rpb24oKXt2YXIgYT1tLmlzSW50ZXJuZXRFeHBsb3Jlci5jYWNoZWQ9dHlwZW9mIG0uaXNJbnRlcm5ldEV4cGxvcmVyLmNhY2hlZCE9InVuZGVmaW5lZCI/bS5pc0ludGVybmV0RXhwbG9yZXIuY2FjaGVkOkJvb2xlYW4obS5nZXRJbnRlcm5ldEV4cGxvcmVyTWFqb3JWZXJzaW9uKCkpO3JldHVybiBhfSxtLmVtdWxhdGVkPXtwdXNoU3RhdGU6IUJvb2xlYW4oYS5oaXN0b3J5JiZhLmhpc3RvcnkucHVzaFN0YXRlJiZhLmhpc3RvcnkucmVwbGFjZVN0YXRlJiYhLyBNb2JpbGVcLyhbMS03XVthLXpdfCg4KFthYmNkZV18ZigxWzAtOF0pKSkpL2kudGVzdChlLnVzZXJBZ2VudCkmJiEvQXBwbGVXZWJLaXRcLzUoWzAtMl18M1swLTJdKS9pLnRlc3QoZS51c2VyQWdlbnQpKSxoYXNoQ2hhbmdlOkJvb2xlYW4oISgib25oYXNoY2hhbmdlImluIGF8fCJvbmhhc2hjaGFuZ2UiaW4gZCl8fG0uaXNJbnRlcm5ldEV4cGxvcmVyKCkmJm0uZ2V0SW50ZXJuZXRFeHBsb3Jlck1ham9yVmVyc2lvbigpPDgpfSxtLmVuYWJsZWQ9IW0uZW11bGF0ZWQucHVzaFN0YXRlLG0uYnVncz17c2V0SGFzaDpCb29sZWFuKCFtLmVtdWxhdGVkLnB1c2hTdGF0ZSYmZS52ZW5kb3I9PT0iQXBwbGUgQ29tcHV0ZXIsIEluYy4iJiYvQXBwbGVXZWJLaXRcLzUoWzAtMl18M1swLTNdKS8udGVzdChlLnVzZXJBZ2VudCkpLHNhZmFyaVBvbGw6Qm9vbGVhbighbS5lbXVsYXRlZC5wdXNoU3RhdGUmJmUudmVuZG9yPT09IkFwcGxlIENvbXB1dGVyLCBJbmMuIiYmL0FwcGxlV2ViS2l0XC81KFswLTJdfDNbMC0zXSkvLnRlc3QoZS51c2VyQWdlbnQpKSxpZURvdWJsZUNoZWNrOkJvb2xlYW4obS5pc0ludGVybmV0RXhwbG9yZXIoKSYmbS5nZXRJbnRlcm5ldEV4cGxvcmVyTWFqb3JWZXJzaW9uKCk8OCksaGFzaEVzY2FwZTpCb29sZWFuKG0uaXNJbnRlcm5ldEV4cGxvcmVyKCkmJm0uZ2V0SW50ZXJuZXRFeHBsb3Jlck1ham9yVmVyc2lvbigpPDcpfSxtLmlzRW1wdHlPYmplY3Q9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9LG0uY2xvbmVPYmplY3Q9ZnVuY3Rpb24oYSl7dmFyIGIsYztyZXR1cm4gYT8oYj1rLnN0cmluZ2lmeShhKSxjPWsucGFyc2UoYikpOmM9e30sY30sbS5nZXRSb290VXJsPWZ1bmN0aW9uKCl7dmFyIGE9ZC5sb2NhdGlvbi5wcm90b2NvbCsiLy8iKyhkLmxvY2F0aW9uLmhvc3RuYW1lfHxkLmxvY2F0aW9uLmhvc3QpO2lmKGQubG9jYXRpb24ucG9ydHx8ITEpYSs9IjoiK2QubG9jYXRpb24ucG9ydDtyZXR1cm4gYSs9Ii8iLGF9LG0uZ2V0QmFzZUhyZWY9ZnVuY3Rpb24oKXt2YXIgYT1kLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJiYXNlIiksYj1udWxsLGM9IiI7cmV0dXJuIGEubGVuZ3RoPT09MSYmKGI9YVswXSxjPWIuaHJlZi5yZXBsYWNlKC9bXlwvXSskLywiIikpLGM9Yy5yZXBsYWNlKC9cLyskLywiIiksYyYmKGMrPSIvIiksY30sbS5nZXRCYXNlVXJsPWZ1bmN0aW9uKCl7dmFyIGE9bS5nZXRCYXNlSHJlZigpfHxtLmdldEJhc2VQYWdlVXJsKCl8fG0uZ2V0Um9vdFVybCgpO3JldHVybiBhfSxtLmdldFBhZ2VVcmw9ZnVuY3Rpb24oKXt2YXIgYT1tLmdldFN0YXRlKCExLCExKSxiPShhfHx7fSkudXJsfHxkLmxvY2F0aW9uLmhyZWYsYztyZXR1cm4gYz1iLnJlcGxhY2UoL1wvKyQvLCIiKS5yZXBsYWNlKC9bXlwvXSskLyxmdW5jdGlvbihhLGIsYyl7cmV0dXJuL1wuLy50ZXN0KGEpP2E6YSsiLyJ9KSxjfSxtLmdldEJhc2VQYWdlVXJsPWZ1bmN0aW9uKCl7dmFyIGE9ZC5sb2NhdGlvbi5ocmVmLnJlcGxhY2UoL1sjXD9dLiovLCIiKS5yZXBsYWNlKC9bXlwvXSskLyxmdW5jdGlvbihhLGIsYyl7cmV0dXJuL1teXC9dJC8udGVzdChhKT8iIjphfSkucmVwbGFjZSgvXC8rJC8sIiIpKyIvIjtyZXR1cm4gYX0sbS5nZXRGdWxsVXJsPWZ1bmN0aW9uKGEsYil7dmFyIGM9YSxkPWEuc3Vic3RyaW5nKDAsMSk7cmV0dXJuIGI9dHlwZW9mIGI9PSJ1bmRlZmluZWQiPyEwOmIsL1thLXpdK1w6XC9cLy8udGVzdChhKXx8KGQ9PT0iLyI/Yz1tLmdldFJvb3RVcmwoKSthLnJlcGxhY2UoL15cLysvLCIiKTpkPT09IiMiP2M9bS5nZXRQYWdlVXJsKCkucmVwbGFjZSgvIy4qLywiIikrYTpkPT09Ij8iP2M9bS5nZXRQYWdlVXJsKCkucmVwbGFjZSgvW1w/I10uKi8sIiIpK2E6Yj9jPW0uZ2V0QmFzZVVybCgpK2EucmVwbGFjZSgvXihcLlwvKSsvLCIiKTpjPW0uZ2V0QmFzZVBhZ2VVcmwoKSthLnJlcGxhY2UoL14oXC5cLykrLywiIikpLGMucmVwbGFjZSgvXCMkLywiIil9LG0uZ2V0U2hvcnRVcmw9ZnVuY3Rpb24oYSl7dmFyIGI9YSxjPW0uZ2V0QmFzZVVybCgpLGQ9bS5nZXRSb290VXJsKCk7cmV0dXJuIG0uZW11bGF0ZWQucHVzaFN0YXRlJiYoYj1iLnJlcGxhY2UoYywiIikpLGI9Yi5yZXBsYWNlKGQsIi8iKSxtLmlzVHJhZGl0aW9uYWxBbmNob3IoYikmJihiPSIuLyIrYiksYj1iLnJlcGxhY2UoL14oXC5cLykrL2csIi4vIikucmVwbGFjZSgvXCMkLywiIiksYn0sbS5zdG9yZT17fSxtLmlkVG9TdGF0ZT1tLmlkVG9TdGF0ZXx8e30sbS5zdGF0ZVRvSWQ9bS5zdGF0ZVRvSWR8fHt9LG0udXJsVG9JZD1tLnVybFRvSWR8fHt9LG0uc3RvcmVkU3RhdGVzPW0uc3RvcmVkU3RhdGVzfHxbXSxtLnNhdmVkU3RhdGVzPW0uc2F2ZWRTdGF0ZXN8fFtdLG0ubm9ybWFsaXplU3RvcmU9ZnVuY3Rpb24oKXttLnN0b3JlLmlkVG9TdGF0ZT1tLnN0b3JlLmlkVG9TdGF0ZXx8e30sbS5zdG9yZS51cmxUb0lkPW0uc3RvcmUudXJsVG9JZHx8e30sbS5zdG9yZS5zdGF0ZVRvSWQ9bS5zdG9yZS5zdGF0ZVRvSWR8fHt9fSxtLmdldFN0YXRlPWZ1bmN0aW9uKGEsYil7dHlwZW9mIGE9PSJ1bmRlZmluZWQiJiYoYT0hMCksdHlwZW9mIGI9PSJ1bmRlZmluZWQiJiYoYj0hMCk7dmFyIGM9bS5nZXRMYXN0U2F2ZWRTdGF0ZSgpO3JldHVybiFjJiZiJiYoYz1tLmNyZWF0ZVN0YXRlT2JqZWN0KCkpLGEmJihjPW0uY2xvbmVPYmplY3QoYyksYy51cmw9Yy5jbGVhblVybHx8Yy51cmwpLGN9LG0uZ2V0SWRCeVN0YXRlPWZ1bmN0aW9uKGEpe3ZhciBiPW0uZXh0cmFjdElkKGEudXJsKSxjO2lmKCFiKXtjPW0uZ2V0U3RhdGVTdHJpbmcoYSk7aWYodHlwZW9mIG0uc3RhdGVUb0lkW2NdIT0idW5kZWZpbmVkIiliPW0uc3RhdGVUb0lkW2NdO2Vsc2UgaWYodHlwZW9mIG0uc3RvcmUuc3RhdGVUb0lkW2NdIT0idW5kZWZpbmVkIiliPW0uc3RvcmUuc3RhdGVUb0lkW2NdO2Vsc2V7Zm9yKDs7KXtiPShuZXcgRGF0ZSkuZ2V0VGltZSgpK1N0cmluZyhNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKTtpZih0eXBlb2YgbS5pZFRvU3RhdGVbYl09PSJ1bmRlZmluZWQiJiZ0eXBlb2YgbS5zdG9yZS5pZFRvU3RhdGVbYl09PSJ1bmRlZmluZWQiKWJyZWFrfW0uc3RhdGVUb0lkW2NdPWIsbS5pZFRvU3RhdGVbYl09YX19cmV0dXJuIGJ9LG0ubm9ybWFsaXplU3RhdGU9ZnVuY3Rpb24oYSl7dmFyIGIsYztpZighYXx8dHlwZW9mIGEhPSJvYmplY3QiKWE9e307aWYodHlwZW9mIGEubm9ybWFsaXplZCE9InVuZGVmaW5lZCIpcmV0dXJuIGE7aWYoIWEuZGF0YXx8dHlwZW9mIGEuZGF0YSE9Im9iamVjdCIpYS5kYXRhPXt9O2I9e30sYi5ub3JtYWxpemVkPSEwLGIudGl0bGU9YS50aXRsZXx8IiIsYi51cmw9bS5nZXRGdWxsVXJsKG0udW5lc2NhcGVTdHJpbmcoYS51cmx8fGQubG9jYXRpb24uaHJlZikpLGIuaGFzaD1tLmdldFNob3J0VXJsKGIudXJsKSxiLmRhdGE9bS5jbG9uZU9iamVjdChhLmRhdGEpLGIuaWQ9bS5nZXRJZEJ5U3RhdGUoYiksYi5jbGVhblVybD1iLnVybC5yZXBsYWNlKC9cPz9cJl9zdWlkLiovLCIiKSxiLnVybD1iLmNsZWFuVXJsLGM9IW0uaXNFbXB0eU9iamVjdChiLmRhdGEpO2lmKGIudGl0bGV8fGMpYi5oYXNoPW0uZ2V0U2hvcnRVcmwoYi51cmwpLnJlcGxhY2UoL1w/P1wmX3N1aWQuKi8sIiIpLC9cPy8udGVzdChiLmhhc2gpfHwoYi5oYXNoKz0iPyIpLGIuaGFzaCs9IiZfc3VpZD0iK2IuaWQ7cmV0dXJuIGIuaGFzaGVkVXJsPW0uZ2V0RnVsbFVybChiLmhhc2gpLChtLmVtdWxhdGVkLnB1c2hTdGF0ZXx8bS5idWdzLnNhZmFyaVBvbGwpJiZtLmhhc1VybER1cGxpY2F0ZShiKSYmKGIudXJsPWIuaGFzaGVkVXJsKSxifSxtLmNyZWF0ZVN0YXRlT2JqZWN0PWZ1bmN0aW9uKGEsYixjKXt2YXIgZD17ZGF0YTphLHRpdGxlOmIsdXJsOmN9O3JldHVybiBkPW0ubm9ybWFsaXplU3RhdGUoZCksZH0sbS5nZXRTdGF0ZUJ5SWQ9ZnVuY3Rpb24oYSl7YT1TdHJpbmcoYSk7dmFyIGM9bS5pZFRvU3RhdGVbYV18fG0uc3RvcmUuaWRUb1N0YXRlW2FdfHxiO3JldHVybiBjfSxtLmdldFN0YXRlU3RyaW5nPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZDtyZXR1cm4gYj1tLm5vcm1hbGl6ZVN0YXRlKGEpLGM9e2RhdGE6Yi5kYXRhLHRpdGxlOmEudGl0bGUsdXJsOmEudXJsfSxkPWsuc3RyaW5naWZ5KGMpLGR9LG0uZ2V0U3RhdGVJZD1mdW5jdGlvbihhKXt2YXIgYixjO3JldHVybiBiPW0ubm9ybWFsaXplU3RhdGUoYSksYz1iLmlkLGN9LG0uZ2V0SGFzaEJ5U3RhdGU9ZnVuY3Rpb24oYSl7dmFyIGIsYztyZXR1cm4gYj1tLm5vcm1hbGl6ZVN0YXRlKGEpLGM9Yi5oYXNoLGN9LG0uZXh0cmFjdElkPWZ1bmN0aW9uKGEpe3ZhciBiLGMsZDtyZXR1cm4gYz0vKC4qKVwmX3N1aWQ9KFswLTldKykkLy5leGVjKGEpLGQ9Yz9jWzFdfHxhOmEsYj1jP1N0cmluZyhjWzJdfHwiIik6IiIsYnx8ITF9LG0uaXNUcmFkaXRpb25hbEFuY2hvcj1mdW5jdGlvbihhKXt2YXIgYj0hL1tcL1w/XC5dLy50ZXN0KGEpO3JldHVybiBifSxtLmV4dHJhY3RTdGF0ZT1mdW5jdGlvbihhLGIpe3ZhciBjPW51bGwsZCxlO3JldHVybiBiPWJ8fCExLGQ9bS5leHRyYWN0SWQoYSksZCYmKGM9bS5nZXRTdGF0ZUJ5SWQoZCkpLGN8fChlPW0uZ2V0RnVsbFVybChhKSxkPW0uZ2V0SWRCeVVybChlKXx8ITEsZCYmKGM9bS5nZXRTdGF0ZUJ5SWQoZCkpLCFjJiZiJiYhbS5pc1RyYWRpdGlvbmFsQW5jaG9yKGEpJiYoYz1tLmNyZWF0ZVN0YXRlT2JqZWN0KG51bGwsbnVsbCxlKSkpLGN9LG0uZ2V0SWRCeVVybD1mdW5jdGlvbihhKXt2YXIgYz1tLnVybFRvSWRbYV18fG0uc3RvcmUudXJsVG9JZFthXXx8YjtyZXR1cm4gY30sbS5nZXRMYXN0U2F2ZWRTdGF0ZT1mdW5jdGlvbigpe3JldHVybiBtLnNhdmVkU3RhdGVzW20uc2F2ZWRTdGF0ZXMubGVuZ3RoLTFdfHxifSxtLmdldExhc3RTdG9yZWRTdGF0ZT1mdW5jdGlvbigpe3JldHVybiBtLnN0b3JlZFN0YXRlc1ttLnN0b3JlZFN0YXRlcy5sZW5ndGgtMV18fGJ9LG0uaGFzVXJsRHVwbGljYXRlPWZ1bmN0aW9uKGEpe3ZhciBiPSExLGM7cmV0dXJuIGM9bS5leHRyYWN0U3RhdGUoYS51cmwpLGI9YyYmYy5pZCE9PWEuaWQsYn0sbS5zdG9yZVN0YXRlPWZ1bmN0aW9uKGEpe3JldHVybiBtLnVybFRvSWRbYS51cmxdPWEuaWQsbS5zdG9yZWRTdGF0ZXMucHVzaChtLmNsb25lT2JqZWN0KGEpKSxhfSxtLmlzTGFzdFNhdmVkU3RhdGU9ZnVuY3Rpb24oYSl7dmFyIGI9ITEsYyxkLGU7cmV0dXJuIG0uc2F2ZWRTdGF0ZXMubGVuZ3RoJiYoYz1hLmlkLGQ9bS5nZXRMYXN0U2F2ZWRTdGF0ZSgpLGU9ZC5pZCxiPWM9PT1lKSxifSxtLnNhdmVTdGF0ZT1mdW5jdGlvbihhKXtyZXR1cm4gbS5pc0xhc3RTYXZlZFN0YXRlKGEpPyExOihtLnNhdmVkU3RhdGVzLnB1c2gobS5jbG9uZU9iamVjdChhKSksITApfSxtLmdldFN0YXRlQnlJbmRleD1mdW5jdGlvbihhKXt2YXIgYj1udWxsO3JldHVybiB0eXBlb2YgYT09InVuZGVmaW5lZCI/Yj1tLnNhdmVkU3RhdGVzW20uc2F2ZWRTdGF0ZXMubGVuZ3RoLTFdOmE8MD9iPW0uc2F2ZWRTdGF0ZXNbbS5zYXZlZFN0YXRlcy5sZW5ndGgrYV06Yj1tLnNhdmVkU3RhdGVzW2FdLGJ9LG0uZ2V0SGFzaD1mdW5jdGlvbigpe3ZhciBhPW0udW5lc2NhcGVIYXNoKGQubG9jYXRpb24uaGFzaCk7cmV0dXJuIGF9LG0udW5lc2NhcGVTdHJpbmc9ZnVuY3Rpb24oYil7dmFyIGM9YixkO2Zvcig7Oyl7ZD1hLnVuZXNjYXBlKGMpO2lmKGQ9PT1jKWJyZWFrO2M9ZH1yZXR1cm4gY30sbS51bmVzY2FwZUhhc2g9ZnVuY3Rpb24oYSl7dmFyIGI9bS5ub3JtYWxpemVIYXNoKGEpO3JldHVybiBiPW0udW5lc2NhcGVTdHJpbmcoYiksYn0sbS5ub3JtYWxpemVIYXNoPWZ1bmN0aW9uKGEpe3ZhciBiPWEucmVwbGFjZSgvW14jXSojLywiIikucmVwbGFjZSgvIy4qLywiIik7cmV0dXJuIGJ9LG0uc2V0SGFzaD1mdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtyZXR1cm4gYiE9PSExJiZtLmJ1c3koKT8obS5wdXNoUXVldWUoe3Njb3BlOm0sY2FsbGJhY2s6bS5zZXRIYXNoLGFyZ3M6YXJndW1lbnRzLHF1ZXVlOmJ9KSwhMSk6KGM9bS5lc2NhcGVIYXNoKGEpLG0uYnVzeSghMCksZT1tLmV4dHJhY3RTdGF0ZShhLCEwKSxlJiYhbS5lbXVsYXRlZC5wdXNoU3RhdGU/bS5wdXNoU3RhdGUoZS5kYXRhLGUudGl0bGUsZS51cmwsITEpOmQubG9jYXRpb24uaGFzaCE9PWMmJihtLmJ1Z3Muc2V0SGFzaD8oZj1tLmdldFBhZ2VVcmwoKSxtLnB1c2hTdGF0ZShudWxsLG51bGwsZisiIyIrYywhMSkpOmQubG9jYXRpb24uaGFzaD1jKSxtKX0sbS5lc2NhcGVIYXNoPWZ1bmN0aW9uKGIpe3ZhciBjPW0ubm9ybWFsaXplSGFzaChiKTtyZXR1cm4gYz1hLmVzY2FwZShjKSxtLmJ1Z3MuaGFzaEVzY2FwZXx8KGM9Yy5yZXBsYWNlKC9cJTIxL2csIiEiKS5yZXBsYWNlKC9cJTI2L2csIiYiKS5yZXBsYWNlKC9cJTNEL2csIj0iKS5yZXBsYWNlKC9cJTNGL2csIj8iKSksY30sbS5nZXRIYXNoQnlVcmw9ZnVuY3Rpb24oYSl7dmFyIGI9U3RyaW5nKGEpLnJlcGxhY2UoLyhbXiNdKikjPyhbXiNdKikjPyguKikvLCIkMiIpO3JldHVybiBiPW0udW5lc2NhcGVIYXNoKGIpLGJ9LG0uc2V0VGl0bGU9ZnVuY3Rpb24oYSl7dmFyIGI9YS50aXRsZSxjO2J8fChjPW0uZ2V0U3RhdGVCeUluZGV4KDApLGMmJmMudXJsPT09YS51cmwmJihiPWMudGl0bGV8fG0ub3B0aW9ucy5pbml0aWFsVGl0bGUpKTt0cnl7ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgidGl0bGUiKVswXS5pbm5lckhUTUw9Yi5yZXBsYWNlKCI8IiwiJmx0OyIpLnJlcGxhY2UoIj4iLCImZ3Q7IikucmVwbGFjZSgiICYgIiwiICZhbXA7ICIpfWNhdGNoKGUpe31yZXR1cm4gZC50aXRsZT1iLG19LG0ucXVldWVzPVtdLG0uYnVzeT1mdW5jdGlvbihhKXt0eXBlb2YgYSE9InVuZGVmaW5lZCI/bS5idXN5LmZsYWc9YTp0eXBlb2YgbS5idXN5LmZsYWc9PSJ1bmRlZmluZWQiJiYobS5idXN5LmZsYWc9ITEpO2lmKCFtLmJ1c3kuZmxhZyl7aChtLmJ1c3kudGltZW91dCk7dmFyIGI9ZnVuY3Rpb24oKXt2YXIgYSxjLGQ7aWYobS5idXN5LmZsYWcpcmV0dXJuO2ZvcihhPW0ucXVldWVzLmxlbmd0aC0xO2E+PTA7LS1hKXtjPW0ucXVldWVzW2FdO2lmKGMubGVuZ3RoPT09MCljb250aW51ZTtkPWMuc2hpZnQoKSxtLmZpcmVRdWV1ZUl0ZW0oZCksbS5idXN5LnRpbWVvdXQ9ZyhiLG0ub3B0aW9ucy5idXN5RGVsYXkpfX07bS5idXN5LnRpbWVvdXQ9ZyhiLG0ub3B0aW9ucy5idXN5RGVsYXkpfXJldHVybiBtLmJ1c3kuZmxhZ30sbS5idXN5LmZsYWc9ITEsbS5maXJlUXVldWVJdGVtPWZ1bmN0aW9uKGEpe3JldHVybiBhLmNhbGxiYWNrLmFwcGx5KGEuc2NvcGV8fG0sYS5hcmdzfHxbXSl9LG0ucHVzaFF1ZXVlPWZ1bmN0aW9uKGEpe3JldHVybiBtLnF1ZXVlc1thLnF1ZXVlfHwwXT1tLnF1ZXVlc1thLnF1ZXVlfHwwXXx8W10sbS5xdWV1ZXNbYS5xdWV1ZXx8MF0ucHVzaChhKSxtfSxtLnF1ZXVlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHR5cGVvZiBhPT0iZnVuY3Rpb24iJiYoYT17Y2FsbGJhY2s6YX0pLHR5cGVvZiBiIT0idW5kZWZpbmVkIiYmKGEucXVldWU9YiksbS5idXN5KCk/bS5wdXNoUXVldWUoYSk6bS5maXJlUXVldWVJdGVtKGEpLG19LG0uY2xlYXJRdWV1ZT1mdW5jdGlvbigpe3JldHVybiBtLmJ1c3kuZmxhZz0hMSxtLnF1ZXVlcz1bXSxtfSxtLnN0YXRlQ2hhbmdlZD0hMSxtLmRvdWJsZUNoZWNrZXI9ITEsbS5kb3VibGVDaGVja0NvbXBsZXRlPWZ1bmN0aW9uKCl7cmV0dXJuIG0uc3RhdGVDaGFuZ2VkPSEwLG0uZG91YmxlQ2hlY2tDbGVhcigpLG19LG0uZG91YmxlQ2hlY2tDbGVhcj1mdW5jdGlvbigpe3JldHVybiBtLmRvdWJsZUNoZWNrZXImJihoKG0uZG91YmxlQ2hlY2tlciksbS5kb3VibGVDaGVja2VyPSExKSxtfSxtLmRvdWJsZUNoZWNrPWZ1bmN0aW9uKGEpe3JldHVybiBtLnN0YXRlQ2hhbmdlZD0hMSxtLmRvdWJsZUNoZWNrQ2xlYXIoKSxtLmJ1Z3MuaWVEb3VibGVDaGVjayYmKG0uZG91YmxlQ2hlY2tlcj1nKGZ1bmN0aW9uKCl7cmV0dXJuIG0uZG91YmxlQ2hlY2tDbGVhcigpLG0uc3RhdGVDaGFuZ2VkfHxhKCksITB9LG0ub3B0aW9ucy5kb3VibGVDaGVja0ludGVydmFsKSksbX0sbS5zYWZhcmlTdGF0ZVBvbGw9ZnVuY3Rpb24oKXt2YXIgYj1tLmV4dHJhY3RTdGF0ZShkLmxvY2F0aW9uLmhyZWYpLGM7aWYoIW0uaXNMYXN0U2F2ZWRTdGF0ZShiKSljPWI7ZWxzZSByZXR1cm47cmV0dXJuIGN8fChjPW0uY3JlYXRlU3RhdGVPYmplY3QoKSksbS5BZGFwdGVyLnRyaWdnZXIoYSwicG9wc3RhdGUiKSxtfSxtLmJhY2s9ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmbS5idXN5KCk/KG0ucHVzaFF1ZXVlKHtzY29wZTptLGNhbGxiYWNrOm0uYmFjayxhcmdzOmFyZ3VtZW50cyxxdWV1ZTphfSksITEpOihtLmJ1c3koITApLG0uZG91YmxlQ2hlY2soZnVuY3Rpb24oKXttLmJhY2soITEpfSksbi5nbygtMSksITApfSxtLmZvcndhcmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGEhPT0hMSYmbS5idXN5KCk/KG0ucHVzaFF1ZXVlKHtzY29wZTptLGNhbGxiYWNrOm0uZm9yd2FyZCxhcmdzOmFyZ3VtZW50cyxxdWV1ZTphfSksITEpOihtLmJ1c3koITApLG0uZG91YmxlQ2hlY2soZnVuY3Rpb24oKXttLmZvcndhcmQoITEpfSksbi5nbygxKSwhMCl9LG0uZ289ZnVuY3Rpb24oYSxiKXt2YXIgYztpZihhPjApZm9yKGM9MTtjPD1hOysrYyltLmZvcndhcmQoYik7ZWxzZXtpZighKGE8MCkpdGhyb3cgbmV3IEVycm9yKCJIaXN0b3J5LmdvOiBIaXN0b3J5LmdvIHJlcXVpcmVzIGEgcG9zaXRpdmUgb3IgbmVnYXRpdmUgaW50ZWdlciBwYXNzZWQuIik7Zm9yKGM9LTE7Yz49YTstLWMpbS5iYWNrKGIpfXJldHVybiBtfTtpZihtLmVtdWxhdGVkLnB1c2hTdGF0ZSl7dmFyIG89ZnVuY3Rpb24oKXt9O20ucHVzaFN0YXRlPW0ucHVzaFN0YXRlfHxvLG0ucmVwbGFjZVN0YXRlPW0ucmVwbGFjZVN0YXRlfHxvfWVsc2UgbS5vblBvcFN0YXRlPWZ1bmN0aW9uKGIsYyl7dmFyIGU9ITEsZj0hMSxnLGg7cmV0dXJuIG0uZG91YmxlQ2hlY2tDb21wbGV0ZSgpLGc9bS5nZXRIYXNoKCksZz8oaD1tLmV4dHJhY3RTdGF0ZShnfHxkLmxvY2F0aW9uLmhyZWYsITApLGg/bS5yZXBsYWNlU3RhdGUoaC5kYXRhLGgudGl0bGUsaC51cmwsITEpOihtLkFkYXB0ZXIudHJpZ2dlcihhLCJhbmNob3JjaGFuZ2UiKSxtLmJ1c3koITEpKSxtLmV4cGVjdGVkU3RhdGVJZD0hMSwhMSk6KGU9bS5BZGFwdGVyLmV4dHJhY3RFdmVudERhdGEoInN0YXRlIixiLGMpfHwhMSxlP2Y9bS5nZXRTdGF0ZUJ5SWQoZSk6bS5leHBlY3RlZFN0YXRlSWQ/Zj1tLmdldFN0YXRlQnlJZChtLmV4cGVjdGVkU3RhdGVJZCk6Zj1tLmV4dHJhY3RTdGF0ZShkLmxvY2F0aW9uLmhyZWYpLGZ8fChmPW0uY3JlYXRlU3RhdGVPYmplY3QobnVsbCxudWxsLGQubG9jYXRpb24uaHJlZikpLG0uZXhwZWN0ZWRTdGF0ZUlkPSExLG0uaXNMYXN0U2F2ZWRTdGF0ZShmKT8obS5idXN5KCExKSwhMSk6KG0uc3RvcmVTdGF0ZShmKSxtLnNhdmVTdGF0ZShmKSxtLnNldFRpdGxlKGYpLG0uQWRhcHRlci50cmlnZ2VyKGEsInN0YXRlY2hhbmdlIiksbS5idXN5KCExKSwhMCkpfSxtLkFkYXB0ZXIuYmluZChhLCJwb3BzdGF0ZSIsbS5vblBvcFN0YXRlKSxtLnB1c2hTdGF0ZT1mdW5jdGlvbihiLGMsZCxlKXtpZihtLmdldEhhc2hCeVVybChkKSYmbS5lbXVsYXRlZC5wdXNoU3RhdGUpdGhyb3cgbmV3IEVycm9yKCJIaXN0b3J5LmpzIGRvZXMgbm90IHN1cHBvcnQgc3RhdGVzIHdpdGggZnJhZ2VtZW50LWlkZW50aWZpZXJzIChoYXNoZXMvYW5jaG9ycykuIik7aWYoZSE9PSExJiZtLmJ1c3koKSlyZXR1cm4gbS5wdXNoUXVldWUoe3Njb3BlOm0sY2FsbGJhY2s6bS5wdXNoU3RhdGUsYXJnczphcmd1bWVudHMscXVldWU6ZX0pLCExO20uYnVzeSghMCk7dmFyIGY9bS5jcmVhdGVTdGF0ZU9iamVjdChiLGMsZCk7cmV0dXJuIG0uaXNMYXN0U2F2ZWRTdGF0ZShmKT9tLmJ1c3koITEpOihtLnN0b3JlU3RhdGUoZiksbS5leHBlY3RlZFN0YXRlSWQ9Zi5pZCxuLnB1c2hTdGF0ZShmLmlkLGYudGl0bGUsZi51cmwpLG0uQWRhcHRlci50cmlnZ2VyKGEsInBvcHN0YXRlIikpLCEwfSxtLnJlcGxhY2VTdGF0ZT1mdW5jdGlvbihiLGMsZCxlKXtpZihtLmdldEhhc2hCeVVybChkKSYmbS5lbXVsYXRlZC5wdXNoU3RhdGUpdGhyb3cgbmV3IEVycm9yKCJIaXN0b3J5LmpzIGRvZXMgbm90IHN1cHBvcnQgc3RhdGVzIHdpdGggZnJhZ2VtZW50LWlkZW50aWZpZXJzIChoYXNoZXMvYW5jaG9ycykuIik7aWYoZSE9PSExJiZtLmJ1c3koKSlyZXR1cm4gbS5wdXNoUXVldWUoe3Njb3BlOm0sY2FsbGJhY2s6bS5yZXBsYWNlU3RhdGUsYXJnczphcmd1bWVudHMscXVldWU6ZX0pLCExO20uYnVzeSghMCk7dmFyIGY9bS5jcmVhdGVTdGF0ZU9iamVjdChiLGMsZCk7cmV0dXJuIG0uaXNMYXN0U2F2ZWRTdGF0ZShmKT9tLmJ1c3koITEpOihtLnN0b3JlU3RhdGUoZiksbS5leHBlY3RlZFN0YXRlSWQ9Zi5pZCxuLnJlcGxhY2VTdGF0ZShmLmlkLGYudGl0bGUsZi51cmwpLG0uQWRhcHRlci50cmlnZ2VyKGEsInBvcHN0YXRlIikpLCEwfTtpZihmKXt0cnl7bS5zdG9yZT1rLnBhcnNlKGYuZ2V0SXRlbSgiSGlzdG9yeS5zdG9yZSIpKXx8e319Y2F0Y2gocCl7bS5zdG9yZT17fX1tLm5vcm1hbGl6ZVN0b3JlKCl9ZWxzZSBtLnN0b3JlPXt9LG0ubm9ybWFsaXplU3RvcmUoKTttLkFkYXB0ZXIuYmluZChhLCJiZWZvcmV1bmxvYWQiLG0uY2xlYXJBbGxJbnRlcnZhbHMpLG0uQWRhcHRlci5iaW5kKGEsInVubG9hZCIsbS5jbGVhckFsbEludGVydmFscyksbS5zYXZlU3RhdGUobS5zdG9yZVN0YXRlKG0uZXh0cmFjdFN0YXRlKGQubG9jYXRpb24uaHJlZiwhMCkpKSxmJiYobS5vblVubG9hZD1mdW5jdGlvbigpe3ZhciBhLGI7dHJ5e2E9ay5wYXJzZShmLmdldEl0ZW0oIkhpc3Rvcnkuc3RvcmUiKSl8fHt9fWNhdGNoKGMpe2E9e319YS5pZFRvU3RhdGU9YS5pZFRvU3RhdGV8fHt9LGEudXJsVG9JZD1hLnVybFRvSWR8fHt9LGEuc3RhdGVUb0lkPWEuc3RhdGVUb0lkfHx7fTtmb3IoYiBpbiBtLmlkVG9TdGF0ZSl7aWYoIW0uaWRUb1N0YXRlLmhhc093blByb3BlcnR5KGIpKWNvbnRpbnVlO2EuaWRUb1N0YXRlW2JdPW0uaWRUb1N0YXRlW2JdfWZvcihiIGluIG0udXJsVG9JZCl7aWYoIW0udXJsVG9JZC5oYXNPd25Qcm9wZXJ0eShiKSljb250aW51ZTthLnVybFRvSWRbYl09bS51cmxUb0lkW2JdfWZvcihiIGluIG0uc3RhdGVUb0lkKXtpZighbS5zdGF0ZVRvSWQuaGFzT3duUHJvcGVydHkoYikpY29udGludWU7YS5zdGF0ZVRvSWRbYl09bS5zdGF0ZVRvSWRbYl19bS5zdG9yZT1hLG0ubm9ybWFsaXplU3RvcmUoKSxmLnNldEl0ZW0oIkhpc3Rvcnkuc3RvcmUiLGsuc3RyaW5naWZ5KGEpKX0sbS5pbnRlcnZhbExpc3QucHVzaChpKG0ub25VbmxvYWQsbS5vcHRpb25zLnN0b3JlSW50ZXJ2YWwpKSxtLkFkYXB0ZXIuYmluZChhLCJiZWZvcmV1bmxvYWQiLG0ub25VbmxvYWQpLG0uQWRhcHRlci5iaW5kKGEsInVubG9hZCIsbS5vblVubG9hZCkpO2lmKCFtLmVtdWxhdGVkLnB1c2hTdGF0ZSl7bS5idWdzLnNhZmFyaVBvbGwmJm0uaW50ZXJ2YWxMaXN0LnB1c2goaShtLnNhZmFyaVN0YXRlUG9sbCxtLm9wdGlvbnMuc2FmYXJpUG9sbEludGVydmFsKSk7aWYoZS52ZW5kb3I9PT0iQXBwbGUgQ29tcHV0ZXIsIEluYy4ifHwoZS5hcHBDb2RlTmFtZXx8IiIpPT09Ik1vemlsbGEiKW0uQWRhcHRlci5iaW5kKGEsImhhc2hjaGFuZ2UiLGZ1bmN0aW9uKCl7bS5BZGFwdGVyLnRyaWdnZXIoYSwicG9wc3RhdGUiKX0pLG0uZ2V0SGFzaCgpJiZtLkFkYXB0ZXIub25Eb21Mb2FkKGZ1bmN0aW9uKCl7bS5BZGFwdGVyLnRyaWdnZXIoYSwiaGFzaGNoYW5nZSIpfSl9fSxtLmluaXQoKX0pKHdpbmRvdykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctYXBvbGxvLmpzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLWFwb2xsby5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDk4YmFmCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLWFwb2xsby5qcwpAQCAtMCwwICsxLDIgQEAKK1BSLnJlZ2lzdGVyTGFuZ0hhbmRsZXIoUFIuY3JlYXRlU2ltcGxlTGV4ZXIoW1siY29tIiwvXiNbXlxuXHJdKi8sbnVsbCwiIyJdLFsicGxuIiwvXltcdFxuXHIgXHhhMF0rLyxudWxsLCJcdFxuXHIgwlx4YTAiXSxbInN0ciIsL14iKD86W14iXFxdfFxcW1xTXHNdKSooPzoifCQpLyxudWxsLCciJ11dLFtbImt3ZCIsL14oPzpBRFN8QUR8QVVHfEJaRnxCWk1GfENBRXxDQUZ8Q0F8Q0NTfENPTXxDU3xEQVN8RENBfERDT018RENTfERET1VCTHxESU18RE9VQkxFfERUQ0J8RFRDRnxEVnxEWENIfEVEUlVQVHxFWFRFTkR8SU5DUnxJTkRFWHxORFh8SU5ISU5UfExYQ0h8TUFTS3xNU0t8TVB8TVNVfE5PT1B8T1ZTS3xRWENIfFJBTkR8UkVBRHxSRUxJTlR8UkVTVU1FfFJFVFVSTnxST1J8UlhPUnxTUVVBUkV8U1V8VENSfFRDQUF8T1ZTS3xUQ0Z8VEN8VFN8V0FORHxXT1J8V1JJVEV8WENIfFhMUXxYWEFMUXxaTHxaUXxBRER8QURafFNVQnxTVVp8TVBZfE1QUnxNUFp8RFZQfENPTXxBQlN8Q0xBfENMWnxMRFF8U1RPfFNUUXxBTFN8TExTfExSU3xUUkF8VFNRfFRNSXxUT1Z8QVhUfFRJWHxETFl8SU5QfE9VVClccy8sCitudWxsXSxbInR5cCIsL14oPzotP0dFTkFEUnw9TUlOVVN8MkJDQURSfFZOfEJPRnxNTXwtPzJDQURSfC0/WzEtNl1ETkFEUnxBRFJFU3xCQkNPTnxbRVNdP0JBTks9P3xCTE9DS3xCTktTVU18RT9DQURSfENPVU5UXCo/fDI/REVDXCo/fC0/RE5DSEFOfC0/RE5QVFJ8RVFVQUxTfEVSQVNFfE1FTU9SWXwyP09DVHxSRU1BRFJ8U0VUTE9DfFNVQlJPfE9SR3xCU1N8QkVTfFNZTnxFUVV8REVGSU5FfEVORClccy8sbnVsbF0sWyJsaXQiLC9eJyg/Oi0qKD86XHd8XFxbIS1+XSkoPzpbXHctXSp8XFxbIS1+XSlbIT0/XT8pPy9dLFsicGxuIiwvXi0qKD86WyEtel18XFxbIS1+XSkoPzpbXHctXSp8XFxbIS1+XSlbIT0/XT8vXSxbInB1biIsL15bXlx3XHRcblxyICInLSk7XFxceGEwXSsvXV0pLFsiYXBvbGxvIiwiYWdjIiwiYWVhIl0pOwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLWNsai5qcyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy1jbGouanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQyYTIyMAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy1jbGouanMKQEAgLTAsMCArMSwxOCBAQAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4KKworIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KK3ZhciBhPW51bGw7CitQUi5yZWdpc3RlckxhbmdIYW5kbGVyKFBSLmNyZWF0ZVNpbXBsZUxleGVyKFtbIm9wbiIsL15bKFt7XSsvLGEsIihbeyJdLFsiY2xvIiwvXlspXF19XSsvLGEsIildfSJdLFsiY29tIiwvXjtbXlxuXHJdKi8sYSwiOyJdLFsicGxuIiwvXltcdFxuXHIgXHhhMF0rLyxhLCJcdFxuXHIgXHhhMCJdLFsic3RyIiwvXiIoPzpbXiJcXF18XFxbXFNcc10pKig/OiJ8JCkvLGEsJyInXV0sW1sia3dkIiwvXig/OmRlZnxpZnxkb3xsZXR8cXVvdGV8dmFyfGZufGxvb3B8cmVjdXJ8dGhyb3d8dHJ5fG1vbml0b3ItZW50ZXJ8bW9uaXRvci1leGl0fGRlZm1hY3JvfGRlZm58ZGVmbi18bWFjcm9leHBhbmR8bWFjcm9leHBhbmQtMXxmb3J8ZG9zZXF8ZG9zeW5jfGRvdGltZXN8YW5kfG9yfHdoZW58bm90fGFzc2VydHxkb3RvfHByb3h5fGRlZnN0cnVjdHxmaXJzdHxyZXN0fGNvbnN8ZGVmcHJvdG9jb2x8ZGVmdHlwZXxkZWZyZWNvcmR8cmVpZnl8ZGVmbXVsdGl8ZGVmbWV0aG9kfG1ldGF8d2l0aC1tZXRhfG5zfGluLW5zfGNyZWF0ZS1uc3xpbXBvcnR8aW50ZXJufHJlZmVyfGFsaWFzfG5hbWVzcGFjZXxyZXNvbHZlfHJlZnxkZXJlZnxyZWZzZXR8bmV3fHNldCF8bWVtZm58dG8tYXJyYXl8aW50by1hcnJheXxhc2V0fGdlbi1jbGFzc3xyZWR1Y2V8bWFwfGZpbHRlcnxmaW5kfG5pbD98ZW1wdHk/fGhhc2gtbWFwfGhhc2gtc2V0fHZlY3x2ZWN0b3J8c2VxfGZsYXR0ZW58cmV2ZXJzZXxhc3NvY3xkaXNzb2N8bGlzdHxsaXN0P3xkaXNqfGdldHx1bmlvbnxkaWZmZXJlbmNlfGludGVyc2VjdGlvbnxleHRlbmR8ZXh0ZW5kLXR5cGV8ZXh0ZW5kLXByb3RvY29sfHBybilcYi8sYV0sCitbInR5cCIsL146W1xkQS1aYS16LV0rL11dKSxbImNsaiJdKTsKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy1jc3MuanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctY3NzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MWUxZjUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctY3NzLmpzCkBAIC0wLDAgKzEsMiBAQAorUFIucmVnaXN0ZXJMYW5nSGFuZGxlcihQUi5jcmVhdGVTaW1wbGVMZXhlcihbWyJwbG4iLC9eW1x0XG5cZlxyIF0rLyxudWxsLCIgXHRcclxuDCJdXSxbWyJzdHIiLC9eIig/OlteXG5cZlxyIlxcXXxcXCg/OlxyXG4/fFxufFxmKXxcXFtcU1xzXSkqIi8sbnVsbF0sWyJzdHIiLC9eJyg/OlteXG5cZlxyJ1xcXXxcXCg/OlxyXG4/fFxufFxmKXxcXFtcU1xzXSkqJy8sbnVsbF0sWyJsYW5nLWNzcy1zdHIiLC9edXJsXCgoW14iJyldKilcKS9pXSxbImt3ZCIsL14oPzp1cmx8cmdifCFpbXBvcnRhbnR8QGltcG9ydHxAcGFnZXxAbWVkaWF8QGNoYXJzZXR8aW5oZXJpdCkoPz1bXlx3LV18JCkvaSxudWxsXSxbImxhbmctY3NzLWt3IiwvXigtPyg/OltfYS16XXxcXFtcZGEtZl0rID8pKD86W1x3LV18XFxcXFtcZGEtZl0rID8pKilccyo6L2ldLFsiY29tIiwvXlwvXCpbXipdKlwqKyg/OlteKi9dW14qXSpcKispKlwvL10sWyJjb20iLAorL14oPzo8XCEtLXwtLVw+KS9dLFsibGl0IiwvXig/OlxkK3xcZCpcLlxkKykoPzolfFthLXpdKyk/L2ldLFsibGl0IiwvXiNbXGRhLWZdezMsNn0vaV0sWyJwbG4iLC9eLT8oPzpbX2Etel18XFxbXGRhLWZdKyA/KSg/Oltcdy1dfFxcXFxbXGRhLWZdKyA/KSovaV0sWyJwdW4iLC9eW15cc1x3IiddKy9dXSksWyJjc3MiXSk7UFIucmVnaXN0ZXJMYW5nSGFuZGxlcihQUi5jcmVhdGVTaW1wbGVMZXhlcihbXSxbWyJrd2QiLC9eLT8oPzpbX2Etel18XFxbXGRhLWZdKyA/KSg/Oltcdy1dfFxcXFxbXGRhLWZdKyA/KSovaV1dKSxbImNzcy1rdyJdKTtQUi5yZWdpc3RlckxhbmdIYW5kbGVyKFBSLmNyZWF0ZVNpbXBsZUxleGVyKFtdLFtbInN0ciIsL15bXiInKV0rL11dKSxbImNzcy1zdHIiXSk7CmRpZmYgLS1naXQgYS9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctZ28uanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctZ28uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMxOGRjMAotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy1nby5qcwpAQCAtMCwwICsxIEBACitQUi5yZWdpc3RlckxhbmdIYW5kbGVyKFBSLmNyZWF0ZVNpbXBsZUxleGVyKFtbInBsbiIsL15bXHRcblxyIFx4YTBdKy8sbnVsbCwiXHRcblxyIMJceGEwIl0sWyJwbG4iLC9eKD86Iig/OlteIlxcXXxcXFtcU1xzXSkqKD86InwkKXwnKD86W14nXFxdfFxcW1xTXHNdKSsoPzonfCQpfGBbXmBdKig/OmB8JCkpLyxudWxsLCJcIiciXV0sW1siY29tIiwvXig/OlwvXC9bXlxuXHJdKnxcL1wqW1xTXHNdKj9cKlwvKS9dLFsicGxuIiwvXig/OlteIicvYF18XC8oPyFbKi9dKSkrL11dKSxbImdvIl0pOwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLWhzLmpzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLWhzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNzdiMDgKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctaHMuanMKQEAgLTAsMCArMSwyIEBACitQUi5yZWdpc3RlckxhbmdIYW5kbGVyKFBSLmNyZWF0ZVNpbXBsZUxleGVyKFtbInBsbiIsL15bXHQtXHIgXSsvLG51bGwsIlx0XG4LDFxyICJdLFsic3RyIiwvXiIoPzpbXlxuXGZcciJcXF18XFxbXFNcc10pKig/OiJ8JCkvLG51bGwsJyInXSxbInN0ciIsL14nKD86W15cblxmXHInXFxdfFxcW14mXSknPy8sbnVsbCwiJyJdLFsibGl0IiwvXig/OjBvWzAtN10rfDB4W1xkYS1mXSt8XGQrKD86XC5cZCspPyg/OmVbKy1dP1xkKyk/KS9pLG51bGwsIjAxMjM0NTY3ODkiXV0sW1siY29tIiwvXig/Oi0tK1teXG5cZlxyXSp8ey0oPzpbXi1dfC0rW159LV0pKi19KS9dLFsia3dkIiwvXig/OmNhc2V8Y2xhc3N8ZGF0YXxkZWZhdWx0fGRlcml2aW5nfGRvfGVsc2V8aWZ8aW1wb3J0fGlufGluZml4fGluZml4bHxpbmZpeHJ8aW5zdGFuY2V8bGV0fG1vZHVsZXxuZXd0eXBlfG9mfHRoZW58dHlwZXx3aGVyZXxfKSg/PVteXGQnQS1aYS16XXwkKS8sCitudWxsXSxbInBsbiIsL14oPzpbQS1aXVtcdyddKlwuKSpbQS1aYS16XVtcdyddKi9dLFsicHVuIiwvXlteXGRcdC1cciAiJ0EtWmEtel0rL11dKSxbImhzIl0pOwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLWxpc3AuanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctbGlzcC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmEzMGU4Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLWxpc3AuanMKQEAgLTAsMCArMSwzIEBACit2YXIgYT1udWxsOworUFIucmVnaXN0ZXJMYW5nSGFuZGxlcihQUi5jcmVhdGVTaW1wbGVMZXhlcihbWyJvcG4iLC9eXCgrLyxhLCIoIl0sWyJjbG8iLC9eXCkrLyxhLCIpIl0sWyJjb20iLC9eO1teXG5ccl0qLyxhLCI7Il0sWyJwbG4iLC9eW1x0XG5cciBceGEwXSsvLGEsIlx0XG5cciBceGEwIl0sWyJzdHIiLC9eIig/OlteIlxcXXxcXFtcU1xzXSkqKD86InwkKS8sYSwnIiddXSxbWyJrd2QiLC9eKD86YmxvY2t8Y1thZF0rcnxjYXRjaHxjb25bZHNdfGRlZig/OmluZXx1bil8ZG98ZXF8ZXFsfGVxdWFsfGVxdWFscHxldmFsLXdoZW58ZmxldHxmb3JtYXR8Z298aWZ8bGFiZWxzfGxhbWJkYXxsZXR8bG9hZC10aW1lLXZhbHVlfGxvY2FsbHl8bWFjcm9sZXR8bXVsdGlwbGUtdmFsdWUtY2FsbHxuaWx8cHJvZ258cHJvZ3Z8cXVvdGV8cmVxdWlyZXxyZXR1cm4tZnJvbXxzZXRxfHN5bWJvbC1tYWNyb2xldHx0fHRhZ2JvZHl8dGhlfHRocm93fHVud2luZClcYi8sYV0sCitbImxpdCIsL15bKy1dPyg/OlsjMF14W1xkYS1mXSt8XGQrXC9cZCt8KD86XC5cZCt8XGQrKD86XC5cZCopPykoPzpbZGVdWystXT9cZCspPykvaV0sWyJsaXQiLC9eJyg/Oi0qKD86XHd8XFxbIS1+XSkoPzpbXHctXSp8XFxbIS1+XSlbIT0/XT8pPy9dLFsicGxuIiwvXi0qKD86W19hLXpdfFxcWyEtfl0pKD86W1x3LV0qfFxcWyEtfl0pWyE9P10/L2ldLFsicHVuIiwvXlteXHdcdFxuXHIgIictKTtcXFx4YTBdKy9dXSksWyJjbCIsImVsIiwibGlzcCIsInNjbSJdKTsKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy1sdWEuanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctbHVhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4M2EzYzQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctbHVhLmpzCkBAIC0wLDAgKzEsMiBAQAorUFIucmVnaXN0ZXJMYW5nSGFuZGxlcihQUi5jcmVhdGVTaW1wbGVMZXhlcihbWyJwbG4iLC9eW1x0XG5cciBceGEwXSsvLG51bGwsIlx0XG5cciDCXHhhMCJdLFsic3RyIiwvXig/OiIoPzpbXiJcXF18XFxbXFNcc10pKig/OiJ8JCl8Jyg/OlteJ1xcXXxcXFtcU1xzXSkqKD86J3wkKSkvLG51bGwsIlwiJyJdXSxbWyJjb20iLC9eLS0oPzpcWyg9KilcW1tcU1xzXSo/KD86XVwxXXwkKXxbXlxuXHJdKikvXSxbInN0ciIsL15cWyg9KilcW1tcU1xzXSo/KD86XVwxXXwkKS9dLFsia3dkIiwvXig/OmFuZHxicmVha3xkb3xlbHNlfGVsc2VpZnxlbmR8ZmFsc2V8Zm9yfGZ1bmN0aW9ufGlmfGlufGxvY2FsfG5pbHxub3R8b3J8cmVwZWF0fHJldHVybnx0aGVufHRydWV8dW50aWx8d2hpbGUpXGIvLG51bGxdLFsibGl0IiwvXlsrLV0/KD86MHhbXGRhLWZdK3woPzpcLlxkK3xcZCsoPzpcLlxkKik/KSg/OmVbKy1dP1xkKyk/KS9pXSwKK1sicGxuIiwvXltfYS16XVx3Ki9pXSxbInB1biIsL15bXlx3XHRcblxyIFx4YTBdW15cd1x0XG5cciAiJys9XHhhMC1dKi9dXSksWyJsdWEiXSk7CmRpZmYgLS1naXQgYS9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctbWwuanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctbWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRmMDJkNwotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy1tbC5qcwpAQCAtMCwwICsxLDIgQEAKK1BSLnJlZ2lzdGVyTGFuZ0hhbmRsZXIoUFIuY3JlYXRlU2ltcGxlTGV4ZXIoW1sicGxuIiwvXltcdFxuXHIgXHhhMF0rLyxudWxsLCJcdFxuXHIgwlx4YTAiXSxbImNvbSIsL14jKD86aWZbXHRcblxyIFx4YTBdKyg/OlskX2Etel1bXHcnXSp8YGBbXlx0XG5ccmBdKig/OmBgfCQpKXxlbHNlfGVuZGlmfGxpZ2h0KS9pLG51bGwsIiMiXSxbInN0ciIsL14oPzoiKD86W14iXFxdfFxcW1xTXHNdKSooPzoifCQpfCcoPzpbXidcXF18XFxbXFNcc10pKD86J3wkKSkvLG51bGwsIlwiJyJdXSxbWyJjb20iLC9eKD86XC9cL1teXG5ccl0qfFwoXCpbXFNcc10qP1wqXCkpL10sWyJrd2QiLC9eKD86YWJzdHJhY3R8YW5kfGFzfGFzc2VydHxiZWdpbnxjbGFzc3xkZWZhdWx0fGRlbGVnYXRlfGRvfGRvbmV8ZG93bmNhc3R8ZG93bnRvfGVsaWZ8ZWxzZXxlbmR8ZXhjZXB0aW9ufGV4dGVybnxmYWxzZXxmaW5hbGx5fGZvcnxmdW58ZnVuY3Rpb258aWZ8aW58aW5oZXJpdHxpbmxpbmV8aW50ZXJmYWNlfGludGVybmFsfGxhenl8bGV0fG1hdGNofG1lbWJlcnxtb2R1bGV8bXV0YWJsZXxuYW1lc3BhY2V8bmV3fG51bGx8b2Z8b3BlbnxvcnxvdmVycmlkZXxwcml2YXRlfHB1YmxpY3xyZWN8cmV0dXJufHN0YXRpY3xzdHJ1Y3R8dGhlbnx0b3x0cnVlfHRyeXx0eXBlfHVwY2FzdHx1c2V8dmFsfHZvaWR8d2hlbnx3aGlsZXx3aXRofHlpZWxkfGFzcnxsYW5kfGxvcnxsc2x8bHNyfGx4b3J8bW9kfHNpZ3xhdG9taWN8YnJlYWt8Y2hlY2tlZHxjb21wb25lbnR8Y29uc3R8Y29uc3RyYWludHxjb25zdHJ1Y3Rvcnxjb250aW51ZXxlYWdlcnxldmVudHxleHRlcm5hbHxmaXhlZHxmdW5jdG9yfGdsb2JhbHxpbmNsdWRlfG1ldGhvZHxtaXhpbnxvYmplY3R8cGFyYWxsZWx8cHJvY2Vzc3xwcm90ZWN0ZWR8cHVyZXxzZWFsZWR8dHJhaXR8dmlydHVhbHx2b2xhdGlsZSlcYi9dLAorWyJsaXQiLC9eWystXT8oPzoweFtcZGEtZl0rfCg/OlwuXGQrfFxkKyg/OlwuXGQqKT8pKD86ZVsrLV0/XGQrKT8pL2ldLFsicGxuIiwvXig/OltfYS16XVtcdyddKlshIz9dP3xgYFteXHRcblxyYF0qKD86YGB8JCkpL2ldLFsicHVuIiwvXlteXHdcdFxuXHIgIidceGEwXSsvXV0pLFsiZnMiLCJtbCJdKTsKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy1uLmpzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmMyZTg1YgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy1uLmpzCkBAIC0wLDAgKzEsNCBAQAordmFyIGE9bnVsbDsKK1BSLnJlZ2lzdGVyTGFuZ0hhbmRsZXIoUFIuY3JlYXRlU2ltcGxlTGV4ZXIoW1sic3RyIiwvXig/OicoPzpbXlxuXHInXFxdfFxcLikqJ3wiKD86W15cblxyIlxcXXxcXC4pKig/OiJ8JCkpLyxhLCciJ10sWyJjb20iLC9eIyg/Oig/OmRlZmluZXxlbGlmfGVsc2V8ZW5kaWZ8ZXJyb3J8aWZkZWZ8aW5jbHVkZXxpZm5kZWZ8bGluZXxwcmFnbWF8dW5kZWZ8d2FybmluZylcYnxbXlxuXHJdKikvLGEsIiMiXSxbInBsbiIsL15ccysvLGEsIiBcclxuXHRceGEwIl1dLFtbInN0ciIsL15AIig/OlteIl18IiIpKig/OiJ8JCkvLGFdLFsic3RyIiwvXjwjW14jPl0qKD86Iz58JCkvLGFdLFsic3RyIiwvXjwoPzooPzooPzpcLlwuXC8pKnxcLz8pKD86W1x3LV0rKD86XC9bXHctXSspKyk/W1x3LV0rXC5ofFthLXpdXHcqKT4vLGFdLFsiY29tIiwvXlwvXC9bXlxuXHJdKi8sYV0sWyJjb20iLC9eXC9cKltcU1xzXSo/KD86XCpcL3wkKS8sCithXSxbImt3ZCIsL14oPzphYnN0cmFjdHxhbmR8YXN8YmFzZXxjYXRjaHxjbGFzc3xkZWZ8ZGVsZWdhdGV8ZW51bXxldmVudHxleHRlcm58ZmFsc2V8ZmluYWxseXxmdW58aW1wbGVtZW50c3xpbnRlcmZhY2V8aW50ZXJuYWx8aXN8bWFjcm98bWF0Y2h8bWF0Y2hlc3xtb2R1bGV8bXV0YWJsZXxuYW1lc3BhY2V8bmV3fG51bGx8b3V0fG92ZXJyaWRlfHBhcmFtc3xwYXJ0aWFsfHByaXZhdGV8cHJvdGVjdGVkfHB1YmxpY3xyZWZ8c2VhbGVkfHN0YXRpY3xzdHJ1Y3R8c3ludGF4fHRoaXN8dGhyb3d8dHJ1ZXx0cnl8dHlwZXx0eXBlb2Z8dXNpbmd8dmFyaWFudHx2aXJ0dWFsfHZvbGF0aWxlfHdoZW58d2hlcmV8d2l0aHxhc3NlcnR8YXNzZXJ0Mnxhc3luY3xicmVha3xjaGVja2VkfGNvbnRpbnVlfGRvfGVsc2V8ZW5zdXJlc3xmb3J8Zm9yZWFjaHxpZnxsYXRlfGxvY2t8bmV3fG5vbGF0ZXxvdGhlcndpc2V8cmVnZXhwfHJlcGVhdHxyZXF1aXJlc3xyZXR1cm58c3Vycm91bmR3aXRofHVuY2hlY2tlZHx1bmxlc3N8dXNpbmd8d2hpbGV8eWllbGQpXGIvLAorYV0sWyJ0eXAiLC9eKD86YXJyYXl8Ym9vbHxieXRlfGNoYXJ8ZGVjaW1hbHxkb3VibGV8ZmxvYXR8aW50fGxpc3R8bG9uZ3xvYmplY3R8c2J5dGV8c2hvcnR8c3RyaW5nfHVsb25nfHVpbnR8dWZsb2F0fHVsb25nfHVzaG9ydHx2b2lkKVxiLyxhXSxbImxpdCIsL15AWyRfYS16XVtcdyRAXSovaSxhXSxbInR5cCIsL15AW0EtWl0rW2Etel1bXHckQF0qLyxhXSxbInBsbiIsL14nP1skX2Etel1bXHckQF0qL2ksYV0sWyJsaXQiLC9eKD86MHhbXGRhLWZdK3woPzpcZCg/Ol9cZCspKlxkKig/OlwuXGQqKT98XC5cZFwrKSg/OmVbKy1dP1xkKyk/KVthLXpdKi9pLGEsIjAxMjM0NTY3ODkiXSxbInB1biIsL14uW15cc1x3Ii0kJy4vQGBdKi8sYV1dKSxbIm4iLCJuZW1lcmxlIl0pOwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXByb3RvLmpzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXByb3RvLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwMDZhZDgKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctcHJvdG8uanMKQEAgLTAsMCArMSBAQAorUFIucmVnaXN0ZXJMYW5nSGFuZGxlcihQUi5zb3VyY2VEZWNvcmF0b3Ioe2tleXdvcmRzOiJieXRlcyxkZWZhdWx0LGRvdWJsZSxlbnVtLGV4dGVuZCxleHRlbnNpb25zLGZhbHNlLGdyb3VwLGltcG9ydCxtYXgsbWVzc2FnZSxvcHRpb24sb3B0aW9uYWwscGFja2FnZSxyZXBlYXRlZCxyZXF1aXJlZCxyZXR1cm5zLHJwYyxzZXJ2aWNlLHN5bnRheCx0byx0cnVlIix0eXBlczovXihib29sfChkb3VibGV8cz9maXhlZHxbc3VdP2ludCkoMzJ8NjQpfGZsb2F0fHN0cmluZylcYi8sY1N0eWxlQ29tbWVudHM6ITB9KSxbInByb3RvIl0pOwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXNjYWxhLmpzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXNjYWxhLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZDAzNGQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctc2NhbGEuanMKQEAgLTAsMCArMSwyIEBACitQUi5yZWdpc3RlckxhbmdIYW5kbGVyKFBSLmNyZWF0ZVNpbXBsZUxleGVyKFtbInBsbiIsL15bXHRcblxyIFx4YTBdKy8sbnVsbCwiXHRcblxyIMJceGEwIl0sWyJzdHIiLC9eIig/OiIiKD86IiI/KD8hIil8W14iXFxdfFxcLikqInswLDN9fCg/OlteXG5cciJcXF18XFwuKSoiPykvLG51bGwsJyInXSxbImxpdCIsL15gKD86W15cblxyXFxgXXxcXC4pKmA/LyxudWxsLCJgIl0sWyJwdW4iLC9eWyEjJSYoLS06LUBbLV57LX5dKy8sbnVsbCwiISMlJigpKissLTo7PD0+P0BbXFxdXnt8fX4iXV0sW1sic3RyIiwvXicoPzpbXlxuXHInXFxdfFxcKD86J3xbXlxuXHInXSspKScvXSxbImxpdCIsL14nWyRBLVpfYS16XVtcdyRdKig/IVtcdyQnXSkvXSxbImt3ZCIsL14oPzphYnN0cmFjdHxjYXNlfGNhdGNofGNsYXNzfGRlZnxkb3xlbHNlfGV4dGVuZHN8ZmluYWx8ZmluYWxseXxmb3J8Zm9yU29tZXxpZnxpbXBsaWNpdHxpbXBvcnR8bGF6eXxtYXRjaHxuZXd8b2JqZWN0fG92ZXJyaWRlfHBhY2thZ2V8cHJpdmF0ZXxwcm90ZWN0ZWR8cmVxdWlyZXN8cmV0dXJufHNlYWxlZHxzdXBlcnx0aHJvd3x0cmFpdHx0cnl8dHlwZXx2YWx8dmFyfHdoaWxlfHdpdGh8eWllbGQpXGIvXSwKK1sibGl0IiwvXig/OnRydWV8ZmFsc2V8bnVsbHx0aGlzKVxiL10sWyJsaXQiLC9eKD86MCg/OlswLTddK3x4W1xkYS1mXSspbD98KD86MHxbMS05XVxkKikoPzooPzpcLlxkKyk/KD86ZVsrLV0/XGQrKT9mP3xsPyl8XFwuXGQrKD86ZVsrLV0/XGQrKT9mPykvaV0sWyJ0eXAiLC9eWyRfXSpbQS1aXVtcZCRBLVpfXSpbYS16XVtcdyRdKi9dLFsicGxuIiwvXlskQS1aX2Etel1bXHckXSovXSxbImNvbSIsL15cLyg/OlwvLip8XCooPzpcL3xcKipbXiovXSkqKD86XCorXC8/KT8pL10sWyJwdW4iLC9eKD86XC4rfFwvKS9dXSksWyJzY2FsYSJdKTsKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy1zcWwuanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctc3FsLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNzA1YjAKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctc3FsLmpzCkBAIC0wLDAgKzEsMiBAQAorUFIucmVnaXN0ZXJMYW5nSGFuZGxlcihQUi5jcmVhdGVTaW1wbGVMZXhlcihbWyJwbG4iLC9eW1x0XG5cciBceGEwXSsvLG51bGwsIlx0XG5cciDCXHhhMCJdLFsic3RyIiwvXig/OiIoPzpbXiJcXF18XFwuKSoifCcoPzpbXidcXF18XFwuKSonKS8sbnVsbCwiXCInIl1dLFtbImNvbSIsL14oPzotLVteXG5ccl0qfFwvXCpbXFNcc10qPyg/OlwqXC98JCkpL10sWyJrd2QiLC9eKD86YWRkfGFsbHxhbHRlcnxhbmR8YW55fGFzfGFzY3xhdXRob3JpemF0aW9ufGJhY2t1cHxiZWdpbnxiZXR3ZWVufGJyZWFrfGJyb3dzZXxidWxrfGJ5fGNhc2NhZGV8Y2FzZXxjaGVja3xjaGVja3BvaW50fGNsb3NlfGNsdXN0ZXJlZHxjb2FsZXNjZXxjb2xsYXRlfGNvbHVtbnxjb21taXR8Y29tcHV0ZXxjb25zdHJhaW50fGNvbnRhaW5zfGNvbnRhaW5zdGFibGV8Y29udGludWV8Y29udmVydHxjcmVhdGV8Y3Jvc3N8Y3VycmVudHxjdXJyZW50X2RhdGV8Y3VycmVudF90aW1lfGN1cnJlbnRfdGltZXN0YW1wfGN1cnJlbnRfdXNlcnxjdXJzb3J8ZGF0YWJhc2V8ZGJjY3xkZWFsbG9jYXRlfGRlY2xhcmV8ZGVmYXVsdHxkZWxldGV8ZGVueXxkZXNjfGRpc2t8ZGlzdGluY3R8ZGlzdHJpYnV0ZWR8ZG91YmxlfGRyb3B8ZHVtbXl8ZHVtcHxlbHNlfGVuZHxlcnJsdmx8ZXNjYXBlfGV4Y2VwdHxleGVjfGV4ZWN1dGV8ZXhpc3RzfGV4aXR8ZmV0Y2h8ZmlsZXxmaWxsZmFjdG9yfGZvcnxmb3JlaWdufGZyZWV0ZXh0fGZyZWV0ZXh0dGFibGV8ZnJvbXxmdWxsfGZ1bmN0aW9ufGdvdG98Z3JhbnR8Z3JvdXB8aGF2aW5nfGhvbGRsb2NrfGlkZW50aXR5fGlkZW50aXR5Y29sfGlkZW50aXR5X2luc2VydHxpZnxpbnxpbmRleHxpbm5lcnxpbnNlcnR8aW50ZXJzZWN0fGludG98aXN8am9pbnxrZXl8a2lsbHxsZWZ0fGxpa2V8bGluZW5vfGxvYWR8bWF0Y2h8bWVyZ2V8bmF0aW9uYWx8bm9jaGVja3xub25jbHVzdGVyZWR8bm90fG51bGx8bnVsbGlmfG9mfG9mZnxvZmZzZXRzfG9ufG9wZW58b3BlbmRhdGFzb3VyY2V8b3BlbnF1ZXJ5fG9wZW5yb3dzZXR8b3BlbnhtbHxvcHRpb258b3J8b3JkZXJ8b3V0ZXJ8b3ZlcnxwZXJjZW50fHBsYW58cHJlY2lzaW9ufHByaW1hcnl8cHJpbnR8cHJvY3xwcm9jZWR1cmV8cHVibGljfHJhaXNlcnJvcnxyZWFkfHJlYWR0ZXh0fHJlY29uZmlndXJlfHJlZmVyZW5jZXN8cmVwbGljYXRpb258cmVzdG9yZXxyZXN0cmljdHxyZXR1cm58cmV2b2tlfHJpZ2h0fHJvbGxiYWNrfHJvd2NvdW50fHJvd2d1aWRjb2x8cnVsZXxzYXZlfHNjaGVtYXxzZWxlY3R8c2Vzc2lvbl91c2VyfHNldHxzZXR1c2VyfHNodXRkb3dufHNvbWV8c3RhdGlzdGljc3xzeXN0ZW1fdXNlcnx0YWJsZXx0ZXh0c2l6ZXx0aGVufHRvfHRvcHx0cmFufHRyYW5zYWN0aW9ufHRyaWdnZXJ8dHJ1bmNhdGV8dHNlcXVhbHx1bmlvbnx1bmlxdWV8dXBkYXRlfHVwZGF0ZXRleHR8dXNlfHVzZXJ8dXNpbmd8dmFsdWVzfHZhcnlpbmd8dmlld3x3YWl0Zm9yfHdoZW58d2hlcmV8d2hpbGV8d2l0aHx3cml0ZXRleHQpKD89W15cdy1dfCQpL2ksCitudWxsXSxbImxpdCIsL15bKy1dPyg/OjB4W1xkYS1mXSt8KD86XC5cZCt8XGQrKD86XC5cZCopPykoPzplWystXT9cZCspPykvaV0sWyJwbG4iLC9eW19hLXpdW1x3LV0qL2ldLFsicHVuIiwvXlteXHdcdFxuXHIgIidceGEwXVteXHdcdFxuXHIgIicrXHhhMC1dKi9dXSksWyJzcWwiXSk7CmRpZmYgLS1naXQgYS9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctdGV4LmpzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXRleC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTk2ZmJiCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXRleC5qcwpAQCAtMCwwICsxIEBACitQUi5yZWdpc3RlckxhbmdIYW5kbGVyKFBSLmNyZWF0ZVNpbXBsZUxleGVyKFtbInBsbiIsL15bXHRcblxyIFx4YTBdKy8sbnVsbCwiXHRcblxyIMJceGEwIl0sWyJjb20iLC9eJVteXG5ccl0qLyxudWxsLCIlIl1dLFtbImt3ZCIsL15cXFtALVphLXpdKy9dLFsia3dkIiwvXlxcLi9dLFsidHlwIiwvXlskJl0vXSxbImxpdCIsL1srLV0/KD86XC5cZCt8XGQrKD86XC5cZCopPykoY218ZW18ZXh8aW58cGN8cHR8YnB8bW0pL2ldLFsicHVuIiwvXlsoKT1bXF17fV0rL11dKSxbImxhdGV4IiwidGV4Il0pOwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXZiLmpzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXZiLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NTA2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctdmIuanMKQEAgLTAsMCArMSwyIEBACitQUi5yZWdpc3RlckxhbmdIYW5kbGVyKFBSLmNyZWF0ZVNpbXBsZUxleGVyKFtbInBsbiIsL15bXHRcblxyIFx4YTBcdTIwMjhcdTIwMjldKy8sbnVsbCwiXHRcblxyIMJceGEw4oCo4oCpIl0sWyJzdHIiLC9eKD86WyJcdTIwMWNcdTIwMWRdKD86W14iXHUyMDFjXHUyMDFkXXxbIlx1MjAxY1x1MjAxZF17Mn0pKD86WyJcdTIwMWNcdTIwMWRdY3wkKXxbIlx1MjAxY1x1MjAxZF0oPzpbXiJcdTIwMWNcdTIwMWRdfFsiXHUyMDFjXHUyMDFkXXsyfSkqKD86WyJcdTIwMWNcdTIwMWRdfCQpKS9pLG51bGwsJyLigJzigJ0nXSxbImNvbSIsL15bJ1x1MjAxOFx1MjAxOV0uKi8sbnVsbCwiJ+KAmOKAmSJdXSxbWyJrd2QiLC9eKD86YWRkaGFuZGxlcnxhZGRyZXNzb2Z8YWxpYXN8YW5kfGFuZGFsc298YW5zaXxhc3xhc3NlbWJseXxhdXRvfGJvb2xlYW58YnlyZWZ8Ynl0ZXxieXZhbHxjYWxsfGNhc2V8Y2F0Y2h8Y2Jvb2x8Y2J5dGV8Y2NoYXJ8Y2RhdGV8Y2RibHxjZGVjfGNoYXJ8Y2ludHxjbGFzc3xjbG5nfGNvYmp8Y29uc3R8Y3Nob3J0fGNzbmd8Y3N0cnxjdHlwZXxkYXRlfGRlY2ltYWx8ZGVjbGFyZXxkZWZhdWx0fGRlbGVnYXRlfGRpbXxkaXJlY3RjYXN0fGRvfGRvdWJsZXxlYWNofGVsc2V8ZWxzZWlmfGVuZHxlbmRpZnxlbnVtfGVyYXNlfGVycm9yfGV2ZW50fGV4aXR8ZmluYWxseXxmb3J8ZnJpZW5kfGZ1bmN0aW9ufGdldHxnZXR0eXBlfGdvc3VifGdvdG98aGFuZGxlc3xpZnxpbXBsZW1lbnRzfGltcG9ydHN8aW58aW5oZXJpdHN8aW50ZWdlcnxpbnRlcmZhY2V8aXN8bGV0fGxpYnxsaWtlfGxvbmd8bG9vcHxtZXxtb2R8bW9kdWxlfG11c3Rpbmhlcml0fG11c3RvdmVycmlkZXxteWJhc2V8bXljbGFzc3xuYW1lc3BhY2V8bmV3fG5leHR8bm90fG5vdGluaGVyaXRhYmxlfG5vdG92ZXJyaWRhYmxlfG9iamVjdHxvbnxvcHRpb258b3B0aW9uYWx8b3J8b3JlbHNlfG92ZXJsb2Fkc3xvdmVycmlkYWJsZXxvdmVycmlkZXN8cGFyYW1hcnJheXxwcmVzZXJ2ZXxwcml2YXRlfHByb3BlcnR5fHByb3RlY3RlZHxwdWJsaWN8cmFpc2VldmVudHxyZWFkb25seXxyZWRpbXxyZW1vdmVoYW5kbGVyfHJlc3VtZXxyZXR1cm58c2VsZWN0fHNldHxzaGFkb3dzfHNoYXJlZHxzaG9ydHxzaW5nbGV8c3RhdGljfHN0ZXB8c3RvcHxzdHJpbmd8c3RydWN0dXJlfHN1YnxzeW5jbG9ja3x0aGVufHRocm93fHRvfHRyeXx0eXBlb2Z8dW5pY29kZXx1bnRpbHx2YXJpYW50fHdlbmR8d2hlbnx3aGlsZXx3aXRofHdpdGhldmVudHN8d3JpdGVvbmx5fHhvcnxlbmRpZnxnb3N1YnxsZXR8dmFyaWFudHx3ZW5kKVxiL2ksCitudWxsXSxbImNvbSIsL15yZW0uKi9pXSxbImxpdCIsL14oPzp0cnVlXGJ8ZmFsc2VcYnxub3RoaW5nXGJ8XGQrKD86ZVsrLV0/XGQrW2Rmcl0/fFtkZmlscnNdKT98KD86JmhbXGRhLWZdK3wmb1swLTddKylbaWxzXT98XGQqXC5cZCsoPzplWystXT9cZCspP1tkZnJdP3wjXHMrKD86XGQrWy8tXVxkK1svLV1cZCsoPzpccytcZCs6XGQrKD86OlxkKyk/KFxzKig/OmFtfHBtKSk/KT98XGQrOlxkKyg/OjpcZCspPyhccyooPzphbXxwbSkpPylccysjKS9pXSxbInBsbiIsL14oPzooPzpbYS16XXxfXHcpXHcqfFxbKD86W2Etel18X1x3KVx3Kl0pL2ldLFsicHVuIiwvXlteXHdcdFxuXHIgIidbXF1ceGEwXHUyMDE4XHUyMDE5XHUyMDFjXHUyMDFkXHUyMDI4XHUyMDI5XSsvXSxbInB1biIsL14oPzpcW3xdKS9dXSksWyJ2YiIsInZicyJdKTsKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy12aGRsLmpzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXZoZGwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI4YjViNgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy12aGRsLmpzCkBAIC0wLDAgKzEsMyBAQAorUFIucmVnaXN0ZXJMYW5nSGFuZGxlcihQUi5jcmVhdGVTaW1wbGVMZXhlcihbWyJwbG4iLC9eW1x0XG5cciBceGEwXSsvLG51bGwsIlx0XG5cciDCXHhhMCJdXSxbWyJzdHIiLC9eKD86W2JveF0/Iig/OlteIl18IiIpKiJ8Jy4nKS9pXSxbImNvbSIsL14tLVteXG5ccl0qL10sWyJrd2QiLC9eKD86YWJzfGFjY2Vzc3xhZnRlcnxhbGlhc3xhbGx8YW5kfGFyY2hpdGVjdHVyZXxhcnJheXxhc3NlcnR8YXR0cmlidXRlfGJlZ2lufGJsb2NrfGJvZHl8YnVmZmVyfGJ1c3xjYXNlfGNvbXBvbmVudHxjb25maWd1cmF0aW9ufGNvbnN0YW50fGRpc2Nvbm5lY3R8ZG93bnRvfGVsc2V8ZWxzaWZ8ZW5kfGVudGl0eXxleGl0fGZpbGV8Zm9yfGZ1bmN0aW9ufGdlbmVyYXRlfGdlbmVyaWN8Z3JvdXB8Z3VhcmRlZHxpZnxpbXB1cmV8aW58aW5lcnRpYWx8aW5vdXR8aXN8bGFiZWx8bGlicmFyeXxsaW5rYWdlfGxpdGVyYWx8bG9vcHxtYXB8bW9kfG5hbmR8bmV3fG5leHR8bm9yfG5vdHxudWxsfG9mfG9ufG9wZW58b3J8b3RoZXJzfG91dHxwYWNrYWdlfHBvcnR8cG9zdHBvbmVkfHByb2NlZHVyZXxwcm9jZXNzfHB1cmV8cmFuZ2V8cmVjb3JkfHJlZ2lzdGVyfHJlamVjdHxyZW18cmVwb3J0fHJldHVybnxyb2x8cm9yfHNlbGVjdHxzZXZlcml0eXxzaGFyZWR8c2lnbmFsfHNsYXxzbGx8c3JhfHNybHxzdWJ0eXBlfHRoZW58dG98dHJhbnNwb3J0fHR5cGV8dW5hZmZlY3RlZHx1bml0c3x1bnRpbHx1c2V8dmFyaWFibGV8d2FpdHx3aGVufHdoaWxlfHdpdGh8eG5vcnx4b3IpKD89W15cdy1dfCQpL2ksCitudWxsXSxbInR5cCIsL14oPzpiaXR8Yml0X3ZlY3RvcnxjaGFyYWN0ZXJ8Ym9vbGVhbnxpbnRlZ2VyfHJlYWx8dGltZXxzdHJpbmd8c2V2ZXJpdHlfbGV2ZWx8cG9zaXRpdmV8bmF0dXJhbHxzaWduZWR8dW5zaWduZWR8bGluZXx0ZXh0fHN0ZF91P2xvZ2ljKD86X3ZlY3Rvcik/KSg/PVteXHctXXwkKS9pLG51bGxdLFsidHlwIiwvXicoPzphY3RpdmV8YXNjZW5kaW5nfGJhc2V8ZGVsYXllZHxkcml2aW5nfGRyaXZpbmdfdmFsdWV8ZXZlbnR8aGlnaHxpbWFnZXxpbnN0YW5jZV9uYW1lfGxhc3RfYWN0aXZlfGxhc3RfZXZlbnR8bGFzdF92YWx1ZXxsZWZ0fGxlZnRvZnxsZW5ndGh8bG93fHBhdGhfbmFtZXxwb3N8cHJlZHxxdWlldHxyYW5nZXxyZXZlcnNlX3JhbmdlfHJpZ2h0fHJpZ2h0b2Z8c2ltcGxlX25hbWV8c3RhYmxlfHN1Y2N8dHJhbnNhY3Rpb258dmFsfHZhbHVlKSg/PVteXHctXXwkKS9pLG51bGxdLFsibGl0IiwvXlxkKyg/Ol9cZCspKig/OiNbXHcuXFxdKyMoPzpbKy1dP1xkKyg/Ol9cZCspKik/fCg/OlwuXGQrKD86X1xkKykqKT8oPzplWystXT9cZCsoPzpfXGQrKSopPykvaV0sCitbInBsbiIsL14oPzpbYS16XVx3KnxcXFteXFxdKlxcKS9pXSxbInB1biIsL15bXlx3XHRcblxyICInXHhhMF1bXlx3XHRcblxyICInXHhhMC1dKi9dXSksWyJ2aGRsIiwidmhkIl0pOwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXdpa2kuanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L2xhbmctd2lraS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjBiNDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXdpa2kuanMKQEAgLTAsMCArMSwyIEBACitQUi5yZWdpc3RlckxhbmdIYW5kbGVyKFBSLmNyZWF0ZVNpbXBsZUxleGVyKFtbInBsbiIsL15bXGRcdCBhLWdpLXpceGEwXSsvLG51bGwsIlx0IMJceGEwYWJjZGVmZ2lqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkiXSxbInB1biIsL15bKj1bXF1efl0rLyxudWxsLCI9Kn5eW10iXV0sW1sibGFuZy13aWtpLm1ldGEiLC8oPzpeXnxcclxuP3xcbikoI1thLXpdKylcYi9dLFsibGl0IiwvXltBLVpdW2Etel1bXGRhLXpdK1tBLVpdW2Etel1bXlxXX10rXGIvXSxbImxhbmctIiwvXnt7eyhbXFNcc10rPyl9fX0vXSxbImxhbmctIiwvXmAoW15cblxyYF0rKWAvXSxbInN0ciIsL15odHRwcz86XC9cL1teXHMjLz9dKig/OlwvW15ccyM/XSopPyg/Olw/W15ccyNdKik/KD86I1xTKik/L2ldLFsicGxuIiwvXig/OlxyXG58W1xTXHNdKVteXG5cciMqPUEtW15gaHt+XSovXV0pLFsid2lraSJdKTsKK1BSLnJlZ2lzdGVyTGFuZ0hhbmRsZXIoUFIuY3JlYXRlU2ltcGxlTGV4ZXIoW1sia3dkIiwvXiNbYS16XSsvaSxudWxsLCIjIl1dLFtdKSxbIndpa2kubWV0YSJdKTsKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy14cS5qcyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy14cS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzIzYWUzCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXhxLmpzCkBAIC0wLDAgKzEsMyBAQAorUFIucmVnaXN0ZXJMYW5nSGFuZGxlcihQUi5jcmVhdGVTaW1wbGVMZXhlcihbWyJ2YXIgcGxuIiwvXlwkW1x3LV0rLyxudWxsLCIkIl1dLFtbInBsbiIsL15bXHM9XVs8Pl1bXHM9XS9dLFsibGl0IiwvXkBbXHctXSsvXSxbInRhZyIsL148XC8/W2Etel0oPzpbXHctLjpdKlx3KT98XC8/PiQvaV0sWyJjb20iLC9eXCg6W1xTXHNdKj86XCkvXSxbInBsbiIsL15bKCksLztbXF17fV0kL10sWyJzdHIiLC9eKD86Iig/OlteIlxce118XFxbXFNcc10pKig/OiJ8JCl8Jyg/OlteJ1xce118XFxbXFNcc10pKig/Oid8JCkpLyxudWxsLCJcIiciXSxbImt3ZCIsL14oPzp4cXVlcnl8d2hlcmV8dmVyc2lvbnx2YXJpYWJsZXx1bmlvbnx0eXBlc3dpdGNofHRyZWF0fHRvfHRoZW58dGV4dHxzdGFibGV8c29ydGJ5fHNvbWV8c2VsZnxzY2hlbWF8c2F0aXNmaWVzfHJldHVybnN8cmV0dXJufHJlZnxwcm9jZXNzaW5nLWluc3RydWN0aW9ufHByZWNlZGluZy1zaWJsaW5nfHByZWNlZGluZ3xwcmVjZWRlc3xwYXJlbnR8b25seXxvZnxub2RlfG5hbWVzcGFjZXxtb2R1bGV8bGV0fGl0ZW18aW50ZXJzZWN0fGluc3RhbmNlfGlufGltcG9ydHxpZnxmdW5jdGlvbnxmb3J8Zm9sbG93c3xmb2xsb3dpbmctc2libGluZ3xmb2xsb3dpbmd8ZXh0ZXJuYWx8ZXhjZXB0fGV2ZXJ5fGVsc2V8ZWxlbWVudHxkZXNjZW5kaW5nfGRlc2NlbmRhbnQtb3Itc2VsZnxkZXNjZW5kYW50fGRlZmluZXxkZWZhdWx0fGRlY2xhcmV8Y29tbWVudHxjaGlsZHxjYXN0fGNhc2V8YmVmb3JlfGF0dHJpYnV0ZXxhc3NlcnR8YXNjZW5kaW5nfGFzfGFuY2VzdG9yLW9yLXNlbGZ8YW5jZXN0b3J8YWZ0ZXJ8ZXF8b3JkZXJ8Ynl8b3J8YW5kfHNjaGVtYS1lbGVtZW50fGRvY3VtZW50LW5vZGV8bm9kZXxhdClcYi9dLAorWyJ0eXAiLC9eKD86eHM6eWVhck1vbnRoRHVyYXRpb258eHM6dW5zaWduZWRMb25nfHhzOnRpbWV8eHM6c3RyaW5nfHhzOnNob3J0fHhzOlFOYW1lfHhzOk5hbWV8eHM6bG9uZ3x4czppbnRlZ2VyfHhzOmludHx4czpnWWVhck1vbnRofHhzOmdZZWFyfHhzOmdNb250aERheXx4czpnRGF5fHhzOmZsb2F0fHhzOmR1cmF0aW9ufHhzOmRvdWJsZXx4czpkZWNpbWFsfHhzOmRheVRpbWVEdXJhdGlvbnx4czpkYXRlVGltZXx4czpkYXRlfHhzOmJ5dGV8eHM6Ym9vbGVhbnx4czphbnlVUkl8eGY6eWVhck1vbnRoRHVyYXRpb24pXGIvLG51bGxdLFsiZnVuIHBsbiIsL14oPzp4cDpkZXJlZmVyZW5jZXx4aW5jOm5vZGUtZXhwYW5kfHhpbmM6bGluay1yZWZlcmVuY2VzfHhpbmM6bGluay1leHBhbmR8eGh0bWw6cmVzdHJ1Y3R1cmV8eGh0bWw6Y2xlYW58eGh0bWw6YWRkLWxpc3RzfHhkbXA6emlwLW1hbmlmZXN0fHhkbXA6emlwLWdldHx4ZG1wOnppcC1jcmVhdGV8eGRtcDp4cXVlcnktdmVyc2lvbnx4ZG1wOndvcmQtY29udmVydHx4ZG1wOndpdGgtbmFtZXNwYWNlc3x4ZG1wOnZlcnNpb258eGRtcDp2YWx1ZXx4ZG1wOnVzZXItcm9sZXN8eGRtcDp1c2VyLWxhc3QtbG9naW58eGRtcDp1c2VyfHhkbXA6dXJsLWVuY29kZXx4ZG1wOnVybC1kZWNvZGV8eGRtcDp1cmktaXMtZmlsZXx4ZG1wOnVyaS1mb3JtYXR8eGRtcDp1cmktY29udGVudC10eXBlfHhkbXA6dW5xdW90ZXx4ZG1wOnVucGF0aHx4ZG1wOnRyaWdnZXJzLWRhdGFiYXNlfHhkbXA6dHJhY2V8eGRtcDp0by1qc29ufHhkbXA6dGlkeXx4ZG1wOnN1YmJpbmFyeXx4ZG1wOnN0cmZ0aW1lfHhkbXA6c3Bhd24taW58eGRtcDpzcGF3bnx4ZG1wOnNsZWVwfHhkbXA6c2h1dGRvd258eGRtcDpzZXQtc2Vzc2lvbi1maWVsZHx4ZG1wOnNldC1yZXNwb25zZS1lbmNvZGluZ3x4ZG1wOnNldC1yZXNwb25zZS1jb250ZW50LXR5cGV8eGRtcDpzZXQtcmVzcG9uc2UtY29kZXx4ZG1wOnNldC1yZXF1ZXN0LXRpbWUtbGltaXR8eGRtcDpzZXR8eGRtcDpzZXJ2ZXJzfHhkbXA6c2VydmVyLXN0YXR1c3x4ZG1wOnNlcnZlci1uYW1lfHhkbXA6c2VydmVyfHhkbXA6c2VjdXJpdHktZGF0YWJhc2V8eGRtcDpzZWN1cml0eS1hc3NlcnR8eGRtcDpzY2hlbWEtZGF0YWJhc2V8eGRtcDpzYXZlfHhkbXA6cm9sZS1yb2xlc3x4ZG1wOnJvbGV8eGRtcDpyZXRocm93fHhkbXA6cmVzdGFydHx4ZG1wOnJlcXVlc3QtdGltZXN0YW1wfHhkbXA6cmVxdWVzdC1zdGF0dXN8eGRtcDpyZXF1ZXN0LWNhbmNlbHx4ZG1wOnJlcXVlc3R8eGRtcDpyZWRpcmVjdC1yZXNwb25zZXx4ZG1wOnJhbmRvbXx4ZG1wOnF1b3RlfHhkbXA6cXVlcnktdHJhY2V8eGRtcDpxdWVyeS1tZXRlcnN8eGRtcDpwcm9kdWN0LWVkaXRpb258eGRtcDpwcml2aWxlZ2Utcm9sZXN8eGRtcDpwcml2aWxlZ2V8eGRtcDpwcmV0dHktcHJpbnR8eGRtcDpwb3dlcnBvaW50LWNvbnZlcnR8eGRtcDpwbGF0Zm9ybXx4ZG1wOnBlcm1pc3Npb258eGRtcDpwZGYtY29udmVydHx4ZG1wOnBhdGh8eGRtcDpvY3RhbC10by1pbnRlZ2VyfHhkbXA6bm9kZS11cml8eGRtcDpub2RlLXJlcGxhY2V8eGRtcDpub2RlLWtpbmR8eGRtcDpub2RlLWluc2VydC1jaGlsZHx4ZG1wOm5vZGUtaW5zZXJ0LWJlZm9yZXx4ZG1wOm5vZGUtaW5zZXJ0LWFmdGVyfHhkbXA6bm9kZS1kZWxldGV8eGRtcDpub2RlLWRhdGFiYXNlfHhkbXA6bXVsNjR8eGRtcDptb2R1bGVzLXJvb3R8eGRtcDptb2R1bGVzLWRhdGFiYXNlfHhkbXA6bWVyZ2luZ3x4ZG1wOm1lcmdlLWNhbmNlbHx4ZG1wOm1lcmdlfHhkbXA6bWQ1fHhkbXA6bG9nb3V0fHhkbXA6bG9naW58eGRtcDpsb2ctbGV2ZWx8eGRtcDpsb2d8eGRtcDpsb2NrLXJlbGVhc2V8eGRtcDpsb2NrLWFjcXVpcmV8eGRtcDpsb2FkfHhkbXA6aW52b2tlLWlufHhkbXA6aW52b2tlfHhkbXA6aW50ZWdlci10by1vY3RhbHx4ZG1wOmludGVnZXItdG8taGV4fHhkbXA6aHR0cC1wdXR8eGRtcDpodHRwLXBvc3R8eGRtcDpodHRwLW9wdGlvbnN8eGRtcDpodHRwLWhlYWR8eGRtcDpodHRwLWdldHx4ZG1wOmh0dHAtZGVsZXRlfHhkbXA6aG9zdHN8eGRtcDpob3N0LXN0YXR1c3x4ZG1wOmhvc3QtbmFtZXx4ZG1wOmhvc3R8eGRtcDpoZXgtdG8taW50ZWdlcnx4ZG1wOmhhc2g2NHx4ZG1wOmhhc2gzMnx4ZG1wOmhhcy1wcml2aWxlZ2V8eGRtcDpncm91cHN8eGRtcDpncm91cC1zZXJ2ZXN8eGRtcDpncm91cC1zZXJ2ZXJzfHhkbXA6Z3JvdXAtbmFtZXx4ZG1wOmdyb3VwLWhvc3RzfHhkbXA6Z3JvdXB8eGRtcDpnZXQtc2Vzc2lvbi1maWVsZC1uYW1lc3x4ZG1wOmdldC1zZXNzaW9uLWZpZWxkfHhkbXA6Z2V0LXJlc3BvbnNlLWVuY29kaW5nfHhkbXA6Z2V0LXJlc3BvbnNlLWNvZGV8eGRtcDpnZXQtcmVxdWVzdC11c2VybmFtZXx4ZG1wOmdldC1yZXF1ZXN0LXVzZXJ8eGRtcDpnZXQtcmVxdWVzdC11cmx8eGRtcDpnZXQtcmVxdWVzdC1wcm90b2NvbHx4ZG1wOmdldC1yZXF1ZXN0LXBhdGh8eGRtcDpnZXQtcmVxdWVzdC1tZXRob2R8eGRtcDpnZXQtcmVxdWVzdC1oZWFkZXItbmFtZXN8eGRtcDpnZXQtcmVxdWVzdC1oZWFkZXJ8eGRtcDpnZXQtcmVxdWVzdC1maWVsZC1uYW1lc3x4ZG1wOmdldC1yZXF1ZXN0LWZpZWxkLWZpbGVuYW1lfHhkbXA6Z2V0LXJlcXVlc3QtZmllbGQtY29udGVudC10eXBlfHhkbXA6Z2V0LXJlcXVlc3QtZmllbGR8eGRtcDpnZXQtcmVxdWVzdC1jbGllbnQtY2VydGlmaWNhdGV8eGRtcDpnZXQtcmVxdWVzdC1jbGllbnQtYWRkcmVzc3x4ZG1wOmdldC1yZXF1ZXN0LWJvZHl8eGRtcDpnZXQtY3VycmVudC11c2VyfHhkbXA6Z2V0LWN1cnJlbnQtcm9sZXN8eGRtcDpnZXR8eGRtcDpmdW5jdGlvbi1uYW1lfHhkbXA6ZnVuY3Rpb24tbW9kdWxlfHhkbXA6ZnVuY3Rpb258eGRtcDpmcm9tLWpzb258eGRtcDpmb3Jlc3RzfHhkbXA6Zm9yZXN0LXN0YXR1c3x4ZG1wOmZvcmVzdC1yZXN0b3JlfHhkbXA6Zm9yZXN0LXJlc3RhcnR8eGRtcDpmb3Jlc3QtbmFtZXx4ZG1wOmZvcmVzdC1kZWxldGV8eGRtcDpmb3Jlc3QtZGF0YWJhc2VzfHhkbXA6Zm9yZXN0LWNvdW50c3x4ZG1wOmZvcmVzdC1jbGVhcnx4ZG1wOmZvcmVzdC1iYWNrdXB8eGRtcDpmb3Jlc3R8eGRtcDpmaWxlc3lzdGVtLWZpbGV8eGRtcDpmaWxlc3lzdGVtLWRpcmVjdG9yeXx4ZG1wOmV4aXN0c3x4ZG1wOmV4Y2VsLWNvbnZlcnR8eGRtcDpldmFsLWlufHhkbXA6ZXZhbHx4ZG1wOmVzdGltYXRlfHhkbXA6ZW1haWx8eGRtcDplbGVtZW50LWNvbnRlbnQtdHlwZXx4ZG1wOmVsYXBzZWQtdGltZXx4ZG1wOmRvY3VtZW50LXNldC1xdWFsaXR5fHhkbXA6ZG9jdW1lbnQtc2V0LXByb3BlcnR5fHhkbXA6ZG9jdW1lbnQtc2V0LXByb3BlcnRpZXN8eGRtcDpkb2N1bWVudC1zZXQtcGVybWlzc2lvbnN8eGRtcDpkb2N1bWVudC1zZXQtY29sbGVjdGlvbnN8eGRtcDpkb2N1bWVudC1yZW1vdmUtcHJvcGVydGllc3x4ZG1wOmRvY3VtZW50LXJlbW92ZS1wZXJtaXNzaW9uc3x4ZG1wOmRvY3VtZW50LXJlbW92ZS1jb2xsZWN0aW9uc3x4ZG1wOmRvY3VtZW50LXByb3BlcnRpZXN8eGRtcDpkb2N1bWVudC1sb2Nrc3x4ZG1wOmRvY3VtZW50LWxvYWR8eGRtcDpkb2N1bWVudC1pbnNlcnR8eGRtcDpkb2N1bWVudC1nZXQtcXVhbGl0eXx4ZG1wOmRvY3VtZW50LWdldC1wcm9wZXJ0aWVzfHhkbXA6ZG9jdW1lbnQtZ2V0LXBlcm1pc3Npb25zfHhkbXA6ZG9jdW1lbnQtZ2V0LWNvbGxlY3Rpb25zfHhkbXA6ZG9jdW1lbnQtZ2V0fHhkbXA6ZG9jdW1lbnQtZm9yZXN0fHhkbXA6ZG9jdW1lbnQtZGVsZXRlfHhkbXA6ZG9jdW1lbnQtYWRkLXByb3BlcnRpZXN8eGRtcDpkb2N1bWVudC1hZGQtcGVybWlzc2lvbnN8eGRtcDpkb2N1bWVudC1hZGQtY29sbGVjdGlvbnN8eGRtcDpkaXJlY3RvcnktcHJvcGVydGllc3x4ZG1wOmRpcmVjdG9yeS1sb2Nrc3x4ZG1wOmRpcmVjdG9yeS1kZWxldGV8eGRtcDpkaXJlY3RvcnktY3JlYXRlfHhkbXA6ZGlyZWN0b3J5fHhkbXA6ZGlhY3JpdGljLWxlc3N8eGRtcDpkZXNjcmliZXx4ZG1wOmRlZmF1bHQtcGVybWlzc2lvbnN8eGRtcDpkZWZhdWx0LWNvbGxlY3Rpb25zfHhkbXA6ZGF0YWJhc2VzfHhkbXA6ZGF0YWJhc2UtcmVzdG9yZS12YWxpZGF0ZXx4ZG1wOmRhdGFiYXNlLXJlc3RvcmUtc3RhdHVzfHhkbXA6ZGF0YWJhc2UtcmVzdG9yZS1jYW5jZWx8eGRtcDpkYXRhYmFzZS1yZXN0b3JlfHhkbXA6ZGF0YWJhc2UtbmFtZXx4ZG1wOmRhdGFiYXNlLWZvcmVzdHN8eGRtcDpkYXRhYmFzZS1iYWNrdXAtdmFsaWRhdGV8eGRtcDpkYXRhYmFzZS1iYWNrdXAtc3RhdHVzfHhkbXA6ZGF0YWJhc2UtYmFja3VwLXB1cmdlfHhkbXA6ZGF0YWJhc2UtYmFja3VwLWNhbmNlbHx4ZG1wOmRhdGFiYXNlLWJhY2t1cHx4ZG1wOmRhdGFiYXNlfHhkbXA6Y29sbGVjdGlvbi1wcm9wZXJ0aWVzfHhkbXA6Y29sbGVjdGlvbi1sb2Nrc3x4ZG1wOmNvbGxlY3Rpb24tZGVsZXRlfHhkbXA6Y29sbGF0aW9uLWNhbm9uaWNhbC11cml8eGRtcDpjYXN0YWJsZS1hc3x4ZG1wOmNhbi1ncmFudC1yb2xlc3x4ZG1wOmJhc2U2NC1lbmNvZGV8eGRtcDpiYXNlNjQtZGVjb2RlfHhkbXA6YXJjaGl0ZWN0dXJlfHhkbXA6YXBwbHl8eGRtcDphbXAtcm9sZXN8eGRtcDphbXB8eGRtcDphZGQ2NHx4ZG1wOmFkZC1yZXNwb25zZS1oZWFkZXJ8eGRtcDphY2Nlc3N8dHJncjp0cmlnZ2VyLXNldC1yZWN1cnNpdmV8dHJncjp0cmlnZ2VyLXNldC1wZXJtaXNzaW9uc3x0cmdyOnRyaWdnZXItc2V0LW5hbWV8dHJncjp0cmlnZ2VyLXNldC1tb2R1bGV8dHJncjp0cmlnZ2VyLXNldC1ldmVudHx0cmdyOnRyaWdnZXItc2V0LWRlc2NyaXB0aW9ufHRyZ3I6dHJpZ2dlci1yZW1vdmUtcGVybWlzc2lvbnN8dHJncjp0cmlnZ2VyLW1vZHVsZXx0cmdyOnRyaWdnZXItZ2V0LXBlcm1pc3Npb25zfHRyZ3I6dHJpZ2dlci1lbmFibGV8dHJncjp0cmlnZ2VyLWRpc2FibGV8dHJncjp0cmlnZ2VyLWRhdGFiYXNlLW9ubGluZS1ldmVudHx0cmdyOnRyaWdnZXItZGF0YS1ldmVudHx0cmdyOnRyaWdnZXItYWRkLXBlcm1pc3Npb25zfHRyZ3I6cmVtb3ZlLXRyaWdnZXJ8dHJncjpwcm9wZXJ0eS1jb250ZW50fHRyZ3I6cHJlLWNvbW1pdHx0cmdyOnBvc3QtY29tbWl0fHRyZ3I6Z2V0LXRyaWdnZXItYnktaWR8dHJncjpnZXQtdHJpZ2dlcnx0cmdyOmRvY3VtZW50LXNjb3BlfHRyZ3I6ZG9jdW1lbnQtY29udGVudHx0cmdyOmRpcmVjdG9yeS1zY29wZXx0cmdyOmNyZWF0ZS10cmlnZ2VyfHRyZ3I6Y29sbGVjdGlvbi1zY29wZXx0cmdyOmFueS1wcm9wZXJ0eS1jb250ZW50fHRoc3I6c2V0LWVudHJ5fHRoc3I6cmVtb3ZlLXRlcm18dGhzcjpyZW1vdmUtc3lub255bXx0aHNyOnJlbW92ZS1lbnRyeXx0aHNyOnF1ZXJ5LWxvb2t1cHx0aHNyOmxvb2t1cHx0aHNyOmxvYWR8dGhzcjppbnNlcnR8dGhzcjpleHBhbmR8dGhzcjphZGQtc3lub255bXxzcGVsbDpzdWdnZXN0LWRldGFpbGVkfHNwZWxsOnN1Z2dlc3R8c3BlbGw6cmVtb3ZlLXdvcmR8c3BlbGw6bWFrZS1kaWN0aW9uYXJ5fHNwZWxsOmxvYWR8c3BlbGw6bGV2ZW5zaHRlaW4tZGlzdGFuY2V8c3BlbGw6aXMtY29ycmVjdHxzcGVsbDppbnNlcnR8c3BlbGw6ZG91YmxlLW1ldGFwaG9uZXxzcGVsbDphZGQtd29yZHxzZWM6dXNlcnMtY29sbGVjdGlvbnxzZWM6dXNlci1zZXQtcm9sZXN8c2VjOnVzZXItc2V0LXBhc3N3b3JkfHNlYzp1c2VyLXNldC1uYW1lfHNlYzp1c2VyLXNldC1kZXNjcmlwdGlvbnxzZWM6dXNlci1zZXQtZGVmYXVsdC1wZXJtaXNzaW9uc3xzZWM6dXNlci1zZXQtZGVmYXVsdC1jb2xsZWN0aW9uc3xzZWM6dXNlci1yZW1vdmUtcm9sZXN8c2VjOnVzZXItcHJpdmlsZWdlc3xzZWM6dXNlci1nZXQtcm9sZXN8c2VjOnVzZXItZ2V0LWRlc2NyaXB0aW9ufHNlYzp1c2VyLWdldC1kZWZhdWx0LXBlcm1pc3Npb25zfHNlYzp1c2VyLWdldC1kZWZhdWx0LWNvbGxlY3Rpb25zfHNlYzp1c2VyLWRvYy1wZXJtaXNzaW9uc3xzZWM6dXNlci1kb2MtY29sbGVjdGlvbnN8c2VjOnVzZXItYWRkLXJvbGVzfHNlYzp1bnByb3RlY3QtY29sbGVjdGlvbnxzZWM6dWlkLWZvci1uYW1lfHNlYzpzZXQtcmVhbG18c2VjOnNlY3VyaXR5LXZlcnNpb258c2VjOnNlY3VyaXR5LW5hbWVzcGFjZXxzZWM6c2VjdXJpdHktaW5zdGFsbGVkfHNlYzpzZWN1cml0eS1jb2xsZWN0aW9ufHNlYzpyb2xlcy1jb2xsZWN0aW9ufHNlYzpyb2xlLXNldC1yb2xlc3xzZWM6cm9sZS1zZXQtbmFtZXxzZWM6cm9sZS1zZXQtZGVzY3JpcHRpb258c2VjOnJvbGUtc2V0LWRlZmF1bHQtcGVybWlzc2lvbnN8c2VjOnJvbGUtc2V0LWRlZmF1bHQtY29sbGVjdGlvbnN8c2VjOnJvbGUtcmVtb3ZlLXJvbGVzfHNlYzpyb2xlLXByaXZpbGVnZXN8c2VjOnJvbGUtZ2V0LXJvbGVzfHNlYzpyb2xlLWdldC1kZXNjcmlwdGlvbnxzZWM6cm9sZS1nZXQtZGVmYXVsdC1wZXJtaXNzaW9uc3xzZWM6cm9sZS1nZXQtZGVmYXVsdC1jb2xsZWN0aW9uc3xzZWM6cm9sZS1kb2MtcGVybWlzc2lvbnN8c2VjOnJvbGUtZG9jLWNvbGxlY3Rpb25zfHNlYzpyb2xlLWFkZC1yb2xlc3xzZWM6cmVtb3ZlLXVzZXJ8c2VjOnJlbW92ZS1yb2xlLWZyb20tdXNlcnN8c2VjOnJlbW92ZS1yb2xlLWZyb20tcm9sZXxzZWM6cmVtb3ZlLXJvbGUtZnJvbS1wcml2aWxlZ2VzfHNlYzpyZW1vdmUtcm9sZS1mcm9tLWFtcHN8c2VjOnJlbW92ZS1yb2xlfHNlYzpyZW1vdmUtcHJpdmlsZWdlfHNlYzpyZW1vdmUtYW1wfHNlYzpwcm90ZWN0LWNvbGxlY3Rpb258c2VjOnByaXZpbGVnZXMtY29sbGVjdGlvbnxzZWM6cHJpdmlsZWdlLXNldC1yb2xlc3xzZWM6cHJpdmlsZWdlLXNldC1uYW1lfHNlYzpwcml2aWxlZ2UtcmVtb3ZlLXJvbGVzfHNlYzpwcml2aWxlZ2UtZ2V0LXJvbGVzfHNlYzpwcml2aWxlZ2UtYWRkLXJvbGVzfHNlYzpwcml2LWRvYy1wZXJtaXNzaW9uc3xzZWM6cHJpdi1kb2MtY29sbGVjdGlvbnN8c2VjOmdldC11c2VyLW5hbWVzfHNlYzpnZXQtdW5pcXVlLWVsZW0taWR8c2VjOmdldC1yb2xlLW5hbWVzfHNlYzpnZXQtcm9sZS1pZHN8c2VjOmdldC1wcml2aWxlZ2V8c2VjOmdldC1kaXN0aW5jdC1wZXJtaXNzaW9uc3xzZWM6Z2V0LWNvbGxlY3Rpb258c2VjOmdldC1hbXB8c2VjOmNyZWF0ZS11c2VyLXdpdGgtcm9sZXxzZWM6Y3JlYXRlLXVzZXJ8c2VjOmNyZWF0ZS1yb2xlfHNlYzpjcmVhdGUtcHJpdmlsZWdlfHNlYzpjcmVhdGUtYW1wfHNlYzpjb2xsZWN0aW9ucy1jb2xsZWN0aW9ufHNlYzpjb2xsZWN0aW9uLXNldC1wZXJtaXNzaW9uc3xzZWM6Y29sbGVjdGlvbi1yZW1vdmUtcGVybWlzc2lvbnN8c2VjOmNvbGxlY3Rpb24tZ2V0LXBlcm1pc3Npb25zfHNlYzpjb2xsZWN0aW9uLWFkZC1wZXJtaXNzaW9uc3xzZWM6Y2hlY2stYWRtaW58c2VjOmFtcHMtY29sbGVjdGlvbnxzZWM6YW1wLXNldC1yb2xlc3xzZWM6YW1wLXJlbW92ZS1yb2xlc3xzZWM6YW1wLWdldC1yb2xlc3xzZWM6YW1wLWRvYy1wZXJtaXNzaW9uc3xzZWM6YW1wLWRvYy1jb2xsZWN0aW9uc3xzZWM6YW1wLWFkZC1yb2xlc3xzZWFyY2g6dW5wYXJzZXxzZWFyY2g6c3VnZ2VzdHxzZWFyY2g6c25pcHBldHxzZWFyY2g6c2VhcmNofHNlYXJjaDpyZXNvbHZlLW5vZGVzfHNlYXJjaDpyZXNvbHZlfHNlYXJjaDpyZW1vdmUtY29uc3RyYWludHxzZWFyY2g6cGFyc2V8c2VhcmNoOmdldC1kZWZhdWx0LW9wdGlvbnN8c2VhcmNoOmVzdGltYXRlfHNlYXJjaDpjaGVjay1vcHRpb25zfHByb2Y6dmFsdWV8cHJvZjpyZXNldHxwcm9mOnJlcG9ydHxwcm9mOmludm9rZXxwcm9mOmV2YWx8cHJvZjplbmFibGV8cHJvZjpkaXNhYmxlfHByb2Y6YWxsb3dlZHxwcHQ6Y2xlYW58cGtpOnRlbXBsYXRlLXNldC1yZXF1ZXN0fHBraTp0ZW1wbGF0ZS1zZXQtbmFtZXxwa2k6dGVtcGxhdGUtc2V0LWtleS10eXBlfHBraTp0ZW1wbGF0ZS1zZXQta2V5LW9wdGlvbnN8cGtpOnRlbXBsYXRlLXNldC1kZXNjcmlwdGlvbnxwa2k6dGVtcGxhdGUtaW4tdXNlfHBraTp0ZW1wbGF0ZS1nZXQtdmVyc2lvbnxwa2k6dGVtcGxhdGUtZ2V0LXJlcXVlc3R8cGtpOnRlbXBsYXRlLWdldC1uYW1lfHBraTp0ZW1wbGF0ZS1nZXQta2V5LXR5cGV8cGtpOnRlbXBsYXRlLWdldC1rZXktb3B0aW9uc3xwa2k6dGVtcGxhdGUtZ2V0LWlkfHBraTp0ZW1wbGF0ZS1nZXQtZGVzY3JpcHRpb258cGtpOm5lZWQtY2VydGlmaWNhdGV8cGtpOmlzLXRlbXBvcmFyeXxwa2k6aW5zZXJ0LXRydXN0ZWQtY2VydGlmaWNhdGVzfHBraTppbnNlcnQtdGVtcGxhdGV8cGtpOmluc2VydC1zaWduZWQtY2VydGlmaWNhdGVzfHBraTppbnNlcnQtY2VydGlmaWNhdGUtcmV2b2NhdGlvbi1saXN0fHBraTpnZXQtdHJ1c3RlZC1jZXJ0aWZpY2F0ZS1pZHN8cGtpOmdldC10ZW1wbGF0ZS1pZHN8cGtpOmdldC10ZW1wbGF0ZS1jZXJ0aWZpY2F0ZS1hdXRob3JpdHl8cGtpOmdldC10ZW1wbGF0ZS1ieS1uYW1lfHBraTpnZXQtdGVtcGxhdGV8cGtpOmdldC1wZW5kaW5nLWNlcnRpZmljYXRlLXJlcXVlc3RzLXhtbHxwa2k6Z2V0LXBlbmRpbmctY2VydGlmaWNhdGUtcmVxdWVzdHMtcGVtfHBraTpnZXQtcGVuZGluZy1jZXJ0aWZpY2F0ZS1yZXF1ZXN0fHBraTpnZXQtY2VydGlmaWNhdGVzLWZvci10ZW1wbGF0ZS14bWx8cGtpOmdldC1jZXJ0aWZpY2F0ZXMtZm9yLXRlbXBsYXRlfHBraTpnZXQtY2VydGlmaWNhdGVzfHBraTpnZXQtY2VydGlmaWNhdGUteG1sfHBraTpnZXQtY2VydGlmaWNhdGUtcGVtfHBraTpnZXQtY2VydGlmaWNhdGV8cGtpOmdlbmVyYXRlLXRlbXBvcmFyeS1jZXJ0aWZpY2F0ZS1pZi1uZWNlc3Nhcnl8cGtpOmdlbmVyYXRlLXRlbXBvcmFyeS1jZXJ0aWZpY2F0ZXxwa2k6Z2VuZXJhdGUtdGVtcGxhdGUtY2VydGlmaWNhdGUtYXV0aG9yaXR5fHBraTpnZW5lcmF0ZS1jZXJ0aWZpY2F0ZS1yZXF1ZXN0fHBraTpkZWxldGUtdGVtcGxhdGV8cGtpOmRlbGV0ZS1jZXJ0aWZpY2F0ZXxwa2k6Y3JlYXRlLXRlbXBsYXRlfHBkZjptYWtlLXRvY3xwZGY6aW5zZXJ0LXRvYy1oZWFkZXJzfHBkZjpnZXQtdG9jfHBkZjpjbGVhbnxwOnN0YXR1cy10cmFuc2l0aW9ufHA6c3RhdGUtdHJhbnNpdGlvbnxwOnJlbW92ZXxwOnBpcGVsaW5lc3xwOmluc2VydHxwOmdldC1ieS1pZHxwOmdldHxwOmV4ZWN1dGV8cDpjcmVhdGV8cDpjb25kaXRpb258cDpjb2xsZWN0aW9ufHA6YWN0aW9ufG9veG1sOnJ1bnMtbWVyZ2V8b294bWw6cGFja2FnZS11cmlzfG9veG1sOnBhY2thZ2UtcGFydHMtaW5zZXJ0fG9veG1sOnBhY2thZ2UtcGFydHN8bXN3b3JkOmNsZWFufG1jZ206cG9seWdvbnxtY2dtOnBvaW50fG1jZ206Z2Vvc3BhdGlhbC1xdWVyeS1mcm9tLWVsZW1lbnRzfG1jZ206Z2Vvc3BhdGlhbC1xdWVyeXxtY2dtOmNpcmNsZXxtYXRoOnRhbmh8bWF0aDp0YW58bWF0aDpzcXJ0fG1hdGg6c2luaHxtYXRoOnNpbnxtYXRoOnBvd3xtYXRoOm1vZGZ8bWF0aDpsb2cxMHxtYXRoOmxvZ3xtYXRoOmxkZXhwfG1hdGg6ZnJleHB8bWF0aDpmbW9kfG1hdGg6Zmxvb3J8bWF0aDpmYWJzfG1hdGg6ZXhwfG1hdGg6Y29zaHxtYXRoOmNvc3xtYXRoOmNlaWx8bWF0aDphdGFuMnxtYXRoOmF0YW58bWF0aDphc2lufG1hdGg6YWNvc3xtYXA6cHV0fG1hcDptYXB8bWFwOmtleXN8bWFwOmdldHxtYXA6ZGVsZXRlfG1hcDpjb3VudHxtYXA6Y2xlYXJ8bG5rOnRvfGxuazpyZW1vdmV8bG5rOmluc2VydHxsbms6Z2V0fGxuazpmcm9tfGxuazpjcmVhdGV8a21sOnBvbHlnb258a21sOnBvaW50fGttbDppbnRlcmlvci1wb2x5Z29ufGttbDpnZW9zcGF0aWFsLXF1ZXJ5LWZyb20tZWxlbWVudHN8a21sOmdlb3NwYXRpYWwtcXVlcnl8a21sOmNpcmNsZXxrbWw6Ym94fGdtbDpwb2x5Z29ufGdtbDpwb2ludHxnbWw6aW50ZXJpb3ItcG9seWdvbnxnbWw6Z2Vvc3BhdGlhbC1xdWVyeS1mcm9tLWVsZW1lbnRzfGdtbDpnZW9zcGF0aWFsLXF1ZXJ5fGdtbDpjaXJjbGV8Z21sOmJveHxnZW9yc3M6cG9pbnR8Z2VvcnNzOmdlb3NwYXRpYWwtcXVlcnl8Z2VvcnNzOmNpcmNsZXxnZW86cG9seWdvbnxnZW86cG9pbnR8Z2VvOmludGVyaW9yLXBvbHlnb258Z2VvOmdlb3NwYXRpYWwtcXVlcnktZnJvbS1lbGVtZW50c3xnZW86Z2Vvc3BhdGlhbC1xdWVyeXxnZW86Y2lyY2xlfGdlbzpib3h8Zm46emVyby1vci1vbmV8Zm46eWVhcnMtZnJvbS1kdXJhdGlvbnxmbjp5ZWFyLWZyb20tZGF0ZVRpbWV8Zm46eWVhci1mcm9tLWRhdGV8Zm46dXBwZXItY2FzZXxmbjp1bm9yZGVyZWR8Zm46dHJ1ZXxmbjp0cmFuc2xhdGV8Zm46dHJhY2V8Zm46dG9rZW5pemV8Zm46dGltZXpvbmUtZnJvbS10aW1lfGZuOnRpbWV6b25lLWZyb20tZGF0ZVRpbWV8Zm46dGltZXpvbmUtZnJvbS1kYXRlfGZuOnN1bXxmbjpzdWJ0cmFjdC1kYXRlVGltZXMteWllbGRpbmcteWVhck1vbnRoRHVyYXRpb258Zm46c3VidHJhY3QtZGF0ZVRpbWVzLXlpZWxkaW5nLWRheVRpbWVEdXJhdGlvbnxmbjpzdWJzdHJpbmctYmVmb3JlfGZuOnN1YnN0cmluZy1hZnRlcnxmbjpzdWJzdHJpbmd8Zm46c3Vic2VxdWVuY2V8Zm46c3RyaW5nLXRvLWNvZGVwb2ludHN8Zm46c3RyaW5nLXBhZHxmbjpzdHJpbmctbGVuZ3RofGZuOnN0cmluZy1qb2lufGZuOnN0cmluZ3xmbjpzdGF0aWMtYmFzZS11cml8Zm46c3RhcnRzLXdpdGh8Zm46c2Vjb25kcy1mcm9tLXRpbWV8Zm46c2Vjb25kcy1mcm9tLWR1cmF0aW9ufGZuOnNlY29uZHMtZnJvbS1kYXRlVGltZXxmbjpyb3VuZC1oYWxmLXRvLWV2ZW58Zm46cm91bmR8Zm46cm9vdHxmbjpyZXZlcnNlfGZuOnJlc29sdmUtdXJpfGZuOnJlc29sdmUtUU5hbWV8Zm46cmVwbGFjZXxmbjpyZW1vdmV8Zm46UU5hbWV8Zm46cHJlZml4LWZyb20tUU5hbWV8Zm46cG9zaXRpb258Zm46b25lLW9yLW1vcmV8Zm46bnVtYmVyfGZuOm5vdHxmbjpub3JtYWxpemUtdW5pY29kZXxmbjpub3JtYWxpemUtc3BhY2V8Zm46bm9kZS1uYW1lfGZuOm5vZGUta2luZHxmbjpuaWxsZWR8Zm46bmFtZXNwYWNlLXVyaS1mcm9tLVFOYW1lfGZuOm5hbWVzcGFjZS11cmktZm9yLXByZWZpeHxmbjpuYW1lc3BhY2UtdXJpfGZuOm5hbWV8Zm46bW9udGhzLWZyb20tZHVyYXRpb258Zm46bW9udGgtZnJvbS1kYXRlVGltZXxmbjptb250aC1mcm9tLWRhdGV8Zm46bWludXRlcy1mcm9tLXRpbWV8Zm46bWludXRlcy1mcm9tLWR1cmF0aW9ufGZuOm1pbnV0ZXMtZnJvbS1kYXRlVGltZXxmbjptaW58Zm46bWF4fGZuOm1hdGNoZXN8Zm46bG93ZXItY2FzZXxmbjpsb2NhbC1uYW1lLWZyb20tUU5hbWV8Zm46bG9jYWwtbmFtZXxmbjpsYXN0fGZuOmxhbmd8Zm46aXJpLXRvLXVyaXxmbjppbnNlcnQtYmVmb3JlfGZuOmluZGV4LW9mfGZuOmluLXNjb3BlLXByZWZpeGVzfGZuOmltcGxpY2l0LXRpbWV6b25lfGZuOmlkcmVmfGZuOmlkfGZuOmhvdXJzLWZyb20tdGltZXxmbjpob3Vycy1mcm9tLWR1cmF0aW9ufGZuOmhvdXJzLWZyb20tZGF0ZVRpbWV8Zm46Zmxvb3J8Zm46ZmFsc2V8Zm46ZXhwYW5kZWQtUU5hbWV8Zm46ZXhpc3RzfGZuOmV4YWN0bHktb25lfGZuOmVzY2FwZS11cml8Zm46ZXNjYXBlLWh0bWwtdXJpfGZuOmVycm9yfGZuOmVuZHMtd2l0aHxmbjplbmNvZGUtZm9yLXVyaXxmbjplbXB0eXxmbjpkb2N1bWVudC11cml8Zm46ZG9jLWF2YWlsYWJsZXxmbjpkb2N8Zm46ZGlzdGluY3QtdmFsdWVzfGZuOmRpc3RpbmN0LW5vZGVzfGZuOmRlZmF1bHQtY29sbGF0aW9ufGZuOmRlZXAtZXF1YWx8Zm46ZGF5cy1mcm9tLWR1cmF0aW9ufGZuOmRheS1mcm9tLWRhdGVUaW1lfGZuOmRheS1mcm9tLWRhdGV8Zm46ZGF0YXxmbjpjdXJyZW50LXRpbWV8Zm46Y3VycmVudC1kYXRlVGltZXxmbjpjdXJyZW50LWRhdGV8Zm46Y291bnR8Zm46Y29udGFpbnN8Zm46Y29uY2F0fGZuOmNvbXBhcmV8Zm46Y29sbGVjdGlvbnxmbjpjb2RlcG9pbnRzLXRvLXN0cmluZ3xmbjpjb2RlcG9pbnQtZXF1YWx8Zm46Y2VpbGluZ3xmbjpib29sZWFufGZuOmJhc2UtdXJpfGZuOmF2Z3xmbjphZGp1c3QtdGltZS10by10aW1lem9uZXxmbjphZGp1c3QtZGF0ZVRpbWUtdG8tdGltZXpvbmV8Zm46YWRqdXN0LWRhdGUtdG8tdGltZXpvbmV8Zm46YWJzfGZlZWQ6dW5zdWJzY3JpYmV8ZmVlZDpzdWJzY3JpcHRpb258ZmVlZDpzdWJzY3JpYmV8ZmVlZDpyZXF1ZXN0fGZlZWQ6aXRlbXxmZWVkOmRlc2NyaXB0aW9ufGV4Y2VsOmNsZWFufGVudGl0eTplbnJpY2h8ZG9tOnNldC1waXBlbGluZXN8ZG9tOnNldC1wZXJtaXNzaW9uc3xkb206c2V0LW5hbWV8ZG9tOnNldC1ldmFsdWF0aW9uLWNvbnRleHR8ZG9tOnNldC1kb21haW4tc2NvcGV8ZG9tOnNldC1kZXNjcmlwdGlvbnxkb206cmVtb3ZlLXBpcGVsaW5lfGRvbTpyZW1vdmUtcGVybWlzc2lvbnN8ZG9tOnJlbW92ZXxkb206Z2V0fGRvbTpldmFsdWF0aW9uLWNvbnRleHR8ZG9tOmRvbWFpbnN8ZG9tOmRvbWFpbi1zY29wZXxkb206Y3JlYXRlfGRvbTpjb25maWd1cmF0aW9uLXNldC1yZXN0YXJ0LXVzZXJ8ZG9tOmNvbmZpZ3VyYXRpb24tc2V0LXBlcm1pc3Npb25zfGRvbTpjb25maWd1cmF0aW9uLXNldC1ldmFsdWF0aW9uLWNvbnRleHR8ZG9tOmNvbmZpZ3VyYXRpb24tc2V0LWRlZmF1bHQtZG9tYWlufGRvbTpjb25maWd1cmF0aW9uLWdldHxkb206Y29uZmlndXJhdGlvbi1jcmVhdGV8ZG9tOmNvbGxlY3Rpb258ZG9tOmFkZC1waXBlbGluZXxkb206YWRkLXBlcm1pc3Npb25zfGRsczpyZXRlbnRpb24tcnVsZXN8ZGxzOnJldGVudGlvbi1ydWxlLXJlbW92ZXxkbHM6cmV0ZW50aW9uLXJ1bGUtaW5zZXJ0fGRsczpyZXRlbnRpb24tcnVsZXxkbHM6cHVyZ2V8ZGxzOm5vZGUtZXhwYW5kfGRsczpsaW5rLXJlZmVyZW5jZXN8ZGxzOmxpbmstZXhwYW5kfGRsczpkb2N1bWVudHMtcXVlcnl8ZGxzOmRvY3VtZW50LXZlcnNpb25zLXF1ZXJ5fGRsczpkb2N1bWVudC12ZXJzaW9uLXVyaXxkbHM6ZG9jdW1lbnQtdmVyc2lvbi1xdWVyeXxkbHM6ZG9jdW1lbnQtdmVyc2lvbi1kZWxldGV8ZGxzOmRvY3VtZW50LXZlcnNpb24tYXMtb2Z8ZGxzOmRvY3VtZW50LXZlcnNpb258ZGxzOmRvY3VtZW50LXVwZGF0ZXxkbHM6ZG9jdW1lbnQtdW5tYW5hZ2V8ZGxzOmRvY3VtZW50LXNldC1xdWFsaXR5fGRsczpkb2N1bWVudC1zZXQtcHJvcGVydHl8ZGxzOmRvY3VtZW50LXNldC1wcm9wZXJ0aWVzfGRsczpkb2N1bWVudC1zZXQtcGVybWlzc2lvbnN8ZGxzOmRvY3VtZW50LXNldC1jb2xsZWN0aW9uc3xkbHM6ZG9jdW1lbnQtcmV0ZW50aW9uLXJ1bGVzfGRsczpkb2N1bWVudC1yZW1vdmUtcHJvcGVydGllc3xkbHM6ZG9jdW1lbnQtcmVtb3ZlLXBlcm1pc3Npb25zfGRsczpkb2N1bWVudC1yZW1vdmUtY29sbGVjdGlvbnN8ZGxzOmRvY3VtZW50LXB1cmdlfGRsczpkb2N1bWVudC1tYW5hZ2V8ZGxzOmRvY3VtZW50LWlzLW1hbmFnZWR8ZGxzOmRvY3VtZW50LWluc2VydC1hbmQtbWFuYWdlfGRsczpkb2N1bWVudC1pbmNsdWRlLXF1ZXJ5fGRsczpkb2N1bWVudC1oaXN0b3J5fGRsczpkb2N1bWVudC1nZXQtcGVybWlzc2lvbnN8ZGxzOmRvY3VtZW50LWV4dHJhY3QtcGFydHxkbHM6ZG9jdW1lbnQtZGVsZXRlfGRsczpkb2N1bWVudC1jaGVja291dC1zdGF0dXN8ZGxzOmRvY3VtZW50LWNoZWNrb3V0fGRsczpkb2N1bWVudC1jaGVja2lufGRsczpkb2N1bWVudC1hZGQtcHJvcGVydGllc3xkbHM6ZG9jdW1lbnQtYWRkLXBlcm1pc3Npb25zfGRsczpkb2N1bWVudC1hZGQtY29sbGVjdGlvbnN8ZGxzOmJyZWFrLWNoZWNrb3V0fGRsczphdXRob3ItcXVlcnl8ZGxzOmFzLW9mLXF1ZXJ5fGRiazpjb252ZXJ0fGRiZzp3YWl0fGRiZzp2YWx1ZXxkYmc6c3RvcHBlZHxkYmc6c3RvcHxkYmc6c3RlcHxkYmc6c3RhdHVzfGRiZzpzdGFja3xkYmc6b3V0fGRiZzpuZXh0fGRiZzpsaW5lfGRiZzppbnZva2V8ZGJnOmZ1bmN0aW9ufGRiZzpmaW5pc2h8ZGJnOmV4cHJ8ZGJnOmV2YWx8ZGJnOmRpc2Nvbm5lY3R8ZGJnOmRldGFjaHxkYmc6Y29udGludWV8ZGJnOmNvbm5lY3R8ZGJnOmNsZWFyfGRiZzpicmVha3BvaW50c3xkYmc6YnJlYWt8ZGJnOmF0dGFjaGVkfGRiZzphdHRhY2h8Y3Z0OnNhdmUtY29udmVydGVkLWRvY3VtZW50c3xjdnQ6cGFydC11cml8Y3Z0OmRlc3RpbmF0aW9uLXVyaXxjdnQ6YmFzZXBhdGh8Y3Z0OmJhc2VuYW1lfGN0czp3b3Jkc3xjdHM6d29yZC1xdWVyeS13ZWlnaHR8Y3RzOndvcmQtcXVlcnktdGV4dHxjdHM6d29yZC1xdWVyeS1vcHRpb25zfGN0czp3b3JkLXF1ZXJ5fGN0czp3b3JkLW1hdGNofGN0czp3YWxrfGN0czp1cmlzfGN0czp1cmktbWF0Y2h8Y3RzOnRyYWlufGN0czp0b2tlbml6ZXxjdHM6dGhyZXNob2xkc3xjdHM6c3RlbXxjdHM6c2ltaWxhci1xdWVyeS13ZWlnaHR8Y3RzOnNpbWlsYXItcXVlcnktbm9kZXN8Y3RzOnNpbWlsYXItcXVlcnl8Y3RzOnNob3J0ZXN0LWRpc3RhbmNlfGN0czpzZWFyY2h8Y3RzOnNjb3JlfGN0czpyZXZlcnNlLXF1ZXJ5LXdlaWdodHxjdHM6cmV2ZXJzZS1xdWVyeS1ub2Rlc3xjdHM6cmV2ZXJzZS1xdWVyeXxjdHM6cmVtYWluZGVyfGN0czpyZWdpc3RlcmVkLXF1ZXJ5LXdlaWdodHxjdHM6cmVnaXN0ZXJlZC1xdWVyeS1vcHRpb25zfGN0czpyZWdpc3RlcmVkLXF1ZXJ5LWlkc3xjdHM6cmVnaXN0ZXJlZC1xdWVyeXxjdHM6cmVnaXN0ZXJ8Y3RzOnF1ZXJ5fGN0czpxdWFsaXR5fGN0czpwcm9wZXJ0aWVzLXF1ZXJ5LXF1ZXJ5fGN0czpwcm9wZXJ0aWVzLXF1ZXJ5fGN0czpwb2x5Z29uLXZlcnRpY2VzfGN0czpwb2x5Z29ufGN0czpwb2ludC1sb25naXR1ZGV8Y3RzOnBvaW50LWxhdGl0dWRlfGN0czpwb2ludHxjdHM6b3ItcXVlcnktcXVlcmllc3xjdHM6b3ItcXVlcnl8Y3RzOm5vdC1xdWVyeS13ZWlnaHR8Y3RzOm5vdC1xdWVyeS1xdWVyeXxjdHM6bm90LXF1ZXJ5fGN0czpuZWFyLXF1ZXJ5LXdlaWdodHxjdHM6bmVhci1xdWVyeS1xdWVyaWVzfGN0czpuZWFyLXF1ZXJ5LW9wdGlvbnN8Y3RzOm5lYXItcXVlcnktZGlzdGFuY2V8Y3RzOm5lYXItcXVlcnl8Y3RzOmhpZ2hsaWdodHxjdHM6Z2Vvc3BhdGlhbC1jby1vY2N1cnJlbmNlc3xjdHM6ZnJlcXVlbmN5fGN0czpmaXRuZXNzfGN0czpmaWVsZC13b3Jkc3xjdHM6ZmllbGQtd29yZC1xdWVyeS13ZWlnaHR8Y3RzOmZpZWxkLXdvcmQtcXVlcnktdGV4dHxjdHM6ZmllbGQtd29yZC1xdWVyeS1vcHRpb25zfGN0czpmaWVsZC13b3JkLXF1ZXJ5LWZpZWxkLW5hbWV8Y3RzOmZpZWxkLXdvcmQtcXVlcnl8Y3RzOmZpZWxkLXdvcmQtbWF0Y2h8Y3RzOmVudGl0eS1oaWdobGlnaHR8Y3RzOmVsZW1lbnQtd29yZHN8Y3RzOmVsZW1lbnQtd29yZC1xdWVyeS13ZWlnaHR8Y3RzOmVsZW1lbnQtd29yZC1xdWVyeS10ZXh0fGN0czplbGVtZW50LXdvcmQtcXVlcnktb3B0aW9uc3xjdHM6ZWxlbWVudC13b3JkLXF1ZXJ5LWVsZW1lbnQtbmFtZXxjdHM6ZWxlbWVudC13b3JkLXF1ZXJ5fGN0czplbGVtZW50LXdvcmQtbWF0Y2h8Y3RzOmVsZW1lbnQtdmFsdWVzfGN0czplbGVtZW50LXZhbHVlLXJhbmdlc3xjdHM6ZWxlbWVudC12YWx1ZS1xdWVyeS13ZWlnaHR8Y3RzOmVsZW1lbnQtdmFsdWUtcXVlcnktdGV4dHxjdHM6ZWxlbWVudC12YWx1ZS1xdWVyeS1vcHRpb25zfGN0czplbGVtZW50LXZhbHVlLXF1ZXJ5LWVsZW1lbnQtbmFtZXxjdHM6ZWxlbWVudC12YWx1ZS1xdWVyeXxjdHM6ZWxlbWVudC12YWx1ZS1tYXRjaHxjdHM6ZWxlbWVudC12YWx1ZS1nZW9zcGF0aWFsLWNvLW9jY3VycmVuY2VzfGN0czplbGVtZW50LXZhbHVlLWNvLW9jY3VycmVuY2VzfGN0czplbGVtZW50LXJhbmdlLXF1ZXJ5LXdlaWdodHxjdHM6ZWxlbWVudC1yYW5nZS1xdWVyeS12YWx1ZXxjdHM6ZWxlbWVudC1yYW5nZS1xdWVyeS1vcHRpb25zfGN0czplbGVtZW50LXJhbmdlLXF1ZXJ5LW9wZXJhdG9yfGN0czplbGVtZW50LXJhbmdlLXF1ZXJ5LWVsZW1lbnQtbmFtZXxjdHM6ZWxlbWVudC1yYW5nZS1xdWVyeXxjdHM6ZWxlbWVudC1xdWVyeS1xdWVyeXxjdHM6ZWxlbWVudC1xdWVyeS1lbGVtZW50LW5hbWV8Y3RzOmVsZW1lbnQtcXVlcnl8Y3RzOmVsZW1lbnQtcGFpci1nZW9zcGF0aWFsLXZhbHVlc3xjdHM6ZWxlbWVudC1wYWlyLWdlb3NwYXRpYWwtdmFsdWUtbWF0Y2h8Y3RzOmVsZW1lbnQtcGFpci1nZW9zcGF0aWFsLXF1ZXJ5LXdlaWdodHxjdHM6ZWxlbWVudC1wYWlyLWdlb3NwYXRpYWwtcXVlcnktcmVnaW9ufGN0czplbGVtZW50LXBhaXItZ2Vvc3BhdGlhbC1xdWVyeS1vcHRpb25zfGN0czplbGVtZW50LXBhaXItZ2Vvc3BhdGlhbC1xdWVyeS1sb25naXR1ZGUtbmFtZXxjdHM6ZWxlbWVudC1wYWlyLWdlb3NwYXRpYWwtcXVlcnktbGF0aXR1ZGUtbmFtZXxjdHM6ZWxlbWVudC1wYWlyLWdlb3NwYXRpYWwtcXVlcnktZWxlbWVudC1uYW1lfGN0czplbGVtZW50LXBhaXItZ2Vvc3BhdGlhbC1xdWVyeXxjdHM6ZWxlbWVudC1wYWlyLWdlb3NwYXRpYWwtYm94ZXN8Y3RzOmVsZW1lbnQtZ2Vvc3BhdGlhbC12YWx1ZXN8Y3RzOmVsZW1lbnQtZ2Vvc3BhdGlhbC12YWx1ZS1tYXRjaHxjdHM6ZWxlbWVudC1nZW9zcGF0aWFsLXF1ZXJ5LXdlaWdodHxjdHM6ZWxlbWVudC1nZW9zcGF0aWFsLXF1ZXJ5LXJlZ2lvbnxjdHM6ZWxlbWVudC1nZW9zcGF0aWFsLXF1ZXJ5LW9wdGlvbnN8Y3RzOmVsZW1lbnQtZ2Vvc3BhdGlhbC1xdWVyeS1lbGVtZW50LW5hbWV8Y3RzOmVsZW1lbnQtZ2Vvc3BhdGlhbC1xdWVyeXxjdHM6ZWxlbWVudC1nZW9zcGF0aWFsLWJveGVzfGN0czplbGVtZW50LWNoaWxkLWdlb3NwYXRpYWwtdmFsdWVzfGN0czplbGVtZW50LWNoaWxkLWdlb3NwYXRpYWwtdmFsdWUtbWF0Y2h8Y3RzOmVsZW1lbnQtY2hpbGQtZ2Vvc3BhdGlhbC1xdWVyeS13ZWlnaHR8Y3RzOmVsZW1lbnQtY2hpbGQtZ2Vvc3BhdGlhbC1xdWVyeS1yZWdpb258Y3RzOmVsZW1lbnQtY2hpbGQtZ2Vvc3BhdGlhbC1xdWVyeS1vcHRpb25zfGN0czplbGVtZW50LWNoaWxkLWdlb3NwYXRpYWwtcXVlcnktZWxlbWVudC1uYW1lfGN0czplbGVtZW50LWNoaWxkLWdlb3NwYXRpYWwtcXVlcnktY2hpbGQtbmFtZXxjdHM6ZWxlbWVudC1jaGlsZC1nZW9zcGF0aWFsLXF1ZXJ5fGN0czplbGVtZW50LWNoaWxkLWdlb3NwYXRpYWwtYm94ZXN8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXdvcmRzfGN0czplbGVtZW50LWF0dHJpYnV0ZS13b3JkLXF1ZXJ5LXdlaWdodHxjdHM6ZWxlbWVudC1hdHRyaWJ1dGUtd29yZC1xdWVyeS10ZXh0fGN0czplbGVtZW50LWF0dHJpYnV0ZS13b3JkLXF1ZXJ5LW9wdGlvbnN8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXdvcmQtcXVlcnktZWxlbWVudC1uYW1lfGN0czplbGVtZW50LWF0dHJpYnV0ZS13b3JkLXF1ZXJ5LWF0dHJpYnV0ZS1uYW1lfGN0czplbGVtZW50LWF0dHJpYnV0ZS13b3JkLXF1ZXJ5fGN0czplbGVtZW50LWF0dHJpYnV0ZS13b3JkLW1hdGNofGN0czplbGVtZW50LWF0dHJpYnV0ZS12YWx1ZXN8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXZhbHVlLXJhbmdlc3xjdHM6ZWxlbWVudC1hdHRyaWJ1dGUtdmFsdWUtcXVlcnktd2VpZ2h0fGN0czplbGVtZW50LWF0dHJpYnV0ZS12YWx1ZS1xdWVyeS10ZXh0fGN0czplbGVtZW50LWF0dHJpYnV0ZS12YWx1ZS1xdWVyeS1vcHRpb25zfGN0czplbGVtZW50LWF0dHJpYnV0ZS12YWx1ZS1xdWVyeS1lbGVtZW50LW5hbWV8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXZhbHVlLXF1ZXJ5LWF0dHJpYnV0ZS1uYW1lfGN0czplbGVtZW50LWF0dHJpYnV0ZS12YWx1ZS1xdWVyeXxjdHM6ZWxlbWVudC1hdHRyaWJ1dGUtdmFsdWUtbWF0Y2h8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXZhbHVlLWdlb3NwYXRpYWwtY28tb2NjdXJyZW5jZXN8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXZhbHVlLWNvLW9jY3VycmVuY2VzfGN0czplbGVtZW50LWF0dHJpYnV0ZS1yYW5nZS1xdWVyeS13ZWlnaHR8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXJhbmdlLXF1ZXJ5LXZhbHVlfGN0czplbGVtZW50LWF0dHJpYnV0ZS1yYW5nZS1xdWVyeS1vcHRpb25zfGN0czplbGVtZW50LWF0dHJpYnV0ZS1yYW5nZS1xdWVyeS1vcGVyYXRvcnxjdHM6ZWxlbWVudC1hdHRyaWJ1dGUtcmFuZ2UtcXVlcnktZWxlbWVudC1uYW1lfGN0czplbGVtZW50LWF0dHJpYnV0ZS1yYW5nZS1xdWVyeS1hdHRyaWJ1dGUtbmFtZXxjdHM6ZWxlbWVudC1hdHRyaWJ1dGUtcmFuZ2UtcXVlcnl8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXBhaXItZ2Vvc3BhdGlhbC12YWx1ZXN8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXBhaXItZ2Vvc3BhdGlhbC12YWx1ZS1tYXRjaHxjdHM6ZWxlbWVudC1hdHRyaWJ1dGUtcGFpci1nZW9zcGF0aWFsLXF1ZXJ5LXdlaWdodHxjdHM6ZWxlbWVudC1hdHRyaWJ1dGUtcGFpci1nZW9zcGF0aWFsLXF1ZXJ5LXJlZ2lvbnxjdHM6ZWxlbWVudC1hdHRyaWJ1dGUtcGFpci1nZW9zcGF0aWFsLXF1ZXJ5LW9wdGlvbnN8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXBhaXItZ2Vvc3BhdGlhbC1xdWVyeS1sb25naXR1ZGUtbmFtZXxjdHM6ZWxlbWVudC1hdHRyaWJ1dGUtcGFpci1nZW9zcGF0aWFsLXF1ZXJ5LWxhdGl0dWRlLW5hbWV8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXBhaXItZ2Vvc3BhdGlhbC1xdWVyeS1lbGVtZW50LW5hbWV8Y3RzOmVsZW1lbnQtYXR0cmlidXRlLXBhaXItZ2Vvc3BhdGlhbC1xdWVyeXxjdHM6ZWxlbWVudC1hdHRyaWJ1dGUtcGFpci1nZW9zcGF0aWFsLWJveGVzfGN0czpkb2N1bWVudC1xdWVyeS11cmlzfGN0czpkb2N1bWVudC1xdWVyeXxjdHM6ZGlzdGFuY2V8Y3RzOmRpcmVjdG9yeS1xdWVyeS11cmlzfGN0czpkaXJlY3RvcnktcXVlcnktZGVwdGh8Y3RzOmRpcmVjdG9yeS1xdWVyeXxjdHM6ZGVzdGluYXRpb258Y3RzOmRlcmVnaXN0ZXJ8Y3RzOmNvbnRhaW5zfGN0czpjb25maWRlbmNlfGN0czpjb2xsZWN0aW9uc3xjdHM6Y29sbGVjdGlvbi1xdWVyeS11cmlzfGN0czpjb2xsZWN0aW9uLXF1ZXJ5fGN0czpjb2xsZWN0aW9uLW1hdGNofGN0czpjbGFzc2lmeXxjdHM6Y2lyY2xlLXJhZGl1c3xjdHM6Y2lyY2xlLWNlbnRlcnxjdHM6Y2lyY2xlfGN0czpib3gtd2VzdHxjdHM6Ym94LXNvdXRofGN0czpib3gtbm9ydGh8Y3RzOmJveC1lYXN0fGN0czpib3h8Y3RzOmJlYXJpbmd8Y3RzOmFyYy1pbnRlcnNlY3Rpb258Y3RzOmFuZC1xdWVyeS1xdWVyaWVzfGN0czphbmQtcXVlcnktb3B0aW9uc3xjdHM6YW5kLXF1ZXJ5fGN0czphbmQtbm90LXF1ZXJ5LXBvc2l0aXZlLXF1ZXJ5fGN0czphbmQtbm90LXF1ZXJ5LW5lZ2F0aXZlLXF1ZXJ5fGN0czphbmQtbm90LXF1ZXJ5fGNzczpnZXR8Y3NzOmNvbnZlcnR8Y3BmOnN1Y2Nlc3N8Y3BmOmZhaWx1cmV8Y3BmOmRvY3VtZW50LXNldC1zdGF0ZXxjcGY6ZG9jdW1lbnQtc2V0LXByb2Nlc3Npbmctc3RhdHVzfGNwZjpkb2N1bWVudC1zZXQtbGFzdC11cGRhdGVkfGNwZjpkb2N1bWVudC1zZXQtZXJyb3J8Y3BmOmRvY3VtZW50LWdldC1zdGF0ZXxjcGY6ZG9jdW1lbnQtZ2V0LXByb2Nlc3Npbmctc3RhdHVzfGNwZjpkb2N1bWVudC1nZXQtbGFzdC11cGRhdGVkfGNwZjpkb2N1bWVudC1nZXQtZXJyb3J8Y3BmOmNoZWNrLXRyYW5zaXRpb258YWxlcnQ6c3Bhd24tbWF0Y2hpbmctYWN0aW9uc3xhbGVydDpydWxlLXVzZXItaWQtcXVlcnl8YWxlcnQ6cnVsZS1zZXQtdXNlci1pZHxhbGVydDpydWxlLXNldC1xdWVyeXxhbGVydDpydWxlLXNldC1vcHRpb25zfGFsZXJ0OnJ1bGUtc2V0LW5hbWV8YWxlcnQ6cnVsZS1zZXQtZGVzY3JpcHRpb258YWxlcnQ6cnVsZS1zZXQtYWN0aW9ufGFsZXJ0OnJ1bGUtcmVtb3ZlfGFsZXJ0OnJ1bGUtbmFtZS1xdWVyeXxhbGVydDpydWxlLWluc2VydHxhbGVydDpydWxlLWlkLXF1ZXJ5fGFsZXJ0OnJ1bGUtZ2V0LXVzZXItaWR8YWxlcnQ6cnVsZS1nZXQtcXVlcnl8YWxlcnQ6cnVsZS1nZXQtb3B0aW9uc3xhbGVydDpydWxlLWdldC1uYW1lfGFsZXJ0OnJ1bGUtZ2V0LWlkfGFsZXJ0OnJ1bGUtZ2V0LWRlc2NyaXB0aW9ufGFsZXJ0OnJ1bGUtZ2V0LWFjdGlvbnxhbGVydDpydWxlLWFjdGlvbi1xdWVyeXxhbGVydDpyZW1vdmUtdHJpZ2dlcnN8YWxlcnQ6bWFrZS1ydWxlfGFsZXJ0Om1ha2UtbG9nLWFjdGlvbnxhbGVydDptYWtlLWNvbmZpZ3xhbGVydDptYWtlLWFjdGlvbnxhbGVydDppbnZva2UtbWF0Y2hpbmctYWN0aW9uc3xhbGVydDpnZXQtbXktcnVsZXN8YWxlcnQ6Z2V0LWFsbC1ydWxlc3xhbGVydDpnZXQtYWN0aW9uc3xhbGVydDpmaW5kLW1hdGNoaW5nLXJ1bGVzfGFsZXJ0OmNyZWF0ZS10cmlnZ2Vyc3xhbGVydDpjb25maWctc2V0LXVyaXxhbGVydDpjb25maWctc2V0LXRyaWdnZXItaWRzfGFsZXJ0OmNvbmZpZy1zZXQtb3B0aW9uc3xhbGVydDpjb25maWctc2V0LW5hbWV8YWxlcnQ6Y29uZmlnLXNldC1kZXNjcmlwdGlvbnxhbGVydDpjb25maWctc2V0LWNwZi1kb21haW4tbmFtZXN8YWxlcnQ6Y29uZmlnLXNldC1jcGYtZG9tYWluLWlkc3xhbGVydDpjb25maWctaW5zZXJ0fGFsZXJ0OmNvbmZpZy1nZXQtdXJpfGFsZXJ0OmNvbmZpZy1nZXQtdHJpZ2dlci1pZHN8YWxlcnQ6Y29uZmlnLWdldC1vcHRpb25zfGFsZXJ0OmNvbmZpZy1nZXQtbmFtZXxhbGVydDpjb25maWctZ2V0LWlkfGFsZXJ0OmNvbmZpZy1nZXQtZGVzY3JpcHRpb258YWxlcnQ6Y29uZmlnLWdldC1jcGYtZG9tYWluLW5hbWVzfGFsZXJ0OmNvbmZpZy1nZXQtY3BmLWRvbWFpbi1pZHN8YWxlcnQ6Y29uZmlnLWdldHxhbGVydDpjb25maWctZGVsZXRlfGFsZXJ0OmFjdGlvbi1zZXQtb3B0aW9uc3xhbGVydDphY3Rpb24tc2V0LW5hbWV8YWxlcnQ6YWN0aW9uLXNldC1tb2R1bGUtcm9vdHxhbGVydDphY3Rpb24tc2V0LW1vZHVsZS1kYnxhbGVydDphY3Rpb24tc2V0LW1vZHVsZXxhbGVydDphY3Rpb24tc2V0LWRlc2NyaXB0aW9ufGFsZXJ0OmFjdGlvbi1yZW1vdmV8YWxlcnQ6YWN0aW9uLWluc2VydHxhbGVydDphY3Rpb24tZ2V0LW9wdGlvbnN8YWxlcnQ6YWN0aW9uLWdldC1uYW1lfGFsZXJ0OmFjdGlvbi1nZXQtbW9kdWxlLXJvb3R8YWxlcnQ6YWN0aW9uLWdldC1tb2R1bGUtZGJ8YWxlcnQ6YWN0aW9uLWdldC1tb2R1bGV8YWxlcnQ6YWN0aW9uLWdldC1kZXNjcmlwdGlvbnx6ZXJvLW9yLW9uZXx5ZWFycy1mcm9tLWR1cmF0aW9ufHllYXItZnJvbS1kYXRlVGltZXx5ZWFyLWZyb20tZGF0ZXx1cHBlci1jYXNlfHVub3JkZXJlZHx0cnVlfHRyYW5zbGF0ZXx0cmFjZXx0b2tlbml6ZXx0aW1lem9uZS1mcm9tLXRpbWV8dGltZXpvbmUtZnJvbS1kYXRlVGltZXx0aW1lem9uZS1mcm9tLWRhdGV8c3VtfHN1YnRyYWN0LWRhdGVUaW1lcy15aWVsZGluZy15ZWFyTW9udGhEdXJhdGlvbnxzdWJ0cmFjdC1kYXRlVGltZXMteWllbGRpbmctZGF5VGltZUR1cmF0aW9ufHN1YnN0cmluZy1iZWZvcmV8c3Vic3RyaW5nLWFmdGVyfHN1YnN0cmluZ3xzdWJzZXF1ZW5jZXxzdHJpbmctdG8tY29kZXBvaW50c3xzdHJpbmctcGFkfHN0cmluZy1sZW5ndGh8c3RyaW5nLWpvaW58c3RyaW5nfHN0YXRpYy1iYXNlLXVyaXxzdGFydHMtd2l0aHxzZWNvbmRzLWZyb20tdGltZXxzZWNvbmRzLWZyb20tZHVyYXRpb258c2Vjb25kcy1mcm9tLWRhdGVUaW1lfHJvdW5kLWhhbGYtdG8tZXZlbnxyb3VuZHxyb290fHJldmVyc2V8cmVzb2x2ZS11cml8cmVzb2x2ZS1RTmFtZXxyZXBsYWNlfHJlbW92ZXxRTmFtZXxwcmVmaXgtZnJvbS1RTmFtZXxwb3NpdGlvbnxvbmUtb3ItbW9yZXxudW1iZXJ8bm90fG5vcm1hbGl6ZS11bmljb2RlfG5vcm1hbGl6ZS1zcGFjZXxub2RlLW5hbWV8bm9kZS1raW5kfG5pbGxlZHxuYW1lc3BhY2UtdXJpLWZyb20tUU5hbWV8bmFtZXNwYWNlLXVyaS1mb3ItcHJlZml4fG5hbWVzcGFjZS11cml8bmFtZXxtb250aHMtZnJvbS1kdXJhdGlvbnxtb250aC1mcm9tLWRhdGVUaW1lfG1vbnRoLWZyb20tZGF0ZXxtaW51dGVzLWZyb20tdGltZXxtaW51dGVzLWZyb20tZHVyYXRpb258bWludXRlcy1mcm9tLWRhdGVUaW1lfG1pbnxtYXh8bWF0Y2hlc3xsb3dlci1jYXNlfGxvY2FsLW5hbWUtZnJvbS1RTmFtZXxsb2NhbC1uYW1lfGxhc3R8bGFuZ3xpcmktdG8tdXJpfGluc2VydC1iZWZvcmV8aW5kZXgtb2Z8aW4tc2NvcGUtcHJlZml4ZXN8aW1wbGljaXQtdGltZXpvbmV8aWRyZWZ8aWR8aG91cnMtZnJvbS10aW1lfGhvdXJzLWZyb20tZHVyYXRpb258aG91cnMtZnJvbS1kYXRlVGltZXxmbG9vcnxmYWxzZXxleHBhbmRlZC1RTmFtZXxleGlzdHN8ZXhhY3RseS1vbmV8ZXNjYXBlLXVyaXxlc2NhcGUtaHRtbC11cml8ZXJyb3J8ZW5kcy13aXRofGVuY29kZS1mb3ItdXJpfGVtcHR5fGRvY3VtZW50LXVyaXxkb2MtYXZhaWxhYmxlfGRvY3xkaXN0aW5jdC12YWx1ZXN8ZGlzdGluY3Qtbm9kZXN8ZGVmYXVsdC1jb2xsYXRpb258ZGVlcC1lcXVhbHxkYXlzLWZyb20tZHVyYXRpb258ZGF5LWZyb20tZGF0ZVRpbWV8ZGF5LWZyb20tZGF0ZXxkYXRhfGN1cnJlbnQtdGltZXxjdXJyZW50LWRhdGVUaW1lfGN1cnJlbnQtZGF0ZXxjb3VudHxjb250YWluc3xjb25jYXR8Y29tcGFyZXxjb2xsZWN0aW9ufGNvZGVwb2ludHMtdG8tc3RyaW5nfGNvZGVwb2ludC1lcXVhbHxjZWlsaW5nfGJvb2xlYW58YmFzZS11cml8YXZnfGFkanVzdC10aW1lLXRvLXRpbWV6b25lfGFkanVzdC1kYXRlVGltZS10by10aW1lem9uZXxhZGp1c3QtZGF0ZS10by10aW1lem9uZXxhYnMpXGIvXSwKK1sicGxuIiwvXltcdzotXSsvXSxbInBsbiIsL15bXHRcblxyIFx4YTBdKy9dXSksWyJ4cSIsInhxdWVyeSJdKTsKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy15YW1sLmpzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9sYW5nLXlhbWwuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM4NzI5YgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvbGFuZy15YW1sLmpzCkBAIC0wLDAgKzEsMiBAQAordmFyIGE9bnVsbDsKK1BSLnJlZ2lzdGVyTGFuZ0hhbmRsZXIoUFIuY3JlYXRlU2ltcGxlTGV4ZXIoW1sicHVuIiwvXls6Pj98XSsvLGEsIjp8Pj8iXSxbImRlYyIsL14lKD86WUFNTHxUQUcpW15cblxyI10rLyxhLCIlIl0sWyJ0eXAiLC9eJlxTKy8sYSwiJiJdLFsidHlwIiwvXiFcUyovLGEsIiEiXSxbInN0ciIsL14iKD86W14iXFxdfFxcLikqKD86InwkKS8sYSwnIiddLFsic3RyIiwvXicoPzpbXiddfCcnKSooPzonfCQpLyxhLCInIl0sWyJjb20iLC9eI1teXG5ccl0qLyxhLCIjIl0sWyJwbG4iLC9eXHMrLyxhLCIgXHRcclxuIl1dLFtbImRlYyIsL14oPzotLS18XC5cLlwuKSg/OltcblxyXXwkKS9dLFsicHVuIiwvXi0vXSxbImt3ZCIsL15cdys6W1xuXHIgXS9dLFsicGxuIiwvXlx3Ky9dXSksWyJ5YW1sIiwieW1sIl0pOwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9wcmV0dGlmeS5jc3MgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3ByZXR0aWZ5L3ByZXR0aWZ5LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDRiM2EyCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9wcmV0dGlmeS5jc3MKQEAgLTAsMCArMSBAQAorLnBsbntjb2xvcjojMDAwfUBtZWRpYSBzY3JlZW57LnN0cntjb2xvcjojMDgwfS5rd2R7Y29sb3I6IzAwOH0uY29te2NvbG9yOiM4MDB9LnR5cHtjb2xvcjojNjA2fS5saXR7Y29sb3I6IzA2Nn0ucHVuLC5vcG4sLmNsb3tjb2xvcjojNjYwfS50YWd7Y29sb3I6IzAwOH0uYXRue2NvbG9yOiM2MDZ9LmF0dntjb2xvcjojMDgwfS5kZWMsLnZhcntjb2xvcjojNjA2fS5mdW57Y29sb3I6cmVkfX1AbWVkaWEgcHJpbnQscHJvamVjdGlvbnsuc3Rye2NvbG9yOiMwNjB9Lmt3ZHtjb2xvcjojMDA2O2ZvbnQtd2VpZ2h0OmJvbGR9LmNvbXtjb2xvcjojNjAwO2ZvbnQtc3R5bGU6aXRhbGljfS50eXB7Y29sb3I6IzQwNDtmb250LXdlaWdodDpib2xkfS5saXR7Y29sb3I6IzA0NH0ucHVuLC5vcG4sLmNsb3tjb2xvcjojNDQwfS50YWd7Y29sb3I6IzAwNjtmb250LXdlaWdodDpib2xkfS5hdG57Y29sb3I6IzQwNH0uYXR2e2NvbG9yOiMwNjB9fXByZS5wcmV0dHlwcmludHtwYWRkaW5nOjJweDtib3JkZXI6MXB4IHNvbGlkICM4ODh9b2wubGluZW51bXN7bWFyZ2luLXRvcDowO21hcmdpbi1ib3R0b206MH1saS5MMCxsaS5MMSxsaS5MMixsaS5MMyxsaS5MNSxsaS5MNixsaS5MNyxsaS5MOHtsaXN0LXN0eWxlLXR5cGU6bm9uZX1saS5MMSxsaS5MMyxsaS5MNSxsaS5MNyxsaS5MOXtiYWNrZ3JvdW5kOiNlZWV9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9wcmV0dGlmeS9wcmV0dGlmeS5qcyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvcHJldHRpZnkuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWVmNWFkNwotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcHJldHRpZnkvcHJldHRpZnkuanMKQEAgLTAsMCArMSwyOCBAQAordmFyIHE9bnVsbDt3aW5kb3cuUFJfU0hPVUxEX1VTRV9DT05USU5VQVRJT049ITA7CisoZnVuY3Rpb24oKXtmdW5jdGlvbiBMKGEpe2Z1bmN0aW9uIG0oYSl7dmFyIGY9YS5jaGFyQ29kZUF0KDApO2lmKGYhPT05MilyZXR1cm4gZjt2YXIgYj1hLmNoYXJBdCgxKTtyZXR1cm4oZj1yW2JdKT9mOiIwIjw9YiYmYjw9IjciP3BhcnNlSW50KGEuc3Vic3RyaW5nKDEpLDgpOmI9PT0idSJ8fGI9PT0ieCI/cGFyc2VJbnQoYS5zdWJzdHJpbmcoMiksMTYpOmEuY2hhckNvZGVBdCgxKX1mdW5jdGlvbiBlKGEpe2lmKGE8MzIpcmV0dXJuKGE8MTY/IlxceDAiOiJcXHgiKSthLnRvU3RyaW5nKDE2KTthPVN0cmluZy5mcm9tQ2hhckNvZGUoYSk7aWYoYT09PSJcXCJ8fGE9PT0iLSJ8fGE9PT0iWyJ8fGE9PT0iXSIpYT0iXFwiK2E7cmV0dXJuIGF9ZnVuY3Rpb24gaChhKXtmb3IodmFyIGY9YS5zdWJzdHJpbmcoMSxhLmxlbmd0aC0xKS5tYXRjaCgvXFx1W1xkQS1GYS1mXXs0fXxcXHhbXGRBLUZhLWZdezJ9fFxcWzAtM11bMC03XXswLDJ9fFxcWzAtN117MSwyfXxcXFtcU1xzXXxbXlxcXS9nKSxhPQorW10sYj1bXSxvPWZbMF09PT0iXiIsYz1vPzE6MCxpPWYubGVuZ3RoO2M8aTsrK2Mpe3ZhciBqPWZbY107aWYoL1xcW2Jkc3ddL2kudGVzdChqKSlhLnB1c2goaik7ZWxzZXt2YXIgaj1tKGopLGQ7YysyPGkmJiItIj09PWZbYysxXT8oZD1tKGZbYysyXSksYys9Mik6ZD1qO2IucHVzaChbaixkXSk7ZDw2NXx8aj4xMjJ8fChkPDY1fHxqPjkwfHxiLnB1c2goW01hdGgubWF4KDY1LGopfDMyLE1hdGgubWluKGQsOTApfDMyXSksZDw5N3x8aj4xMjJ8fGIucHVzaChbTWF0aC5tYXgoOTcsaikmLTMzLE1hdGgubWluKGQsMTIyKSYtMzNdKSl9fWIuc29ydChmdW5jdGlvbihhLGYpe3JldHVybiBhWzBdLWZbMF18fGZbMV0tYVsxXX0pO2Y9W107aj1bTmFOLE5hTl07Zm9yKGM9MDtjPGIubGVuZ3RoOysrYylpPWJbY10saVswXTw9alsxXSsxP2pbMV09TWF0aC5tYXgoalsxXSxpWzFdKTpmLnB1c2goaj1pKTtiPVsiWyJdO28mJmIucHVzaCgiXiIpO2IucHVzaC5hcHBseShiLGEpO2ZvcihjPTA7YzwKK2YubGVuZ3RoOysrYylpPWZbY10sYi5wdXNoKGUoaVswXSkpLGlbMV0+aVswXSYmKGlbMV0rMT5pWzBdJiZiLnB1c2goIi0iKSxiLnB1c2goZShpWzFdKSkpO2IucHVzaCgiXSIpO3JldHVybiBiLmpvaW4oIiIpfWZ1bmN0aW9uIHkoYSl7Zm9yKHZhciBmPWEuc291cmNlLm1hdGNoKC9cWyg/OlteXFxcXV18XFxbXFNcc10pKl18XFx1W1xkQS1GYS1mXXs0fXxcXHhbXGRBLUZhLWZdezJ9fFxcXGQrfFxcW15cZHV4XXxcKFw/WyE6PV18WygpXl18W14oKVtcXF5dKy9nKSxiPWYubGVuZ3RoLGQ9W10sYz0wLGk9MDtjPGI7KytjKXt2YXIgaj1mW2NdO2o9PT0iKCI/KytpOiJcXCI9PT1qLmNoYXJBdCgwKSYmKGo9K2ouc3Vic3RyaW5nKDEpKSYmajw9aSYmKGRbal09LTEpfWZvcihjPTE7YzxkLmxlbmd0aDsrK2MpLTE9PT1kW2NdJiYoZFtjXT0rK3QpO2ZvcihpPWM9MDtjPGI7KytjKWo9ZltjXSxqPT09IigiPygrK2ksZFtpXT09PXZvaWQgMCYmKGZbY109Iig/OiIpKToiXFwiPT09ai5jaGFyQXQoMCkmJgorKGo9K2ouc3Vic3RyaW5nKDEpKSYmajw9aSYmKGZbY109IlxcIitkW2ldKTtmb3IoaT1jPTA7YzxiOysrYykiXiI9PT1mW2NdJiYiXiIhPT1mW2MrMV0mJihmW2NdPSIiKTtpZihhLmlnbm9yZUNhc2UmJnMpZm9yKGM9MDtjPGI7KytjKWo9ZltjXSxhPWouY2hhckF0KDApLGoubGVuZ3RoPj0yJiZhPT09IlsiP2ZbY109aChqKTphIT09IlxcIiYmKGZbY109ai5yZXBsYWNlKC9bQS1aYS16XS9nLGZ1bmN0aW9uKGEpe2E9YS5jaGFyQ29kZUF0KDApO3JldHVybiJbIitTdHJpbmcuZnJvbUNoYXJDb2RlKGEmLTMzLGF8MzIpKyJdIn0pKTtyZXR1cm4gZi5qb2luKCIiKX1mb3IodmFyIHQ9MCxzPSExLGw9ITEscD0wLGQ9YS5sZW5ndGg7cDxkOysrcCl7dmFyIGc9YVtwXTtpZihnLmlnbm9yZUNhc2UpbD0hMDtlbHNlIGlmKC9bYS16XS9pLnRlc3QoZy5zb3VyY2UucmVwbGFjZSgvXFx1W1xkYS1mXXs0fXxcXHhbXGRhLWZdezJ9fFxcW15VWHV4XS9naSwiIikpKXtzPSEwO2w9ITE7YnJlYWt9fWZvcih2YXIgcj0KK3tiOjgsdDo5LG46MTAsdjoxMSxmOjEyLHI6MTN9LG49W10scD0wLGQ9YS5sZW5ndGg7cDxkOysrcCl7Zz1hW3BdO2lmKGcuZ2xvYmFsfHxnLm11bHRpbGluZSl0aHJvdyBFcnJvcigiIitnKTtuLnB1c2goIig/OiIreShnKSsiKSIpfXJldHVybiBSZWdFeHAobi5qb2luKCJ8IiksbD8iZ2kiOiJnIil9ZnVuY3Rpb24gTShhKXtmdW5jdGlvbiBtKGEpe3N3aXRjaChhLm5vZGVUeXBlKXtjYXNlIDE6aWYoZS50ZXN0KGEuY2xhc3NOYW1lKSlicmVhaztmb3IodmFyIGc9YS5maXJzdENoaWxkO2c7Zz1nLm5leHRTaWJsaW5nKW0oZyk7Zz1hLm5vZGVOYW1lO2lmKCJCUiI9PT1nfHwiTEkiPT09ZyloW3NdPSJcbiIsdFtzPDwxXT15KyssdFtzKys8PDF8MV09YTticmVhaztjYXNlIDM6Y2FzZSA0Omc9YS5ub2RlVmFsdWUsZy5sZW5ndGgmJihnPXA/Zy5yZXBsYWNlKC9cclxuPy9nLCJcbiIpOmcucmVwbGFjZSgvW1x0XG5cciBdKy9nLCIgIiksaFtzXT1nLHRbczw8MV09eSx5Kz1nLmxlbmd0aCwKK3RbcysrPDwxfDFdPWEpfX12YXIgZT0vKD86Xnxccylub2NvZGUoPzpcc3wkKS8saD1bXSx5PTAsdD1bXSxzPTAsbDthLmN1cnJlbnRTdHlsZT9sPWEuY3VycmVudFN0eWxlLndoaXRlU3BhY2U6d2luZG93LmdldENvbXB1dGVkU3R5bGUmJihsPWRvY3VtZW50LmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxxKS5nZXRQcm9wZXJ0eVZhbHVlKCJ3aGl0ZS1zcGFjZSIpKTt2YXIgcD1sJiYicHJlIj09PWwuc3Vic3RyaW5nKDAsMyk7bShhKTtyZXR1cm57YTpoLmpvaW4oIiIpLnJlcGxhY2UoL1xuJC8sIiIpLGM6dH19ZnVuY3Rpb24gQihhLG0sZSxoKXttJiYoYT17YTptLGQ6YX0sZShhKSxoLnB1c2guYXBwbHkoaCxhLmUpKX1mdW5jdGlvbiB4KGEsbSl7ZnVuY3Rpb24gZShhKXtmb3IodmFyIGw9YS5kLHA9W2wsInBsbiJdLGQ9MCxnPWEuYS5tYXRjaCh5KXx8W10scj17fSxuPTAsej1nLmxlbmd0aDtuPHo7KytuKXt2YXIgZj1nW25dLGI9cltmXSxvPXZvaWQgMCxjO2lmKHR5cGVvZiBiPT09Cisic3RyaW5nIiljPSExO2Vsc2V7dmFyIGk9aFtmLmNoYXJBdCgwKV07aWYoaSlvPWYubWF0Y2goaVsxXSksYj1pWzBdO2Vsc2V7Zm9yKGM9MDtjPHQ7KytjKWlmKGk9bVtjXSxvPWYubWF0Y2goaVsxXSkpe2I9aVswXTticmVha31vfHwoYj0icGxuIil9aWYoKGM9Yi5sZW5ndGg+PTUmJiJsYW5nLSI9PT1iLnN1YnN0cmluZygwLDUpKSYmIShvJiZ0eXBlb2Ygb1sxXT09PSJzdHJpbmciKSljPSExLGI9InNyYyI7Y3x8KHJbZl09Yil9aT1kO2QrPWYubGVuZ3RoO2lmKGMpe2M9b1sxXTt2YXIgaj1mLmluZGV4T2YoYyksaz1qK2MubGVuZ3RoO29bMl0mJihrPWYubGVuZ3RoLW9bMl0ubGVuZ3RoLGo9ay1jLmxlbmd0aCk7Yj1iLnN1YnN0cmluZyg1KTtCKGwraSxmLnN1YnN0cmluZygwLGopLGUscCk7QihsK2kraixjLEMoYixjKSxwKTtCKGwraStrLGYuc3Vic3RyaW5nKGspLGUscCl9ZWxzZSBwLnB1c2gobCtpLGIpfWEuZT1wfXZhciBoPXt9LHk7KGZ1bmN0aW9uKCl7Zm9yKHZhciBlPWEuY29uY2F0KG0pLAorbD1bXSxwPXt9LGQ9MCxnPWUubGVuZ3RoO2Q8ZzsrK2Qpe3ZhciByPWVbZF0sbj1yWzNdO2lmKG4pZm9yKHZhciBrPW4ubGVuZ3RoOy0taz49MDspaFtuLmNoYXJBdChrKV09cjtyPXJbMV07bj0iIityO3AuaGFzT3duUHJvcGVydHkobil8fChsLnB1c2gocikscFtuXT1xKX1sLnB1c2goL1tcU1xzXS8pO3k9TChsKX0pKCk7dmFyIHQ9bS5sZW5ndGg7cmV0dXJuIGV9ZnVuY3Rpb24gdShhKXt2YXIgbT1bXSxlPVtdO2EudHJpcGxlUXVvdGVkU3RyaW5ncz9tLnB1c2goWyJzdHIiLC9eKD86JycnKD86W14nXFxdfFxcW1xTXHNdfCcnPyg/PVteJ10pKSooPzonJyd8JCl8IiIiKD86W14iXFxdfFxcW1xTXHNdfCIiPyg/PVteIl0pKSooPzoiIiJ8JCl8Jyg/OlteJ1xcXXxcXFtcU1xzXSkqKD86J3wkKXwiKD86W14iXFxdfFxcW1xTXHNdKSooPzoifCQpKS8scSwiJ1wiIl0pOmEubXVsdGlMaW5lU3RyaW5ncz9tLnB1c2goWyJzdHIiLC9eKD86Jyg/OlteJ1xcXXxcXFtcU1xzXSkqKD86J3wkKXwiKD86W14iXFxdfFxcW1xTXHNdKSooPzoifCQpfGAoPzpbXlxcYF18XFxbXFNcc10pKig/OmB8JCkpLywKK3EsIidcImAiXSk6bS5wdXNoKFsic3RyIiwvXig/OicoPzpbXlxuXHInXFxdfFxcLikqKD86J3wkKXwiKD86W15cblxyIlxcXXxcXC4pKig/OiJ8JCkpLyxxLCJcIiciXSk7YS52ZXJiYXRpbVN0cmluZ3MmJmUucHVzaChbInN0ciIsL15AIig/OlteIl18IiIpKig/OiJ8JCkvLHFdKTt2YXIgaD1hLmhhc2hDb21tZW50cztoJiYoYS5jU3R5bGVDb21tZW50cz8oaD4xP20ucHVzaChbImNvbSIsL14jKD86IyMoPzpbXiNdfCMoPyEjIykpKig/OiMjI3wkKXwuKikvLHEsIiMiXSk6bS5wdXNoKFsiY29tIiwvXiMoPzooPzpkZWZpbmV8ZWxpZnxlbHNlfGVuZGlmfGVycm9yfGlmZGVmfGluY2x1ZGV8aWZuZGVmfGxpbmV8cHJhZ21hfHVuZGVmfHdhcm5pbmcpXGJ8W15cblxyXSopLyxxLCIjIl0pLGUucHVzaChbInN0ciIsL148KD86KD86KD86XC5cLlwvKSp8XC8/KSg/Oltcdy1dKyg/OlwvW1x3LV0rKSspP1tcdy1dK1wuaHxbYS16XVx3Kik+LyxxXSkpOm0ucHVzaChbImNvbSIsL14jW15cblxyXSovLAorcSwiIyJdKSk7YS5jU3R5bGVDb21tZW50cyYmKGUucHVzaChbImNvbSIsL15cL1wvW15cblxyXSovLHFdKSxlLnB1c2goWyJjb20iLC9eXC9cKltcU1xzXSo/KD86XCpcL3wkKS8scV0pKTthLnJlZ2V4TGl0ZXJhbHMmJmUucHVzaChbImxhbmctcmVnZXgiLC9eKD86Xl5cLj98WyErLV18IT18IT09fCN8JXwlPXwmfCYmfCYmPXwmPXxcKHxcKnxcKj18XCs9fCx8LT18LT58XC98XC89fDp8Ojp8O3w8fDw8fDw8PXw8PXw9fD09fD09PXw+fD49fD4+fD4+PXw+Pj58Pj4+PXxbP0BbXl18XF49fFxeXF58XF5cXj18e3xcfHxcfD18XHxcfHxcfFx8PXx+fGJyZWFrfGNhc2V8Y29udGludWV8ZGVsZXRlfGRvfGVsc2V8ZmluYWxseXxpbnN0YW5jZW9mfHJldHVybnx0aHJvd3x0cnl8dHlwZW9mKVxzKihcLyg/PVteKi9dKSg/OlteL1tcXF18XFxbXFNcc118XFsoPzpbXlxcXF1dfFxcW1xTXHNdKSooPzpdfCQpKStcLykvXSk7KGg9YS50eXBlcykmJmUucHVzaChbInR5cCIsaF0pO2E9KCIiK2Eua2V5d29yZHMpLnJlcGxhY2UoL14gfCAkL2csCisiIik7YS5sZW5ndGgmJmUucHVzaChbImt3ZCIsUmVnRXhwKCJeKD86IithLnJlcGxhY2UoL1tccyxdKy9nLCJ8IikrIilcXGIiKSxxXSk7bS5wdXNoKFsicGxuIiwvXlxzKy8scSwiIFxyXG5cdFx4YTAiXSk7ZS5wdXNoKFsibGl0IiwvXkBbJF9hLXpdW1x3JEBdKi9pLHFdLFsidHlwIiwvXig/OltAX10/W0EtWl0rW2Etel1bXHckQF0qfFx3K190XGIpLyxxXSxbInBsbiIsL15bJF9hLXpdW1x3JEBdKi9pLHFdLFsibGl0IiwvXig/OjB4W1xkYS1mXSt8KD86XGQoPzpfXGQrKSpcZCooPzpcLlxkKik/fFwuXGRcKykoPzplWystXT9cZCspPylbYS16XSovaSxxLCIwMTIzNDU2Nzg5Il0sWyJwbG4iLC9eXFxbXFNcc10/LyxxXSxbInB1biIsL14uW15cc1x3Ii0kJy4vQFxcYF0qLyxxXSk7cmV0dXJuIHgobSxlKX1mdW5jdGlvbiBEKGEsbSl7ZnVuY3Rpb24gZShhKXtzd2l0Y2goYS5ub2RlVHlwZSl7Y2FzZSAxOmlmKGsudGVzdChhLmNsYXNzTmFtZSkpYnJlYWs7aWYoIkJSIj09PWEubm9kZU5hbWUpaChhKSwKK2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpO2Vsc2UgZm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWUoYSk7YnJlYWs7Y2FzZSAzOmNhc2UgNDppZihwKXt2YXIgYj1hLm5vZGVWYWx1ZSxkPWIubWF0Y2godCk7aWYoZCl7dmFyIGM9Yi5zdWJzdHJpbmcoMCxkLmluZGV4KTthLm5vZGVWYWx1ZT1jOyhiPWIuc3Vic3RyaW5nKGQuaW5kZXgrZFswXS5sZW5ndGgpKSYmYS5wYXJlbnROb2RlLmluc2VydEJlZm9yZShzLmNyZWF0ZVRleHROb2RlKGIpLGEubmV4dFNpYmxpbmcpO2goYSk7Y3x8YS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGEpfX19fWZ1bmN0aW9uIGgoYSl7ZnVuY3Rpb24gYihhLGQpe3ZhciBlPWQ/YS5jbG9uZU5vZGUoITEpOmEsZj1hLnBhcmVudE5vZGU7aWYoZil7dmFyIGY9YihmLDEpLGc9YS5uZXh0U2libGluZztmLmFwcGVuZENoaWxkKGUpO2Zvcih2YXIgaD1nO2g7aD1nKWc9aC5uZXh0U2libGluZyxmLmFwcGVuZENoaWxkKGgpfXJldHVybiBlfQorZm9yKDshYS5uZXh0U2libGluZzspaWYoYT1hLnBhcmVudE5vZGUsIWEpcmV0dXJuO2Zvcih2YXIgYT1iKGEubmV4dFNpYmxpbmcsMCksZTsoZT1hLnBhcmVudE5vZGUpJiZlLm5vZGVUeXBlPT09MTspYT1lO2QucHVzaChhKX12YXIgaz0vKD86Xnxccylub2NvZGUoPzpcc3wkKS8sdD0vXHJcbj98XG4vLHM9YS5vd25lckRvY3VtZW50LGw7YS5jdXJyZW50U3R5bGU/bD1hLmN1cnJlbnRTdHlsZS53aGl0ZVNwYWNlOndpbmRvdy5nZXRDb21wdXRlZFN0eWxlJiYobD1zLmRlZmF1bHRWaWV3LmdldENvbXB1dGVkU3R5bGUoYSxxKS5nZXRQcm9wZXJ0eVZhbHVlKCJ3aGl0ZS1zcGFjZSIpKTt2YXIgcD1sJiYicHJlIj09PWwuc3Vic3RyaW5nKDAsMyk7Zm9yKGw9cy5jcmVhdGVFbGVtZW50KCJMSSIpO2EuZmlyc3RDaGlsZDspbC5hcHBlbmRDaGlsZChhLmZpcnN0Q2hpbGQpO2Zvcih2YXIgZD1bbF0sZz0wO2c8ZC5sZW5ndGg7KytnKWUoZFtnXSk7bT09PShtfDApJiZkWzBdLnNldEF0dHJpYnV0ZSgidmFsdWUiLAorbSk7dmFyIHI9cy5jcmVhdGVFbGVtZW50KCJPTCIpO3IuY2xhc3NOYW1lPSJsaW5lbnVtcyI7Zm9yKHZhciBuPU1hdGgubWF4KDAsbS0xfDApfHwwLGc9MCx6PWQubGVuZ3RoO2c8ejsrK2cpbD1kW2ddLGwuY2xhc3NOYW1lPSJMIisoZytuKSUxMCxsLmZpcnN0Q2hpbGR8fGwuYXBwZW5kQ2hpbGQocy5jcmVhdGVUZXh0Tm9kZSgiXHhhMCIpKSxyLmFwcGVuZENoaWxkKGwpO2EuYXBwZW5kQ2hpbGQocil9ZnVuY3Rpb24gayhhLG0pe2Zvcih2YXIgZT1tLmxlbmd0aDstLWU+PTA7KXt2YXIgaD1tW2VdO0EuaGFzT3duUHJvcGVydHkoaCk/d2luZG93LmNvbnNvbGUmJmNvbnNvbGUud2FybigiY2Fubm90IG92ZXJyaWRlIGxhbmd1YWdlIGhhbmRsZXIgJXMiLGgpOkFbaF09YX19ZnVuY3Rpb24gQyhhLG0pe2lmKCFhfHwhQS5oYXNPd25Qcm9wZXJ0eShhKSlhPS9eXHMqPC8udGVzdChtKT8iZGVmYXVsdC1tYXJrdXAiOiJkZWZhdWx0LWNvZGUiO3JldHVybiBBW2FdfWZ1bmN0aW9uIEUoYSl7dmFyIG09CithLmc7dHJ5e3ZhciBlPU0oYS5oKSxoPWUuYTthLmE9aDthLmM9ZS5jO2EuZD0wO0MobSxoKShhKTt2YXIgaz0vXGJNU0lFXGIvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudCksbT0vXG4vZyx0PWEuYSxzPXQubGVuZ3RoLGU9MCxsPWEuYyxwPWwubGVuZ3RoLGg9MCxkPWEuZSxnPWQubGVuZ3RoLGE9MDtkW2ddPXM7dmFyIHIsbjtmb3Iobj1yPTA7bjxnOylkW25dIT09ZFtuKzJdPyhkW3IrK109ZFtuKytdLGRbcisrXT1kW24rK10pOm4rPTI7Zz1yO2ZvcihuPXI9MDtuPGc7KXtmb3IodmFyIHo9ZFtuXSxmPWRbbisxXSxiPW4rMjtiKzI8PWcmJmRbYisxXT09PWY7KWIrPTI7ZFtyKytdPXo7ZFtyKytdPWY7bj1ifWZvcihkLmxlbmd0aD1yO2g8cDspe3ZhciBvPWxbaCsyXXx8cyxjPWRbYSsyXXx8cyxiPU1hdGgubWluKG8sYyksaT1sW2grMV0sajtpZihpLm5vZGVUeXBlIT09MSYmKGo9dC5zdWJzdHJpbmcoZSxiKSkpe2smJihqPWoucmVwbGFjZShtLCJcciIpKTtpLm5vZGVWYWx1ZT0KK2o7dmFyIHU9aS5vd25lckRvY3VtZW50LHY9dS5jcmVhdGVFbGVtZW50KCJTUEFOIik7di5jbGFzc05hbWU9ZFthKzFdO3ZhciB4PWkucGFyZW50Tm9kZTt4LnJlcGxhY2VDaGlsZCh2LGkpO3YuYXBwZW5kQ2hpbGQoaSk7ZTxvJiYobFtoKzFdPWk9dS5jcmVhdGVUZXh0Tm9kZSh0LnN1YnN0cmluZyhiLG8pKSx4Lmluc2VydEJlZm9yZShpLHYubmV4dFNpYmxpbmcpKX1lPWI7ZT49byYmKGgrPTIpO2U+PWMmJihhKz0yKX19Y2F0Y2godyl7ImNvbnNvbGUiaW4gd2luZG93JiZjb25zb2xlLmxvZyh3JiZ3LnN0YWNrP3cuc3RhY2s6dyl9fXZhciB2PVsiYnJlYWssY29udGludWUsZG8sZWxzZSxmb3IsaWYscmV0dXJuLHdoaWxlIl0sdz1bW3YsImF1dG8sY2FzZSxjaGFyLGNvbnN0LGRlZmF1bHQsZG91YmxlLGVudW0sZXh0ZXJuLGZsb2F0LGdvdG8saW50LGxvbmcscmVnaXN0ZXIsc2hvcnQsc2lnbmVkLHNpemVvZixzdGF0aWMsc3RydWN0LHN3aXRjaCx0eXBlZGVmLHVuaW9uLHVuc2lnbmVkLHZvaWQsdm9sYXRpbGUiXSwKKyJjYXRjaCxjbGFzcyxkZWxldGUsZmFsc2UsaW1wb3J0LG5ldyxvcGVyYXRvcixwcml2YXRlLHByb3RlY3RlZCxwdWJsaWMsdGhpcyx0aHJvdyx0cnVlLHRyeSx0eXBlb2YiXSxGPVt3LCJhbGlnbm9mLGFsaWduX3VuaW9uLGFzbSxheGlvbSxib29sLGNvbmNlcHQsY29uY2VwdF9tYXAsY29uc3RfY2FzdCxjb25zdGV4cHIsZGVjbHR5cGUsZHluYW1pY19jYXN0LGV4cGxpY2l0LGV4cG9ydCxmcmllbmQsaW5saW5lLGxhdGVfY2hlY2ssbXV0YWJsZSxuYW1lc3BhY2UsbnVsbHB0cixyZWludGVycHJldF9jYXN0LHN0YXRpY19hc3NlcnQsc3RhdGljX2Nhc3QsdGVtcGxhdGUsdHlwZWlkLHR5cGVuYW1lLHVzaW5nLHZpcnR1YWwsd2hlcmUiXSxHPVt3LCJhYnN0cmFjdCxib29sZWFuLGJ5dGUsZXh0ZW5kcyxmaW5hbCxmaW5hbGx5LGltcGxlbWVudHMsaW1wb3J0LGluc3RhbmNlb2YsbnVsbCxuYXRpdmUscGFja2FnZSxzdHJpY3RmcCxzdXBlcixzeW5jaHJvbml6ZWQsdGhyb3dzLHRyYW5zaWVudCJdLAorSD1bRywiYXMsYmFzZSxieSxjaGVja2VkLGRlY2ltYWwsZGVsZWdhdGUsZGVzY2VuZGluZyxkeW5hbWljLGV2ZW50LGZpeGVkLGZvcmVhY2gsZnJvbSxncm91cCxpbXBsaWNpdCxpbixpbnRlcmZhY2UsaW50ZXJuYWwsaW50byxpcyxsb2NrLG9iamVjdCxvdXQsb3ZlcnJpZGUsb3JkZXJieSxwYXJhbXMscGFydGlhbCxyZWFkb25seSxyZWYsc2J5dGUsc2VhbGVkLHN0YWNrYWxsb2Msc3RyaW5nLHNlbGVjdCx1aW50LHVsb25nLHVuY2hlY2tlZCx1bnNhZmUsdXNob3J0LHZhciJdLHc9W3csImRlYnVnZ2VyLGV2YWwsZXhwb3J0LGZ1bmN0aW9uLGdldCxudWxsLHNldCx1bmRlZmluZWQsdmFyLHdpdGgsSW5maW5pdHksTmFOIl0sST1bdiwiYW5kLGFzLGFzc2VydCxjbGFzcyxkZWYsZGVsLGVsaWYsZXhjZXB0LGV4ZWMsZmluYWxseSxmcm9tLGdsb2JhbCxpbXBvcnQsaW4saXMsbGFtYmRhLG5vbmxvY2FsLG5vdCxvcixwYXNzLHByaW50LHJhaXNlLHRyeSx3aXRoLHlpZWxkLEZhbHNlLFRydWUsTm9uZSJdLAorSj1bdiwiYWxpYXMsYW5kLGJlZ2luLGNhc2UsY2xhc3MsZGVmLGRlZmluZWQsZWxzaWYsZW5kLGVuc3VyZSxmYWxzZSxpbixtb2R1bGUsbmV4dCxuaWwsbm90LG9yLHJlZG8scmVzY3VlLHJldHJ5LHNlbGYsc3VwZXIsdGhlbix0cnVlLHVuZGVmLHVubGVzcyx1bnRpbCx3aGVuLHlpZWxkLEJFR0lOLEVORCJdLHY9W3YsImNhc2UsZG9uZSxlbGlmLGVzYWMsZXZhbCxmaSxmdW5jdGlvbixpbixsb2NhbCxzZXQsdGhlbix1bnRpbCJdLEs9L14oRElSfEZJTEV8dmVjdG9yfChkZXxwcmlvcml0eV8pP3F1ZXVlfGxpc3R8c3RhY2t8KGNvbnN0Xyk/aXRlcmF0b3J8KG11bHRpKT8oc2V0fG1hcCl8Yml0c2V0fHU/KGludHxmbG9hdClcZCopLyxOPS9cUy8sTz11KHtrZXl3b3JkczpbRixILHcsImNhbGxlcixkZWxldGUsZGllLGRvLGR1bXAsZWxzaWYsZXZhbCxleGl0LGZvcmVhY2gsZm9yLGdvdG8saWYsaW1wb3J0LGxhc3QsbG9jYWwsbXksbmV4dCxubyxvdXIscHJpbnQscGFja2FnZSxyZWRvLHJlcXVpcmUsc3ViLHVuZGVmLHVubGVzcyx1bnRpbCx1c2Usd2FudGFycmF5LHdoaWxlLEJFR0lOLEVORCIrCitJLEosdl0saGFzaENvbW1lbnRzOiEwLGNTdHlsZUNvbW1lbnRzOiEwLG11bHRpTGluZVN0cmluZ3M6ITAscmVnZXhMaXRlcmFsczohMH0pLEE9e307ayhPLFsiZGVmYXVsdC1jb2RlIl0pO2soeChbXSxbWyJwbG4iLC9eW148P10rL10sWyJkZWMiLC9ePCFcd1tePl0qKD86PnwkKS9dLFsiY29tIiwvXjxcIS0tW1xTXHNdKj8oPzotLVw+fCQpL10sWyJsYW5nLSIsL148XD8oW1xTXHNdKz8pKD86XD8+fCQpL10sWyJsYW5nLSIsL148JShbXFNcc10rPykoPzolPnwkKS9dLFsicHVuIiwvXig/OjxbJT9dfFslP10+KS9dLFsibGFuZy0iLC9ePHhtcFxiW14+XSo+KFtcU1xzXSs/KTxcL3htcFxiW14+XSo+L2ldLFsibGFuZy1qcyIsL148c2NyaXB0XGJbXj5dKj4oW1xTXHNdKj8pKDxcL3NjcmlwdFxiW14+XSo+KS9pXSxbImxhbmctY3NzIiwvXjxzdHlsZVxiW14+XSo+KFtcU1xzXSo/KSg8XC9zdHlsZVxiW14+XSo+KS9pXSxbImxhbmctaW4udGFnIiwvXig8XC8/W2Etel1bXjw+XSo+KS9pXV0pLAorWyJkZWZhdWx0LW1hcmt1cCIsImh0bSIsImh0bWwiLCJteG1sIiwieGh0bWwiLCJ4bWwiLCJ4c2wiXSk7ayh4KFtbInBsbiIsL15ccysvLHEsIiBcdFxyXG4iXSxbImF0diIsL14oPzoiW14iXSoiP3wnW14nXSonPykvLHEsIlwiJyJdXSxbWyJ0YWciLC9eXjxcLz9bYS16XSg/Oltcdy0uOl0qXHcpP3xcLz8+JC9pXSxbImF0biIsL14oPyFzdHlsZVtccz1dfG9uKVthLXpdKD86W1x3Oi1dKlx3KT8vaV0sWyJsYW5nLXVxLnZhbCIsL149XHMqKFteXHMiJz5dKig/OlteXHMiJy8+XXxcLyg/PVxzKSkpL10sWyJwdW4iLC9eWy88LT5dKy9dLFsibGFuZy1qcyIsL15vblx3K1xzKj1ccyoiKFteIl0rKSIvaV0sWyJsYW5nLWpzIiwvXm9uXHcrXHMqPVxzKicoW14nXSspJy9pXSxbImxhbmctanMiLC9eb25cdytccyo9XHMqKFteXHMiJz5dKykvaV0sWyJsYW5nLWNzcyIsL15zdHlsZVxzKj1ccyoiKFteIl0rKSIvaV0sWyJsYW5nLWNzcyIsL15zdHlsZVxzKj1ccyonKFteJ10rKScvaV0sWyJsYW5nLWNzcyIsCisvXnN0eWxlXHMqPVxzKihbXlxzIic+XSspL2ldXSksWyJpbi50YWciXSk7ayh4KFtdLFtbImF0diIsL15bXFNcc10rL11dKSxbInVxLnZhbCJdKTtrKHUoe2tleXdvcmRzOkYsaGFzaENvbW1lbnRzOiEwLGNTdHlsZUNvbW1lbnRzOiEwLHR5cGVzOkt9KSxbImMiLCJjYyIsImNwcCIsImN4eCIsImN5YyIsIm0iXSk7ayh1KHtrZXl3b3JkczoibnVsbCx0cnVlLGZhbHNlIn0pLFsianNvbiJdKTtrKHUoe2tleXdvcmRzOkgsaGFzaENvbW1lbnRzOiEwLGNTdHlsZUNvbW1lbnRzOiEwLHZlcmJhdGltU3RyaW5nczohMCx0eXBlczpLfSksWyJjcyJdKTtrKHUoe2tleXdvcmRzOkcsY1N0eWxlQ29tbWVudHM6ITB9KSxbImphdmEiXSk7ayh1KHtrZXl3b3Jkczp2LGhhc2hDb21tZW50czohMCxtdWx0aUxpbmVTdHJpbmdzOiEwfSksWyJic2giLCJjc2giLCJzaCJdKTtrKHUoe2tleXdvcmRzOkksaGFzaENvbW1lbnRzOiEwLG11bHRpTGluZVN0cmluZ3M6ITAsdHJpcGxlUXVvdGVkU3RyaW5nczohMH0pLAorWyJjdiIsInB5Il0pO2sodSh7a2V5d29yZHM6ImNhbGxlcixkZWxldGUsZGllLGRvLGR1bXAsZWxzaWYsZXZhbCxleGl0LGZvcmVhY2gsZm9yLGdvdG8saWYsaW1wb3J0LGxhc3QsbG9jYWwsbXksbmV4dCxubyxvdXIscHJpbnQscGFja2FnZSxyZWRvLHJlcXVpcmUsc3ViLHVuZGVmLHVubGVzcyx1bnRpbCx1c2Usd2FudGFycmF5LHdoaWxlLEJFR0lOLEVORCIsaGFzaENvbW1lbnRzOiEwLG11bHRpTGluZVN0cmluZ3M6ITAscmVnZXhMaXRlcmFsczohMH0pLFsicGVybCIsInBsIiwicG0iXSk7ayh1KHtrZXl3b3JkczpKLGhhc2hDb21tZW50czohMCxtdWx0aUxpbmVTdHJpbmdzOiEwLHJlZ2V4TGl0ZXJhbHM6ITB9KSxbInJiIl0pO2sodSh7a2V5d29yZHM6dyxjU3R5bGVDb21tZW50czohMCxyZWdleExpdGVyYWxzOiEwfSksWyJqcyJdKTtrKHUoe2tleXdvcmRzOiJhbGwsYW5kLGJ5LGNhdGNoLGNsYXNzLGVsc2UsZXh0ZW5kcyxmYWxzZSxmaW5hbGx5LGZvcixpZixpbixpcyxpc250LGxvb3AsbmV3LG5vLG5vdCxudWxsLG9mLG9mZixvbixvcixyZXR1cm4sc3VwZXIsdGhlbix0cnVlLHRyeSx1bmxlc3MsdW50aWwsd2hlbix3aGlsZSx5ZXMiLAoraGFzaENvbW1lbnRzOjMsY1N0eWxlQ29tbWVudHM6ITAsbXVsdGlsaW5lU3RyaW5nczohMCx0cmlwbGVRdW90ZWRTdHJpbmdzOiEwLHJlZ2V4TGl0ZXJhbHM6ITB9KSxbImNvZmZlZSJdKTtrKHgoW10sW1sic3RyIiwvXltcU1xzXSsvXV0pLFsicmVnZXgiXSk7d2luZG93LnByZXR0eVByaW50T25lPWZ1bmN0aW9uKGEsbSxlKXt2YXIgaD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJQUkUiKTtoLmlubmVySFRNTD1hO2UmJkQoaCxlKTtFKHtnOm0saTplLGg6aH0pO3JldHVybiBoLmlubmVySFRNTH07d2luZG93LnByZXR0eVByaW50PWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIG0oKXtmb3IodmFyIGU9d2luZG93LlBSX1NIT1VMRF9VU0VfQ09OVElOVUFUSU9OP2wubm93KCkrMjUwOkluZmluaXR5O3A8aC5sZW5ndGgmJmwubm93KCk8ZTtwKyspe3ZhciBuPWhbcF0saz1uLmNsYXNzTmFtZTtpZihrLmluZGV4T2YoInByZXR0eXByaW50Iik+PTApe3ZhciBrPWsubWF0Y2goZyksZixiO2lmKGI9Cishayl7Yj1uO2Zvcih2YXIgbz12b2lkIDAsYz1iLmZpcnN0Q2hpbGQ7YztjPWMubmV4dFNpYmxpbmcpdmFyIGk9Yy5ub2RlVHlwZSxvPWk9PT0xP28/YjpjOmk9PT0zP04udGVzdChjLm5vZGVWYWx1ZSk/YjpvOm87Yj0oZj1vPT09Yj92b2lkIDA6bykmJiJDT0RFIj09PWYudGFnTmFtZX1iJiYoaz1mLmNsYXNzTmFtZS5tYXRjaChnKSk7ayYmKGs9a1sxXSk7Yj0hMTtmb3Iobz1uLnBhcmVudE5vZGU7bztvPW8ucGFyZW50Tm9kZSlpZigoby50YWdOYW1lPT09InByZSJ8fG8udGFnTmFtZT09PSJjb2RlInx8by50YWdOYW1lPT09InhtcCIpJiZvLmNsYXNzTmFtZSYmby5jbGFzc05hbWUuaW5kZXhPZigicHJldHR5cHJpbnQiKT49MCl7Yj0hMDticmVha31ifHwoKGI9KGI9bi5jbGFzc05hbWUubWF0Y2goL1xibGluZW51bXNcYig/OjooXGQrKSk/LykpP2JbMV0mJmJbMV0ubGVuZ3RoPytiWzFdOiEwOiExKSYmRChuLGIpLGQ9e2c6ayxoOm4saTpifSxFKGQpKX19cDxoLmxlbmd0aD9zZXRUaW1lb3V0KG0sCisyNTApOmEmJmEoKX1mb3IodmFyIGU9W2RvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJwcmUiKSxkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiY29kZSIpLGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ4bXAiKV0saD1bXSxrPTA7azxlLmxlbmd0aDsrK2spZm9yKHZhciB0PTAscz1lW2tdLmxlbmd0aDt0PHM7Kyt0KWgucHVzaChlW2tdW3RdKTt2YXIgZT1xLGw9RGF0ZTtsLm5vd3x8KGw9e25vdzpmdW5jdGlvbigpe3JldHVybituZXcgRGF0ZX19KTt2YXIgcD0wLGQsZz0vXGJsYW5nKD86dWFnZSk/LShbXHcuXSspKD8hXFMpLzttKCl9O3dpbmRvdy5QUj17Y3JlYXRlU2ltcGxlTGV4ZXI6eCxyZWdpc3RlckxhbmdIYW5kbGVyOmssc291cmNlRGVjb3JhdG9yOnUsUFJfQVRUUklCX05BTUU6ImF0biIsUFJfQVRUUklCX1ZBTFVFOiJhdHYiLFBSX0NPTU1FTlQ6ImNvbSIsUFJfREVDTEFSQVRJT046ImRlYyIsUFJfS0VZV09SRDoia3dkIixQUl9MSVRFUkFMOiJsaXQiLAorUFJfTk9DT0RFOiJub2NvZGUiLFBSX1BMQUlOOiJwbG4iLFBSX1BVTkNUVUFUSU9OOiJwdW4iLFBSX1NPVVJDRToic3JjIixQUl9TVFJJTkc6InN0ciIsUFJfVEFHOiJ0YWciLFBSX1RZUEU6InR5cCJ9fSkoKTsKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvcmVxdWlyZS0xLjAuOC5taW4uanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3JlcXVpcmUtMS4wLjgubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MmNkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3JlcXVpcmUtMS4wLjgubWluLmpzCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgUmVxdWlyZUpTIDEuMC44IENvcHlyaWdodCAoYykgMjAxMC0yMDEyLCBUaGUgRG9qbyBGb3VuZGF0aW9uIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgQXZhaWxhYmxlIHZpYSB0aGUgTUlUIG9yIG5ldyBCU0QgbGljZW5zZS4KKyBzZWU6IGh0dHA6Ly9naXRodWIuY29tL2pyYnVya2UvcmVxdWlyZWpzIGZvciBkZXRhaWxzCisqLwordmFyIHJlcXVpcmVqcyxyZXF1aXJlLGRlZmluZTsKKyhmdW5jdGlvbihyKXtmdW5jdGlvbiBLKGEpe3JldHVybiBPLmNhbGwoYSk9PT0iW29iamVjdCBGdW5jdGlvbl0ifWZ1bmN0aW9uIEcoYSl7cmV0dXJuIE8uY2FsbChhKT09PSJbb2JqZWN0IEFycmF5XSJ9ZnVuY3Rpb24gJChhLGMsbCl7Zm9yKHZhciBqIGluIGMpaWYoIShqIGluIEwpJiYoIShqIGluIGEpfHxsKSlhW2pdPWNbal07cmV0dXJuIGR9ZnVuY3Rpb24gUChhLGMsZCl7YT1FcnJvcihjKyJcbmh0dHA6Ly9yZXF1aXJlanMub3JnL2RvY3MvZXJyb3JzLmh0bWwjIithKTtpZihkKWEub3JpZ2luYWxFcnJvcj1kO3JldHVybiBhfWZ1bmN0aW9uIGFhKGEsYyxkKXt2YXIgaixrLHQ7Zm9yKGo9MDt0PWNbal07aisrKXt0PXR5cGVvZiB0PT09InN0cmluZyI/e25hbWU6dH06dDtrPXQubG9jYXRpb247aWYoZCYmKCFrfHxrLmluZGV4T2YoIi8iKSE9PTAmJmsuaW5kZXhPZigiOiIpPT09LTEpKWs9ZCsiLyIrKGt8fHQubmFtZSk7YVt0Lm5hbWVdPXtuYW1lOnQubmFtZSxsb2NhdGlvbjprfHwKK3QubmFtZSxtYWluOih0Lm1haW58fCJtYWluIikucmVwbGFjZShmYSwiIikucmVwbGFjZShiYSwiIil9fX1mdW5jdGlvbiBWKGEsYyl7YS5ob2xkUmVhZHk/YS5ob2xkUmVhZHkoYyk6Yz9hLnJlYWR5V2FpdCs9MTphLnJlYWR5KCEwKX1mdW5jdGlvbiBnYShhKXtmdW5jdGlvbiBjKGIsZil7dmFyIGcsbTtpZihiJiZiLmNoYXJBdCgwKT09PSIuIilpZihmKXtxLnBrZ3NbZl0/Zj1bZl06KGY9Zi5zcGxpdCgiLyIpLGY9Zi5zbGljZSgwLGYubGVuZ3RoLTEpKTtnPWI9Zi5jb25jYXQoYi5zcGxpdCgiLyIpKTt2YXIgYTtmb3IobT0wO2E9Z1ttXTttKyspaWYoYT09PSIuIilnLnNwbGljZShtLDEpLG0tPTE7ZWxzZSBpZihhPT09Ii4uIilpZihtPT09MSYmKGdbMl09PT0iLi4ifHxnWzBdPT09Ii4uIikpYnJlYWs7ZWxzZSBtPjAmJihnLnNwbGljZShtLTEsMiksbS09Mik7bT1xLnBrZ3NbZz1iWzBdXTtiPWIuam9pbigiLyIpO20mJmI9PT1nKyIvIittLm1haW4mJihiPWcpfWVsc2UgYi5pbmRleE9mKCIuLyIpPT09CiswJiYoYj1iLnN1YnN0cmluZygyKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gbChiLGYpe3ZhciBnPWI/Yi5pbmRleE9mKCIhIik6LTEsbT1udWxsLGE9Zj9mLm5hbWU6bnVsbCxoPWIsZSxkO2chPT0tMSYmKG09Yi5zdWJzdHJpbmcoMCxnKSxiPWIuc3Vic3RyaW5nKGcrMSxiLmxlbmd0aCkpO20mJihtPWMobSxhKSk7YiYmKG0/ZT0oZz1uW21dKSYmZy5ub3JtYWxpemU/Zy5ub3JtYWxpemUoYixmdW5jdGlvbihiKXtyZXR1cm4gYyhiLGEpfSk6YyhiLGEpOihlPWMoYixhKSxkPUdbZV0sZHx8KGQ9aS5uYW1lVG9VcmwoYixudWxsLGYpLEdbZV09ZCkpKTtyZXR1cm57cHJlZml4Om0sbmFtZTplLHBhcmVudE1hcDpmLHVybDpkLG9yaWdpbmFsTmFtZTpoLGZ1bGxOYW1lOm0/bSsiISIrKGV8fCIiKTplfX1mdW5jdGlvbiBqKCl7dmFyIGI9ITAsZj1xLnByaW9yaXR5V2FpdCxnLGE7aWYoZil7Zm9yKGE9MDtnPWZbYV07YSsrKWlmKCFzW2ddKXtiPSExO2JyZWFrfWImJmRlbGV0ZSBxLnByaW9yaXR5V2FpdH1yZXR1cm4gYn0KK2Z1bmN0aW9uIGsoYixmLGcpe3JldHVybiBmdW5jdGlvbigpe3ZhciBhPWhhLmNhbGwoYXJndW1lbnRzLDApLGM7aWYoZyYmSyhjPWFbYS5sZW5ndGgtMV0pKWMuX19yZXF1aXJlSnNCdWlsZD0hMDthLnB1c2goZik7cmV0dXJuIGIuYXBwbHkobnVsbCxhKX19ZnVuY3Rpb24gdChiLGYsZyl7Zj1rKGd8fGkucmVxdWlyZSxiLGYpOyQoZix7bmFtZVRvVXJsOmsoaS5uYW1lVG9VcmwsYiksdG9Vcmw6ayhpLnRvVXJsLGIpLGRlZmluZWQ6ayhpLnJlcXVpcmVEZWZpbmVkLGIpLHNwZWNpZmllZDprKGkucmVxdWlyZVNwZWNpZmllZCxiKSxpc0Jyb3dzZXI6ZC5pc0Jyb3dzZXJ9KTtyZXR1cm4gZn1mdW5jdGlvbiBwKGIpe3ZhciBmLGcsYSxjPWIuY2FsbGJhY2ssaD1iLm1hcCxlPWguZnVsbE5hbWUsY2E9Yi5kZXBzO2E9Yi5saXN0ZW5lcnM7dmFyIGo9cS5yZXF1aXJlRXhlY0NifHxkLmV4ZWNDYjtpZihjJiZLKGMpKXtpZihxLmNhdGNoRXJyb3IuZGVmaW5lKXRyeXtnPWooZSxiLmNhbGxiYWNrLAorY2EsbltlXSl9Y2F0Y2goayl7Zj1rfWVsc2UgZz1qKGUsYi5jYWxsYmFjayxjYSxuW2VdKTtpZihlKShjPWIuY2pzTW9kdWxlKSYmYy5leHBvcnRzIT09ciYmYy5leHBvcnRzIT09bltlXT9nPW5bZV09Yi5janNNb2R1bGUuZXhwb3J0czpnPT09ciYmYi51c2luZ0V4cG9ydHM/Zz1uW2VdOihuW2VdPWcsSFtlXSYmKFRbZV09ITApKX1lbHNlIGUmJihnPW5bZV09YyxIW2VdJiYoVFtlXT0hMCkpO2lmKHhbYi5pZF0pZGVsZXRlIHhbYi5pZF0sYi5pc0RvbmU9ITAsaS53YWl0Q291bnQtPTEsaS53YWl0Q291bnQ9PT0wJiYoSj1bXSk7ZGVsZXRlIE1bZV07aWYoZC5vblJlc291cmNlTG9hZCYmIWIucGxhY2Vob2xkZXIpZC5vblJlc291cmNlTG9hZChpLGgsYi5kZXBBcnJheSk7aWYoZilyZXR1cm4gZz0oZT9sKGUpLnVybDoiIil8fGYuZmlsZU5hbWV8fGYuc291cmNlVVJMLGE9Zi5tb2R1bGVUcmVlLGY9UCgiZGVmaW5lZXJyb3IiLCdFcnJvciBldmFsdWF0aW5nIG1vZHVsZSAiJytlKyciIGF0IGxvY2F0aW9uICInKworZysnIjpcbicrZisiXG5maWxlTmFtZToiK2crIlxubGluZU51bWJlcjogIisoZi5saW5lTnVtYmVyfHxmLmxpbmUpLGYpLGYubW9kdWxlTmFtZT1lLGYubW9kdWxlVHJlZT1hLGQub25FcnJvcihmKTtmb3IoZj0wO2M9YVtmXTtmKyspYyhnKTtyZXR1cm4gcn1mdW5jdGlvbiB1KGIsZil7cmV0dXJuIGZ1bmN0aW9uKGcpe2IuZGVwRG9uZVtmXXx8KGIuZGVwRG9uZVtmXT0hMCxiLmRlcHNbZl09ZyxiLmRlcENvdW50LT0xLGIuZGVwQ291bnR8fHAoYikpfX1mdW5jdGlvbiBvKGIsZil7dmFyIGc9Zi5tYXAsYT1nLmZ1bGxOYW1lLGM9Zy5uYW1lLGg9TltiXXx8KE5bYl09bltiXSksZTtpZighZi5sb2FkaW5nKWYubG9hZGluZz0hMCxlPWZ1bmN0aW9uKGIpe2YuY2FsbGJhY2s9ZnVuY3Rpb24oKXtyZXR1cm4gYn07cChmKTtzW2YuaWRdPSEwO0EoKX0sZS5mcm9tVGV4dD1mdW5jdGlvbihiLGYpe3ZhciBnPVE7c1tiXT0hMTtpLnNjcmlwdENvdW50Kz0xO2kuZmFrZVtiXT0hMDtnJiYoUT0hMSk7CitkLmV4ZWMoZik7ZyYmKFE9ITApO2kuY29tcGxldGVMb2FkKGIpfSxhIGluIG4/ZShuW2FdKTpoLmxvYWQoYyx0KGcucGFyZW50TWFwLCEwLGZ1bmN0aW9uKGIsYSl7dmFyIGM9W10sZSxtO2ZvcihlPTA7bT1iW2VdO2UrKyltPWwobSxnLnBhcmVudE1hcCksYltlXT1tLmZ1bGxOYW1lLG0ucHJlZml4fHxjLnB1c2goYltlXSk7Zi5tb2R1bGVEZXBzPShmLm1vZHVsZURlcHN8fFtdKS5jb25jYXQoYyk7cmV0dXJuIGkucmVxdWlyZShiLGEpfSksZSxxKX1mdW5jdGlvbiB5KGIpe3hbYi5pZF18fCh4W2IuaWRdPWIsSi5wdXNoKGIpLGkud2FpdENvdW50Kz0xKX1mdW5jdGlvbiBEKGIpe3RoaXMubGlzdGVuZXJzLnB1c2goYil9ZnVuY3Rpb24gdihiLGYpe3ZhciBnPWIuZnVsbE5hbWUsYT1iLnByZWZpeCxjPWE/TlthXXx8KE5bYV09blthXSk6bnVsbCxoLGU7ZyYmKGg9TVtnXSk7aWYoIWgmJihlPSEwLGg9e2lkOihhJiYhYz9PKysgKyJfX3BAOiI6IiIpKyhnfHwiX19yQCIrTysrKSxtYXA6YiwKK2RlcENvdW50OjAsZGVwRG9uZTpbXSxkZXBDYWxsYmFja3M6W10sZGVwczpbXSxsaXN0ZW5lcnM6W10sYWRkOkR9LEJbaC5pZF09ITAsZyYmKCFhfHxOW2FdKSkpTVtnXT1oO2EmJiFjPyhnPWwoYSksYSBpbiBuJiYhblthXSYmKGRlbGV0ZSBuW2FdLGRlbGV0ZSBSW2cudXJsXSksYT12KGcsITApLGEuYWRkKGZ1bmN0aW9uKCl7dmFyIGY9bChiLm9yaWdpbmFsTmFtZSxiLnBhcmVudE1hcCksZj12KGYsITApO2gucGxhY2Vob2xkZXI9ITA7Zi5hZGQoZnVuY3Rpb24oYil7aC5jYWxsYmFjaz1mdW5jdGlvbigpe3JldHVybiBifTtwKGgpfSl9KSk6ZSYmZiYmKHNbaC5pZF09ITEsaS5wYXVzZWQucHVzaChoKSx5KGgpKTtyZXR1cm4gaH1mdW5jdGlvbiBDKGIsZixhLGMpe3ZhciBiPWwoYixjKSxkPWIubmFtZSxoPWIuZnVsbE5hbWUsZT12KGIpLGo9ZS5pZCxrPWUuZGVwcyxvO2lmKGgpe2lmKGggaW4gbnx8c1tqXT09PSEwfHxoPT09ImpxdWVyeSImJnEualF1ZXJ5JiZxLmpRdWVyeSE9PQorYSgpLmZuLmpxdWVyeSlyZXR1cm47QltqXT0hMDtzW2pdPSEwO2g9PT0ianF1ZXJ5IiYmYSYmVyhhKCkpfWUuZGVwQXJyYXk9ZjtlLmNhbGxiYWNrPWE7Zm9yKGE9MDthPGYubGVuZ3RoO2ErKylpZihqPWZbYV0paj1sKGosZD9iOmMpLG89ai5mdWxsTmFtZSxmW2FdPW8sbz09PSJyZXF1aXJlIj9rW2FdPXQoYik6bz09PSJleHBvcnRzIj8oa1thXT1uW2hdPXt9LGUudXNpbmdFeHBvcnRzPSEwKTpvPT09Im1vZHVsZSI/ZS5janNNb2R1bGU9a1thXT17aWQ6ZCx1cmk6ZD9pLm5hbWVUb1VybChkLG51bGwsYyk6cixleHBvcnRzOm5baF19Om8gaW4gbiYmIShvIGluIHgpJiYoIShoIGluIEgpfHxoIGluIEgmJlRbb10pP2tbYV09bltvXTooaCBpbiBIJiYoSFtvXT0hMCxkZWxldGUgbltvXSxSW2oudXJsXT0hMSksZS5kZXBDb3VudCs9MSxlLmRlcENhbGxiYWNrc1thXT11KGUsYSksdihqLCEwKS5hZGQoZS5kZXBDYWxsYmFja3NbYV0pKTtlLmRlcENvdW50P3koZSk6cChlKX1mdW5jdGlvbiB3KGIpe0MuYXBwbHkobnVsbCwKK2IpfWZ1bmN0aW9uIEYoYixmKXt2YXIgYT1iLm1hcC5mdWxsTmFtZSxjPWIuZGVwQXJyYXksZD0hMCxoLGUsaSxsO2lmKGIuaXNEb25lfHwhYXx8IXNbYV0pcmV0dXJuIGw7aWYoZlthXSlyZXR1cm4gYjtmW2FdPSEwO2lmKGMpe2ZvcihoPTA7aDxjLmxlbmd0aDtoKyspe2U9Y1toXTtpZighc1tlXSYmIWlhW2VdKXtkPSExO2JyZWFrfWlmKChpPXhbZV0pJiYhaS5pc0RvbmUmJnNbZV0paWYobD1GKGksZikpYnJlYWt9ZHx8KGw9cixkZWxldGUgZlthXSl9cmV0dXJuIGx9ZnVuY3Rpb24geihiLGEpe3ZhciBnPWIubWFwLmZ1bGxOYW1lLGM9Yi5kZXBBcnJheSxkLGgsZSxpO2lmKGIuaXNEb25lfHwhZ3x8IXNbZ10pcmV0dXJuIHI7aWYoZyl7aWYoYVtnXSlyZXR1cm4gbltnXTthW2ddPSEwfWlmKGMpZm9yKGQ9MDtkPGMubGVuZ3RoO2QrKylpZihoPWNbZF0paWYoKGU9bChoKS5wcmVmaXgpJiYoaT14W2VdKSYmeihpLGEpLChlPXhbaF0pJiYhZS5pc0RvbmUmJnNbaF0paD16KGUsYSksYi5kZXBDYWxsYmFja3NbZF0oaCk7CityZXR1cm4gbltnXX1mdW5jdGlvbiBFKCl7dmFyIGI9cS53YWl0U2Vjb25kcyoxRTMsYj1iJiZpLnN0YXJ0VGltZStiPChuZXcgRGF0ZSkuZ2V0VGltZSgpLGE9IiIsYz0hMSxsPSExLGs9W10saCxlO2lmKGkucGF1c2VkQ291bnQ+MClyZXR1cm4gcjtpZihxLnByaW9yaXR5V2FpdClpZihqKCkpQSgpO2Vsc2UgcmV0dXJuIHI7Zm9yKGggaW4gcylpZighKGggaW4gTCkmJihjPSEwLCFzW2hdKSlpZihiKWErPWgrIiAiO2Vsc2UgaWYobD0hMCxoLmluZGV4T2YoIiEiKT09PS0xKXtrPVtdO2JyZWFrfWVsc2UoZT1NW2hdJiZNW2hdLm1vZHVsZURlcHMpJiZrLnB1c2guYXBwbHkoayxlKTtpZighYyYmIWkud2FpdENvdW50KXJldHVybiByO2lmKGImJmEpcmV0dXJuIGI9UCgidGltZW91dCIsIkxvYWQgdGltZW91dCBmb3IgbW9kdWxlczogIithKSxiLnJlcXVpcmVUeXBlPSJ0aW1lb3V0IixiLnJlcXVpcmVNb2R1bGVzPWEsYi5jb250ZXh0TmFtZT1pLmNvbnRleHROYW1lLGQub25FcnJvcihiKTsKK2lmKGwmJmsubGVuZ3RoKWZvcihhPTA7aD14W2tbYV1dO2ErKylpZihoPUYoaCx7fSkpe3ooaCx7fSk7YnJlYWt9aWYoIWImJihsfHxpLnNjcmlwdENvdW50KSl7aWYoKEl8fGRhKSYmIVgpWD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7WD0wO0UoKX0sNTApO3JldHVybiByfWlmKGkud2FpdENvdW50KXtmb3IoYT0wO2g9SlthXTthKyspeihoLHt9KTtpLnBhdXNlZC5sZW5ndGgmJkEoKTtZPDUmJihZKz0xLEUoKSl9WT0wO2QuY2hlY2tSZWFkeVN0YXRlKCk7cmV0dXJuIHJ9dmFyIGksQSxxPXt3YWl0U2Vjb25kczo3LGJhc2VVcmw6Ii4vIixwYXRoczp7fSxwa2dzOnt9LGNhdGNoRXJyb3I6e319LFM9W10sQj17cmVxdWlyZTohMCxleHBvcnRzOiEwLG1vZHVsZTohMH0sRz17fSxuPXt9LHM9e30seD17fSxKPVtdLFI9e30sTz0wLE09e30sTj17fSxIPXt9LFQ9e30sWj0wO1c9ZnVuY3Rpb24oYil7aWYoIWkualF1ZXJ5JiYoYj1ifHwodHlwZW9mIGpRdWVyeSE9PSJ1bmRlZmluZWQiP2pRdWVyeToKK251bGwpKSYmIShxLmpRdWVyeSYmYi5mbi5qcXVlcnkhPT1xLmpRdWVyeSkmJigiaG9sZFJlYWR5ImluIGJ8fCJyZWFkeVdhaXQiaW4gYikpaWYoaS5qUXVlcnk9Yix3KFsianF1ZXJ5IixbXSxmdW5jdGlvbigpe3JldHVybiBqUXVlcnl9XSksaS5zY3JpcHRDb3VudClWKGIsITApLGkualF1ZXJ5SW5jcmVtZW50ZWQ9ITB9O0E9ZnVuY3Rpb24oKXt2YXIgYixhLGMsbCxrLGg7aS50YWtlR2xvYmFsUXVldWUoKTtaKz0xO2lmKGkuc2NyaXB0Q291bnQ8PTApaS5zY3JpcHRDb3VudD0wO2Zvcig7Uy5sZW5ndGg7KWlmKGI9Uy5zaGlmdCgpLGJbMF09PT1udWxsKXJldHVybiBkLm9uRXJyb3IoUCgibWlzbWF0Y2giLCJNaXNtYXRjaGVkIGFub255bW91cyBkZWZpbmUoKSBtb2R1bGU6ICIrYltiLmxlbmd0aC0xXSkpO2Vsc2UgdyhiKTtpZighcS5wcmlvcml0eVdhaXR8fGooKSlmb3IoO2kucGF1c2VkLmxlbmd0aDspe2s9aS5wYXVzZWQ7aS5wYXVzZWRDb3VudCs9ay5sZW5ndGg7aS5wYXVzZWQ9CitbXTtmb3IobD0wO2I9a1tsXTtsKyspYT1iLm1hcCxjPWEudXJsLGg9YS5mdWxsTmFtZSxhLnByZWZpeD9vKGEucHJlZml4LGIpOiFSW2NdJiYhc1toXSYmKChxLnJlcXVpcmVMb2FkfHxkLmxvYWQpKGksaCxjKSxjLmluZGV4T2YoImVtcHR5OiIpIT09MCYmKFJbY109ITApKTtpLnN0YXJ0VGltZT0obmV3IERhdGUpLmdldFRpbWUoKTtpLnBhdXNlZENvdW50LT1rLmxlbmd0aH1aPT09MSYmRSgpO1otPTE7cmV0dXJuIHJ9O2k9e2NvbnRleHROYW1lOmEsY29uZmlnOnEsZGVmUXVldWU6Uyx3YWl0aW5nOngsd2FpdENvdW50OjAsc3BlY2lmaWVkOkIsbG9hZGVkOnMsdXJsTWFwOkcsdXJsRmV0Y2hlZDpSLHNjcmlwdENvdW50OjAsZGVmaW5lZDpuLHBhdXNlZDpbXSxwYXVzZWRDb3VudDowLHBsdWdpbnM6TixuZWVkRnVsbEV4ZWM6SCxmYWtlOnt9LGZ1bGxFeGVjOlQsbWFuYWdlckNhbGxiYWNrczpNLG1ha2VNb2R1bGVNYXA6bCxub3JtYWxpemU6Yyxjb25maWd1cmU6ZnVuY3Rpb24oYil7dmFyIGEsCitjLGQ7Yi5iYXNlVXJsJiZiLmJhc2VVcmwuY2hhckF0KGIuYmFzZVVybC5sZW5ndGgtMSkhPT0iLyImJihiLmJhc2VVcmwrPSIvIik7YT1xLnBhdGhzO2Q9cS5wa2dzOyQocSxiLCEwKTtpZihiLnBhdGhzKXtmb3IoYyBpbiBiLnBhdGhzKWMgaW4gTHx8KGFbY109Yi5wYXRoc1tjXSk7cS5wYXRocz1hfWlmKChhPWIucGFja2FnZVBhdGhzKXx8Yi5wYWNrYWdlcyl7aWYoYSlmb3IoYyBpbiBhKWMgaW4gTHx8YWEoZCxhW2NdLGMpO2IucGFja2FnZXMmJmFhKGQsYi5wYWNrYWdlcyk7cS5wa2dzPWR9aWYoYi5wcmlvcml0eSljPWkucmVxdWlyZVdhaXQsaS5yZXF1aXJlV2FpdD0hMSxBKCksaS5yZXF1aXJlKGIucHJpb3JpdHkpLEEoKSxpLnJlcXVpcmVXYWl0PWMscS5wcmlvcml0eVdhaXQ9Yi5wcmlvcml0eTtpZihiLmRlcHN8fGIuY2FsbGJhY2spaS5yZXF1aXJlKGIuZGVwc3x8W10sYi5jYWxsYmFjayl9LHJlcXVpcmVEZWZpbmVkOmZ1bmN0aW9uKGIsYSl7cmV0dXJuIGwoYixhKS5mdWxsTmFtZSBpbgorbn0scmVxdWlyZVNwZWNpZmllZDpmdW5jdGlvbihiLGEpe3JldHVybiBsKGIsYSkuZnVsbE5hbWUgaW4gQn0scmVxdWlyZTpmdW5jdGlvbihiLGMsZyl7aWYodHlwZW9mIGI9PT0ic3RyaW5nIil7aWYoSyhjKSlyZXR1cm4gZC5vbkVycm9yKFAoInJlcXVpcmVhcmdzIiwiSW52YWxpZCByZXF1aXJlIGNhbGwiKSk7aWYoZC5nZXQpcmV0dXJuIGQuZ2V0KGksYixjKTtjPWwoYixjKTtiPWMuZnVsbE5hbWU7cmV0dXJuIShiIGluIG4pP2Qub25FcnJvcihQKCJub3Rsb2FkZWQiLCJNb2R1bGUgbmFtZSAnIitjLmZ1bGxOYW1lKyInIGhhcyBub3QgYmVlbiBsb2FkZWQgeWV0IGZvciBjb250ZXh0OiAiK2EpKTpuW2JdfShiJiZiLmxlbmd0aHx8YykmJkMobnVsbCxiLGMsZyk7aWYoIWkucmVxdWlyZVdhaXQpZm9yKDshaS5zY3JpcHRDb3VudCYmaS5wYXVzZWQubGVuZ3RoOylBKCk7cmV0dXJuIGkucmVxdWlyZX0sdGFrZUdsb2JhbFF1ZXVlOmZ1bmN0aW9uKCl7VS5sZW5ndGgmJihqYS5hcHBseShpLmRlZlF1ZXVlLAorW2kuZGVmUXVldWUubGVuZ3RoLTEsMF0uY29uY2F0KFUpKSxVPVtdKX0sY29tcGxldGVMb2FkOmZ1bmN0aW9uKGIpe3ZhciBhO2ZvcihpLnRha2VHbG9iYWxRdWV1ZSgpO1MubGVuZ3RoOylpZihhPVMuc2hpZnQoKSxhWzBdPT09bnVsbCl7YVswXT1iO2JyZWFrfWVsc2UgaWYoYVswXT09PWIpYnJlYWs7ZWxzZSB3KGEpLGE9bnVsbDthP3coYSk6dyhbYixbXSxiPT09ImpxdWVyeSImJnR5cGVvZiBqUXVlcnkhPT0idW5kZWZpbmVkIj9mdW5jdGlvbigpe3JldHVybiBqUXVlcnl9Om51bGxdKTtkLmlzQXN5bmMmJihpLnNjcmlwdENvdW50LT0xKTtBKCk7ZC5pc0FzeW5jfHwoaS5zY3JpcHRDb3VudC09MSl9LHRvVXJsOmZ1bmN0aW9uKGIsYSl7dmFyIGM9Yi5sYXN0SW5kZXhPZigiLiIpLGQ9bnVsbDtjIT09LTEmJihkPWIuc3Vic3RyaW5nKGMsYi5sZW5ndGgpLGI9Yi5zdWJzdHJpbmcoMCxjKSk7cmV0dXJuIGkubmFtZVRvVXJsKGIsZCxhKX0sbmFtZVRvVXJsOmZ1bmN0aW9uKGIsYSxnKXt2YXIgbCwKK2ssaCxlLGo9aS5jb25maWcsYj1jKGIsZyYmZy5mdWxsTmFtZSk7aWYoZC5qc0V4dFJlZ0V4cC50ZXN0KGIpKWE9YisoYT9hOiIiKTtlbHNle2w9ai5wYXRocztrPWoucGtncztnPWIuc3BsaXQoIi8iKTtmb3IoZT1nLmxlbmd0aDtlPjA7ZS0tKWlmKGg9Zy5zbGljZSgwLGUpLmpvaW4oIi8iKSxsW2hdKXtnLnNwbGljZSgwLGUsbFtoXSk7YnJlYWt9ZWxzZSBpZihoPWtbaF0pe2I9Yj09PWgubmFtZT9oLmxvY2F0aW9uKyIvIitoLm1haW46aC5sb2NhdGlvbjtnLnNwbGljZSgwLGUsYik7YnJlYWt9YT1nLmpvaW4oIi8iKSsoYXx8Ii5qcyIpO2E9KGEuY2hhckF0KDApPT09Ii8ifHxhLm1hdGNoKC9eW1x3XCtcLlwtXSs6Lyk/IiI6ai5iYXNlVXJsKSthfXJldHVybiBqLnVybEFyZ3M/YSsoKGEuaW5kZXhPZigiPyIpPT09LTE/Ij8iOiImIikrai51cmxBcmdzKTphfX07aS5qUXVlcnlDaGVjaz1XO2kucmVzdW1lPUE7cmV0dXJuIGl9ZnVuY3Rpb24ga2EoKXt2YXIgYSxjLGQ7aWYoQyYmQy5yZWFkeVN0YXRlPT09CisiaW50ZXJhY3RpdmUiKXJldHVybiBDO2E9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO2ZvcihjPWEubGVuZ3RoLTE7Yz4tMSYmKGQ9YVtjXSk7Yy0tKWlmKGQucmVhZHlTdGF0ZT09PSJpbnRlcmFjdGl2ZSIpcmV0dXJuIEM9ZDtyZXR1cm4gbnVsbH12YXIgbGE9LyhcL1wqKFtcc1xTXSo/KVwqXC98KFteOl18XilcL1wvKC4qKSQpL21nLG1hPS9yZXF1aXJlXChccypbIiddKFteJyJcc10rKVsiJ11ccypcKS9nLGZhPS9eXC5cLy8sYmE9L1wuanMkLyxPPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsdT1BcnJheS5wcm90b3R5cGUsaGE9dS5zbGljZSxqYT11LnNwbGljZSxJPSEhKHR5cGVvZiB3aW5kb3chPT0idW5kZWZpbmVkIiYmbmF2aWdhdG9yJiZkb2N1bWVudCksZGE9IUkmJnR5cGVvZiBpbXBvcnRTY3JpcHRzIT09InVuZGVmaW5lZCIsbmE9SSYmbmF2aWdhdG9yLnBsYXRmb3JtPT09IlBMQVlTVEFUSU9OIDMiPy9eY29tcGxldGUkLzovXihjb21wbGV0ZXxsb2FkZWQpJC8sCitlYT10eXBlb2Ygb3BlcmEhPT0idW5kZWZpbmVkIiYmb3BlcmEudG9TdHJpbmcoKT09PSJbb2JqZWN0IE9wZXJhXSIsTD17fSxEPXt9LFU9W10sQz1udWxsLFk9MCxRPSExLGlhPXtyZXF1aXJlOiEwLG1vZHVsZTohMCxleHBvcnRzOiEwfSxkLHU9e30sSix5LHYsRSxvLHcsRixCLHosVyxYO2lmKHR5cGVvZiBkZWZpbmU9PT0idW5kZWZpbmVkIil7aWYodHlwZW9mIHJlcXVpcmVqcyE9PSJ1bmRlZmluZWQiKWlmKEsocmVxdWlyZWpzKSlyZXR1cm47ZWxzZSB1PXJlcXVpcmVqcyxyZXF1aXJlanM9cjt0eXBlb2YgcmVxdWlyZSE9PSJ1bmRlZmluZWQiJiYhSyhyZXF1aXJlKSYmKHU9cmVxdWlyZSxyZXF1aXJlPXIpO2Q9cmVxdWlyZWpzPWZ1bmN0aW9uKGEsYyxkKXt2YXIgaj0iXyIsazshRyhhKSYmdHlwZW9mIGEhPT0ic3RyaW5nIiYmKGs9YSxHKGMpPyhhPWMsYz1kKTphPVtdKTtpZihrJiZrLmNvbnRleHQpaj1rLmNvbnRleHQ7ZD1EW2pdfHwoRFtqXT1nYShqKSk7ayYmZC5jb25maWd1cmUoayk7CityZXR1cm4gZC5yZXF1aXJlKGEsYyl9O2QuY29uZmlnPWZ1bmN0aW9uKGEpe3JldHVybiBkKGEpfTtyZXF1aXJlfHwocmVxdWlyZT1kKTtkLnRvVXJsPWZ1bmN0aW9uKGEpe3JldHVybiBELl8udG9VcmwoYSl9O2QudmVyc2lvbj0iMS4wLjgiO2QuanNFeHRSZWdFeHA9L15cL3w6fFw/fFwuanMkLzt5PWQucz17Y29udGV4dHM6RCxza2lwQXN5bmM6e319O2lmKGQuaXNBc3luYz1kLmlzQnJvd3Nlcj1JKWlmKHY9eS5oZWFkPWRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0sRT1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYmFzZSIpWzBdKXY9eS5oZWFkPUUucGFyZW50Tm9kZTtkLm9uRXJyb3I9ZnVuY3Rpb24oYSl7dGhyb3cgYTt9O2QubG9hZD1mdW5jdGlvbihhLGMsbCl7ZC5yZXNvdXJjZXNSZWFkeSghMSk7YS5zY3JpcHRDb3VudCs9MTtkLmF0dGFjaChsLGEsYyk7aWYoYS5qUXVlcnkmJiFhLmpRdWVyeUluY3JlbWVudGVkKVYoYS5qUXVlcnksITApLAorYS5qUXVlcnlJbmNyZW1lbnRlZD0hMH07ZGVmaW5lPWZ1bmN0aW9uKGEsYyxkKXt2YXIgaixrO3R5cGVvZiBhIT09InN0cmluZyImJihkPWMsYz1hLGE9bnVsbCk7RyhjKXx8KGQ9YyxjPVtdKTshYy5sZW5ndGgmJksoZCkmJmQubGVuZ3RoJiYoZC50b1N0cmluZygpLnJlcGxhY2UobGEsIiIpLnJlcGxhY2UobWEsZnVuY3Rpb24oYSxkKXtjLnB1c2goZCl9KSxjPShkLmxlbmd0aD09PTE/WyJyZXF1aXJlIl06WyJyZXF1aXJlIiwiZXhwb3J0cyIsIm1vZHVsZSJdKS5jb25jYXQoYykpO2lmKFEmJihqPUp8fGthKCkpKWF8fChhPWouZ2V0QXR0cmlidXRlKCJkYXRhLXJlcXVpcmVtb2R1bGUiKSksaz1EW2ouZ2V0QXR0cmlidXRlKCJkYXRhLXJlcXVpcmVjb250ZXh0IildOyhrP2suZGVmUXVldWU6VSkucHVzaChbYSxjLGRdKTtyZXR1cm4gcn07ZGVmaW5lLmFtZD17bXVsdGl2ZXJzaW9uOiEwLHBsdWdpbnM6ITAsalF1ZXJ5OiEwfTtkLmV4ZWM9ZnVuY3Rpb24oYSl7cmV0dXJuIGV2YWwoYSl9OworZC5leGVjQ2I9ZnVuY3Rpb24oYSxjLGQsail7cmV0dXJuIGMuYXBwbHkoaixkKX07ZC5hZGRTY3JpcHRUb0RvbT1mdW5jdGlvbihhKXtKPWE7RT92Lmluc2VydEJlZm9yZShhLEUpOnYuYXBwZW5kQ2hpbGQoYSk7Sj1udWxsfTtkLm9uU2NyaXB0TG9hZD1mdW5jdGlvbihhKXt2YXIgYz1hLmN1cnJlbnRUYXJnZXR8fGEuc3JjRWxlbWVudCxsO2lmKGEudHlwZT09PSJsb2FkInx8YyYmbmEudGVzdChjLnJlYWR5U3RhdGUpKUM9bnVsbCxhPWMuZ2V0QXR0cmlidXRlKCJkYXRhLXJlcXVpcmVjb250ZXh0IiksbD1jLmdldEF0dHJpYnV0ZSgiZGF0YS1yZXF1aXJlbW9kdWxlIiksRFthXS5jb21wbGV0ZUxvYWQobCksYy5kZXRhY2hFdmVudCYmIWVhP2MuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsZC5vblNjcmlwdExvYWQpOmMucmVtb3ZlRXZlbnRMaXN0ZW5lcigibG9hZCIsZC5vblNjcmlwdExvYWQsITEpfTtkLmF0dGFjaD1mdW5jdGlvbihhLGMsbCxqLGssbyl7dmFyIHA7CitpZihJKXJldHVybiBqPWp8fGQub25TY3JpcHRMb2FkLHA9YyYmYy5jb25maWcmJmMuY29uZmlnLnhodG1sP2RvY3VtZW50LmNyZWF0ZUVsZW1lbnROUygiaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCIsImh0bWw6c2NyaXB0Iik6ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0IikscC50eXBlPWt8fGMmJmMuY29uZmlnLnNjcmlwdFR5cGV8fCJ0ZXh0L2phdmFzY3JpcHQiLHAuY2hhcnNldD0idXRmLTgiLHAuYXN5bmM9IXkuc2tpcEFzeW5jW2FdLGMmJnAuc2V0QXR0cmlidXRlKCJkYXRhLXJlcXVpcmVjb250ZXh0IixjLmNvbnRleHROYW1lKSxwLnNldEF0dHJpYnV0ZSgiZGF0YS1yZXF1aXJlbW9kdWxlIixsKSxwLmF0dGFjaEV2ZW50JiYhKHAuYXR0YWNoRXZlbnQudG9TdHJpbmcmJnAuYXR0YWNoRXZlbnQudG9TdHJpbmcoKS5pbmRleE9mKCJbbmF0aXZlIGNvZGVdIik8MCkmJiFlYT8oUT0hMCxvP3Aub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKCl7aWYocC5yZWFkeVN0YXRlPT09CisibG9hZGVkIilwLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLHAuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsaiksbyhwKX06cC5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixqKSk6cC5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixqLCExKSxwLnNyYz1hLG98fGQuYWRkU2NyaXB0VG9Eb20ocCkscDtlbHNlIGRhJiYoaW1wb3J0U2NyaXB0cyhhKSxjLmNvbXBsZXRlTG9hZChsKSk7cmV0dXJuIG51bGx9O2lmKEkpe289ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInNjcmlwdCIpO2ZvcihCPW8ubGVuZ3RoLTE7Qj4tMSYmKHc9b1tCXSk7Qi0tKXtpZighdil2PXcucGFyZW50Tm9kZTtpZihGPXcuZ2V0QXR0cmlidXRlKCJkYXRhLW1haW4iKSl7aWYoIXUuYmFzZVVybClvPUYuc3BsaXQoIi8iKSx3PW8ucG9wKCksbz1vLmxlbmd0aD9vLmpvaW4oIi8iKSsiLyI6Ii4vIix1LmJhc2VVcmw9byxGPXcucmVwbGFjZShiYSwiIik7dS5kZXBzPXUuZGVwcz91LmRlcHMuY29uY2F0KEYpOgorW0ZdO2JyZWFrfX19ZC5jaGVja1JlYWR5U3RhdGU9ZnVuY3Rpb24oKXt2YXIgYT15LmNvbnRleHRzLGM7Zm9yKGMgaW4gYSlpZighKGMgaW4gTCkmJmFbY10ud2FpdENvdW50KXJldHVybjtkLnJlc291cmNlc1JlYWR5KCEwKX07ZC5yZXNvdXJjZXNSZWFkeT1mdW5jdGlvbihhKXt2YXIgYyxsO2QucmVzb3VyY2VzRG9uZT1hO2lmKGQucmVzb3VyY2VzRG9uZSlmb3IobCBpbiBhPXkuY29udGV4dHMsYSlpZighKGwgaW4gTCkmJihjPWFbbF0sYy5qUXVlcnlJbmNyZW1lbnRlZCkpVihjLmpRdWVyeSwhMSksYy5qUXVlcnlJbmNyZW1lbnRlZD0hMX07ZC5wYWdlTG9hZGVkPWZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQucmVhZHlTdGF0ZSE9PSJjb21wbGV0ZSIpZG9jdW1lbnQucmVhZHlTdGF0ZT0iY29tcGxldGUifTtpZihJJiZkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyJiYhZG9jdW1lbnQucmVhZHlTdGF0ZSlkb2N1bWVudC5yZWFkeVN0YXRlPSJsb2FkaW5nIix3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigibG9hZCIsCitkLnBhZ2VMb2FkZWQsITEpO2QodSk7aWYoZC5pc0FzeW5jJiZ0eXBlb2Ygc2V0VGltZW91dCE9PSJ1bmRlZmluZWQiKXo9eS5jb250ZXh0c1t1LmNvbnRleHR8fCJfIl0sei5yZXF1aXJlV2FpdD0hMCxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ei5yZXF1aXJlV2FpdD0hMTt6LnNjcmlwdENvdW50fHx6LnJlc3VtZSgpO2QuY2hlY2tSZWFkeVN0YXRlKCl9LDApfX0pKCk7CmRpZmYgLS1naXQgYS9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3NsaWRlLWNvbnRyb2xsZXIuanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3NsaWRlLWNvbnRyb2xsZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTcxMzE3YgotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvc2xpZGUtY29udHJvbGxlci5qcwpAQCAtMCwwICsxLDEwOSBAQAorKGZ1bmN0aW9uKHdpbmRvdykgeworCit2YXIgT1JJR0lOXyA9IGxvY2F0aW9uLnByb3RvY29sICsgJy8vJyArIGxvY2F0aW9uLmhvc3Q7CisKK2Z1bmN0aW9uIFNsaWRlQ29udHJvbGxlcigpIHsKKyAgdGhpcy5wb3B1cCA9IG51bGw7CisgIHRoaXMuaXNQb3B1cCA9IHdpbmRvdy5vcGVuZXI7CisKKyAgaWYgKHRoaXMuc2V0dXBEb25lKCkpIHsKKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbWVzc2FnZScsIHRoaXMub25NZXNzYWdlXy5iaW5kKHRoaXMpLCBmYWxzZSk7CisKKyAgICAvLyBDbG9zZSBwb3B1cHMgaWYgd2UgcmVsb2FkIHRoZSBtYWluIHdpbmRvdy4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JldW5sb2FkJywgZnVuY3Rpb24oZSkgeworICAgICAgaWYgKHRoaXMucG9wdXApIHsKKyAgICAgICAgdGhpcy5wb3B1cC5jbG9zZSgpOworICAgICAgfQorICAgIH0uYmluZCh0aGlzKSwgZmFsc2UpOworICB9Cit9CisKK1NsaWRlQ29udHJvbGxlci5QUkVTRU5URVJfTU9ERV9QQVJBTSA9ICdwcmVzZW50bWUnOworCitTbGlkZUNvbnRyb2xsZXIucHJvdG90eXBlLnNldHVwRG9uZSA9IGZ1bmN0aW9uKCkgeworICB2YXIgcGFyYW1zID0gbG9jYXRpb24uc2VhcmNoLnN1YnN0cmluZygxKS5zcGxpdCgnJicpLm1hcChmdW5jdGlvbihlbCkgeworICAgIHJldHVybiBlbC5zcGxpdCgnPScpOworICB9KTsKKworICB2YXIgcHJlc2VudE1lID0gbnVsbDsKKyAgZm9yICh2YXIgaSA9IDAsIHBhcmFtOyBwYXJhbSA9IHBhcmFtc1tpXTsgKytpKSB7CisgICAgaWYgKHBhcmFtWzBdLnRvTG93ZXJDYXNlKCkgPT0gU2xpZGVDb250cm9sbGVyLlBSRVNFTlRFUl9NT0RFX1BBUkFNKSB7CisgICAgICBwcmVzZW50TWUgPSBwYXJhbVsxXSA9PSAndHJ1ZSc7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKworICBpZiAocHJlc2VudE1lICE9PSBudWxsKSB7CisgICAgbG9jYWxTdG9yYWdlLkVOQUJMRV9QUkVTRU5UT1JfTU9ERSA9IHByZXNlbnRNZTsKKyAgICAvLyBUT0RPOiB1c2Ugd2luZG93Lmhpc3RvcnkucHVzaFN0YXRlIHRvIHVwZGF0ZSBVUkwgaW5zdGVhZCBvZiB0aGUgcmVkaXJlY3QuCisgICAgaWYgKHdpbmRvdy5oaXN0b3J5LnJlcGxhY2VTdGF0ZSkgeworICAgICAgd2luZG93Lmhpc3RvcnkucmVwbGFjZVN0YXRlKHt9LCAnJywgbG9jYXRpb24ucGF0aG5hbWUpOworICAgIH0gZWxzZSB7CisgICAgICBsb2NhdGlvbi5yZXBsYWNlKGxvY2F0aW9uLnBhdGhuYW1lKTsKKyAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgIH0KKworICB2YXIgZW5hYmxlUHJlc2VudGVyTW9kZSA9IGxvY2FsU3RvcmFnZS5nZXRJdGVtKCdFTkFCTEVfUFJFU0VOVE9SX01PREUnKTsKKyAgaWYgKGVuYWJsZVByZXNlbnRlck1vZGUgJiYgSlNPTi5wYXJzZShlbmFibGVQcmVzZW50ZXJNb2RlKSkgeworICAgIC8vIE9ubHkgb3BlbiBwb3B1cCBmcm9tIG1haW4gZGVjay4gRG9uJ3Qgd2FudCByZWN1cnNpdmUgcG9wdXAgb3BlbmluZyEKKyAgICBpZiAoIXRoaXMuaXNQb3B1cCkgeworICAgICAgdmFyIG9wdHMgPSAnbWVudWJhcj1ubyxsb2NhdGlvbj15ZXMscmVzaXphYmxlPXllcyxzY3JvbGxiYXJzPW5vLHN0YXR1cz1ubyc7CisgICAgICB0aGlzLnBvcHVwID0gd2luZG93Lm9wZW4obG9jYXRpb24uaHJlZiwgJ215d2luZG93Jywgb3B0cyk7CisKKyAgICAgIC8vIExvYWRpbmcgaW4gdGhlIHBvcHVwPyBUcmlnZ2VyIHRoZSBob3RrZXkgZm9yIHR1cm5pbmcgcHJlc2VudGVyIG1vZGUgb24uCisgICAgICB0aGlzLnBvcHVwLmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbihlKSB7CisgICAgICAgIHZhciBldnQgPSB0aGlzLnBvcHVwLmRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOworICAgICAgICBldnQuaW5pdEV2ZW50KCdrZXlkb3duJywgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIGV2dC5rZXlDb2RlID0gJ1AnLmNoYXJDb2RlQXQoMCk7CisgICAgICAgIHRoaXMucG9wdXAuZG9jdW1lbnQuZGlzcGF0Y2hFdmVudChldnQpOworICAgICAgICAvLyB0aGlzLnBvcHVwLmRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgnd2l0aC1ub3RlcycpOworICAgICAgICAvLyBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ3BvcHVwJyk7CisgICAgICB9LmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gdHJ1ZTsKK30KKworU2xpZGVDb250cm9sbGVyLnByb3RvdHlwZS5vbk1lc3NhZ2VfID0gZnVuY3Rpb24oZSkgeworICB2YXIgZGF0YSA9IGUuZGF0YTsKKworICAvLyBSZXN0cmljdCBtZXNzYWdlcyB0byBiZWluZyBmcm9tIHRoaXMgb3JpZ2luLiBBbGxvdyBsb2NhbCBkZXZlbG9wbWV0CisgIC8vIGZyb20gZmlsZTovLyB0aG91Z2guCisgIC8vIFRPRE86IEl0IHdvdWxkIGJlIGRvcGUgaWYgRkYgaW1wbGVtZW50ZWQgbG9jYXRpb24ub3JpZ2luIQorICBpZiAoZS5vcmlnaW4gIT0gT1JJR0lOXyAmJiBPUklHSU5fLmluZGV4T2YoJ2ZpbGU6Ly8nKSAhPSAwKSB7CisgICAgYWxlcnQoJ1NvbWVvbmUgdHJpZWQgdG8gcG9zdE1lc3NhZ2UgZnJvbSBhbiB1bmtub3duIG9yaWdpbicpOworICAgIHJldHVybjsKKyAgfQorCisgIC8vIGlmIChlLnNvdXJjZS5sb2NhdGlvbi5ob3N0bmFtZSAhPSAnbG9jYWxob3N0JykgeworICAvLyAgIGFsZXJ0KCdTb21lb25lIHRyaWVkIHRvIHBvc3RNZXNzYWdlIGZyb20gYW4gdW5rbm93biBvcmlnaW4nKTsKKyAgLy8gICByZXR1cm47CisgIC8vIH0KKworICBpZiAoJ2tleUNvZGUnIGluIGRhdGEpIHsKKyAgICB2YXIgZXZ0ID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ0V2ZW50Jyk7CisgICAgZXZ0LmluaXRFdmVudCgna2V5ZG93bicsIHRydWUsIHRydWUpOworICAgIGV2dC5rZXlDb2RlID0gZGF0YS5rZXlDb2RlOworICAgIGRvY3VtZW50LmRpc3BhdGNoRXZlbnQoZXZ0KTsKKyAgfQorfTsKKworU2xpZGVDb250cm9sbGVyLnByb3RvdHlwZS5zZW5kTXNnID0gZnVuY3Rpb24obXNnKSB7CisgIC8vIC8vIFNlbmQgbWVzc2FnZSB0byBwb3B1cCB3aW5kb3cuCisgIC8vIGlmICh0aGlzLnBvcHVwKSB7CisgIC8vICAgdGhpcy5wb3B1cC5wb3N0TWVzc2FnZShtc2csIE9SSUdJTl8pOworICAvLyB9CisKKyAgLy8gU2VuZCBtZXNzYWdlIHRvIG1haW4gd2luZG93LgorICBpZiAodGhpcy5pc1BvcHVwKSB7CisgICAgLy8gVE9ETzogSXQgd291bGQgYmUgZG9wZSBpZiBGRiBpbXBsZW1lbnRlZCBsb2NhdGlvbi5vcmlnaW4uCisgICAgd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZShtc2csICcqJyk7CisgIH0KK307CisKK3dpbmRvdy5TbGlkZUNvbnRyb2xsZXIgPSBTbGlkZUNvbnRyb2xsZXI7CisKK30pKHdpbmRvdyk7CisKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvc2xpZGUtZGVjay5qcyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvc2xpZGUtZGVjay5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGI5ZGM1Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9qcy9zbGlkZS1kZWNrLmpzCkBAIC0wLDAgKzEsNzY4IEBACisvKioKKyAqIEBhdXRob3JzIEx1a2UgTWFoZQorICogQGF1dGhvcnMgRXJpYyBCaWRlbG1hbgorICogQGZpbGVvdmVydmlldyBUT0RPCisgKi8KK2RvY3VtZW50LmNhbmNlbEZ1bGxTY3JlZW4gPSBkb2N1bWVudC53ZWJraXRDYW5jZWxGdWxsU2NyZWVuIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQubW96Q2FuY2VsRnVsbFNjcmVlbjsKKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqLworZnVuY3Rpb24gU2xpZGVEZWNrKGVsKSB7CisgIHRoaXMuY3VyU2xpZGVfID0gMDsKKyAgdGhpcy5wcmV2U2xpZGVfID0gMDsKKyAgdGhpcy5jb25maWdfID0gbnVsbDsKKyAgdGhpcy5jb250YWluZXIgPSBlbCB8fCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzbGlkZXMnKTsKKyAgdGhpcy5zbGlkZXMgPSBbXTsKKyAgdGhpcy5jb250cm9sbGVyID0gbnVsbDsKKworICB0aGlzLmdldEN1cnJlbnRTbGlkZUZyb21IYXNoXygpOworCisgIC8vIENhbGwgdGhpcyBleHBsaWNpdGx5LiBNb2Rlcm5penIubG9hZCB3b24ndCBiZSBkb25lIHVudGlsIGFmdGVyIERPTSBsb2FkLgorICB0aGlzLm9uRG9tTG9hZGVkXy5iaW5kKHRoaXMpKCk7Cit9CisKKy8qKgorICogQGNvbnN0CisgKiBAcHJpdmF0ZQorICovCitTbGlkZURlY2sucHJvdG90eXBlLlNMSURFX0NMQVNTRVNfID0gWworICAnZmFyLXBhc3QnLCAncGFzdCcsICdjdXJyZW50JywgJ25leHQnLCAnZmFyLW5leHQnXTsKKworLyoqCisgKiBAY29uc3QKKyAqIEBwcml2YXRlCisgKi8KK1NsaWRlRGVjay5wcm90b3R5cGUuQ1NTX0RJUl8gPSAndGhlbWUvY3NzLyc7CisKKy8qKgorICogQHByaXZhdGUKKyAqLworU2xpZGVEZWNrLnByb3RvdHlwZS5nZXRDdXJyZW50U2xpZGVGcm9tSGFzaF8gPSBmdW5jdGlvbigpIHsKKyAgdmFyIHNsaWRlTm8gPSBwYXJzZUludChkb2N1bWVudC5sb2NhdGlvbi5oYXNoLnN1YnN0cigxKSk7CisKKyAgaWYgKHNsaWRlTm8pIHsKKyAgICB0aGlzLmN1clNsaWRlXyA9IHNsaWRlTm8gLSAxOworICB9IGVsc2UgeworICAgIHRoaXMuY3VyU2xpZGVfID0gMDsKKyAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge251bWJlcn0gc2xpZGVObworICovCitTbGlkZURlY2sucHJvdG90eXBlLmxvYWRTbGlkZSA9IGZ1bmN0aW9uKHNsaWRlTm8pIHsKKyAgaWYgKHNsaWRlTm8pIHsKKyAgICB0aGlzLmN1clNsaWRlXyA9IHNsaWRlTm8gLSAxOworICAgIHRoaXMudXBkYXRlU2xpZGVzXygpOworICB9Cit9OworCisvKioKKyAqIEBwcml2YXRlCisgKi8KK1NsaWRlRGVjay5wcm90b3R5cGUub25Eb21Mb2FkZWRfID0gZnVuY3Rpb24oZSkgeworICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoJ2xvYWRlZCcpOyAvLyBBZGQgbG9hZGVkIGNsYXNzIGZvciB0ZW1wbGF0ZXMgdG8gdXNlLgorCisgIHRoaXMuc2xpZGVzID0gdGhpcy5jb250YWluZXIucXVlcnlTZWxlY3RvckFsbCgnc2xpZGU6bm90KFtoaWRkZW5dKTpub3QoLmJhY2tkcm9wKScpOworCisgIC8vIElmIHdlJ3JlIG9uIGEgc21hcnRwaG9uZSwgYXBwbHkgc3BlY2lhbCBzYXVjZS4KKyAgaWYgKE1vZGVybml6ci5tcSgnb25seSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0ODBweCknKSkgeworICAgIC8vIHZhciBzdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2xpbmsnKTsKKyAgICAvLyBzdHlsZS5yZWwgPSAnc3R5bGVzaGVldCc7CisgICAgLy8gc3R5bGUudHlwZSA9ICd0ZXh0L2Nzcyc7CisgICAgLy8gc3R5bGUuaHJlZiA9IHRoaXMuQ1NTX0RJUl8gKyAncGhvbmUuY3NzJzsKKyAgICAvLyBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdoZWFkJykuYXBwZW5kQ2hpbGQoc3R5bGUpOworCisgICAgLy8gTm8gbmVlZCBmb3Igd2lkZXNjcmVlbiBsYXlvdXQgb24gYSBwaG9uZS4KKyAgICB0aGlzLmNvbnRhaW5lci5jbGFzc0xpc3QucmVtb3ZlKCdsYXlvdXQtd2lkZXNjcmVlbicpOworICB9CisKKyAgdGhpcy5sb2FkQ29uZmlnXyhTTElERV9DT05GSUcpOworICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzXygpOworICB0aGlzLnVwZGF0ZVNsaWRlc18oKTsKKworICAvLyBBZGQgc2xpZGUgbnVtYmVycyBhbmQgdG90YWwgc2xpZGUgY291bnQgbWV0YWRhdGEgdG8gZWFjaCBzbGlkZS4KKyAgdmFyIHRoYXQgPSB0aGlzOworICBmb3IgKHZhciBpID0gMCwgc2xpZGU7IHNsaWRlID0gdGhpcy5zbGlkZXNbaV07ICsraSkgeworICAgIHNsaWRlLmRhdGFzZXQuc2xpZGVOdW0gPSBpICsgMTsKKyAgICBzbGlkZS5kYXRhc2V0LnRvdGFsU2xpZGVzID0gdGhpcy5zbGlkZXMubGVuZ3RoOworCisgICAgc2xpZGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbihlKSB7CisgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ292ZXJ2aWV3JykpIHsKKyAgICAgICAgdGhhdC5sb2FkU2xpZGUodGhpcy5kYXRhc2V0LnNsaWRlTnVtKTsKKyAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpOworICAgICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgICAgICAgICB0aGF0LnRvZ2dsZU92ZXJ2aWV3KCk7CisgICAgICAgIH0sIDUwMCk7CisgICAgICB9CisgICAgfSwgZmFsc2UpOworICB9CisKKyAgLy8gTm90ZTogdGhpcyBuZWVkcyB0byBjb21lIGFmdGVyIGFkZEV2ZW50TGlzdGVuZXJzXygpLCB3aGljaCBhZGRzIGEKKyAgLy8gJ2tleWRvd24nIGxpc3RlbmVyIHRoYXQgdGhpcyBjb250cm9sbGVyIHJlbGllcyBvbi4KKyAgLy8gQWxzbywgbm8gbmVlZCB0byBzZXQgdGhpcyB1cCBpZiB3ZSdyZSBvbiBtb2JpbGUuCisgIGlmICghTW9kZXJuaXpyLnRvdWNoKSB7CisgICAgdGhpcy5jb250cm9sbGVyID0gbmV3IFNsaWRlQ29udHJvbGxlcih0aGlzKTsKKyAgICBpZiAodGhpcy5jb250cm9sbGVyLmlzUG9wdXApIHsKKyAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgncG9wdXAnKTsKKyAgICB9CisgIH0KK307CisKKy8qKgorICogQHByaXZhdGUKKyAqLworU2xpZGVEZWNrLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyc18gPSBmdW5jdGlvbigpIHsKKyAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIHRoaXMub25Cb2R5S2V5RG93bl8uYmluZCh0aGlzKSwgZmFsc2UpOworICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncG9wc3RhdGUnLCB0aGlzLm9uUG9wU3RhdGVfLmJpbmQodGhpcyksIGZhbHNlKTsKKworICAvLyB2YXIgdHJhbnNFbmRFdmVudE5hbWVzID0geworICAvLyAgICdXZWJraXRUcmFuc2l0aW9uJzogJ3dlYmtpdFRyYW5zaXRpb25FbmQnLAorICAvLyAgICdNb3pUcmFuc2l0aW9uJzogJ3RyYW5zaXRpb25lbmQnLAorICAvLyAgICdPVHJhbnNpdGlvbic6ICdvVHJhbnNpdGlvbkVuZCcsCisgIC8vICAgJ21zVHJhbnNpdGlvbic6ICdNU1RyYW5zaXRpb25FbmQnLAorICAvLyAgICd0cmFuc2l0aW9uJzogJ3RyYW5zaXRpb25lbmQnCisgIC8vIH07CisgIC8vIAorICAvLyAvLyBGaW5kIHRoZSBjb3JyZWN0IHRyYW5zaXRpb25FbmQgdmVuZG9yIHByZWZpeC4KKyAgLy8gd2luZG93LnRyYW5zRW5kRXZlbnROYW1lID0gdHJhbnNFbmRFdmVudE5hbWVzWworICAvLyAgICAgTW9kZXJuaXpyLnByZWZpeGVkKCd0cmFuc2l0aW9uJyldOworICAvLyAKKyAgLy8gLy8gV2hlbiBzbGlkZXMgYXJlIGRvbmUgdHJhbnNpdGlvbmluZywga2lja29mZiBsb2FkaW5nIGlmcmFtZXMuCisgIC8vIC8vIE5vdGU6IHdlJ3JlIG9ubHkgbG9va2luZyBhdCBhIHNpbmdsZSB0cmFuc2l0aW9uIChvbiB0aGUgc2xpZGUpLiBUaGlzCisgIC8vIC8vIGRvZXNuJ3QgaW5jbHVkZSBhdXRvYnVpbGRzIHRoZSBzbGlkZXMgbWF5IGhhdmUuIEFsc28sIGlmIHRoZSBzbGlkZQorICAvLyAvLyB0cmFuc2l0aW9ucyBvbiBtdWx0aXBsZSBwcm9wZXJ0aWVzIChlLmcuIG5vdCBqdXN0ICdhbGwnKSwgdGhpcyBkb2Vzbid0CisgIC8vIC8vIGhhbmRsZSB0aGF0IGNhc2UuCisgIC8vIHRoaXMuY29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIodHJhbnNFbmRFdmVudE5hbWUsIGZ1bmN0aW9uKGUpIHsKKyAgLy8gICAgIHRoaXMuZW5hYmxlU2xpZGVGcmFtZXNfKHRoaXMuY3VyU2xpZGVfKTsKKyAgLy8gfS5iaW5kKHRoaXMpLCBmYWxzZSk7CisKKyAgLy8gZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignc2xpZGVlbnRlcicsIGZ1bmN0aW9uKGUpIHsKKyAgLy8gICB2YXIgc2xpZGUgPSBlLnRhcmdldDsKKyAgLy8gICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbigpIHsKKyAgLy8gICAgIHRoaXMuZW5hYmxlU2xpZGVGcmFtZXNfKGUuc2xpZGVOdW1iZXIpOworICAvLyAgICAgdGhpcy5lbmFibGVTbGlkZUZyYW1lc18oZS5zbGlkZU51bWJlciArIDEpOworICAvLyAgIH0uYmluZCh0aGlzKSwgMzAwKTsKKyAgLy8gfS5iaW5kKHRoaXMpLCBmYWxzZSk7Cit9OworCisvKioKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge0V2ZW50fSBlIFRoZSBwb3AgZXZlbnQuCisgKi8KK1NsaWRlRGVjay5wcm90b3R5cGUub25Qb3BTdGF0ZV8gPSBmdW5jdGlvbihlKSB7CisgIGlmIChlLnN0YXRlICE9IG51bGwpIHsKKyAgICB0aGlzLmN1clNsaWRlXyA9IGUuc3RhdGU7CisgICAgdGhpcy51cGRhdGVTbGlkZXNfKHRydWUpOworICB9Cit9OworCisvKioKKyAqIEBwYXJhbSB7RXZlbnR9IGUKKyAqLworU2xpZGVEZWNrLnByb3RvdHlwZS5vbkJvZHlLZXlEb3duXyA9IGZ1bmN0aW9uKGUpIHsKKyAgaWYgKC9eKGlucHV0fHRleHRhcmVhKSQvaS50ZXN0KGUudGFyZ2V0Lm5vZGVOYW1lKSB8fAorICAgICAgZS50YXJnZXQuaXNDb250ZW50RWRpdGFibGUpIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBGb3J3YXJkIGtleWRvd25zIHRvIHRoZSBtYWluIHNsaWRlcyBpZiB3ZSdyZSB0aGUgcG9wdXAuCisgIGlmICh0aGlzLmNvbnRyb2xsZXIgJiYgdGhpcy5jb250cm9sbGVyLmlzUG9wdXApIHsKKyAgICB0aGlzLmNvbnRyb2xsZXIuc2VuZE1zZyh7a2V5Q29kZTogZS5rZXlDb2RlfSk7CisgIH0KKworICBzd2l0Y2ggKGUua2V5Q29kZSkgeworICAgIGNhc2UgMTM6IC8vIEVudGVyCisgICAgICBpZiAoZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuY29udGFpbnMoJ292ZXJ2aWV3JykpIHsKKyAgICAgICAgdGhpcy50b2dnbGVPdmVydmlldygpOworICAgICAgfQorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDM5OiAvLyByaWdodCBhcnJvdworICAgIGNhc2UgMzI6IC8vIHNwYWNlCisgICAgY2FzZSAzNDogLy8gUGdEbgorICAgICAgdGhpcy5uZXh0U2xpZGUoKTsKKyAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAzNzogLy8gbGVmdCBhcnJvdworICAgIGNhc2UgODogLy8gQmFja3NwYWNlCisgICAgY2FzZSAzMzogLy8gUGdVcAorICAgICAgdGhpcy5wcmV2U2xpZGUoKTsKKyAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSA0MDogLy8gZG93biBhcnJvdworICAgICAgdGhpcy5uZXh0U2xpZGUoKTsKKyAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAzODogLy8gdXAgYXJyb3cKKyAgICAgIHRoaXMucHJldlNsaWRlKCk7CisgICAgICBlLnByZXZlbnREZWZhdWx0KCk7CisgICAgICBicmVhazsKKworICAgIGNhc2UgNzI6IC8vIEg6IFRvZ2dsZSBjb2RlIGhpZ2hsaWdodGluZworICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCdoaWdobGlnaHQtY29kZScpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDc5OiAvLyBPOiBUb2dnbGUgb3ZlcnZpZXcKKyAgICAgIHRoaXMudG9nZ2xlT3ZlcnZpZXcoKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSA4MDogLy8gUAorICAgICAgaWYgKHRoaXMuY29udHJvbGxlciAmJiB0aGlzLmNvbnRyb2xsZXIuaXNQb3B1cCkgeworICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ3dpdGgtbm90ZXMnKTsKKyAgICAgIH0gZWxzZSBpZiAodGhpcy5jb250cm9sbGVyICYmICF0aGlzLmNvbnRyb2xsZXIucG9wdXApIHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QudG9nZ2xlKCd3aXRoLW5vdGVzJyk7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgODI6IC8vIFIKKyAgICAgIC8vIFRPRE86IGltcGxlbWVudCByZWZyZXNoIG9uIG1haW4gc2xpZGVzIHdoZW4gcG9wdXAgaXMgcmVmcmVzaGVkLgorICAgICAgYnJlYWs7CisKKyAgICBjYXNlIDI3OiAvLyBFU0M6IEhpZGUgbm90ZXMgYW5kIGhpZ2hsaWdodGluZworICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVtb3ZlKCd3aXRoLW5vdGVzJyk7CisgICAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoJ2hpZ2hsaWdodC1jb2RlJyk7CisKKyAgICAgIGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnb3ZlcnZpZXcnKSkgeworICAgICAgICB0aGlzLnRvZ2dsZU92ZXJ2aWV3KCk7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgNzA6IC8vIEY6IFRvZ2dsZSBmdWxsc2NyZWVuCisgICAgICAgLy8gT25seSByZXNwZWN0ICdmJyBvbiBib2R5LiBEb24ndCB3YW50IHRvIGNhcHR1cmUga2V5cyBmcm9tIGFuIDxpbnB1dD4uCisgICAgICAgLy8gQWxzbywgaWdub3JlIGJyb3dzZXIncyBmdWxsc2NyZWVuIHNob3J0Y3V0IChjbWQrc2hpZnQrZikgc28gd2UgZG9uJ3QKKyAgICAgICAvLyBnZXQgdHJhcHBlZCBpbiBmdWxsc2NyZWVuIQorICAgICAgaWYgKGUudGFyZ2V0ID09IGRvY3VtZW50LmJvZHkgJiYgIShlLnNoaWZ0S2V5ICYmIGUubWV0YUtleSkpIHsKKyAgICAgICAgaWYgKGRvY3VtZW50Lm1vekZ1bGxTY3JlZW4gIT09IHVuZGVmaW5lZCAmJiAhZG9jdW1lbnQubW96RnVsbFNjcmVlbikgeworICAgICAgICAgIGRvY3VtZW50LmJvZHkubW96UmVxdWVzdEZ1bGxTY3JlZW4oRWxlbWVudC5BTExPV19LRVlCT0FSRF9JTlBVVCk7CisgICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQud2Via2l0SXNGdWxsU2NyZWVuICE9PSB1bmRlZmluZWQgJiYgIWRvY3VtZW50LndlYmtpdElzRnVsbFNjcmVlbikgeworICAgICAgICAgIGRvY3VtZW50LmJvZHkud2Via2l0UmVxdWVzdEZ1bGxTY3JlZW4oRWxlbWVudC5BTExPV19LRVlCT0FSRF9JTlBVVCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZG9jdW1lbnQuY2FuY2VsRnVsbFNjcmVlbigpOworICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgODc6IC8vIFc6IFRvZ2dsZSB3aWRlc2NyZWVuCisgICAgICAvLyBPbmx5IHJlc3BlY3QgJ3cnIG9uIGJvZHkuIERvbid0IHdhbnQgdG8gY2FwdHVyZSBrZXlzIGZyb20gYW4gPGlucHV0Pi4KKyAgICAgIGlmIChlLnRhcmdldCA9PSBkb2N1bWVudC5ib2R5ICYmICEoZS5zaGlmdEtleSAmJiBlLm1ldGFLZXkpKSB7CisgICAgICAgIHRoaXMuY29udGFpbmVyLmNsYXNzTGlzdC50b2dnbGUoJ2xheW91dC13aWRlc2NyZWVuJyk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgfQorfTsKKworLyoqCisgKgorICovCitTbGlkZURlY2sucHJvdG90eXBlLmZvY3VzT3ZlcnZpZXdfID0gZnVuY3Rpb24oKSB7CisgIHZhciBvdmVydmlldyA9IGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmNvbnRhaW5zKCdvdmVydmlldycpOworCisgIGZvciAodmFyIGkgPSAwLCBzbGlkZTsgc2xpZGUgPSB0aGlzLnNsaWRlc1tpXTsgaSsrKSB7CisgICAgc2xpZGUuc3R5bGVbTW9kZXJuaXpyLnByZWZpeGVkKCd0cmFuc2Zvcm0nKV0gPSBvdmVydmlldyA/CisgICAgICAgICd0cmFuc2xhdGVaKC0yNTAwcHgpIHRyYW5zbGF0ZSgnICsgKCggaSAtIHRoaXMuY3VyU2xpZGVfICkgKiAxMDUpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclLCAwJSknIDogJyc7CisgIH0KK307CisKKy8qKgorICovCitTbGlkZURlY2sucHJvdG90eXBlLnRvZ2dsZU92ZXJ2aWV3ID0gZnVuY3Rpb24oKSB7CisgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnRvZ2dsZSgnb3ZlcnZpZXcnKTsKKworICB0aGlzLmZvY3VzT3ZlcnZpZXdfKCk7Cit9OworCisvKioKKyAqIEBwcml2YXRlCisgKi8KK1NsaWRlRGVjay5wcm90b3R5cGUubG9hZENvbmZpZ18gPSBmdW5jdGlvbihjb25maWcpIHsKKyAgaWYgKCFjb25maWcpIHsKKyAgICByZXR1cm47CisgIH0KKworICB0aGlzLmNvbmZpZ18gPSBjb25maWc7CisKKyAgdmFyIHNldHRpbmdzID0gdGhpcy5jb25maWdfLnNldHRpbmdzOworCisgIHRoaXMubG9hZFRoZW1lXyhzZXR0aW5ncy50aGVtZSB8fCBbXSk7CisKKyAgaWYgKHNldHRpbmdzLmZhdkljb24pIHsKKyAgICB0aGlzLmFkZEZhdkljb25fKHNldHRpbmdzLmZhdkljb24pOworICB9CisKKyAgLy8gUHJldHR5cHJpbnQuIERlZmF1bHQgdG8gb24uCisgIGlmICghISEoJ3VzZVByZXR0aWZ5JyBpbiBzZXR0aW5ncykgfHwgc2V0dGluZ3MudXNlUHJldHRpZnkpIHsKKyAgICBwcmV0dHlQcmludCgpOworICB9CisKKyAgaWYgKHNldHRpbmdzLmFuYWx5dGljcykgeworICAgIHRoaXMubG9hZEFuYWx5dGljc18oKTsKKyAgfQorCisgIGlmIChzZXR0aW5ncy5mb250cykgeworICAgIHRoaXMuYWRkRm9udHNfKHNldHRpbmdzLmZvbnRzKTsKKyAgfQorCisgIC8vIEJ1aWxkcy4gRGVmYXVsdCB0byBvbi4KKyAgaWYgKCEhISgndXNlQnVpbGRzJyBpbiBzZXR0aW5ncykgfHwgc2V0dGluZ3MudXNlQnVpbGRzKSB7CisgICAgdGhpcy5tYWtlQnVpbGRMaXN0c18oKTsKKyAgfQorCisgIGlmIChzZXR0aW5ncy50aXRsZSkgeworICAgIGRvY3VtZW50LnRpdGxlID0gc2V0dGluZ3MudGl0bGUucmVwbGFjZSgvPGJyXC8/Pi8sICcgJykgKyAnIC0gR29vZ2xlIElPIDIwMTInOworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvbmZpZy10aXRsZV0nKS5pbm5lckhUTUwgPSBzZXR0aW5ncy50aXRsZTsKKyAgfQorCisgIGlmIChzZXR0aW5ncy5zdWJ0aXRsZSkgeworICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvbmZpZy1zdWJ0aXRsZV0nKS5pbm5lckhUTUwgPSBzZXR0aW5ncy5zdWJ0aXRsZTsKKyAgfQorCisgIGlmICh0aGlzLmNvbmZpZ18ucHJlc2VudGVycykgeworICAgIHZhciBwcmVzZW50ZXJzID0gdGhpcy5jb25maWdfLnByZXNlbnRlcnM7CisgICAgdmFyIGRhdGFDb25maWdDb250YWN0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignW2RhdGEtY29uZmlnLWNvbnRhY3RdJyk7CisKKyAgICB2YXIgaHRtbCA9IFtdOworICAgIGlmIChwcmVzZW50ZXJzLmxlbmd0aCA9PSAxKSB7CisgICAgICB2YXIgcCA9IHByZXNlbnRlcnNbMF07CisKKyAgICAgIGh0bWwgPSBbcC5uYW1lLCBwLmNvbXBhbnldLmpvaW4oJzxicj4nKTsKKworICAgICAgdmFyIGdwbHVzID0gcC5ncGx1cyA/ICc8c3Bhbj5nKzwvc3Bhbj48YSBocmVmPSInICsgcC5ncGx1cyArCisgICAgICAgICAgJyI+JyArIHAuZ3BsdXMucmVwbGFjZSgvaHR0cHM/OlwvXC8vLCAnJykgKyAnPC9hPicgOiAnJzsKKworICAgICAgdmFyIHR3aXR0ZXIgPSBwLnR3aXR0ZXIgPyAnPHNwYW4+dHdpdHRlcjwvc3Bhbj4nICsKKyAgICAgICAgICAnPGEgaHJlZj0iaHR0cDovL3R3aXR0ZXIuY29tLycgKyBwLnR3aXR0ZXIgKyAnIj4nICsKKyAgICAgICAgICBwLnR3aXR0ZXIgKyAnPC9hPicgOiAnJzsKKworICAgICAgdmFyIHd3dyA9IHAud3d3ID8gJzxzcGFuPnd3dzwvc3Bhbj48YSBocmVmPSInICsgcC53d3cgKworICAgICAgICAgICAgICAgICAgICAgICAgJyI+JyArIHAud3d3LnJlcGxhY2UoL2h0dHBzPzpcL1wvLywgJycpICsgJzwvYT4nIDogJyc7CisKKyAgICAgIHZhciBnaXRodWIgPSBwLmdpdGh1YiA/ICc8c3Bhbj5naXRodWI8L3NwYW4+PGEgaHJlZj0iJyArIHAuZ2l0aHViICsKKyAgICAgICAgICAnIj4nICsgcC5naXRodWIucmVwbGFjZSgvaHR0cHM/OlwvXC8vLCAnJykgKyAnPC9hPicgOiAnJzsKKworICAgICAgdmFyIGh0bWwyID0gW2dwbHVzLCB0d2l0dGVyLCB3d3csIGdpdGh1Yl0uam9pbignPGJyPicpOworCisgICAgICBpZiAoZGF0YUNvbmZpZ0NvbnRhY3QpIHsKKyAgICAgICAgZGF0YUNvbmZpZ0NvbnRhY3QuaW5uZXJIVE1MID0gaHRtbDI7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGZvciAodmFyIGkgPSAwLCBwOyBwID0gcHJlc2VudGVyc1tpXTsgKytpKSB7CisgICAgICAgIGh0bWwucHVzaChwLm5hbWUgKyAnIC0gJyArIHAuY29tcGFueSk7CisgICAgICB9CisgICAgICBodG1sID0gaHRtbC5qb2luKCc8YnI+Jyk7CisgICAgICBpZiAoZGF0YUNvbmZpZ0NvbnRhY3QpIHsKKyAgICAgICAgZGF0YUNvbmZpZ0NvbnRhY3QuaW5uZXJIVE1MID0gaHRtbDsKKyAgICAgIH0KKyAgICB9CisKKyAgICB2YXIgZGF0YUNvbmZpZ1ByZXNlbnRlciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvbmZpZy1wcmVzZW50ZXJdJyk7CisgICAgaWYgKGRhdGFDb25maWdQcmVzZW50ZXIpIHsKKyAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tkYXRhLWNvbmZpZy1wcmVzZW50ZXJdJykuaW5uZXJIVE1MID0gaHRtbDsKKyAgICB9CisgIH0KKworICAvKiBMZWZ0L1JpZ2h0IHRhcCBhcmVhcy4gRGVmYXVsdCB0byBpbmNsdWRpbmcuICovCisgIGlmICghISEoJ2VuYWJsZVNsaWRlQXJlYXMnIGluIHNldHRpbmdzKSB8fCBzZXR0aW5ncy5lbmFibGVTbGlkZUFyZWFzKSB7CisgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZWwuY2xhc3NMaXN0LmFkZCgnc2xpZGUtYXJlYScpOworICAgIGVsLmlkID0gJ3ByZXYtc2xpZGUtYXJlYSc7CisgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLnByZXZTbGlkZS5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoZWwpOworCisgICAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgZWwuY2xhc3NMaXN0LmFkZCgnc2xpZGUtYXJlYScpOworICAgIGVsLmlkID0gJ25leHQtc2xpZGUtYXJlYSc7CisgICAgZWwuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCB0aGlzLm5leHRTbGlkZS5iaW5kKHRoaXMpLCBmYWxzZSk7CisgICAgdGhpcy5jb250YWluZXIuYXBwZW5kQ2hpbGQoZWwpOworICB9CisKKyAgaWYgKE1vZGVybml6ci50b3VjaCAmJiAoISEhKCdlbmFibGVUb3VjaCcgaW4gc2V0dGluZ3MpIHx8CisgICAgICBzZXR0aW5ncy5lbmFibGVUb3VjaCkpIHsKKyAgICB2YXIgc2VsZiA9IHRoaXM7CisKKyAgICAvLyBOb3RlOiB0aGlzIHByZXZlbnRzIG1vYmlsZSB6b29tIGluL291dCBidXQgcHJldmVudHMgaU9TIGZyb20gZG9pbmcKKyAgICAvLyBpdCdzIGNyYXp5IHNjcm9sbCBvdmVyIGVmZmVjdCBhbmQgZGlzYWxpZ25pbmcgdGhlIHNsaWRlcy4KKyAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2hzdGFydCcsIGZ1bmN0aW9uKGUpIHsKKyAgICAgIGUucHJldmVudERlZmF1bHQoKTsKKyAgICB9LCBmYWxzZSk7CisKKyAgICB2YXIgaGFtbWVyID0gbmV3IEhhbW1lcih0aGlzLmNvbnRhaW5lcik7CisgICAgaGFtbWVyLm9uZHJhZ2VuZCA9IGZ1bmN0aW9uKGUpIHsKKyAgICAgIGlmIChlLmRpcmVjdGlvbiA9PSAncmlnaHQnIHx8IGUuZGlyZWN0aW9uID09ICdkb3duJykgeworICAgICAgICBzZWxmLnByZXZTbGlkZSgpOworICAgICAgfSBlbHNlIGlmIChlLmRpcmVjdGlvbiA9PSAnbGVmdCcgfHwgZS5kaXJlY3Rpb24gPT0gJ3VwJykgeworICAgICAgICBzZWxmLm5leHRTbGlkZSgpOworICAgICAgfQorICAgIH07CisgIH0KK307CisKKy8qKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7QXJyYXkuPHN0cmluZz59IGZvbnRzCisgKi8KK1NsaWRlRGVjay5wcm90b3R5cGUuYWRkRm9udHNfID0gZnVuY3Rpb24oZm9udHMpIHsKKyAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpOworICBlbC5yZWwgPSAnc3R5bGVzaGVldCc7CisgIGVsLmhyZWYgPSAoJ2h0dHBzOicgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wgPyAnaHR0cHMnIDogJ2h0dHAnKSArCisgICAgICAnOi8vZm9udHMuZ29vZ2xlYXBpcy5jb20vY3NzP2ZhbWlseT0nICsgZm9udHMuam9pbignfCcpICsgJyZ2Mic7CisgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKS5hcHBlbmRDaGlsZChlbCk7Cit9OworCisvKioKKyAqIEBwcml2YXRlCisgKi8KK1NsaWRlRGVjay5wcm90b3R5cGUuYnVpbGROZXh0SXRlbV8gPSBmdW5jdGlvbigpIHsKKyAgdmFyIHNsaWRlID0gdGhpcy5zbGlkZXNbdGhpcy5jdXJTbGlkZV9dOworICB2YXIgdG9CdWlsZCA9IHNsaWRlLnF1ZXJ5U2VsZWN0b3IoJy50by1idWlsZCcpOworICB2YXIgYnVpbHQgPSBzbGlkZS5xdWVyeVNlbGVjdG9yKCcuYnVpbGQtY3VycmVudCcpOworCisgIGlmIChidWlsdCkgeworICAgIGJ1aWx0LmNsYXNzTGlzdC5yZW1vdmUoJ2J1aWxkLWN1cnJlbnQnKTsKKyAgICBpZiAoYnVpbHQuY2xhc3NMaXN0LmNvbnRhaW5zKCdmYWRlJykpIHsKKyAgICAgIGJ1aWx0LmNsYXNzTGlzdC5hZGQoJ2J1aWxkLWZhZGUnKTsKKyAgICB9CisgIH0KKworICBpZiAoIXRvQnVpbGQpIHsKKyAgICB2YXIgaXRlbXMgPSBzbGlkZS5xdWVyeVNlbGVjdG9yQWxsKCcuYnVpbGQtZmFkZScpOworICAgIGZvciAodmFyIGogPSAwLCBpdGVtOyBpdGVtID0gaXRlbXNbal07IGorKykgeworICAgICAgaXRlbS5jbGFzc0xpc3QucmVtb3ZlKCdidWlsZC1mYWRlJyk7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKKyAgfQorCisgIHRvQnVpbGQuY2xhc3NMaXN0LnJlbW92ZSgndG8tYnVpbGQnKTsKKyAgdG9CdWlsZC5jbGFzc0xpc3QuYWRkKCdidWlsZC1jdXJyZW50Jyk7CisKKyAgcmV0dXJuIHRydWU7Cit9OworCisvKioKKyAqIEBwYXJhbSB7Ym9vbGVhbj19IG9wdF9kb250UHVzaAorICovCitTbGlkZURlY2sucHJvdG90eXBlLnByZXZTbGlkZSA9IGZ1bmN0aW9uKG9wdF9kb250UHVzaCkgeworICBpZiAodGhpcy5jdXJTbGlkZV8gPiAwKSB7CisgICAgdmFyIGJvZHlDbGFzc0xpc3QgPSBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdDsKKyAgICBib2R5Q2xhc3NMaXN0LnJlbW92ZSgnaGlnaGxpZ2h0LWNvZGUnKTsKKworICAgIC8vIFRvZ2dsZSBvZmYgc3BlYWtlciBub3RlcyBpZiB0aGV5J3JlIHNob3dpbmcgd2hlbiB3ZSBtb3ZlIGJhY2t3YXJkcyBvbiB0aGUKKyAgICAvLyBtYWluIHNsaWRlcy4gSWYgd2UncmUgdGhlIHNwZWFrZXIgbm90ZXMgcG9wdXAsIGxlYXZlIHRoZW0gdXAuCisgICAgaWYgKHRoaXMuY29udHJvbGxlciAmJiAhdGhpcy5jb250cm9sbGVyLmlzUG9wdXApIHsKKyAgICAgIGJvZHlDbGFzc0xpc3QucmVtb3ZlKCd3aXRoLW5vdGVzJyk7CisgICAgfSBlbHNlIGlmICghdGhpcy5jb250cm9sbGVyKSB7CisgICAgICBib2R5Q2xhc3NMaXN0LnJlbW92ZSgnd2l0aC1ub3RlcycpOworICAgIH0KKworICAgIHRoaXMucHJldlNsaWRlXyA9IHRoaXMuY3VyU2xpZGVfLS07CisKKyAgICB0aGlzLnVwZGF0ZVNsaWRlc18ob3B0X2RvbnRQdXNoKTsKKyAgfQorfTsKKworLyoqCisgKiBAcGFyYW0ge2Jvb2xlYW49fSBvcHRfZG9udFB1c2gKKyAqLworU2xpZGVEZWNrLnByb3RvdHlwZS5uZXh0U2xpZGUgPSBmdW5jdGlvbihvcHRfZG9udFB1c2gpIHsKKyAgaWYgKCFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnb3ZlcnZpZXcnKSAmJiB0aGlzLmJ1aWxkTmV4dEl0ZW1fKCkpIHsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAodGhpcy5jdXJTbGlkZV8gPCB0aGlzLnNsaWRlcy5sZW5ndGggLSAxKSB7CisgICAgdmFyIGJvZHlDbGFzc0xpc3QgPSBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdDsKKyAgICBib2R5Q2xhc3NMaXN0LnJlbW92ZSgnaGlnaGxpZ2h0LWNvZGUnKTsKKworICAgIC8vIFRvZ2dsZSBvZmYgc3BlYWtlciBub3RlcyBpZiB0aGV5J3JlIHNob3dpbmcgd2hlbiB3ZSBhZHZhbmNlZCBvbiB0aGUgbWFpbgorICAgIC8vIHNsaWRlcy4gSWYgd2UncmUgdGhlIHNwZWFrZXIgbm90ZXMgcG9wdXAsIGxlYXZlIHRoZW0gdXAuCisgICAgaWYgKHRoaXMuY29udHJvbGxlciAmJiAhdGhpcy5jb250cm9sbGVyLmlzUG9wdXApIHsKKyAgICAgIGJvZHlDbGFzc0xpc3QucmVtb3ZlKCd3aXRoLW5vdGVzJyk7CisgICAgfSBlbHNlIGlmICghdGhpcy5jb250cm9sbGVyKSB7CisgICAgICBib2R5Q2xhc3NMaXN0LnJlbW92ZSgnd2l0aC1ub3RlcycpOworICAgIH0KKworICAgIHRoaXMucHJldlNsaWRlXyA9IHRoaXMuY3VyU2xpZGVfKys7CisKKyAgICB0aGlzLnVwZGF0ZVNsaWRlc18ob3B0X2RvbnRQdXNoKTsKKyAgfQorfTsKKworLyogU2xpZGUgZXZlbnRzICovCisKKy8qKgorICogVHJpZ2dlcmVkIHdoZW4gYSBzbGlkZSBlbnRlci9sZWF2ZSBldmVudCBzaG91bGQgYmUgZGlzcGF0Y2hlZC4KKyAqCisgKiBAcGFyYW0ge3N0cmluZ30gdHlwZSBUaGUgdHlwZSBvZiBldmVudCB0byB0cmlnZ2VyCisgKiAgICAgKGUuZy4gJ3NsaWRlZW50ZXInLCAnc2xpZGVsZWF2ZScpLgorICogQHBhcmFtIHtudW1iZXJ9IHNsaWRlTm8gVGhlIGluZGV4IG9mIHRoZSBzbGlkZSB0aGF0IGlzIGJlaW5nIGxlZnQuCisgKi8KK1NsaWRlRGVjay5wcm90b3R5cGUudHJpZ2dlclNsaWRlRXZlbnQgPSBmdW5jdGlvbih0eXBlLCBzbGlkZU5vKSB7CisgIHZhciBlbCA9IHRoaXMuZ2V0U2xpZGVFbF8oc2xpZGVObyk7CisgIGlmICghZWwpIHsKKyAgICByZXR1cm47CisgIH0KKworICAvLyBDYWxsIG9uc2xpZGVlbnRlci9vbnNsaWRlbGVhdmUgaWYgdGhlIGF0dHJpYnV0ZSBpcyBkZWZpbmVkIG9uIHRoaXMgc2xpZGUuCisgIHZhciBmdW5jID0gZWwuZ2V0QXR0cmlidXRlKHR5cGUpOworICBpZiAoZnVuYykgeworICAgIG5ldyBGdW5jdGlvbihmdW5jKS5jYWxsKGVsKTsgLy8gVE9ETzogRG9uJ3QgdXNlIG5ldyBGdW5jdGlvbigpIDooCisgIH0KKworICAvLyBEaXNwYXRjaCBldmVudCB0byBsaXN0ZW5lcnMgc2V0dXAgdXNpbmcgYWRkRXZlbnRMaXN0ZW5lci4KKyAgdmFyIGV2dCA9IGRvY3VtZW50LmNyZWF0ZUV2ZW50KCdFdmVudCcpOworICBldnQuaW5pdEV2ZW50KHR5cGUsIHRydWUsIHRydWUpOworICBldnQuc2xpZGVOdW1iZXIgPSBzbGlkZU5vICsgMTsgLy8gTWFrZSBpdCByZWFkYWJsZQorICBldnQuc2xpZGUgPSBlbDsKKworICBlbC5kaXNwYXRjaEV2ZW50KGV2dCk7Cit9OworCisvKioKKyAqIEBwcml2YXRlCisgKi8KK1NsaWRlRGVjay5wcm90b3R5cGUudXBkYXRlU2xpZGVzXyA9IGZ1bmN0aW9uKG9wdF9kb250UHVzaCkgeworICB2YXIgZG9udFB1c2ggPSBvcHRfZG9udFB1c2ggfHwgZmFsc2U7CisKKyAgdmFyIGN1clNsaWRlID0gdGhpcy5jdXJTbGlkZV87CisgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5zbGlkZXMubGVuZ3RoOyArK2kpIHsKKyAgICBzd2l0Y2ggKGkpIHsKKyAgICAgIGNhc2UgY3VyU2xpZGUgLSAyOgorICAgICAgICB0aGlzLnVwZGF0ZVNsaWRlQ2xhc3NfKGksICdmYXItcGFzdCcpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgY3VyU2xpZGUgLSAxOgorICAgICAgICB0aGlzLnVwZGF0ZVNsaWRlQ2xhc3NfKGksICdwYXN0Jyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBjdXJTbGlkZToKKyAgICAgICAgdGhpcy51cGRhdGVTbGlkZUNsYXNzXyhpLCAnY3VycmVudCcpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgY3VyU2xpZGUgKyAxOgorICAgICAgICB0aGlzLnVwZGF0ZVNsaWRlQ2xhc3NfKGksICduZXh0Jyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBjdXJTbGlkZSArIDI6CisgICAgICAgIHRoaXMudXBkYXRlU2xpZGVDbGFzc18oaSwgJ2Zhci1uZXh0Jyk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgdGhpcy51cGRhdGVTbGlkZUNsYXNzXyhpKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9OworCisgIHRoaXMudHJpZ2dlclNsaWRlRXZlbnQoJ3NsaWRlbGVhdmUnLCB0aGlzLnByZXZTbGlkZV8pOworICB0aGlzLnRyaWdnZXJTbGlkZUV2ZW50KCdzbGlkZWVudGVyJywgY3VyU2xpZGUpOworCisvLyB3aW5kb3cuc2V0VGltZW91dCh0aGlzLmRpc2FibGVTbGlkZUZyYW1lc18uYmluZCh0aGlzLCBjdXJTbGlkZSAtIDIpLCAzMDEpOworLy8gCisvLyB0aGlzLmVuYWJsZVNsaWRlRnJhbWVzXyhjdXJTbGlkZSAtIDEpOyAvLyBQcmV2aW91cyBzbGlkZS4KKy8vIHRoaXMuZW5hYmxlU2xpZGVGcmFtZXNfKGN1clNsaWRlICsgMSk7IC8vIEN1cnJlbnQgc2xpZGUuCisvLyB0aGlzLmVuYWJsZVNsaWRlRnJhbWVzXyhjdXJTbGlkZSArIDIpOyAvLyBOZXh0IHNsaWRlLgorCisgICAvLyBFbmFibGUgY3VycmVudCBzbGlkZSdzIGlmcmFtZXMgKG5lZWRlZCBmb3IgcGFnZSBsb2F0IGF0IGN1cnJlbnQgc2xpZGUpLgorICAgdGhpcy5lbmFibGVTbGlkZUZyYW1lc18oY3VyU2xpZGUgKyAxKTsKKworICAgLy8gTm8gd2F5IHRvIHRlbGwgd2hlbiBhbGwgc2xpZGUgdHJhbnNpdGlvbnMgKyBhdXRvIGJ1aWxkcyBhcmUgZG9uZS4KKyAgIC8vIEdpdmUgb3Vyc2VsdmVzIGEgZ29vZCBidWZmZXIgdG8gcHJlbG9hZCB0aGUgbmV4dCBzbGlkZSdzIGlmcmFtZXMuCisgICB3aW5kb3cuc2V0VGltZW91dCh0aGlzLmVuYWJsZVNsaWRlRnJhbWVzXy5iaW5kKHRoaXMsIGN1clNsaWRlICsgMiksIDEwMDApOworCisgIHRoaXMudXBkYXRlSGFzaF8oZG9udFB1c2gpOworCisgIGlmIChkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5jb250YWlucygnb3ZlcnZpZXcnKSkgeworICAgIHRoaXMuZm9jdXNPdmVydmlld18oKTsKKyAgICByZXR1cm47CisgIH0KKworfTsKKworLyoqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtudW1iZXJ9IHNsaWRlTm8KKyAqLworU2xpZGVEZWNrLnByb3RvdHlwZS5lbmFibGVTbGlkZUZyYW1lc18gPSBmdW5jdGlvbihzbGlkZU5vKSB7CisgIHZhciBlbCA9IHRoaXMuc2xpZGVzW3NsaWRlTm8gLSAxXTsKKyAgaWYgKCFlbCkgeworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBmcmFtZXMgPSBlbC5xdWVyeVNlbGVjdG9yQWxsKCdpZnJhbWUnKTsKKyAgZm9yICh2YXIgaSA9IDAsIGZyYW1lOyBmcmFtZSA9IGZyYW1lc1tpXTsgaSsrKSB7CisgICAgdGhpcy5lbmFibGVGcmFtZV8oZnJhbWUpOworICB9Cit9OworCisvKioKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge251bWJlcn0gc2xpZGVObworICovCitTbGlkZURlY2sucHJvdG90eXBlLmVuYWJsZUZyYW1lXyA9IGZ1bmN0aW9uKGZyYW1lKSB7CisgIHZhciBzcmMgPSBmcmFtZS5kYXRhc2V0LnNyYzsKKyAgaWYgKHNyYyAmJiBmcmFtZS5zcmMgIT0gc3JjKSB7CisgICAgZnJhbWUuc3JjID0gc3JjOworICB9Cit9OworCisvKioKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge251bWJlcn0gc2xpZGVObworICovCitTbGlkZURlY2sucHJvdG90eXBlLmRpc2FibGVTbGlkZUZyYW1lc18gPSBmdW5jdGlvbihzbGlkZU5vKSB7CisgIHZhciBlbCA9IHRoaXMuc2xpZGVzW3NsaWRlTm8gLSAxXTsKKyAgaWYgKCFlbCkgeworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBmcmFtZXMgPSBlbC5xdWVyeVNlbGVjdG9yQWxsKCdpZnJhbWUnKTsKKyAgZm9yICh2YXIgaSA9IDAsIGZyYW1lOyBmcmFtZSA9IGZyYW1lc1tpXTsgaSsrKSB7CisgICAgdGhpcy5kaXNhYmxlRnJhbWVfKGZyYW1lKTsKKyAgfQorfTsKKworLyoqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtOb2RlfSBmcmFtZQorICovCitTbGlkZURlY2sucHJvdG90eXBlLmRpc2FibGVGcmFtZV8gPSBmdW5jdGlvbihmcmFtZSkgeworICBmcmFtZS5zcmMgPSAnYWJvdXQ6YmxhbmsnOworfTsKKworLyoqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtudW1iZXJ9IHNsaWRlTm8KKyAqLworU2xpZGVEZWNrLnByb3RvdHlwZS5nZXRTbGlkZUVsXyA9IGZ1bmN0aW9uKG5vKSB7CisgIGlmICgobm8gPCAwKSB8fCAobm8gPj0gdGhpcy5zbGlkZXMubGVuZ3RoKSkgeworICAgIHJldHVybiBudWxsOworICB9IGVsc2UgeworICAgIHJldHVybiB0aGlzLnNsaWRlc1tub107CisgIH0KK307CisKKy8qKgorICogQHByaXZhdGUKKyAqIEBwYXJhbSB7bnVtYmVyfSBzbGlkZU5vCisgKiBAcGFyYW0ge3N0cmluZ30gY2xhc3NOYW1lCisgKi8KK1NsaWRlRGVjay5wcm90b3R5cGUudXBkYXRlU2xpZGVDbGFzc18gPSBmdW5jdGlvbihzbGlkZU5vLCBjbGFzc05hbWUpIHsKKyAgdmFyIGVsID0gdGhpcy5nZXRTbGlkZUVsXyhzbGlkZU5vKTsKKworICBpZiAoIWVsKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgaWYgKGNsYXNzTmFtZSkgeworICAgIGVsLmNsYXNzTGlzdC5hZGQoY2xhc3NOYW1lKTsKKyAgfQorCisgIGZvciAodmFyIGkgPSAwLCBzbGlkZUNsYXNzOyBzbGlkZUNsYXNzID0gdGhpcy5TTElERV9DTEFTU0VTX1tpXTsgKytpKSB7CisgICAgaWYgKGNsYXNzTmFtZSAhPSBzbGlkZUNsYXNzKSB7CisgICAgICBlbC5jbGFzc0xpc3QucmVtb3ZlKHNsaWRlQ2xhc3MpOworICAgIH0KKyAgfQorfTsKKworLyoqCisgKiBAcHJpdmF0ZQorICovCitTbGlkZURlY2sucHJvdG90eXBlLm1ha2VCdWlsZExpc3RzXyA9IGZ1bmN0aW9uICgpIHsKKyAgZm9yICh2YXIgaSA9IHRoaXMuY3VyU2xpZGVfLCBzbGlkZTsgc2xpZGUgPSB0aGlzLnNsaWRlc1tpXTsgKytpKSB7CisgICAgdmFyIGl0ZW1zID0gc2xpZGUucXVlcnlTZWxlY3RvckFsbCgnLmJ1aWxkID4gKicpOworICAgIGZvciAodmFyIGogPSAwLCBpdGVtOyBpdGVtID0gaXRlbXNbal07ICsraikgeworICAgICAgaWYgKGl0ZW0uY2xhc3NMaXN0KSB7CisgICAgICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgndG8tYnVpbGQnKTsKKyAgICAgICAgaWYgKGl0ZW0ucGFyZW50Tm9kZS5jbGFzc0xpc3QuY29udGFpbnMoJ2ZhZGUnKSkgeworICAgICAgICAgIGl0ZW0uY2xhc3NMaXN0LmFkZCgnZmFkZScpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9Cit9OworCisvKioKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge2Jvb2xlYW59IGRvbnRQdXNoCisgKi8KK1NsaWRlRGVjay5wcm90b3R5cGUudXBkYXRlSGFzaF8gPSBmdW5jdGlvbihkb250UHVzaCkgeworICBpZiAoIWRvbnRQdXNoKSB7CisgICAgdmFyIHNsaWRlTm8gPSB0aGlzLmN1clNsaWRlXyArIDE7CisgICAgdmFyIGhhc2ggPSAnIycgKyBzbGlkZU5vOworICAgIGlmICh3aW5kb3cuaGlzdG9yeS5wdXNoU3RhdGUpIHsKKyAgICAgIHdpbmRvdy5oaXN0b3J5LnB1c2hTdGF0ZSh0aGlzLmN1clNsaWRlXywgJ1NsaWRlICcgKyBzbGlkZU5vLCBoYXNoKTsKKyAgICB9IGVsc2UgeworICAgICAgd2luZG93LmxvY2F0aW9uLnJlcGxhY2UoaGFzaCk7CisgICAgfQorCisgICAgLy8gUmVjb3JkIEdBIGhpdCBvbiB0aGlzIHNsaWRlLgorICAgIHdpbmRvd1snX2dhcSddICYmIHdpbmRvd1snX2dhcSddLnB1c2goWydfdHJhY2tQYWdldmlldycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudC5sb2NhdGlvbi5ocmVmXSk7CisgIH0KK307CisKKworLyoqCisgKiBAcHJpdmF0ZQorICogQHBhcmFtIHtzdHJpbmd9IGZhdkljb24KKyAqLworU2xpZGVEZWNrLnByb3RvdHlwZS5hZGRGYXZJY29uXyA9IGZ1bmN0aW9uKGZhdkljb24pIHsKKyAgdmFyIGVsID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnbGluaycpOworICBlbC5yZWwgPSAnaWNvbic7CisgIGVsLnR5cGUgPSAnaW1hZ2UvcG5nJzsKKyAgZWwuaHJlZiA9IGZhdkljb247CisgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2hlYWQnKS5hcHBlbmRDaGlsZChlbCk7Cit9OworCisvKioKKyAqIEBwcml2YXRlCisgKiBAcGFyYW0ge3N0cmluZ30gdGhlbWUKKyAqLworU2xpZGVEZWNrLnByb3RvdHlwZS5sb2FkVGhlbWVfID0gZnVuY3Rpb24odGhlbWUpIHsKKyAgdmFyIHN0eWxlcyA9IFtdOworICBpZiAodGhlbWUuY29uc3RydWN0b3IubmFtZSA9PT0gJ1N0cmluZycpIHsKKyAgICBzdHlsZXMucHVzaCh0aGVtZSk7CisgIH0gZWxzZSB7CisgICAgc3R5bGVzID0gdGhlbWU7CisgIH0KKworICBmb3IgKHZhciBpID0gMCwgc3R5bGU7IHRoZW1lVXJsID0gc3R5bGVzW2ldOyBpKyspIHsKKyAgICB2YXIgc3R5bGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7CisgICAgc3R5bGUucmVsID0gJ3N0eWxlc2hlZXQnOworICAgIHN0eWxlLnR5cGUgPSAndGV4dC9jc3MnOworICAgIGlmICh0aGVtZVVybC5pbmRleE9mKCdodHRwJykgPT0gLTEpIHsKKyAgICAgIHN0eWxlLmhyZWYgPSB0aGlzLkNTU19ESVJfICsgdGhlbWVVcmwgKyAnLmNzcyc7CisgICAgfSBlbHNlIHsKKyAgICAgIHN0eWxlLmhyZWYgPSB0aGVtZVVybDsKKyAgICB9CisgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcignaGVhZCcpLmFwcGVuZENoaWxkKHN0eWxlKTsKKyAgfQorfTsKKworLyoqCisgKiBAcHJpdmF0ZQorICovCitTbGlkZURlY2sucHJvdG90eXBlLmxvYWRBbmFseXRpY3NfID0gZnVuY3Rpb24oKSB7CisgIHZhciBfZ2FxID0gd2luZG93WydfZ2FxJ10gfHwgW107CisgIF9nYXEucHVzaChbJ19zZXRBY2NvdW50JywgdGhpcy5jb25maWdfLnNldHRpbmdzLmFuYWx5dGljc10pOworICBfZ2FxLnB1c2goWydfdHJhY2tQYWdldmlldyddKTsKKworICAoZnVuY3Rpb24oKSB7CisgICAgdmFyIGdhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc2NyaXB0Jyk7IGdhLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JzsgZ2EuYXN5bmMgPSB0cnVlOworICAgIGdhLnNyYyA9ICgnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA/ICdodHRwczovL3NzbCcgOiAnaHR0cDovL3d3dycpICsgJy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcyc7CisgICAgdmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnc2NyaXB0JylbMF07IHMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoZ2EsIHMpOworICB9KSgpOworfTsKKworCisvLyBQb2x5ZmlsbCBtaXNzaW5nIEFQSXMgKGlmIHdlIG5lZWQgdG8pLCB0aGVuIGNyZWF0ZSB0aGUgc2xpZGUgZGVjay4KKy8vIGlPUyA8IDUgbmVlZHMgY2xhc3NMaXN0LCBkYXRhc2V0LCBhbmQgd2luZG93Lm1hdGNoTWVkaWEuIE1vZGVybml6ciBjb250YWlucworLy8gdGhlIGxhc3Qgb25lLgorKGZ1bmN0aW9uKCkgeworICBNb2Rlcm5penIubG9hZCh7CisgICAgdGVzdDogISFkb2N1bWVudC5ib2R5LmNsYXNzTGlzdCAmJiAhIWRvY3VtZW50LmJvZHkuZGF0YXNldCwKKyAgICBub3BlOiBbJ2pzL3BvbHlmaWxscy9jbGFzc0xpc3QubWluLmpzJywgJ2pzL3BvbHlmaWxscy9kYXRhc2V0Lm1pbi5qcyddLAorICAgIGNvbXBsZXRlOiBmdW5jdGlvbigpIHsKKyAgICAgIHdpbmRvdy5zbGlkZWRlY2sgPSBuZXcgU2xpZGVEZWNrKCk7CisgICAgfQorICB9KTsKK30pKCk7CmRpZmYgLS1naXQgYS9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3NsaWRlcy5qcyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvanMvc2xpZGVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmNjMwNmUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL2pzL3NsaWRlcy5qcwpAQCAtMCwwICsxLDUgQEAKK3JlcXVpcmUoWydvcmRlciEuLi9zbGlkZV9jb25maWcnLCAnb3JkZXIhbW9kZXJuaXpyLmN1c3RvbS40NTM5NCcsCisgICAgICAgICAnb3JkZXIhcHJldHRpZnkvcHJldHRpZnknLCAnb3JkZXIhaGFtbWVyJywgJ29yZGVyIXNsaWRlLWNvbnRyb2xsZXInLAorICAgICAgICAgJ29yZGVyIXNsaWRlLWRlY2snXSwgZnVuY3Rpb24oc29tZU1vZHVsZSkgeworCit9KTsKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvc2NyaXB0cy9tZC9SRUFETUUubWQgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3NjcmlwdHMvbWQvUkVBRE1FLm1kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNmU0NjUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3NjcmlwdHMvbWQvUkVBRE1FLm1kCkBAIC0wLDAgKzEsNSBAQAorV2FudCB0byB1c2UgbWFya2Rvd24gaW5zdGVhZD8KKworYHB5dGhvbiByZW5kZXIucHlgIGNhbiBkbyB0aGF0IGZvciB5b3UuCisKK0RlcGVuZGVuY2llczogamluamEyLCBtYXJrZG93bi4KZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvc2NyaXB0cy9tZC9iYXNlLmh0bWwgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3NjcmlwdHMvbWQvYmFzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0Njk4MDYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3NjcmlwdHMvbWQvYmFzZS5odG1sCkBAIC0wLDAgKzEsNjYgQEAKKzwhLS0KK0dvb2dsZSBJTyAyMDEyIEhUTUw1IFNsaWRlIFRlbXBsYXRlCisKK0F1dGhvcnM6IEVyaWMgQmlkZWxtYW4gPGViaWRlbEBnbWFpbC5jb20+CisgICAgICAgICBMdWtlIE1haGUgPGx1a2VtQGdvb2dsZS5jb20+CisKK1VSTDogaHR0cHM6Ly9jb2RlLmdvb2dsZS5jb20vcC9pby0yMDEyLXNsaWRlcworLS0+Cis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDx0aXRsZT5Hb29nbGUgSU8gMjAxMjwvdGl0bGU+CisgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJjaHJvbWU9MSI+CisgIDwhLS08bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoLCBpbml0aWFsLXNjYWxlPTEuMCwgbWluaW11bS1zY2FsZT0xLjAiPi0tPgorICA8IS0tPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAiPi0tPgorICA8IS0tVGhpcyBvbmUgc2VlbXMgdG8gd29yayBhbGwgdGhlIHRpbWUsIGJ1dCByZWFsbHkgc21hbGwgb24gaXBhZC0tPgorICA8IS0tPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9ImluaXRpYWwtc2NhbGU9MC40Ij4tLT4KKyAgPG1ldGEgbmFtZT0iYXBwbGUtbW9iaWxlLXdlYi1hcHAtY2FwYWJsZSIgY29udGVudD0ieWVzIj4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0iYWxsIiBocmVmPSJ0aGVtZS9jc3MvZGVmYXVsdC5jc3MiPgorICA8bGluayByZWw9InN0eWxlc2hlZXQiIG1lZGlhPSJvbmx5IHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDQ4MHB4KSIgaHJlZj0idGhlbWUvY3NzL3Bob25lLmNzcyI+CisgIDxiYXNlIHRhcmdldD0iX2JsYW5rIj4gPCEtLSBUaGlzIGFtYXppbmduZXNzIG9wZW5zIGFsbCBsaW5rcyBpbiBhIG5ldyB0YWIuIC0tPgorICA8c2NyaXB0IGRhdGEtbWFpbj0ianMvc2xpZGVzIiBzcmM9ImpzL3JlcXVpcmUtMS4wLjgubWluLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IHN0eWxlPSJvcGFjaXR5OiAwIj4KKworPHNsaWRlcyBjbGFzcz0ibGF5b3V0LXdpZGVzY3JlZW4iPgorCis8c2xpZGUgY2xhc3M9ImxvZ29zbGlkZSBub2JhY2tncm91bmQiPgorICA8YXJ0aWNsZSBjbGFzcz0iZmxleGJveCB2Y2VudGVyIj4KKyAgICA8c3Bhbj48aW1nIHNyYz0iaW1hZ2VzL2dvb2dsZV9kZXZlbG9wZXJzX2xvZ28ucG5nIj48L3NwYW4+CisgIDwvYXJ0aWNsZT4KKzwvc2xpZGU+CisKKzxzbGlkZSBjbGFzcz0idGl0bGUtc2xpZGUgc2VndWUgbm9iYWNrZ3JvdW5kIj4KKyAgPGFzaWRlIGNsYXNzPSJnZGJhciI+PGltZyBzcmM9ImltYWdlcy9nb29nbGVfZGV2ZWxvcGVyc19pY29uXzEyOC5wbmciPjwvYXNpZGU+CisgIDwhLS0gVGhlIGNvbnRlbnQgb2YgdGhpcyBoZ3JvdXAgaXMgcmVwbGFjZWQgcHJvZ3JhbW1hdGljYWxseSB0aHJvdWdoIHRoZSBzbGlkZV9jb25maWcuanNvbi4gLS0+CisgIDxoZ3JvdXAgY2xhc3M9ImF1dG8tZmFkZWluIj4KKyAgICA8aDEgZGF0YS1jb25maWctdGl0bGU+PCEtLSBwb3B1bGF0ZWQgZnJvbSBzbGlkZV9jb25maWcuanNvbiAtLT48L2gxPgorICAgIDxoMiBkYXRhLWNvbmZpZy1zdWJ0aXRsZT48IS0tIHBvcHVsYXRlZCBmcm9tIHNsaWRlX2NvbmZpZy5qc29uIC0tPjwvaDI+CisgICAgPHAgZGF0YS1jb25maWctcHJlc2VudGVyPjwhLS0gcG9wdWxhdGVkIGZyb20gc2xpZGVfY29uZmlnLmpzb24gLS0+PC9wPgorICA8L2hncm91cD4KKzwvc2xpZGU+CisKK3slIGZvciBzbGlkZSBpbiBzbGlkZXMgJX0KKzxzbGlkZSBjbGFzcz0ie3sgc2xpZGUuY2xhc3MgfX0iPgorICA8aGdyb3VwPgorICAgIDxoMT57eyBzbGlkZS5oMSB9fTwvaDE+CisgICAgPGgyPnt7IHNsaWRlLnRpdGxlIH19PC9oMj4KKyAgPC9oZ3JvdXA+CisgIDxhcnRpY2xlPgorICB7eyBzbGlkZS5jb250ZW50IH19CisgIDwvYXJ0aWNsZT4KKzwvc2xpZGU+Cit7JSBlbmRmb3IgJX0KKworPHNsaWRlIGNsYXNzPSJiYWNrZHJvcCI+PC9zbGlkZT4KKworPC9zbGlkZXM+CisKKzwhLS1baWYgSUVdPgorICA8c2NyaXB0IHNyYz0iaHR0cDovL2FqYXguZ29vZ2xlYXBpcy5jb20vYWpheC9saWJzL2Nocm9tZS1mcmFtZS8xL0NGSW5zdGFsbC5taW4uanMiPjwvc2NyaXB0PgorICA8c2NyaXB0PkNGSW5zdGFsbC5jaGVjayh7bW9kZTogJ292ZXJsYXknfSk7PC9zY3JpcHQ+Cis8IVtlbmRpZl0tLT4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvc2NyaXB0cy9tZC9yZW5kZXIucHkgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3NjcmlwdHMvbWQvcmVuZGVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2MzRlYTAKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3NjcmlwdHMvbWQvcmVuZGVyLnB5CkBAIC0wLDAgKzEsNTMgQEAKKyMhL29wdC9sb2NhbC9MaWJyYXJ5L0ZyYW1ld29ya3MvUHl0aG9uLmZyYW1ld29yay9WZXJzaW9ucy8yLjcvYmluL3B5dGhvbgoraW1wb3J0IGNvZGVjcworaW1wb3J0IHJlCitpbXBvcnQgamluamEyCitpbXBvcnQgbWFya2Rvd24KKworZGVmIHByb2Nlc3Nfc2xpZGVzKCk6CisgIHdpdGggY29kZWNzLm9wZW4oJy4uL3ByZXNlbnRhdGlvbi5odG1sJywgJ3cnLCBlbmNvZGluZz0ndXRmOCcpIGFzIG91dGZpbGU6CisgICAgbWQgPSBjb2RlY3Mub3Blbignc2xpZGVzLm1kJywgZW5jb2Rpbmc9J3V0ZjgnKS5yZWFkKCkKKyAgICBtZF9zbGlkZXMgPSBtZC5zcGxpdCgnXG4tLS1cbicpCisgICAgcHJpbnQgbGVuKG1kX3NsaWRlcykKKworICAgIHNsaWRlcyA9IFtdCisgICAgIyBQcm9jZXNzIGVhY2ggc2xpZGUgc2VwYXJhdGVseS4KKyAgICBmb3IgbWRfc2xpZGUgaW4gbWRfc2xpZGVzOgorICAgICAgc2xpZGUgPSB7fQorICAgICAgc2VjdGlvbnMgPSBtZF9zbGlkZS5zcGxpdCgnXG5cbicpCisgICAgICAjIEV4dHJhY3QgbWV0YWRhdGEgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2xpZGUgKGxvb2sgZm9yIGtleTogdmFsdWUpCisgICAgICAjIHBhaXJzLgorICAgICAgbWV0YWRhdGFfc2VjdGlvbiA9IHNlY3Rpb25zWzBdCisgICAgICBtZXRhZGF0YSA9IHBhcnNlX21ldGFkYXRhKG1ldGFkYXRhX3NlY3Rpb24pCisgICAgICBzbGlkZS51cGRhdGUobWV0YWRhdGEpCisgICAgICByZW1haW5kZXJfaW5kZXggPSBtZXRhZGF0YSBhbmQgMSBvciAwCisgICAgICAjIEdldCB0aGUgY29udGVudCBmcm9tIHRoZSByZXN0IG9mIHRoZSBzbGlkZS4KKyAgICAgIGNvbnRlbnRfc2VjdGlvbiA9ICdcblxuJy5qb2luKHNlY3Rpb25zW3JlbWFpbmRlcl9pbmRleDpdKQorICAgICAgaHRtbCA9IG1hcmtkb3duLm1hcmtkb3duKGNvbnRlbnRfc2VjdGlvbikKKyAgICAgIHNsaWRlWydjb250ZW50J10gPSBwb3N0cHJvY2Vzc19odG1sKGh0bWwsIG1hcmtkb3duKQorCisgICAgICBzbGlkZXMuYXBwZW5kKHNsaWRlKQorCisgICAgdGVtcGxhdGUgPSBqaW5qYTIuVGVtcGxhdGUob3BlbignYmFzZS5odG1sJykucmVhZCgpKQorCisgICAgb3V0ZmlsZS53cml0ZSh0ZW1wbGF0ZS5yZW5kZXIobG9jYWxzKCkpKQorCitkZWYgcGFyc2VfbWV0YWRhdGEoc2VjdGlvbik6CisgICIiIkdpdmVuIHRoZSBmaXJzdCBwYXJ0IG9mIGEgc2xpZGUsIHJldHVybnMgbWV0YWRhdGEgYXNzb2NpYXRlZCB3aXRoIGl0LiIiIgorICBtZXRhZGF0YSA9IHt9CisgIG1ldGFkYXRhX2xpbmVzID0gc2VjdGlvbi5zcGxpdCgnXG4nKQorICBmb3IgbGluZSBpbiBtZXRhZGF0YV9saW5lczoKKyAgICBjb2xvbl9pbmRleCA9IGxpbmUuZmluZCgnOicpCisgICAgaWYgY29sb25faW5kZXggIT0gLTE6CisgICAgICBrZXkgPSBsaW5lWzpjb2xvbl9pbmRleF0uc3RyaXAoKQorICAgICAgdmFsID0gbGluZVtjb2xvbl9pbmRleCArIDE6XS5zdHJpcCgpCisgICAgICBtZXRhZGF0YVtrZXldID0gdmFsCisKKyAgcmV0dXJuIG1ldGFkYXRhCisKK2RlZiBwb3N0cHJvY2Vzc19odG1sKGh0bWwsIG1ldGFkYXRhKToKKyAgIiIiUmV0dXJucyBwcm9jZXNzZWQgSFRNTCB0byBmaXQgaW50byB0aGUgc2xpZGUgdGVtcGxhdGUgZm9ybWF0LiIiIgorICByZXR1cm4gaHRtbAorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICBwcm9jZXNzX3NsaWRlcygpCmRpZmYgLS1naXQgYS9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3NjcmlwdHMvbWQvc2xpZGVzLm1kIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9zY3JpcHRzL21kL3NsaWRlcy5tZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjRiOGRiCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9zY3JpcHRzL21kL3NsaWRlcy5tZApAQCAtMCwwICsxLDY0IEBACit0aXRsZTogU2xpZGUgVGl0bGUKK2NsYXNzOiBpbWFnZQorCishW01vYmlsZSB2cyBkZXNrdG9wIHVzZXJzXShpbWFnZS5wbmcpCisKKy0tLQorCit0aXRsZTogQWdlbmRhCitjbGFzczogYmlnCisKK1RoaW5ncyB3ZSdsbCBjb3ZlcjoKKworLSBCdWxsZXQxCistIEJ1bGxldDIKKy0gQnVsbGV0MworCistLS0KKwordGl0bGU6IFRvZGF5CitjbGFzczogbm9iYWNrZ3JvdW5kIGZpbGwKKworIVtNYW55IGtpbmRzIG9mIGRldmljZXMuXShpbWFnZS5wbmcpCisKKzxmb290ZXIgY2xhc3M9InNvdXJjZSI+c291cmNlOiBwbGFjZSBzb3VyY2UgaW5mbyBoZXJlPC9mb290ZXI+CisKKy0tLQorCitoMTogQmlnIFRpdGxlIFNsaWRlCitjbGFzczogdGl0bGUtc2xpZGUKKworLS0tCisKK3RpdGxlOiBDb2RlIEV4YW1wbGUKKworTWVkaWEgUXVlcmllcyBhcmUgc3dlZXQ6CisKKzxwcmUgY2xhc3M9InByZXR0eXByaW50IiBkYXRhLWxhbmc9ImNzcyI+CitAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA2NDBweCkgeworICAjc2lkZWJhciB7IGRpc3BsYXk6IG5vbmU7IH0KK30KKzwvcHJlPgorCistLS0KKwordGl0bGU6IE9uY2UgbW9yZSwgd2l0aCBKYXZhU2NyaXB0CisKKzxwcmUgY2xhc3M9InByZXR0eXByaW50IiBkYXRhLWxhbmc9ImphdmFzY3JpcHQiPgorZnVuY3Rpb24gaXNTbWFsbCgpIHsKKyAgcmV0dXJuIHdpbmRvdy5tYXRjaE1lZGlhKCIobWluLWRldmljZS13aWR0aDogPz8/KSIpLm1hdGNoZXM7Cit9CisKK2Z1bmN0aW9uIGhhc1RvdWNoKCkgeworICByZXR1cm4gTW9kZXJuaXpyLnRvdWNoOworfQorCitmdW5jdGlvbiBkZXRlY3RGb3JtRmFjdG9yKCkgeworICB2YXIgZGV2aWNlID0gREVTS1RPUDsKKyAgaWYgKGhhc1RvdWNoKCkpIHsKKyAgICBkZXZpY2UgPSBpc1NtYWxsKCkgPyBQSE9ORSA6IFRBQkxFVDsKKyAgfQorICByZXR1cm4gZGV2aWNlOworfQorPC9wcmU+CisKZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvc2VydmUuc2ggYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3NlcnZlLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNjkyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3NlcnZlLnNoCkBAIC0wLDAgKzEsMjIgQEAKKyMhL2Jpbi9iYXNoCisjCisjIFN0YXJ0cyBhIGJhc2ljIHdlYiBzZXJ2ZXIgb24gdGhlIHBvcnQgc3BlY2lmaWVkLgorIyAKKyMgLi9zZXJ2ZS5zaCAzMDAwIC0+IGh0dHA6Ly9sb2NhbGhvc3Q6MzAwMAorIworIyBDb3B5cmlnaHQgMjAxMiBFcmljIEJpZGVsbWFuIDxlYmlkZWxAZ21haWwuY29tPgorCitwb3J0PSQxCitpZiBbICQjICAtbmUgIDEgXQordGhlbgorICBwb3J0PTgwMDAKK2ZpCisKK2lmIFsgJCh1bmFtZSAtcykgPT0gIkRhcndpbiIgXQordGhlbgorICBvcGVuPW9wZW4KK2Vsc2UKKyAgb3Blbj14ZGctb3BlbgorZmkKKworJG9wZW4gaHR0cDovL2xvY2FsaG9zdDokcG9ydC90ZW1wbGF0ZS5odG1sICYmIHB5dGhvbiAtbSBTaW1wbGVIVFRQU2VydmVyICRwb3J0OwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9zbGlkZV9jb25maWcuanMgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3NsaWRlX2NvbmZpZy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGYwODQyCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC9zbGlkZV9jb25maWcuanMKQEAgLTAsMCArMSwzNSBAQAordmFyIFNMSURFX0NPTkZJRyA9IHsKKyAgLy8gU2xpZGUgc2V0dGluZ3MKKyAgc2V0dGluZ3M6IHsKKyAgICB0aXRsZTogJ0RvY3VtZW50YXRpb24gRHJpdmVuIFRlc3RpbmcnLAorICAgIHVzZUJ1aWxkczogdHJ1ZSwgLy8gRGVmYXVsdDogdHJ1ZS4gRmFsc2Ugd2lsbCB0dXJuIG9mZiBzbGlkZSBhbmltYXRpb24gYnVpbGRzLgorICAgIHVzZVByZXR0aWZ5OiB0cnVlLCAvLyBEZWZhdWx0OiB0cnVlCisgICAgZW5hYmxlU2xpZGVBcmVhczogdHJ1ZSwgLy8gRGVmYXVsdDogdHJ1ZS4gRmFsc2UgdHVybnMgb2ZmIHRoZSBjbGljayBhcmVhcyBvbiBlaXRoZXIgc2xpZGUgb2YgdGhlIHNsaWRlcy4KKyAgICBlbmFibGVUb3VjaDogdHJ1ZSwgLy8gRGVmYXVsdDogdHJ1ZS4gSWYgdG91Y2ggc3VwcG9ydCBzaG91bGQgZW5hYmxlZC4gTm90ZTogdGhlIGRldmljZSBtdXN0IHN1cHBvcnQgdG91Y2guCisgICAgLy9hbmFseXRpY3M6ICdVQS1YWFhYWFhYWC0xJywgLy8gVE9ETzogVXNpbmcgdGhpcyBicmVha3MgR0EgZm9yIHNvbWUgcmVhc29uIChwcm9iYWJseSByZXF1aXJlanMpLiBVcGRhdGUgeW91ciB0cmFja2luZyBjb2RlIGluIHRlbXBsYXRlLmh0bWwgaW5zdGVhZC4KKyAgICBmYXZJY29uOiAnaW1hZ2VzL2dvb2dsZV9kZXZlbG9wZXJzX2xvZ29fdGlueS5wbmcnLAorICAgIGZvbnRzOiBbCisgICAgICAnT3BlbiBTYW5zOnJlZ3VsYXIsc2VtaWJvbGQsaXRhbGljLGl0YWxpY3NlbWlib2xkJywKKyAgICAgICdJbmNvbnNvbGF0YScKKyAgICBdLAorICAgIC8vdGhlbWU6IFsnbXl0aGVtZSddLCAvLyBBZGQgeW91ciBvd24gY3VzdG9tIHRoZW1lcyBvciBzdHlsZXMgaW4gL3RoZW1lL2Nzcy4gTGVhdmUgb2ZmIHRoZSAuY3NzIGV4dGVuc2lvbi4KKyAgfSwKKworICAvLyBBdXRob3IgaW5mb3JtYXRpb24KKyAgcHJlc2VudGVyczogW3sKKyAgICBuYW1lOiAnR291bHdlbiBMZSBGdXIgJiBBbGV4IExhZ2FyZGUgKE1vcmVsKScsCisgICAgY29tcGFueTogJ1NvZnR3YXJlIEVuZ2luZWVycywgT2JlbycsCisgICAgZ3BsdXM6ICdodHRwczovL3BsdXMuZ29vZ2xlLmNvbS8xMTcwMzAxNzM0NTg4NzU1NjkwNjYnLAorICAgIHR3aXR0ZXI6ICdAeW91cmhhbmRsZScsCisgICAgd3d3OiAnaHR0cDovL3d3dy55b3UuY29tJywKKyAgICBnaXRodWI6ICdodHRwOi8vZ2l0aHViLmNvbS95b3UnCisgIH0vKiwgeworICAgIG5hbWU6ICdTZWNvbmQgTmFtZScsCisgICAgY29tcGFueTogJ0pvYiBUaXRsZSwgR29vZ2xlJywKKyAgICBncGx1czogJ2h0dHA6Ly9wbHVzLmdvb2dsZS5jb20vMTIzNDU2Nzg5MCcsCisgICAgdHdpdHRlcjogJ0B5b3VyaGFuZGxlJywKKyAgICB3d3c6ICdodHRwOi8vd3d3LnlvdS5jb20nLAorICAgIGdpdGh1YjogJ2h0dHA6Ly9naXRodWIuY29tL3lvdScKKyAgfSovXQorfTsKKwpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS9jc3MvY3VzdG8uY3NzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS9jc3MvY3VzdG8uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MzE1MTAKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3RoZW1lL2Nzcy9jdXN0by5jc3MKQEAgLTAsMCArMSwxODcgQEAKK2IgeworCWNvbG9yOiM4MDAwMDA7Cit9CithcnRpY2xlIHsKKwljb2xvcjojNTE1MTUxOworfQoraDIsIGgzIHsKKyBjb2xvcjpibGFjazsKK30KKy5zdHJva2UgewordGV4dC1zaGFkb3c6IC0xcHggLTFweCAwICMwMDAsIDFweCAtMXB4IDAgIzAwMCwgLTFweCAxcHggMCAjMDAwLCAxcHggMXB4IDAgIzAwMDsKK30KKy5yaWdodGFsaWduZWQgeworCXRleHQtYWxpZ246cmlnaHQ7Cit9CisKKy5ub0J1bGxldHMgeworbGlzdC1zdHlsZTogbm9uZTsKK30KKworLnBhcnRUaXRsZSBhc2lkZXsKKwlmaWx0ZXI6YWxwaGEob3BhY2l0eT01MCk7CisJLW1vei1vcGFjaXR5OjAuNTsKKwkta2h0bWwtb3BhY2l0eTogMC41OworCW9wYWNpdHk6IDAuNTsKKwl6LWluZGV4OjE7Cit9CisucGFydFRpdGxlIGgyIHsKK3RleHQtc2hhZG93OiAtMXB4IC0xcHggMCAjMDAwLCAxcHggLTFweCAwICMwMDAsIC0xcHggMXB4IDAgIzAwMCwgMXB4IDFweCAwICMwMDA7Citwb3NpdGlvbjogcmVsYXRpdmU7Citjb2xvcjp3aGl0ZTsKK3RvcDogODVweDsKK2xlZnQ6LTIwcHg7Cit6LWluZGV4OjU0OworfQorCisucGFkZGluZ2VyIHsKKyBtYXJnaW4tbGVmdDoxMDBweDsKKyBwYWRkaW5nLWxlZnQ6MjBweDsKKyBwYWRkaW5nLWJvdHRvbToyMHB4OworIGJhY2tncm91bmQtY29sb3I6I0Y4RjhGOCA7CisgLW1vei1ib3JkZXItcmFkaXVzOiAxNXB4OworIGJvcmRlci1yYWRpdXM6IDE1cHg7IAorIGJvcmRlcjogMXB4IHNvbGlkIGdyZXk7CisgcGFkZGluZy1yaWdodDoyMHB4OworfQorLnBhZGRpbmdlciBwIHsKK2ZvbnQtc2l6ZToyNHB4OworfQorICAKKy5pbnRlbnRfY29udGVudCB7CisJbWFyZ2luLXRvcDoxNXB4OworCW1hcmdpbi1sZWZ0IDogMTAwcHg7CisJbWFyZ2luLXJpZ2h0IDogMzBweDsKKwlwYWRkaW5nLWxlZnQgOiA1MHB4OworCXBhZGRpbmctdG9wOjE1cHg7CisJcGFkZGluZy1ib3R0b206MTBweDsKKwliYWNrZ3JvdW5kLWNvbG9yOiNGOEY4RjggOworCWZvbnQtc2l6ZTogMThweDsKKwlib3JkZXI6IDFweCBzb2xpZCBncmV5OworCWNvbG9yOmJsYWNrOworfQorCisuZm9jdXNlZCB7CisJZm9udC1zdHlsZTpib2xkOworCWZvbnQtc2l6ZToyNHB4OworCWNvbG9yOndoaXRlOworCXBhZGRpbmctcmlnaHQ6MTVweDsKKwlwYWRkaW5nLWxlZnQ6MTVweDsKKwliYWNrZ3JvdW5kLWNvbG9yOmdyZXk7CisJIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OworCWJvcmRlci1yYWRpdXM6IDVweDsgCisJYm9yZGVyOjFweCBzb2xpZCBibGFjazsKK30KKworLmdyZXllZCB7CisJY29sb3I6Z3JleTsKKwlmb250LXNpemU6MTRweDsKK30KKworLmdyZXllZCBiIHsKKwljb2xvcjpncmV5OworfQorCisuZ3JleWVkIC5rdyB7CisJY29sb3I6Z3JleTsKK30KKworLmludGVudF9jb250ZW50IGIgeworCWNvbG9yOmJsYWNrOworfQorCisKKy5pbnRlbnRfY29udGVudCBpIHsKKwlmb250LXN0eWxlOml0YWxpYzsKK30KKworLmludGVudF9jb250ZW50IC5rdyB7CisJY29sb3I6IzgwMDAwMDsKK30KKworLmludGVudF9zdWJzZWN0aW9uY29udGFpbmVyIHsKKwlwYWRkaW5nLWxlZnQgOiA1MHB4OworfQorCisuaW50ZW50X21vZGVsaW5ndW5pdCB7CisJcGFkZGluZy1sZWZ0IDogMjBweDsKKwltYXJnaW4tcmlnaHQ6MTAwcHg7CisJcGFkZGluZy1ib3R0b206MTBweDsKKwltYXJnaW4tdG9wOjVweDsKKwlwYWRkaW5nLXRvcDo1cHg7CisJYmFja2dyb3VuZC1jb2xvcjojRDhEOEQ4OworCWJvcmRlcjogMXB4IHNvbGlkIGdyZXk7CisJLW1vei1ib3JkZXItcmFkaXVzOiAxNXB4OworCWJvcmRlci1yYWRpdXM6IDE1cHg7CisJZm9udC1zaXplOiAxOHB4OworCWNvbG9yOmJsYWNrOworfQorLmR1IHsKK2ZvbnQtc2l6ZTogMTZweDsKK30KKworc2xpZGVzID4gc2xpZGUuaW50cm86YmVmb3JlIHsKKyAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9JbnRlbnQvSW1hZ2UtSW50ZW50X2xvZ29fY3JvcHBlZFgucG5nKSBuby1yZXBlYXQgMCA1MCU7CisgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgLW8tYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7CisgIGJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICBjb250ZW50OiAiSW50cm9kdWN0aW9uIjsKK30KKworc2xpZGVzID4gc2xpZGUucGFydDE6YmVmb3JlIHsKKyAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9JbnRlbnQvSW1hZ2UtSW50ZW50X2xvZ29fY3JvcHBlZFgucG5nKSBuby1yZXBlYXQgMCA1MCU7CisgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgLW8tYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7CisgIGJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICBjb250ZW50OiAiMS4gU2ltcGxpZnkgdGVzdHMgZGV2ZWxvcG1lbnQiOworfQorCitzbGlkZXMgPiBzbGlkZS5wYXJ0MjpiZWZvcmUgeworICBiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL0ludGVudC9JbWFnZS1JbnRlbnRfbG9nb19jcm9wcGVkWC5wbmcpIG5vLXJlcGVhdCAwIDUwJTsKKyAgICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICAtbW96LWJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICAtby1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7CisgIGNvbnRlbnQ6ICIyLiBPcGVuIHRoZSB0b29saW5nIHRvIGZ1bmN0aW9uYWwgdXNlcnMiOworfQorCitzbGlkZXMgPiBzbGlkZS5wYXJ0MzpiZWZvcmUgeworICBiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL0ludGVudC9JbWFnZS1JbnRlbnRfbG9nb19jcm9wcGVkLnBuZykgbm8tcmVwZWF0IDAgNTAlOworICAgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7CisgIC1tb3otYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7CisgIC1vLWJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICBiYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgY29udGVudDogIjMuIFVuZGVyc3RhbmQgaW50ZW50cyBiZWhpbmQgdGVzdHMiOworfQorc2xpZGVzID4gc2xpZGUucGFydDQ6YmVmb3JlIHsKKyAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9JbnRlbnQvY2RvWC5qcGcpIG5vLXJlcGVhdCAwIDUwJTsKKyAgICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICAtbW96LWJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICAtby1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7CisgIGNvbnRlbnQ6ICI0LiBMZXNzb25zIGxlYXJuZWQiOworfQorc2xpZGVzID4gc2xpZGUucGFydE5PTkU6YmVmb3JlIHsKKyBiYWNrZ3JvdW5kLXNpemU6IDBweCAwcHg7CisgY29udGVudDogIiI7Cit9CisKK3NsaWRlcyA+IHNsaWRlLnRocmVlX3RoaW5nczpiZWZvcmUgeworICBiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL0ludGVudC9JbWFnZS1JbnRlbnRfbG9nb19jcm9wcGVkWC5wbmcpIG5vLXJlcGVhdCAwIDUwJTsKKyAgICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICAtbW96LWJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICAtby1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7CisgIGNvbnRlbnQ6ICJUaGUgMyB0aGluZ3MgdG8gcmVtZW1iZXIiOworfQorCitzbGlkZXMgPiBzbGlkZS50aGFua3M6YmVmb3JlIHsKKyAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9JbnRlbnQvSW1hZ2UtSW50ZW50X2xvZ29fY3JvcHBlZFgucG5nKSBuby1yZXBlYXQgMCA1MCU7CisgICAgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgLW8tYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7CisgIGJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICBjb250ZW50OiAiVGhhbmsgWW91ISI7Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS9jc3MvZGVmYXVsdC5jc3MgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3RoZW1lL2Nzcy9kZWZhdWx0LmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDU1MjhkCi0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS9jc3MvZGVmYXVsdC5jc3MKQEAgLTAsMCArMSwxNDkwIEBACisvKiBsaW5lIDE3LCAuLi8uLi8uLi8uLi8uLi8uLi9MaWJyYXJ5L1J1YnkvR2Vtcy8xLjgvZ2Vtcy9jb21wYXNzLTAuMTIuMS9mcmFtZXdvcmtzL2NvbXBhc3Mvc3R5bGVzaGVldHMvY29tcGFzcy9yZXNldC9fdXRpbGl0aWVzLnNjc3MgKi8KK2h0bWwsIGJvZHksIGRpdiwgc3BhbiwgYXBwbGV0LCBvYmplY3QsIGlmcmFtZSwKK2gxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIHAsIGJsb2NrcXVvdGUsIHByZSwKK2EsIGFiYnIsIGFjcm9ueW0sIGFkZHJlc3MsIGJpZywgY2l0ZSwgY29kZSwKK2RlbCwgZGZuLCBlbSwgaW1nLCBpbnMsIGtiZCwgcSwgcywgc2FtcCwKK3NtYWxsLCBzdHJpa2UsIHN0cm9uZywgc3ViLCBzdXAsIHR0LCB2YXIsCitiLCB1LCBpLCBjZW50ZXIsCitkbCwgZHQsIGRkLCBvbCwgdWwsIGxpLAorZmllbGRzZXQsIGZvcm0sIGxhYmVsLCBsZWdlbmQsCit0YWJsZSwgY2FwdGlvbiwgdGJvZHksIHRmb290LCB0aGVhZCwgdHIsIHRoLCB0ZCwKK2FydGljbGUsIGFzaWRlLCBjYW52YXMsIGRldGFpbHMsIGVtYmVkLAorZmlndXJlLCBmaWdjYXB0aW9uLCBmb290ZXIsIGhlYWRlciwgaGdyb3VwLAorbWVudSwgbmF2LCBvdXRwdXQsIHJ1YnksIHNlY3Rpb24sIHN1bW1hcnksCit0aW1lLCBtYXJrLCBhdWRpbywgdmlkZW8geworICBtYXJnaW46IDA7CisgIHBhZGRpbmc6IDA7CisgIGJvcmRlcjogMDsKKyAgZm9udC1zaXplOiAxMDAlOworICBmb250OiBpbmhlcml0OworICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7Cit9CisKKy8qIGxpbmUgMjAsIC4uLy4uLy4uLy4uLy4uLy4uL0xpYnJhcnkvUnVieS9HZW1zLzEuOC9nZW1zL2NvbXBhc3MtMC4xMi4xL2ZyYW1ld29ya3MvY29tcGFzcy9zdHlsZXNoZWV0cy9jb21wYXNzL3Jlc2V0L191dGlsaXRpZXMuc2NzcyAqLworYm9keSB7CisgIGxpbmUtaGVpZ2h0OiAxOworfQorCisvKiBsaW5lIDIyLCAuLi8uLi8uLi8uLi8uLi8uLi9MaWJyYXJ5L1J1YnkvR2Vtcy8xLjgvZ2Vtcy9jb21wYXNzLTAuMTIuMS9mcmFtZXdvcmtzL2NvbXBhc3Mvc3R5bGVzaGVldHMvY29tcGFzcy9yZXNldC9fdXRpbGl0aWVzLnNjc3MgKi8KK29sLCB1bCB7CisgIGxpc3Qtc3R5bGU6IG5vbmU7Cit9CisKKy8qIGxpbmUgMjQsIC4uLy4uLy4uLy4uLy4uLy4uL0xpYnJhcnkvUnVieS9HZW1zLzEuOC9nZW1zL2NvbXBhc3MtMC4xMi4xL2ZyYW1ld29ya3MvY29tcGFzcy9zdHlsZXNoZWV0cy9jb21wYXNzL3Jlc2V0L191dGlsaXRpZXMuc2NzcyAqLwordGFibGUgeworICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworICBib3JkZXItc3BhY2luZzogMDsKK30KKworLyogbGluZSAyNiwgLi4vLi4vLi4vLi4vLi4vLi4vTGlicmFyeS9SdWJ5L0dlbXMvMS44L2dlbXMvY29tcGFzcy0wLjEyLjEvZnJhbWV3b3Jrcy9jb21wYXNzL3N0eWxlc2hlZXRzL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzICovCitjYXB0aW9uLCB0aCwgdGQgeworICB0ZXh0LWFsaWduOiBsZWZ0OworICBmb250LXdlaWdodDogbm9ybWFsOworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworfQorCisvKiBsaW5lIDI4LCAuLi8uLi8uLi8uLi8uLi8uLi9MaWJyYXJ5L1J1YnkvR2Vtcy8xLjgvZ2Vtcy9jb21wYXNzLTAuMTIuMS9mcmFtZXdvcmtzL2NvbXBhc3Mvc3R5bGVzaGVldHMvY29tcGFzcy9yZXNldC9fdXRpbGl0aWVzLnNjc3MgKi8KK3EsIGJsb2NrcXVvdGUgeworICBxdW90ZXM6IG5vbmU7Cit9CisvKiBsaW5lIDEwMSwgLi4vLi4vLi4vLi4vLi4vLi4vTGlicmFyeS9SdWJ5L0dlbXMvMS44L2dlbXMvY29tcGFzcy0wLjEyLjEvZnJhbWV3b3Jrcy9jb21wYXNzL3N0eWxlc2hlZXRzL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzICovCitxOmJlZm9yZSwgcTphZnRlciwgYmxvY2txdW90ZTpiZWZvcmUsIGJsb2NrcXVvdGU6YWZ0ZXIgeworICBjb250ZW50OiAiIjsKKyAgY29udGVudDogbm9uZTsKK30KKworLyogbGluZSAzMCwgLi4vLi4vLi4vLi4vLi4vLi4vTGlicmFyeS9SdWJ5L0dlbXMvMS44L2dlbXMvY29tcGFzcy0wLjEyLjEvZnJhbWV3b3Jrcy9jb21wYXNzL3N0eWxlc2hlZXRzL2NvbXBhc3MvcmVzZXQvX3V0aWxpdGllcy5zY3NzICovCithIGltZyB7CisgIGJvcmRlcjogbm9uZTsKK30KKworLyogbGluZSAxMTQsIC4uLy4uLy4uLy4uLy4uLy4uL0xpYnJhcnkvUnVieS9HZW1zLzEuOC9nZW1zL2NvbXBhc3MtMC4xMi4xL2ZyYW1ld29ya3MvY29tcGFzcy9zdHlsZXNoZWV0cy9jb21wYXNzL3Jlc2V0L191dGlsaXRpZXMuc2NzcyAqLworYXJ0aWNsZSwgYXNpZGUsIGRldGFpbHMsIGZpZ2NhcHRpb24sIGZpZ3VyZSwgZm9vdGVyLCBoZWFkZXIsIGhncm91cCwgbWVudSwgbmF2LCBzZWN0aW9uLCBzdW1tYXJ5IHsKKyAgZGlzcGxheTogYmxvY2s7Cit9CisKKy8qKgorICogQmFzZSBTbGlkZURlY2sgU3R5bGVzCisgKi8KKy8qIGxpbmUgNDgsIC4uL3Njc3MvX2Jhc2Uuc2NzcyAqLworaHRtbCB7CisgIGhlaWdodDogMTAwJTsKKyAgb3ZlcmZsb3c6IGhpZGRlbjsKK30KKworLyogbGluZSA1MywgLi4vc2Nzcy9fYmFzZS5zY3NzICovCitib2R5IHsKKyAgbWFyZ2luOiAwOworICBwYWRkaW5nOiAwOworICBvcGFjaXR5OiAwOworICBoZWlnaHQ6IDEwMCU7CisgIG1pbi1oZWlnaHQ6IDc0MHB4OworICB3aWR0aDogMTAwJTsKKyAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgY29sb3I6ICNmZmY7CisgIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAtbW96LWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgLW1zLWZvbnQtc21vb3RoaW5nOiBhbnRpYWxpYXNlZDsKKyAgLW8tZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkOworICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgODAwbXMgZWFzZS1pbiAxMDBtczsKKyAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDgwMG1zIGVhc2UtaW4gMTAwbXM7CisgIC1tcy10cmFuc2l0aW9uOiBvcGFjaXR5IDgwMG1zIGVhc2UtaW4gMTAwbXM7CisgIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgODAwbXMgZWFzZS1pbiAxMDBtczsKKyAgdHJhbnNpdGlvbjogb3BhY2l0eSA4MDBtcyBlYXNlLWluIDEwMG1zOworfQorLyogbGluZSA2OSwgLi4vc2Nzcy9fYmFzZS5zY3NzICovCitib2R5LmxvYWRlZCB7CisgIG9wYWNpdHk6IDEgIWltcG9ydGFudDsKK30KKworLyogbGluZSA3NCwgLi4vc2Nzcy9fYmFzZS5zY3NzICovCitpbnB1dCwgYnV0dG9uIHsKKyAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsKK30KKworLyogbGluZSA3OCwgLi4vc2Nzcy9fYmFzZS5zY3NzICovCitzbGlkZXMgPiBzbGlkZVtoaWRkZW5dIHsKKyAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OworfQorCisvKiBsaW5lIDgyLCAuLi9zY3NzL19iYXNlLnNjc3MgKi8KK3NsaWRlcyB7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDEwMCU7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVmdDogMDsKKyAgdG9wOiAwOworICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CisgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCAwLCAwKTsKKyAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CisgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CisgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMCwgMCwgMCk7CisgIC13ZWJraXQtcGVyc3BlY3RpdmU6IDEwMDA7CisgIHBlcnNwZWN0aXZlOiAxMDAwOworICAtd2Via2l0LXRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7CisgIHRyYW5zZm9ybS1zdHlsZTogcHJlc2VydmUtM2Q7CisgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSA4MDBtcyBlYXNlLWluIDEwMG1zOworICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgODAwbXMgZWFzZS1pbiAxMDBtczsKKyAgLW1zLXRyYW5zaXRpb246IG9wYWNpdHkgODAwbXMgZWFzZS1pbiAxMDBtczsKKyAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSA4MDBtcyBlYXNlLWluIDEwMG1zOworICB0cmFuc2l0aW9uOiBvcGFjaXR5IDgwMG1zIGVhc2UtaW4gMTAwbXM7Cit9CisKKy8qIGxpbmUgOTQsIC4uL3Njc3MvX2Jhc2Uuc2NzcyAqLworc2xpZGVzID4gc2xpZGUgeworICBkaXNwbGF5OiBibG9jazsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBvdmVyZmxvdzogaGlkZGVuOworICBsZWZ0OiA1MCU7CisgIHRvcDogNTAlOworICAtd2Via2l0LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIC1tb3otYm94LXNpemluZzogYm9yZGVyLWJveDsKKyAgYm94LXNpemluZzogYm9yZGVyLWJveDsKK30KKworLyogU2xpZGUgc3R5bGVzICovCisvKmFydGljbGUuZmlsbCBpZnJhbWUgeworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IDA7CisgIHRvcDogMDsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKworICBib3JkZXI6IDA7CisgIG1hcmdpbjogMDsKKworICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDEwcHgpOworCisgIHotaW5kZXg6IC0xOworfQorCitzbGlkZS5maWxsIHsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKGNvdmVyKTsKK30KKworc2xpZGUuZmlsbCBpbWcgeworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IDA7CisgIHRvcDogMDsKKyAgbWluLXdpZHRoOiAxMDAlOworICBtaW4taGVpZ2h0OiAxMDAlOworCisgIHotaW5kZXg6IC0xOworfQorKi8KKy8qKgorICogVGhlbWUgU3R5bGVzCisgKi8KKy8qIGxpbmUgNTgsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCis6OnNlbGVjdGlvbiB7CisgIGNvbG9yOiB3aGl0ZTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZDE0ZDsKKyAgdGV4dC1zaGFkb3c6IG5vbmU7Cit9CisKKy8qIGxpbmUgNjQsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCis6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgaGVpZ2h0OiAxNnB4OworICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgd2lkdGg6IDE2cHg7Cit9CisKKy8qIGxpbmUgNjksIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCis6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjEpOworICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OworICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50OworICBtaW4taGVpZ2h0OiAyOHB4OworICBwYWRkaW5nOiAxMDBweCAwIDA7CisgIC13ZWJraXQtYm94LXNoYWRvdzogaW5zZXQgMXB4IDFweCAwIHJnYmEoMCwgMCwgMCwgMC4xKSwgaW5zZXQgMCAtMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjA3KTsKKyAgLW1vei1ib3gtc2hhZG93OiBpbnNldCAxcHggMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCBpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMDcpOworICBib3gtc2hhZG93OiBpbnNldCAxcHggMXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEpLCBpbnNldCAwIC0xcHggMCByZ2JhKDAsIDAsIDAsIDAuMDcpOworICBib3JkZXItd2lkdGg6IDFweCAxcHggMXB4IDZweDsKK30KKworLyogbGluZSA3OCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKzo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIgeworICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7Cit9CisKKy8qIGxpbmUgODEsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCis6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiB7CisgIGhlaWdodDogMDsKKyAgd2lkdGg6IDA7Cit9CisKKy8qIGxpbmUgODUsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCis6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrIHsKKyAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDsKKyAgYm9yZGVyOiBzb2xpZCB0cmFuc3BhcmVudDsKKyAgYm9yZGVyLXdpZHRoOiAwIDAgMCA0cHg7Cit9CisKKy8qIGxpbmUgOTAsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCis6Oi13ZWJraXQtc2Nyb2xsYmFyLWNvcm5lciB7CisgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50OworfQorCisvKiBsaW5lIDk0LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworYm9keSB7CisgIGJhY2tncm91bmQ6IGJsYWNrOworfQorCisvKiBsaW5lIDk4LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzID4gc2xpZGUgeworICBkaXNwbGF5OiBub25lOworICBmb250LWZhbWlseTogJ1VidW50dScsIFVidW50dSBDb25kZW5zZWQ7CisgIGZvbnQtc2l6ZTogMjZweDsKKyAgY29sb3I6ICM3OTc5Nzk7CisgIHdpZHRoOiA5MDBweDsKKyAgaGVpZ2h0OiA3MDBweDsKKyAgbWFyZ2luLWxlZnQ6IC00NTBweDsKKyAgbWFyZ2luLXRvcDogLTM1MHB4OworICBwYWRkaW5nOiA0MHB4IDYwcHg7CisgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OworICAtbW96LWJvcmRlci1yYWRpdXM6IDVweDsKKyAgLW1zLWJvcmRlci1yYWRpdXM6IDVweDsKKyAgLW8tYm9yZGVyLXJhZGl1czogNXB4OworICBib3JkZXItcmFkaXVzOiA1cHg7CisgIC13ZWJraXQtdHJhbnNpdGlvbjogYWxsIDAuNnMgZWFzZS1pbi1vdXQ7CisgIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNnMgZWFzZS1pbi1vdXQ7CisgIC1tcy10cmFuc2l0aW9uOiBhbGwgMC42cyBlYXNlLWluLW91dDsKKyAgLW8tdHJhbnNpdGlvbjogYWxsIDAuNnMgZWFzZS1pbi1vdXQ7CisgIHRyYW5zaXRpb246IGFsbCAwLjZzIGVhc2UtaW4tb3V0OworfQorLyogbGluZSAxMTksIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMgPiBzbGlkZS5mYXItcGFzdCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisvKiBsaW5lIDEyNiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3NsaWRlcyA+IHNsaWRlLnBhc3QgeworICBkaXNwbGF5OiBibG9jazsKKyAgb3BhY2l0eTogMDsKK30KKy8qIGxpbmUgMTMzLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzID4gc2xpZGUuY3VycmVudCB7CisgIGRpc3BsYXk6IGJsb2NrOworICBvcGFjaXR5OiAxOworfQorLyogbGluZSAxMzksIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMgPiBzbGlkZS5jdXJyZW50IC5hdXRvLWZhZGVpbiB7CisgIG9wYWNpdHk6IDE7Cit9CisvKiBsaW5lIDE0MywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3NsaWRlcyA+IHNsaWRlLmN1cnJlbnQgLmdkYmFyIHsKKyAgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKKyAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IDEwMCUgMTAwJTsKKyAgLW8tYmFja2dyb3VuZC1zaXplOiAxMDAlIDEwMCU7CisgIGJhY2tncm91bmQtc2l6ZTogMTAwJSAxMDAlOworfQorLyogbGluZSAxNDgsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMgPiBzbGlkZS5uZXh0IHsKKyAgZGlzcGxheTogYmxvY2s7CisgIG9wYWNpdHk6IDA7CisgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorLyogbGluZSAxNTYsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMgPiBzbGlkZS5mYXItbmV4dCB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisvKiBsaW5lIDE2MywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3NsaWRlcyA+IHNsaWRlLmRhcmsgeworICBiYWNrZ3JvdW5kOiAjNTE1MTUxICFpbXBvcnRhbnQ7Cit9CisvKiBsaW5lIDE3MSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3NsaWRlcyA+IHNsaWRlOm5vdCgubm9iYWNrZ3JvdW5kKTpiZWZvcmUgeworICBmb250LXNpemU6IDEycHQ7CisgIGNvbnRlbnQ6ICJJbnRlbnQiOworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJvdHRvbTogMjBweDsKKyAgbGVmdDogNjBweDsKKyAgYmFja2dyb3VuZDogdXJsKC4uLy4uL2ltYWdlcy9JbnRlbnQvSW1hZ2UtSW50ZW50X2xvZ29fY3JvcHBlZC5wbmcpIG5vLXJlcGVhdCAwIDUwJTsKKyAgLXdlYmtpdC1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IDMwcHggMzBweDsKKyAgLW8tYmFja2dyb3VuZC1zaXplOiAzMHB4IDMwcHg7CisgIGJhY2tncm91bmQtc2l6ZTogMzBweCAzMHB4OworICBwYWRkaW5nLWxlZnQ6IDQwcHg7CisgIGhlaWdodDogMzBweDsKKyAgbGluZS1oZWlnaHQ6IDEuOTsKK30KKy8qIGxpbmUgMTgzLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzID4gc2xpZGU6bm90KC5ub2JhY2tncm91bmQpOmFmdGVyIHsKKyAgZm9udC1zaXplOiAxMnB0OworICBjb250ZW50OiBhdHRyKGRhdGEtc2xpZGUtbnVtKSAiLyIgYXR0cihkYXRhLXRvdGFsLXNsaWRlcyk7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAyMHB4OworICByaWdodDogNjBweDsKKyAgbGluZS1oZWlnaHQ6IDEuOTsKK30KKy8qIGxpbmUgMTk0LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzID4gc2xpZGUudGl0bGUtc2xpZGU6YWZ0ZXIgeworIAorfQorLyogbGluZSAyMDYsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMgPiBzbGlkZS5iYWNrZHJvcCB7CisgIHotaW5kZXg6IC0xMDsKKyAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKKyAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDUwJSAwJSwgNTAlIDEwMCUsIGNvbG9yLXN0b3AoMCUsICNmZmZmZmYpLCBjb2xvci1zdG9wKDg1JSwgI2ZmZmZmZiksIGNvbG9yLXN0b3AoMTAwJSwgI2U2ZTZlNikpOworICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCgjZmZmZmZmLCAjZmZmZmZmIDg1JSwgI2U2ZTZlNik7CisgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KCNmZmZmZmYsICNmZmZmZmYgODUlLCAjZTZlNmU2KTsKKyAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KCNmZmZmZmYsICNmZmZmZmYgODUlLCAjZTZlNmU2KTsKKyAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1ncmFkaWVudCgjZmZmZmZmLCAjZmZmZmZmIDg1JSwgI2U2ZTZlNik7CisgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgjZmZmZmZmLCAjZmZmZmZmIDg1JSwgI2U2ZTZlNik7CisgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOworfQorLyogbGluZSAyMTEsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMgPiBzbGlkZS5iYWNrZHJvcDphZnRlciwgc2xpZGVzID4gc2xpZGUuYmFja2Ryb3A6YmVmb3JlIHsKKyAgZGlzcGxheTogbm9uZTsKK30KKy8qIGxpbmUgMjE2LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzID4gc2xpZGUgPiBoZ3JvdXAgKyBhcnRpY2xlIHsKKyAgbWFyZ2luLXRvcDogNDVweDsKK30KKy8qIGxpbmUgMjIwLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzID4gc2xpZGUgPiBoZ3JvdXAgKyBhcnRpY2xlLmZsZXhib3gudmNlbnRlciwgc2xpZGVzID4gc2xpZGUgPiBoZ3JvdXAgKyBhcnRpY2xlLmZsZXhib3gudmxlZnQsIHNsaWRlcyA+IHNsaWRlID4gaGdyb3VwICsgYXJ0aWNsZS5mbGV4Ym94LnZyaWdodCB7CisgIGhlaWdodDogODAlOworfQorLyogbGluZSAyMjUsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMgPiBzbGlkZSA+IGhncm91cCArIGFydGljbGUgcCB7CisgIG1hcmdpbi1ib3R0b206IDFlbTsKK30KKy8qIGxpbmUgMjMwLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzID4gc2xpZGUgPiBhcnRpY2xlOm9ubHktY2hpbGQgeworICBoZWlnaHQ6IDEwMCU7Cit9CisvKiBsaW5lIDIzMywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3NsaWRlcyA+IHNsaWRlID4gYXJ0aWNsZTpvbmx5LWNoaWxkID4gaWZyYW1lIHsKKyAgaGVpZ2h0OiA5OCU7Cit9CisKKy8qIGxpbmUgMjM5LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzLmxheW91dC1mYXV4LXdpZGVzY3JlZW4gPiBzbGlkZSB7CisgIHBhZGRpbmc6IDQwcHggMTYwcHg7Cit9CisKKy8qIGxpbmUgMjQ4LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzLmxheW91dC13aWRlc2NyZWVuID4gc2xpZGUsCitzbGlkZXMubGF5b3V0LWZhdXgtd2lkZXNjcmVlbiA+IHNsaWRlIHsKKyAgbWFyZ2luLWxlZnQ6IC01NTBweDsKKyAgd2lkdGg6IDExMDBweDsKK30KKy8qIGxpbmUgMjUzLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzLmxheW91dC13aWRlc2NyZWVuID4gc2xpZGUuZmFyLXBhc3QsCitzbGlkZXMubGF5b3V0LWZhdXgtd2lkZXNjcmVlbiA+IHNsaWRlLmZhci1wYXN0IHsKKyAgZGlzcGxheTogYmxvY2s7CisgIGRpc3BsYXk6IG5vbmU7CisgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIyNjBweCk7CisgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIyNjBweCk7CisgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMjI2MHB4KTsKKyAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIyNjBweCk7CisgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0yMjYwcHgpOworICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIyNjBweCwgMCwgMCk7CisgIC1tb3otdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgtMjI2MHB4LCAwLCAwKTsKKyAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIyNjBweCwgMCwgMCk7CisgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIyNjBweCwgMCwgMCk7CisgIHRyYW5zZm9ybTogdHJhbnNsYXRlM2QoLTIyNjBweCwgMCwgMCk7Cit9CisvKiBsaW5lIDI2MCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3NsaWRlcy5sYXlvdXQtd2lkZXNjcmVlbiA+IHNsaWRlLnBhc3QsCitzbGlkZXMubGF5b3V0LWZhdXgtd2lkZXNjcmVlbiA+IHNsaWRlLnBhc3QgeworICBkaXNwbGF5OiBibG9jazsKKyAgb3BhY2l0eTogMDsKK30KKy8qIGxpbmUgMjY3LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGVzLmxheW91dC13aWRlc2NyZWVuID4gc2xpZGUuY3VycmVudCwKK3NsaWRlcy5sYXlvdXQtZmF1eC13aWRlc2NyZWVuID4gc2xpZGUuY3VycmVudCB7CisgIGRpc3BsYXk6IGJsb2NrOworICBvcGFjaXR5OiAxOworfQorLyogbGluZSAyNzQsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMubGF5b3V0LXdpZGVzY3JlZW4gPiBzbGlkZS5uZXh0LAorc2xpZGVzLmxheW91dC1mYXV4LXdpZGVzY3JlZW4gPiBzbGlkZS5uZXh0IHsKKyAgZGlzcGxheTogYmxvY2s7CisgIG9wYWNpdHk6IDA7CisgIHBvaW50ZXItZXZlbnRzOiBub25lOworfQorLyogbGluZSAyODIsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMubGF5b3V0LXdpZGVzY3JlZW4gPiBzbGlkZS5mYXItbmV4dCwKK3NsaWRlcy5sYXlvdXQtZmF1eC13aWRlc2NyZWVuID4gc2xpZGUuZmFyLW5leHQgeworICBkaXNwbGF5OiBibG9jazsKKyAgZGlzcGxheTogbm9uZTsKKyAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMjYwcHgpOworICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlKDIyNjBweCk7CisgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMjYwcHgpOworICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMjYwcHgpOworICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMjYwcHgpOworICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjI2MHB4LCAwLCAwKTsKKyAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIyNjBweCwgMCwgMCk7CisgIC1tcy10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDIyNjBweCwgMCwgMCk7CisgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjI2MHB4LCAwLCAwKTsKKyAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyMjYwcHgsIDAsIDApOworfQorLyogbGluZSAyODksIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMubGF5b3V0LXdpZGVzY3JlZW4gI3ByZXYtc2xpZGUtYXJlYSwKK3NsaWRlcy5sYXlvdXQtZmF1eC13aWRlc2NyZWVuICNwcmV2LXNsaWRlLWFyZWEgeworICBtYXJnaW4tbGVmdDogLTY1MHB4OworfQorLyogbGluZSAyOTMsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitzbGlkZXMubGF5b3V0LXdpZGVzY3JlZW4gI25leHQtc2xpZGUtYXJlYSwKK3NsaWRlcy5sYXlvdXQtZmF1eC13aWRlc2NyZWVuICNuZXh0LXNsaWRlLWFyZWEgeworICBtYXJnaW4tbGVmdDogNTUwcHg7Cit9CisKKy8qIGxpbmUgMjk4LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworYiB7CisgIGZvbnQtd2VpZ2h0OiA2MDA7Cit9CisKKy8qIGxpbmUgMzAyLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworYSB7CisgIGNvbG9yOiAjMmE3Y2RmOworICB0ZXh0LWRlY29yYXRpb246IG5vbmU7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCByZ2JhKDQyLCAxMjQsIDIyMywgMC41KTsKK30KKy8qIGxpbmUgMzA3LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworYTpob3ZlciB7CisgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OworfQorCisvKiBsaW5lIDMxMiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2gxLCBoMiwgaDMgeworICBmb250LXdlaWdodDogNjAwOworfQorCitoMSB7Cit9CisvKiBsaW5lIDMxNiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2gyIHsKKyAgZm9udC1zaXplOiA0NXB4OworICBsaW5lLWhlaWdodDogNDVweDsKKyAgbGV0dGVyLXNwYWNpbmc6IC0ycHg7CisgIGNvbG9yOiAjNTE1MTUxOworfQorCisvKiBsaW5lIDMyMywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2gzIHsKKyAgZm9udC1zaXplOiAzMHB4OworICBsZXR0ZXItc3BhY2luZzogLTFweDsKKyAgbGluZS1oZWlnaHQ6IDI7CisgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworICBjb2xvcjogIzc5Nzk3OTsKK30KKworLyogbGluZSAzMzEsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCit1bCB7CisgIG1hcmdpbi1sZWZ0OiAxLjJlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworICBwb3NpdGlvbjogcmVsYXRpdmU7Cit9CisvKiBsaW5lIDMzNiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3VsIGxpIHsKKyAgbWFyZ2luLWJvdHRvbTogMC41ZW07Cit9CisvKiBsaW5lIDMzOSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3VsIGxpIHVsIHsKKyAgbWFyZ2luLWxlZnQ6IDJlbTsKKyAgbWFyZ2luLWJvdHRvbTogMDsKK30KKy8qIGxpbmUgMzQzLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLwordWwgbGkgdWwgbGk6YmVmb3JlIHsKKyAgY29udGVudDogJy0nOworICBmb250LXdlaWdodDogNjAwOworfQorLyogbGluZSAzNTAsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCit1bCA+IGxpOmJlZm9yZSB7CisgIGNvbnRlbnQ6ICfCtyc7CisgIG1hcmdpbi1sZWZ0OiAtMWVtOworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGZvbnQtd2VpZ2h0OiA2MDA7Cit9CisvKiBsaW5lIDM1NywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3VsIHVsIHsKKyAgbWFyZ2luLXRvcDogLjVlbTsKK30KKworLyogbGluZSAzNjQsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuaGlnaGxpZ2h0LWNvZGUgc2xpZGUuY3VycmVudCBwcmUgPiAqIHsKKyAgb3BhY2l0eTogMC4yNTsKKyAgLXdlYmtpdC10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbjsKKyAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbjsKKyAgLW1zLXRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlLWluOworICAtby10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbjsKKyAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW47Cit9CisvKiBsaW5lIDM2OCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5oaWdobGlnaHQtY29kZSBzbGlkZS5jdXJyZW50IGIgeworICBvcGFjaXR5OiAxOworfQorCisvKiBsaW5lIDM3MywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3ByZSB7CisgIGZvbnQtZmFtaWx5OiAnSW5jb25zb2xhdGEnLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CisgIGZvbnQtc2l6ZTogMjBweDsKKyAgbGluZS1oZWlnaHQ6IDI4cHg7CisgIHBhZGRpbmc6IDEwcHggMCAxMHB4IDYwcHg7CisgIGxldHRlci1zcGFjaW5nOiAtMXB4OworICBtYXJnaW4tYm90dG9tOiAyMHB4OworICB3aWR0aDogMTA2JTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2U2ZTZlNjsKKyAgbGVmdDogLTYwcHg7CisgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIC8qb3ZlcmZsb3c6IGhpZGRlbjsqLworfQorLyogbGluZSAzODcsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitwcmVbZGF0YS1sYW5nXTphZnRlciB7CisgIGNvbnRlbnQ6IGF0dHIoZGF0YS1sYW5nKTsKKyAgYmFja2dyb3VuZC1jb2xvcjogI2E5YTlhOTsKKyAgcmlnaHQ6IDA7CisgIHRvcDogMDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBmb250LXNpemU6IDE2cHQ7CisgIGNvbG9yOiB3aGl0ZTsKKyAgcGFkZGluZzogMnB4IDI1cHg7CisgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7Cit9CisKKy8qIGxpbmUgNDAwLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworcHJlW2RhdGEtbGFuZz0iZ28iXSB7CisgIGNvbG9yOiAjMzMzOworfQorCisvKiBsaW5lIDQwNCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2NvZGUgeworICBmb250LXNpemU6IDk1JTsKKyAgZm9udC1mYW1pbHk6ICdJbmNvbnNvbGF0YScsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTsKKyAgY29sb3I6IGJsYWNrOworfQorCisvKiBsaW5lIDQxMCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2lmcmFtZSB7CisgIHdpZHRoOiAxMDAlOworICBoZWlnaHQ6IDUzMHB4OworICBiYWNrZ3JvdW5kOiB3aGl0ZTsKKyAgYm9yZGVyOiAxcHggc29saWQgI2U2ZTZlNjsKKyAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7Cit9CisKKy8qIGxpbmUgNDE4LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworZHQgeworICBmb250LXdlaWdodDogYm9sZDsKK30KKworLyogbGluZSA0MjIsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitidXR0b24geworICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCA1MCUgMCUsIDUwJSAxMDAlLCBjb2xvci1zdG9wKDQwJSwgI2Y5ZjlmOSksIGNvbG9yLXN0b3AoNzAlLCAjZTNlM2UzKSk7CisgIGJhY2tncm91bmQ6IC13ZWJraXQtbGluZWFyLWdyYWRpZW50KCNmOWY5ZjkgNDAlLCAjZTNlM2UzIDcwJSk7CisgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KCNmOWY5ZjkgNDAlLCAjZTNlM2UzIDcwJSk7CisgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCgjZjlmOWY5IDQwJSwgI2UzZTNlMyA3MCUpOworICBiYWNrZ3JvdW5kOiAtbXMtbGluZWFyLWdyYWRpZW50KCNmOWY5ZjkgNDAlLCAjZTNlM2UzIDcwJSk7CisgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgjZjlmOWY5IDQwJSwgI2UzZTNlMyA3MCUpOworICBib3JkZXI6IDFweCBzb2xpZCAjYTlhOWE5OworICAtd2Via2l0LWJvcmRlci1yYWRpdXM6IDNweDsKKyAgLW1vei1ib3JkZXItcmFkaXVzOiAzcHg7CisgIC1tcy1ib3JkZXItcmFkaXVzOiAzcHg7CisgIC1vLWJvcmRlci1yYWRpdXM6IDNweDsKKyAgYm9yZGVyLXJhZGl1czogM3B4OworICBwYWRkaW5nOiA1cHggOHB4OworICBvdXRsaW5lOiBub25lOworICB3aGl0ZS1zcGFjZTogbm93cmFwOworICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lOworICAtbW96LXVzZXItc2VsZWN0OiBub25lOworICB1c2VyLXNlbGVjdDogbm9uZTsKKyAgY3Vyc29yOiBwb2ludGVyOworICB0ZXh0LXNoYWRvdzogMXB4IDFweCB3aGl0ZTsKKyAgZm9udC1zaXplOiAxMHB0OworfQorCisvKiBsaW5lIDQzNiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2J1dHRvbjpub3QoOmRpc2FibGVkKTpob3ZlciB7CisgIGJvcmRlci1jb2xvcjogIzUxNTE1MTsKK30KKworLyogbGluZSA0NDAsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitidXR0b246bm90KDpkaXNhYmxlZCk6YWN0aXZlIHsKKyAgYmFja2dyb3VuZDogLXdlYmtpdC1ncmFkaWVudChsaW5lYXIsIDUwJSAwJSwgNTAlIDEwMCUsIGNvbG9yLXN0b3AoNDAlLCAjZTNlM2UzKSwgY29sb3Itc3RvcCg3MCUsICNmOWY5ZjkpKTsKKyAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI2UzZTNlMyA0MCUsICNmOWY5ZjkgNzAlKTsKKyAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQoI2UzZTNlMyA0MCUsICNmOWY5ZjkgNzAlKTsKKyAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KCNlM2UzZTMgNDAlLCAjZjlmOWY5IDcwJSk7CisgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQoI2UzZTNlMyA0MCUsICNmOWY5ZjkgNzAlKTsKKyAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCNlM2UzZTMgNDAlLCAjZjlmOWY5IDcwJSk7Cit9CisKKy8qIGxpbmUgNDQ0LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworOmRpc2FibGVkIHsKKyAgY29sb3I6ICNhOWE5YTk7Cit9CisKKy8qIGxpbmUgNDQ4LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLmJsdWUgeworICBjb2xvcjogIzQzODdmZDsKK30KKworLyogbGluZSA0NTEsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuYmx1ZTIgeworICBjb2xvcjogIzNjOGVmMzsKK30KKworLyogbGluZSA0NTQsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuYmx1ZTMgeworICBjb2xvcjogIzJhN2NkZjsKK30KKworLyogbGluZSA0NTcsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisueWVsbG93IHsKKyAgY29sb3I6ICNmZmQxNGQ7Cit9CisKKy8qIGxpbmUgNDYwLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnllbGxvdzIgeworICBjb2xvcjogI2Y5Y2M0NjsKK30KKworLyogbGluZSA0NjMsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisueWVsbG93MyB7CisgIGNvbG9yOiAjZjZjMDAwOworfQorCisvKiBsaW5lIDQ2NiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5ncmVlbiB7CisgIGNvbG9yOiAjMGRhODYxOworfQorCisvKiBsaW5lIDQ2OSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5ncmVlbjIgeworICBjb2xvcjogIzAwYTg2ZDsKK30KKworLyogbGluZSA0NzIsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuZ3JlZW4zIHsKKyAgY29sb3I6ICMwMDlmNWQ7Cit9CisKKy8qIGxpbmUgNDc1LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnJlZCB7CisgIGNvbG9yOiAjZjQ0YTNmOworfQorCisvKiBsaW5lIDQ3OCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5yZWQyIHsKKyAgY29sb3I6ICNlMDU0M2U7Cit9CisKKy8qIGxpbmUgNDgxLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnJlZDMgeworICBjb2xvcjogI2Q5NGQzYTsKK30KKworLyogbGluZSA0ODQsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuZ3JheSB7CisgIGNvbG9yOiAjZTZlNmU2OworfQorCisvKiBsaW5lIDQ4NywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5ncmF5MiB7CisgIGNvbG9yOiAjYTlhOWE5OworfQorCisvKiBsaW5lIDQ5MCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5ncmF5MyB7CisgIGNvbG9yOiAjNzk3OTc5OworfQorCisvKiBsaW5lIDQ5MywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5ncmF5NCB7CisgIGNvbG9yOiAjNTE1MTUxOworfQorCisvKiBsaW5lIDQ5NywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy53aGl0ZSB7CisgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OworfQorCisvKiBsaW5lIDUwMCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5ibGFjayB7CisgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OworfQorCisvKiBsaW5lIDUwNCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5jb2x1bW5zLTIgeworICAtd2Via2l0LWNvbHVtbi1jb3VudDogMjsKKyAgLW1vei1jb2x1bW4tY291bnQ6IDI7CisgIC1vLWNvbHVtbi1jb3VudDogMjsKKyAgY29sdW1uLWNvdW50OiAyOworfQorCisvKiBsaW5lIDUwOCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3RhYmxlIHsKKyAgd2lkdGg6IDEwMCU7CisgIGJvcmRlci1jb2xsYXBzZTogLW1vei1pbml0aWFsOworICBib3JkZXItY29sbGFwc2U6IGluaXRpYWw7CisgIGJvcmRlci1zcGFjaW5nOiAycHg7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjNzk3OTc5OworfQorLyogbGluZSA1MTUsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCit0YWJsZSB0ciA+IHRkOmZpcnN0LWNoaWxkLCB0YWJsZSB0aCB7CisgIGZvbnQtd2VpZ2h0OiA2MDA7CisgIGNvbG9yOiAjNTE1MTUxOworfQorLyogbGluZSA1MjAsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCit0YWJsZSB0cjpudGgtY2hpbGQob2RkKSB7CisgIGJhY2tncm91bmQtY29sb3I6ICNlNmU2ZTY7Cit9CisvKiBsaW5lIDUyNCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3RhYmxlIHRoIHsKKyAgY29sb3I6IHdoaXRlOworICBmb250LXNpemU6IDE4cHg7CisgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCA1MCUgMCUsIDUwJSAxMDAlLCBjb2xvci1zdG9wKDQwJSwgIzQzODdmZCksIGNvbG9yLXN0b3AoODAlLCAjMmE3Y2RmKSkgbm8tcmVwZWF0OworICBiYWNrZ3JvdW5kOiAtd2Via2l0LWxpbmVhci1ncmFkaWVudCh0b3AsICM0Mzg3ZmQgNDAlLCAjMmE3Y2RmIDgwJSkgbm8tcmVwZWF0OworICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCh0b3AsICM0Mzg3ZmQgNDAlLCAjMmE3Y2RmIDgwJSkgbm8tcmVwZWF0OworICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQodG9wLCAjNDM4N2ZkIDQwJSwgIzJhN2NkZiA4MCUpIG5vLXJlcGVhdDsKKyAgYmFja2dyb3VuZDogLW1zLWxpbmVhci1ncmFkaWVudCh0b3AsICM0Mzg3ZmQgNDAlLCAjMmE3Y2RmIDgwJSkgbm8tcmVwZWF0OworICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG9wLCAjNDM4N2ZkIDQwJSwgIzJhN2NkZiA4MCUpIG5vLXJlcGVhdDsKK30KKy8qIGxpbmUgNTMwLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLwordGFibGUgdGQsIHRhYmxlIHRoIHsKKyAgZm9udC1zaXplOiAxOHB4OworICBwYWRkaW5nOiAxZW0gMC41ZW07Cit9CisvKiBsaW5lIDUzNSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3RhYmxlIHRkLmhpZ2hsaWdodCB7CisgIGNvbG9yOiAjNTE1MTUxOworICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgNTAlIDAlLCA1MCUgMTAwJSwgY29sb3Itc3RvcCg0MCUsICNmZmQxNGQpLCBjb2xvci1zdG9wKDgwJSwgI2Y2YzAwMCkpIG5vLXJlcGVhdDsKKyAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZkMTRkIDQwJSwgI2Y2YzAwMCA4MCUpIG5vLXJlcGVhdDsKKyAgYmFja2dyb3VuZDogLW1vei1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZkMTRkIDQwJSwgI2Y2YzAwMCA4MCUpIG5vLXJlcGVhdDsKKyAgYmFja2dyb3VuZDogLW8tbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZDE0ZCA0MCUsICNmNmMwMDAgODAlKSBuby1yZXBlYXQ7CisgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQodG9wLCAjZmZkMTRkIDQwJSwgI2Y2YzAwMCA4MCUpIG5vLXJlcGVhdDsKKyAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KHRvcCwgI2ZmZDE0ZCA0MCUsICNmNmMwMDAgODAlKSBuby1yZXBlYXQ7Cit9CisvKiBsaW5lIDU0MCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3RhYmxlLnJvd3MgeworICBib3JkZXItYm90dG9tOiBub25lOworICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCAjNzk3OTc5OworfQorCisvKiBsaW5lIDU0NiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3EgeworICBmb250LXNpemU6IDQ1cHg7CisgIGxpbmUtaGVpZ2h0OiA3MnB4OworfQorLyogbGluZSA1NTAsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitxOmJlZm9yZSB7CisgIGNvbnRlbnQ6ICfigJwnOworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIG1hcmdpbi1sZWZ0OiAtMC41ZW07Cit9CisvKiBsaW5lIDU1NSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK3E6YWZ0ZXIgeworICBjb250ZW50OiAn4oCdJzsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBtYXJnaW4tbGVmdDogMC4xZW07Cit9CisKKy8qIGxpbmUgNTYyLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworc2xpZGUuZmlsbCB7CisgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7CisgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OworICAtbW96LWJvcmRlci1yYWRpdXM6IDVweDsKKyAgLW1zLWJvcmRlci1yYWRpdXM6IDVweDsKKyAgLW8tYm9yZGVyLXJhZGl1czogNXB4OworICBib3JkZXItcmFkaXVzOiA1cHg7CisgIC13ZWJraXQtYmFja2dyb3VuZC1zaXplOiBjb3ZlcjsKKyAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyOworICAtby1iYWNrZ3JvdW5kLXNpemU6IGNvdmVyOworICBiYWNrZ3JvdW5kLXNpemU6IGNvdmVyOworfQorCisvKiBTaXplIHZhcmlhbnRzICovCisvKiBsaW5lIDU3MSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2FydGljbGUuc21hbGxlciBwLCBhcnRpY2xlLnNtYWxsZXIgdWwgeworICBmb250LXNpemU6IDIwcHg7CisgIGxpbmUtaGVpZ2h0OiAyNHB4OworICBsZXR0ZXItc3BhY2luZzogMDsKK30KKy8qIGxpbmUgNTc3LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworYXJ0aWNsZS5zbWFsbGVyIHRhYmxlIHRkLCBhcnRpY2xlLnNtYWxsZXIgdGFibGUgdGggeworICBmb250LXNpemU6IDE0cHg7Cit9CisvKiBsaW5lIDU4MSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2FydGljbGUuc21hbGxlciBwcmUgeworICBmb250LXNpemU6IDE1cHg7CisgIGxpbmUtaGVpZ2h0OiAyMHB4OworICBsZXR0ZXItc3BhY2luZzogMDsKK30KKy8qIGxpbmUgNTg2LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworYXJ0aWNsZS5zbWFsbGVyIHEgeworICBmb250LXNpemU6IDQwcHg7CisgIGxpbmUtaGVpZ2h0OiA0OHB4OworfQorLyogbGluZSA1OTAsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCithcnRpY2xlLnNtYWxsZXIgcTpiZWZvcmUsIGFydGljbGUuc21hbGxlciBxOmFmdGVyIHsKKyAgZm9udC1zaXplOiA2MHB4OworfQorCisvKiBCdWlsZHMgKi8KKy8qIGxpbmUgNTk5LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLmJ1aWxkID4gKiB7CisgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0IDAuMnM7CisgIC1tb3otdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0IDAuMnM7CisgIC1tcy10cmFuc2l0aW9uOiBvcGFjaXR5IDAuNXMgZWFzZS1pbi1vdXQgMC4yczsKKyAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSAwLjVzIGVhc2UtaW4tb3V0IDAuMnM7CisgIHRyYW5zaXRpb246IG9wYWNpdHkgMC41cyBlYXNlLWluLW91dCAwLjJzOworfQorLyogbGluZSA2MDMsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuYnVpbGQgLnRvLWJ1aWxkIHsKKyAgb3BhY2l0eTogMDsKK30KKy8qIGxpbmUgNjA3LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLmJ1aWxkIC5idWlsZC1mYWRlIHsKKyAgb3BhY2l0eTogMC4zOworfQorLyogbGluZSA2MTAsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuYnVpbGQgLmJ1aWxkLWZhZGU6aG92ZXIgeworICBvcGFjaXR5OiAxLjA7Cit9CisKKy8qIGxpbmUgNjE3LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnBvcHVwIC5uZXh0IC5idWlsZCAudG8tYnVpbGQgeworICBvcGFjaXR5OiAxOworfQorLyogbGluZSA2MjEsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisucG9wdXAgLm5leHQgLmJ1aWxkIC5idWlsZC1mYWRlIHsKKyAgb3BhY2l0eTogMTsKK30KKworLyogUHJldHR5IHByaW50ICovCisvKiBsaW5lIDYyOSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5wcmV0dHlwcmludCAuc3RyLAorLnByZXR0eXByaW50IC5hdHYgeworICAvKiBhIG1hcmt1cCBhdHRyaWJ1dGUgdmFsdWUgKi8KKyAgY29sb3I6ICMwMDlmNWQ7Cit9CisKKy8qIGxpbmUgNjMzLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnByZXR0eXByaW50IC5rd2QsCisucHJldHR5cHJpbnQgLnRhZyB7CisgIC8qIGEgbWFya3VwIHRhZyBuYW1lICovCisgIGNvbG9yOiAjMDA2NmNjOworfQorCisvKiBsaW5lIDYzNiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5wcmV0dHlwcmludCAuY29tIHsKKyAgLyogYSBjb21tZW50ICovCisgIGNvbG9yOiAjNzk3OTc5OworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisKKy8qIGxpbmUgNjQwLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnByZXR0eXByaW50IC5saXQgeworICAvKiBhIGxpdGVyYWwgdmFsdWUgKi8KKyAgY29sb3I6ICM3ZjAwMDA7Cit9CisKKy8qIGxpbmUgNjQ1LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnByZXR0eXByaW50IC5wdW4sCisucHJldHR5cHJpbnQgLm9wbiwKKy5wcmV0dHlwcmludCAuY2xvIHsKKyAgY29sb3I6ICM1MTUxNTE7Cit9CisKKy8qIGxpbmUgNjUxLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnByZXR0eXByaW50IC50eXAsCisucHJldHR5cHJpbnQgLmF0biwKKy5wcmV0dHlwcmludCAuZGVjLAorLnByZXR0eXByaW50IC52YXIgeworICAvKiBhIGRlY2xhcmF0aW9uOyBhIHZhcmlhYmxlIG5hbWUgKi8KKyAgY29sb3I6ICNkOTRkM2E7Cit9CisKKy8qIGxpbmUgNjU0LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnByZXR0eXByaW50IC5wbG4geworICBjb2xvcjogIzUxNTE1MTsKK30KKworLyogbGluZSA2NTgsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisubm90ZSB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgei1pbmRleDogMTAwOworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiAxMDAlOworICB0b3A6IDA7CisgIGxlZnQ6IDA7CisgIHBhZGRpbmc6IDFlbTsKKyAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMpOworICBvcGFjaXR5OiAwOworICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAgZGlzcGxheTogLXdlYmtpdC1ib3ggIWltcG9ydGFudDsKKyAgZGlzcGxheTogLW1vei1ib3ggIWltcG9ydGFudDsKKyAgZGlzcGxheTogLW1zLWJveCAhaW1wb3J0YW50OworICBkaXNwbGF5OiAtby1ib3ggIWltcG9ydGFudDsKKyAgZGlzcGxheTogYm94ICFpbXBvcnRhbnQ7CisgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CisgIC1tb3otYm94LW9yaWVudDogdmVydGljYWw7CisgIC1tcy1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgYm94LW9yaWVudDogdmVydGljYWw7CisgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXI7CisgIC1tb3otYm94LWFsaWduOiBjZW50ZXI7CisgIC1tcy1ib3gtYWxpZ246IGNlbnRlcjsKKyAgYm94LWFsaWduOiBjZW50ZXI7CisgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKKyAgLW1vei1ib3gtcGFjazogY2VudGVyOworICAtbXMtYm94LXBhY2s6IGNlbnRlcjsKKyAgYm94LXBhY2s6IGNlbnRlcjsKKyAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7CisgIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OworICAtbXMtYm9yZGVyLXJhZGl1czogNXB4OworICAtby1ib3JkZXItcmFkaXVzOiA1cHg7CisgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDM1MHB4KTsKKyAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMzUwcHgpOworICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDM1MHB4KTsKKyAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDM1MHB4KTsKKyAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDM1MHB4KTsKKyAgLXdlYmtpdC10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDsKKyAgLW1vei10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDsKKyAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjRzIGVhc2UtaW4tb3V0OworICAtby10cmFuc2l0aW9uOiBhbGwgMC40cyBlYXNlLWluLW91dDsKKyAgdHJhbnNpdGlvbjogYWxsIDAuNHMgZWFzZS1pbi1vdXQ7Cit9CisvKiBsaW5lIDY3NiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5ub3RlID4gc2VjdGlvbiB7CisgIGJhY2tncm91bmQ6ICNmZmY7CisgIC13ZWJraXQtYm9yZGVyLXJhZGl1czogNXB4OworICAtbW96LWJvcmRlci1yYWRpdXM6IDVweDsKKyAgLW1zLWJvcmRlci1yYWRpdXM6IDVweDsKKyAgLW8tYm9yZGVyLXJhZGl1czogNXB4OworICBib3JkZXItcmFkaXVzOiA1cHg7CisgIC13ZWJraXQtYm94LXNoYWRvdzogMCAwIDEwcHggIzc5Nzk3OTsKKyAgLW1vei1ib3gtc2hhZG93OiAwIDAgMTBweCAjNzk3OTc5OworICBib3gtc2hhZG93OiAwIDAgMTBweCAjNzk3OTc5OworICB3aWR0aDogNjAlOworICBwYWRkaW5nOiAyZW07Cit9CisKKy8qIGxpbmUgNjkzLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLndpdGgtbm90ZXMucG9wdXAgc2xpZGVzLmxheW91dC13aWRlc2NyZWVuIHNsaWRlLm5leHQsCisud2l0aC1ub3Rlcy5wb3B1cCBzbGlkZXMubGF5b3V0LWZhdXgtd2lkZXNjcmVlbiBzbGlkZS5uZXh0IHsKKyAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDY5MHB4LCA4MHB4LCAwKSBzY2FsZSgwLjM1KTsKKyAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDY5MHB4LCA4MHB4LCAwKSBzY2FsZSgwLjM1KTsKKyAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoNjkwcHgsIDgwcHgsIDApIHNjYWxlKDAuMzUpOworICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDY5MHB4LCA4MHB4LCAwKSBzY2FsZSgwLjM1KTsKKyAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg2OTBweCwgODBweCwgMCkgc2NhbGUoMC4zNSk7Cit9CisvKiBsaW5lIDY5NiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy53aXRoLW5vdGVzLnBvcHVwIHNsaWRlcy5sYXlvdXQtd2lkZXNjcmVlbiBzbGlkZSAubm90ZSwKKy53aXRoLW5vdGVzLnBvcHVwIHNsaWRlcy5sYXlvdXQtZmF1eC13aWRlc2NyZWVuIHNsaWRlIC5ub3RlIHsKKyAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDMwMHB4LCA4MDBweCwgMCkgc2NhbGUoMS41KTsKKyAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDMwMHB4LCA4MDBweCwgMCkgc2NhbGUoMS41KTsKKyAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMzAwcHgsIDgwMHB4LCAwKSBzY2FsZSgxLjUpOworICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDMwMHB4LCA4MDBweCwgMCkgc2NhbGUoMS41KTsKKyAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgzMDBweCwgODAwcHgsIDApIHNjYWxlKDEuNSk7Cit9CisvKiBsaW5lIDcwMiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy53aXRoLW5vdGVzLnBvcHVwIHNsaWRlIHsKKyAgb3ZlcmZsb3c6IHZpc2libGU7CisgIGJhY2tncm91bmQ6IHdoaXRlOworICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CisgIC1tb3otdHJhbnNpdGlvbjogbm9uZTsKKyAgLW1zLXRyYW5zaXRpb246IG5vbmU7CisgIC1vLXRyYW5zaXRpb246IG5vbmU7CisgIHRyYW5zaXRpb246IG5vbmU7CisgIHBvaW50ZXItZXZlbnRzOiBub25lOworICAtd2Via2l0LXRyYW5zZm9ybS1vcmlnaW46IDAgMDsKKyAgLW1vei10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CisgIC1tcy10cmFuc2Zvcm0tb3JpZ2luOiAwIDA7CisgIC1vLXRyYW5zZm9ybS1vcmlnaW46IDAgMDsKKyAgdHJhbnNmb3JtLW9yaWdpbjogMCAwOworfQorLyogbGluZSA3MDksIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisud2l0aC1ub3Rlcy5wb3B1cCBzbGlkZTpub3QoLmJhY2tkcm9wKSB7CisgIC13ZWJraXQtdHJhbnNmb3JtOiBzY2FsZSgwLjYpIHRyYW5zbGF0ZTNkKDAuNWVtLCAwLjVlbSwgMCk7CisgIC1tb3otdHJhbnNmb3JtOiBzY2FsZSgwLjYpIHRyYW5zbGF0ZTNkKDAuNWVtLCAwLjVlbSwgMCk7CisgIC1tcy10cmFuc2Zvcm06IHNjYWxlKDAuNikgdHJhbnNsYXRlM2QoMC41ZW0sIDAuNWVtLCAwKTsKKyAgLW8tdHJhbnNmb3JtOiBzY2FsZSgwLjYpIHRyYW5zbGF0ZTNkKDAuNWVtLCAwLjVlbSwgMCk7CisgIHRyYW5zZm9ybTogc2NhbGUoMC42KSB0cmFuc2xhdGUzZCgwLjVlbSwgMC41ZW0sIDApOworICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxMHB4ICM3OTc5Nzk7CisgIC1tb3otYm94LXNoYWRvdzogMCAwIDEwcHggIzc5Nzk3OTsKKyAgYm94LXNoYWRvdzogMCAwIDEwcHggIzc5Nzk3OTsKK30KKy8qIGxpbmUgNzE0LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLndpdGgtbm90ZXMucG9wdXAgc2xpZGUuYmFja2Ryb3AgeworICBiYWNrZ3JvdW5kLWltYWdlOiAtd2Via2l0LWdyYWRpZW50KHJhZGlhbCwgNTAlIDUwJSwgMCwgNTAlIDUwJSwgNjAwLCBjb2xvci1zdG9wKDAlLCAjYjFkZmZmKSwgY29sb3Itc3RvcCgxMDAlLCAjNDM4N2ZkKSk7CisgIGJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtcmFkaWFsLWdyYWRpZW50KDUwJSA1MCUsICNiMWRmZmYgMCUsICM0Mzg3ZmQgNjAwcHgpOworICBiYWNrZ3JvdW5kLWltYWdlOiAtbW96LXJhZGlhbC1ncmFkaWVudCg1MCUgNTAlLCAjYjFkZmZmIDAlLCAjNDM4N2ZkIDYwMHB4KTsKKyAgYmFja2dyb3VuZC1pbWFnZTogLW8tcmFkaWFsLWdyYWRpZW50KDUwJSA1MCUsICNiMWRmZmYgMCUsICM0Mzg3ZmQgNjAwcHgpOworICBiYWNrZ3JvdW5kLWltYWdlOiAtbXMtcmFkaWFsLWdyYWRpZW50KDUwJSA1MCUsICNiMWRmZmYgMCUsICM0Mzg3ZmQgNjAwcHgpOworICBiYWNrZ3JvdW5kLWltYWdlOiByYWRpYWwtZ3JhZGllbnQoNTAlIDUwJSwgI2IxZGZmZiAwJSwgIzQzODdmZCA2MDBweCk7Cit9CisvKiBsaW5lIDcyMCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy53aXRoLW5vdGVzLnBvcHVwIHNsaWRlLm5leHQgeworICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoNTcwcHgsIDgwcHgsIDApIHNjYWxlKDAuMzUpOworICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoNTcwcHgsIDgwcHgsIDApIHNjYWxlKDAuMzUpOworICAtbXMtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCg1NzBweCwgODBweCwgMCkgc2NhbGUoMC4zNSk7CisgIC1vLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoNTcwcHgsIDgwcHgsIDApIHNjYWxlKDAuMzUpOworICB0cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDU3MHB4LCA4MHB4LCAwKSBzY2FsZSgwLjM1KTsKKyAgb3BhY2l0eTogMSAhaW1wb3J0YW50OworfQorLyogbGluZSA3MjQsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisud2l0aC1ub3Rlcy5wb3B1cCBzbGlkZS5uZXh0IC5ub3RlIHsKKyAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OworfQorLyogbGluZSA3MzAsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisud2l0aC1ub3Rlcy5wb3B1cCAubm90ZSB7CisgIHdpZHRoOiAxMDklOworICBoZWlnaHQ6IDI2MHB4OworICBiYWNrZ3JvdW5kOiAjZTZlNmU2OworICBwYWRkaW5nOiAwOworICAtd2Via2l0LWJveC1zaGFkb3c6IDAgMCAxMHB4ICM3OTc5Nzk7CisgIC1tb3otYm94LXNoYWRvdzogMCAwIDEwcHggIzc5Nzk3OTsKKyAgYm94LXNoYWRvdzogMCAwIDEwcHggIzc5Nzk3OTsKKyAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDI1MHB4LCA4MDBweCwgMCkgc2NhbGUoMS41KTsKKyAgLW1vei10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDI1MHB4LCA4MDBweCwgMCkgc2NhbGUoMS41KTsKKyAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlM2QoMjUwcHgsIDgwMHB4LCAwKSBzY2FsZSgxLjUpOworICAtby10cmFuc2Zvcm06IHRyYW5zbGF0ZTNkKDI1MHB4LCA4MDBweCwgMCkgc2NhbGUoMS41KTsKKyAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgyNTBweCwgODAwcHgsIDApIHNjYWxlKDEuNSk7CisgIC13ZWJraXQtdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlLWluLW91dDsKKyAgLW1vei10cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zIGVhc2UtaW4tb3V0OworICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlLWluLW91dDsKKyAgLW8tdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlLWluLW91dDsKKyAgdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcyBlYXNlLWluLW91dDsKK30KKy8qIGxpbmUgNzQxLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLndpdGgtbm90ZXMucG9wdXAgLm5vdGUgPiBzZWN0aW9uIHsKKyAgYmFja2dyb3VuZDogI2ZmZjsKKyAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA1cHg7CisgIC1tb3otYm9yZGVyLXJhZGl1czogNXB4OworICAtbXMtYm9yZGVyLXJhZGl1czogNXB4OworICAtby1ib3JkZXItcmFkaXVzOiA1cHg7CisgIGJvcmRlci1yYWRpdXM6IDVweDsKKyAgaGVpZ2h0OiAxMDAlOworICB3aWR0aDogMTAwJTsKKyAgLXdlYmtpdC1ib3gtc2l6aW5nOiBib3JkZXItYm94OworICAtbW96LWJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7CisgIC13ZWJraXQtYm94LXNoYWRvdzogbm9uZTsKKyAgLW1vei1ib3gtc2hhZG93OiBub25lOworICBib3gtc2hhZG93OiBub25lOworICBvdmVyZmxvdzogYXV0bzsKKyAgcGFkZGluZzogMWVtOworfQorLyogbGluZSA3NTQsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisud2l0aC1ub3RlcyAubm90ZSB7CisgIG9wYWNpdHk6IDE7CisgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOworICAtbW96LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKKyAgLW1zLXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTsKKyAgLW8tdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApOworICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7CisgIHBvaW50ZXItZXZlbnRzOiBhdXRvOworfQorCisvKiBsaW5lIDc2MSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5zb3VyY2UgeworICBmb250LXNpemU6IDE0cHg7CisgIGNvbG9yOiAjYTlhOWE5OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJvdHRvbTogNzBweDsKKyAgbGVmdDogNjBweDsKK30KKworLyogbGluZSA3NjksIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuY2VudGVyZWQgeworICB0ZXh0LWFsaWduOiBjZW50ZXI7Cit9CisKKy8qIGxpbmUgNzczLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnJlZmxlY3QgeworICAtd2Via2l0LWJveC1yZWZsZWN0OiBiZWxvdyAzcHggLXdlYmtpdC1saW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwKSA4NSUsIHdoaXRlIDE1MCUpOworICAtbW96LWJveC1yZWZsZWN0OiBiZWxvdyAzcHggLW1vei1saW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwKSA4NSUsIHdoaXRlIDE1MCUpOworICAtby1ib3gtcmVmbGVjdDogYmVsb3cgM3B4IC1vLWxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDg1JSwgd2hpdGUgMTUwJSk7CisgIC1tcy1ib3gtcmVmbGVjdDogYmVsb3cgM3B4IC1tcy1saW5lYXItZ3JhZGllbnQocmdiYSgyNTUsIDI1NSwgMjU1LCAwKSA4NSUsIHdoaXRlIDE1MCUpOworICBib3gtcmVmbGVjdDogYmVsb3cgM3B4IGxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwgMjU1LCAyNTUsIDApIDg1JSwgI2ZmZmZmZiAxNTAlKTsKK30KKworLyogbGluZSA3ODEsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuZmxleGJveCB7CisgIGRpc3BsYXk6IC13ZWJraXQtYm94ICFpbXBvcnRhbnQ7CisgIGRpc3BsYXk6IC1tb3otYm94ICFpbXBvcnRhbnQ7CisgIGRpc3BsYXk6IC1tcy1ib3ggIWltcG9ydGFudDsKKyAgZGlzcGxheTogLW8tYm94ICFpbXBvcnRhbnQ7CisgIGRpc3BsYXk6IGJveCAhaW1wb3J0YW50OworfQorCisvKiBsaW5lIDc4NSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5mbGV4Ym94LnZjZW50ZXIgeworICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOworICAtbW96LWJveC1vcmllbnQ6IHZlcnRpY2FsOworICAtbXMtYm94LW9yaWVudDogdmVydGljYWw7CisgIGJveC1vcmllbnQ6IHZlcnRpY2FsOworICAtd2Via2l0LWJveC1hbGlnbjogY2VudGVyOworICAtbW96LWJveC1hbGlnbjogY2VudGVyOworICAtbXMtYm94LWFsaWduOiBjZW50ZXI7CisgIGJveC1hbGlnbjogY2VudGVyOworICAtd2Via2l0LWJveC1wYWNrOiBjZW50ZXI7CisgIC1tb3otYm94LXBhY2s6IGNlbnRlcjsKKyAgLW1zLWJveC1wYWNrOiBjZW50ZXI7CisgIGJveC1wYWNrOiBjZW50ZXI7CisgIGhlaWdodDogMTAwJTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKy8qIGxpbmUgNzkxLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLmZsZXhib3gudmxlZnQgeworICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsOworICAtbW96LWJveC1vcmllbnQ6IHZlcnRpY2FsOworICAtbXMtYm94LW9yaWVudDogdmVydGljYWw7CisgIGJveC1vcmllbnQ6IHZlcnRpY2FsOworICAtd2Via2l0LWJveC1hbGlnbjogbGVmdDsKKyAgLW1vei1ib3gtYWxpZ246IGxlZnQ7CisgIC1tcy1ib3gtYWxpZ246IGxlZnQ7CisgIGJveC1hbGlnbjogbGVmdDsKKyAgLXdlYmtpdC1ib3gtcGFjazogY2VudGVyOworICAtbW96LWJveC1wYWNrOiBjZW50ZXI7CisgIC1tcy1ib3gtcGFjazogY2VudGVyOworICBib3gtcGFjazogY2VudGVyOworICBoZWlnaHQ6IDEwMCU7CisgIHdpZHRoOiAxMDAlOworfQorCisvKiBsaW5lIDc5NywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5mbGV4Ym94LnZyaWdodCB7CisgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7CisgIC1tb3otYm94LW9yaWVudDogdmVydGljYWw7CisgIC1tcy1ib3gtb3JpZW50OiB2ZXJ0aWNhbDsKKyAgYm94LW9yaWVudDogdmVydGljYWw7CisgIC13ZWJraXQtYm94LWFsaWduOiBlbmQ7CisgIC1tb3otYm94LWFsaWduOiBlbmQ7CisgIC1tcy1ib3gtYWxpZ246IGVuZDsKKyAgYm94LWFsaWduOiBlbmQ7CisgIC13ZWJraXQtYm94LXBhY2s6IGNlbnRlcjsKKyAgLW1vei1ib3gtcGFjazogY2VudGVyOworICAtbXMtYm94LXBhY2s6IGNlbnRlcjsKKyAgYm94LXBhY2s6IGNlbnRlcjsKKyAgaGVpZ2h0OiAxMDAlOworICB3aWR0aDogMTAwJTsKK30KKworLyogbGluZSA4MDMsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuYXV0by1mYWRlaW4geworICAtd2Via2l0LXRyYW5zaXRpb246IG9wYWNpdHkgMC42cyBlYXNlLWluIDFzOworICAtbW96LXRyYW5zaXRpb246IG9wYWNpdHkgMC42cyBlYXNlLWluIDFzOworICAtbXMtdHJhbnNpdGlvbjogb3BhY2l0eSAwLjZzIGVhc2UtaW4gMXM7CisgIC1vLXRyYW5zaXRpb246IG9wYWNpdHkgMC42cyBlYXNlLWluIDFzOworICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuNnMgZWFzZS1pbiAxczsKKyAgb3BhY2l0eTogMDsKK30KKworLyogQ2xpY2thYmxlL3RhcHBhYmxlIGFyZWFzICovCisvKiBsaW5lIDgwOSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5zbGlkZS1hcmVhIHsKKyAgei1pbmRleDogMTAwMDsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBsZWZ0OiAwOworICB0b3A6IDA7CisgIHdpZHRoOiAxMDBweDsKKyAgaGVpZ2h0OiA3MDBweDsKKyAgbGVmdDogNTAlOworICB0b3A6IDUwJTsKKyAgY3Vyc29yOiBwb2ludGVyOworICBtYXJnaW4tdG9wOiAtMzUwcHg7Cit9CisKKy8qIGxpbmUgODI2LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworI3ByZXYtc2xpZGUtYXJlYSB7CisgIG1hcmdpbi1sZWZ0OiAtNTUwcHg7Cit9CisKKy8qIGxpbmUgODMxLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworI25leHQtc2xpZGUtYXJlYSB7CisgIG1hcmdpbi1sZWZ0OiA0NTBweDsKK30KKworLyogPT09PT0gU0xJREUgQ09OVEVOVCA9PT09PSAqLworLyogbGluZSA4MzksIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisubG9nb3NsaWRlIGltZyB7CisgIHdpZHRoOiAzODNweDsKKyAgaGVpZ2h0OiA5MnB4OworfQorCisvKiBsaW5lIDg0NSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5zZWd1ZSB7CisgIHBhZGRpbmc6IDYwcHggMTIwcHg7Cit9CisvKiBsaW5lIDg0OCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5zZWd1ZSBoMiB7CisgIGNvbG9yOiAjZTZlNmU2OworICBmb250LXNpemU6IDYwcHg7Cit9CisvKiBsaW5lIDg1MiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5zZWd1ZSBoMyB7CisgIGNvbG9yOiAjZTZlNmU2OworICBsaW5lLWhlaWdodDogMi44OworfQorLyogbGluZSA4NTYsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisuc2VndWUgaGdyb3VwIHsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBib3R0b206IDIyNXB4OworfQorCisvKiBsaW5lIDg2MiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy50aGFuay15b3Utc2xpZGUgeworICBiYWNrZ3JvdW5kOiAjNDM4N2ZkICFpbXBvcnRhbnQ7CisgIGNvbG9yOiB3aGl0ZTsKK30KKy8qIGxpbmUgODY2LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnRoYW5rLXlvdS1zbGlkZSBoMiB7CisgIGZvbnQtc2l6ZTogNjBweDsKKyAgY29sb3I6IGluaGVyaXQ7Cit9CisvKiBsaW5lIDg3MSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy50aGFuay15b3Utc2xpZGUgYXJ0aWNsZSA+IHAgeworICBtYXJnaW4tdG9wOiAyZW07CisgIGZvbnQtc2l6ZTogMjBwdDsKK30KKy8qIGxpbmUgODc2LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnRoYW5rLXlvdS1zbGlkZSA+IHAgeworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJvdHRvbTogODBweDsKKyAgZm9udC1zaXplOiAyNHB0OworICBsaW5lLWhlaWdodDogMS4zOworfQorCisvKiBsaW5lIDg4NCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2FzaWRlLmdkYmFyIHsKKyAgaGVpZ2h0OiA5N3B4OworICB3aWR0aDogMjE1cHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVmdDogLTFweDsKKyAgdG9wOiAxMjVweDsKKyAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAwIDEwcHggMTBweCAwOworICAtbW96LWJvcmRlci1yYWRpdXM6IDAgMTBweCAxMHB4IDA7CisgIC1tcy1ib3JkZXItcmFkaXVzOiAwIDEwcHggMTBweCAwOworICAtby1ib3JkZXItcmFkaXVzOiAwIDEwcHggMTBweCAwOworICBib3JkZXItcmFkaXVzOiAwIDEwcHggMTBweCAwOworICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgMCUgNTAlLCAxMDAlIDUwJSwgY29sb3Itc3RvcCgwJSwgI2U2ZTZlNiksIGNvbG9yLXN0b3AoMTAwJSwgI2U2ZTZlNikpIG5vLXJlcGVhdDsKKyAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQobGVmdCwgI2U2ZTZlNiwgI2U2ZTZlNikgbm8tcmVwZWF0OworICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudChsZWZ0LCAjZTZlNmU2LCAjZTZlNmU2KSBuby1yZXBlYXQ7CisgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudChsZWZ0LCAjZTZlNmU2LCAjZTZlNmU2KSBuby1yZXBlYXQ7CisgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQobGVmdCwgI2U2ZTZlNiwgI2U2ZTZlNikgbm8tcmVwZWF0OworICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQobGVmdCwgI2U2ZTZlNiwgI2U2ZTZlNikgbm8tcmVwZWF0OworICAtd2Via2l0LWJhY2tncm91bmQtc2l6ZTogMCUgMTAwJTsKKyAgLW1vei1iYWNrZ3JvdW5kLXNpemU6IDAlIDEwMCU7CisgIC1vLWJhY2tncm91bmQtc2l6ZTogMCUgMTAwJTsKKyAgYmFja2dyb3VuZC1zaXplOiAwJSAxMDAlOworICAtd2Via2l0LXRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2Utb3V0IDAuNXM7CisgIC1tb3otdHJhbnNpdGlvbjogYWxsIDAuNXMgZWFzZS1vdXQgMC41czsKKyAgLW1zLXRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2Utb3V0IDAuNXM7CisgIC1vLXRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2Utb3V0IDAuNXM7CisgIHRyYW5zaXRpb246IGFsbCAwLjVzIGVhc2Utb3V0IDAuNXM7CisgIC8qIEJldHRlciB0byB0cmFuc2l0aW9uIG9ubHkgb24gYmFja2dyb3VuZC1zaXplLCBidXQgbm90IHN1cmUgaG93IHRvIGRvIHRoYXQgd2l0aCB0aGUgbWl4aW4uICovCit9CisvKiBsaW5lIDg5NSwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2FzaWRlLmdkYmFyLnJpZ2h0IHsKKyAgcmlnaHQ6IDA7CisgIGxlZnQ6IC1tb3otaW5pdGlhbDsKKyAgbGVmdDogaW5pdGlhbDsKKyAgdG9wOiAyNTRweDsKKyAgLyogOTYgaXMgaGVpZ2h0IG9mIGdyYXkgaWNvbiBiYXIgKi8KKyAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZVooMTgwZGVnKTsKKyAgLW1vei10cmFuc2Zvcm06IHJvdGF0ZVooMTgwZGVnKTsKKyAgLW1zLXRyYW5zZm9ybTogcm90YXRlWigxODBkZWcpOworICAtby10cmFuc2Zvcm06IHJvdGF0ZVooMTgwZGVnKTsKKyAgdHJhbnNmb3JtOiByb3RhdGVaKDE4MGRlZyk7Cit9CisvKiBsaW5lIDkwMiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2FzaWRlLmdkYmFyLnJpZ2h0IGltZyB7CisgIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGVaKDE4MGRlZyk7CisgIC1tb3otdHJhbnNmb3JtOiByb3RhdGVaKDE4MGRlZyk7CisgIC1tcy10cmFuc2Zvcm06IHJvdGF0ZVooMTgwZGVnKTsKKyAgLW8tdHJhbnNmb3JtOiByb3RhdGVaKDE4MGRlZyk7CisgIHRyYW5zZm9ybTogcm90YXRlWigxODBkZWcpOworfQorLyogbGluZSA5MDcsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCithc2lkZS5nZGJhci5ib3R0b20geworICB0b3A6IC1tb3otaW5pdGlhbDsKKyAgdG9wOiBpbml0aWFsOworICBib3R0b206IDYwcHg7Cit9CisvKiBsaW5lIDkxMywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KK2FzaWRlLmdkYmFyIGltZyB7CisgIHdpZHRoOiA4NXB4OworICBoZWlnaHQ6IDg1cHg7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgcmlnaHQ6IDA7CisgIG1hcmdpbjogOHB4IDE1cHg7Cit9CisKKy8qIGxpbmUgOTI0LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnRpdGxlLXNsaWRlIGhncm91cCB7CisgIGJvdHRvbTogMTAwcHg7Cit9CisvKiBsaW5lIDkyNywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy50aXRsZS1zbGlkZSBoZ3JvdXAgaDEgeworICBmb250LXNpemU6IDU1cHg7CisgIGxpbmUtaGVpZ2h0OiAxLjQ7CisgIGxldHRlci1zcGFjaW5nOiAtM3B4OworICBjb2xvcjogIzUxNTE1MTsKK30KKy8qIGxpbmUgOTM0LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnRpdGxlLXNsaWRlIGhncm91cCBoMiB7CisgIGZvbnQtc2l6ZTogMzRweDsKKyAgY29sb3I6ICNhOWE5YTk7CisgIGZvbnQtd2VpZ2h0OiBpbmhlcml0OworfQorLyogbGluZSA5NDAsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisudGl0bGUtc2xpZGUgaGdyb3VwIHAgeworICBmb250LXNpemU6IDIwcHg7CisgIGNvbG9yOiAjNzk3OTc5OworICBsaW5lLWhlaWdodDogMS4zOworICBtYXJnaW4tdG9wOiAyZW07Cit9CisKKy8qIGxpbmUgOTQ5LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLnF1b3RlIHsKKyAgY29sb3I6ICNlNmU2ZTY7Cit9CisvKiBsaW5lIDk1MiwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5xdW90ZSAuYXV0aG9yIHsKKyAgZm9udC1zaXplOiAyNHB4OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGJvdHRvbTogODBweDsKKyAgbGluZS1oZWlnaHQ6IDEuNDsKK30KKworLyogbGluZSA5NjEsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCitbZGF0YS1jb25maWctY29udGFjdF0gYSB7CisgIGNvbG9yOiB3aGl0ZTsKKyAgYm9yZGVyLWJvdHRvbTogbm9uZTsKK30KKy8qIGxpbmUgOTY1LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworW2RhdGEtY29uZmlnLWNvbnRhY3RdIHNwYW4geworICB3aWR0aDogMTE1cHg7CisgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKK30KKworLyogbGluZSA5NzQsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisub3ZlcnZpZXcucG9wdXAgLm5vdGUgeworICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7Cit9CisvKiBsaW5lIDk4MCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5vdmVydmlldyBzbGlkZXMgc2xpZGUgeworICBkaXNwbGF5OiBibG9jazsKKyAgY3Vyc29yOiBwb2ludGVyOworICBvcGFjaXR5OiAwLjU7CisgIHBvaW50ZXItZXZlbnRzOiBhdXRvICFpbXBvcnRhbnQ7CisgIGJhY2tncm91bmQ6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCA1MCUgMCUsIDUwJSAxMDAlLCBjb2xvci1zdG9wKDAlLCAjZmZmZmZmKSwgY29sb3Itc3RvcCg4NSUsICNmZmZmZmYpLCBjb2xvci1zdG9wKDEwMCUsICNlNmU2ZTYpKTsKKyAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI2ZmZmZmZiwgI2ZmZmZmZiA4NSUsICNlNmU2ZTYpOworICBiYWNrZ3JvdW5kOiAtbW96LWxpbmVhci1ncmFkaWVudCgjZmZmZmZmLCAjZmZmZmZmIDg1JSwgI2U2ZTZlNik7CisgIGJhY2tncm91bmQ6IC1vLWxpbmVhci1ncmFkaWVudCgjZmZmZmZmLCAjZmZmZmZmIDg1JSwgI2U2ZTZlNik7CisgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQoI2ZmZmZmZiwgI2ZmZmZmZiA4NSUsICNlNmU2ZTYpOworICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQoI2ZmZmZmZiwgI2ZmZmZmZiA4NSUsICNlNmU2ZTYpOworICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKK30KKy8qIGxpbmUgOTgxLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLm92ZXJ2aWV3IHNsaWRlcyBzbGlkZS5iYWNrZHJvcCB7CisgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKK30KKy8qIGxpbmUgOTk2LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLm92ZXJ2aWV3IHNsaWRlcyBzbGlkZS5mYXItcGFzdCwgLm92ZXJ2aWV3IHNsaWRlcyBzbGlkZS5wYXN0LCAub3ZlcnZpZXcgc2xpZGVzIHNsaWRlLm5leHQsIC5vdmVydmlldyBzbGlkZXMgc2xpZGUuZmFyLW5leHQsIC5vdmVydmlldyBzbGlkZXMgc2xpZGUuZmFyLXBhc3QgeworICBvcGFjaXR5OiAwLjU7CisgIGRpc3BsYXk6IGJsb2NrOworfQorLyogbGluZSAxMDAxLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworLm92ZXJ2aWV3IHNsaWRlcyBzbGlkZS5jdXJyZW50IHsKKyAgb3BhY2l0eTogMTsKK30KKy8qIGxpbmUgMTAwNywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKy5vdmVydmlldyAuc2xpZGUtYXJlYSB7CisgIGRpc3BsYXk6IG5vbmU7Cit9CisKK0BtZWRpYSBwcmludCB7CisgIC8qIGxpbmUgMTAxNCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKyAgc2xpZGVzIHNsaWRlIHsKKyAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OworICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBiYWNrZ3JvdW5kOiAtd2Via2l0LWdyYWRpZW50KGxpbmVhciwgNTAlIDAlLCA1MCUgMTAwJSwgY29sb3Itc3RvcCgwJSwgI2ZmZmZmZiksIGNvbG9yLXN0b3AoODUlLCAjZmZmZmZmKSwgY29sb3Itc3RvcCgxMDAlLCAjZTZlNmU2KSk7CisgICAgYmFja2dyb3VuZDogLXdlYmtpdC1saW5lYXItZ3JhZGllbnQoI2ZmZmZmZiwgI2ZmZmZmZiA4NSUsICNlNmU2ZTYpOworICAgIGJhY2tncm91bmQ6IC1tb3otbGluZWFyLWdyYWRpZW50KCNmZmZmZmYsICNmZmZmZmYgODUlLCAjZTZlNmU2KTsKKyAgICBiYWNrZ3JvdW5kOiAtby1saW5lYXItZ3JhZGllbnQoI2ZmZmZmZiwgI2ZmZmZmZiA4NSUsICNlNmU2ZTYpOworICAgIGJhY2tncm91bmQ6IC1tcy1saW5lYXItZ3JhZGllbnQoI2ZmZmZmZiwgI2ZmZmZmZiA4NSUsICNlNmU2ZTYpOworICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCgjZmZmZmZmLCAjZmZmZmZmIDg1JSwgI2U2ZTZlNik7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CisgICAgLXdlYmtpdC10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKKyAgICAtbW96LXRyYW5zZm9ybTogbm9uZSAhaW1wb3J0YW50OworICAgIC1tcy10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKKyAgICAtby10cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKKyAgICB0cmFuc2Zvcm06IG5vbmUgIWltcG9ydGFudDsKKyAgICB3aWR0aDogMTAwJTsKKyAgICBoZWlnaHQ6IDEwMCU7CisgICAgcGFnZS1icmVhay1hZnRlcjogYWx3YXlzOworICAgIHRvcDogYXV0byAhaW1wb3J0YW50OworICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKKyAgICBtYXJnaW4tdG9wOiAwICFpbXBvcnRhbnQ7CisgICAgbWFyZ2luLWxlZnQ6IDAgIWltcG9ydGFudDsKKyAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7CisgICAgY29sb3I6ICM1NTU7CisgIH0KKyAgLyogbGluZSAxMDM0LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworICBzbGlkZXMgc2xpZGUuZmFyLXBhc3QsIHNsaWRlcyBzbGlkZS5wYXN0LCBzbGlkZXMgc2xpZGUubmV4dCwgc2xpZGVzIHNsaWRlLmZhci1uZXh0LCBzbGlkZXMgc2xpZGUuZmFyLXBhc3QsIHNsaWRlcyBzbGlkZS5jdXJyZW50IHsKKyAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7CisgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKKyAgfQorICAvKiBsaW5lIDEwNDAsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisgIHNsaWRlcyBzbGlkZSAuYnVpbGQgPiAqIHsKKyAgICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmU7CisgICAgLW1vei10cmFuc2l0aW9uOiBub25lOworICAgIC1tcy10cmFuc2l0aW9uOiBub25lOworICAgIC1vLXRyYW5zaXRpb246IG5vbmU7CisgICAgdHJhbnNpdGlvbjogbm9uZTsKKyAgfQorICAvKiBsaW5lIDEwNDUsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisgIHNsaWRlcyBzbGlkZSAuYnVpbGQgLnRvLWJ1aWxkLAorICBzbGlkZXMgc2xpZGUgLmJ1aWxkIC5idWlsZC1mYWRlIHsKKyAgICBvcGFjaXR5OiAxOworICB9CisgIC8qIGxpbmUgMTA1MCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKyAgc2xpZGVzIHNsaWRlIC5hdXRvLWZhZGVpbiB7CisgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50OworICB9CisgIC8qIGxpbmUgMTA1NCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKyAgc2xpZGVzIHNsaWRlLmJhY2tkcm9wIHsKKyAgICBkaXNwbGF5OiBub25lICFpbXBvcnRhbnQ7CisgIH0KKyAgLyogbGluZSAxMDU4LCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworICBzbGlkZXMgc2xpZGUgdGFibGUucm93cyB7CisgICAgYm9yZGVyLXJpZ2h0OiAwOworICB9CisgIC8qIGxpbmUgMTA2MywgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKyAgc2xpZGVzIHNsaWRlW2hpZGRlbl0geworICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKKyAgfQorCisgIC8qIGxpbmUgMTA2OCwgLi4vc2Nzcy9kZWZhdWx0LnNjc3MgKi8KKyAgLnNsaWRlLWFyZWEgeworICAgIGRpc3BsYXk6IG5vbmU7CisgIH0KKworICAvKiBsaW5lIDEwNzIsIC4uL3Njc3MvZGVmYXVsdC5zY3NzICovCisgIC5yZWZsZWN0IHsKKyAgICAtd2Via2l0LWJveC1yZWZsZWN0OiBub25lOworICAgIC1tb3otYm94LXJlZmxlY3Q6IG5vbmU7CisgICAgLW8tYm94LXJlZmxlY3Q6IG5vbmU7CisgICAgLW1zLWJveC1yZWZsZWN0OiBub25lOworICAgIGJveC1yZWZsZWN0OiBub25lOworICB9CisKKyAgLyogbGluZSAxMDgwLCAuLi9zY3NzL2RlZmF1bHQuc2NzcyAqLworICBwcmUsIGNvZGUgeworICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2UgIWltcG9ydGFudDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS9jc3MvcGhvbmUuY3NzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS9jc3MvcGhvbmUuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwMjU0MzYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3RoZW1lL2Nzcy9waG9uZS5jc3MKQEAgLTAsMCArMSwyNyBAQAorLypTbWFydHBob25lcyAocG9ydHJhaXQgYW5kIGxhbmRzY2FwZSkgLS0tLS0tLS0tLS0gKi8KKy8qQG1lZGlhIG9ubHkgc2NyZWVuCithbmQgKG1pbi13aWR0aCA6IDMyMHB4KQorYW5kIChtYXgtd2lkdGggOiA0ODBweCkgeworCit9Ki8KKy8qIFNtYXJ0cGhvbmVzIChwb3J0cmFpdCkgLS0tLS0tLS0tLS0gKi8KKy8qIFN0eWxlcyAqLworLyogbGluZSAxNywgLi4vc2Nzcy9waG9uZS5zY3NzICovCitzbGlkZXMgPiBzbGlkZSB7CisgIC8qICB3aWR0aDogJHNsaWRlLXdpZHRoICFpbXBvcnRhbnQ7CisgICAgaGVpZ2h0OiAkc2xpZGUtaGVpZ2h0ICFpbXBvcnRhbnQ7CisgICAgbWFyZ2luLWxlZnQ6IC0kc2xpZGUtd2lkdGggLyAyICFpbXBvcnRhbnQ7CisgICAgbWFyZ2luLXRvcDogLSRzbGlkZS1oZWlnaHQgLyAyICFpbXBvcnRhbnQ7CisgICovCisgIC13ZWJraXQtdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OworICAtd2Via2l0LXRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsKKyAgLW1vei10cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7CisgIC1tcy10cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7CisgIC1vLXRyYW5zaXRpb246IG5vbmUgIWltcG9ydGFudDsKKyAgdHJhbnNpdGlvbjogbm9uZSAhaW1wb3J0YW50OworfQorCisvKiBpUGhvbmUgNCAtLS0tLS0tLS0tLSAqLworQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvIDogMS41KSwgb25seSBzY3JlZW4gYW5kIChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvIDogMS41KSB7CisgIC8qIFN0eWxlcyAqLworfQpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS9zY3NzL19iYXNlLnNjc3MgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3RoZW1lL3Njc3MvX2Jhc2Uuc2NzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzk5ZGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS9zY3NzL19iYXNlLnNjc3MKQEAgLTAsMCArMSwxMzUgQEAKK0BpbXBvcnQgImNvbXBhc3MvcmVzZXQiOworQGltcG9ydCAiY29tcGFzcy9jc3MzL2JvcmRlci1yYWRpdXMiOworQGltcG9ydCAiY29tcGFzcy9jc3MzL2JveCI7CitAaW1wb3J0ICJjb21wYXNzL2NzczMvYm94LXNoYWRvdyI7CitAaW1wb3J0ICJjb21wYXNzL2NzczMvYm94LXNpemluZyI7CitAaW1wb3J0ICJjb21wYXNzL2NzczMvaW1hZ2VzIjsKK0BpbXBvcnQgImNvbXBhc3MvY3NzMy90ZXh0LXNoYWRvdyI7CitAaW1wb3J0ICJjb21wYXNzL2NzczMvYmFja2dyb3VuZC1zaXplIjsKK0BpbXBvcnQgImNvbXBhc3MvY3NzMy90cmFuc2Zvcm0iOworQGltcG9ydCAiY29tcGFzcy9jc3MzL3RyYW5zaXRpb24iOworCitAbWl4aW4gZm9udC1zbW9vdGhpbmcoJHZhbDogYW50aWFsaWFzZWQpIHsKKyAgLXdlYmtpdC1mb250LXNtb290aGluZzogJHZhbDsKKyAgLW1vei1mb250LXNtb290aGluZzogJHZhbDsKKyAgLW1zLWZvbnQtc21vb3RoaW5nOiAkdmFsOworICAtby1mb250LXNtb290aGluZzogJHZhbDsKK30KKworQG1peGluIGZsZXhib3ggeworICBkaXNwbGF5OiAtd2Via2l0LWJveCAhaW1wb3J0YW50OworICBkaXNwbGF5OiAtbW96LWJveCAhaW1wb3J0YW50OworICBkaXNwbGF5OiAtbXMtYm94ICFpbXBvcnRhbnQ7CisgIGRpc3BsYXk6IC1vLWJveCAhaW1wb3J0YW50OworICBkaXNwbGF5OiBib3ggIWltcG9ydGFudDsKK30KKworQG1peGluIGZsZXgtY2VudGVyLWNlbnRlciB7CisgIEBpbmNsdWRlIGJveC1vcmllbnQodmVydGljYWwpOworICBAaW5jbHVkZSBib3gtYWxpZ24oY2VudGVyKTsKKyAgQGluY2x1ZGUgYm94LXBhY2soY2VudGVyKTsKK30KKworQG1peGluIGZsZXgtbGVmdC1jZW50ZXIgeworICBAaW5jbHVkZSBib3gtb3JpZW50KHZlcnRpY2FsKTsKKyAgQGluY2x1ZGUgYm94LWFsaWduKGxlZnQpOworICBAaW5jbHVkZSBib3gtcGFjayhjZW50ZXIpOworfQorCitAbWl4aW4gZmxleC1yaWdodC1jZW50ZXIgeworICBAaW5jbHVkZSBib3gtb3JpZW50KHZlcnRpY2FsKTsKKyAgQGluY2x1ZGUgYm94LWFsaWduKGVuZCk7CisgIEBpbmNsdWRlIGJveC1wYWNrKGNlbnRlcik7Cit9CisKKy8qKgorICogQmFzZSBTbGlkZURlY2sgU3R5bGVzCisgKi8KK2h0bWwgeworICBoZWlnaHQ6IDEwMCU7CisgIG92ZXJmbG93OiBoaWRkZW47Cit9CisKK2JvZHkgeworICBtYXJnaW46IDA7CisgIHBhZGRpbmc6IDA7CisKKyAgb3BhY2l0eTogMDsKKworICBoZWlnaHQ6IDEwMCU7CisgIG1pbi1oZWlnaHQ6IDc0MHB4OworICB3aWR0aDogMTAwJTsKKworICBvdmVyZmxvdzogaGlkZGVuOworCisgIGNvbG9yOiAjZmZmOworICBAaW5jbHVkZSBmb250LXNtb290aGluZyhhbnRpYWxpYXNlZCk7CisgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSA4MDBtcyBlYXNlLWluIDEwMG1zKTsgLy8gQWRkIHNtYWxsIGRlbGF5IHRvIHByZXZlbnQgamFuay4KKworICAmLmxvYWRlZCB7CisgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50OworICB9Cit9CisKK2lucHV0LCBidXR0b24geworICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOworfQorCitzbGlkZXMgPiBzbGlkZVtoaWRkZW5dIHsKKyAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OworfQorCitzbGlkZXMgeworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiAxMDAlOworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IDA7CisgIHRvcDogMDsKKyAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZTNkKDAsIDAsIDApKTsKKyAgQGluY2x1ZGUgcGVyc3BlY3RpdmUoMTAwMCk7CisgIEBpbmNsdWRlIHRyYW5zZm9ybS1zdHlsZShwcmVzZXJ2ZS0zZCk7CisgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSA4MDBtcyBlYXNlLWluIDEwMG1zKTsgLy8gQWRkIHNtYWxsIGRlbGF5IHRvIHByZXZlbnQgamFuay4KK30KKworc2xpZGVzID4gc2xpZGUgeworICBkaXNwbGF5OiBibG9jazsKKyAgcG9zaXRpb246IGFic29sdXRlOworICBvdmVyZmxvdzogaGlkZGVuOworICBsZWZ0OiA1MCU7CisgIHRvcDogNTAlOworICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpOworfQorCisvKiBTbGlkZSBzdHlsZXMgKi8KKworCisvKmFydGljbGUuZmlsbCBpZnJhbWUgeworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IDA7CisgIHRvcDogMDsKKyAgd2lkdGg6IDEwMCU7CisgIGhlaWdodDogMTAwJTsKKworICBib3JkZXI6IDA7CisgIG1hcmdpbjogMDsKKworICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDEwcHgpOworCisgIHotaW5kZXg6IC0xOworfQorCitzbGlkZS5maWxsIHsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKGNvdmVyKTsKK30KKworc2xpZGUuZmlsbCBpbWcgeworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IDA7CisgIHRvcDogMDsKKyAgbWluLXdpZHRoOiAxMDAlOworICBtaW4taGVpZ2h0OiAxMDAlOworCisgIHotaW5kZXg6IC0xOworfQorKi8KZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvdGhlbWUvc2Nzcy9kZWZhdWx0LnNjc3MgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3RoZW1lL3Njc3MvZGVmYXVsdC5zY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNDJhMTEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3RoZW1lL3Njc3MvZGVmYXVsdC5zY3NzCkBAIC0wLDAgKzEsMTA4MyBAQAorQGltcG9ydCAiYmFzZSI7CitAaW1wb3J0ICJjb21wYXNzL2NzczMvY29sdW1ucyI7CitAaW1wb3J0ICJjb21wYXNzL2NzczMvdXNlci1pbnRlcmZhY2UiOworCiskc29jaWFsLXRhZ3M6ICcjaW8xMic7CiskYnJhbmQtc21hbGwtaWNvbi1zaXplOiAzMHB4OworCiskZ3JheS0xOiAjZTZlNmU2OworJGdyYXktMjogI2E5YTlhOTsKKyRncmF5LTM6ICM3OTc5Nzk7CiskZ3JheS00OiAjNTE1MTUxOworCiskYnJhbmQtYmx1ZTogcmdiKDY3LCAxMzUsIDI1Myk7CiskYnJhbmQtYmx1ZS1zZWNvbmRhcnk6ICMzYzhlZjM7CiskYnJhbmQtYmx1ZS1zZWNvbmRhcnkyOiAjMmE3Y2RmOworCiskYnJhbmQtcmVkOiByZ2IoMjQ0LCA3NCwgNjMpOworJGJyYW5kLXJlZC1zZWNvbmRhcnk6ICNlMDU0M2U7CiskYnJhbmQtcmVkLXNlY29uZGFyeTI6ICNkOTRkM2E7CisKKyRicmFuZC15ZWxsb3c6IHJnYigyNTUsIDIwOSwgNzcpOworJGJyYW5kLXllbGxvdy1zZWNvbmRhcnk6ICNmOWNjNDY7CiskYnJhbmQteWVsbG93LXNlY29uZGFyeTI6ICNmNmMwMDA7CisKKyRicmFuZC1ncmVlbjogcmdiKDEzLCAxNjgsIDk3KTsKKyRicmFuZC1ncmVlbi1zZWNvbmRhcnk6ICMwMGE4NmQ7CiskYnJhbmQtZ3JlZW4tc2Vjb25kYXJ5MjogIzAwOWY1ZDsKKworJHNsaWRlLXdpZHRoOiA5MDBweDsKKyRzbGlkZS1oZWlnaHQ6IDcwMHB4OworJHNsaWRlLXdpZHRoLXdpZGVzY3JlZW46IDExMDBweDsKKyRzbGlkZS10b3AtYm90dG9tLXBhZGRpbmc6IDQwcHg7Ciskc2xpZGUtbGVmdC1yaWdodC1wYWRkaW5nOiA2MHB4OworJHNsaWRlLWJvcmRlci1yYWRpdXM6IDVweDsKKworJHNsaWRlLXRhcC1hcmVhLXdpZHRoOiAxMDBweDsKKworJGFydGljbGUtY29udGVudC10b3AtcGFkZGluZzogNDVweDsKKworQG1peGluIGhpZ2hsaWdodC1jb2xvcigkY29sb3I6ICRicmFuZC15ZWxsb3cpIHsKKyAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiAkY29sb3I7CisgIC1tb3otdGFwLWhpZ2hsaWdodC1jb2xvcjogJGNvbG9yOworICAtbXMtdGFwLWhpZ2hsaWdodC1jb2xvcjogJGNvbG9yOworICAtby10YXAtaGlnaGxpZ2h0LWNvbG9yOiAkY29sb3I7CisgIHRhcC1oaWdobGlnaHQtY29sb3I6ICRjb2xvcjsKK30KKworQG1peGluIGJhY2tkcm9wIHsKKyAgQGluY2x1ZGUgYmFja2dyb3VuZChsaW5lYXItZ3JhZGllbnQod2hpdGUsIHdoaXRlIDg1JSwgJGdyYXktMSkpOworICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKK30KKworCisKKy8qKgorICogVGhlbWUgU3R5bGVzCisgKi8KKzo6c2VsZWN0aW9uIHsKKyAgY29sb3I6IHdoaXRlOworICBiYWNrZ3JvdW5kLWNvbG9yOiAkYnJhbmQteWVsbG93OworICBAaW5jbHVkZSB0ZXh0LXNoYWRvdyhub25lKTsKK30KKworOjotd2Via2l0LXNjcm9sbGJhciB7CisgIGhlaWdodDogMTZweDsKKyAgb3ZlcmZsb3c6IHZpc2libGU7CisgIHdpZHRoOiAxNnB4OworfQorOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CisgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEpOworICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OworICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50OworICBtaW4taGVpZ2h0OiAyOHB4OworICBwYWRkaW5nOiAxMDBweCAwIDA7CisgIEBpbmNsdWRlIGJveC1zaGFkb3coaW5zZXQgMXB4IDFweCAwIHJnYmEoMCwwLDAsLjEpLGluc2V0IDAgLTFweCAwIHJnYmEoMCwwLDAsLjA3KSk7CisgIGJvcmRlci13aWR0aDogMXB4IDFweCAxcHggNnB4OworfQorOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7CisgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTsKK30KKzo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uIHsKKyAgaGVpZ2h0OiAwOworICB3aWR0aDogMDsKK30KKzo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgeworICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94OworICBib3JkZXI6IHNvbGlkIHRyYW5zcGFyZW50OworICBib3JkZXItd2lkdGg6IDAgMCAwIDRweDsKK30KKzo6LXdlYmtpdC1zY3JvbGxiYXItY29ybmVyIHsKKyAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7Cit9CisKK2JvZHkgeworICBiYWNrZ3JvdW5kOiBibGFjazsKK30KKworc2xpZGVzID4gc2xpZGUgeworICBkaXNwbGF5OiBub25lOworICBmb250LWZhbWlseTogJ09wZW4gU2FucycsIEFyaWFsLCBzYW5zLXNlcmlmOworICBmb250LXNpemU6IDI2cHg7CisgIGNvbG9yOiAkZ3JheS0zOworICAvL0BpbmNsdWRlIGJhY2tncm91bmQobGluZWFyLWdyYWRpZW50KHdoaXRlLCB3aGl0ZSA4NSUsICRncmF5LTEpKTsKKyAgLy9iYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKKyAgd2lkdGg6ICRzbGlkZS13aWR0aDsKKyAgaGVpZ2h0OiAkc2xpZGUtaGVpZ2h0OworICBtYXJnaW4tbGVmdDogLSRzbGlkZS13aWR0aCAvIDI7CisgIG1hcmdpbi10b3A6IC0kc2xpZGUtaGVpZ2h0IC8gMjsKKyAgcGFkZGluZzogJHNsaWRlLXRvcC1ib3R0b20tcGFkZGluZyAkc2xpZGUtbGVmdC1yaWdodC1wYWRkaW5nOworCisgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJHNsaWRlLWJvcmRlci1yYWRpdXMpOworICAvL0BpbmNsdWRlIGJveC1zaGFkb3coNXB4IDVweCAyMHB4ICRncmF5LTQpOworICBAaW5jbHVkZSB0cmFuc2l0aW9uKGFsbCAwLjZzIGVhc2UtaW4tb3V0KTsKKworICAvLyR0cmFuc2xhdGVYOiAxMDIwcHg7CisgIC8vJHJvdGF0ZVk6IDMwZGVnOworICAvLyRyb3RhdGVYOiA0NWRlZzsKKworICAmLmZhci1wYXN0IHsKKyAgICAvL2Rpc3BsYXk6IGJsb2NrOworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgLy9AaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlKC0kdHJhbnNsYXRlWCAqIDIpKTsKKyAgICAvL0BpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUzZCgtJHRyYW5zbGF0ZVggKiAyLCAwLCAwKSk7CisgIH0KKworICAmLnBhc3QgeworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIC8vQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZSgtJHRyYW5zbGF0ZVgpIHJvdGF0ZVkoJHJvdGF0ZVkpIHJvdGF0ZVgoJHJvdGF0ZVgpKTsKKyAgICAvL0BpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUzZCgtJHRyYW5zbGF0ZVgsIDAsIDApIHJvdGF0ZVkoJHJvdGF0ZVkpIHJvdGF0ZVgoJHJvdGF0ZVgpKTsKKyAgICBvcGFjaXR5OiAwOworICB9CisKKyAgJi5jdXJyZW50IHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICAvL0BpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUoMCkpOworICAgIC8vQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZTNkKDAsIDAsIDApKTsKKyAgICBvcGFjaXR5OiAxOworCisgICAgLmF1dG8tZmFkZWluIHsKKyAgICAgIG9wYWNpdHk6IDE7CisgICAgfQorCisgICAgLmdkYmFyIHsKKyAgICAgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgxMDAlIDEwMCUpOworICAgIH0KKyAgfQorCisgICYubmV4dCB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgLy9AaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlKCR0cmFuc2xhdGVYKSByb3RhdGVZKC0kcm90YXRlWSkgcm90YXRlWCgkcm90YXRlWCkpOworICAgIC8vQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZTNkKCR0cmFuc2xhdGVYLCAwLCAwKSByb3RhdGVZKC0kcm90YXRlWSkgcm90YXRlWCgkcm90YXRlWCkpOworICAgIG9wYWNpdHk6IDA7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgIH0KKworICAmLmZhci1uZXh0IHsKKyAgICAvL2Rpc3BsYXk6IGJsb2NrOworICAgIGRpc3BsYXk6IG5vbmU7CisgICAgLy9AaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlKCR0cmFuc2xhdGVYICogMikpOworICAgIC8vQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZTNkKCR0cmFuc2xhdGVYICogMiwgMCwgMCkpOworICB9CisKKyAgJi5kYXJrIHsKKyAgICBiYWNrZ3JvdW5kOiAkZ3JheS00ICFpbXBvcnRhbnQ7CisgIH0KKworICAmOm5vdCgubm9iYWNrZ3JvdW5kKSB7CisgICAgLy9iYWNrZ3JvdW5kOiB3aGl0ZSB1cmwoLi4vLi4vaW1hZ2VzL2dvb2dsZV9kZXZlbG9wZXJzX2ljb25fMTI4LnBuZykgKCRicmFuZC1zbWFsbC1pY29uLXNpemUgKiAyKSA5OCUgbm8tcmVwZWF0OworICAgIC8vQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKCRicmFuZC1zbWFsbC1pY29uLXNpemUgJGJyYW5kLXNtYWxsLWljb24tc2l6ZSk7CisKKyAgICAmOmJlZm9yZSB7CisgICAgICBmb250LXNpemU6IDEycHQ7CisgICAgICBjb250ZW50OiAkc29jaWFsLXRhZ3M7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICBib3R0b206ICRzbGlkZS10b3AtYm90dG9tLXBhZGRpbmcgLyAyOworICAgICAgbGVmdDogJHNsaWRlLWxlZnQtcmlnaHQtcGFkZGluZzsKKyAgICAgIGJhY2tncm91bmQ6IHVybCguLi8uLi9pbWFnZXMvZ29vZ2xlX2RldmVsb3BlcnNfaWNvbl8xMjgucG5nKSBuby1yZXBlYXQgMCA1MCU7CisgICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLXNpemUoJGJyYW5kLXNtYWxsLWljb24tc2l6ZSAkYnJhbmQtc21hbGwtaWNvbi1zaXplKTsKKyAgICAgIHBhZGRpbmctbGVmdDogJGJyYW5kLXNtYWxsLWljb24tc2l6ZSArIDEwOworICAgICAgaGVpZ2h0OiAkYnJhbmQtc21hbGwtaWNvbi1zaXplOworICAgICAgbGluZS1oZWlnaHQ6IDEuOTsKKyAgICB9CisgICAgJjphZnRlciB7CisgICAgICBmb250LXNpemU6IDEycHQ7CisgICAgICBjb250ZW50OiBhdHRyKGRhdGEtc2xpZGUtbnVtKSAnLycgYXR0cihkYXRhLXRvdGFsLXNsaWRlcyk7CisgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICBib3R0b206ICRzbGlkZS10b3AtYm90dG9tLXBhZGRpbmcgLyAyOworICAgICAgcmlnaHQ6ICRzbGlkZS1sZWZ0LXJpZ2h0LXBhZGRpbmc7CisgICAgICBsaW5lLWhlaWdodDogMS45OworICAgIH0KKyAgfQorCisgICYudGl0bGUtc2xpZGUgeworICAgICY6YWZ0ZXIgeworICAgICAgY29udGVudDogJyc7CisgICAgICBiYWNrZ3JvdW5kOiB1cmwoLi4vLi4vaW1hZ2VzL2lvMjAxMl9sb2dvLnBuZykgbm8tcmVwZWF0IDEwMCUgNTAlOworICAgICAgQGluY2x1ZGUgYmFja2dyb3VuZC1zaXplKGNvbnRhaW4pOworICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgYm90dG9tOiAkc2xpZGUtdG9wLWJvdHRvbS1wYWRkaW5nOworICAgICAgcmlnaHQ6ICRzbGlkZS10b3AtYm90dG9tLXBhZGRpbmc7CisgICAgICB3aWR0aDogMTAwJTsKKyAgICAgIGhlaWdodDogNjBweDsKKyAgICB9CisgIH0KKworICAmLmJhY2tkcm9wIHsKKyAgICB6LWluZGV4OiAtMTA7CisgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKKyAgICBAaW5jbHVkZSBiYWNrZHJvcDsKKworICAgICY6YWZ0ZXIsICY6YmVmb3JlIHsKKyAgICAgIGRpc3BsYXk6IG5vbmU7IC8vIFByZXZlbnQgZG91YmxlIHNldCBvZiBzbGlkZSBudW1zIGFuZCBmb290ZXIgaWNvbnMuCisgICAgfQorICB9CisKKyAgPiBoZ3JvdXAgKyBhcnRpY2xlIHsKKyAgICBtYXJnaW4tdG9wOiAkYXJ0aWNsZS1jb250ZW50LXRvcC1wYWRkaW5nOworCisgICAgJi5mbGV4Ym94IHsKKyAgICAgICYudmNlbnRlciwgJi52bGVmdCwgJi52cmlnaHQgeworICAgICAgICBoZWlnaHQ6IDgwJTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBwIHsKKyAgICAgIG1hcmdpbi1ib3R0b206IDFlbTsKKyAgICB9CisgIH0KKworICA+IGFydGljbGU6b25seS1jaGlsZCB7CisgICAgaGVpZ2h0OiAxMDAlOworCisgICAgPiBpZnJhbWUgeworICAgICAgaGVpZ2h0OiA5OCU7CisgICAgfQorICB9Cit9CisKK3NsaWRlcy5sYXlvdXQtZmF1eC13aWRlc2NyZWVuID4gc2xpZGUgeworICBwYWRkaW5nOiAkc2xpZGUtdG9wLWJvdHRvbS1wYWRkaW5nIDE2MHB4OworfQorCitzbGlkZXMubGF5b3V0LXdpZGVzY3JlZW4sCitzbGlkZXMubGF5b3V0LWZhdXgtd2lkZXNjcmVlbiB7CisKKyAgJHRyYW5zbGF0ZVg6IDExMzBweDsKKworICA+IHNsaWRlIHsKKyAgICBtYXJnaW4tbGVmdDogLSRzbGlkZS13aWR0aC13aWRlc2NyZWVuIC8gMjsKKyAgICB3aWR0aDogJHNsaWRlLXdpZHRoLXdpZGVzY3JlZW47CisgIH0KKworICA+IHNsaWRlLmZhci1wYXN0IHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBkaXNwbGF5OiBub25lOworICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUoLSR0cmFuc2xhdGVYICogMikpOworICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUzZCgtJHRyYW5zbGF0ZVggKiAyLCAwLCAwKSk7CisgIH0KKworICA+IHNsaWRlLnBhc3QgeworICAgIGRpc3BsYXk6IGJsb2NrOworICAgIC8vQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZSgtJHRyYW5zbGF0ZVgpKTsKKyAgICAvL0BpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUzZCgtJHRyYW5zbGF0ZVgsIDAsIDApKTsKKyAgICBvcGFjaXR5OiAwOworICB9CisKKyAgPiBzbGlkZS5jdXJyZW50IHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICAvL0BpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUoMCkpOworICAgIC8vQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZTNkKDAsIDAsIDApKTsKKyAgICBvcGFjaXR5OiAxOworICB9CisKKyAgPiBzbGlkZS5uZXh0IHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICAvL0BpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUoJHRyYW5zbGF0ZVgpKTsKKyAgICAvL0BpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUzZCgkdHJhbnNsYXRlWCwgMCwgMCkpOworICAgIG9wYWNpdHk6IDA7CisgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7CisgIH0KKworICA+IHNsaWRlLmZhci1uZXh0IHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICBkaXNwbGF5OiBub25lOworICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUoJHRyYW5zbGF0ZVggKiAyKSk7CisgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZTNkKCR0cmFuc2xhdGVYICogMiwgMCwgMCkpOworICB9CisKKyAgI3ByZXYtc2xpZGUtYXJlYSB7CisgICAgbWFyZ2luLWxlZnQ6IC0kc2xpZGUtd2lkdGgtd2lkZXNjcmVlbiAvIDIgLSAkc2xpZGUtdGFwLWFyZWEtd2lkdGg7CisgIH0KKworICAjbmV4dC1zbGlkZS1hcmVhIHsKKyAgICBtYXJnaW4tbGVmdDogJHNsaWRlLXdpZHRoLXdpZGVzY3JlZW4gLyAyOworICB9Cit9CisKK2IgeworICBmb250LXdlaWdodDogNjAwOworfQorCithIHsKKyAgY29sb3I6ICRicmFuZC1ibHVlLXNlY29uZGFyeTI7CisgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKKyAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHJnYmEoNDIsIDEyNCwgMjIzLCAwLjUpOworCisgICY6aG92ZXIgeworICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50OworICB9Cit9CisKK2gxLCBoMiwgaDMgeworICBmb250LXdlaWdodDogNjAwOworfQorCitoMiB7CisgIGZvbnQtc2l6ZTogNDVweDsKKyAgbGluZS1oZWlnaHQ6IDQ1cHg7CisgIGxldHRlci1zcGFjaW5nOiAtMnB4OworICBjb2xvcjogJGdyYXktNDsKK30KKworaDMgeworICBmb250LXNpemU6IDMwcHg7CisgIGxldHRlci1zcGFjaW5nOiAtMXB4OworICBsaW5lLWhlaWdodDogMjsKKyAgZm9udC13ZWlnaHQ6IGluaGVyaXQ7CisgIGNvbG9yOiAkZ3JheS0zOworfQorCit1bCB7CisgIG1hcmdpbi1sZWZ0OiAxLjJlbTsKKyAgbWFyZ2luLWJvdHRvbTogMWVtOworICBwb3NpdGlvbjogcmVsYXRpdmU7CisKKyAgbGkgeworICAgIG1hcmdpbi1ib3R0b206IDAuNWVtOworCisgICAgdWwgeworICAgICAgbWFyZ2luLWxlZnQ6IDJlbTsKKyAgICAgIG1hcmdpbi1ib3R0b206IDA7CisKKyAgICAgIGxpOmJlZm9yZSB7CisgICAgICAgIGNvbnRlbnQ6ICctJzsKKyAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICA+IGxpOmJlZm9yZSB7CisgICAgY29udGVudDogJ8K3JzsKKyAgICBtYXJnaW4tbGVmdDogLTFlbTsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgZm9udC13ZWlnaHQ6IDYwMDsKKyAgfQorCisgIHVsIHsKKyAgICBtYXJnaW4tdG9wOiAuNWVtOworICB9Cit9CisKKy8vIENvZGUgaGlnaGxpZ2h0aW5nIG9ubHkgZWZmZWN0cyB0aGUgY3VycmVudCBzbGlkZS4KKy5oaWdobGlnaHQtY29kZSBzbGlkZS5jdXJyZW50IHsKKyAgcHJlID4gKiB7CisgICAgb3BhY2l0eTogMC4yNTsKKyAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMC41cyBlYXNlLWluKTsKKyAgfQorICBiIHsKKyAgICBvcGFjaXR5OiAxOworICB9Cit9CisKK3ByZSB7CisgIGZvbnQtZmFtaWx5OiAnSW5jb25zb2xhdGEnLCAnQ291cmllciBOZXcnLCBtb25vc3BhY2U7CisgIGZvbnQtc2l6ZTogMjBweDsKKyAgbGluZS1oZWlnaHQ6IDI4cHg7CisgIHBhZGRpbmc6IDEwcHggMCAxMHB4ICRzbGlkZS1sZWZ0LXJpZ2h0LXBhZGRpbmc7CisgIGxldHRlci1zcGFjaW5nOiAtMXB4OworICBtYXJnaW4tYm90dG9tOiAyMHB4OworICB3aWR0aDogMTA2JTsKKyAgYmFja2dyb3VuZC1jb2xvcjogJGdyYXktMTsKKyAgbGVmdDogLSRzbGlkZS1sZWZ0LXJpZ2h0LXBhZGRpbmc7CisgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgQGluY2x1ZGUgYm94LXNpemluZyhib3JkZXItYm94KTsKKyAgLypvdmVyZmxvdzogaGlkZGVuOyovCisKKyAgJltkYXRhLWxhbmddOmFmdGVyIHsKKyAgICBjb250ZW50OiBhdHRyKGRhdGEtbGFuZyk7CisgICAgYmFja2dyb3VuZC1jb2xvcjogJGdyYXktMjsKKyAgICByaWdodDogMDsKKyAgICB0b3A6IDA7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIGZvbnQtc2l6ZTogMTZwdDsKKyAgICBjb2xvcjogd2hpdGU7CisgICAgcGFkZGluZzogMnB4IDI1cHg7CisgICAgdGV4dC10cmFuc2Zvcm06IHVwcGVyY2FzZTsKKyAgfQorfQorCitwcmVbZGF0YS1sYW5nPSJnbyJdIHsKKyAgY29sb3I6ICMzMzM7Cit9CisKK2NvZGUgeworICBmb250LXNpemU6IDk1JTsKKyAgZm9udC1mYW1pbHk6ICdJbmNvbnNvbGF0YScsICdDb3VyaWVyIE5ldycsIG1vbm9zcGFjZTsKKyAgY29sb3I6IGJsYWNrOworfQorCitpZnJhbWUgeworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiAkc2xpZGUtaGVpZ2h0IC0gKCRzbGlkZS10b3AtYm90dG9tLXBhZGRpbmcgKiAyKSAtICgkYXJ0aWNsZS1jb250ZW50LXRvcC1wYWRkaW5nICogMik7CisgIGJhY2tncm91bmQ6IHdoaXRlOworICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0xOworICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpOworfQorCitkdCB7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorCitidXR0b24geworICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgIEBpbmNsdWRlIGJhY2tncm91bmQobGluZWFyLWdyYWRpZW50KCNGOUY5RjkgNDAlLCAjRTNFM0UzIDcwJSkpOworICBib3JkZXI6IDFweCBzb2xpZCAkZ3JheS0yOworICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKDNweCk7CisgIHBhZGRpbmc6IDVweCA4cHg7CisgIG91dGxpbmU6IG5vbmU7CisgIHdoaXRlLXNwYWNlOiBub3dyYXA7CisgIEBpbmNsdWRlIHVzZXItc2VsZWN0KG5vbmUpOworICBjdXJzb3I6IHBvaW50ZXI7CisgIEBpbmNsdWRlIHRleHQtc2hhZG93KDFweCAxcHggI2ZmZik7CisgIGZvbnQtc2l6ZTogMTBwdDsKK30KKworYnV0dG9uOm5vdCg6ZGlzYWJsZWQpOmhvdmVyIHsKKyAgYm9yZGVyLWNvbG9yOiAkZ3JheS00OworfQorCitidXR0b246bm90KDpkaXNhYmxlZCk6YWN0aXZlIHsKKyAgQGluY2x1ZGUgYmFja2dyb3VuZChsaW5lYXItZ3JhZGllbnQoI0UzRTNFMyA0MCUsICNGOUY5RjkgNzAlKSk7Cit9CisKKzpkaXNhYmxlZCB7CisgIGNvbG9yOiAkZ3JheS0yOworfQorCisuYmx1ZSB7CisgIGNvbG9yOiAkYnJhbmQtYmx1ZTsKK30KKy5ibHVlMiB7CisgIGNvbG9yOiAkYnJhbmQtYmx1ZS1zZWNvbmRhcnk7Cit9CisuYmx1ZTMgeworICBjb2xvcjogJGJyYW5kLWJsdWUtc2Vjb25kYXJ5MjsKK30KKy55ZWxsb3cgeworICBjb2xvcjogJGJyYW5kLXllbGxvdzsKK30KKy55ZWxsb3cyIHsKKyAgY29sb3I6ICRicmFuZC15ZWxsb3ctc2Vjb25kYXJ5OworfQorLnllbGxvdzMgeworICBjb2xvcjogJGJyYW5kLXllbGxvdy1zZWNvbmRhcnkyOworfQorLmdyZWVuIHsKKyAgY29sb3I6ICRicmFuZC1ncmVlbjsKK30KKy5ncmVlbjIgeworICBjb2xvcjogJGJyYW5kLWdyZWVuLXNlY29uZGFyeTsKK30KKy5ncmVlbjMgeworICBjb2xvcjogJGJyYW5kLWdyZWVuLXNlY29uZGFyeTI7Cit9CisucmVkIHsKKyAgY29sb3I6ICRicmFuZC1yZWQ7Cit9CisucmVkMiB7CisgIGNvbG9yOiAkYnJhbmQtcmVkLXNlY29uZGFyeTsKK30KKy5yZWQzIHsKKyAgY29sb3I6ICRicmFuZC1yZWQtc2Vjb25kYXJ5MjsKK30KKy5ncmF5IHsKKyAgY29sb3I6ICRncmF5LTE7Cit9CisuZ3JheTIgeworICBjb2xvcjogJGdyYXktMjsKK30KKy5ncmF5MyB7CisgIGNvbG9yOiAkZ3JheS0zOworfQorLmdyYXk0IHsKKyAgY29sb3I6ICRncmF5LTQ7Cit9CisKKy53aGl0ZSB7CisgIGNvbG9yOiB3aGl0ZSAhaW1wb3J0YW50OworfQorLmJsYWNrIHsKKyAgY29sb3I6IGJsYWNrICFpbXBvcnRhbnQ7Cit9CisKKy5jb2x1bW5zLTIgeworICBAaW5jbHVkZSBjb2x1bW4tY291bnQoMik7Cit9CisKK3RhYmxlIHsKKyAgd2lkdGg6IDEwMCU7CisgIGJvcmRlci1jb2xsYXBzZTogLW1vei1pbml0aWFsOworICBib3JkZXItY29sbGFwc2U6IGluaXRpYWw7CisgIGJvcmRlci1zcGFjaW5nOiAycHg7CisgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAkZ3JheS0zOworCisgIHRyID4gdGQ6Zmlyc3QtY2hpbGQsIHRoIHsKKyAgICBmb250LXdlaWdodDogNjAwOworICAgIGNvbG9yOiAkZ3JheS00OworICB9CisKKyAgdHI6bnRoLWNoaWxkKG9kZCkgeworICAgIGJhY2tncm91bmQtY29sb3I6ICRncmF5LTE7CisgIH0KKworICB0aCB7CisgICAgY29sb3I6IHdoaXRlOworICAgIGZvbnQtc2l6ZTogMThweDsKKyAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kKGxpbmVhci1ncmFkaWVudCh0b3AsICRicmFuZC1ibHVlIDQwJSwgJGJyYW5kLWJsdWUtc2Vjb25kYXJ5MiA4MCUpIG5vLXJlcGVhdCk7CisgIH0KKworICB0ZCwgdGggeworICAgIGZvbnQtc2l6ZTogMThweDsKKyAgICBwYWRkaW5nOiAxZW0gMC41ZW07CisgIH0KKworICB0ZC5oaWdobGlnaHQgeworICAgIGNvbG9yOiAkZ3JheS00OworICAgIEBpbmNsdWRlIGJhY2tncm91bmQobGluZWFyLWdyYWRpZW50KHRvcCwgJGJyYW5kLXllbGxvdyA0MCUsICRicmFuZC15ZWxsb3ctc2Vjb25kYXJ5MiA4MCUpIG5vLXJlcGVhdCk7CisgIH0KKworICAmLnJvd3MgeworICAgIGJvcmRlci1ib3R0b206IG5vbmU7CisgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgJGdyYXktMzsKKyAgfQorfQorCitxIHsKKyAgZm9udC1zaXplOiA0NXB4OworICBsaW5lLWhlaWdodDogNzJweDsKKworICAmOmJlZm9yZSB7CisgICAgY29udGVudDogJ+KAnCc7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIG1hcmdpbi1sZWZ0OiAtMC41ZW07CisgIH0KKyAgJjphZnRlciB7CisgICAgY29udGVudDogJ+KAnSc7CisgICAgcG9zaXRpb246IGFic29sdXRlOworICAgIG1hcmdpbi1sZWZ0OiAwLjFlbTsKKyAgfQorfQorCitzbGlkZS5maWxsIHsKKyAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsKKyAgQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygkc2xpZGUtYm9yZGVyLXJhZGl1cyk7CisgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZShjb3Zlcik7Cit9CisKKy8qIFNpemUgdmFyaWFudHMgKi8KKworYXJ0aWNsZS5zbWFsbGVyIHsKKyAgcCwgdWwgeworICAgIGZvbnQtc2l6ZTogMjBweDsKKyAgICBsaW5lLWhlaWdodDogMjRweDsKKyAgICBsZXR0ZXItc3BhY2luZzogMDsKKyAgfQorICB0YWJsZSB7CisgICAgdGQsIHRoIHsKKyAgICAgIGZvbnQtc2l6ZTogMTRweDsKKyAgICB9CisgIH0KKyAgcHJlIHsKKyAgICBmb250LXNpemU6IDE1cHg7CisgICAgbGluZS1oZWlnaHQ6IDIwcHg7CisgICAgbGV0dGVyLXNwYWNpbmc6IDA7CisgIH0KKyAgcSB7CisgICAgZm9udC1zaXplOiA0MHB4OworICAgIGxpbmUtaGVpZ2h0OiA0OHB4OworCisgICAgJjpiZWZvcmUsICY6YWZ0ZXIgeworICAgICAgZm9udC1zaXplOiA2MHB4OworICAgIH0KKyAgfQorfQorCisvKiBCdWlsZHMgKi8KKworLmJ1aWxkIHsKKyAgPiAqIHsKKyAgICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMC41cyBlYXNlLWluLW91dCAwLjJzKTsKKyAgfQorCisgIC50by1idWlsZCB7CisgICAgb3BhY2l0eTogMDsKKyAgfQorCisgIC5idWlsZC1mYWRlIHsKKyAgICBvcGFjaXR5OiAwLjM7CisKKyAgICAmOmhvdmVyIHsKKyAgICAgIG9wYWNpdHk6IDEuMDsKKyAgICB9CisgIH0KK30KKworLnBvcHVwIC5uZXh0IC5idWlsZCB7CisgIC50by1idWlsZCB7CisgICAgb3BhY2l0eTogMTsKKyAgfQorCisgIC5idWlsZC1mYWRlIHsKKyAgICBvcGFjaXR5OiAxOworICB9Cit9CisKKy8qIFByZXR0eSBwcmludCAqLworCisucHJldHR5cHJpbnQgLnN0ciwgLyogc3RyaW5nIGNvbnRlbnQgKi8KKy5wcmV0dHlwcmludCAuYXR2IHsgLyogYSBtYXJrdXAgYXR0cmlidXRlIHZhbHVlICovCisgIGNvbG9yOiAkYnJhbmQtZ3JlZW4tc2Vjb25kYXJ5MjsgLy9yZ2IoMCwgMTM4LCA1Myk7Cit9CisucHJldHR5cHJpbnQgLmt3ZCwgLyogYSBrZXl3b3JkICovCisucHJldHR5cHJpbnQgLnRhZyB7IC8qIGEgbWFya3VwIHRhZyBuYW1lICovCisgIGNvbG9yOiByZ2IoMCwgMTAyLCAyMDQpOworfQorLnByZXR0eXByaW50IC5jb20geyAvKiBhIGNvbW1lbnQgKi8KKyAgY29sb3I6ICRncmF5LTM7IC8vcmdiKDEyNywgMTI3LCAxMjcpOworICBmb250LXN0eWxlOiBpdGFsaWM7Cit9CisucHJldHR5cHJpbnQgLmxpdCB7IC8qIGEgbGl0ZXJhbCB2YWx1ZSAqLworICBjb2xvcjogcmdiKDEyNywgMCwgMCk7Cit9CisucHJldHR5cHJpbnQgLnB1biwgLyogcHVuY3R1YXRpb24sIGxpc3Agb3BlbiBicmFja2V0LCBsaXNwIGNsb3NlIGJyYWNrZXQgKi8KKy5wcmV0dHlwcmludCAub3BuLAorLnByZXR0eXByaW50IC5jbG8geworICBjb2xvcjogJGdyYXktNDsgLy9yZ2IoMTI3LCAxMjcsIDEyNyk7Cit9CisucHJldHR5cHJpbnQgLnR5cCwgLyogYSB0eXBlIG5hbWUgKi8KKy5wcmV0dHlwcmludCAuYXRuLCAvKiBhIG1hcmt1cCBhdHRyaWJ1dGUgbmFtZSAqLworLnByZXR0eXByaW50IC5kZWMsCisucHJldHR5cHJpbnQgLnZhciB7IC8qIGEgZGVjbGFyYXRpb247IGEgdmFyaWFibGUgbmFtZSAqLworICBjb2xvcjogJGJyYW5kLXJlZC1zZWNvbmRhcnkyOyAvL3JnYigxMjcsIDAsIDEyNyk7Cit9CisucHJldHR5cHJpbnQgLnBsbiB7CisgIGNvbG9yOiAkZ3JheS00OworfQorCisubm90ZSB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgei1pbmRleDogMTAwOworICB3aWR0aDogMTAwJTsKKyAgaGVpZ2h0OiAxMDAlOworICB0b3A6IDA7CisgIGxlZnQ6IDA7CisgIHBhZGRpbmc6IDFlbTsKKyAgYmFja2dyb3VuZDogcmdiYSgwLCAwLCAwLCAwLjMpOworICBvcGFjaXR5OiAwOworICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAgQGluY2x1ZGUgZmxleGJveDsKKyAgQGluY2x1ZGUgZmxleC1jZW50ZXItY2VudGVyOworICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRzbGlkZS1ib3JkZXItcmFkaXVzKTsKKworICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpOworICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlWSgkc2xpZGUtaGVpZ2h0IC8gMikpO0BpbmNsdWRlIHRyYW5zaXRpb24oYWxsIDAuNHMgZWFzZS1pbi1vdXQpOworCisgID4gc2VjdGlvbiB7CisgICAgYmFja2dyb3VuZDogI2ZmZjsKKyAgICBAaW5jbHVkZSBib3JkZXItcmFkaXVzKCRzbGlkZS1ib3JkZXItcmFkaXVzKTsKKyAgICBAaW5jbHVkZSBib3gtc2hhZG93KDAgMCAxMHB4ICRncmF5LTMpOworICAgIHdpZHRoOiA2MCU7CisgICAgcGFkZGluZzogMmVtOworICB9Cit9CisKKy8vIFNwZWFrZXIgbm90ZXMgb25seSBzaG93IHRoZSBjdXJyZW50IHNsaWRlLgorLndpdGgtbm90ZXMgeworCisgICYucG9wdXAgeworCisgICAgc2xpZGVzLmxheW91dC13aWRlc2NyZWVuLAorICAgIHNsaWRlcy5sYXlvdXQtZmF1eC13aWRlc2NyZWVuIHsKKyAgICAgIHNsaWRlIHsKKyAgICAgICAgJi5uZXh0IHsKKyAgICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlM2QoJHNsaWRlLXdpZHRoLXdpZGVzY3JlZW4gLyAyICsgMTQwLCA4MHB4LCAwKSBzY2FsZSgwLjM1KSk7CisgICAgICAgIH0KKyAgICAgICAgLm5vdGUgeworICAgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGUzZCgzMDBweCwgJHNsaWRlLWhlaWdodCArIDEwMCwgMCkgc2NhbGUoMS41KSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisKKyAgICBzbGlkZSB7CisgICAgICBvdmVyZmxvdzogdmlzaWJsZTsKKyAgICAgIGJhY2tncm91bmQ6IHdoaXRlOworICAgICAgQGluY2x1ZGUgdHJhbnNpdGlvbihub25lKTsgLy8gTm8gc2xpZGUgdHJhbnNpdGlvbiBnb29kaWVzIHdoZW4gaW4gcHJlc2VudGVyIG1vZGUuCisgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTsKKyAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybS1vcmlnaW4oMCwgMCk7IC8vIEZvciBzcGVha2VyIG5vdGUgdHJhbnNpdGlvbi4KKworICAgICAgJjpub3QoLmJhY2tkcm9wKSB7CisgICAgICAgIEBpbmNsdWRlIHRyYW5zZm9ybShzY2FsZSgwLjYpIHRyYW5zbGF0ZTNkKDAuNWVtLCAwLjVlbSwgMCkpOworICAgICAgICBAaW5jbHVkZSBib3gtc2hhZG93KDAgMCAxMHB4ICRncmF5LTMpOworICAgICAgfQorCisgICAgICAmLmJhY2tkcm9wIHsKKyAgICAgICAgLy9AaW5jbHVkZSBiYWNrZ3JvdW5kKGxpbmVhci1ncmFkaWVudCgkZ3JheS0xLCB3aGl0ZSAzMCUsIHdoaXRlIDYwJSwgJGdyYXktMSkpOworICAgICAgICBAaW5jbHVkZSBiYWNrZ3JvdW5kLWltYWdlKHJhZGlhbC1ncmFkaWVudCg1MCUgNTAlLCAjYjFkZmZmIDAlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkYnJhbmQtYmx1ZSA2MDBweCkpOworICAgICAgfQorCisgICAgICAmLm5leHQgeworICAgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0odHJhbnNsYXRlM2QoJHNsaWRlLXdpZHRoIC8gMiArIDEyMCwgODBweCwgMCkgc2NhbGUoMC4zNSkpOworICAgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7CisKKyAgICAgICAgLm5vdGUgeworICAgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsgLy8gUHJldmVudHMgc2VlaW5nIG5vdGVzIGlmIHdlIGdvIHRvIHByZXZpb3VzIHNsaWRlLgorICAgICAgICB9CisgICAgICB9CisgICAgfQorCisgICAgLm5vdGUgeworICAgICAgd2lkdGg6IDEwOSU7CisgICAgICBoZWlnaHQ6ICRzbGlkZS1oZWlnaHQgLyAyIC0gOTA7CisgICAgICBiYWNrZ3JvdW5kOiAkZ3JheS0xOworICAgICAgcGFkZGluZzogMDsKKworICAgICAgQGluY2x1ZGUgYm94LXNoYWRvdygwIDAgMTBweCAkZ3JheS0zKTsKKworICAgICAgQGluY2x1ZGUgdHJhbnNmb3JtKHRyYW5zbGF0ZTNkKDI1MHB4LCAkc2xpZGUtaGVpZ2h0ICsgMTAwLCAwKSBzY2FsZSgxLjUpKTsKKyAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24ob3BhY2l0eSA0MDBtcyBlYXNlLWluLW91dCk7CisKKyAgICAgID4gc2VjdGlvbiB7CisgICAgICAgIGJhY2tncm91bmQ6ICNmZmY7CisgICAgICAgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoJHNsaWRlLWJvcmRlci1yYWRpdXMpOworICAgICAgICBoZWlnaHQ6IDEwMCU7CisgICAgICAgIHdpZHRoOiAxMDAlOworICAgICAgICBAaW5jbHVkZSBib3gtc2l6aW5nKGJvcmRlci1ib3gpOworICAgICAgICBAaW5jbHVkZSBib3gtc2hhZG93KG5vbmUpOworICAgICAgICBvdmVyZmxvdzogYXV0bzsKKyAgICAgICAgcGFkZGluZzogMWVtOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC5ub3RlIHsKKyAgICBvcGFjaXR5OiAxOworICAgIEBpbmNsdWRlIHRyYW5zZm9ybSh0cmFuc2xhdGVZKDApKTsKKyAgICBwb2ludGVyLWV2ZW50czogYXV0bzsgLy8gQWxsb3cgcGVvcGxlIHRvIGRvIHRoaW5ncyBsaWtlIG9wZW4gbGlua3MgZW1iZWRkZWQgaW4gdGhlIHNwZWFrZXIgbm90ZXMuCisgIH0KK30KKworLnNvdXJjZSB7CisgIGZvbnQtc2l6ZTogMTRweDsKKyAgY29sb3I6ICRncmF5LTI7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgYm90dG9tOiAkc2xpZGUtdG9wLWJvdHRvbS1wYWRkaW5nICsgMzBweDsKKyAgbGVmdDogJHNsaWRlLWxlZnQtcmlnaHQtcGFkZGluZzsKK30KKworLmNlbnRlcmVkIHsKKyAgdGV4dC1hbGlnbjogY2VudGVyOworfQorCisucmVmbGVjdCB7CisgIC13ZWJraXQtYm94LXJlZmxlY3Q6IGJlbG93IDNweCAtd2Via2l0LWxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwyNTUsMjU1LDApIDg1JSwgd2hpdGUgMTUwJSk7CisgIC1tb3otYm94LXJlZmxlY3Q6IGJlbG93IDNweCAtbW96LWxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwyNTUsMjU1LDApIDg1JSwgd2hpdGUgMTUwJSk7CisgIC1vLWJveC1yZWZsZWN0OiBiZWxvdyAzcHggLW8tbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsMCkgODUlLCB3aGl0ZSAxNTAlKTsKKyAgLW1zLWJveC1yZWZsZWN0OiBiZWxvdyAzcHggLW1zLWxpbmVhci1ncmFkaWVudChyZ2JhKDI1NSwyNTUsMjU1LDApIDg1JSwgd2hpdGUgMTUwJSk7CisgIGJveC1yZWZsZWN0OiBiZWxvdyAzcHggbGluZWFyLWdyYWRpZW50KHJnYmEoMjU1LDI1NSwyNTUsMCkgODUlLCB3aGl0ZSAxNTAlKTsKK30KKworLmZsZXhib3ggeworICBAaW5jbHVkZSBmbGV4Ym94OworfQorCisuZmxleGJveC52Y2VudGVyIHsKKyAgQGluY2x1ZGUgZmxleC1jZW50ZXItY2VudGVyOworICBoZWlnaHQ6IDEwMCU7CisgIHdpZHRoOiAxMDAlOworfQorCisuZmxleGJveC52bGVmdCB7CisgIEBpbmNsdWRlIGZsZXgtbGVmdC1jZW50ZXI7CisgIGhlaWdodDogMTAwJTsKKyAgd2lkdGg6IDEwMCU7Cit9CisKKy5mbGV4Ym94LnZyaWdodCB7CisgIEBpbmNsdWRlIGZsZXgtcmlnaHQtY2VudGVyOworICBoZWlnaHQ6IDEwMCU7CisgIHdpZHRoOiAxMDAlOworfQorCisuYXV0by1mYWRlaW4geworICBAaW5jbHVkZSB0cmFuc2l0aW9uKG9wYWNpdHkgMC42cyBlYXNlLWluIDFzKTsKKyAgb3BhY2l0eTogMDsKK30KKworLyogQ2xpY2thYmxlL3RhcHBhYmxlIGFyZWFzICovCisuc2xpZGUtYXJlYSB7CisgIHotaW5kZXg6IDEwMDA7CisKKyAgcG9zaXRpb246IGFic29sdXRlOworICBsZWZ0OiAwOworICB0b3A6IDA7CisgIHdpZHRoOiAkc2xpZGUtdGFwLWFyZWEtd2lkdGg7CisgIGhlaWdodDogJHNsaWRlLWhlaWdodDsKKworICBsZWZ0OiA1MCU7CisgIHRvcDogNTAlOworCisgIGN1cnNvcjogcG9pbnRlcjsKKyAgbWFyZ2luLXRvcDogLSRzbGlkZS1oZWlnaHQgLyAyOworCisgIC8vQGluY2x1ZGUgaGlnaGxpZ2h0LWNvbG9yKHJnYmEoNTEsIDUxLCA1MSwgMC41KSk7Cit9CisjcHJldi1zbGlkZS1hcmVhIHsKKyAgbWFyZ2luLWxlZnQ6IC0kc2xpZGUtd2lkdGgtd2lkZXNjcmVlbiAvIDI7CisgIC8vQGluY2x1ZGUgYm9yZGVyLXJhZGl1cygxMHB4IDAgMCAxMHB4KTsKKyAgLy9AaW5jbHVkZSBib3gtc2hhZG93KC01cHggMCAxMHB4ICMyMjIgaW5zZXQpOworfQorI25leHQtc2xpZGUtYXJlYSB7CisgIG1hcmdpbi1sZWZ0OiAkc2xpZGUtd2lkdGggLyAyOworICAvL0BpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCAxMHB4IDEwcHggMCk7CisgIC8vQGluY2x1ZGUgYm94LXNoYWRvdyg1cHggMCAxMHB4ICMyMjIgaW5zZXQpOworfQorCisvKiA9PT09PSBTTElERSBDT05URU5UID09PT09ICovCisubG9nb3NsaWRlIHsKKyAgaW1nIHsKKyAgICB3aWR0aDogMzgzcHg7CisgICAgaGVpZ2h0OiA5MnB4OworICB9Cit9CisKKy5zZWd1ZSB7CisgIHBhZGRpbmc6ICRzbGlkZS1sZWZ0LXJpZ2h0LXBhZGRpbmcgJHNsaWRlLWxlZnQtcmlnaHQtcGFkZGluZyAqIDI7CisKKyAgaDIgeworICAgIGNvbG9yOiAkZ3JheS0xOworICAgIGZvbnQtc2l6ZTogNjBweDsKKyAgfQorICBoMyB7CisgICAgY29sb3I6ICRncmF5LTE7CisgICAgbGluZS1oZWlnaHQ6IDIuODsKKyAgfQorICBoZ3JvdXAgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IDIyNXB4OworICB9Cit9CisKKy50aGFuay15b3Utc2xpZGUgeworICBiYWNrZ3JvdW5kOiAkYnJhbmQtYmx1ZSAhaW1wb3J0YW50OworICBjb2xvcjogd2hpdGU7CisKKyAgaDIgeworICAgIGZvbnQtc2l6ZTogNjBweDsKKyAgICBjb2xvcjogaW5oZXJpdDsKKyAgfQorCisgIGFydGljbGUgPiBwIHsKKyAgICBtYXJnaW4tdG9wOiAyZW07CisgICAgZm9udC1zaXplOiAyMHB0OworICB9CisKKyAgPiBwIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgYm90dG9tOiAkc2xpZGUtdG9wLWJvdHRvbS1wYWRkaW5nICogMjsKKyAgICBmb250LXNpemU6IDI0cHQ7CisgICAgbGluZS1oZWlnaHQ6IDEuMzsKKyAgfQorfQorCithc2lkZS5nZGJhciB7CisgIGhlaWdodDogOTdweDsKKyAgd2lkdGg6IDIxNXB4OworICBwb3NpdGlvbjogYWJzb2x1dGU7CisgIGxlZnQ6IC0xcHg7CisgIHRvcDogMTI1cHg7CisgIEBpbmNsdWRlIGJvcmRlci1yYWRpdXMoMCAxMHB4IDEwcHggMCk7CisgIEBpbmNsdWRlIGJhY2tncm91bmQobGluZWFyLWdyYWRpZW50KGxlZnQsICRncmF5LTEsICRncmF5LTEpIG5vLXJlcGVhdCk7CisgIEBpbmNsdWRlIGJhY2tncm91bmQtc2l6ZSgwJSAxMDAlKTsKKyAgQGluY2x1ZGUgdHJhbnNpdGlvbihhbGwgMC41cyBlYXNlLW91dCAwLjVzKTsgLyogQmV0dGVyIHRvIHRyYW5zaXRpb24gb25seSBvbiBiYWNrZ3JvdW5kLXNpemUsIGJ1dCBub3Qgc3VyZSBob3cgdG8gZG8gdGhhdCB3aXRoIHRoZSBtaXhpbi4gKi8KKworICAmLnJpZ2h0IHsKKyAgICByaWdodDogMDsKKyAgICBsZWZ0OiAtbW96LWluaXRpYWw7CisgICAgbGVmdDogaW5pdGlhbDsKKyAgICB0b3A6ICgkc2xpZGUtaGVpZ2h0IC8gMikgLSA5NjsgLyogOTYgaXMgaGVpZ2h0IG9mIGdyYXkgaWNvbiBiYXIgKi8KKyAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlWigxODBkZWcpKTsKKworICAgIGltZyB7CisgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0ocm90YXRlWigxODBkZWcpKTsKKyAgICB9CisgIH0KKworICAmLmJvdHRvbSB7CisgICAgdG9wOiAtbW96LWluaXRpYWw7CisgICAgdG9wOiBpbml0aWFsOworICAgIGJvdHRvbTogJHNsaWRlLWxlZnQtcmlnaHQtcGFkZGluZzsKKyAgfQorCisgIGltZyB7CisgICAgd2lkdGg6IDg1cHg7CisgICAgaGVpZ2h0OiA4NXB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICByaWdodDogMDsKKyAgICBtYXJnaW46IDhweCAxNXB4OworICB9Cit9CisKKy50aXRsZS1zbGlkZSB7CisKKyAgaGdyb3VwIHsKKyAgICBib3R0b206IDEwMHB4OworCisgICAgaDEgeworICAgICAgZm9udC1zaXplOiA2NXB4OworICAgICAgbGluZS1oZWlnaHQ6IDEuNDsKKyAgICAgIGxldHRlci1zcGFjaW5nOiAtM3B4OworICAgICAgY29sb3I6ICRncmF5LTQ7CisgICAgfQorCisgICAgaDIgeworICAgICAgZm9udC1zaXplOiAzNHB4OworICAgICAgY29sb3I6ICRncmF5LTI7CisgICAgICBmb250LXdlaWdodDogaW5oZXJpdDsKKyAgICB9CisKKyAgICBwIHsKKyAgICAgIGZvbnQtc2l6ZTogMjBweDsKKyAgICAgIGNvbG9yOiAkZ3JheS0zOworICAgICAgbGluZS1oZWlnaHQ6IDEuMzsKKyAgICAgIG1hcmdpbi10b3A6IDJlbTsKKyAgICB9CisgIH0KK30KKworLnF1b3RlIHsKKyAgY29sb3I6ICRncmF5LTE7CisKKyAgLmF1dGhvciB7CisgICAgZm9udC1zaXplOiAyNHB4OworICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICBib3R0b206IDgwcHg7CisgICAgbGluZS1oZWlnaHQ6IDEuNDsKKyAgfQorfQorCitbZGF0YS1jb25maWctY29udGFjdF0geworICBhIHsKKyAgICBjb2xvcjogcmdiKDI1NSwgMjU1LCAyNTUpOworICAgIGJvcmRlci1ib3R0b206IG5vbmU7CisgIH0KKyAgc3BhbiB7CisgICAgd2lkdGg6IDExNXB4OworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgfQorfQorCisub3ZlcnZpZXcgeworCisgICYucG9wdXAgeworICAgIC5ub3RlIHsKKyAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKKyAgICB9CisgIH0KKyAgCisgIHNsaWRlcyB7CisgICAgc2xpZGUgeworICAgICAgJi5iYWNrZHJvcCB7CisgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKKyAgICAgIH0KKworICAgICAgZGlzcGxheTogYmxvY2s7CisgICAgICBjdXJzb3I6IHBvaW50ZXI7CisgICAgICBvcGFjaXR5OiAwLjU7CisgICAgICBwb2ludGVyLWV2ZW50czogYXV0byAhaW1wb3J0YW50OworCisgICAgICBAaW5jbHVkZSBiYWNrZHJvcCgpOworCisgICAgICAmLmZhci1wYXN0LAorICAgICAgJi5wYXN0LAorICAgICAgJi5uZXh0LAorICAgICAgJi5mYXItbmV4dCwKKyAgICAgICYuZmFyLXBhc3QgeworICAgICAgICBvcGFjaXR5OiAwLjU7CisgICAgICAgIGRpc3BsYXk6IGJsb2NrOworICAgICAgfQorCisgICAgICAmLmN1cnJlbnQgeworICAgICAgICBvcGFjaXR5OiAxOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC5zbGlkZS1hcmVhIHsKKyAgICBkaXNwbGF5OiBub25lOworICB9Cit9CisKK0BtZWRpYSBwcmludCB7CisgIHNsaWRlcyB7CisgICAgc2xpZGUgeworICAgICAgZGlzcGxheTogYmxvY2sgIWltcG9ydGFudDsKKyAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICAgIEBpbmNsdWRlIGJhY2tkcm9wKCk7CisgICAgICBAaW5jbHVkZSB0cmFuc2Zvcm0obm9uZSAhaW1wb3J0YW50KTsKKyAgICAgIHdpZHRoOiAxMDAlOworICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgcGFnZS1icmVhay1hZnRlcjphbHdheXM7CisgICAgICB0b3A6IGF1dG8gIWltcG9ydGFudDsKKyAgICAgIGxlZnQ6IGF1dG8gIWltcG9ydGFudDsKKyAgICAgIG1hcmdpbi10b3A6IDAgIWltcG9ydGFudDsKKyAgICAgIG1hcmdpbi1sZWZ0OiAwICFpbXBvcnRhbnQ7CisgICAgICBvcGFjaXR5OiAxICFpbXBvcnRhbnQ7CisgICAgICBjb2xvcjogIzU1NTsKKworICAgICAgJi5mYXItcGFzdCwKKyAgICAgICYucGFzdCwKKyAgICAgICYubmV4dCwKKyAgICAgICYuZmFyLW5leHQsCisgICAgICAmLmZhci1wYXN0LAorICAgICAgJi5jdXJyZW50IHsKKyAgICAgICAgb3BhY2l0eTogMSAhaW1wb3J0YW50OworICAgICAgICBkaXNwbGF5OiBibG9jayAhaW1wb3J0YW50OworICAgICAgfQorCisgICAgICAuYnVpbGQgeworICAgICAgICA+ICogeworICAgICAgICAgIEBpbmNsdWRlIHRyYW5zaXRpb24obm9uZSk7CisgICAgICAgIH0KKworICAgICAgICAudG8tYnVpbGQsCisgICAgICAgIC5idWlsZC1mYWRlIHsKKyAgICAgICAgICBvcGFjaXR5OiAxOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIC5hdXRvLWZhZGVpbiB7CisgICAgICAgIG9wYWNpdHk6IDEgIWltcG9ydGFudDsKKyAgICAgIH0KKworICAgICAgJi5iYWNrZHJvcCB7CisgICAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKKyAgICAgIH0KKworICAgICAgdGFibGUucm93cyB7CisgICAgICAgIGJvcmRlci1yaWdodDogMDsKKyAgICAgIH0KKyAgICB9CisKKyAgICBzbGlkZVtoaWRkZW5dIHsKKyAgICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDsKKyAgICB9CisgIH0KKworICAuc2xpZGUtYXJlYSB7CisgICAgZGlzcGxheTogbm9uZTsKKyAgfQorCisgIC5yZWZsZWN0IHsKKyAgICAtd2Via2l0LWJveC1yZWZsZWN0OiBub25lOworICAgIC1tb3otYm94LXJlZmxlY3Q6IG5vbmU7CisgICAgLW8tYm94LXJlZmxlY3Q6IG5vbmU7CisgICAgLW1zLWJveC1yZWZsZWN0OiBub25lOworICAgIGJveC1yZWZsZWN0OiBub25lOworICB9CisKKyAgcHJlLCBjb2RlIHsKKyAgICBmb250LWZhbWlseTogbW9ub3NwYWNlICFpbXBvcnRhbnQ7CisgIH0KK30KZGlmZiAtLWdpdCBhL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvdGhlbWUvc2Nzcy9waG9uZS5zY3NzIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS9zY3NzL3Bob25lLnNjc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZhNDA0MwotLS0gL2Rldi9udWxsCisrKyBiL3BhZ2VzL3RyYW5zY3JpcHRzLzIwMTNfRWNsaXBzZUNvbkJvc3Rvbl9ERFQvdGhlbWUvc2Nzcy9waG9uZS5zY3NzCkBAIC0wLDAgKzEsMzUgQEAKK0BpbXBvcnQgImNvbXBhc3MvY3NzMy90cmFuc2l0aW9uIjsKKworCisvKlNtYXJ0cGhvbmVzIChwb3J0cmFpdCBhbmQgbGFuZHNjYXBlKSAtLS0tLS0tLS0tLSAqLworLypAbWVkaWEgb25seSBzY3JlZW4KK2FuZCAobWluLXdpZHRoIDogMzIwcHgpCithbmQgKG1heC13aWR0aCA6IDQ4MHB4KSB7CisKK30qLworCisvKiBTbWFydHBob25lcyAocG9ydHJhaXQpIC0tLS0tLS0tLS0tICovCisvL0BtZWRpYSBvbmx5IHNjcmVlbiBhbmQgKG1heC1kZXZpY2Utd2lkdGg6IDQ4MHB4KSB7CisvKiBTdHlsZXMgKi8KKy8vJHNsaWRlLXdpZHRoOiAzNTBweDsKKy8vJHNsaWRlLWhlaWdodDogNTAwcHg7CisKK3NsaWRlcyA+IHNsaWRlIHsKKy8qICB3aWR0aDogJHNsaWRlLXdpZHRoICFpbXBvcnRhbnQ7CisgIGhlaWdodDogJHNsaWRlLWhlaWdodCAhaW1wb3J0YW50OworICBtYXJnaW4tbGVmdDogLSRzbGlkZS13aWR0aCAvIDIgIWltcG9ydGFudDsKKyAgbWFyZ2luLXRvcDogLSRzbGlkZS1oZWlnaHQgLyAyICFpbXBvcnRhbnQ7CisqLworICAvLyBEb24ndCBkbyBmdWxsIHNsaWRlIHRyYW5zaXRpb25zIG9uIG1vYmlsZS4KKyAgLXdlYmtpdC10cmFuc2l0aW9uOiBub25lICFpbXBvcnRhbnQ7IC8vIEJ1ZyBpbiBjb21wYXNzPyBOb3Qgc3VyZSB3aHkgdGhlIGJlbG93IGlzIG5vdCB3b3JraW5nCisgIEBpbmNsdWRlIHRyYW5zaXRpb24obm9uZSAhaW1wb3J0YW50KTsKK30KKworLy99CisKKy8qIGlQaG9uZSA0IC0tLS0tLS0tLS0tICovCitAbWVkaWEKK29ubHkgc2NyZWVuIGFuZCAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvIDogMS41KSwKK29ubHkgc2NyZWVuIGFuZCAobWluLWRldmljZS1waXhlbC1yYXRpbyA6IDEuNSkgeworLyogU3R5bGVzICovCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS90ZW1wbGF0ZS5odG1sIGIvcGFnZXMvdHJhbnNjcmlwdHMvMjAxM19FY2xpcHNlQ29uQm9zdG9uX0REVC90aGVtZS90ZW1wbGF0ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NjAzOTcKLS0tIC9kZXYvbnVsbAorKysgYi9wYWdlcy90cmFuc2NyaXB0cy8yMDEzX0VjbGlwc2VDb25Cb3N0b25fRERUL3RoZW1lL3RlbXBsYXRlLmh0bWwKQEAgLTAsMCArMSw0MTYgQEAKKzwhLS0KK0dvb2dsZSBJTyAyMDEyIEhUTUw1IFNsaWRlIFRlbXBsYXRlCisKK0F1dGhvcnM6IEVyaWMgQmlkZWxtYW4gPGViaWRlbEBnbWFpbC5jb20+CisgICAgICAgICBMdWtlIE1haMOpIDxsdWtlbUBnb29nbGUuY29tPgorCitVUkw6IGh0dHBzOi8vY29kZS5nb29nbGUuY29tL3AvaW8tMjAxMi1zbGlkZXMKKy0tPgorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8dGl0bGU+R29vZ2xlIElPIDIwMTI8L3RpdGxlPgorICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgIDxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iY2hyb21lPTEiPgorICA8IS0tPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xLjAsIG1pbmltdW0tc2NhbGU9MS4wIj4tLT4KKyAgPCEtLTxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MS4wIj4tLT4KKyAgPCEtLVRoaXMgb25lIHNlZW1zIHRvIHdvcmsgYWxsIHRoZSB0aW1lLCBidXQgcmVhbGx5IHNtYWxsIG9uIGlwYWQtLT4KKyAgPCEtLTxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJpbml0aWFsLXNjYWxlPTAuNCI+LS0+CisgIDxtZXRhIG5hbWU9ImFwcGxlLW1vYmlsZS13ZWItYXBwLWNhcGFibGUiIGNvbnRlbnQ9InllcyI+CisgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgbWVkaWE9ImFsbCIgaHJlZj0idGhlbWUvY3NzL2RlZmF1bHQuY3NzIj4KKyAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBtZWRpYT0ib25seSBzY3JlZW4gYW5kIChtYXgtZGV2aWNlLXdpZHRoOiA0ODBweCkiIGhyZWY9InRoZW1lL2Nzcy9waG9uZS5jc3MiPgorICA8YmFzZSB0YXJnZXQ9Il9ibGFuayI+IDwhLS0gVGhpcyBhbWF6aW5nbmVzcyBvcGVucyBhbGwgbGlua3MgaW4gYSBuZXcgdGFiLiAtLT4KKyAgPHNjcmlwdCBkYXRhLW1haW49ImpzL3NsaWRlcyIgc3JjPSJqcy9yZXF1aXJlLTEuMC44Lm1pbi5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBzdHlsZT0ib3BhY2l0eTogMCI+CisKKzxzbGlkZXMgY2xhc3M9ImxheW91dC13aWRlc2NyZWVuIj4KKworICA8c2xpZGUgY2xhc3M9ImxvZ29zbGlkZSBub2JhY2tncm91bmQiPgorICAgIDxhcnRpY2xlIGNsYXNzPSJmbGV4Ym94IHZjZW50ZXIiPgorICAgICAgPHNwYW4+PGltZyBzcmM9ImltYWdlcy9nb29nbGVfZGV2ZWxvcGVyc19sb2dvLnBuZyI+PC9zcGFuPgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGUgY2xhc3M9InRpdGxlLXNsaWRlIHNlZ3VlIG5vYmFja2dyb3VuZCI+CisgICAgPGFzaWRlIGNsYXNzPSJnZGJhciI+PGltZyBzcmM9ImltYWdlcy9nb29nbGVfZGV2ZWxvcGVyc19pY29uXzEyOC5wbmciPjwvYXNpZGU+CisgICAgPCEtLSBUaGUgY29udGVudCBvZiB0aGlzIGhncm91cCBpcyByZXBsYWNlZCBwcm9ncmFtbWF0aWNhbGx5IHRocm91Z2ggdGhlIHNsaWRlX2NvbmZpZy5qc29uLiAtLT4KKyAgICA8aGdyb3VwIGNsYXNzPSJhdXRvLWZhZGVpbiI+CisgICAgICA8aDEgZGF0YS1jb25maWctdGl0bGU+PCEtLSBwb3B1bGF0ZWQgZnJvbSBzbGlkZV9jb25maWcuanNvbiAtLT48L2gxPgorICAgICAgPGgyIGRhdGEtY29uZmlnLXN1YnRpdGxlPjwhLS0gcG9wdWxhdGVkIGZyb20gc2xpZGVfY29uZmlnLmpzb24gLS0+PC9oMj4KKyAgICAgIDxwIGRhdGEtY29uZmlnLXByZXNlbnRlcj48IS0tIHBvcHVsYXRlZCBmcm9tIHNsaWRlX2NvbmZpZy5qc29uIC0tPjwvcD4KKyAgICA8L2hncm91cD4KKyAgPC9zbGlkZT4KKworICA8c2xpZGU+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj5TbGlkZSB3aXRoIEJ1bGxldHM8L2gyPgorICAgIDwvaGdyb3VwPgorICAgIDxhcnRpY2xlPgorICAgICAgPHVsPgorICAgICAgICA8bGk+VGl0bGVzIGFyZSBmb3JtYXR0ZWQgYXMgT3BlbiBTYW5zIHdpdGggYm9sZCBhcHBsaWVkIGFuZCBmb250IHNpemUgaXMgc2V0IGF0IDQ1PC9saT4KKyAgICAgICAgPGxpPlRpdGxlIGNhcGl0YWxpemF0aW9uIGlzIHRpdGxlIGNhc2UKKyAgICAgICAgICA8dWw+CisgICAgICAgICAgICA8bGk+U3VidGl0bGUgY2FwaXRhbGl6YXRpb24gaXMgdGl0bGUgY2FzZTwvbGk+CisgICAgICAgICAgPC91bD4KKyAgICAgICAgPC9saT4KKyAgICAgICAgPGxpPlN1YnRpdGxlIGNhcGl0YWxpemF0aW9uIGlzIHRpdGxlIGNhc2U8L2xpPgorICAgICAgICA8bGk+VGl0bGVzIGFuZCBzdWJ0aXRsZXMgc2hvdWxkIG5ldmVyIGhhdmUgYSBwZXJpb2QgYXQgdGhlIGVuZDwvbGk+CisgICAgICA8L3VsPgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGU+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj5TbGlkZSB3aXRoIEJ1bGxldHMgdGhhdCBCdWlsZDwvaDI+CisgICAgICA8aDM+U3VidGl0bGUgUGxhY2Vob2xkZXI8L2gzPgorICAgIDwvaGdyb3VwPgorICAgIDxhcnRpY2xlPgorICAgICAgPHA+QSBsaXN0IHdoZXJlIGl0ZW1zIGJ1aWxkOjwvcD4KKyAgICAgIDx1bCBjbGFzcz0iYnVpbGQiPgorICAgICAgICA8bGk+UHJlc3NpbmcgJ2gnIGhpZ2hsaWdodHMgY29kZSBzbmlwcGV0czwvbGk+CisgICAgICAgIDxsaT5QcmVzc2luZyAncCcgdG9nZ2xlcyBzcGVha2VyIG5vdGVzIChpZiB0aGV5J3JlIG9uIHRoZSBjdXJyZW50IHNsaWRlKTwvbGk+CisgICAgICAgIDxsaT5QcmVzc2luZyAnZicgdG9nZ2xlcyBmdWxsc2NyZWVuIHZpZXdpbmc8L2xpPgorICAgICAgICA8bGk+UHJlc3NpbmcgJ3cnIHRvZ2dsZXMgd2lkZXNjcmVlbjwvbGk+CisgICAgICAgIDxsaT5QcmVzc2luZyAnbycgdG9nZ2xlcyBvdmVydmlldyBtb2RlPC9saT4KKyAgICAgICAgPGxpPlByZXNzaW5nICdFU0MnIHRvZ2dsZXMgb2ZmIHRoZXNlIGdvb2RpZXM8L2xpPgorICAgICAgPC91bD4KKyAgICAgIDxwPkFub3RoZXIgbGlzdCwgYnV0IGl0ZW1zIGZhZGUgYXMgdGhleSBidWlsZDo8L3A+CisgICAgICA8dWwgY2xhc3M9ImJ1aWxkIGZhZGUiPgorICAgICAgICA8bGk+SG92ZXIgb3ZlciBtZSE8L2xpPgorICAgICAgICA8bGk+SG92ZXIgb3ZlciBtZSE8L2xpPgorICAgICAgICA8bGk+SG92ZXIgb3ZlciBtZSE8L2xpPgorICAgICAgPC91bD4KKyAgICA8L2FydGljbGU+CisgIDwvc2xpZGU+CisKKyAgPHNsaWRlPgorICAgIDxoZ3JvdXA+CisgICAgICA8aDI+U2xpZGUgd2l0aCAoU21hbGxlciBGb250KTwvaDI+CisgICAgPC9oZ3JvdXA+CisgICAgPGFydGljbGUgY2xhc3M9InNtYWxsZXIiPgorICAgICAgPHVsPgorICAgICAgICA8bGk+QWxsIDxhIGhyZWY9Imh0dHA6Ly9nb29nbGUuY29tIj5saW5rczwvYT4gb3BlbiBpbiBuZXcgdGFicy48L2xpPgorICAgICAgICA8bGk+VG8gY2hhbmdlIHRoYXQgdGhpcywgYWRkIDxjb2RlPnRhcmdldD0iX3NlbGYiPC9jb2RlPiB0byB0aGUgbGluay48L2xpPgorICAgICAgPC91bD4KKyAgICA8L2FydGljbGU+CisgIDwvc2xpZGU+CisKKyAgPHNsaWRlIGhpZGRlbj4KKyAgICBIaWRkZW4gc2xpZGVzIGFyZSBsZWZ0IG91dCBvZiB0aGUgcHJlc2VudGF0aW9uLgorICA8L3NsaWRlPgorCisgIDxzbGlkZT4KKyAgICA8aGdyb3VwPgorICAgICAgPGgyPkNvZGUgU2xpZGUgKHdpdGggU3VidGl0bGUgUGxhY2Vob2xkZXIpPC9oMj4KKyAgICAgIDxoMz5TdWJ0aXRsZSBQbGFjZWhvbGRlcjwvaDM+CisgICAgPC9oZ3JvdXA+CisgICAgPGFydGljbGU+CisgICAgICA8cD5QcmVzcyAnaCcgdG8gaGlnaGxpZ2h0IGltcG9ydGFudCBzZWN0aW9ucyBvZiBjb2RlICh3cmFwcGVkIGluIDxjb2RlPiZsdDtiJmd0OzwvY29kZT4pLjwvcD4KKyAgICAgIDxwcmUgY2xhc3M9InByZXR0eXByaW50IiBkYXRhLWxhbmc9ImphdmFzY3JpcHQiPgorJmx0O3NjcmlwdCB0eXBlPSd0ZXh0L2phdmFzY3JpcHQnJmd0OworICAvLyBTYXkgaGVsbG8gd29ybGQgdW50aWwgdGhlIHVzZXIgc3RhcnRzIHF1ZXN0aW9uaW5nCisgIC8vIHRoZSBtZWFuaW5nZnVsbmVzcyBvZiB0aGVpciBleGlzdGVuY2UuCisgIGZ1bmN0aW9uIGhlbGxvV29ybGQod29ybGQpIHsKKyAgICA8Yj5mb3IgKHZhciBpID0gNDI7IC0taSAmZ3Q7PSAwOykgeworICAgICAgYWxlcnQoJ0hlbGxvICcgKyBTdHJpbmcod29ybGQpKTsKKyAgICB9PC9iPgorICB9CismbHQ7L3NjcmlwdCZndDsKKzwvcHJlPgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGU+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj5Db2RlIFNsaWRlIChTbWFsbGVyIEZvbnQpPC9oMj4KKyAgICA8L2hncm91cD4KKyAgICA8YXJ0aWNsZSBjbGFzcz0ic21hbGxlciI+CisgICAgICA8cHJlIGNsYXNzPSJwcmV0dHlwcmludCIgZGF0YS1sYW5nPSJqYXZhc2NyaXB0Ij4KKy8vIFNheSBoZWxsbyB3b3JsZCB1bnRpbCB0aGUgdXNlciBzdGFydHMgcXVlc3Rpb25pbmcKKy8vIHRoZSBtZWFuaW5nZnVsbmVzcyBvZiB0aGVpciBleGlzdGVuY2UuCitmdW5jdGlvbiBoZWxsb1dvcmxkKHdvcmxkKSB7CisgIGZvciAodmFyIGkgPSA0MjsgLS1pICZndDs9IDA7KSB7CisgICAgYWxlcnQoJ0hlbGxvICcgKyBTdHJpbmcod29ybGQpKTsKKyAgfQorfQorPC9wcmU+Cis8cHJlIGNsYXNzPSJwcmV0dHlwcmludCIgZGF0YS1sYW5nPSJjc3MiPgorJmx0O3N0eWxlJmd0OworICBwIHsgY29sb3I6IHBpbmsgfQorICBiIHsgY29sb3I6IGJsdWUgfQorJmx0Oy9zdHlsZSZndDsKKzwvcHJlPgorPHByZSBjbGFzcz0icHJldHR5cHJpbnQiIGRhdGEtbGFuZz0iaHRtbCI+CismbHQ7IURPQ1RZUEUgaHRtbD4KKyZsdDtodG1sPgorJmx0O2hlYWQ+CisgICZsdDt0aXRsZT5NeSBBd2Vzb21lIFBhZ2UmbHQ7L3RpdGxlPgorJmx0Oy9oZWFkPgorJmx0O2JvZHk+CisgICZsdDtwJmd0O0hlbGxvIHdvcmxkJmx0Oy9wJmd0OworJmx0O2JvZHk+CismbHQ7L2h0bWw+Cis8L3ByZT4KKyAgICA8L2FydGljbGU+CisgIDwvc2xpZGU+CisKKyAgPHNsaWRlPgorICAgIDxhc2lkZSBjbGFzcz0ibm90ZSI+CisgICAgICA8c2VjdGlvbj4KKyAgICAgICAgPHVsPgorICAgICAgICAgIDxsaT5Qb2ludCBJIHdhbnRlZCB0byBtYWtlICMxPC9saT4KKyAgICAgICAgICA8bGk+UG9pbnQgSSB3YW50ZWQgdG8gbWFrZSAjMjwvbGk+CisgICAgICAgICAgPGxpPlBvaW50IEkgd2FudGVkIHRvIG1ha2UgIzM8L2xpPgorICAgICAgICAgIDxsaT5FeGFtcGxlIDxhIGhyZWY9IiMiPmxpbms8L2E+IGluIG5vdGVzLjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgICAgIDxwPjxiPlJlbWVtYmVyIHRvIHNheSB0aGlzIHRhZyBsaW5lITwvYj48L3A+CisgICAgICA8L3NlY3Rpb24+CisgICAgPC9hc2lkZT4KKyAgICA8aGdyb3VwPgorICAgICAgPGgyPlNsaWRlIHdpdGggU3BlYWtlciBOb3RlczwvaDI+CisgICAgPC9oZ3JvdXA+CisgICAgPGFydGljbGU+CisgICAgICA8cD5QcmVzcyAncCcgdG8gdG9nZ2xlIHNwZWFrZXIgbm90ZXMuPC9wPgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGU+CisgICAgPGFzaWRlIGNsYXNzPSJub3RlIj4KKyAgICAgIDxzZWN0aW9uPgorICAgICAgICA8dWw+CisgICAgICAgICAgPGxpPlNlZSB0aGlzIGFtYXppbmcgbGluazogPGEgaHJlZj0iaHR0cDovL3d3dy5nb29nbGUuY29tIj5saW5rPC9hPi48L2xpPgorICAgICAgICA8L3VsPgorICAgICAgICA8cD48Yj5SZW1lbWJlciB0byBzYXkgdGhpcyB0YWcgbGluZSE8L2I+PC9wPgorICAgICAgPC9zZWN0aW9uPgorICAgIDwvYXNpZGU+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj5QcmVzZW50ZXIgTW9kZTwvaDI+CisgICAgPC9oZ3JvdXA+CisgICAgPGFydGljbGU+CisgICAgICA8cD5BZGQgPGNvZGU+PGEgaHJlZj0iP3ByZXNlbnRtZT10cnVlIiB0YXJnZXQ9Il9zZWxmIj4/cHJlc2VudG1lPXRydWU8L2E+PC9jb2RlPiB0byB0aGUgVVJMIHRvIGVuYWJsZWQgcHJlc2VudGVyIG1vZGUuCisgICAgICBUaGlzIHNldHRpbmcgaXMgc3RpY2t5LCBtZWFuaW5nIHJlZnJlc2hpbmcgdGhlIHBhZ2Ugd2lsbCBwZXJzaXN0IHByZXNlbnRlcgorICAgICAgbW9kZS48L3A+CisgICAgICA8cD5IaXQgPGNvZGU+PGEgaHJlZj0iP3ByZXNlbnRtZT1mYWxzZSIgdGFyZ2V0PSJfc2VsZiI+P3ByZXNlbnRtZT1mYWxzZTwvYT48L2NvZGU+IHRvIGRpc2FibGUgcHJlc2VudGVyIG1vZGUuPC9wPgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGU+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj5TbGlkZSB3aXRoIEltYWdlPC9oMj4KKyAgICA8L2hncm91cD4KKyAgICA8YXJ0aWNsZT4KKyAgICAgIDxpbWcgc3JjPSJpbWFnZXMvY2hhcnQucG5nIiBjbGFzcz0icmVmbGVjdCIgYWx0PSJEZXNjcmlwdGlvbiIgdGl0bGU9IkRlc2NyaXB0aW9uIj4KKyAgICAgIDxmb290ZXIgY2xhc3M9InNvdXJjZSI+c291cmNlOiBwbGFjZSBzb3VyY2UgaW5mbyBoZXJlPC9mb290ZXI+CisgICAgPC9hcnRpY2xlPgorICA8L3NsaWRlPgorCisgIDxzbGlkZT4KKyAgICA8aGdyb3VwPgorICAgICAgPGgyPlNsaWRlIHdpdGggSW1hZ2UgKENlbnRlcmVkIGhvcnovdmVydCk8L2gyPgorICAgIDwvaGdyb3VwPgorICAgIDxhcnRpY2xlIGNsYXNzPSJmbGV4Ym94IHZjZW50ZXIiPgorICAgICAgPGltZyBzcmM9ImltYWdlcy9iYXJjaGFydC5wbmciIGFsdD0iRGVzY3JpcHRpb24iIHRpdGxlPSJEZXNjcmlwdGlvbiI+CisgICAgICA8Zm9vdGVyIGNsYXNzPSJzb3VyY2UiPnNvdXJjZTogcGxhY2Ugc291cmNlIGluZm8gaGVyZTwvZm9vdGVyPgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGU+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj5UYWJsZSBPcHRpb24gQTwvaDI+CisgICAgICA8aDM+U3VidGl0bGUgUGxhY2Vob2xkZXI8L2gzPgorICAgIDwvaGdyb3VwPgorICAgIDxhcnRpY2xlPgorICAgICAgPHRhYmxlPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRoPjwvdGg+PHRoPkNvbHVtbiAxPC90aD48dGg+Q29sdW1uIDI8L3RoPjx0aD5Db2x1bW4gMzwvdGg+PHRoPkNvbHVtbiA0PC90aD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZD5Sb3cgMTwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQgY2xhc3M9ImhpZ2hsaWdodCI+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZD5Sb3cgMjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZD5Sb3cgMzwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZD5Sb3cgNDwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZD5Sb3cgNTwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC9hcnRpY2xlPgorICA8L3NsaWRlPgorCisgIDxzbGlkZT4KKyAgICA8aGdyb3VwPgorICAgICAgPGgyPlRhYmxlIE9wdGlvbiBBIChTbWFsbGVyIFRleHQpPC9oMj4KKyAgICAgIDxoMz5TdWJ0aXRsZSBQbGFjZWhvbGRlcjwvaDM+CisgICAgPC9oZ3JvdXA+CisgICAgPGFydGljbGUgY2xhc3M9InNtYWxsZXIiPgorICAgICAgPHRhYmxlPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRoPjwvdGg+PHRoPkNvbHVtbiAxPC90aD48dGg+Q29sdW1uIDI8L3RoPjx0aD5Db2x1bW4gMzwvdGg+PHRoPkNvbHVtbiA0PC90aD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZD5Sb3cgMTwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQgY2xhc3M9ImhpZ2hsaWdodCI+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZD5Sb3cgMjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZD5Sb3cgMzwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZD5Sb3cgNDwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0ZD5Sb3cgNTwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgIDwvdGFibGU+CisgICAgPC9hcnRpY2xlPgorICA8L3NsaWRlPgorCisgIDxzbGlkZT4KKyAgICA8aGdyb3VwPgorICAgICAgPGgyPlRhYmxlIE9wdGlvbiBCPC9oMj4KKyAgICAgIDxoMz5TdWJ0aXRsZSBQbGFjZWhvbGRlcjwvaDM+CisgICAgPC9oZ3JvdXA+CisgICAgPGFydGljbGU+CisgICAgICA8dGFibGUgY2xhc3M9InJvd3MiPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRoPkhlYWRlciAxPC90aD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZCBjbGFzcz0iaGlnaGxpZ2h0Ij5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0aD5IZWFkZXIgMjwvdGg+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICAgIDx0cj4KKyAgICAgICAgICA8dGg+SGVhZGVyIDM8L3RoPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPgorICAgICAgICA8L3RyPgorICAgICAgICA8dHI+CisgICAgICAgICAgPHRoPkhlYWRlciA0PC90aD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+PHRkPnBsYWNlaG9sZGVyPC90ZD4KKyAgICAgICAgPC90cj4KKyAgICAgICAgPHRyPgorICAgICAgICAgIDx0aD5IZWFkZXIgNTwvdGg+PHRkPnBsYWNlaG9sZGVyPC90ZD48dGQ+cGxhY2Vob2xkZXI8L3RkPjx0ZD5wbGFjZWhvbGRlcjwvdGQ+CisgICAgICAgIDwvdHI+CisgICAgICA8L3RhYmxlPgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGU+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj5TbGlkZSBTdHlsZXM8L2gyPgorICAgIDwvaGdyb3VwPgorICAgIDxhcnRpY2xlIGNsYXNzPSJzbWFsbGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImNvbHVtbnMtMiI+CisgICAgICAgIDx1bD4KKyAgICAgICAgICA8bGkgY2xhc3M9InJlZCI+Y2xhc3M9InJlZCI8L2xpPgorICAgICAgICAgIDxsaSBjbGFzcz0icmVkMiI+Y2xhc3M9InJlZDIiPC9saT4KKyAgICAgICAgICA8bGkgY2xhc3M9InJlZDMiPmNsYXNzPSJyZWQzIjwvbGk+CisgICAgICAgICAgPGxpIGNsYXNzPSJibHVlIj5jbGFzcz0iYmx1ZSI8L2xpPgorICAgICAgICAgIDxsaSBjbGFzcz0iYmx1ZTIiPmNsYXNzPSJibHVlMiI8L2xpPgorICAgICAgICAgIDxsaSBjbGFzcz0iYmx1ZTMiPmNsYXNzPSJibHVlMyI8L2xpPgorICAgICAgICAgIDxsaSBjbGFzcz0iZ3JlZW4iPmNsYXNzPSJncmVlbiI8L2xpPgorICAgICAgICAgIDxsaSBjbGFzcz0iZ3JlZW4yIj5jbGFzcz0iZ3JlZW4yIjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgICAgIDx1bD4KKyAgICAgICAgICA8bGkgY2xhc3M9ImdyZWVuMyI+Y2xhc3M9ImdyZWVuMyI8L2xpPgorICAgICAgICAgIDxsaSBjbGFzcz0ieWVsbG93Ij5jbGFzcz0ieWVsbG93IjwvbGk+CisgICAgICAgICAgPGxpIGNsYXNzPSJ5ZWxsb3cyIj5jbGFzcz0ieWVsbG93MiI8L2xpPgorICAgICAgICAgIDxsaSBjbGFzcz0ieWVsbG93MyI+Y2xhc3M9InllbGxvdzMiPC9saT4KKyAgICAgICAgICA8bGkgY2xhc3M9ImdyYXkiPmNsYXNzPSJncmF5IjwvbGk+CisgICAgICAgICAgPGxpIGNsYXNzPSJncmF5MiI+Y2xhc3M9ImdyYXkyIjwvbGk+CisgICAgICAgICAgPGxpIGNsYXNzPSJncmF5MyI+Y2xhc3M9ImdyYXkzIjwvbGk+CisgICAgICAgICAgPGxpIGNsYXNzPSJncmF5NCI+Y2xhc3M9ImdyYXk0IjwvbGk+CisgICAgICAgIDwvdWw+CisgICAgICA8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9ImNlbnRlcmVkIiBzdHlsZT0ibWFyZ2luLXRvcDoyZW0iPgorICAgICAgICBJIGFtIGNlbnRlcmVkIHRleHQgd2l0aCBhIDxidXR0b24+QnV0dG9uPC9idXR0b24+IGFuZCA8YnV0dG9uIGRpc2FibGVkPkRpc2FibGVkPC9idXR0b24+IGJ1dHRvbi4KKyAgICAgIDwvZGl2PgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGUgY2xhc3M9InNlZ3VlIGRhcmsgbm9iYWNrZ3JvdW5kIj4KKyAgICA8YXNpZGUgY2xhc3M9ImdkYmFyIj48aW1nIHNyYz0iaW1hZ2VzL2dvb2dsZV9kZXZlbG9wZXJzX2ljb25fMTI4LnBuZyI+PC9hc2lkZT4KKyAgICA8aGdyb3VwIGNsYXNzPSJhdXRvLWZhZGVpbiI+CisgICAgICA8aDI+U2VndWUgU2xpZGU8L2gyPgorICAgICAgPGgzPlN1YnRpdGxlIFBsYWNlaG9sZGVyPC9oMz4KKyAgICA8L2hncm91cD4KKyAgPC9zbGlkZT4KKworICA8c2xpZGUgY2xhc3M9ImZpbGwgbm9iYWNrZ3JvdW5kIiBzdHlsZT0iYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy9za3kuanBnKSI+CisgICAgPGhncm91cD4KKyAgICAgIDxoMiBjbGFzcz0id2hpdGUiPkZ1bGwgSW1hZ2UgKHdpdGggT3B0aW9uYWwgSGVhZGVyKTwvaDI+CisgICAgPC9oZ3JvdXA+CisgICAgPGZvb3RlciBjbGFzcz0ic291cmNlIHdoaXRlIj53d3cuZmxpY2tyLmNvbS9waG90b3MvMjU3OTc0NTlATjA2LzU0Mzg3OTk3NjMvPC9mb290ZXI+CisgIDwvc2xpZGU+CisKKyAgPHNsaWRlIGNsYXNzPSJzZWd1ZSBkYXJrIHF1b3RlIG5vYmFja2dyb3VuZCI+CisgICAgPGFzaWRlIGNsYXNzPSJnZGJhciByaWdodCBib3R0b20iPjxpbWcgc3JjPSJpbWFnZXMvZ29vZ2xlX2RldmVsb3BlcnNfaWNvbl8xMjgucG5nIj48L2FzaWRlPgorICAgIDxhcnRpY2xlIGNsYXNzPSJmbGV4Ym94IHZsZWZ0IGF1dG8tZmFkZWluIj4KKyAgICAgIDxxPgorICAgICAgICBUaGlzIGlzIGFuIGV4YW1wbGUgb2YgcXVvdGUgdGV4dC4KKyAgICAgIDwvcT4KKyAgICAgIDxkaXYgY2xhc3M9ImF1dGhvciI+CisgICAgICAgIE5hbWU8YnI+CisgICAgICAgIENvbXBhbnkKKyAgICAgIDwvZGl2PgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGU+CisgICAgPGhncm91cD4KKyAgICAgIDxoMj5TbGlkZSB3aXRoIElmcmFtZTwvaDI+CisgICAgPC9oZ3JvdXA+CisgICAgPGFydGljbGU+CisgICAgICA8aWZyYW1lIGRhdGEtc3JjPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vZG9vZGxlNGdvb2dsZS9oaXN0b3J5Lmh0bWwiPjwvaWZyYW1lPgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGU+CisgICAgPGFydGljbGU+CisgICAgICA8aWZyYW1lIGRhdGEtc3JjPSJodHRwOi8vd3d3Lmdvb2dsZS5jb20vZG9vZGxlNGdvb2dsZS9oaXN0b3J5Lmh0bWwiPjwvaWZyYW1lPgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGUgY2xhc3M9InRoYW5rLXlvdS1zbGlkZSBzZWd1ZSBub2JhY2tncm91bmQiPgorICAgIDxhc2lkZSBjbGFzcz0iZ2RiYXIgcmlnaHQiPjxpbWcgc3JjPSJpbWFnZXMvZ29vZ2xlX2RldmVsb3BlcnNfaWNvbl8xMjgucG5nIj48L2FzaWRlPgorICAgIDxhcnRpY2xlIGNsYXNzPSJmbGV4Ym94IHZsZWZ0IGF1dG8tZmFkZWluIj4KKyAgICAgIDxoMj4mbHQ7VGhhbmsgWW91ISZndDs8L2gyPgorICAgICAgPHA+SW1wb3J0YW50IGNvbnRhY3QgaW5mb3JtYXRpb24gZ29lcyBoZXJlLjwvcD4KKyAgICA8L2FydGljbGU+CisgICAgPHAgY2xhc3M9ImF1dG8tZmFkZWluIiBkYXRhLWNvbmZpZy1jb250YWN0PgorICAgICAgPCEtLSBwb3B1bGF0ZWQgZnJvbSBzbGlkZV9jb25maWcuanNvbiAtLT4KKyAgICA8L3A+CisgIDwvc2xpZGU+CisKKyAgPHNsaWRlIGNsYXNzPSJsb2dvc2xpZGUgZGFyayBub2JhY2tncm91bmQiPgorICAgIDxhcnRpY2xlIGNsYXNzPSJmbGV4Ym94IHZjZW50ZXIiPgorICAgICAgPHNwYW4+PGltZyBzcmM9ImltYWdlcy9nb29nbGVfZGV2ZWxvcGVyc19sb2dvX3doaXRlLnBuZyI+PC9zcGFuPgorICAgIDwvYXJ0aWNsZT4KKyAgPC9zbGlkZT4KKworICA8c2xpZGUgY2xhc3M9ImJhY2tkcm9wIj48L3NsaWRlPgorCis8L3NsaWRlcz4KKworPHNjcmlwdD4KK3ZhciBfZ2FxID0gX2dhcSB8fCBbXTsKK19nYXEucHVzaChbJ19zZXRBY2NvdW50JywgJ1VBLVhYWFhYWFhYLTEnXSk7CitfZ2FxLnB1c2goWydfdHJhY2tQYWdldmlldyddKTsKKworKGZ1bmN0aW9uKCkgeworICB2YXIgZ2EgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTsgZ2EudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnOyBnYS5hc3luYyA9IHRydWU7CisgIGdhLnNyYyA9ICgnaHR0cHM6JyA9PSBkb2N1bWVudC5sb2NhdGlvbi5wcm90b2NvbCA/ICdodHRwczovL3NzbCcgOiAnaHR0cDovL3d3dycpICsgJy5nb29nbGUtYW5hbHl0aWNzLmNvbS9nYS5qcyc7CisgIHZhciBzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ3NjcmlwdCcpWzBdOyBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGdhLCBzKTsKK30pKCk7Cis8L3NjcmlwdD4KKworPCEtLVtpZiBJRV0+CisgIDxzY3JpcHQgc3JjPSJodHRwOi8vYWpheC5nb29nbGVhcGlzLmNvbS9hamF4L2xpYnMvY2hyb21lLWZyYW1lLzEvQ0ZJbnN0YWxsLm1pbi5qcyI+PC9zY3JpcHQ+CisgIDxzY3JpcHQ+Q0ZJbnN0YWxsLmNoZWNrKHttb2RlOiAnb3ZlcmxheSd9KTs8L3NjcmlwdD4KKzwhW2VuZGlmXS0tPgorPC9ib2R5PgorPC9odG1sPgo=