Name: series-workflowcwvr8 Phase: Failed StartedAt: 2026-07-17 05:19:56 +0000 UTC FinishedAt: 2026-07-17 05:49:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcwvr8[0] Phase: Succeeded StartedAt: 2026-07-17 05:19:56 +0000 UTC FinishedAt: 2026-07-17 05:48:54 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcwvr8[0].run-triage Phase: Succeeded StartedAt: 2026-07-17 05:19:56 +0000 UTC FinishedAt: 2026-07-17 05:48:54 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA1OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhZTJlNThiZDIxNzA2YzgwZWUzNTk4MDA5YzZhNWI4N2I1YTI4YTVkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDU6NDg6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuaW5kZXggNzQyZDRmZDFiNTk4YzIuLjk1NjczZDNiZTlkYTk3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5AQCAtMTQ2Myw3ICYjNDM7MTQ2Myw3IEBAIHZvaWQgYXRoMTJrX2NvcmVfaGFsdChzdHJ1Y3QgYXRoMTJrICphcilcbiBcbiBcdGF0aDEya19tYWNfc2Nhbl9maW5pc2goYXIpO1xuIFx0YXRoMTJrX21hY19wZWVyX2NsZWFudXBfYWxsKGFyKTtcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuJiM0MztcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSwgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0KTtcbiBcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2YXItXHUwMDNlcmVnZF91cGRhdGVfd29yayk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXJlZ2RfY2hhbm5lbF91cGRhdGVfd29yayk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFiLVx1MDAzZXJma2lsbF93b3JrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5pbmRleCBmYzUxMjdiNWMxYTM3Zi4uYjZmZDVlOWRmZGI3ODYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbkBAIC02MzUsMTEgJiM0Mzs2MzUsMTIgQEAgc3RydWN0IGF0aDEyayB7XG4gXHRcdHN0cnVjdCBjb21wbGV0aW9uIHN0YXJ0ZWQ7XG4gXHRcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRlZDtcbiBcdFx0c3RydWN0IGNvbXBsZXRpb24gb25fY2hhbm5lbDtcbi1cdFx0c3RydWN0IGRlbGF5ZWRfd29yayB0aW1lb3V0O1xuJiM0MztcdFx0c3RydWN0IHdpcGh5X2RlbGF5ZWRfd29yayB0aW1lb3V0O1xuIFx0XHRlbnVtIGF0aDEya19zY2FuX3N0YXRlIHN0YXRlO1xuIFx0XHRib29sIGlzX3JvYztcbiBcdFx0aW50IHJvY19mcmVxO1xuIFx0XHRib29sIHJvY19ub3RpZnk7XG4mIzQzO1x0XHRib29sIGZpbmlzaF9xdWV1ZWQ7XG4gXHRcdHN0cnVjdCB3aXBoeV93b3JrIHZkZXZfY2xlYW5fd2s7XG4gXHRcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xuIFx0fSBzY2FuO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5pbmRleCA1MWM0ZGYzMmU3MTY5NS4uZjUzZGY4ZDRjODA4YTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtNTE2Miw3ICYjNDM7NTE2Miw3IEBAIHZvaWQgX19hdGgxMmtfbWFjX3NjYW5fZmluaXNoKHN0cnVjdCBhdGgxMmsgKmFyKVxuIFx0XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGh3KTtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEFUSDEyS19TQ0FOX1NUQVJUSU5HOlxuLVx0XHRjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4mIzQzO1x0XHRhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSB0cnVlO1xuIFx0XHRjb21wbGV0ZV9hbGwoXHUwMDI2YXItXHUwMDNlc2Nhbi5jb21wbGV0ZWQpO1xuIFx0XHR3aXBoeV93b3JrX3F1ZXVlKGFyLVx1MDAzZWFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnZkZXZfY2xlYW5fd2spO1xuIFx0XHRicmVhaztcbkBAIC01MjU0LDE0ICYjNDM7NTI1NCwyMyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl9hYm9ydChzdHJ1Y3QgYXRoMTJrICphcilcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGF0aDEya19zY2FuX3RpbWVvdXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4mIzQzO3N0YXRpYyB2b2lkIGF0aDEya19zY2FuX3RpbWVvdXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuJiM0MztcdFx0XHRcdCAgICAgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG4ge1xuLVx0c3RydWN0IGF0aDEyayAqYXIgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGF0aDEyayxcbi1cdFx0XHRcdFx0IHNjYW4udGltZW91dC53b3JrKTtcbiYjNDM7XHRzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrICpkd29yaztcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrICphcjtcbiYjNDM7XG4mIzQzO1x0ZHdvcmsgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdpcGh5X2RlbGF5ZWRfd29yaywgd29yayk7XG4mIzQzO1x0YXIgPSBjb250YWluZXJfb2YoZHdvcmssIHN0cnVjdCBhdGgxMmssIHNjYW4udGltZW91dCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuJiM0MztcdGlmIChhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQpIHtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4gXG4tXHR3aXBoeV9sb2NrKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHkpO1xuIFx0YXRoMTJrX3NjYW5fYWJvcnQoYXIpO1xuLVx0d2lwaHlfdW5sb2NrKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHkpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3NjYW5fc2VuZF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrICphcixcbkBAIC01MjkyLDYgJiM0Mzs1MzAxLDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fdmRldl9jbGVhbl93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICpcbiBcbiBcdGFydmlmID0gYXItXHUwMDNlc2Nhbi5hcnZpZjtcbiBcbiYjNDM7XHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKHdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuJiM0MztcbiBcdC8qIFRoZSBzY2FuIHZkZXYgaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLiBUaGlzIGNhbiBvY2N1ciB3aGVuIGFcbiBcdCAqIG5ldyBzY2FuIHJlcXVlc3QgaXMgbWFkZSBvbiB0aGUgc2FtZSB2aWYgd2l0aCBhIGRpZmZlcmVudFxuIFx0ICogZnJlcXVlbmN5LCBjYXVzaW5nIHRoZSBzY2FuIGFydmlmIHRvIG1vdmUgZnJvbSBvbmUgcmFkaW8gdG9cbkBAIC01MzIzLDYgJiM0Mzs1MzM0LDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fdmRldl9jbGVhbl93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICpcbiBcdH1cbiBcbiBcdGFyLVx1MDAzZXNjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFO1xuJiM0MztcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0YXItXHUwMDNlc2Nhbl9jaGFubmVsID0gTlVMTDtcbiBcdGFyLVx1MDAzZXNjYW4ucm9jX2ZyZXEgPSAwO1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbkBAIC01NjA5LDYgJiM0Mzs1NjIxLDcgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2luaXRpYXRlX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXNjYW4uY29tcGxldGVkKTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX1NUQVJUSU5HO1xuIFx0XHRhci1cdTAwM2VzY2FuLmlzX3JvYyA9IGZhbHNlO1xuJiM0MztcdFx0YXItXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XG4gXHRcdGFyLVx1MDAzZXNjYW4uYXJ2aWYgPSBhcnZpZjtcbiBcdFx0cmV0ID0gMDtcbiBcdFx0YnJlYWs7XG5AQCAtNTY2NSw2ICYjNDM7NTY3OCw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19pbml0aWF0ZV9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XG4mIzQzO1x0XHRhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcbiBcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdFx0Z290byBleGl0O1xuIFx0fVxuQEAgLTU2NzIsOSAmIzQzOzU2ODYsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2luaXRpYXRlX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRhdGgxMmtfZGJnKGFyLVx1MDAzZWFiLCBBVEgxMktfREJHX01BQywgXCYjMzQ7bWFjIHNjYW4gc3RhcnRlZFwmIzM0Oyk7XG4gXG4gXHQvKiBBZGQgYSBtYXJnaW4gdG8gYWNjb3VudCBmb3IgZXZlbnQvY29tbWFuZCBwcm9jZXNzaW5nICovXG4tXHRpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGF0aDEya19hcl90b19odyhhciksIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCxcbi1cdFx0XHRcdCAgICAgbXNlY3NfdG9famlmZmllcyhhcmctXHUwMDNlbWF4X3NjYW5fdGltZSAmIzQzO1xuLVx0XHRcdFx0XHRcdCAgICAgIEFUSDEyS19NQUNfU0NBTl9USU1FT1VUX01TRUNTKSk7XG4mIzQzO1x0d2lwaHlfZGVsYXllZF93b3JrX3F1ZXVlKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHksXG4mIzQzO1x0XHRcdFx0IFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCxcbiYjNDM7XHRcdFx0XHQgbXNlY3NfdG9famlmZmllcyhhcmctXHUwMDNlbWF4X3NjYW5fdGltZSAmIzQzO1xuJiM0MztcdFx0XHRcdFx0XHQgIEFUSDEyS19NQUNfU0NBTl9USU1FT1VUX01TRUNTKSk7XG4gXG4gZXhpdDpcbiBcdGlmIChhcmcpIHtcbkBAIC01NzU3LDYgJiM0Mzs1NzcyLDcgQEAgaW50IGF0aDEya19tYWNfb3BfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIFx0XHRcdFx0YXItXHUwMDNlc2Nhbi5hcnZpZiA9IE5VTEw7XG4gXHRcdFx0XHRhci1cdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTtcbiYjNDM7XHRcdFx0XHRhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcbiBcdFx0XHRcdGFyLVx1MDAzZXNjYW5fY2hhbm5lbCA9IE5VTEw7XG4gXHRcdFx0XHRhci1cdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcbiBcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG5AQCAtNTc5Miw3ICYjNDM7NTgwOCw3IEBAIHZvaWQgYXRoMTJrX21hY19vcF9jYW5jZWxfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBcdFx0YXRoMTJrX3NjYW5fYWJvcnQoYXIpO1xuIFxuLVx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0KTtcbiYjNDM7XHRcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoaHctXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4gXHR9XG4gfVxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX21hY19vcF9jYW5jZWxfaHdfc2Nhbik7XG5AQCAtOTkzNSw3ICYjNDM7OTk1MSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc3RvcChzdHJ1Y3QgYXRoMTJrICphcilcbiBcbiBcdGNsZWFyX2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXHUwMDI2YXItXHUwMDNlZGV2X2ZsYWdzKTtcbiBcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuJiM0MztcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSwgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0KTtcbiBcdHdpcGh5X3dvcmtfY2FuY2VsKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udmRldl9jbGVhbl93ayk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXJlZ2RfY2hhbm5lbF91cGRhdGVfd29yayk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXJlZ2RfdXBkYXRlX3dvcmspO1xuQEAgLTEwOTYyLDYgJiM0MzsxMDk3OCw3IEBAIHZvaWQgYXRoMTJrX21hY19vcF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdH1cbiBcbiBcdFx0XHRhci1cdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTtcbiYjNDM7XHRcdFx0YXItXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XG4gXHRcdFx0YXItXHUwMDNlc2Nhbl9jaGFubmVsID0gTlVMTDtcbiBcdFx0XHRhci1cdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcbiBcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuQEAgLTEzODc2LDcgJiM0MzsxMzg5Myw3IEBAIGludCBhdGgxMmtfbWFjX29wX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBcdGF0aDEya19zY2FuX2Fib3J0KGFyKTtcbiBcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuJiM0MztcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoaHctXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4gXHR3aXBoeV93b3JrX2ZsdXNoKGh3LVx1MDAzZXdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnZkZXZfY2xlYW5fd2spO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMTM5NTYsNiAmIzQzOzEzOTczLDcgQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXNjYW4ub25fY2hhbm5lbCk7XG4gXHRcdGFyLVx1MDAzZXNjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9TVEFSVElORztcbiBcdFx0YXItXHUwMDNlc2Nhbi5pc19yb2MgPSB0cnVlO1xuJiM0MztcdFx0YXItXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XG4gXHRcdGFyLVx1MDAzZXNjYW4uYXJ2aWYgPSBhcnZpZjtcbiBcdFx0YXItXHUwMDNlc2Nhbi5yb2NfZnJlcSA9IGNoYW4tXHUwMDNlY2VudGVyX2ZyZXE7XG4gXHRcdGFyLVx1MDAzZXNjYW4ucm9jX25vdGlmeSA9IHRydWU7XG5AQCAtMTM5OTgsNiAmIzQzOzE0MDE2LDcgQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIFx0XHRhci1cdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTtcbiYjNDM7XHRcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTE0MDExLDggJiM0MzsxNDAzMCw4IEBAIGludCBhdGgxMmtfbWFjX29wX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiBcdH1cbiBcbi1cdGllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmsoaHcsIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCxcbi1cdFx0XHRcdCAgICAgbXNlY3NfdG9famlmZmllcyhkdXJhdGlvbikpO1xuJiM0MztcdHdpcGh5X2RlbGF5ZWRfd29ya19xdWV1ZShody1cdTAwM2V3aXBoeSwgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0LFxuJiM0MztcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uKSk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTUwNTIsNiAmIzQzOzE1MDcxLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19zZXR1cChzdHJ1Y3QgYXRoMTJrICphcilcbiBcdGFyLVx1MDAzZW51bV90eF9jaGFpbnMgPSBod2VpZ2h0MzIocGRldi1cdTAwM2VjYXAudHhfY2hhaW5fbWFzayk7XG4gXHRhci1cdTAwM2VudW1fcnhfY2hhaW5zID0gaHdlaWdodDMyKHBkZXYtXHUwMDNlY2FwLnJ4X2NoYWluX21hc2spO1xuIFx0YXItXHUwMDNlc2Nhbi5hcnZpZiA9IE5VTEw7XG4mIzQzO1x0YXItXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XG4gXHRhci1cdTAwM2V2ZGV2X2lkXzExZF9zY2FuID0gQVRIMTJLXzExRF9JTlZBTElEX1ZERVZfSUQ7XG4gXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuQEAgLTE1MDc3LDcgJiM0MzsxNTA5Nyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIpXG4gXHRhci1cdTAwM2V0aGVybWFsLnRlbXBlcmF0dXJlID0gMDtcbiBcdGFyLVx1MDAzZXRoZXJtYWwuaHdtb25fZGV2ID0gTlVMTDtcbiBcbi1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCwgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKTtcbiYjNDM7XHR3aXBoeV9kZWxheWVkX3dvcmtfaW5pdChcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQsIGF0aDEya19zY2FuX3RpbWVvdXRfd29yayk7XG4gXHR3aXBoeV93b3JrX2luaXQoXHUwMDI2YXItXHUwMDNlc2Nhbi52ZGV2X2NsZWFuX3drLCBhdGgxMmtfc2Nhbl92ZGV2X2NsZWFuX3dvcmspO1xuIFx0SU5JVF9XT1JLKFx1MDAyNmFyLVx1MDAzZXJlZ2RfY2hhbm5lbF91cGRhdGVfd29yaywgYXRoMTJrX3JlZ2RfdXBkYXRlX2NoYW5fbGlzdF93b3JrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFyLVx1MDAzZXJlZ2RfY2hhbm5lbF91cGRhdGVfcXVldWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA1OjQ4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFlMmU1OGJkMjE3MDZjODBlZTM1OTgwMDljNmE1Yjg3YjVhMjhhNWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxNyAwNTo0ODowMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKaW5kZXggNzQyZDRmZDFiNTk4YzIuLjk1NjczZDNiZTlkYTk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwpAQCAtMTQ2Myw3ICYjNDM7MTQ2Myw3IEBAIHZvaWQgYXRoMTJrX2NvcmVfaGFsdChzdHJ1Y3QgYXRoMTJrICphcikKIAogCWF0aDEya19tYWNfc2Nhbl9maW5pc2goYXIpOwogCWF0aDEya19tYWNfcGVlcl9jbGVhbnVwX2FsbChhcik7Ci0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7YXItJmd0O3NjYW4udGltZW91dCk7CiYjNDM7CXdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS0mZ3Q7d2lwaHksICZhbXA7YXItJmd0O3NjYW4udGltZW91dCk7CiAJY2FuY2VsX3dvcmtfc3luYygmYW1wO2FyLSZndDtyZWdkX3VwZGF0ZV93b3JrKTsKIAljYW5jZWxfd29ya19zeW5jKCZhbXA7YXItJmd0O3JlZ2RfY2hhbm5lbF91cGRhdGVfd29yayk7CiAJY2FuY2VsX3dvcmtfc3luYygmYW1wO2FiLSZndDtyZmtpbGxfd29yayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCmluZGV4IGZjNTEyN2I1YzFhMzdmLi5iNmZkNWU5ZGZkYjc4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKQEAgLTYzNSwxMSAmIzQzOzYzNSwxMiBAQCBzdHJ1Y3QgYXRoMTJrIHsKIAkJc3RydWN0IGNvbXBsZXRpb24gc3RhcnRlZDsKIAkJc3RydWN0IGNvbXBsZXRpb24gY29tcGxldGVkOwogCQlzdHJ1Y3QgY29tcGxldGlvbiBvbl9jaGFubmVsOwotCQlzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXQ7CiYjNDM7CQlzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrIHRpbWVvdXQ7CiAJCWVudW0gYXRoMTJrX3NjYW5fc3RhdGUgc3RhdGU7CiAJCWJvb2wgaXNfcm9jOwogCQlpbnQgcm9jX2ZyZXE7CiAJCWJvb2wgcm9jX25vdGlmeTsKJiM0MzsJCWJvb2wgZmluaXNoX3F1ZXVlZDsKIAkJc3RydWN0IHdpcGh5X3dvcmsgdmRldl9jbGVhbl93azsKIAkJc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWY7CiAJfSBzY2FuOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKaW5kZXggNTFjNGRmMzJlNzE2OTUuLmY1M2RmOGQ0YzgwOGE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKQEAgLTUxNjIsNyAmIzQzOzUxNjIsNyBAQCB2b2lkIF9fYXRoMTJrX21hY19zY2FuX2ZpbmlzaChzdHJ1Y3QgYXRoMTJrICphcikKIAkJCWllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGh3KTsKIAkJZmFsbHRocm91Z2g7CiAJY2FzZSBBVEgxMktfU0NBTl9TVEFSVElORzoKLQkJY2FuY2VsX2RlbGF5ZWRfd29yaygmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQpOwomIzQzOwkJYXItJmd0O3NjYW4uZmluaXNoX3F1ZXVlZCA9IHRydWU7CiAJCWNvbXBsZXRlX2FsbCgmYW1wO2FyLSZndDtzY2FuLmNvbXBsZXRlZCk7CiAJCXdpcGh5X3dvcmtfcXVldWUoYXItJmd0O2FoLSZndDtody0mZ3Q7d2lwaHksICZhbXA7YXItJmd0O3NjYW4udmRldl9jbGVhbl93ayk7CiAJCWJyZWFrOwpAQCAtNTI1NCwxNCAmIzQzOzUyNTQsMjMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fYWJvcnQoc3RydWN0IGF0aDEyayAqYXIpCiAJc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl90aW1lb3V0X3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwKJiM0MzsJCQkJICAgICBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaykKIHsKLQlzdHJ1Y3QgYXRoMTJrICphciA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXRoMTJrLAotCQkJCQkgc2Nhbi50aW1lb3V0LndvcmspOwomIzQzOwlzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrICpkd29yazsKJiM0MzsJc3RydWN0IGF0aDEyayAqYXI7CiYjNDM7CiYjNDM7CWR3b3JrID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3aXBoeV9kZWxheWVkX3dvcmssIHdvcmspOwomIzQzOwlhciA9IGNvbnRhaW5lcl9vZihkd29yaywgc3RydWN0IGF0aDEyaywgc2Nhbi50aW1lb3V0KTsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CiYjNDM7CWlmIChhci0mZ3Q7c2Nhbi5maW5pc2hfcXVldWVkKSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CiAKLQl3aXBoeV9sb2NrKGF0aDEya19hcl90b19odyhhciktJmd0O3dpcGh5KTsKIAlhdGgxMmtfc2Nhbl9hYm9ydChhcik7Ci0Jd2lwaHlfdW5sb2NrKGF0aDEya19hcl90b19odyhhciktJmd0O3dpcGh5KTsKIH0KIAogc3RhdGljIHZvaWQgYXRoMTJrX21hY19zY2FuX3NlbmRfY29tcGxldGUoc3RydWN0IGF0aDEyayAqYXIsCkBAIC01MjkyLDYgJiM0Mzs1MzAxLDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fdmRldl9jbGVhbl93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICoKIAogCWFydmlmID0gYXItJmd0O3NjYW4uYXJ2aWY7CiAKJiM0MzsJd2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbCh3aXBoeSwgJmFtcDthci0mZ3Q7c2Nhbi50aW1lb3V0KTsKJiM0MzsKIAkvKiBUaGUgc2NhbiB2ZGV2IGhhcyBhbHJlYWR5IGJlZW4gZGVsZXRlZC4gVGhpcyBjYW4gb2NjdXIgd2hlbiBhCiAJICogbmV3IHNjYW4gcmVxdWVzdCBpcyBtYWRlIG9uIHRoZSBzYW1lIHZpZiB3aXRoIGEgZGlmZmVyZW50CiAJICogZnJlcXVlbmN5LCBjYXVzaW5nIHRoZSBzY2FuIGFydmlmIHRvIG1vdmUgZnJvbSBvbmUgcmFkaW8gdG8KQEAgLTUzMjMsNiAmIzQzOzUzMzQsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl92ZGV2X2NsZWFuX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKgogCX0KIAogCWFyLSZndDtzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTsKJiM0MzsJYXItJmd0O3NjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlOwogCWFyLSZndDtzY2FuX2NoYW5uZWwgPSBOVUxMOwogCWFyLSZndDtzY2FuLnJvY19mcmVxID0gMDsKIAlzcGluX3VubG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwpAQCAtNTYwOSw2ICYjNDM7NTYyMSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19pbml0aWF0ZV9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQlyZWluaXRfY29tcGxldGlvbigmYW1wO2FyLSZndDtzY2FuLmNvbXBsZXRlZCk7CiAJCWFyLSZndDtzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fU1RBUlRJTkc7CiAJCWFyLSZndDtzY2FuLmlzX3JvYyA9IGZhbHNlOwomIzQzOwkJYXItJmd0O3NjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlOwogCQlhci0mZ3Q7c2Nhbi5hcnZpZiA9IGFydmlmOwogCQlyZXQgPSAwOwogCQlicmVhazsKQEAgLTU2NjUsNiAmIzQzOzU2NzgsNyBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAogCQlzcGluX2xvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKIAkJYXItJmd0O3NjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFOwomIzQzOwkJYXItJmd0O3NjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlOwogCQlzcGluX3VubG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwogCQlnb3RvIGV4aXQ7CiAJfQpAQCAtNTY3Miw5ICYjNDM7NTY4NiwxMCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAlhdGgxMmtfZGJnKGFyLSZndDthYiwgQVRIMTJLX0RCR19NQUMsICYjMzQ7bWFjIHNjYW4gc3RhcnRlZCYjMzQ7KTsKIAogCS8qIEFkZCBhIG1hcmdpbiB0byBhY2NvdW50IGZvciBldmVudC9jb21tYW5kIHByb2Nlc3NpbmcgKi8KLQlpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGF0aDEya19hcl90b19odyhhciksICZhbXA7YXItJmd0O3NjYW4udGltZW91dCwKLQkJCQkgICAgIG1zZWNzX3RvX2ppZmZpZXMoYXJnLSZndDttYXhfc2Nhbl90aW1lICYjNDM7Ci0JCQkJCQkgICAgICBBVEgxMktfTUFDX1NDQU5fVElNRU9VVF9NU0VDUykpOwomIzQzOwl3aXBoeV9kZWxheWVkX3dvcmtfcXVldWUoYXRoMTJrX2FyX3RvX2h3KGFyKS0mZ3Q7d2lwaHksCiYjNDM7CQkJCSAmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQsCiYjNDM7CQkJCSBtc2Vjc190b19qaWZmaWVzKGFyZy0mZ3Q7bWF4X3NjYW5fdGltZSAmIzQzOwomIzQzOwkJCQkJCSAgQVRIMTJLX01BQ19TQ0FOX1RJTUVPVVRfTVNFQ1MpKTsKIAogZXhpdDoKIAlpZiAoYXJnKSB7CkBAIC01NzU3LDYgJiM0Mzs1NzcyLDcgQEAgaW50IGF0aDEya19tYWNfb3BfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJCQlzcGluX2xvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKIAkJCQlhci0mZ3Q7c2Nhbi5hcnZpZiA9IE5VTEw7CiAJCQkJYXItJmd0O3NjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFOwomIzQzOwkJCQlhci0mZ3Q7c2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7CiAJCQkJYXItJmd0O3NjYW5fY2hhbm5lbCA9IE5VTEw7CiAJCQkJYXItJmd0O3NjYW4ucm9jX2ZyZXEgPSAwOwogCQkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CkBAIC01NzkyLDcgJiM0Mzs1ODA4LDcgQEAgdm9pZCBhdGgxMmtfbWFjX29wX2NhbmNlbF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCiAJCWF0aDEya19zY2FuX2Fib3J0KGFyKTsKIAotCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDthci0mZ3Q7c2Nhbi50aW1lb3V0KTsKJiM0MzsJCXdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoaHctJmd0O3dpcGh5LCAmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQpOwogCX0KIH0KIEVYUE9SVF9TWU1CT0woYXRoMTJrX21hY19vcF9jYW5jZWxfaHdfc2Nhbik7CkBAIC05OTM1LDcgJiM0Mzs5OTUxLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19zdG9wKHN0cnVjdCBhdGgxMmsgKmFyKQogCiAJY2xlYXJfYml0KEFUSDEyS19GTEFHX0NBQ19SVU5OSU5HLCAmYW1wO2FyLSZndDtkZXZfZmxhZ3MpOwogCi0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7YXItJmd0O3NjYW4udGltZW91dCk7CiYjNDM7CXdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS0mZ3Q7d2lwaHksICZhbXA7YXItJmd0O3NjYW4udGltZW91dCk7CiAJd2lwaHlfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS0mZ3Q7d2lwaHksICZhbXA7YXItJmd0O3NjYW4udmRldl9jbGVhbl93ayk7CiAJY2FuY2VsX3dvcmtfc3luYygmYW1wO2FyLSZndDtyZWdkX2NoYW5uZWxfdXBkYXRlX3dvcmspOwogCWNhbmNlbF93b3JrX3N5bmMoJmFtcDthci0mZ3Q7cmVnZF91cGRhdGVfd29yayk7CkBAIC0xMDk2Miw2ICYjNDM7MTA5NzgsNyBAQCB2b2lkIGF0aDEya19tYWNfb3BfcmVtb3ZlX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJCX0KIAogCQkJYXItJmd0O3NjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFOwomIzQzOwkJCWFyLSZndDtzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTsKIAkJCWFyLSZndDtzY2FuX2NoYW5uZWwgPSBOVUxMOwogCQkJYXItJmd0O3NjYW4ucm9jX2ZyZXEgPSAwOwogCQkJc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKQEAgLTEzODc2LDcgJiM0MzsxMzg5Myw3IEBAIGludCBhdGgxMmtfbWFjX29wX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAogCWF0aDEya19zY2FuX2Fib3J0KGFyKTsKIAotCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQpOwomIzQzOwl3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKGh3LSZndDt3aXBoeSwgJmFtcDthci0mZ3Q7c2Nhbi50aW1lb3V0KTsKIAl3aXBoeV93b3JrX2ZsdXNoKGh3LSZndDt3aXBoeSwgJmFtcDthci0mZ3Q7c2Nhbi52ZGV2X2NsZWFuX3drKTsKIAogCXJldHVybiAwOwpAQCAtMTM5NTYsNiAmIzQzOzEzOTczLDcgQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCXJlaW5pdF9jb21wbGV0aW9uKCZhbXA7YXItJmd0O3NjYW4ub25fY2hhbm5lbCk7CiAJCWFyLSZndDtzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fU1RBUlRJTkc7CiAJCWFyLSZndDtzY2FuLmlzX3JvYyA9IHRydWU7CiYjNDM7CQlhci0mZ3Q7c2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7CiAJCWFyLSZndDtzY2FuLmFydmlmID0gYXJ2aWY7CiAJCWFyLSZndDtzY2FuLnJvY19mcmVxID0gY2hhbi0mZ3Q7Y2VudGVyX2ZyZXE7CiAJCWFyLSZndDtzY2FuLnJvY19ub3RpZnkgPSB0cnVlOwpAQCAtMTM5OTgsNiAmIzQzOzE0MDE2LDcgQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAKIAkJc3Bpbl9sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CiAJCWFyLSZndDtzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTsKJiM0MzsJCWFyLSZndDtzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTsKIAkJc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKIAkJcmV0dXJuIHJldDsKIAl9CkBAIC0xNDAxMSw4ICYjNDM7MTQwMzAsOCBAQCBpbnQgYXRoMTJrX21hY19vcF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCi0JaWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgJmFtcDthci0mZ3Q7c2Nhbi50aW1lb3V0LAotCQkJCSAgICAgbXNlY3NfdG9famlmZmllcyhkdXJhdGlvbikpOwomIzQzOwl3aXBoeV9kZWxheWVkX3dvcmtfcXVldWUoaHctJmd0O3dpcGh5LCAmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQsCiYjNDM7CQkJCSBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uKSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE1MDUyLDYgJiM0MzsxNTA3MSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIpCiAJYXItJmd0O251bV90eF9jaGFpbnMgPSBod2VpZ2h0MzIocGRldi0mZ3Q7Y2FwLnR4X2NoYWluX21hc2spOwogCWFyLSZndDtudW1fcnhfY2hhaW5zID0gaHdlaWdodDMyKHBkZXYtJmd0O2NhcC5yeF9jaGFpbl9tYXNrKTsKIAlhci0mZ3Q7c2Nhbi5hcnZpZiA9IE5VTEw7CiYjNDM7CWFyLSZndDtzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTsKIAlhci0mZ3Q7dmRldl9pZF8xMWRfc2NhbiA9IEFUSDEyS18xMURfSU5WQUxJRF9WREVWX0lEOwogCiAJc3Bpbl9sb2NrX2luaXQoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKQEAgLTE1MDc3LDcgJiM0MzsxNTA5Nyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIpCiAJYXItJmd0O3RoZXJtYWwudGVtcGVyYXR1cmUgPSAwOwogCWFyLSZndDt0aGVybWFsLmh3bW9uX2RldiA9IE5VTEw7CiAKLQlJTklUX0RFTEFZRURfV09SSygmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQsIGF0aDEya19zY2FuX3RpbWVvdXRfd29yayk7CiYjNDM7CXdpcGh5X2RlbGF5ZWRfd29ya19pbml0KCZhbXA7YXItJmd0O3NjYW4udGltZW91dCwgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKTsKIAl3aXBoeV93b3JrX2luaXQoJmFtcDthci0mZ3Q7c2Nhbi52ZGV2X2NsZWFuX3drLCBhdGgxMmtfc2Nhbl92ZGV2X2NsZWFuX3dvcmspOwogCUlOSVRfV09SSygmYW1wO2FyLSZndDtyZWdkX2NoYW5uZWxfdXBkYXRlX3dvcmssIGF0aDEya19yZWdkX3VwZGF0ZV9jaGFuX2xpc3Rfd29yayk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDthci0mZ3Q7cmVnZF9jaGFubmVsX3VwZGF0ZV9xdWV1ZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBhdGgxMmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGF0aDEya2Agd2lyZWxlc3MgZHJpdmVyLCBhbmQgaXQgbG9va3MgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBzdHJ1Y3R1cmFsIGNoYW5nZS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWJvdXQgdXBkYXRpbmcgdGhlIGRlbGF5ZWQgd29yayBoYW5kbGluZyB3aXRoaW4gdGhlIGBzY2FuYCBzdHJ1Y3R1cmUuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgc3dpdGNoZWQgZnJvbSB0aGUgc3RhbmRhcmQgYHN0cnVjdCBkZWxheWVkX3dvcmsgdGltZW91dGAgdG8gdGhlIGB3aXBoeWAtYXdhcmUgYHN0cnVjdCB3aXBoeV9kZWxheWVkX3dvcmsgdGltZW91dGAsIGFuZCBjb3JyZXNwb25kaW5nbHkgcmVwbGFjZWQgdGhlIG9sZGVyIHdvcmsgcXVldWUgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyB3aXRoIHRoZWlyIGB3aXBoeWAgY291bnRlcnBhcnRzIOKAkyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYCBiZWNvbWVzIGB3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsYCwgdGhlIGFzeW5jaHJvbm91cyB2ZXJzaW9uIGlzIGhhbmRsZWQgd2l0aCBhIGZsYWcgYGFyLSZndDtzY2FuLmZpbmlzaF9xdWV1ZWQgPSB0cnVlYCwgYGllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmtgIGJlY29tZXMgYHdpcGh5X2RlbGF5ZWRfd29ya19xdWV1ZWAsIGFuZCBgSU5JVF9ERUxBWUVEX1dPUktgIGlzIG5vdyBgd2lwaHlfZGVsYXllZF93b3JrX2luaXRgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjbGVhbiBtb2Rlcm5pemF0aW9uLgoKTm93LCBteSBtaW5kIGp1bXBzIHRvIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gU2luY2UgdGhpcyBpcyBhIGRyaXZlciwgdGhlIGF0dGFjayBzdXJmYWNlIGlzIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QuIElzIGBhdGgxMmtgIGV2ZW4gcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEl0JiMzOTtzIGEgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMsIHNwZWNpZmljYWxseSBQQ0llL0FIQiwgd2hpY2ggbWVhbnMgZGlyZWN0IGhhcmR3YXJlIGFjY2VzcyBpcyBsaWtlbHkgaW52b2x2ZWQuIFdhaXQsIGNhbiB3ZSBmdXp6IGl0PyBJIGFtIHVzZWQgdG8gZnV6emluZyB2YXJpb3VzIGRyaXZlcnMuIEhhcmR3YXJlIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byBmdXp6IGRpcmVjdGx5LCBidXQgdGhlcmUgYXJlIHNvbWUgd29ya2Fyb3VuZHMuIEkgbmVlZCB0byBrbm93IHRoZSB0eXBlIG9mIGRyaXZlci4gRW11bGF0aW9uIGxheWVycywgVVNCIGRyaXZlcnMgd2l0aCBkdW1teSBIQ0RzLCBvciBgbWFjODAyMTFfaHdzaW1gIGFyZSB0eXBpY2FsIGF2ZW51ZXMsIGJ1dCBpdCBsb29rcyBsaWtlIGBhdGgxMmtgIGlzIGEgUENJL0FIQiBkcml2ZXIuIFNvIG5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCBlbXVsYXRpb24uIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZW11bGF0aW9uIGZvciBgYXRoMTJrYC4KCkkgd2lsbCB1c2UgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aGUgTGludXggc291cmNlIHRyZWUgZm9yIGFueSBtZW50aW9uIG9mIGBhdGgxMmtgIHRvIHNlZSB3aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM0OTUyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9Mj1jb25maWcgQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzpcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTU6XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTJrLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTE3PWNvbmZpZyBBVEgxMktfQUhCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTg6XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE5LVx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IFJFTU9URVBST0Ncbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MjU9Y29uZmlnIEFUSDEyS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI2Olx0Ym9vbCBcJiMzNDthdGgxMmsgZGVidWdnaW5nXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjctXHRkZXBlbmRzIG9uIEFUSDEyS1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0zNT1jb25maWcgQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNjpcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM3LVx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zOC1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozOTpcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NDQ9Y29uZmlnIEFUSDEyS19UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDU6XHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00Ni1cdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBFVkVOVF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDg6XHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NTM9Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjU0Olx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NS1cdGRlcGVuZHMgb24gQVRIMTJLXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU3LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjU4Olx0ICBFbmFibGUgYXRoMTJrIGNvcmVkdW1wIGNvbGxlY3Rpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDEySykgJiM0Mzs9IGF0aDEyay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM6YXRoMTJrLXkgJiM0Mzs9IGNvcmUubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS00LVx0ICAgIGhhbC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MjU6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19BSEIpICYjNDM7PSBhaGIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX0FUSDEySykgJiM0Mzs9IHdpZmk3L1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6Mjk6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19ERUJVR0ZTKSAmIzQzOz0gZGVidWdmcy5vIGRlYnVnZnNfaHR0X3N0YXRzLm8gZGVidWdmc19zdGEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMDphdGgxMmstJChDT05GSUdfQUNQSSkgJiM0Mzs9IGFjcGkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMTphdGgxMmstJChDT05GSUdfQVRIMTJLX1RSQUNJTkcpICYjNDM7PSB0cmFjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMyOmF0aDEyay0kKENPTkZJR19QTSkgJiM0Mzs9IHdvdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMzOmF0aDEyay0kKENPTkZJR19BVEgxMktfQ09SRURVTVApICYjNDM7PSBjb3JlZHVtcC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM0OmF0aDEyay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozNTphdGgxMmstJChDT05GSUdfVEhFUk1BTCkgJiM0Mzs9IHRoZXJtYWwub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjExOnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGludCBmdW5jKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4LVx0aWYgKCFyb290X2hhbmRsZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTk6XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXCYjMzQ7aW52YWxpZCBhY3BpIGhhbmRsZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNi1cdGlmICghb2JqKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNzpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDthY3BpX2V2YWx1YXRlX2RzbSgpIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOC1cdFx0cmV0dXJuIC1FTk9FTlQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYtXHRcdFx0XHQgICBBVEgxMktfQUNQSV9CREZfQU5DSE9SX1NUUklOR19MRU4pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NzpcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIEJERiBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ4LVx0XHRcdFx0XHQgICAgb2JqLVx1MDAzZXN0cmluZy5sZW5ndGgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTYyLVx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCBcdTAwM2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfTUFYX0JJVE1BUF9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo2MzpcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIGZ1bmMgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy02NC1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy03NS1cdFx0XHRpZiAob2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX1RBU19DRkdfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NzY6XHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBBQ1BJIERTTSBUQVMgY29uZmlnIHNpemU6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNzctXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtODctXHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo4ODpcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIFRBUyBkYXRhIHNpemU6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtODktXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtOTktXHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9CSU9TX1NBUl9EQVRBX1NJWkUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEwMDpcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgQklPUyBTQVIgZGF0YSBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEwMS1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMTEtXHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9HRU9fT0ZGU0VUX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTEyOlx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBHRU8gT0ZGU0VUIGRhdGEgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMTMtXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTIzLVx0XHRcdGlmIChvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQ0NBX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTI0Olx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gQ0NBIGRhdGEgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMjUtXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTM1LVx0XHRcdGlmIChvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQkFORF9FREdFX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTM2Olx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gYmFuZCBlZGdlIGRhdGEgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzctXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTQ3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE0ODpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O0FDUEkgRFNNIG1ldGhvZCByZXR1cm5lZCBhbiB1bnN1cHBvcnRlZCBvYmplY3QgdHlwZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNDktXHRcdFx0ICAgIG9iai1cdTAwM2V0eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNjE6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfcG93ZXJfbGltaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTY3LVx0ICAgIHRhc19zYXJfcG93ZXJfdGFibGVbMV0gIT0gQVRIMTJLX0FDUElfVEFTX0RBVEFfRU5BQkxFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNjg6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtsYXRlc3QgQUNQSSBUQVMgZGF0YSBpcyBpbnZhbGlkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2OS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTcyOlx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsIFdNSV9CSU9TX1BBUkFNX1RBU19EQVRBX1RZUEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzMtXHRcdFx0XHQgICAgICB0YXNfc2FyX3Bvd2VyX3RhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE3NS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE3NjpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGRhdGEgdGFibGU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTc3LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE4MzpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9iaW9zX3Nhcl9wb3dlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTg0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODgtXHQgICAgYWItXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhWzFdICE9IEFUSDEyS19BQ1BJX1BPV0VSX0xJTUlUX0VOQUJMRV9GTEFHKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxODk6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIGxhdGVzdCBBQ1BJIEJJT1MgU0FSIGRhdGFcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTkwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTM6XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX3Nhcl9jbWQoYWIsIGFiLVx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTU6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBTQVIgdGFibGU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTk2LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIwMjpzdGF0aWMgdm9pZCBhdGgxMmtfYWNwaV9kc21fbm90aWZ5KGFjcGlfaGFuZGxlIGhhbmRsZSwgdTMyIGV2ZW50LCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwNC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMDU6XHRzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwNy1cdGlmIChldmVudCA9PSBBVEgxMktfQUNQSV9OT1RJRllfRVZFTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIwODpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O3Vua25vd24gYWNwaSBub3RpZnkgJXVcXG5cJiMzNDssIGV2ZW50KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwOS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIxMi1cdGlmICghYWItXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIxMzpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDthY3BpX3Rhc19lbmFibGUgaXMgZmFsc2VcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjE3Olx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfREFUQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTgtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTk6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gdXBkYXRlIEFDUEkgVEFTIGRhdGEgdGFibGU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjIwLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjIzOlx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X3Bvd2VyX2xpbWl0KGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIyNC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIyNTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZXQgQUNQSSBUQVMgcG93ZXIgbGltaXQgZGF0YTogJWRcJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjYtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMzI6XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzMy1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIzNDpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byB1cGRhdGUgQklPUyBTQVI6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjM1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjM4Olx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3Bvd2VyKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzOS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI0MDpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZXQgQklPUyBTQVIgcG93ZXIgbGltaXQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjQxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjQ1OnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3BhcmFtcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNDk6XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX3Nhcl9jbWQoYWIsIGFiLVx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNTAtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNTE6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBTQVIgdGFibGU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjUyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI1NTpcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfZ2VvX2NtZChhYiwgYWItXHUwMDNlYWNwaS5nZW9fb2Zmc2V0X2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjU2LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjU3Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldCBBQ1BJIEJJT1MgR0VPIHRhYmxlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1OC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNjQ6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfdGFzX3BhcmFtcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNjg6XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYiwgV01JX0JJT1NfUEFSQU1fVEFTX0NPTkZJR19UWVBFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjY5LVx0XHRcdFx0ICAgICAgYWItXHUwMDNlYWNwaS50YXNfY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3MS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3MjpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGNvbmZpZyB0YWJsZSBwYXJhbWV0ZXI6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjczLVx0XHRcdCAgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3NzpcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLCBXTUlfQklPU19QQVJBTV9UQVNfREFUQV9UWVBFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjc4LVx0XHRcdFx0ICAgICAgYWItXHUwMDNlYWNwaS50YXNfc2FyX3Bvd2VyX3RhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI4MTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGRhdGEgdGFibGUgcGFyYW1ldGVyOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4Mi1cdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyODk6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mjk0OmJvb2wgYXRoMTJrX2FjcGlfZ2V0X2Rpc2FibGVfMTFiZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjk1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyOTk6dm9pZCBhdGgxMmtfYWNwaV9zZXRfZHNtX2Z1bmMoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzA4LVx0aWYgKGFiLVx1MDAzZWFjcGkuYWNwaV90YXNfZW5hYmxlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMDk6XHRcdHJldCA9IGF0aDEya19hY3BpX3NldF90YXNfcGFyYW1zKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMxMC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzExOlx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBBQ1BJIFRBUyBwYXJhbWV0ZXJzOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMxMi1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzE2LVx0aWYgKGFiLVx1MDAzZWFjcGkuYWNwaV9iaW9zX3Nhcl9lbmFibGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMxNzpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3BhcmFtcyhhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMTgtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMxOTpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgQUNQSSBCSU9TIFNBUjogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjAtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyNS1cdFx0YnVmID0gYWItXHUwMDNlYWNwaS5jY2FfZGF0YSAmIzQzOyBBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMyNjpcdFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjctXHRcdFx0XHRcdCAgICAgIFdNSV9CSU9TX1BBUkFNX0NDQV9USFJFU0hPTERfVFlQRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzAtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMzMTpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldCBBQ1BJIERTTSBDQ0EgdGhyZXNob2xkOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMzMi1cdFx0XHRcdCAgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMzNy1cdGlmIChhYi1cdTAwM2VhY3BpLmFjcGlfYmFuZF9lZGdlX2VuYWJsZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzM4Olx0XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMzOS1cdFx0XHRcdFx0ICAgICAgV01JX0JJT1NfUEFSQU1fVFlQRV9CQU5ERURHRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNDItXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM0MzpcdFx0XHRhdGgxMmtfd2FybihhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM0NC1cdFx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gc2V0IEFDUEkgRFNNIGJhbmQgZWRnZSBjaGFubmVsIHBvd2VyOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNTE6aW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM2OTpcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfU1VQUE9SVF9GVU5DUyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzAtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNzE6XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIERTTSBkYXRhOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Mi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzUtXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfRElTQUJMRV9GTEFHKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mzc2Olx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0RJU0FCTEVfRkxBRyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzctXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3ODpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIERJU0FCTEUgRkxBRzogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzktXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zOTEtXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfQkRGX0VYVCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM5MjpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19CREZfRVhUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5My1cdFx0aWYgKHJldCB8fCBhYi1cdTAwM2VhY3BpLmJkZl9zdHJpbmdbMF0gPT0gJiMzOTtcXDAmIzM5Oykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mzk0Olx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IEFDUEkgQkRGIEVYVDogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zOTUtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDEtXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0NGRykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQwMjpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfQ0ZHKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwMy1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDA0Olx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IEFDUEkgVEFTIGNvbmZpZyB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDUtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDktXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0RBVEEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MTA6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0RBVEEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDExLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MTI6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBUQVMgZGF0YSB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTMtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjItXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfQklPU19TQVIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MjM6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDI0LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MjU6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBiaW9zIHNhciBkYXRhOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQyNi1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzMC1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9HRU9fT0ZGU0VUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDMxOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0dFT19PRkZTRVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDMyLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MzM6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBnZW8gb2Zmc2V0IGRhdGE6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDM0LVx0XHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDQ0LVx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0NDQSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ0NTpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9DQ0EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDQ2LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NDc6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBEU00gQ0NBIHRocmVzaG9sZCBjb25maWd1cmF0aW9uOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0OC1cdFx0XHRcdCAgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ1OS1cdFx0XHRcdCAgICAgICBBVEgxMktfQUNQSV9GVU5DX0JJVF9CQU5EX0VER0VfQ0hBTl9QT1dFUikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2MDpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9CQU5EX0VER0UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYxLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NjI6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBEU00gYmFuZCBlZGdlIGNoYW5uZWwgcG93ZXI6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYzLVx0XHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDczLVx0XHRcdFx0XHQgICAgIEFDUElfREVWSUNFX05PVElGWSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ3NDpcdFx0XHRcdFx0ICAgICBhdGgxMmtfYWNwaV9kc21fbm90aWZ5LCBhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NzUtXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ3NjpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBpbnN0YWxsIERTTSBub3RpZnkgY2FsbGJhY2s6ICVkXFxuXCYjMzQ7LCBzdGF0dXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDc3LVx0XHRyZXR1cm4gLUVJTztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0ODU6aW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDkyLVx0aWYgKHN0cnNjcHkoYWItXHUwMDNlcW1pLnRhcmdldC5iZGZfZXh0LCBhYi1cdTAwM2VhY3BpLmJkZl9zdHJpbmcgJiM0MzsgNCwgbWF4X2xlbikgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0OTM6XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ5NC1cdFx0XHQgICBcJiMzNDthY3BpIGJkZiB2YXJpYW50IGxvbmdlciB0aGFuIHRoZSBidWZmZXIgKHZhcmlhbnQ6ICVzKVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo1MDA6dm9pZCBhdGgxMmtfYWNwaV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy01MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTUwNi1cdFx0XHRcdCAgIEFDUElfREVWSUNFX05PVElGWSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjUwNzpcdFx0XHRcdCAgIGF0aDEya19hY3BpX2RzbV9ub3RpZnkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNTA4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzU6aW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzY6dm9pZCBhdGgxMmtfYWNwaV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Nzc6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3ODpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlXzExYmUoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3OTp2b2lkIGF0aDEya19hY3BpX3NldF9kc21fZnVuYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjgwOmludCBhdGgxMmtfYWNwaV9jaGVja19iZGZfdmFyaWFudF9uYW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo4NDpzdGF0aWMgaW5saW5lIGludCBhdGgxMmtfYWNwaV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6ODk6c3RhdGljIGlubGluZSB2b2lkIGF0aDEya19hY3BpX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjkzOnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC05Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjk4OnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV8xMWJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC05OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTAzOnN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfYWNwaV9zZXRfZHNtX2Z1bmMoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTA3OnN0YXRpYyBpbmxpbmUgaW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjM6c3RhdGljIHN0cnVjdCBhdGgxMmtfYWhiX2RyaXZlciAqYXRoMTJrX2FoYl9mYW1pbHlfZHJpdmVyc1tBVEgxMktfREVWSUNFX0ZBTUlMWV9NQVhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNDpzdGF0aWMgY29uc3QgY2hhciBhdGgxMmtfdXNlcnBkX2lycVtdWzldID0ge1wmIzM0O3NwYXduXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNS1cdFx0XHRcdCAgICAgXCYjMzQ7cmVhZHlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz04ND1lbnVtIGV4dF9pcnFfbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTI0OnN0YXRpYyB1MzIgYXRoMTJrX2FoYl9yZWFkMzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIG9mZnNldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTI1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTMxOnN0YXRpYyB2b2lkIGF0aDEya19haGJfd3JpdGUzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMzItXHRcdFx0ICAgICAgIHUzMiB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTQwOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2FuY2VsX3dvcmtxdWV1ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQ0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNDU6XHRcdHN0cnVjdCBhdGgxMmtfY2VfcGlwZSAqY2VfcGlwZSA9IFx1MDAyNmFiLVx1MDAzZWNlLmNlX3BpcGVbaV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTQ3Olx0XHRpZiAoYXRoMTJrX2NlX2dldF9hdHRyX2ZsYWdzKGFiLCBpKSBcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQ4LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNTQ6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9leHRfZ3JwX2Rpc2FibGUoc3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTU1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTYyOnN0YXRpYyB2b2lkIF9fYXRoMTJrX2FoYl9leHRfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTYzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE2Ni1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjc6XHRcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjk6XHRcdGF0aDEya19haGJfZXh0X2dycF9kaXNhYmxlKGlycV9ncnApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNzAtXHRcdGlmIChpcnFfZ3JwLVx1MDAzZW5hcGlfZW5hYmxlZCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNzg6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9leHRfZ3JwX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxODY6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9zZXRiaXQzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1OCBiaXQsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE4Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5MDpcdHZhbCA9IGF0aDEya19haGJfcmVhZDMyKGFiLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTE6XHRhdGgxMmtfYWhiX3dyaXRlMzIoYWIsIG9mZnNldCwgdmFsIHwgQklUKGJpdCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5NDpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2NsZWFyYml0MzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTggYml0LCB1MzIgb2Zmc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTg6XHR2YWwgPSBhdGgxMmtfYWhiX3JlYWQzMihhYiwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTk5Olx0YXRoMTJrX2FoYl93cml0ZTMyKGFiLCBvZmZzZXQsIHZhbCBcdTAwMjYgfkJJVChiaXQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjAwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMDI6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUxNiBjZV9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjAzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxMy1cdGlmIChjZV9hdHRyLVx1MDAzZXNyY19uZW50cmllcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE0Olx0XHRhdGgxMmtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCwgaWUxX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMTYtXHRpZiAoY2VfYXR0ci1cdTAwM2VkZXN0X25lbnRyaWVzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIxNzpcdFx0YXRoMTJrX2FoYl9zZXRiaXQzMihhYiwgY2VfaWQsIGllMl9yZWdfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIxODpcdFx0YXRoMTJrX2FoYl9zZXRiaXQzMihhYiwgY2VfaWQgJiM0MzsgQ0VfSE9TVF9JRV8zX1NISUZULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMTktXHRcdFx0XHQgICAgaWUzX3JlZ19hZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjIzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2VfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTE2IGNlX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM0LVx0aWYgKGNlX2F0dHItXHUwMDNlc3JjX25lbnRyaWVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMzU6XHRcdGF0aDEya19haGJfY2xlYXJiaXQzMihhYiwgY2VfaWQsIGllMV9yZWdfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM3LVx0aWYgKGNlX2F0dHItXHUwMDNlZGVzdF9uZW50cmllcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMzg6XHRcdGF0aDEya19haGJfY2xlYXJiaXQzMihhYiwgY2VfaWQsIGllMl9yZWdfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzOTpcdFx0YXRoMTJrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCAmIzQzOyBDRV9IT1NUX0lFXzNfU0hJRlQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0MC1cdFx0XHRcdCAgICAgIGllM19yZWdfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI0NDpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfY2VfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjQ5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNTA6XHRcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTEtXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI1ODpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfZXh0X2lycXMoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI2My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNjQ6XHRcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjY1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNzM6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFzX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjc3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNzg6XHRcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzktXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI4MDpcdFx0YXRoMTJrX2FoYl9jZV9pcnFfZW5hYmxlKGFiLCBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjgxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyODQ6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFzX2Rpc2FibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI4OC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VjZV9jb3VudDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjg5Olx0XHRpZiAoYXRoMTJrX2NlX2dldF9hdHRyX2ZsYWdzKGFiLCBpKSBcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjkwLVx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTE6XHRcdGF0aDEya19haGJfY2VfaXJxX2Rpc2FibGUoYWIsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTItXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI5NTpzdGF0aWMgaW50IGF0aDEya19haGJfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjk2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjk3Olx0YXRoMTJrX2FoYl9jZV9pcnFzX2VuYWJsZShhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI5ODpcdGF0aDEya19jZV9yeF9wb3N0X2J1ZihhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTMwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzAzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfZXh0X2lycV9lbmFibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzA0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzA1Olx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzA2LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMTMtXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzE0Olx0XHRhdGgxMmtfYWhiX2V4dF9ncnBfZW5hYmxlKGlycV9ncnApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMTUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjMxODpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMTkte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2ODcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBTeXpib3QmIzM5O3MgSW50ZXJhY3Rpb24gd2l0aCB0aGUgYXRoMTJrIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgYGF0aDEya2AgZHJpdmVyIGhhcyB0aHJlZSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGBDT05GSUdfQVRIMTJLX0FIQmAsIGBDT05GSUdfQVRIMTJLYCwgYW5kIGBDT05GSUdfQVRIMTJLX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGVyZSBzb21lIGtpbmQgb2YgZW11bGF0aW9uIHNldHVwIGZvciBgYXRoMTJrYD8gSXQmIzM5O3Mgbm90IGxpa2UgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggdXN1YWxseSBzaW11bGF0ZXMgYSBtb3JlIGdlbmVyaWMgbWFjODAyMTEgZGV2aWNlLCBub3Qgc3BlY2lmaWNhbGx5IGBhdGgxMmtgLiBXYWl0LCBzeXpib3QgZm91bmQgYSBidWcgaW4gdGhpcz8gSW50cmlndWluZy4gTGV0JiMzOTtzIHNlZSBpZiBzeXpib3QgZXZlbiBpbmNsdWRlcyBgYXRoMTJrYCBpbiBpdHMgZnV6emluZyB0YXJnZXRzLgoKSG9sZCBvbiBhIHNlY29uZCwgdGhpcyBjb21taXQgbWVzc2FnZSBzYXlzICYjMzQ7c3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3JiMzNDsgYW5kIHRoZSBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gVGhhdCBtZWFucyBzeXpib3QgKmlzKiB0ZXN0aW5nIGEgcGF0Y2ggcmVsYXRlZCB0byBgYXRoMTJrYC4gQnV0IGhvdz8gSG93IGlzIHN5emJvdCBpbnRlcmFjdGluZyB3aXRoIHRoaXMgZHJpdmVyPyBHaXZlbiB0aGF0IGBhdGgxMmtgIGlzIGEgUENJL0FIQiBkcml2ZXIsIGlzIGl0IGZ1enplZCB2aWEgc29tZSB2aXJ0dWFsIGJ1cyBvciBwZXJoYXBzIGl0JiMzOTtzIGEgVVNCIGRyaXZlcj8gVGhlIHRob3VnaHQgaXMsIHN5emthbGxlciBtaWdodCBiZSB1c2luZyBpdHMgdmlydHVhbCBQQ0kgYnVzIChgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG5vIHdhaXQsIGB2aGNpYCBpcyBmb3IgVVNCKS4gRG9lcyBzeXprYWxsZXIgaGF2ZSBgdmZpb2Agb3IgZXZlbiBkaXJlY3QgUENJIGZ1enppbmc/IEFjdHVhbGx5LCBJIHJlbWVtYmVyIGBtYWM4MDIxMV9od3NpbWAgd2hpY2ggaXMgZm9yIHRoZSBgbWFjODAyMTFgIGZyYW1ld29yay4KCkFoYSEgTWF5YmUgc3l6a2FsbGVyIGlzIGZ1enppbmcgYGF0aDEya2AgaW5kaXJlY3RseSB2aWEgYG5sODAyMTFgIHRlc3Rtb2RlPyBUaGF0JiMzOTtzIHBsYXVzaWJsZS4gTGV0JiMzOTtzIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmNgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBjbHVlcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZXN0bW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU9MzM9YXRoMTJrLSQoQ09ORklHX0FUSDEyS19DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzQ6YXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTM1LWF0aDEyay0kKENPTkZJR19USEVSTUFMKSAmIzQzOz0gdGhlcm1hbC5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNy0jaW5jbHVkZSBcJiMzNDtkcF9yeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE4OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTktI2luY2x1ZGUgXCYjMzQ7cGVlci5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NzojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtOC0jaW5jbHVkZSBcdTAwM2NuZXQvbmV0bGluay5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEzLSNpbmNsdWRlIFwmIzM0O2hpZi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTQ6I2luY2x1ZGUgXCYjMzQ7Li4vdGVzdG1vZGVfaS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTQ1PXZvaWQgYXRoMTJrX3RtX3dtaV9ldmVudF91bnNlZ21lbnRlZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01MS1cdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTI6XHRcdCAgIFwmIzM0O3Rlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiIGxlbmd0aCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01My1cdFx0ICAgY21kX2lkLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTgtXHRpZiAoIWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTk6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDt0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02MC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo2NTpcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cdTAwM2VhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02Ni1cdFx0XHRcdFx0XHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTcyLVx0XHRhdGgxMmtfd2FybihhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo3MzpcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdW5zZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03NC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03OS1cdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgc2tiLVx1MDAzZWxlbiwgc2tiLVx1MDAzZWRhdGEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODA6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgdW5zZWdtZW50ZWQgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTgxLVx0XHRrZnJlZV9za2Iobmxfc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODU6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTg2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9ODg9dm9pZCBhdGgxMmtfdG1fcHJvY2Vzc19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy05OS1cdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTAwOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBldmVudCB3bWkgY21kX2lkICVkIGZ0bSBldmVudCBtc2cgJXAgZGF0YWxlbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMDEtXHRcdCAgIGNtZF9pZCwgZnRtX21zZywgbGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA1LVx0aWYgKHBkZXZfaWQgXHUwMDNlPSBhYi1cdTAwM2VudW1fcmFkaW9zKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTA2Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGludmFsaWQgcGRldiBpZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTExMi1cdGlmICghYXIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMTM6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDt0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gYWJzZW5jZSBvZiBwZGV2XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTU0Olx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVx1MDAzZWFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE1NS1cdFx0XHRcdFx0XHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2MS1cdFx0YXRoMTJrX3dhcm4oYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTYyOlx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzAtXHRcdCAgICBcdTAwMjZhYi1cdTAwM2VmdG1fZXZlbnRfb2JqLmV2ZW50ZGF0YVswXSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzE6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgZXZlbnRcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3Mi1cdFx0a2ZyZWVfc2tiKG5sX3NrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzY6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3Ny19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTE3OT1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfZ2V0X3ZlcnNpb24oc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4My1cdGF0aDEya19kYmcoYXItXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTg0Olx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgZ2V0IHZlcnNpb25fbWFqb3IgJWQgdmVyc2lvbl9taW5vciAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODUtXHRcdCAgIEFUSF9URVNUTU9ERV9WRVJTSU9OX01BSk9SLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODgtXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxODk6XHRza2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19yZXBseV9za2IoYXItXHUwMDNlYWgtXHUwMDNlaHctXHUwMDNld2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTkwLVx0XHRcdFx0XHRcdDIgKiBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjA0Olx0cmV0dXJuIGNmZzgwMjExX3Rlc3Rtb2RlX3JlcGx5KHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjA1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MjA3PXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF9wcm9jZXNzX2Z0bShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjI5LVx0YXRoMTJrX2RiZyhhci1cdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyMzA6XHRcdCAgIFwmIzM0O3Rlc3Rtb2RlIGNtZCB3bWkgY21kX2lkICVkIGJ1ZiAlcCBidWZfbGVuICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIzMS1cdFx0ICAgY21kX2lkLCBidWYsIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjgxOnN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF90ZXN0bW9kZV9zdGFydChzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0zMDA9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX3dtaShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzE4LVx0aWYgKCFidWZfbGVuKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzE5Olx0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7Tm8gZGF0YSBwcmVzZW50IGluIHRlc3Rtb2RlIGNvbW1hbmRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMyMC1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMzMS1cdGF0aDEya19kYmcoYXItXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzMyOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCAgYnVmIGxlbmd0aCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMzMtXHRcdCAgIGNtZF9pZCwgYnVmX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTM0Ni1cdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjM0NzpcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zNDgtXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTM1ND1pbnQgYXRoMTJrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzg1LVx0Y2FzZSBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjM4NjpcdFx0cmV0dXJuIGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoYXIsIHRiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zODctXHRjYXNlIEFUSF9UTV9DTURfR0VUX1ZFUlNJT046XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI0LSNpbmNsdWRlIFwmIzM0Oy4uL2RlYnVnZnNfc3RhLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoyNTojaW5jbHVkZSBcJiMzNDsuLi90ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMjYtI2luY2x1ZGUgXCYjMzQ7aGFsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTI2LSNpbmNsdWRlIFwmIzM0O3AycC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjI3OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ4ODIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYXRoMTJrYCBWdWxuZXJhYmlsaXR5IFJlcG9ydCoqCgpPa2F5LCBzbyBzeXpib3QgaXMgZnV6emluZyBtYWM4MDIxMSBkcml2ZXJzIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCB3YWl0LCB0aGUgc3BlY2lmaWMgZHJpdmVyIG1lbnRpb25lZCBpbiB0aGUgcmVwb3J0LCBgYXRoMTJrYCwgaXMgZGVzaWduZWQgZm9yICpyZWFsKiBoYXJkd2FyZS4gVGhhdCYjMzk7cyBhIGJpdCBwZXJwbGV4aW5nLiBJcyB0aGVyZSBhbnkgY29uY2VpdmFibGUgd2F5IHN5emJvdCBjb3VsZCBldmVuIHJlYWNoIGBhdGgxMmtgIGluIGl0cyBjdXJyZW50IHRlc3Rpbmcgc2V0dXA/CgpUaGUgZmFjdCB0aGF0IHN5emJvdCBhcHBsaWVkIHRoZSBwYXRjaCBzdWdnZXN0cyBpdCYjMzk7cyAqdHJ5aW5nKiB0byB0ZXN0IGl0LCB3aGljaCByYWlzZXMgYSBmZXcgaW1tZWRpYXRlIHF1ZXN0aW9ucy4gVGhlIHBhdGNoIHRvdWNoZXMgZnVuY3Rpb25zIGxpa2UgYGF0aDEya19tYWNfc2Nhbl9maW5pc2hgLCBgYXRoMTJrX21hY19pbml0aWF0ZV9od19zY2FuYCwgYGF0aDEya19tYWNfb3BfaHdfc2NhbmAsIGBhdGgxMmtfbWFjX29wX2NhbmNlbF9od19zY2FuYCwgYGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWxgLCBgYXRoMTJrX21hY19vcF9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWxgLCBhbmQgYGF0aDEya19tYWNfc2V0dXBgLiBBbGwgb2YgdGhlc2UgYXJlIGNsZWFybHkgbWFjODAyMTEgb3BlcmF0aW9ucywgd2hpY2ggaXMgZW5jb3VyYWdpbmcsIGJ1dCBhZ2FpbiwgZG9lcyBzeXpib3QgaGF2ZSB0aGUgbmVjZXNzYXJ5IGhhcmR3YXJlIHRvICphY3R1YWxseSogZXhlY3V0ZSB0aG9zZT8KCkEgZGVlcGVyIGRpdmUgaXMgbmVlZGVkLiBTeXpib3QgdHlwaWNhbGx5IHJ1bnMgb24gR0NFIFZNcywgYW5kIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gdGhvc2UgZG9uJiMzOTt0IGhhdmUgdGhlIHNwZWNpZmljIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUgYGF0aDEya2AgZGVwZW5kcyBvbiDigJMgaXQgcmVxdWlyZXMgZWl0aGVyIFBDSSBvciBBSEIuIFNvLCBpdCYjMzk7cyBoaWdobHkgaW1wcm9iYWJsZSBzeXpib3QgaXMgdHJpZ2dlcmluZyB0aGlzIGFzIGEgcmVndWxhciBmdXp6aW5nIHNjZW5hcmlvLgoKQ291bGQgaXQgYmUgYSBjb21waWxlLW9ubHkgdGVzdD8gQWgsIHRoYXQgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0OyBtZXNzYWdlIG1ha2VzIG1vcmUgc2Vuc2Ugbm93LiBBIHVzZXIgc3VibWl0dGVkIHRoZSBwYXRjaCB0byBzeXpib3QgZm9yIHRlc3RpbmcuIFN5emJvdCB3aWxsIHRyeSB0byBleGVjdXRlIGl0LCBidXQgaWYgaXQgaXMgdW5yZWFjaGFibGUsIHRoZSBwYXRjaCB3aWxsIG5vdCBiZSB0ZXN0ZWQuCgpIbW0sIGlzIHRoZXJlIGV2ZW4gYSByZW1vdGUgcG9zc2liaWxpdHkgb2YgKnNvZnR3YXJlKiBlbXVsYXRpb24gZm9yIGBhdGgxMmtgIHRoYXQgc3l6Ym90IGNvdWxkIGxldmVyYWdlPyBUaW1lIHRvIGxvb2sgdGhyb3VnaCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY2AgYW5kIGBjb3JlLmNgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBvZiBzb2Z0d2FyZS1iYXNlZCBwcm9iaW5nIG9yIGVtdWxhdGlvbiBvZiB0aGUgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3BjaV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTUwNz1hdGgxMmtfZ2V0X2RldmljZV9mYW1pbHkoY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTI4OnN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUyOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xODA4PWludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MjktXHRwY2lfZHJpdmVyLVx1MDAzZWlkX3RhYmxlID0gZHJpdmVyLVx1MDAzZWlkX3RhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODMwOlx0cGNpX2RyaXZlci1cdTAwM2Vwcm9iZSA9IGF0aDEya19wY2lfcHJvYmU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MzEtXHRwY2lfZHJpdmVyLVx1MDAzZXJlbW92ZSA9IGF0aDEya19wY2lfcmVtb3ZlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTM4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgYGF0aDEya2AgVmlydHVhbGl6YXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byB0ZXN0IG9yIGRlYnVnIHRoZSBgYXRoMTJrYCBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGluaXRpYWwgYXNzdW1wdGlvbiDigJMgb3IsIHBlcmhhcHMsIHdpc2hmdWwgdGhpbmtpbmcg4oCTIHdhcyB0aGF0IHNvbWUga2luZCBvZiBlbXVsYXRpb24gbWlnaHQgZXhpc3Qgd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLiBCdXQgYWZ0ZXIgYSBxdWljayByZXZpZXcsIGl0IGxvb2tzIGxpa2UgdGhlcmUmIzM5O3Mgbm8gYnVpbHQtaW4gc29mdHdhcmUgZW11bGF0aW9uICpkaXJlY3RseSogZm9yIGBhdGgxMmtgLgoKVGhlbiBJIGNvbnNpZGVyZWQgYG1hYzgwMjExX2h3c2ltYC4gSSByZW1lbWJlciB0aGF0JiMzOTtzIGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBgbWFjODAyMTFgLCB3aGljaCBpcyB0aGUgZnJhbWV3b3JrIGBhdGgxMmtgIGxldmVyYWdlcywgYnV0IGl0JiMzOTtzIGEgY29tcGxldGVseSBzZXBhcmF0ZSBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jYCkuIEl0IGRvZXNuJiMzOTt0IGFjdHVhbGx5IGludGVyYWN0IHdpdGggYGF0aDEya2AmIzM5O3MgY29kZSBiYXNlLiBTbywgdGhhdCYjMzk7cyBhIGRlYWQgZW5kLgoKVGhpcyByZWFsaXphdGlvbiBpcyBsZWFkaW5nIG1lIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQsIGJhc2VkIG9uIHRoaXMgaW5pdGlhbCBpbnZlc3RpZ2F0aW9uLCBydW5uaW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBgYXRoMTJrYCBjb2RlIGlzIGVzc2VudGlhbGx5IGltcG9zc2libGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgZXZlbiBRRU1VIHdpdGhvdXQgc29tZSBmb3JtIG9mIFBDSSBwYXNzdGhyb3VnaCBvZiBhY3R1YWwsIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGF0JiMzOTtzIGEgaHVnZSBjb25zdHJhaW50IG9uIHRoZSB3b3JrZmxvdy4KCkxldCBtZSBqdXN0IGRvIG9uZSBsYXN0IHNhbml0eSBjaGVjayBhbmQgc2VlIGlmIHRoZXJlIGlzIGFueSB2aXJ0dWFsIGJ1cywgb3Igc29tZSBzb3J0IG9mIG1vY2sgZW52aXJvbm1lbnQgZm9yIHRoZSBkcml2ZXIsIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgaGFzIGNoYW5nZWQsIG9yIHRoZXJlJiMzOTtzIHNvbWUgb2JzY3VyZSBvcHRpb24gSSYjMzk7bSBtaXNzaW5nLiBJdCB3b3VsZCBiZSBncmVhdCBpZiB0aGVyZSB3YXMgYW4gZWFzaWVyIG1ldGhvZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX2FoYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9OTk4PWF0aDEya19haGJfZ2V0X2RldmljZV9mYW1pbHkoY29uc3Qgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEwMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjEwMTk6c3RhdGljIGludCBhdGgxMmtfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEwMjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MTE4Nz1pbnQgYXRoMTJrX2FoYl9yZWdpc3Rlcl9kcml2ZXIoY29uc3QgZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseSBkZXZpY2VfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjA4LVx0YWhiX2RyaXZlci1cdTAwM2Vkcml2ZXIub2ZfbWF0Y2hfdGFibGUgPSBkcml2ZXItXHUwMDNlaWRfdGFibGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjEyMDk6XHRhaGJfZHJpdmVyLVx1MDAzZXByb2JlICA9IGF0aDEya19haGJfcHJvYmU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEyMTAtXHRhaGJfZHJpdmVyLVx1MDAzZXJlbW92ZSA9IGF0aDEya19haGJfcmVtb3ZlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjk3OQoJCQkJCQkJb3V0cHV0OiA5NgoJCQkJCQkJdGhvdWdodHM6IDM2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGlzIHBhdGNoLCBJIHNlZSwgaXMgdGFyZ2V0ZWQgYXQgQVJNIFNvQ3MsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnLiBUaGVzZSBvZnRlbiBpbnZvbHZlIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIHRoYXQgYSB0b29sIGxpa2Ugc3l6Ym90IHVzdWFsbHkgZG9lc24mIzM5O3QgbmF0aXZlbHkgaGFuZGxlLCBjZXJ0YWlubHkgbm90IHdpdGhvdXQgdGhlIGFwcHJvcHJpYXRlIGRldmljZSB0cmVlIG5vZGVzLiBIbW0sIGNvdWxkIHN5emJvdCBzb21laG93IGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzLCBJIHdvbmRlcj8gUGVyaGFwcyB0aHJvdWdoIGBzeXpfZGV2bWVtYCBvciBhIHNpbWlsYXIgbWVjaGFuaXNtPyBCdXQgZXZlbiB0aGVuLCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBuZWVkaW5nIHRvIG1hcCBtZW1vcnkgYW5kIGhhbmRsZSBpbnRlcnJ1cHRzLCBhbmQgdGhhdCYjMzk7cyBhICp2ZXJ5KiBnZW5lcmljIHdheSBvZiBkb2luZyB0aGluZ3MuIFN5emJvdCBkb2VzbiYjMzk7dCBoYXZlIHRoZSBzb3BoaXN0aWNhdGVkIGVtdWxhdGlvbiBjYXBhYmlsaXRpZXMgcmVxdWlyZWQgZm9yIHNvbWV0aGluZyBjb21wbGV4IGxpa2UgYGF0aDEya2AuCgpXYWl0IGEgc2Vjb25kLCB3aGF0IGlmIHRoaXMgcGF0Y2ggKmlzbiYjMzk7dCogc29sZWx5IGFib3V0IGBhdGgxMmtgPyBXaGF0IGlmIGl0IGFmZmVjdHMgYG1hYzgwMjExYCBtb3JlIGJyb2FkbHksIGFuZCBgYXRoMTJrYCBpcyBqdXN0IG9uZSBzcGVjaWZpYyBkcml2ZXIgdGhhdCYjMzk7cyB0b3VjaGVkPyBBaCwgbm8sIG15IG1pc3Rha2UuIFRoZSBmaWxlIHBhdGhzIGFyZSB2ZXJ5IHNwZWNpZmljOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNgLCBgY29yZS5oYCwgYW5kIGBtYWMuY2AuIE9rYXksIHNvIGl0JiMzOTtzIHN0cmljdGx5IGBhdGgxMmtgLXNwZWNpZmljIHRoZW4uIFRoYXQgY2hhbmdlcyB0aGluZ3MuCgpTaW5jZSBgYXRoMTJrYCBpcyBleHBsaWNpdGx5IGEgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMsIGFuZCB0aGVyZSYjMzk7cyBubyBlcXVpdmFsZW50IHNvZnR3YXJlIGVtdWxhdGlvbiBpbiB0aGUga2VybmVsIGxpa2Ugd2UgaGF2ZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZrbXNgIGZvciBEUk0sIGl0JiMzOTtzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJdCAqcmVxdWlyZXMqIHRoZSBhY3R1YWwgaGFyZHdhcmUgdG8gZnVuY3Rpb24uCgpUaGVyZWZvcmUsIGFjY29yZGluZyB0byBteSB1bmRlcnN0YW5kaW5nIGFuZCBhc3Nlc3NtZW50IG9mIHRoaXMgcGF0Y2gsIGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgLgoKTGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMganVzdCB0byBiZSBzdXJlLi4uIE9rYXksIGl0IHN0YXRlczogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4mIzM0OwoKWWVzLCBgYXRoMTJrYCBpcyBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLCBsaWtlbHkgb24gUENJZSBvciBBSEIgZGV2aWNlcy4gSXQmIzM5O3Mgc2ltcGx5IG5vdCBwb3NzaWJsZSB0byByZWFjaCBpdCBpbiBHQ0UvUUVNVSwgb3IgYW55IG90aGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudC4KClNvLCBJIHdpbGwgY29uZmlybSwgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgKFBDSWUvQUhCKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHRoZSBrZXJuZWwsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgKFBDSWUvQUhCKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHRoZSBrZXJuZWwsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA1OjQ4OjA1LjM3ODczOTgzMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NzU1Mzc4NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdGhlIGtlcm5lbCwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODowNS4zNzg3NDY4NzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzQ2NjQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFlMmU1OGJkMjE3MDZjODBlZTM1OTgwMDljNmE1Yjg3YjVhMjhhNWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDU6NDg6MDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xcbmluZGV4IDc0MmQ0ZmQxYjU5OGMyLi45NTY3M2QzYmU5ZGE5NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuQEAgLTE0NjMsNyArMTQ2Myw3IEBAIHZvaWQgYXRoMTJrX2NvcmVfaGFsdChzdHJ1Y3QgYXRoMTJrICphcilcXG4gXFxuIFxcdGF0aDEya19tYWNfc2Nhbl9maW5pc2goYXIpO1xcbiBcXHRhdGgxMmtfbWFjX3BlZXJfY2xlYW51cF9hbGwoYXIpO1xcbi1cXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmFyLVxcdTAwM2VzY2FuLnRpbWVvdXQpO1xcbitcXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKGF0aDEya19hcl90b19odyhhciktXFx1MDAzZXdpcGh5LCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCk7XFxuIFxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmFyLVxcdTAwM2VyZWdkX3VwZGF0ZV93b3JrKTtcXG4gXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2YXItXFx1MDAzZXJlZ2RfY2hhbm5lbF91cGRhdGVfd29yayk7XFxuIFxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmFiLVxcdTAwM2VyZmtpbGxfd29yayk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG5pbmRleCBmYzUxMjdiNWMxYTM3Zi4uYjZmZDVlOWRmZGI3ODYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbkBAIC02MzUsMTEgKzYzNSwxMiBAQCBzdHJ1Y3QgYXRoMTJrIHtcXG4gXFx0XFx0c3RydWN0IGNvbXBsZXRpb24gc3RhcnRlZDtcXG4gXFx0XFx0c3RydWN0IGNvbXBsZXRpb24gY29tcGxldGVkO1xcbiBcXHRcXHRzdHJ1Y3QgY29tcGxldGlvbiBvbl9jaGFubmVsO1xcbi1cXHRcXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXQ7XFxuK1xcdFxcdHN0cnVjdCB3aXBoeV9kZWxheWVkX3dvcmsgdGltZW91dDtcXG4gXFx0XFx0ZW51bSBhdGgxMmtfc2Nhbl9zdGF0ZSBzdGF0ZTtcXG4gXFx0XFx0Ym9vbCBpc19yb2M7XFxuIFxcdFxcdGludCByb2NfZnJlcTtcXG4gXFx0XFx0Ym9vbCByb2Nfbm90aWZ5O1xcbitcXHRcXHRib29sIGZpbmlzaF9xdWV1ZWQ7XFxuIFxcdFxcdHN0cnVjdCB3aXBoeV93b3JrIHZkZXZfY2xlYW5fd2s7XFxuIFxcdFxcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xcbiBcXHR9IHNjYW47XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuaW5kZXggNTFjNGRmMzJlNzE2OTUuLmY1M2RmOGQ0YzgwOGE0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuQEAgLTUxNjIsNyArNTE2Miw3IEBAIHZvaWQgX19hdGgxMmtfbWFjX3NjYW5fZmluaXNoKHN0cnVjdCBhdGgxMmsgKmFyKVxcbiBcXHRcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChodyk7XFxuIFxcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHRjYXNlIEFUSDEyS19TQ0FOX1NUQVJUSU5HOlxcbi1cXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0KTtcXG4rXFx0XFx0YXItXFx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IHRydWU7XFxuIFxcdFxcdGNvbXBsZXRlX2FsbChcXHUwMDI2YXItXFx1MDAzZXNjYW4uY29tcGxldGVkKTtcXG4gXFx0XFx0d2lwaHlfd29ya19xdWV1ZShhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSwgXFx1MDAyNmFyLVxcdTAwM2VzY2FuLnZkZXZfY2xlYW5fd2spO1xcbiBcXHRcXHRicmVhaztcXG5AQCAtNTI1NCwxNCArNTI1NCwyMyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl9hYm9ydChzdHJ1Y3QgYXRoMTJrICphcilcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl90aW1lb3V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbitzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl90aW1lb3V0X3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4ge1xcbi1cXHRzdHJ1Y3QgYXRoMTJrICphciA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXRoMTJrLFxcbi1cXHRcXHRcXHRcXHRcXHQgc2Nhbi50aW1lb3V0LndvcmspO1xcbitcXHRzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrICpkd29yaztcXG4rXFx0c3RydWN0IGF0aDEyayAqYXI7XFxuK1xcbitcXHRkd29yayA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrLCB3b3JrKTtcXG4rXFx0YXIgPSBjb250YWluZXJfb2YoZHdvcmssIHN0cnVjdCBhdGgxMmssIHNjYW4udGltZW91dCk7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbitcXHRpZiAoYXItXFx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIFxcbi1cXHR3aXBoeV9sb2NrKGF0aDEya19hcl90b19odyhhciktXFx1MDAzZXdpcGh5KTtcXG4gXFx0YXRoMTJrX3NjYW5fYWJvcnQoYXIpO1xcbi1cXHR3aXBoeV91bmxvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cXHUwMDNld2lwaHkpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3NjYW5fc2VuZF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrICphcixcXG5AQCAtNTI5Miw2ICs1MzAxLDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fdmRldl9jbGVhbl93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICpcXG4gXFxuIFxcdGFydmlmID0gYXItXFx1MDAzZXNjYW4uYXJ2aWY7XFxuIFxcbitcXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKHdpcGh5LCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCk7XFxuK1xcbiBcXHQvKiBUaGUgc2NhbiB2ZGV2IGhhcyBhbHJlYWR5IGJlZW4gZGVsZXRlZC4gVGhpcyBjYW4gb2NjdXIgd2hlbiBhXFxuIFxcdCAqIG5ldyBzY2FuIHJlcXVlc3QgaXMgbWFkZSBvbiB0aGUgc2FtZSB2aWYgd2l0aCBhIGRpZmZlcmVudFxcbiBcXHQgKiBmcmVxdWVuY3ksIGNhdXNpbmcgdGhlIHNjYW4gYXJ2aWYgdG8gbW92ZSBmcm9tIG9uZSByYWRpbyB0b1xcbkBAIC01MzIzLDYgKzUzMzQsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl92ZGV2X2NsZWFuX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKlxcbiBcXHR9XFxuIFxcbiBcXHRhci1cXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XFxuK1xcdGFyLVxcdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcXG4gXFx0YXItXFx1MDAzZXNjYW5fY2hhbm5lbCA9IE5VTEw7XFxuIFxcdGFyLVxcdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbkBAIC01NjA5LDYgKzU2MjEsNyBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0cmVpbml0X2NvbXBsZXRpb24oXFx1MDAyNmFyLVxcdTAwM2VzY2FuLmNvbXBsZXRlZCk7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fU1RBUlRJTkc7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLmlzX3JvYyA9IGZhbHNlO1xcbitcXHRcXHRhci1cXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLmFydmlmID0gYXJ2aWY7XFxuIFxcdFxcdHJldCA9IDA7XFxuIFxcdFxcdGJyZWFrO1xcbkBAIC01NjY1LDYgKzU2NzgsNyBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFxuIFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTtcXG4rXFx0XFx0YXItXFx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xcbiBcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0fVxcbkBAIC01NjcyLDkgKzU2ODYsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2luaXRpYXRlX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdGF0aDEya19kYmcoYXItXFx1MDAzZWFiLCBBVEgxMktfREJHX01BQywgXFxcIm1hYyBzY2FuIHN0YXJ0ZWRcXFwiKTtcXG4gXFxuIFxcdC8qIEFkZCBhIG1hcmdpbiB0byBhY2NvdW50IGZvciBldmVudC9jb21tYW5kIHByb2Nlc3NpbmcgKi9cXG4tXFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhhdGgxMmtfYXJfdG9faHcoYXIpLCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCxcXG4tXFx0XFx0XFx0XFx0ICAgICBtc2Vjc190b19qaWZmaWVzKGFyZy1cXHUwMDNlbWF4X3NjYW5fdGltZSArXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIEFUSDEyS19NQUNfU0NBTl9USU1FT1VUX01TRUNTKSk7XFxuK1xcdHdpcGh5X2RlbGF5ZWRfd29ya19xdWV1ZShhdGgxMmtfYXJfdG9faHcoYXIpLVxcdTAwM2V3aXBoeSxcXG4rXFx0XFx0XFx0XFx0IFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0LFxcbitcXHRcXHRcXHRcXHQgbXNlY3NfdG9famlmZmllcyhhcmctXFx1MDAzZW1heF9zY2FuX3RpbWUgK1xcbitcXHRcXHRcXHRcXHRcXHRcXHQgIEFUSDEyS19NQUNfU0NBTl9USU1FT1VUX01TRUNTKSk7XFxuIFxcbiBleGl0OlxcbiBcXHRpZiAoYXJnKSB7XFxuQEAgLTU3NTcsNiArNTc3Miw3IEBAIGludCBhdGgxMmtfbWFjX29wX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIFxcdFxcdFxcdFxcdGFyLVxcdTAwM2VzY2FuLmFydmlmID0gTlVMTDtcXG4gXFx0XFx0XFx0XFx0YXItXFx1MDAzZXNjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFO1xcbitcXHRcXHRcXHRcXHRhci1cXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XFxuIFxcdFxcdFxcdFxcdGFyLVxcdTAwM2VzY2FuX2NoYW5uZWwgPSBOVUxMO1xcbiBcXHRcXHRcXHRcXHRhci1cXHUwMDNlc2Nhbi5yb2NfZnJlcSA9IDA7XFxuIFxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG5AQCAtNTc5Miw3ICs1ODA4LDcgQEAgdm9pZCBhdGgxMmtfbWFjX29wX2NhbmNlbF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXG4gXFx0XFx0YXRoMTJrX3NjYW5fYWJvcnQoYXIpO1xcbiBcXG4tXFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0KTtcXG4rXFx0XFx0d2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbChody1cXHUwMDNld2lwaHksIFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0KTtcXG4gXFx0fVxcbiB9XFxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX21hY19vcF9jYW5jZWxfaHdfc2Nhbik7XFxuQEAgLTk5MzUsNyArOTk1MSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc3RvcChzdHJ1Y3QgYXRoMTJrICphcilcXG4gXFxuIFxcdGNsZWFyX2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXFx1MDAyNmFyLVxcdTAwM2VkZXZfZmxhZ3MpO1xcbiBcXG4tXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0KTtcXG4rXFx0d2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbChhdGgxMmtfYXJfdG9faHcoYXIpLVxcdTAwM2V3aXBoeSwgXFx1MDAyNmFyLVxcdTAwM2VzY2FuLnRpbWVvdXQpO1xcbiBcXHR3aXBoeV93b3JrX2NhbmNlbChhdGgxMmtfYXJfdG9faHcoYXIpLVxcdTAwM2V3aXBoeSwgXFx1MDAyNmFyLVxcdTAwM2VzY2FuLnZkZXZfY2xlYW5fd2spO1xcbiBcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZhci1cXHUwMDNlcmVnZF9jaGFubmVsX3VwZGF0ZV93b3JrKTtcXG4gXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2YXItXFx1MDAzZXJlZ2RfdXBkYXRlX3dvcmspO1xcbkBAIC0xMDk2Miw2ICsxMDk3OCw3IEBAIHZvaWQgYXRoMTJrX21hY19vcF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRhci1cXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XFxuK1xcdFxcdFxcdGFyLVxcdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcXG4gXFx0XFx0XFx0YXItXFx1MDAzZXNjYW5fY2hhbm5lbCA9IE5VTEw7XFxuIFxcdFxcdFxcdGFyLVxcdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcXG4gXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbkBAIC0xMzg3Niw3ICsxMzg5Myw3IEBAIGludCBhdGgxMmtfbWFjX29wX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFxuIFxcdGF0aDEya19zY2FuX2Fib3J0KGFyKTtcXG4gXFxuLVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCk7XFxuK1xcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoaHctXFx1MDAzZXdpcGh5LCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCk7XFxuIFxcdHdpcGh5X3dvcmtfZmx1c2goaHctXFx1MDAzZXdpcGh5LCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udmRldl9jbGVhbl93ayk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtMTM5NTYsNiArMTM5NzMsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0cmVpbml0X2NvbXBsZXRpb24oXFx1MDAyNmFyLVxcdTAwM2VzY2FuLm9uX2NoYW5uZWwpO1xcbiBcXHRcXHRhci1cXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX1NUQVJUSU5HO1xcbiBcXHRcXHRhci1cXHUwMDNlc2Nhbi5pc19yb2MgPSB0cnVlO1xcbitcXHRcXHRhci1cXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLmFydmlmID0gYXJ2aWY7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLnJvY19mcmVxID0gY2hhbi1cXHUwMDNlY2VudGVyX2ZyZXE7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLnJvY19ub3RpZnkgPSB0cnVlO1xcbkBAIC0xMzk5OCw2ICsxNDAxNiw3IEBAIGludCBhdGgxMmtfbWFjX29wX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXG4gXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4gXFx0XFx0YXItXFx1MDAzZXNjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFO1xcbitcXHRcXHRhci1cXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XFxuIFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbkBAIC0xNDAxMSw4ICsxNDAzMCw4IEBAIGludCBhdGgxMmtfbWFjX29wX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4gXFx0fVxcbiBcXG4tXFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXFx1MDAyNmFyLVxcdTAwM2VzY2FuLnRpbWVvdXQsXFxuLVxcdFxcdFxcdFxcdCAgICAgbXNlY3NfdG9famlmZmllcyhkdXJhdGlvbikpO1xcbitcXHR3aXBoeV9kZWxheWVkX3dvcmtfcXVldWUoaHctXFx1MDAzZXdpcGh5LCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCxcXG4rXFx0XFx0XFx0XFx0IG1zZWNzX3RvX2ppZmZpZXMoZHVyYXRpb24pKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTE1MDUyLDYgKzE1MDcxLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19zZXR1cChzdHJ1Y3QgYXRoMTJrICphcilcXG4gXFx0YXItXFx1MDAzZW51bV90eF9jaGFpbnMgPSBod2VpZ2h0MzIocGRldi1cXHUwMDNlY2FwLnR4X2NoYWluX21hc2spO1xcbiBcXHRhci1cXHUwMDNlbnVtX3J4X2NoYWlucyA9IGh3ZWlnaHQzMihwZGV2LVxcdTAwM2VjYXAucnhfY2hhaW5fbWFzayk7XFxuIFxcdGFyLVxcdTAwM2VzY2FuLmFydmlmID0gTlVMTDtcXG4rXFx0YXItXFx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xcbiBcXHRhci1cXHUwMDNldmRldl9pZF8xMWRfc2NhbiA9IEFUSDEyS18xMURfSU5WQUxJRF9WREVWX0lEO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbkBAIC0xNTA3Nyw3ICsxNTA5Nyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIpXFxuIFxcdGFyLVxcdTAwM2V0aGVybWFsLnRlbXBlcmF0dXJlID0gMDtcXG4gXFx0YXItXFx1MDAzZXRoZXJtYWwuaHdtb25fZGV2ID0gTlVMTDtcXG4gXFxuLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0LCBhdGgxMmtfc2Nhbl90aW1lb3V0X3dvcmspO1xcbitcXHR3aXBoeV9kZWxheWVkX3dvcmtfaW5pdChcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCwgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKTtcXG4gXFx0d2lwaHlfd29ya19pbml0KFxcdTAwMjZhci1cXHUwMDNlc2Nhbi52ZGV2X2NsZWFuX3drLCBhdGgxMmtfc2Nhbl92ZGV2X2NsZWFuX3dvcmspO1xcbiBcXHRJTklUX1dPUksoXFx1MDAyNmFyLVxcdTAwM2VyZWdkX2NoYW5uZWxfdXBkYXRlX3dvcmssIGF0aDEya19yZWdkX3VwZGF0ZV9jaGFuX2xpc3Rfd29yayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhci1cXHUwMDNlcmVnZF9jaGFubmVsX3VwZGF0ZV9xdWV1ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA1OjQ4OjA2LjE3NzUwODI5NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5NTY1OTg1MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWUyZTU4YmQyMTcwNmM4MGVlMzU5ODAwOWM2YTViODdiNWEyOGE1ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDE3IDA1OjQ4OjAzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuaW5kZXggNzQyZDRmZDFiNTk4YzIuLjk1NjczZDNiZTlkYTk3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5AQCAtMTQ2Myw3ICsxNDYzLDcgQEAgdm9pZCBhdGgxMmtfY29yZV9oYWx0KHN0cnVjdCBhdGgxMmsgKmFyKVxuIFxuIFx0YXRoMTJrX21hY19zY2FuX2ZpbmlzaChhcik7XG4gXHRhdGgxMmtfbWFjX3BlZXJfY2xlYW51cF9hbGwoYXIpO1xuLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4rXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXJlZ2RfdXBkYXRlX3dvcmspO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VyZWdkX2NoYW5uZWxfdXBkYXRlX3dvcmspO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZhYi1cdTAwM2VyZmtpbGxfd29yayk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuaW5kZXggZmM1MTI3YjVjMWEzN2YuLmI2ZmQ1ZTlkZmRiNzg2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5AQCAtNjM1LDExICs2MzUsMTIgQEAgc3RydWN0IGF0aDEyayB7XG4gXHRcdHN0cnVjdCBjb21wbGV0aW9uIHN0YXJ0ZWQ7XG4gXHRcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRlZDtcbiBcdFx0c3RydWN0IGNvbXBsZXRpb24gb25fY2hhbm5lbDtcbi1cdFx0c3RydWN0IGRlbGF5ZWRfd29yayB0aW1lb3V0O1xuK1x0XHRzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrIHRpbWVvdXQ7XG4gXHRcdGVudW0gYXRoMTJrX3NjYW5fc3RhdGUgc3RhdGU7XG4gXHRcdGJvb2wgaXNfcm9jO1xuIFx0XHRpbnQgcm9jX2ZyZXE7XG4gXHRcdGJvb2wgcm9jX25vdGlmeTtcbitcdFx0Ym9vbCBmaW5pc2hfcXVldWVkO1xuIFx0XHRzdHJ1Y3Qgd2lwaHlfd29yayB2ZGV2X2NsZWFuX3drO1xuIFx0XHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcbiBcdH0gc2NhbjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggNTFjNGRmMzJlNzE2OTUuLmY1M2RmOGQ0YzgwOGE0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuQEAgLTUxNjIsNyArNTE2Miw3IEBAIHZvaWQgX19hdGgxMmtfbWFjX3NjYW5fZmluaXNoKHN0cnVjdCBhdGgxMmsgKmFyKVxuIFx0XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGh3KTtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEFUSDEyS19TQ0FOX1NUQVJUSU5HOlxuLVx0XHRjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4rXHRcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IHRydWU7XG4gXHRcdGNvbXBsZXRlX2FsbChcdTAwMjZhci1cdTAwM2VzY2FuLmNvbXBsZXRlZCk7XG4gXHRcdHdpcGh5X3dvcmtfcXVldWUoYXItXHUwMDNlYWgtXHUwMDNlaHctXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udmRldl9jbGVhbl93ayk7XG4gXHRcdGJyZWFrO1xuQEAgLTUyNTQsMTQgKzUyNTQsMjMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fYWJvcnQoc3RydWN0IGF0aDEyayAqYXIpXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl90aW1lb3V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3N0YXRpYyB2b2lkIGF0aDEya19zY2FuX3RpbWVvdXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuK1x0XHRcdFx0ICAgICBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbiB7XG4tXHRzdHJ1Y3QgYXRoMTJrICphciA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXRoMTJrLFxuLVx0XHRcdFx0XHQgc2Nhbi50aW1lb3V0LndvcmspO1xuK1x0c3RydWN0IHdpcGh5X2RlbGF5ZWRfd29yayAqZHdvcms7XG4rXHRzdHJ1Y3QgYXRoMTJrICphcjtcbitcbitcdGR3b3JrID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3aXBoeV9kZWxheWVkX3dvcmssIHdvcmspO1xuK1x0YXIgPSBjb250YWluZXJfb2YoZHdvcmssIHN0cnVjdCBhdGgxMmssIHNjYW4udGltZW91dCk7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbitcdGlmIChhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQpIHtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcbi1cdHdpcGh5X2xvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG4gXHRhdGgxMmtfc2Nhbl9hYm9ydChhcik7XG4tXHR3aXBoeV91bmxvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2Nhbl9zZW5kX2NvbXBsZXRlKHN0cnVjdCBhdGgxMmsgKmFyLFxuQEAgLTUyOTIsNiArNTMwMSw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19zY2FuX3ZkZXZfY2xlYW5fd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqXG4gXG4gXHRhcnZpZiA9IGFyLVx1MDAzZXNjYW4uYXJ2aWY7XG4gXG4rXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKHdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuK1xuIFx0LyogVGhlIHNjYW4gdmRldiBoYXMgYWxyZWFkeSBiZWVuIGRlbGV0ZWQuIFRoaXMgY2FuIG9jY3VyIHdoZW4gYVxuIFx0ICogbmV3IHNjYW4gcmVxdWVzdCBpcyBtYWRlIG9uIHRoZSBzYW1lIHZpZiB3aXRoIGEgZGlmZmVyZW50XG4gXHQgKiBmcmVxdWVuY3ksIGNhdXNpbmcgdGhlIHNjYW4gYXJ2aWYgdG8gbW92ZSBmcm9tIG9uZSByYWRpbyB0b1xuQEAgLTUzMjMsNiArNTMzNCw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19zY2FuX3ZkZXZfY2xlYW5fd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqXG4gXHR9XG4gXG4gXHRhci1cdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTtcbitcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0YXItXHUwMDNlc2Nhbl9jaGFubmVsID0gTlVMTDtcbiBcdGFyLVx1MDAzZXNjYW4ucm9jX2ZyZXEgPSAwO1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbkBAIC01NjA5LDYgKzU2MjEsNyBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0cmVpbml0X2NvbXBsZXRpb24oXHUwMDI2YXItXHUwMDNlc2Nhbi5jb21wbGV0ZWQpO1xuIFx0XHRhci1cdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fU1RBUlRJTkc7XG4gXHRcdGFyLVx1MDAzZXNjYW4uaXNfcm9jID0gZmFsc2U7XG4rXHRcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0XHRhci1cdTAwM2VzY2FuLmFydmlmID0gYXJ2aWY7XG4gXHRcdHJldCA9IDA7XG4gXHRcdGJyZWFrO1xuQEAgLTU2NjUsNiArNTY3OCw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19pbml0aWF0ZV9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XG4rXHRcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG5AQCAtNTY3Miw5ICs1Njg2LDEwIEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19pbml0aWF0ZV9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0YXRoMTJrX2RiZyhhci1cdTAwM2VhYiwgQVRIMTJLX0RCR19NQUMsIFwibWFjIHNjYW4gc3RhcnRlZFwiKTtcbiBcbiBcdC8qIEFkZCBhIG1hcmdpbiB0byBhY2NvdW50IGZvciBldmVudC9jb21tYW5kIHByb2Nlc3NpbmcgKi9cbi1cdGllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmsoYXRoMTJrX2FyX3RvX2h3KGFyKSwgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0LFxuLVx0XHRcdFx0ICAgICBtc2Vjc190b19qaWZmaWVzKGFyZy1cdTAwM2VtYXhfc2Nhbl90aW1lICtcbi1cdFx0XHRcdFx0XHQgICAgICBBVEgxMktfTUFDX1NDQU5fVElNRU9VVF9NU0VDUykpO1xuK1x0d2lwaHlfZGVsYXllZF93b3JrX3F1ZXVlKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHksXG4rXHRcdFx0XHQgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0LFxuK1x0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoYXJnLVx1MDAzZW1heF9zY2FuX3RpbWUgK1xuK1x0XHRcdFx0XHRcdCAgQVRIMTJLX01BQ19TQ0FOX1RJTUVPVVRfTVNFQ1MpKTtcbiBcbiBleGl0OlxuIFx0aWYgKGFyZykge1xuQEAgLTU3NTcsNiArNTc3Miw3IEBAIGludCBhdGgxMmtfbWFjX29wX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdFx0XHRcdGFyLVx1MDAzZXNjYW4uYXJ2aWYgPSBOVUxMO1xuIFx0XHRcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XG4rXHRcdFx0XHRhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcbiBcdFx0XHRcdGFyLVx1MDAzZXNjYW5fY2hhbm5lbCA9IE5VTEw7XG4gXHRcdFx0XHRhci1cdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcbiBcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG5AQCAtNTc5Miw3ICs1ODA4LDcgQEAgdm9pZCBhdGgxMmtfbWFjX29wX2NhbmNlbF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0XHRhdGgxMmtfc2Nhbl9hYm9ydChhcik7XG4gXG4tXHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuK1x0XHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKGh3LVx1MDAzZXdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuIFx0fVxuIH1cbiBFWFBPUlRfU1lNQk9MKGF0aDEya19tYWNfb3BfY2FuY2VsX2h3X3NjYW4pO1xuQEAgLTk5MzUsNyArOTk1MSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc3RvcChzdHJ1Y3QgYXRoMTJrICphcilcbiBcbiBcdGNsZWFyX2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXHUwMDI2YXItXHUwMDNlZGV2X2ZsYWdzKTtcbiBcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuK1x0d2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbChhdGgxMmtfYXJfdG9faHcoYXIpLVx1MDAzZXdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuIFx0d2lwaHlfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSwgXHUwMDI2YXItXHUwMDNlc2Nhbi52ZGV2X2NsZWFuX3drKTtcbiBcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2YXItXHUwMDNlcmVnZF9jaGFubmVsX3VwZGF0ZV93b3JrKTtcbiBcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2YXItXHUwMDNlcmVnZF91cGRhdGVfd29yayk7XG5AQCAtMTA5NjIsNiArMTA5NzgsNyBAQCB2b2lkIGF0aDEya19tYWNfb3BfcmVtb3ZlX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHR9XG4gXG4gXHRcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XG4rXHRcdFx0YXItXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XG4gXHRcdFx0YXItXHUwMDNlc2Nhbl9jaGFubmVsID0gTlVMTDtcbiBcdFx0XHRhci1cdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcbiBcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuQEAgLTEzODc2LDcgKzEzODkzLDcgQEAgaW50IGF0aDEya19tYWNfb3BfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0YXRoMTJrX3NjYW5fYWJvcnQoYXIpO1xuIFxuLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4rXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKGh3LVx1MDAzZXdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuIFx0d2lwaHlfd29ya19mbHVzaChody1cdTAwM2V3aXBoeSwgXHUwMDI2YXItXHUwMDNlc2Nhbi52ZGV2X2NsZWFuX3drKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTEzOTU2LDYgKzEzOTczLDcgQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXNjYW4ub25fY2hhbm5lbCk7XG4gXHRcdGFyLVx1MDAzZXNjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9TVEFSVElORztcbiBcdFx0YXItXHUwMDNlc2Nhbi5pc19yb2MgPSB0cnVlO1xuK1x0XHRhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5hcnZpZiA9IGFydmlmO1xuIFx0XHRhci1cdTAwM2VzY2FuLnJvY19mcmVxID0gY2hhbi1cdTAwM2VjZW50ZXJfZnJlcTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5yb2Nfbm90aWZ5ID0gdHJ1ZTtcbkBAIC0xMzk5OCw2ICsxNDAxNiw3IEBAIGludCBhdGgxMmtfbWFjX29wX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XG4rXHRcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTE0MDExLDggKzE0MDMwLDggQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdHJldHVybiAtRVRJTUVET1VUO1xuIFx0fVxuIFxuLVx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0LFxuLVx0XHRcdFx0ICAgICBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uKSk7XG4rXHR3aXBoeV9kZWxheWVkX3dvcmtfcXVldWUoaHctXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCxcbitcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uKSk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTUwNTIsNiArMTUwNzEsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3NldHVwKHN0cnVjdCBhdGgxMmsgKmFyKVxuIFx0YXItXHUwMDNlbnVtX3R4X2NoYWlucyA9IGh3ZWlnaHQzMihwZGV2LVx1MDAzZWNhcC50eF9jaGFpbl9tYXNrKTtcbiBcdGFyLVx1MDAzZW51bV9yeF9jaGFpbnMgPSBod2VpZ2h0MzIocGRldi1cdTAwM2VjYXAucnhfY2hhaW5fbWFzayk7XG4gXHRhci1cdTAwM2VzY2FuLmFydmlmID0gTlVMTDtcbitcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0YXItXHUwMDNldmRldl9pZF8xMWRfc2NhbiA9IEFUSDEyS18xMURfSU5WQUxJRF9WREVWX0lEO1xuIFxuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbkBAIC0xNTA3Nyw3ICsxNTA5Nyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIpXG4gXHRhci1cdTAwM2V0aGVybWFsLnRlbXBlcmF0dXJlID0gMDtcbiBcdGFyLVx1MDAzZXRoZXJtYWwuaHdtb25fZGV2ID0gTlVMTDtcbiBcbi1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCwgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKTtcbitcdHdpcGh5X2RlbGF5ZWRfd29ya19pbml0KFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCwgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKTtcbiBcdHdpcGh5X3dvcmtfaW5pdChcdTAwMjZhci1cdTAwM2VzY2FuLnZkZXZfY2xlYW5fd2ssIGF0aDEya19zY2FuX3ZkZXZfY2xlYW5fd29yayk7XG4gXHRJTklUX1dPUksoXHUwMDI2YXItXHUwMDNlcmVnZF9jaGFubmVsX3VwZGF0ZV93b3JrLCBhdGgxMmtfcmVnZF91cGRhdGVfY2hhbl9saXN0X3dvcmspO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YXItXHUwMDNlcmVnZF9jaGFubmVsX3VwZGF0ZV9xdWV1ZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODowNi4xNzc1MTEwMDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTM4NjQwMDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoMTJrIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgYXRoMTJrYCB3aXJlbGVzcyBkcml2ZXIsIGFuZCBpdCBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIHN0cnVjdHVyYWwgY2hhbmdlLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhYm91dCB1cGRhdGluZyB0aGUgZGVsYXllZCB3b3JrIGhhbmRsaW5nIHdpdGhpbiB0aGUgYHNjYW5gIHN0cnVjdHVyZS4gU3BlY2lmaWNhbGx5LCB0aGV5J3ZlIHN3aXRjaGVkIGZyb20gdGhlIHN0YW5kYXJkIGBzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXRgIHRvIHRoZSBgd2lwaHlgLWF3YXJlIGBzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrIHRpbWVvdXRgLCBhbmQgY29ycmVzcG9uZGluZ2x5IHJlcGxhY2VkIHRoZSBvbGRlciB3b3JrIHF1ZXVlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMgd2l0aCB0aGVpciBgd2lwaHlgIGNvdW50ZXJwYXJ0cyDigJMgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luY2AgYmVjb21lcyBgd2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbGAsIHRoZSBhc3luY2hyb25vdXMgdmVyc2lvbiBpcyBoYW5kbGVkIHdpdGggYSBmbGFnIGBhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSB0cnVlYCwgYGllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmtgIGJlY29tZXMgYHdpcGh5X2RlbGF5ZWRfd29ya19xdWV1ZWAsIGFuZCBgSU5JVF9ERUxBWUVEX1dPUktgIGlzIG5vdyBgd2lwaHlfZGVsYXllZF93b3JrX2luaXRgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjbGVhbiBtb2Rlcm5pemF0aW9uLlxuXG5Ob3csIG15IG1pbmQganVtcHMgdG8gc2VjdXJpdHkgaW1wbGljYXRpb25zLiBTaW5jZSB0aGlzIGlzIGEgZHJpdmVyLCB0aGUgYXR0YWNrIHN1cmZhY2UgaXMgb2YgcGFydGljdWxhciBpbnRlcmVzdC4gSXMgYGF0aDEya2AgZXZlbiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXQncyBhIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgUENJZS9BSEIsIHdoaWNoIG1lYW5zIGRpcmVjdCBoYXJkd2FyZSBhY2Nlc3MgaXMgbGlrZWx5IGludm9sdmVkLiBXYWl0LCBjYW4gd2UgZnV6eiBpdD8gSSBhbSB1c2VkIHRvIGZ1enppbmcgdmFyaW91cyBkcml2ZXJzLiBIYXJkd2FyZSBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gZnV6eiBkaXJlY3RseSwgYnV0IHRoZXJlIGFyZSBzb21lIHdvcmthcm91bmRzLiBJIG5lZWQgdG8ga25vdyB0aGUgdHlwZSBvZiBkcml2ZXIuIEVtdWxhdGlvbiBsYXllcnMsIFVTQiBkcml2ZXJzIHdpdGggZHVtbXkgSENEcywgb3IgYG1hYzgwMjExX2h3c2ltYCBhcmUgdHlwaWNhbCBhdmVudWVzLCBidXQgaXQgbG9va3MgbGlrZSBgYXRoMTJrYCBpcyBhIFBDSS9BSEIgZHJpdmVyLiBTbyBub3csIEknbSB0aGlua2luZyBhYm91dCBlbXVsYXRpb24uIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZW11bGF0aW9uIGZvciBgYXRoMTJrYC5cblxuSSB3aWxsIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRoZSBMaW51eCBzb3VyY2UgdHJlZSBmb3IgYW55IG1lbnRpb24gb2YgYGF0aDEya2AgdG8gc2VlIHdoYXQgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE1NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA1OjQ4OjEyLjMxNjE1NDE1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjUwMjEyNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzQ5NTIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0yPWNvbmZpZyBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzpcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTU6XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTJrLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MTc9Y29uZmlnIEFUSDEyS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTg6XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOS1cXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBSRU1PVEVQUk9DXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MjU9Y29uZmlnIEFUSDEyS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNjpcXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNy1cXHRkZXBlbmRzIG9uIEFUSDEyS1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTM1PWNvbmZpZyBBVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNjpcXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNy1cXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mzk6XFx0ICBFbmFibGUgYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz00ND1jb25maWcgQVRIMTJLX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDU6XFx0Ym9vbCBcXFwiYXRoMTJrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDYtXFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgRVZFTlRfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00Ny1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ4OlxcdCAgRW5hYmxlIGF0aDEyayB0cmFjaW5nIGluZnJhc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz01Mz1jb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjU0OlxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTUtXFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01Ny1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjU4OlxcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfQVRIMTJLKSArPSBhdGgxMmsub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzphdGgxMmsteSArPSBjb3JlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtNC1cXHQgICAgaGFsLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI1OmF0aDEyay0kKENPTkZJR19BVEgxMktfQUhCKSArPSBhaGIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZT0yNz1vYmotJChDT05GSUdfQVRIMTJLKSArPSB3aWZpNy9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6Mjk6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19ERUJVR0ZTKSArPSBkZWJ1Z2ZzLm8gZGVidWdmc19odHRfc3RhdHMubyBkZWJ1Z2ZzX3N0YS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMDphdGgxMmstJChDT05GSUdfQUNQSSkgKz0gYWNwaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMTphdGgxMmstJChDT05GSUdfQVRIMTJLX1RSQUNJTkcpICs9IHRyYWNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMyOmF0aDEyay0kKENPTkZJR19QTSkgKz0gd293Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMzOmF0aDEyay0kKENPTkZJR19BVEgxMktfQ09SRURVTVApICs9IGNvcmVkdW1wLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM0OmF0aDEyay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozNTphdGgxMmstJChDT05GSUdfVEhFUk1BTCkgKz0gdGhlcm1hbC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjExOnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGludCBmdW5jKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4LVxcdGlmICghcm9vdF9oYW5kbGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTpcXHRcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFxcXCJpbnZhbGlkIGFjcGkgaGFuZGxlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjYtXFx0aWYgKCFvYmopIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNzpcXHRcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFxcXCJhY3BpX2V2YWx1YXRlX2RzbSgpIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjgtXFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00Ni1cXHRcXHRcXHRcXHQgICBBVEgxMktfQUNQSV9CREZfQU5DSE9SX1NUUklOR19MRU4pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDc6XFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgRFNNIEJERiBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00OC1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VzdHJpbmcubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTYyLVxcdFxcdFxcdCAgICBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggXFx1MDAzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19NQVhfQklUTUFQX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo2MzpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gZnVuYyBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy02NC1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTc1LVxcdFxcdFxcdGlmIChvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX1RBU19DRkdfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjc2OlxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBUQVMgY29uZmlnIHNpemU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTc3LVxcdFxcdFxcdFxcdFxcdCAgICBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtODctXFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fVEFTX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjg4OlxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBUQVMgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy04OS1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTk5LVxcdFxcdFxcdGlmIChvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX0JJT1NfU0FSX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEwMDpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBCSU9TIFNBUiBkYXRhIHNpemU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEwMS1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTExMS1cXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9HRU9fT0ZGU0VUX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjExMjpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBHRU8gT0ZGU0VUIGRhdGEgc2l6ZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTEzLVxcdFxcdFxcdFxcdFxcdCAgICBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTIzLVxcdFxcdFxcdGlmIChvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX0NDQV9EQVRBX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMjQ6XFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgRFNNIENDQSBkYXRhIHNpemU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyNS1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEzNS1cXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9CQU5EX0VER0VfREFUQV9TSVpFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTM2OlxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBiYW5kIGVkZ2UgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzctXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNDctXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNDg6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJBQ1BJIERTTSBtZXRob2QgcmV0dXJuZWQgYW4gdW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE0OS1cXHRcXHRcXHQgICAgb2JqLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNjE6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfcG93ZXJfbGltaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTY3LVxcdCAgICB0YXNfc2FyX3Bvd2VyX3RhYmxlWzFdICE9IEFUSDEyS19BQ1BJX1RBU19EQVRBX0VOQUJMRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE2ODpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImxhdGVzdCBBQ1BJIFRBUyBkYXRhIGlzIGludmFsaWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNzI6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsIFdNSV9CSU9TX1BBUkFNX1RBU19EQVRBX1RZUEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTczLVxcdFxcdFxcdFxcdCAgICAgIHRhc19zYXJfcG93ZXJfdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE3NjpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGRhdGEgdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE3Ny1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE4MzpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9iaW9zX3Nhcl9wb3dlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODgtXFx0ICAgIGFiLVxcdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGFbMV0gIT0gQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfRU5BQkxFX0ZMQUcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxODk6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIGxhdGVzdCBBQ1BJIEJJT1MgU0FSIGRhdGFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE5MC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTM6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19zYXJfY21kKGFiLCBhYi1cXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTQtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE5NTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZXQgQUNQSSBCSU9TIFNBUiB0YWJsZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTk2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjAyOnN0YXRpYyB2b2lkIGF0aDEya19hY3BpX2RzbV9ub3RpZnkoYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgZXZlbnQsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDQtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMDU6XFx0c3RydWN0IGF0aDEya19iYXNlICphYiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwNy1cXHRpZiAoZXZlbnQgPT0gQVRIMTJLX0FDUElfTk9USUZZX0VWRU5UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjA4OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwidW5rbm93biBhY3BpIG5vdGlmeSAldVxcXFxuXFxcIiwgZXZlbnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwOS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTItXFx0aWYgKCFhYi1cXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTM6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcXFwiYWNwaV90YXNfZW5hYmxlIGlzIGZhbHNlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIxNzpcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTgtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIxOTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byB1cGRhdGUgQUNQSSBUQVMgZGF0YSB0YWJsZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjIwLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMjM6XFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X3Bvd2VyX2xpbWl0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjQtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIyNTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZXQgQUNQSSBUQVMgcG93ZXIgbGltaXQgZGF0YTogJWRcXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIyNi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjMyOlxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzMy1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjM0OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHVwZGF0ZSBCSU9TIFNBUjogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjM1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMzg6XFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3Bvd2VyKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzktXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI0MDpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZXQgQklPUyBTQVIgcG93ZXIgbGltaXQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI0MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjQ1OnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3BhcmFtcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjQ5OlxcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3Nfc2FyX2NtZChhYiwgYWItXFx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjUwLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNTE6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBTQVIgdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI1NTpcXHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2dlb19jbWQoYWIsIGFiLVxcdTAwM2VhY3BpLmdlb19vZmZzZXRfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjU2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNTc6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBHRU8gdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1OC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI2NDpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF90YXNfcGFyYW1zKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNjg6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsIFdNSV9CSU9TX1BBUkFNX1RBU19DT05GSUdfVFlQRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjktXFx0XFx0XFx0XFx0ICAgICAgYWItXFx1MDAzZWFjcGkudGFzX2NmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3MS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjcyOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgY29uZmlnIHRhYmxlIHBhcmFtZXRlcjogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjczLVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3NzpcXHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYiwgV01JX0JJT1NfUEFSQU1fVEFTX0RBVEFfVFlQRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNzgtXFx0XFx0XFx0XFx0ICAgICAgYWItXFx1MDAzZWFjcGkudGFzX3Nhcl9wb3dlcl90YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4MC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjgxOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgZGF0YSB0YWJsZSBwYXJhbWV0ZXI6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4Mi1cXHRcXHRcXHQgICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyODk6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI5NDpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlXzExYmUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI5OTp2b2lkIGF0aDEya19hY3BpX3NldF9kc21fZnVuYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMDgtXFx0aWYgKGFiLVxcdTAwM2VhY3BpLmFjcGlfdGFzX2VuYWJsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMwOTpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9zZXRfdGFzX3BhcmFtcyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzEwLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMTE6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2VuZCBBQ1BJIFRBUyBwYXJhbWV0ZXJzOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMTItXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzE2LVxcdGlmIChhYi1cXHUwMDNlYWNwaS5hY3BpX2Jpb3Nfc2FyX2VuYWJsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMxNzpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9zZXRfYmlvc19zYXJfcGFyYW1zKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMTgtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMxOTpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZW5kIEFDUEkgQklPUyBTQVI6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyMC1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjUtXFx0XFx0YnVmID0gYWItXFx1MDAzZWFjcGkuY2NhX2RhdGEgKyBBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMjY6XFx0XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzI3LVxcdFxcdFxcdFxcdFxcdCAgICAgIFdNSV9CSU9TX1BBUkFNX0NDQV9USFJFU0hPTERfVFlQRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMzMC1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzMxOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNldCBBQ1BJIERTTSBDQ0EgdGhyZXNob2xkOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzItXFx0XFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzctXFx0aWYgKGFiLVxcdTAwM2VhY3BpLmFjcGlfYmFuZF9lZGdlX2VuYWJsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMzODpcXHRcXHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzktXFx0XFx0XFx0XFx0XFx0ICAgICAgV01JX0JJT1NfUEFSQU1fVFlQRV9CQU5ERURHRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM0Mi1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzQzOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM0NC1cXHRcXHRcXHRcXHQgICAgXFxcImZhaWxlZCB0byBzZXQgQUNQSSBEU00gYmFuZCBlZGdlIGNoYW5uZWwgcG93ZXI6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM1MTppbnQgYXRoMTJrX2FjcGlfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM2OTpcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1NVUFBPUlRfRlVOQ1MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3MC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzcxOlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBEU00gZGF0YTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzcyLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzUtXFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9ESVNBQkxFX0ZMQUcpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mzc2OlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfRElTQUJMRV9GTEFHKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzctXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3ODpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBESVNBQkxFIEZMQUc6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3OS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkxLVxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfQkRGX0VYVCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozOTI6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19CREZfRVhUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zOTMtXFx0XFx0aWYgKHJldCB8fCBhYi1cXHUwMDNlYWNwaS5iZGZfc3RyaW5nWzBdID09ICdcXFxcMCcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozOTQ6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgQkRGIEVYVDogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzk1LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDEtXFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9UQVNfQ0ZHKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQwMjpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19DRkcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwMy1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDA0OlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBBQ1BJIFRBUyBjb25maWcgdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwNS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDA5LVxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0RBVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDEwOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0RBVEEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQxMS1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDEyOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBBQ1BJIFRBUyBkYXRhIHRhYmxlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTMtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQyMi1cXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JJT1NfU0FSKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMzpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjQtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyNTpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBiaW9zIHNhciBkYXRhOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjYtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzMC1cXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0dFT19PRkZTRVQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDMxOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfR0VPX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDMyLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MzM6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgZ2VvIG9mZnNldCBkYXRhOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MzQtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0NC1cXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0NDQSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NDU6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9DQ0EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0Ni1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDQ3OlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBBQ1BJIERTTSBDQ0EgdGhyZXNob2xkIGNvbmZpZ3VyYXRpb246ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0OC1cXHRcXHRcXHRcXHQgICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ1OS1cXHRcXHRcXHRcXHQgICAgICAgQVRIMTJLX0FDUElfRlVOQ19CSVRfQkFORF9FREdFX0NIQU5fUE9XRVIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDYwOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQkFORF9FREdFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjEtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2MjpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBEU00gYmFuZCBlZGdlIGNoYW5uZWwgcG93ZXI6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ2My1cXHRcXHRcXHRcXHQgICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ3My1cXHRcXHRcXHRcXHRcXHQgICAgIEFDUElfREVWSUNFX05PVElGWSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NzQ6XFx0XFx0XFx0XFx0XFx0ICAgICBhdGgxMmtfYWNwaV9kc21fbm90aWZ5LCBhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDc1LVxcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ3NjpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBpbnN0YWxsIERTTSBub3RpZnkgY2FsbGJhY2s6ICVkXFxcXG5cXFwiLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ3Ny1cXHRcXHRyZXR1cm4gLUVJTztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0ODU6aW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDkyLVxcdGlmIChzdHJzY3B5KGFiLVxcdTAwM2VxbWkudGFyZ2V0LmJkZl9leHQsIGFiLVxcdTAwM2VhY3BpLmJkZl9zdHJpbmcgKyA0LCBtYXhfbGVuKSBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDkzOlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00OTQtXFx0XFx0XFx0ICAgXFxcImFjcGkgYmRmIHZhcmlhbnQgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlciAodmFyaWFudDogJXMpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjUwMDp2b2lkIGF0aDEya19hY3BpX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy01MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNTA2LVxcdFxcdFxcdFxcdCAgIEFDUElfREVWSUNFX05PVElGWSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo1MDc6XFx0XFx0XFx0XFx0ICAgYXRoMTJrX2FjcGlfZHNtX25vdGlmeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNTA4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzU6aW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc2OnZvaWQgYXRoMTJrX2FjcGlfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3Nzpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlX3Jma2lsbChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3ODpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlXzExYmUoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Nzk6dm9pZCBhdGgxMmtfYWNwaV9zZXRfZHNtX2Z1bmMoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6ODA6aW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo4NDpzdGF0aWMgaW5saW5lIGludCBhdGgxMmtfYWNwaV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjg5OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfYWNwaV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6OTM6c3RhdGljIGlubGluZSBib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlX3Jma2lsbChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjk4OnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV8xMWJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjEwMzpzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2FjcGlfc2V0X2RzbV9mdW5jKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMDc6c3RhdGljIGlubGluZSBpbnQgYXRoMTJrX2FjcGlfY2hlY2tfYmRmX3ZhcmlhbnRfbmFtZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjM6c3RhdGljIHN0cnVjdCBhdGgxMmtfYWhiX2RyaXZlciAqYXRoMTJrX2FoYl9mYW1pbHlfZHJpdmVyc1tBVEgxMktfREVWSUNFX0ZBTUlMWV9NQVhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjQ6c3RhdGljIGNvbnN0IGNoYXIgYXRoMTJrX3VzZXJwZF9pcnFbXVs5XSA9IHtcXFwic3Bhd25cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjUtXFx0XFx0XFx0XFx0ICAgICBcXFwicmVhZHlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz04ND1lbnVtIGV4dF9pcnFfbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTI0OnN0YXRpYyB1MzIgYXRoMTJrX2FoYl9yZWFkMzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEyNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjEzMTpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3dyaXRlMzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIG9mZnNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEzMi1cXHRcXHRcXHQgICAgICAgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNDA6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jYW5jZWxfd29ya3F1ZXVlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDQtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWNlX2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE0NTpcXHRcXHRzdHJ1Y3QgYXRoMTJrX2NlX3BpcGUgKmNlX3BpcGUgPSBcXHUwMDI2YWItXFx1MDAzZWNlLmNlX3BpcGVbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNDc6XFx0XFx0aWYgKGF0aDEya19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQ4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNTQ6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9leHRfZ3JwX2Rpc2FibGUoc3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE1NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE2MjpzdGF0aWMgdm9pZCBfX2F0aDEya19haGJfZXh0X2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE2NzpcXHRcXHRzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXFx1MDAyNmFiLVxcdTAwM2VleHRfaXJxX2dycFtpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE2OTpcXHRcXHRhdGgxMmtfYWhiX2V4dF9ncnBfZGlzYWJsZShpcnFfZ3JwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE3MC1cXHRcXHRpZiAoaXJxX2dycC1cXHUwMDNlbmFwaV9lbmFibGVkKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE3ODpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9ncnBfZW5hYmxlKHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxODY6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9zZXRiaXQzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1OCBiaXQsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTA6XFx0dmFsID0gYXRoMTJrX2FoYl9yZWFkMzIoYWIsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTE6XFx0YXRoMTJrX2FoYl93cml0ZTMyKGFiLCBvZmZzZXQsIHZhbCB8IEJJVChiaXQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTQ6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jbGVhcmJpdDMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHU4IGJpdCwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5ODpcXHR2YWwgPSBhdGgxMmtfYWhiX3JlYWQzMihhYiwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5OTpcXHRhdGgxMmtfYWhiX3dyaXRlMzIoYWIsIG9mZnNldCwgdmFsIFxcdTAwMjYgfkJJVChiaXQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIwMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMDI6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUxNiBjZV9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxMy1cXHRpZiAoY2VfYXR0ci1cXHUwMDNlc3JjX25lbnRyaWVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE0OlxcdFxcdGF0aDEya19haGJfc2V0Yml0MzIoYWIsIGNlX2lkLCBpZTFfcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjE2LVxcdGlmIChjZV9hdHRyLVxcdTAwM2VkZXN0X25lbnRyaWVzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMTc6XFx0XFx0YXRoMTJrX2FoYl9zZXRiaXQzMihhYiwgY2VfaWQsIGllMl9yZWdfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMTg6XFx0XFx0YXRoMTJrX2FoYl9zZXRiaXQzMihhYiwgY2VfaWQgKyBDRV9IT1NUX0lFXzNfU0hJRlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMTktXFx0XFx0XFx0XFx0ICAgIGllM19yZWdfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIyMzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2NlX2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUxNiBjZV9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIzNC1cXHRpZiAoY2VfYXR0ci1cXHUwMDNlc3JjX25lbnRyaWVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjM1OlxcdFxcdGF0aDEya19haGJfY2xlYXJiaXQzMihhYiwgY2VfaWQsIGllMV9yZWdfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMzctXFx0aWYgKGNlX2F0dHItXFx1MDAzZWRlc3RfbmVudHJpZXMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzODpcXHRcXHRhdGgxMmtfYWhiX2NsZWFyYml0MzIoYWIsIGNlX2lkLCBpZTJfcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjM5OlxcdFxcdGF0aDEya19haGJfY2xlYXJiaXQzMihhYiwgY2VfaWQgKyBDRV9IT1NUX0lFXzNfU0hJRlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDAtXFx0XFx0XFx0XFx0ICAgICAgaWUzX3JlZ19hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjQ0OnN0YXRpYyB2b2lkIGF0aDEya19haGJfc3luY19jZV9pcnFzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWNlX2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI1MDpcXHRcXHRpZiAoYXRoMTJrX2NlX2dldF9hdHRyX2ZsYWdzKGFiLCBpKSBcXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTEtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI1ODpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfZXh0X2lycXMoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI2My1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjY0OlxcdFxcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcXHUwMDI2YWItXFx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjY1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNzM6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFzX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjc3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VjZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNzg6XFx0XFx0aWYgKGF0aDEya19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjc5LVxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjgwOlxcdFxcdGF0aDEya19haGJfY2VfaXJxX2VuYWJsZShhYiwgaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyODQ6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFzX2Rpc2FibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI4NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI4OC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlY2VfY291bnQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjg5OlxcdFxcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFxcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5MC1cXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI5MTpcXHRcXHRhdGgxMmtfYWhiX2NlX2lycV9kaXNhYmxlKGFiLCBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI5NTpzdGF0aWMgaW50IGF0aDEya19haGJfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTc6XFx0YXRoMTJrX2FoYl9jZV9pcnFzX2VuYWJsZShhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTg6XFx0YXRoMTJrX2NlX3J4X3Bvc3RfYnVmKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzAzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfZXh0X2lycV9lbmFibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTMwNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozMDU6XFx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTMwNi1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzEzLVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjMxNDpcXHRcXHRhdGgxMmtfYWhiX2V4dF9ncnBfZW5hYmxlKGlycV9ncnApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzE1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzE4OnN0YXRpYyB2b2lkIGF0aDEya19haGJfZXh0X2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMTkte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODoxMi41ODExODY4MDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTI0NDM4ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgU3l6Ym90J3MgSW50ZXJhY3Rpb24gd2l0aCB0aGUgYXRoMTJrIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZSBgYXRoMTJrYCBkcml2ZXIgaGFzIHRocmVlIGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYENPTkZJR19BVEgxMktfQUhCYCwgYENPTkZJR19BVEgxMktgLCBhbmQgYENPTkZJR19BVEgxMktfUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlzIHRoZXJlIHNvbWUga2luZCBvZiBlbXVsYXRpb24gc2V0dXAgZm9yIGBhdGgxMmtgPyBJdCdzIG5vdCBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHVzdWFsbHkgc2ltdWxhdGVzIGEgbW9yZSBnZW5lcmljIG1hYzgwMjExIGRldmljZSwgbm90IHNwZWNpZmljYWxseSBgYXRoMTJrYC4gV2FpdCwgc3l6Ym90IGZvdW5kIGEgYnVnIGluIHRoaXM/IEludHJpZ3VpbmcuIExldCdzIHNlZSBpZiBzeXpib3QgZXZlbiBpbmNsdWRlcyBgYXRoMTJrYCBpbiBpdHMgZnV6emluZyB0YXJnZXRzLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLCB0aGlzIGNvbW1pdCBtZXNzYWdlIHNheXMgXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIiBhbmQgdGhlIGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYC4gVGhhdCBtZWFucyBzeXpib3QgKmlzKiB0ZXN0aW5nIGEgcGF0Y2ggcmVsYXRlZCB0byBgYXRoMTJrYC4gQnV0IGhvdz8gSG93IGlzIHN5emJvdCBpbnRlcmFjdGluZyB3aXRoIHRoaXMgZHJpdmVyPyBHaXZlbiB0aGF0IGBhdGgxMmtgIGlzIGEgUENJL0FIQiBkcml2ZXIsIGlzIGl0IGZ1enplZCB2aWEgc29tZSB2aXJ0dWFsIGJ1cyBvciBwZXJoYXBzIGl0J3MgYSBVU0IgZHJpdmVyPyBUaGUgdGhvdWdodCBpcywgc3l6a2FsbGVyIG1pZ2h0IGJlIHVzaW5nIGl0cyB2aXJ0dWFsIFBDSSBidXMgKGB2aGNpYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbm8gd2FpdCwgYHZoY2lgIGlzIGZvciBVU0IpLiBEb2VzIHN5emthbGxlciBoYXZlIGB2ZmlvYCBvciBldmVuIGRpcmVjdCBQQ0kgZnV6emluZz8gQWN0dWFsbHksIEkgcmVtZW1iZXIgYG1hYzgwMjExX2h3c2ltYCB3aGljaCBpcyBmb3IgdGhlIGBtYWM4MDIxMWAgZnJhbWV3b3JrLlxuXG5BaGEhIE1heWJlIHN5emthbGxlciBpcyBmdXp6aW5nIGBhdGgxMmtgIGluZGlyZWN0bHkgdmlhIGBubDgwMjExYCB0ZXN0bW9kZT8gVGhhdCdzIHBsYXVzaWJsZS4gTGV0J3MgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuY2AgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNsdWVzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDY4NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODoxOS4xMDU2MjgyNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEzNTcyMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdG1vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZT0zMz1hdGgxMmstJChDT05GSUdfQVRIMTJLX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozNDphdGgxMmstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzUtYXRoMTJrLSQoQ09ORklHX1RIRVJNQUwpICs9IHRoZXJtYWwub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNy0jaW5jbHVkZSBcXFwiZHBfcnguaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE4OiNpbmNsdWRlIFxcXCJ0ZXN0bW9kZS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTktI2luY2x1ZGUgXFxcInBlZXIuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo3OiNpbmNsdWRlIFxcXCJ0ZXN0bW9kZS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04LSNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0bGluay5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEzLSNpbmNsdWRlIFxcXCJoaWYuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTQ6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rtb2RlX2kuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9NDU9dm9pZCBhdGgxMmtfdG1fd21pX2V2ZW50X3Vuc2VnbWVudGVkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBjbWRfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTEtXFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTI6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiIGxlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTMtXFx0XFx0ICAgY21kX2lkLCBza2ItXFx1MDAzZWxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTgtXFx0aWYgKCFhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo1OTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInRlc3Rtb2RlIGV2ZW50IG5vdCBoYW5kbGVkIGR1ZSB0byBpbnZhbGlkIHBkZXZcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjY1OlxcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzItXFx0XFx0YXRoMTJrX3dhcm4oYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjczOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdW5zZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTc5LVxcdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgc2tiLVxcdTAwM2VsZW4sIHNrYi1cXHUwMDNlZGF0YSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODA6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgdW5zZWdtZW50ZWQgZXZlbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04MS1cXHRcXHRrZnJlZV9za2Iobmxfc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODU6XFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtODYtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTg4PXZvaWQgYXRoMTJrX3RtX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy05OS1cXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMDA6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgZnRtIGV2ZW50IG1zZyAlcCBkYXRhbGVuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMDEtXFx0XFx0ICAgY21kX2lkLCBmdG1fbXNnLCBsZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEwNS1cXHRpZiAocGRldl9pZCBcXHUwMDNlPSBhYi1cXHUwMDNlbnVtX3JhZGlvcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMDY6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2IGlkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTItXFx0aWYgKCFhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMTM6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gYWJzZW5jZSBvZiBwZGV2XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTE0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNTMtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTU0OlxcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTU1LVxcdFxcdFxcdFxcdFxcdFxcdCAgIDIgKiBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2MS1cXHRcXHRhdGgxMmtfd2FybihhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTYyOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTYzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzAtXFx0XFx0ICAgIFxcdTAwMjZhYi1cXHUwMDNlZnRtX2V2ZW50X29iai5ldmVudGRhdGFbMF0pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE3MTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBwb3B1bGF0ZSB0ZXN0bW9kZSBldmVudFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzItXFx0XFx0a2ZyZWVfc2tiKG5sX3NrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzY6XFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTc3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0xNzk9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4My1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTg0OlxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBjbWQgZ2V0IHZlcnNpb25fbWFqb3IgJWQgdmVyc2lvbl9taW5vciAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTg1LVxcdFxcdCAgIEFUSF9URVNUTU9ERV9WRVJTSU9OX01BSk9SLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4OC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxODk6XFx0c2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfcmVwbHlfc2tiKGFyLVxcdTAwM2VhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xOTAtXFx0XFx0XFx0XFx0XFx0XFx0MiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyMDQ6XFx0cmV0dXJuIGNmZzgwMjExX3Rlc3Rtb2RlX3JlcGx5KHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIwNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MjA3PXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF9wcm9jZXNzX2Z0bShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMjktXFx0YXRoMTJrX2RiZyhhci1cXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjIzMDpcXHRcXHQgICBcXFwidGVzdG1vZGUgY21kIHdtaSBjbWRfaWQgJWQgYnVmICVwIGJ1Zl9sZW4gJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIzMS1cXHRcXHQgICBjbWRfaWQsIGJ1ZiwgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyODE6c3RhdGljIGludCBhdGgxMmtfdG1fY21kX3Rlc3Rtb2RlX3N0YXJ0KHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTMwMD1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfd21pKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMxOC1cXHRpZiAoIWJ1Zl9sZW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzE5OlxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcIk5vIGRhdGEgcHJlc2VudCBpbiB0ZXN0bW9kZSBjb21tYW5kXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzIwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMzMS1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzMyOlxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCAgYnVmIGxlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzMzLVxcdFxcdCAgIGNtZF9pZCwgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzQ2LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzQ3OlxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzQ4LVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTM1ND1pbnQgYXRoMTJrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zODUtXFx0Y2FzZSBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozODY6XFx0XFx0cmV0dXJuIGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoYXIsIHRiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzg3LVxcdGNhc2UgQVRIX1RNX0NNRF9HRVRfVkVSU0lPTjpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0yNC0jaW5jbHVkZSBcXFwiLi4vZGVidWdmc19zdGEuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MjU6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI2LSNpbmNsdWRlIFxcXCJoYWwuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMjYtI2luY2x1ZGUgXFxcInAycC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6Mjc6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDU6NDg6MTkuMjg2OTk4MDc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwODExNDk5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBhdGgxMmtgIFZ1bG5lcmFiaWxpdHkgUmVwb3J0KipcblxuT2theSwgc28gc3l6Ym90IGlzIGZ1enppbmcgbWFjODAyMTEgZHJpdmVycyB1c2luZyBgbWFjODAyMTFfaHdzaW1gLiBCdXQgd2FpdCwgdGhlIHNwZWNpZmljIGRyaXZlciBtZW50aW9uZWQgaW4gdGhlIHJlcG9ydCwgYGF0aDEya2AsIGlzIGRlc2lnbmVkIGZvciAqcmVhbCogaGFyZHdhcmUuIFRoYXQncyBhIGJpdCBwZXJwbGV4aW5nLiBJcyB0aGVyZSBhbnkgY29uY2VpdmFibGUgd2F5IHN5emJvdCBjb3VsZCBldmVuIHJlYWNoIGBhdGgxMmtgIGluIGl0cyBjdXJyZW50IHRlc3Rpbmcgc2V0dXA/XG5cblRoZSBmYWN0IHRoYXQgc3l6Ym90IGFwcGxpZWQgdGhlIHBhdGNoIHN1Z2dlc3RzIGl0J3MgKnRyeWluZyogdG8gdGVzdCBpdCwgd2hpY2ggcmFpc2VzIGEgZmV3IGltbWVkaWF0ZSBxdWVzdGlvbnMuIFRoZSBwYXRjaCB0b3VjaGVzIGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfbWFjX3NjYW5fZmluaXNoYCwgYGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbmAsIGBhdGgxMmtfbWFjX29wX2h3X3NjYW5gLCBgYXRoMTJrX21hY19vcF9jYW5jZWxfaHdfc2NhbmAsIGBhdGgxMmtfbWFjX29wX3JlbWFpbl9vbl9jaGFubmVsYCwgYGF0aDEya19tYWNfb3BfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsYCwgYW5kIGBhdGgxMmtfbWFjX3NldHVwYC4gQWxsIG9mIHRoZXNlIGFyZSBjbGVhcmx5IG1hYzgwMjExIG9wZXJhdGlvbnMsIHdoaWNoIGlzIGVuY291cmFnaW5nLCBidXQgYWdhaW4sIGRvZXMgc3l6Ym90IGhhdmUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSB0byAqYWN0dWFsbHkqIGV4ZWN1dGUgdGhvc2U/XG5cbkEgZGVlcGVyIGRpdmUgaXMgbmVlZGVkLiBTeXpib3QgdHlwaWNhbGx5IHJ1bnMgb24gR0NFIFZNcywgYW5kIEknbSBwcmV0dHkgY2VydGFpbiB0aG9zZSBkb24ndCBoYXZlIHRoZSBzcGVjaWZpYyBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIGBhdGgxMmtgIGRlcGVuZHMgb24g4oCTIGl0IHJlcXVpcmVzIGVpdGhlciBQQ0kgb3IgQUhCLiBTbywgaXQncyBoaWdobHkgaW1wcm9iYWJsZSBzeXpib3QgaXMgdHJpZ2dlcmluZyB0aGlzIGFzIGEgcmVndWxhciBmdXp6aW5nIHNjZW5hcmlvLlxuXG5Db3VsZCBpdCBiZSBhIGNvbXBpbGUtb25seSB0ZXN0PyBBaCwgdGhhdCBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiIG1lc3NhZ2UgbWFrZXMgbW9yZSBzZW5zZSBub3cuIEEgdXNlciBzdWJtaXR0ZWQgdGhlIHBhdGNoIHRvIHN5emJvdCBmb3IgdGVzdGluZy4gU3l6Ym90IHdpbGwgdHJ5IHRvIGV4ZWN1dGUgaXQsIGJ1dCBpZiBpdCBpcyB1bnJlYWNoYWJsZSwgdGhlIHBhdGNoIHdpbGwgbm90IGJlIHRlc3RlZC5cblxuSG1tLCBpcyB0aGVyZSBldmVuIGEgcmVtb3RlIHBvc3NpYmlsaXR5IG9mICpzb2Z0d2FyZSogZW11bGF0aW9uIGZvciBgYXRoMTJrYCB0aGF0IHN5emJvdCBjb3VsZCBsZXZlcmFnZT8gVGltZSB0byBsb29rIHRocm91Z2ggYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmNgIGFuZCBgY29yZS5jYCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgb2Ygc29mdHdhcmUtYmFzZWQgcHJvYmluZyBvciBlbXVsYXRpb24gb2YgdGhlIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg4MiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODoyNi43OTUxMTYwOTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzOTA2Mjk5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfcGNpX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTUwNz1hdGgxMmtfZ2V0X2RldmljZV9mYW1pbHkoY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTI4OnN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MjktXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xODA4PWludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTgyOS1cXHRwY2lfZHJpdmVyLVxcdTAwM2VpZF90YWJsZSA9IGRyaXZlci1cXHUwMDNlaWRfdGFibGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODMwOlxcdHBjaV9kcml2ZXItXFx1MDAzZXByb2JlID0gYXRoMTJrX3BjaV9wcm9iZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MzEtXFx0cGNpX2RyaXZlci1cXHUwMDNlcmVtb3ZlID0gYXRoMTJrX3BjaV9yZW1vdmU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA1OjQ4OjI5LjAzNDE5MDg3N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3OTEwNzM0MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBgYXRoMTJrYCBWaXJ0dWFsaXphdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byB0ZXN0IG9yIGRlYnVnIHRoZSBgYXRoMTJrYCBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGluaXRpYWwgYXNzdW1wdGlvbiDigJMgb3IsIHBlcmhhcHMsIHdpc2hmdWwgdGhpbmtpbmcg4oCTIHdhcyB0aGF0IHNvbWUga2luZCBvZiBlbXVsYXRpb24gbWlnaHQgZXhpc3Qgd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLiBCdXQgYWZ0ZXIgYSBxdWljayByZXZpZXcsIGl0IGxvb2tzIGxpa2UgdGhlcmUncyBubyBidWlsdC1pbiBzb2Z0d2FyZSBlbXVsYXRpb24gKmRpcmVjdGx5KiBmb3IgYGF0aDEya2AuXG5cblRoZW4gSSBjb25zaWRlcmVkIGBtYWM4MDIxMV9od3NpbWAuIEkgcmVtZW1iZXIgdGhhdCdzIGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBgbWFjODAyMTFgLCB3aGljaCBpcyB0aGUgZnJhbWV3b3JrIGBhdGgxMmtgIGxldmVyYWdlcywgYnV0IGl0J3MgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmNgKS4gSXQgZG9lc24ndCBhY3R1YWxseSBpbnRlcmFjdCB3aXRoIGBhdGgxMmtgJ3MgY29kZSBiYXNlLiBTbywgdGhhdCdzIGEgZGVhZCBlbmQuXG5cblRoaXMgcmVhbGl6YXRpb24gaXMgbGVhZGluZyBtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0LCBiYXNlZCBvbiB0aGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiwgcnVubmluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgYGF0aDEya2AgY29kZSBpcyBlc3NlbnRpYWxseSBpbXBvc3NpYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIGV2ZW4gUUVNVSB3aXRob3V0IHNvbWUgZm9ybSBvZiBQQ0kgcGFzc3Rocm91Z2ggb2YgYWN0dWFsLCBwaHlzaWNhbCBoYXJkd2FyZS4gVGhhdCdzIGEgaHVnZSBjb25zdHJhaW50IG9uIHRoZSB3b3JrZmxvdy5cblxuTGV0IG1lIGp1c3QgZG8gb25lIGxhc3Qgc2FuaXR5IGNoZWNrIGFuZCBzZWUgaWYgdGhlcmUgaXMgYW55IHZpcnR1YWwgYnVzLCBvciBzb21lIHNvcnQgb2YgbW9jayBlbnZpcm9ubWVudCBmb3IgdGhlIGRyaXZlciwganVzdCBpbiBjYXNlIHNvbWV0aGluZyBoYXMgY2hhbmdlZCwgb3IgdGhlcmUncyBzb21lIG9ic2N1cmUgb3B0aW9uIEknbSBtaXNzaW5nLiBJdCB3b3VsZCBiZSBncmVhdCBpZiB0aGVyZSB3YXMgYW4gZWFzaWVyIG1ldGhvZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYxMzgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDU6NDg6MzMuODI1MjY3Mzg5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTk2NTE2NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX2FoYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTk5OD1hdGgxMmtfYWhiX2dldF9kZXZpY2VfZmFtaWx5KGNvbnN0IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEwMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMDE5OnN0YXRpYyBpbnQgYXRoMTJrX2FoYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTAyMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTExODc9aW50IGF0aDEya19haGJfcmVnaXN0ZXJfZHJpdmVyKGNvbnN0IGVudW0gYXRoMTJrX2RldmljZV9mYW1pbHkgZGV2aWNlX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjA4LVxcdGFoYl9kcml2ZXItXFx1MDAzZWRyaXZlci5vZl9tYXRjaF90YWJsZSA9IGRyaXZlci1cXHUwMDNlaWRfdGFibGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMjA5OlxcdGFoYl9kcml2ZXItXFx1MDAzZXByb2JlICA9IGF0aDEya19haGJfcHJvYmU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjEwLVxcdGFoYl9kcml2ZXItXFx1MDAzZXJlbW92ZSA9IGF0aDEya19haGJfcmVtb3ZlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODozNC42MjQ5MzUwNDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwOTA5NjYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBwYXRjaCwgSSBzZWUsIGlzIHRhcmdldGVkIGF0IEFSTSBTb0NzLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZy4gVGhlc2Ugb2Z0ZW4gaW52b2x2ZSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50cyB0aGF0IGEgdG9vbCBsaWtlIHN5emJvdCB1c3VhbGx5IGRvZXNuJ3QgbmF0aXZlbHkgaGFuZGxlLCBjZXJ0YWlubHkgbm90IHdpdGhvdXQgdGhlIGFwcHJvcHJpYXRlIGRldmljZSB0cmVlIG5vZGVzLiBIbW0sIGNvdWxkIHN5emJvdCBzb21laG93IGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzLCBJIHdvbmRlcj8gUGVyaGFwcyB0aHJvdWdoIGBzeXpfZGV2bWVtYCBvciBhIHNpbWlsYXIgbWVjaGFuaXNtPyBCdXQgZXZlbiB0aGVuLCB3ZSdyZSB0YWxraW5nIGFib3V0IG5lZWRpbmcgdG8gbWFwIG1lbW9yeSBhbmQgaGFuZGxlIGludGVycnVwdHMsIGFuZCB0aGF0J3MgYSAqdmVyeSogZ2VuZXJpYyB3YXkgb2YgZG9pbmcgdGhpbmdzLiBTeXpib3QgZG9lc24ndCBoYXZlIHRoZSBzb3BoaXN0aWNhdGVkIGVtdWxhdGlvbiBjYXBhYmlsaXRpZXMgcmVxdWlyZWQgZm9yIHNvbWV0aGluZyBjb21wbGV4IGxpa2UgYGF0aDEya2AuXG5cbldhaXQgYSBzZWNvbmQsIHdoYXQgaWYgdGhpcyBwYXRjaCAqaXNuJ3QqIHNvbGVseSBhYm91dCBgYXRoMTJrYD8gV2hhdCBpZiBpdCBhZmZlY3RzIGBtYWM4MDIxMWAgbW9yZSBicm9hZGx5LCBhbmQgYGF0aDEya2AgaXMganVzdCBvbmUgc3BlY2lmaWMgZHJpdmVyIHRoYXQncyB0b3VjaGVkPyBBaCwgbm8sIG15IG1pc3Rha2UuIFRoZSBmaWxlIHBhdGhzIGFyZSB2ZXJ5IHNwZWNpZmljOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNgLCBgY29yZS5oYCwgYW5kIGBtYWMuY2AuIE9rYXksIHNvIGl0J3Mgc3RyaWN0bHkgYGF0aDEya2Atc3BlY2lmaWMgdGhlbi4gVGhhdCBjaGFuZ2VzIHRoaW5ncy5cblxuU2luY2UgYGF0aDEya2AgaXMgZXhwbGljaXRseSBhIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLCBhbmQgdGhlcmUncyBubyBlcXVpdmFsZW50IHNvZnR3YXJlIGVtdWxhdGlvbiBpbiB0aGUga2VybmVsIGxpa2Ugd2UgaGF2ZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZrbXNgIGZvciBEUk0sIGl0J3MgaW5oZXJlbnRseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0ICpyZXF1aXJlcyogdGhlIGFjdHVhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi5cblxuVGhlcmVmb3JlLCBhY2NvcmRpbmcgdG8gbXkgdW5kZXJzdGFuZGluZyBhbmQgYXNzZXNzbWVudCBvZiB0aGlzIHBhdGNoLCBgV29ydGhGdXp6aW5nYCBoYXMgdG8gYmUgYGZhbHNlYC5cblxuTGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMganVzdCB0byBiZSBzdXJlLi4uIE9rYXksIGl0IHN0YXRlczogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS5cIlxuXG5ZZXMsIGBhdGgxMmtgIGlzIGEgcmVhbCBoYXJkd2FyZSBkcml2ZXIsIGxpa2VseSBvbiBQQ0llIG9yIEFIQiBkZXZpY2VzLiBJdCdzIHNpbXBseSBub3QgcG9zc2libGUgdG8gcmVhY2ggaXQgaW4gR0NFL1FFTVUsIG9yIGFueSBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQuXG5cblNvLCBJIHdpbGwgY29uZmlybSwgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTc5LCJPdXRwdXRUb2tlbnMiOjk2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA1OjQ4OjQyLjEzNDAzNDcxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcwvr8[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-17 05:19:56 +0000 UTC FinishedAt: 2026-07-17 05:48:43 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "AI determined the patch has no functional impact", "targets": null, "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA1OjQ4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBhZTJlNThiZDIxNzA2YzgwZWUzNTk4MDA5YzZhNWI4N2I1YTI4YTVkXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDU6NDg6MDMgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuaW5kZXggNzQyZDRmZDFiNTk4YzIuLjk1NjczZDNiZTlkYTk3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5AQCAtMTQ2Myw3ICYjNDM7MTQ2Myw3IEBAIHZvaWQgYXRoMTJrX2NvcmVfaGFsdChzdHJ1Y3QgYXRoMTJrICphcilcbiBcbiBcdGF0aDEya19tYWNfc2Nhbl9maW5pc2goYXIpO1xuIFx0YXRoMTJrX21hY19wZWVyX2NsZWFudXBfYWxsKGFyKTtcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuJiM0MztcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSwgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0KTtcbiBcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2YXItXHUwMDNlcmVnZF91cGRhdGVfd29yayk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXJlZ2RfY2hhbm5lbF91cGRhdGVfd29yayk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFiLVx1MDAzZXJma2lsbF93b3JrKTtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5pbmRleCBmYzUxMjdiNWMxYTM3Zi4uYjZmZDVlOWRmZGI3ODYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbkBAIC02MzUsMTEgJiM0Mzs2MzUsMTIgQEAgc3RydWN0IGF0aDEyayB7XG4gXHRcdHN0cnVjdCBjb21wbGV0aW9uIHN0YXJ0ZWQ7XG4gXHRcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRlZDtcbiBcdFx0c3RydWN0IGNvbXBsZXRpb24gb25fY2hhbm5lbDtcbi1cdFx0c3RydWN0IGRlbGF5ZWRfd29yayB0aW1lb3V0O1xuJiM0MztcdFx0c3RydWN0IHdpcGh5X2RlbGF5ZWRfd29yayB0aW1lb3V0O1xuIFx0XHRlbnVtIGF0aDEya19zY2FuX3N0YXRlIHN0YXRlO1xuIFx0XHRib29sIGlzX3JvYztcbiBcdFx0aW50IHJvY19mcmVxO1xuIFx0XHRib29sIHJvY19ub3RpZnk7XG4mIzQzO1x0XHRib29sIGZpbmlzaF9xdWV1ZWQ7XG4gXHRcdHN0cnVjdCB3aXBoeV93b3JrIHZkZXZfY2xlYW5fd2s7XG4gXHRcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xuIFx0fSBzY2FuO1xuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5pbmRleCA1MWM0ZGYzMmU3MTY5NS4uZjUzZGY4ZDRjODA4YTQgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXG5AQCAtNTE2Miw3ICYjNDM7NTE2Miw3IEBAIHZvaWQgX19hdGgxMmtfbWFjX3NjYW5fZmluaXNoKHN0cnVjdCBhdGgxMmsgKmFyKVxuIFx0XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGh3KTtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEFUSDEyS19TQ0FOX1NUQVJUSU5HOlxuLVx0XHRjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4mIzQzO1x0XHRhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSB0cnVlO1xuIFx0XHRjb21wbGV0ZV9hbGwoXHUwMDI2YXItXHUwMDNlc2Nhbi5jb21wbGV0ZWQpO1xuIFx0XHR3aXBoeV93b3JrX3F1ZXVlKGFyLVx1MDAzZWFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnZkZXZfY2xlYW5fd2spO1xuIFx0XHRicmVhaztcbkBAIC01MjU0LDE0ICYjNDM7NTI1NCwyMyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl9hYm9ydChzdHJ1Y3QgYXRoMTJrICphcilcbiBcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4gfVxuIFxuLXN0YXRpYyB2b2lkIGF0aDEya19zY2FuX3RpbWVvdXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXG4mIzQzO3N0YXRpYyB2b2lkIGF0aDEya19zY2FuX3RpbWVvdXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuJiM0MztcdFx0XHRcdCAgICAgc3RydWN0IHdpcGh5X3dvcmsgKndvcmspXG4ge1xuLVx0c3RydWN0IGF0aDEyayAqYXIgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IGF0aDEyayxcbi1cdFx0XHRcdFx0IHNjYW4udGltZW91dC53b3JrKTtcbiYjNDM7XHRzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrICpkd29yaztcbiYjNDM7XHRzdHJ1Y3QgYXRoMTJrICphcjtcbiYjNDM7XG4mIzQzO1x0ZHdvcmsgPSBjb250YWluZXJfb2Yod29yaywgc3RydWN0IHdpcGh5X2RlbGF5ZWRfd29yaywgd29yayk7XG4mIzQzO1x0YXIgPSBjb250YWluZXJfb2YoZHdvcmssIHN0cnVjdCBhdGgxMmssIHNjYW4udGltZW91dCk7XG4mIzQzO1xuJiM0MztcdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuJiM0MztcdGlmIChhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQpIHtcbiYjNDM7XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1x0fVxuJiM0MztcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG4gXG4tXHR3aXBoeV9sb2NrKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHkpO1xuIFx0YXRoMTJrX3NjYW5fYWJvcnQoYXIpO1xuLVx0d2lwaHlfdW5sb2NrKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHkpO1xuIH1cbiBcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3NjYW5fc2VuZF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrICphcixcbkBAIC01MjkyLDYgJiM0Mzs1MzAxLDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fdmRldl9jbGVhbl93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICpcbiBcbiBcdGFydmlmID0gYXItXHUwMDNlc2Nhbi5hcnZpZjtcbiBcbiYjNDM7XHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKHdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuJiM0MztcbiBcdC8qIFRoZSBzY2FuIHZkZXYgaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkLiBUaGlzIGNhbiBvY2N1ciB3aGVuIGFcbiBcdCAqIG5ldyBzY2FuIHJlcXVlc3QgaXMgbWFkZSBvbiB0aGUgc2FtZSB2aWYgd2l0aCBhIGRpZmZlcmVudFxuIFx0ICogZnJlcXVlbmN5LCBjYXVzaW5nIHRoZSBzY2FuIGFydmlmIHRvIG1vdmUgZnJvbSBvbmUgcmFkaW8gdG9cbkBAIC01MzIzLDYgJiM0Mzs1MzM0LDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fdmRldl9jbGVhbl93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICpcbiBcdH1cbiBcbiBcdGFyLVx1MDAzZXNjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFO1xuJiM0MztcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0YXItXHUwMDNlc2Nhbl9jaGFubmVsID0gTlVMTDtcbiBcdGFyLVx1MDAzZXNjYW4ucm9jX2ZyZXEgPSAwO1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbkBAIC01NjA5LDYgJiM0Mzs1NjIxLDcgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2luaXRpYXRlX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXNjYW4uY29tcGxldGVkKTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX1NUQVJUSU5HO1xuIFx0XHRhci1cdTAwM2VzY2FuLmlzX3JvYyA9IGZhbHNlO1xuJiM0MztcdFx0YXItXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XG4gXHRcdGFyLVx1MDAzZXNjYW4uYXJ2aWYgPSBhcnZpZjtcbiBcdFx0cmV0ID0gMDtcbiBcdFx0YnJlYWs7XG5AQCAtNTY2NSw2ICYjNDM7NTY3OCw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19pbml0aWF0ZV9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XG4mIzQzO1x0XHRhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcbiBcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdFx0Z290byBleGl0O1xuIFx0fVxuQEAgLTU2NzIsOSAmIzQzOzU2ODYsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2luaXRpYXRlX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRhdGgxMmtfZGJnKGFyLVx1MDAzZWFiLCBBVEgxMktfREJHX01BQywgXCYjMzQ7bWFjIHNjYW4gc3RhcnRlZFwmIzM0Oyk7XG4gXG4gXHQvKiBBZGQgYSBtYXJnaW4gdG8gYWNjb3VudCBmb3IgZXZlbnQvY29tbWFuZCBwcm9jZXNzaW5nICovXG4tXHRpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGF0aDEya19hcl90b19odyhhciksIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCxcbi1cdFx0XHRcdCAgICAgbXNlY3NfdG9famlmZmllcyhhcmctXHUwMDNlbWF4X3NjYW5fdGltZSAmIzQzO1xuLVx0XHRcdFx0XHRcdCAgICAgIEFUSDEyS19NQUNfU0NBTl9USU1FT1VUX01TRUNTKSk7XG4mIzQzO1x0d2lwaHlfZGVsYXllZF93b3JrX3F1ZXVlKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHksXG4mIzQzO1x0XHRcdFx0IFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCxcbiYjNDM7XHRcdFx0XHQgbXNlY3NfdG9famlmZmllcyhhcmctXHUwMDNlbWF4X3NjYW5fdGltZSAmIzQzO1xuJiM0MztcdFx0XHRcdFx0XHQgIEFUSDEyS19NQUNfU0NBTl9USU1FT1VUX01TRUNTKSk7XG4gXG4gZXhpdDpcbiBcdGlmIChhcmcpIHtcbkBAIC01NzU3LDYgJiM0Mzs1NzcyLDcgQEAgaW50IGF0aDEya19tYWNfb3BfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHRcdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIFx0XHRcdFx0YXItXHUwMDNlc2Nhbi5hcnZpZiA9IE5VTEw7XG4gXHRcdFx0XHRhci1cdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTtcbiYjNDM7XHRcdFx0XHRhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcbiBcdFx0XHRcdGFyLVx1MDAzZXNjYW5fY2hhbm5lbCA9IE5VTEw7XG4gXHRcdFx0XHRhci1cdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcbiBcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG5AQCAtNTc5Miw3ICYjNDM7NTgwOCw3IEBAIHZvaWQgYXRoMTJrX21hY19vcF9jYW5jZWxfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBcdFx0YXRoMTJrX3NjYW5fYWJvcnQoYXIpO1xuIFxuLVx0XHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0KTtcbiYjNDM7XHRcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoaHctXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4gXHR9XG4gfVxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX21hY19vcF9jYW5jZWxfaHdfc2Nhbik7XG5AQCAtOTkzNSw3ICYjNDM7OTk1MSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc3RvcChzdHJ1Y3QgYXRoMTJrICphcilcbiBcbiBcdGNsZWFyX2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXHUwMDI2YXItXHUwMDNlZGV2X2ZsYWdzKTtcbiBcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuJiM0MztcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSwgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0KTtcbiBcdHdpcGh5X3dvcmtfY2FuY2VsKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udmRldl9jbGVhbl93ayk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXJlZ2RfY2hhbm5lbF91cGRhdGVfd29yayk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXJlZ2RfdXBkYXRlX3dvcmspO1xuQEAgLTEwOTYyLDYgJiM0MzsxMDk3OCw3IEBAIHZvaWQgYXRoMTJrX21hY19vcF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdH1cbiBcbiBcdFx0XHRhci1cdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTtcbiYjNDM7XHRcdFx0YXItXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XG4gXHRcdFx0YXItXHUwMDNlc2Nhbl9jaGFubmVsID0gTlVMTDtcbiBcdFx0XHRhci1cdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcbiBcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuQEAgLTEzODc2LDcgJiM0MzsxMzg5Myw3IEBAIGludCBhdGgxMmtfbWFjX29wX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcbiBcdGF0aDEya19zY2FuX2Fib3J0KGFyKTtcbiBcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuJiM0MztcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoaHctXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4gXHR3aXBoeV93b3JrX2ZsdXNoKGh3LVx1MDAzZXdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnZkZXZfY2xlYW5fd2spO1xuIFxuIFx0cmV0dXJuIDA7XG5AQCAtMTM5NTYsNiAmIzQzOzEzOTczLDcgQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXNjYW4ub25fY2hhbm5lbCk7XG4gXHRcdGFyLVx1MDAzZXNjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9TVEFSVElORztcbiBcdFx0YXItXHUwMDNlc2Nhbi5pc19yb2MgPSB0cnVlO1xuJiM0MztcdFx0YXItXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XG4gXHRcdGFyLVx1MDAzZXNjYW4uYXJ2aWYgPSBhcnZpZjtcbiBcdFx0YXItXHUwMDNlc2Nhbi5yb2NfZnJlcSA9IGNoYW4tXHUwMDNlY2VudGVyX2ZyZXE7XG4gXHRcdGFyLVx1MDAzZXNjYW4ucm9jX25vdGlmeSA9IHRydWU7XG5AQCAtMTM5OTgsNiAmIzQzOzE0MDE2LDcgQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXG4gXHRcdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIFx0XHRhci1cdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTtcbiYjNDM7XHRcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTE0MDExLDggJiM0MzsxNDAzMCw4IEBAIGludCBhdGgxMmtfbWFjX29wX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRyZXR1cm4gLUVUSU1FRE9VVDtcbiBcdH1cbiBcbi1cdGllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmsoaHcsIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCxcbi1cdFx0XHRcdCAgICAgbXNlY3NfdG9famlmZmllcyhkdXJhdGlvbikpO1xuJiM0MztcdHdpcGh5X2RlbGF5ZWRfd29ya19xdWV1ZShody1cdTAwM2V3aXBoeSwgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0LFxuJiM0MztcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uKSk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTUwNTIsNiAmIzQzOzE1MDcxLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19zZXR1cChzdHJ1Y3QgYXRoMTJrICphcilcbiBcdGFyLVx1MDAzZW51bV90eF9jaGFpbnMgPSBod2VpZ2h0MzIocGRldi1cdTAwM2VjYXAudHhfY2hhaW5fbWFzayk7XG4gXHRhci1cdTAwM2VudW1fcnhfY2hhaW5zID0gaHdlaWdodDMyKHBkZXYtXHUwMDNlY2FwLnJ4X2NoYWluX21hc2spO1xuIFx0YXItXHUwMDNlc2Nhbi5hcnZpZiA9IE5VTEw7XG4mIzQzO1x0YXItXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XG4gXHRhci1cdTAwM2V2ZGV2X2lkXzExZF9zY2FuID0gQVRIMTJLXzExRF9JTlZBTElEX1ZERVZfSUQ7XG4gXG4gXHRzcGluX2xvY2tfaW5pdChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuQEAgLTE1MDc3LDcgJiM0MzsxNTA5Nyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIpXG4gXHRhci1cdTAwM2V0aGVybWFsLnRlbXBlcmF0dXJlID0gMDtcbiBcdGFyLVx1MDAzZXRoZXJtYWwuaHdtb25fZGV2ID0gTlVMTDtcbiBcbi1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCwgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKTtcbiYjNDM7XHR3aXBoeV9kZWxheWVkX3dvcmtfaW5pdChcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQsIGF0aDEya19zY2FuX3RpbWVvdXRfd29yayk7XG4gXHR3aXBoeV93b3JrX2luaXQoXHUwMDI2YXItXHUwMDNlc2Nhbi52ZGV2X2NsZWFuX3drLCBhdGgxMmtfc2Nhbl92ZGV2X2NsZWFuX3dvcmspO1xuIFx0SU5JVF9XT1JLKFx1MDAyNmFyLVx1MDAzZXJlZ2RfY2hhbm5lbF91cGRhdGVfd29yaywgYXRoMTJrX3JlZ2RfdXBkYXRlX2NoYW5fbGlzdF93b3JrKTtcbiBcdElOSVRfTElTVF9IRUFEKFx1MDAyNmFyLVx1MDAzZXJlZ2RfY2hhbm5lbF91cGRhdGVfcXVldWUpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA1OjQ4PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0CiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSwKICAgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGFlMmU1OGJkMjE3MDZjODBlZTM1OTgwMDljNmE1Yjg3YjVhMjhhNWQKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgRnJpIEp1bCAxNyAwNTo0ODowMyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMKaW5kZXggNzQyZDRmZDFiNTk4YzIuLjk1NjczZDNiZTlkYTk3IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuYwpAQCAtMTQ2Myw3ICYjNDM7MTQ2Myw3IEBAIHZvaWQgYXRoMTJrX2NvcmVfaGFsdChzdHJ1Y3QgYXRoMTJrICphcikKIAogCWF0aDEya19tYWNfc2Nhbl9maW5pc2goYXIpOwogCWF0aDEya19tYWNfcGVlcl9jbGVhbnVwX2FsbChhcik7Ci0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7YXItJmd0O3NjYW4udGltZW91dCk7CiYjNDM7CXdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS0mZ3Q7d2lwaHksICZhbXA7YXItJmd0O3NjYW4udGltZW91dCk7CiAJY2FuY2VsX3dvcmtfc3luYygmYW1wO2FyLSZndDtyZWdkX3VwZGF0ZV93b3JrKTsKIAljYW5jZWxfd29ya19zeW5jKCZhbXA7YXItJmd0O3JlZ2RfY2hhbm5lbF91cGRhdGVfd29yayk7CiAJY2FuY2VsX3dvcmtfc3luYygmYW1wO2FiLSZndDtyZmtpbGxfd29yayk7CmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaCBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oCmluZGV4IGZjNTEyN2I1YzFhMzdmLi5iNmZkNWU5ZGZkYjc4NiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmgKQEAgLTYzNSwxMSAmIzQzOzYzNSwxMiBAQCBzdHJ1Y3QgYXRoMTJrIHsKIAkJc3RydWN0IGNvbXBsZXRpb24gc3RhcnRlZDsKIAkJc3RydWN0IGNvbXBsZXRpb24gY29tcGxldGVkOwogCQlzdHJ1Y3QgY29tcGxldGlvbiBvbl9jaGFubmVsOwotCQlzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXQ7CiYjNDM7CQlzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrIHRpbWVvdXQ7CiAJCWVudW0gYXRoMTJrX3NjYW5fc3RhdGUgc3RhdGU7CiAJCWJvb2wgaXNfcm9jOwogCQlpbnQgcm9jX2ZyZXE7CiAJCWJvb2wgcm9jX25vdGlmeTsKJiM0MzsJCWJvb2wgZmluaXNoX3F1ZXVlZDsKIAkJc3RydWN0IHdpcGh5X3dvcmsgdmRldl9jbGVhbl93azsKIAkJc3RydWN0IGF0aDEya19saW5rX3ZpZiAqYXJ2aWY7CiAJfSBzY2FuOwpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKaW5kZXggNTFjNGRmMzJlNzE2OTUuLmY1M2RmOGQ0YzgwOGE0IDEwMDY0NAotLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMKQEAgLTUxNjIsNyAmIzQzOzUxNjIsNyBAQCB2b2lkIF9fYXRoMTJrX21hY19zY2FuX2ZpbmlzaChzdHJ1Y3QgYXRoMTJrICphcikKIAkJCWllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGh3KTsKIAkJZmFsbHRocm91Z2g7CiAJY2FzZSBBVEgxMktfU0NBTl9TVEFSVElORzoKLQkJY2FuY2VsX2RlbGF5ZWRfd29yaygmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQpOwomIzQzOwkJYXItJmd0O3NjYW4uZmluaXNoX3F1ZXVlZCA9IHRydWU7CiAJCWNvbXBsZXRlX2FsbCgmYW1wO2FyLSZndDtzY2FuLmNvbXBsZXRlZCk7CiAJCXdpcGh5X3dvcmtfcXVldWUoYXItJmd0O2FoLSZndDtody0mZ3Q7d2lwaHksICZhbXA7YXItJmd0O3NjYW4udmRldl9jbGVhbl93ayk7CiAJCWJyZWFrOwpAQCAtNTI1NCwxNCAmIzQzOzUyNTQsMjMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fYWJvcnQoc3RydWN0IGF0aDEyayAqYXIpCiAJc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKIH0KIAotc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykKJiM0MztzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl90aW1lb3V0X3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwKJiM0MzsJCQkJICAgICBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaykKIHsKLQlzdHJ1Y3QgYXRoMTJrICphciA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXRoMTJrLAotCQkJCQkgc2Nhbi50aW1lb3V0LndvcmspOwomIzQzOwlzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrICpkd29yazsKJiM0MzsJc3RydWN0IGF0aDEyayAqYXI7CiYjNDM7CiYjNDM7CWR3b3JrID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3aXBoeV9kZWxheWVkX3dvcmssIHdvcmspOwomIzQzOwlhciA9IGNvbnRhaW5lcl9vZihkd29yaywgc3RydWN0IGF0aDEyaywgc2Nhbi50aW1lb3V0KTsKJiM0MzsKJiM0MzsJc3Bpbl9sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CiYjNDM7CWlmIChhci0mZ3Q7c2Nhbi5maW5pc2hfcXVldWVkKSB7CiYjNDM7CQlzcGluX3VubG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwomIzQzOwkJcmV0dXJuOwomIzQzOwl9CiYjNDM7CXNwaW5fdW5sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CiAKLQl3aXBoeV9sb2NrKGF0aDEya19hcl90b19odyhhciktJmd0O3dpcGh5KTsKIAlhdGgxMmtfc2Nhbl9hYm9ydChhcik7Ci0Jd2lwaHlfdW5sb2NrKGF0aDEya19hcl90b19odyhhciktJmd0O3dpcGh5KTsKIH0KIAogc3RhdGljIHZvaWQgYXRoMTJrX21hY19zY2FuX3NlbmRfY29tcGxldGUoc3RydWN0IGF0aDEyayAqYXIsCkBAIC01MjkyLDYgJiM0Mzs1MzAxLDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fdmRldl9jbGVhbl93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICoKIAogCWFydmlmID0gYXItJmd0O3NjYW4uYXJ2aWY7CiAKJiM0MzsJd2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbCh3aXBoeSwgJmFtcDthci0mZ3Q7c2Nhbi50aW1lb3V0KTsKJiM0MzsKIAkvKiBUaGUgc2NhbiB2ZGV2IGhhcyBhbHJlYWR5IGJlZW4gZGVsZXRlZC4gVGhpcyBjYW4gb2NjdXIgd2hlbiBhCiAJICogbmV3IHNjYW4gcmVxdWVzdCBpcyBtYWRlIG9uIHRoZSBzYW1lIHZpZiB3aXRoIGEgZGlmZmVyZW50CiAJICogZnJlcXVlbmN5LCBjYXVzaW5nIHRoZSBzY2FuIGFydmlmIHRvIG1vdmUgZnJvbSBvbmUgcmFkaW8gdG8KQEAgLTUzMjMsNiAmIzQzOzUzMzQsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl92ZGV2X2NsZWFuX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKgogCX0KIAogCWFyLSZndDtzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTsKJiM0MzsJYXItJmd0O3NjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlOwogCWFyLSZndDtzY2FuX2NoYW5uZWwgPSBOVUxMOwogCWFyLSZndDtzY2FuLnJvY19mcmVxID0gMDsKIAlzcGluX3VubG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwpAQCAtNTYwOSw2ICYjNDM7NTYyMSw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19pbml0aWF0ZV9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCQlyZWluaXRfY29tcGxldGlvbigmYW1wO2FyLSZndDtzY2FuLmNvbXBsZXRlZCk7CiAJCWFyLSZndDtzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fU1RBUlRJTkc7CiAJCWFyLSZndDtzY2FuLmlzX3JvYyA9IGZhbHNlOwomIzQzOwkJYXItJmd0O3NjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlOwogCQlhci0mZ3Q7c2Nhbi5hcnZpZiA9IGFydmlmOwogCQlyZXQgPSAwOwogCQlicmVhazsKQEAgLTU2NjUsNiAmIzQzOzU2NzgsNyBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAogCQlzcGluX2xvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKIAkJYXItJmd0O3NjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFOwomIzQzOwkJYXItJmd0O3NjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlOwogCQlzcGluX3VubG9ja19iaCgmYW1wO2FyLSZndDtkYXRhX2xvY2spOwogCQlnb3RvIGV4aXQ7CiAJfQpAQCAtNTY3Miw5ICYjNDM7NTY4NiwxMCBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAlhdGgxMmtfZGJnKGFyLSZndDthYiwgQVRIMTJLX0RCR19NQUMsICYjMzQ7bWFjIHNjYW4gc3RhcnRlZCYjMzQ7KTsKIAogCS8qIEFkZCBhIG1hcmdpbiB0byBhY2NvdW50IGZvciBldmVudC9jb21tYW5kIHByb2Nlc3NpbmcgKi8KLQlpZWVlODAyMTFfcXVldWVfZGVsYXllZF93b3JrKGF0aDEya19hcl90b19odyhhciksICZhbXA7YXItJmd0O3NjYW4udGltZW91dCwKLQkJCQkgICAgIG1zZWNzX3RvX2ppZmZpZXMoYXJnLSZndDttYXhfc2Nhbl90aW1lICYjNDM7Ci0JCQkJCQkgICAgICBBVEgxMktfTUFDX1NDQU5fVElNRU9VVF9NU0VDUykpOwomIzQzOwl3aXBoeV9kZWxheWVkX3dvcmtfcXVldWUoYXRoMTJrX2FyX3RvX2h3KGFyKS0mZ3Q7d2lwaHksCiYjNDM7CQkJCSAmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQsCiYjNDM7CQkJCSBtc2Vjc190b19qaWZmaWVzKGFyZy0mZ3Q7bWF4X3NjYW5fdGltZSAmIzQzOwomIzQzOwkJCQkJCSAgQVRIMTJLX01BQ19TQ0FOX1RJTUVPVVRfTVNFQ1MpKTsKIAogZXhpdDoKIAlpZiAoYXJnKSB7CkBAIC01NzU3LDYgJiM0Mzs1NzcyLDcgQEAgaW50IGF0aDEya19tYWNfb3BfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJCQlzcGluX2xvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKIAkJCQlhci0mZ3Q7c2Nhbi5hcnZpZiA9IE5VTEw7CiAJCQkJYXItJmd0O3NjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFOwomIzQzOwkJCQlhci0mZ3Q7c2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7CiAJCQkJYXItJmd0O3NjYW5fY2hhbm5lbCA9IE5VTEw7CiAJCQkJYXItJmd0O3NjYW4ucm9jX2ZyZXEgPSAwOwogCQkJCXNwaW5fdW5sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CkBAIC01NzkyLDcgJiM0Mzs1ODA4LDcgQEAgdm9pZCBhdGgxMmtfbWFjX29wX2NhbmNlbF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LAogCiAJCWF0aDEya19zY2FuX2Fib3J0KGFyKTsKIAotCQljYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoJmFtcDthci0mZ3Q7c2Nhbi50aW1lb3V0KTsKJiM0MzsJCXdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoaHctJmd0O3dpcGh5LCAmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQpOwogCX0KIH0KIEVYUE9SVF9TWU1CT0woYXRoMTJrX21hY19vcF9jYW5jZWxfaHdfc2Nhbik7CkBAIC05OTM1LDcgJiM0Mzs5OTUxLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19zdG9wKHN0cnVjdCBhdGgxMmsgKmFyKQogCiAJY2xlYXJfYml0KEFUSDEyS19GTEFHX0NBQ19SVU5OSU5HLCAmYW1wO2FyLSZndDtkZXZfZmxhZ3MpOwogCi0JY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKCZhbXA7YXItJmd0O3NjYW4udGltZW91dCk7CiYjNDM7CXdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS0mZ3Q7d2lwaHksICZhbXA7YXItJmd0O3NjYW4udGltZW91dCk7CiAJd2lwaHlfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS0mZ3Q7d2lwaHksICZhbXA7YXItJmd0O3NjYW4udmRldl9jbGVhbl93ayk7CiAJY2FuY2VsX3dvcmtfc3luYygmYW1wO2FyLSZndDtyZWdkX2NoYW5uZWxfdXBkYXRlX3dvcmspOwogCWNhbmNlbF93b3JrX3N5bmMoJmFtcDthci0mZ3Q7cmVnZF91cGRhdGVfd29yayk7CkBAIC0xMDk2Miw2ICYjNDM7MTA5NzgsNyBAQCB2b2lkIGF0aDEya19tYWNfb3BfcmVtb3ZlX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJCX0KIAogCQkJYXItJmd0O3NjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFOwomIzQzOwkJCWFyLSZndDtzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTsKIAkJCWFyLSZndDtzY2FuX2NoYW5uZWwgPSBOVUxMOwogCQkJYXItJmd0O3NjYW4ucm9jX2ZyZXEgPSAwOwogCQkJc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKQEAgLTEzODc2LDcgJiM0MzsxMzg5Myw3IEBAIGludCBhdGgxMmtfbWFjX29wX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAogCWF0aDEya19zY2FuX2Fib3J0KGFyKTsKIAotCWNhbmNlbF9kZWxheWVkX3dvcmtfc3luYygmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQpOwomIzQzOwl3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKGh3LSZndDt3aXBoeSwgJmFtcDthci0mZ3Q7c2Nhbi50aW1lb3V0KTsKIAl3aXBoeV93b3JrX2ZsdXNoKGh3LSZndDt3aXBoeSwgJmFtcDthci0mZ3Q7c2Nhbi52ZGV2X2NsZWFuX3drKTsKIAogCXJldHVybiAwOwpAQCAtMTM5NTYsNiAmIzQzOzEzOTczLDcgQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCXJlaW5pdF9jb21wbGV0aW9uKCZhbXA7YXItJmd0O3NjYW4ub25fY2hhbm5lbCk7CiAJCWFyLSZndDtzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fU1RBUlRJTkc7CiAJCWFyLSZndDtzY2FuLmlzX3JvYyA9IHRydWU7CiYjNDM7CQlhci0mZ3Q7c2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7CiAJCWFyLSZndDtzY2FuLmFydmlmID0gYXJ2aWY7CiAJCWFyLSZndDtzY2FuLnJvY19mcmVxID0gY2hhbi0mZ3Q7Y2VudGVyX2ZyZXE7CiAJCWFyLSZndDtzY2FuLnJvY19ub3RpZnkgPSB0cnVlOwpAQCAtMTM5OTgsNiAmIzQzOzE0MDE2LDcgQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAKIAkJc3Bpbl9sb2NrX2JoKCZhbXA7YXItJmd0O2RhdGFfbG9jayk7CiAJCWFyLSZndDtzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTsKJiM0MzsJCWFyLSZndDtzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTsKIAkJc3Bpbl91bmxvY2tfYmgoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKIAkJcmV0dXJuIHJldDsKIAl9CkBAIC0xNDAxMSw4ICYjNDM7MTQwMzAsOCBAQCBpbnQgYXRoMTJrX21hY19vcF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywKIAkJcmV0dXJuIC1FVElNRURPVVQ7CiAJfQogCi0JaWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgJmFtcDthci0mZ3Q7c2Nhbi50aW1lb3V0LAotCQkJCSAgICAgbXNlY3NfdG9famlmZmllcyhkdXJhdGlvbikpOwomIzQzOwl3aXBoeV9kZWxheWVkX3dvcmtfcXVldWUoaHctJmd0O3dpcGh5LCAmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQsCiYjNDM7CQkJCSBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uKSk7CiAKIAlyZXR1cm4gMDsKIH0KQEAgLTE1MDUyLDYgJiM0MzsxNTA3MSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIpCiAJYXItJmd0O251bV90eF9jaGFpbnMgPSBod2VpZ2h0MzIocGRldi0mZ3Q7Y2FwLnR4X2NoYWluX21hc2spOwogCWFyLSZndDtudW1fcnhfY2hhaW5zID0gaHdlaWdodDMyKHBkZXYtJmd0O2NhcC5yeF9jaGFpbl9tYXNrKTsKIAlhci0mZ3Q7c2Nhbi5hcnZpZiA9IE5VTEw7CiYjNDM7CWFyLSZndDtzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTsKIAlhci0mZ3Q7dmRldl9pZF8xMWRfc2NhbiA9IEFUSDEyS18xMURfSU5WQUxJRF9WREVWX0lEOwogCiAJc3Bpbl9sb2NrX2luaXQoJmFtcDthci0mZ3Q7ZGF0YV9sb2NrKTsKQEAgLTE1MDc3LDcgJiM0MzsxNTA5Nyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIpCiAJYXItJmd0O3RoZXJtYWwudGVtcGVyYXR1cmUgPSAwOwogCWFyLSZndDt0aGVybWFsLmh3bW9uX2RldiA9IE5VTEw7CiAKLQlJTklUX0RFTEFZRURfV09SSygmYW1wO2FyLSZndDtzY2FuLnRpbWVvdXQsIGF0aDEya19zY2FuX3RpbWVvdXRfd29yayk7CiYjNDM7CXdpcGh5X2RlbGF5ZWRfd29ya19pbml0KCZhbXA7YXItJmd0O3NjYW4udGltZW91dCwgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKTsKIAl3aXBoeV93b3JrX2luaXQoJmFtcDthci0mZ3Q7c2Nhbi52ZGV2X2NsZWFuX3drLCBhdGgxMmtfc2Nhbl92ZGV2X2NsZWFuX3dvcmspOwogCUlOSVRfV09SSygmYW1wO2FyLSZndDtyZWdkX2NoYW5uZWxfdXBkYXRlX3dvcmssIGF0aDEya19yZWdkX3VwZGF0ZV9jaGFuX2xpc3Rfd29yayk7CiAJSU5JVF9MSVNUX0hFQUQoJmFtcDthci0mZ3Q7cmVnZF9jaGFubmVsX3VwZGF0ZV9xdWV1ZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNTUKCQkJCQkJCW91dHB1dDogMzcKCQkJCQkJCXRob3VnaHRzOiAzMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBhdGgxMmsgRHJpdmVyIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGZvciB0aGUgYGF0aDEya2Agd2lyZWxlc3MgZHJpdmVyLCBhbmQgaXQgbG9va3MgbGlrZSBhIHN0cmFpZ2h0Zm9yd2FyZCBzdHJ1Y3R1cmFsIGNoYW5nZS4gVGhlIGNvcmUgb2YgaXQgc2VlbXMgdG8gYmUgYWJvdXQgdXBkYXRpbmcgdGhlIGRlbGF5ZWQgd29yayBoYW5kbGluZyB3aXRoaW4gdGhlIGBzY2FuYCBzdHJ1Y3R1cmUuIFNwZWNpZmljYWxseSwgdGhleSYjMzk7dmUgc3dpdGNoZWQgZnJvbSB0aGUgc3RhbmRhcmQgYHN0cnVjdCBkZWxheWVkX3dvcmsgdGltZW91dGAgdG8gdGhlIGB3aXBoeWAtYXdhcmUgYHN0cnVjdCB3aXBoeV9kZWxheWVkX3dvcmsgdGltZW91dGAsIGFuZCBjb3JyZXNwb25kaW5nbHkgcmVwbGFjZWQgdGhlIG9sZGVyIHdvcmsgcXVldWUgbWFuaXB1bGF0aW9uIGZ1bmN0aW9ucyB3aXRoIHRoZWlyIGB3aXBoeWAgY291bnRlcnBhcnRzIOKAkyBgY2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jYCBiZWNvbWVzIGB3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsYCwgdGhlIGFzeW5jaHJvbm91cyB2ZXJzaW9uIGlzIGhhbmRsZWQgd2l0aCBhIGZsYWcgYGFyLSZndDtzY2FuLmZpbmlzaF9xdWV1ZWQgPSB0cnVlYCwgYGllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmtgIGJlY29tZXMgYHdpcGh5X2RlbGF5ZWRfd29ya19xdWV1ZWAsIGFuZCBgSU5JVF9ERUxBWUVEX1dPUktgIGlzIG5vdyBgd2lwaHlfZGVsYXllZF93b3JrX2luaXRgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjbGVhbiBtb2Rlcm5pemF0aW9uLgoKTm93LCBteSBtaW5kIGp1bXBzIHRvIHNlY3VyaXR5IGltcGxpY2F0aW9ucy4gU2luY2UgdGhpcyBpcyBhIGRyaXZlciwgdGhlIGF0dGFjayBzdXJmYWNlIGlzIG9mIHBhcnRpY3VsYXIgaW50ZXJlc3QuIElzIGBhdGgxMmtgIGV2ZW4gcmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgZW52aXJvbm1lbnQ/IEl0JiMzOTtzIGEgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMsIHNwZWNpZmljYWxseSBQQ0llL0FIQiwgd2hpY2ggbWVhbnMgZGlyZWN0IGhhcmR3YXJlIGFjY2VzcyBpcyBsaWtlbHkgaW52b2x2ZWQuIFdhaXQsIGNhbiB3ZSBmdXp6IGl0PyBJIGFtIHVzZWQgdG8gZnV6emluZyB2YXJpb3VzIGRyaXZlcnMuIEhhcmR3YXJlIGRyaXZlcnMgYXJlIG5vdG9yaW91c2x5IGRpZmZpY3VsdCB0byBmdXp6IGRpcmVjdGx5LCBidXQgdGhlcmUgYXJlIHNvbWUgd29ya2Fyb3VuZHMuIEkgbmVlZCB0byBrbm93IHRoZSB0eXBlIG9mIGRyaXZlci4gRW11bGF0aW9uIGxheWVycywgVVNCIGRyaXZlcnMgd2l0aCBkdW1teSBIQ0RzLCBvciBgbWFjODAyMTFfaHdzaW1gIGFyZSB0eXBpY2FsIGF2ZW51ZXMsIGJ1dCBpdCBsb29rcyBsaWtlIGBhdGgxMmtgIGlzIGEgUENJL0FIQiBkcml2ZXIuIFNvIG5vdywgSSYjMzk7bSB0aGlua2luZyBhYm91dCBlbXVsYXRpb24uIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZW11bGF0aW9uIGZvciBgYXRoMTJrYC4KCkkgd2lsbCB1c2UgYGdyZXBwZXJgIHRvIHNlYXJjaCB0aGUgTGludXggc291cmNlIHRyZWUgZm9yIGFueSBtZW50aW9uIG9mIGBhdGgxMmtgIHRvIHNlZSB3aGF0IEkgY2FuIGZpbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDM0OTUyIGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9Mj1jb25maWcgQVRIMTJLXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzpcdHRyaXN0YXRlIFwmIzM0O1F1YWxjb21tIFdpLUZpIDcgc3VwcG9ydCAoYXRoMTJrKVwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTQtXHRkZXBlbmRzIG9uIE1BQzgwMjExIFx1MDAyNlx1MDAyNiBIQVNfRE1BIFx1MDAyNlx1MDAyNiBQQ0lcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTU6XHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0JiMzOTtsbCBiZSBjYWxsZWQgYXRoMTJrLlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTE3PWNvbmZpZyBBVEgxMktfQUhCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTg6XHRib29sIFwmIzM0O1F1YWxjb21tIGF0aDEyayBBSEIgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTE5LVx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IFJFTU9URVBST0Ncbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MjU9Y29uZmlnIEFUSDEyS19ERUJVR1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjI2Olx0Ym9vbCBcJiMzNDthdGgxMmsgZGVidWdnaW5nXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctMjctXHRkZXBlbmRzIG9uIEFUSDEyS1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0zNT1jb25maWcgQVRIMTJLX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNjpcdGJvb2wgXCYjMzQ7UXVhbGNvbW0gYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM3LVx0ZGVwZW5kcyBvbiBBVEgxMksgXHUwMDI2XHUwMDI2IE1BQzgwMjExX0RFQlVHRlNcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zOC1cdGhlbHBcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozOTpcdCAgRW5hYmxlIGF0aDEyayBkZWJ1Z2ZzIHN1cHBvcnRcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00MC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NDQ9Y29uZmlnIEFUSDEyS19UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDU6XHRib29sIFwmIzM0O2F0aDEyayB0cmFjaW5nIHN1cHBvcnRcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00Ni1cdGRlcGVuZHMgb24gQVRIMTJLIFx1MDAyNlx1MDAyNiBFVkVOVF9UUkFDSU5HXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDctXHRoZWxwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDg6XHQgIEVuYWJsZSBhdGgxMmsgdHJhY2luZyBpbmZyYXN0cnVjdHVyZS5cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9NTM9Y29uZmlnIEFUSDEyS19DT1JFRFVNUFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjU0Olx0Ym9vbCBcJiMzNDthdGgxMmsgY29yZWR1bXBcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01NS1cdGRlcGVuZHMgb24gQVRIMTJLXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU3LVx0aGVscFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjU4Olx0ICBFbmFibGUgYXRoMTJrIGNvcmVkdW1wIGNvbGxlY3Rpb25cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTMtQ2xhdXNlLUNsZWFyXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0FUSDEySykgJiM0Mzs9IGF0aDEyay5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM6YXRoMTJrLXkgJiM0Mzs9IGNvcmUubyBcXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS00LVx0ICAgIGhhbC5vIFxcXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MjU6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19BSEIpICYjNDM7PSBhaGIub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU9Mjc9b2JqLSQoQ09ORklHX0FUSDEySykgJiM0Mzs9IHdpZmk3L1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yOC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6Mjk6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19ERUJVR0ZTKSAmIzQzOz0gZGVidWdmcy5vIGRlYnVnZnNfaHR0X3N0YXRzLm8gZGVidWdmc19zdGEub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMDphdGgxMmstJChDT05GSUdfQUNQSSkgJiM0Mzs9IGFjcGkub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMTphdGgxMmstJChDT05GSUdfQVRIMTJLX1RSQUNJTkcpICYjNDM7PSB0cmFjZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMyOmF0aDEyay0kKENPTkZJR19QTSkgJiM0Mzs9IHdvdy5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMzOmF0aDEyay0kKENPTkZJR19BVEgxMktfQ09SRURVTVApICYjNDM7PSBjb3JlZHVtcC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM0OmF0aDEyay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozNTphdGgxMmstJChDT05GSUdfVEhFUk1BTCkgJiM0Mzs9IHRoZXJtYWwub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNi1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjExOnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGludCBmdW5jKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4LVx0aWYgKCFyb290X2hhbmRsZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTk6XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXCYjMzQ7aW52YWxpZCBhY3BpIGhhbmRsZXJcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAtXHRcdHJldHVybiAtRU9QTk9UU1VQUDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNi1cdGlmICghb2JqKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNzpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDthY3BpX2V2YWx1YXRlX2RzbSgpIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOC1cdFx0cmV0dXJuIC1FTk9FTlQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYtXHRcdFx0XHQgICBBVEgxMktfQUNQSV9CREZfQU5DSE9SX1NUUklOR19MRU4pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NzpcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIEJERiBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ4LVx0XHRcdFx0XHQgICAgb2JqLVx1MDAzZXN0cmluZy5sZW5ndGgpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTYyLVx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCBcdTAwM2UgQVRIMTJLX0FDUElfRFNNX0ZVTkNfTUFYX0JJVE1BUF9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo2MzpcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIGZ1bmMgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy02NC1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy03NS1cdFx0XHRpZiAob2JqLVx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX1RBU19DRkdfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NzY6XHRcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7aW52YWxpZCBBQ1BJIERTTSBUQVMgY29uZmlnIHNpemU6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNzctXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtODctXHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9UQVNfREFUQV9TSVpFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo4ODpcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgRFNNIFRBUyBkYXRhIHNpemU6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtODktXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtOTktXHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9CSU9TX1NBUl9EQVRBX1NJWkUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEwMDpcdFx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIEFDUEkgQklPUyBTQVIgZGF0YSBzaXplOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEwMS1cdFx0XHRcdFx0ICAgIG9iai1cdTAwM2VidWZmZXIubGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMTEtXHRcdFx0aWYgKG9iai1cdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9HRU9fT0ZGU0VUX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTEyOlx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBHRU8gT0ZGU0VUIGRhdGEgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMTMtXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTIzLVx0XHRcdGlmIChvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQ0NBX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTI0Olx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gQ0NBIGRhdGEgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMjUtXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTM1LVx0XHRcdGlmIChvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fQkFORF9FREdFX0RBVEFfU0laRSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTM2Olx0XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ludmFsaWQgQUNQSSBEU00gYmFuZCBlZGdlIGRhdGEgc2l6ZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzctXHRcdFx0XHRcdCAgICBvYmotXHUwMDNlYnVmZmVyLmxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTQ3LVx0fSBlbHNlIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE0ODpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O0FDUEkgRFNNIG1ldGhvZCByZXR1cm5lZCBhbiB1bnN1cHBvcnRlZCBvYmplY3QgdHlwZTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNDktXHRcdFx0ICAgIG9iai1cdTAwM2V0eXBlKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNjE6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfcG93ZXJfbGltaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTY3LVx0ICAgIHRhc19zYXJfcG93ZXJfdGFibGVbMV0gIT0gQVRIMTJLX0FDUElfVEFTX0RBVEFfRU5BQkxFKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNjg6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtsYXRlc3QgQUNQSSBUQVMgZGF0YSBpcyBpbnZhbGlkXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2OS1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTcxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTcyOlx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsIFdNSV9CSU9TX1BBUkFNX1RBU19EQVRBX1RZUEUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzMtXHRcdFx0XHQgICAgICB0YXNfc2FyX3Bvd2VyX3RhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE3NS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE3NjpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGRhdGEgdGFibGU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTc3LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE4MzpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9iaW9zX3Nhcl9wb3dlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTg0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODgtXHQgICAgYWItXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhWzFdICE9IEFUSDEyS19BQ1BJX1BPV0VSX0xJTUlUX0VOQUJMRV9GTEFHKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxODk6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtpbnZhbGlkIGxhdGVzdCBBQ1BJIEJJT1MgU0FSIGRhdGFcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTkwLVx0XHRyZXR1cm4gLUVJTlZBTDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTM6XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX3Nhcl9jbWQoYWIsIGFiLVx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTQtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTU6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBTQVIgdGFibGU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTk2LVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIwMjpzdGF0aWMgdm9pZCBhdGgxMmtfYWNwaV9kc21fbm90aWZ5KGFjcGlfaGFuZGxlIGhhbmRsZSwgdTMyIGV2ZW50LCB2b2lkICpkYXRhKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwNC1cdGludCByZXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMDU6XHRzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiID0gZGF0YTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwNy1cdGlmIChldmVudCA9PSBBVEgxMktfQUNQSV9OT1RJRllfRVZFTlQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIwODpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O3Vua25vd24gYWNwaSBub3RpZnkgJXVcXG5cJiMzNDssIGV2ZW50KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwOS1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIxMi1cdGlmICghYWItXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIxMzpcdFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcJiMzNDthY3BpX3Rhc19lbmFibGUgaXMgZmFsc2VcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjE3Olx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfREFUQSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTgtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTk6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gdXBkYXRlIEFDUEkgVEFTIGRhdGEgdGFibGU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjIwLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjIzOlx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X3Bvd2VyX2xpbWl0KGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIyNC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIyNTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZXQgQUNQSSBUQVMgcG93ZXIgbGltaXQgZGF0YTogJWRcJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjYtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMzI6XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzMy1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIzNDpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byB1cGRhdGUgQklPUyBTQVI6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjM1LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjM3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjM4Olx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3Bvd2VyKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzOS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI0MDpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZXQgQklPUyBTQVIgcG93ZXIgbGltaXQ6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjQxLVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjQ0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjQ1OnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3BhcmFtcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjQ2LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNDk6XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX3Nhcl9jbWQoYWIsIGFiLVx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNTAtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNTE6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBTQVIgdGFibGU6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjUyLVx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI1NTpcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfZ2VvX2NtZChhYiwgYWItXHUwMDNlYWNwaS5nZW9fb2Zmc2V0X2RhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjU2LVx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjU3Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldCBBQ1BJIEJJT1MgR0VPIHRhYmxlOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1OC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNjQ6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfdGFzX3BhcmFtcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjY1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNjg6XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYiwgV01JX0JJT1NfUEFSQU1fVEFTX0NPTkZJR19UWVBFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjY5LVx0XHRcdFx0ICAgICAgYWItXHUwMDNlYWNwaS50YXNfY2ZnLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3MS1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3MjpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGNvbmZpZyB0YWJsZSBwYXJhbWV0ZXI6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjczLVx0XHRcdCAgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3NzpcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3NfY21kKGFiLCBXTUlfQklPU19QQVJBTV9UQVNfREFUQV9UWVBFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjc4LVx0XHRcdFx0ICAgICAgYWItXHUwMDNlYWNwaS50YXNfc2FyX3Bvd2VyX3RhYmxlLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4MC1cdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI4MTpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGRhdGEgdGFibGUgcGFyYW1ldGVyOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4Mi1cdFx0XHQgICAgcmV0KTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yODgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyODk6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI5MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjkzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mjk0OmJvb2wgYXRoMTJrX2FjcGlfZ2V0X2Rpc2FibGVfMTFiZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjk1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyOTk6dm9pZCBhdGgxMmtfYWNwaV9zZXRfZHNtX2Z1bmMoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMwMC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzA4LVx0aWYgKGFiLVx1MDAzZWFjcGkuYWNwaV90YXNfZW5hYmxlKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMDk6XHRcdHJldCA9IGF0aDEya19hY3BpX3NldF90YXNfcGFyYW1zKGFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMxMC1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzExOlx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gc2VuZCBBQ1BJIFRBUyBwYXJhbWV0ZXJzOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMxMi1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzE2LVx0aWYgKGFiLVx1MDAzZWFjcGkuYWNwaV9iaW9zX3Nhcl9lbmFibGUpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMxNzpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3BhcmFtcyhhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMTgtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMxOTpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNlbmQgQUNQSSBCSU9TIFNBUjogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjAtXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyNS1cdFx0YnVmID0gYWItXHUwMDNlYWNwaS5jY2FfZGF0YSAmIzQzOyBBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMyNjpcdFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjctXHRcdFx0XHRcdCAgICAgIFdNSV9CSU9TX1BBUkFNX0NDQV9USFJFU0hPTERfVFlQRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzAtXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMzMTpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHNldCBBQ1BJIERTTSBDQ0EgdGhyZXNob2xkOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMzMi1cdFx0XHRcdCAgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMzNy1cdGlmIChhYi1cdTAwM2VhY3BpLmFjcGlfYmFuZF9lZGdlX2VuYWJsZSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzM4Olx0XHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMzOS1cdFx0XHRcdFx0ICAgICAgV01JX0JJT1NfUEFSQU1fVFlQRV9CQU5ERURHRSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNDItXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM0MzpcdFx0XHRhdGgxMmtfd2FybihhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM0NC1cdFx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gc2V0IEFDUEkgRFNNIGJhbmQgZWRnZSBjaGFubmVsIHBvd2VyOiAlZFxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNTE6aW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNTIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM2OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM2OTpcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfU1VQUE9SVF9GVU5DUyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzAtXHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozNzE6XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIERTTSBkYXRhOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3Mi1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzUtXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfRElTQUJMRV9GTEFHKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mzc2Olx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0RJU0FCTEVfRkxBRyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzctXHRcdGlmIChyZXQpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3ODpcdFx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIGdldCBBQ1BJIERJU0FCTEUgRkxBRzogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzktXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zOTEtXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfQkRGX0VYVCkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM5MjpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19CREZfRVhUKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM5My1cdFx0aWYgKHJldCB8fCBhYi1cdTAwM2VhY3BpLmJkZl9zdHJpbmdbMF0gPT0gJiMzOTtcXDAmIzM5Oykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mzk0Olx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IEFDUEkgQkRGIEVYVDogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zOTUtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDEtXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0NGRykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQwMjpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19UQVNfQ0ZHKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwMy1cdFx0aWYgKHJldCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDA0Olx0XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gZ2V0IEFDUEkgVEFTIGNvbmZpZyB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDUtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDktXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0RBVEEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MTA6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0RBVEEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDExLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MTI6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBUQVMgZGF0YSB0YWJsZTogJWRcXG5cJiMzNDssIHJldCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTMtXHRcdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjItXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfQklPU19TQVIpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MjM6XHRcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDI0LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MjU6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBiaW9zIHNhciBkYXRhOiAlZFxcblwmIzM0OywgcmV0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQyNi1cdFx0XHRyZXR1cm4gcmV0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzMC1cdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9HRU9fT0ZGU0VUKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDMxOlx0XHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0dFT19PRkZTRVQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDMyLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MzM6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBnZW8gb2Zmc2V0IGRhdGE6ICVkXFxuXCYjMzQ7LCByZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDM0LVx0XHRcdHJldHVybiByZXQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDQ0LVx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0NDQSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ0NTpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9DQ0EpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDQ2LVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NDc6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBEU00gQ0NBIHRocmVzaG9sZCBjb25maWd1cmF0aW9uOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0OC1cdFx0XHRcdCAgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ1OS1cdFx0XHRcdCAgICAgICBBVEgxMktfQUNQSV9GVU5DX0JJVF9CQU5EX0VER0VfQ0hBTl9QT1dFUikpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2MDpcdFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9CQU5EX0VER0UpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYxLVx0XHRpZiAocmV0KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NjI6XHRcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBnZXQgQUNQSSBEU00gYmFuZCBlZGdlIGNoYW5uZWwgcG93ZXI6ICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDYzLVx0XHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDczLVx0XHRcdFx0XHQgICAgIEFDUElfREVWSUNFX05PVElGWSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ3NDpcdFx0XHRcdFx0ICAgICBhdGgxMmtfYWNwaV9kc21fbm90aWZ5LCBhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NzUtXHRpZiAoQUNQSV9GQUlMVVJFKHN0YXR1cykpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ3NjpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O2ZhaWxlZCB0byBpbnN0YWxsIERTTSBub3RpZnkgY2FsbGJhY2s6ICVkXFxuXCYjMzQ7LCBzdGF0dXMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDc3LVx0XHRyZXR1cm4gLUVJTztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0ODU6aW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ4Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDkyLVx0aWYgKHN0cnNjcHkoYWItXHUwMDNlcW1pLnRhcmdldC5iZGZfZXh0LCBhYi1cdTAwM2VhY3BpLmJkZl9zdHJpbmcgJiM0MzsgNCwgbWF4X2xlbikgXHUwMDNjIDApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0OTM6XHRcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ5NC1cdFx0XHQgICBcJiMzNDthY3BpIGJkZiB2YXJpYW50IGxvbmdlciB0aGFuIHRoZSBidWZmZXIgKHZhcmlhbnQ6ICVzKVxcblwmIzM0Oyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00OTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo1MDA6dm9pZCBhdGgxMmtfYWNwaV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy01MDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTUwNi1cdFx0XHRcdCAgIEFDUElfREVWSUNFX05PVElGWSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjUwNzpcdFx0XHRcdCAgIGF0aDEya19hY3BpX2RzbV9ub3RpZnkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNTA4LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTc0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzU6aW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzY6dm9pZCBhdGgxMmtfYWNwaV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Nzc6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3ODpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlXzExYmUoc3RydWN0IGF0aDEya19iYXNlICphYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3OTp2b2lkIGF0aDEya19hY3BpX3NldF9kc21fZnVuYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjgwOmludCBhdGgxMmtfYWNwaV9jaGVja19iZGZfdmFyaWFudF9uYW1lKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODEtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo4NDpzdGF0aWMgaW5saW5lIGludCBhdGgxMmtfYWNwaV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTg4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6ODk6c3RhdGljIGlubGluZSB2b2lkIGF0aDEya19hY3BpX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTkwLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC05Mi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjkzOnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC05Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjk4OnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV8xMWJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC05OS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTAyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTAzOnN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfYWNwaV9zZXRfZHNtX2Z1bmMoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTA2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6MTA3OnN0YXRpYyBpbmxpbmUgaW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwOC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjM6c3RhdGljIHN0cnVjdCBhdGgxMmtfYWhiX2RyaXZlciAqYXRoMTJrX2FoYl9mYW1pbHlfZHJpdmVyc1tBVEgxMktfREVWSUNFX0ZBTUlMWV9NQVhdO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNDpzdGF0aWMgY29uc3QgY2hhciBhdGgxMmtfdXNlcnBkX2lycVtdWzldID0ge1wmIzM0O3NwYXduXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNS1cdFx0XHRcdCAgICAgXCYjMzQ7cmVhZHlcJiMzNDssXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz04ND1lbnVtIGV4dF9pcnFfbnVtIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEyMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTI0OnN0YXRpYyB1MzIgYXRoMTJrX2FoYl9yZWFkMzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIG9mZnNldClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTI1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEzMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTMxOnN0YXRpYyB2b2lkIGF0aDEya19haGJfd3JpdGUzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgb2Zmc2V0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMzItXHRcdFx0ICAgICAgIHUzMiB2YWx1ZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTQwOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2FuY2VsX3dvcmtxdWV1ZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQ0LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNDU6XHRcdHN0cnVjdCBhdGgxMmtfY2VfcGlwZSAqY2VfcGlwZSA9IFx1MDAyNmFiLVx1MDAzZWNlLmNlX3BpcGVbaV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE0Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTQ3Olx0XHRpZiAoYXRoMTJrX2NlX2dldF9hdHRyX2ZsYWdzKGFiLCBpKSBcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQ4LVx0XHRcdGNvbnRpbnVlO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNTQ6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9leHRfZ3JwX2Rpc2FibGUoc3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTU1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE2MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTYyOnN0YXRpYyB2b2lkIF9fYXRoMTJrX2FoYl9leHRfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTYzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE2Ni1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjc6XHRcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTY4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNjk6XHRcdGF0aDEya19haGJfZXh0X2dycF9kaXNhYmxlKGlycV9ncnApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNzAtXHRcdGlmIChpcnFfZ3JwLVx1MDAzZW5hcGlfZW5hYmxlZCkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNzg6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9leHRfZ3JwX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxODY6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9zZXRiaXQzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1OCBiaXQsIHUzMiBvZmZzZXQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE4Ny17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5MDpcdHZhbCA9IGF0aDEya19haGJfcmVhZDMyKGFiLCBvZmZzZXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTE6XHRhdGgxMmtfYWhiX3dyaXRlMzIoYWIsIG9mZnNldCwgdmFsIHwgQklUKGJpdCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTItfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5NDpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2NsZWFyYml0MzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTggYml0LCB1MzIgb2Zmc2V0KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTk3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTg6XHR2YWwgPSBhdGgxMmtfYWhiX3JlYWQzMihhYiwgb2Zmc2V0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTk5Olx0YXRoMTJrX2FoYl93cml0ZTMyKGFiLCBvZmZzZXQsIHZhbCBcdTAwMjYgfkJJVChiaXQpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjAwLX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjAxLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMDI6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUxNiBjZV9pZClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjAzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxMy1cdGlmIChjZV9hdHRyLVx1MDAzZXNyY19uZW50cmllcylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE0Olx0XHRhdGgxMmtfYWhiX3NldGJpdDMyKGFiLCBjZV9pZCwgaWUxX3JlZ19hZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMTYtXHRpZiAoY2VfYXR0ci1cdTAwM2VkZXN0X25lbnRyaWVzKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIxNzpcdFx0YXRoMTJrX2FoYl9zZXRiaXQzMihhYiwgY2VfaWQsIGllMl9yZWdfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIxODpcdFx0YXRoMTJrX2FoYl9zZXRiaXQzMihhYiwgY2VfaWQgJiM0MzsgQ0VfSE9TVF9JRV8zX1NISUZULFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMTktXHRcdFx0XHQgICAgaWUzX3JlZ19hZGRyKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjIzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfY2VfaXJxX2Rpc2FibGUoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTE2IGNlX2lkKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM0LVx0aWYgKGNlX2F0dHItXHUwMDNlc3JjX25lbnRyaWVzKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMzU6XHRcdGF0aDEya19haGJfY2xlYXJiaXQzMihhYiwgY2VfaWQsIGllMV9yZWdfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIzNi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjM3LVx0aWYgKGNlX2F0dHItXHUwMDNlZGVzdF9uZW50cmllcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMzg6XHRcdGF0aDEya19haGJfY2xlYXJiaXQzMihhYiwgY2VfaWQsIGllMl9yZWdfYWRkcik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzOTpcdFx0YXRoMTJrX2FoYl9jbGVhcmJpdDMyKGFiLCBjZV9pZCAmIzQzOyBDRV9IT1NUX0lFXzNfU0hJRlQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI0MC1cdFx0XHRcdCAgICAgIGllM19yZWdfYWRkcik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI0NDpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfY2VfaXJxcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjQ5LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNTA6XHRcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTEtXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI1ODpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfZXh0X2lycXMoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI2My1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNjQ6XHRcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcdTAwMjZhYi1cdTAwM2VleHRfaXJxX2dycFtpXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjY1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjcyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNzM6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFzX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjc3LVx0Zm9yIChpID0gMDsgaSBcdTAwM2MgYWItXHUwMDNlaHdfcGFyYW1zLVx1MDAzZWNlX2NvdW50OyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNzg6XHRcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzktXHRcdFx0Y29udGludWU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI4MDpcdFx0YXRoMTJrX2FoYl9jZV9pcnFfZW5hYmxlKGFiLCBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjgxLVx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjgzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyODQ6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFzX2Rpc2FibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjg1LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI4OC1cdGZvciAoaSA9IDA7IGkgXHUwMDNjIGFiLVx1MDAzZWh3X3BhcmFtcy1cdTAwM2VjZV9jb3VudDsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjg5Olx0XHRpZiAoYXRoMTJrX2NlX2dldF9hdHRyX2ZsYWdzKGFiLCBpKSBcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjkwLVx0XHRcdGNvbnRpbnVlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTE6XHRcdGF0aDEya19haGJfY2VfaXJxX2Rpc2FibGUoYWIsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTItXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yOTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI5NTpzdGF0aWMgaW50IGF0aDEya19haGJfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjk2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjk3Olx0YXRoMTJrX2FoYl9jZV9pcnFzX2VuYWJsZShhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI5ODpcdGF0aDEya19jZV9yeF9wb3N0X2J1ZihhYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTMwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzAzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfZXh0X2lycV9lbmFibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzA0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzA1Olx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzA2LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMTMtXHRcdH1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzE0Olx0XHRhdGgxMmtfYWhiX2V4dF9ncnBfZW5hYmxlKGlycV9ncnApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMTUtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjMxODpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9pcnFfZGlzYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMTkte1xuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2ODcKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzNTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyBTeXpib3QmIzM5O3MgSW50ZXJhY3Rpb24gd2l0aCB0aGUgYXRoMTJrIERyaXZlcioqCgpPa2F5LCBzbyB0aGUgYGF0aDEya2AgZHJpdmVyIGhhcyB0aHJlZSBjb25maWd1cmF0aW9uIG9wdGlvbnM6IGBDT05GSUdfQVRIMTJLX0FIQmAsIGBDT05GSUdfQVRIMTJLYCwgYW5kIGBDT05GSUdfQVRIMTJLX1BDSWAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBpcyB0aGVyZSBzb21lIGtpbmQgb2YgZW11bGF0aW9uIHNldHVwIGZvciBgYXRoMTJrYD8gSXQmIzM5O3Mgbm90IGxpa2UgYG1hYzgwMjExX2h3c2ltYCwgd2hpY2ggdXN1YWxseSBzaW11bGF0ZXMgYSBtb3JlIGdlbmVyaWMgbWFjODAyMTEgZGV2aWNlLCBub3Qgc3BlY2lmaWNhbGx5IGBhdGgxMmtgLiBXYWl0LCBzeXpib3QgZm91bmQgYSBidWcgaW4gdGhpcz8gSW50cmlndWluZy4gTGV0JiMzOTtzIHNlZSBpZiBzeXpib3QgZXZlbiBpbmNsdWRlcyBgYXRoMTJrYCBpbiBpdHMgZnV6emluZyB0YXJnZXRzLgoKSG9sZCBvbiBhIHNlY29uZCwgdGhpcyBjb21taXQgbWVzc2FnZSBzYXlzICYjMzQ7c3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3JiMzNDsgYW5kIHRoZSBhdXRob3IgaXMgbGlzdGVkIGFzIGBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7YC4gVGhhdCBtZWFucyBzeXpib3QgKmlzKiB0ZXN0aW5nIGEgcGF0Y2ggcmVsYXRlZCB0byBgYXRoMTJrYC4gQnV0IGhvdz8gSG93IGlzIHN5emJvdCBpbnRlcmFjdGluZyB3aXRoIHRoaXMgZHJpdmVyPyBHaXZlbiB0aGF0IGBhdGgxMmtgIGlzIGEgUENJL0FIQiBkcml2ZXIsIGlzIGl0IGZ1enplZCB2aWEgc29tZSB2aXJ0dWFsIGJ1cyBvciBwZXJoYXBzIGl0JiMzOTtzIGEgVVNCIGRyaXZlcj8gVGhlIHRob3VnaHQgaXMsIHN5emthbGxlciBtaWdodCBiZSB1c2luZyBpdHMgdmlydHVhbCBQQ0kgYnVzIChgdmhjaWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIG5vIHdhaXQsIGB2aGNpYCBpcyBmb3IgVVNCKS4gRG9lcyBzeXprYWxsZXIgaGF2ZSBgdmZpb2Agb3IgZXZlbiBkaXJlY3QgUENJIGZ1enppbmc/IEFjdHVhbGx5LCBJIHJlbWVtYmVyIGBtYWM4MDIxMV9od3NpbWAgd2hpY2ggaXMgZm9yIHRoZSBgbWFjODAyMTFgIGZyYW1ld29yay4KCkFoYSEgTWF5YmUgc3l6a2FsbGVyIGlzIGZ1enppbmcgYGF0aDEya2AgaW5kaXJlY3RseSB2aWEgYG5sODAyMTFgIHRlc3Rtb2RlPyBUaGF0JiMzOTtzIHBsYXVzaWJsZS4gTGV0JiMzOTtzIGNoZWNrIGBkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmNgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBjbHVlcyB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNTo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDt0ZXN0bW9kZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU9MzM9YXRoMTJrLSQoQ09ORklHX0FUSDEyS19DT1JFRFVNUCkgJiM0Mzs9IGNvcmVkdW1wLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzQ6YXRoMTJrLSQoQ09ORklHX05MODAyMTFfVEVTVE1PREUpICYjNDM7PSB0ZXN0bW9kZS5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTM1LWF0aDEyay0kKENPTkZJR19USEVSTUFMKSAmIzQzOz0gdGhlcm1hbC5vXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNy0jaW5jbHVkZSBcJiMzNDtkcF9yeC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE4OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTktI2luY2x1ZGUgXCYjMzQ7cGVlci5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NzojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtOC0jaW5jbHVkZSBcdTAwM2NuZXQvbmV0bGluay5oXHUwMDNlXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEzLSNpbmNsdWRlIFwmIzM0O2hpZi5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTQ6I2luY2x1ZGUgXCYjMzQ7Li4vdGVzdG1vZGVfaS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTQ1PXZvaWQgYXRoMTJrX3RtX3dtaV9ldmVudF91bnNlZ21lbnRlZChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01MS1cdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTI6XHRcdCAgIFwmIzM0O3Rlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiIGxlbmd0aCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy01My1cdFx0ICAgY21kX2lkLCBza2ItXHUwMDNlbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTgtXHRpZiAoIWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTk6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDt0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02MC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo2NTpcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cdTAwM2VhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02Ni1cdFx0XHRcdFx0XHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTcyLVx0XHRhdGgxMmtfd2FybihhYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo3MzpcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdW5zZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03NC1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03OS1cdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgc2tiLVx1MDAzZWxlbiwgc2tiLVx1MDAzZWRhdGEpKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODA6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgdW5zZWdtZW50ZWQgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTgxLVx0XHRrZnJlZV9za2Iobmxfc2tiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODU6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTg2LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9ODg9dm9pZCBhdGgxMmtfdG1fcHJvY2Vzc19ldmVudChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1MzIgY21kX2lkLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy05OS1cdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTAwOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBldmVudCB3bWkgY21kX2lkICVkIGZ0bSBldmVudCBtc2cgJXAgZGF0YWxlbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMDEtXHRcdCAgIGNtZF9pZCwgZnRtX21zZywgbGVuZ3RoKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA1LVx0aWYgKHBkZXZfaWQgXHUwMDNlPSBhYi1cdTAwM2VudW1fcmFkaW9zKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTA2Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGludmFsaWQgcGRldiBpZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA3LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTExMi1cdGlmICghYXIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMTM6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDt0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gYWJzZW5jZSBvZiBwZGV2XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUzLVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTU0Olx0bmxfc2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfZXZlbnRfc2tiKGFyLVx1MDAzZWFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE1NS1cdFx0XHRcdFx0XHQgICAyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpICYjNDM7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2MS1cdFx0YXRoMTJrX3dhcm4oYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTYyOlx0XHRcdCAgICBcJiMzNDtmYWlsZWQgdG8gYWxsb2NhdGUgc2tiIGZvciB0ZXN0bW9kZSB3bWkgZXZlbnRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2My1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzAtXHRcdCAgICBcdTAwMjZhYi1cdTAwM2VmdG1fZXZlbnRfb2JqLmV2ZW50ZGF0YVswXSkpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzE6XHRcdGF0aDEya193YXJuKGFiLCBcJiMzNDtmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgZXZlbnRcJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3Mi1cdFx0a2ZyZWVfc2tiKG5sX3NrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzY6XHRjZmc4MDIxMV90ZXN0bW9kZV9ldmVudChubF9za2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE3Ny19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTE3OT1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfZ2V0X3ZlcnNpb24oc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4My1cdGF0aDEya19kYmcoYXItXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTg0Olx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgZ2V0IHZlcnNpb25fbWFqb3IgJWQgdmVyc2lvbl9taW5vciAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODUtXHRcdCAgIEFUSF9URVNUTU9ERV9WRVJTSU9OX01BSk9SLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODgtXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxODk6XHRza2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19yZXBseV9za2IoYXItXHUwMDNlYWgtXHUwMDNlaHctXHUwMDNld2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTkwLVx0XHRcdFx0XHRcdDIgKiBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMDMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjA0Olx0cmV0dXJuIGNmZzgwMjExX3Rlc3Rtb2RlX3JlcGx5KHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjA1LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MjA3PXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF9wcm9jZXNzX2Z0bShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjI5LVx0YXRoMTJrX2RiZyhhci1cdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyMzA6XHRcdCAgIFwmIzM0O3Rlc3Rtb2RlIGNtZCB3bWkgY21kX2lkICVkIGJ1ZiAlcCBidWZfbGVuICVkXFxuXCYjMzQ7LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIzMS1cdFx0ICAgY21kX2lkLCBidWYsIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjgxOnN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF90ZXN0bW9kZV9zdGFydChzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODIte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0zMDA9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX3dtaShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzE4LVx0aWYgKCFidWZfbGVuKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzE5Olx0XHRhdGgxMmtfd2Fybihhci1cdTAwM2VhYiwgXCYjMzQ7Tm8gZGF0YSBwcmVzZW50IGluIHRlc3Rtb2RlIGNvbW1hbmRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMyMC1cdFx0cmV0dXJuIC1FSU5WQUw7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMzMS1cdGF0aDEya19kYmcoYXItXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzMyOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCAgYnVmIGxlbmd0aCAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMzMtXHRcdCAgIGNtZF9pZCwgYnVmX2xlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTM0Ni1cdFx0ZGV2X2tmcmVlX3NrYihza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjM0NzpcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O2ZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zNDgtXHRcdFx0ICAgIHJldCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTM1ND1pbnQgYXRoMTJrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzg1LVx0Y2FzZSBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUOlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjM4NjpcdFx0cmV0dXJuIGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoYXIsIHRiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zODctXHRjYXNlIEFUSF9UTV9DTURfR0VUX1ZFUlNJT046XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI0LSNpbmNsdWRlIFwmIzM0Oy4uL2RlYnVnZnNfc3RhLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoyNTojaW5jbHVkZSBcJiMzNDsuLi90ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMjYtI2luY2x1ZGUgXCYjMzQ7aGFsLmhcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTI2LSNpbmNsdWRlIFwmIzM0O3AycC5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jOjI3OiNpbmNsdWRlIFwmIzM0O3Rlc3Rtb2RlLmhcJiMzNDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMjgtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjQ4ODIKCQkJCQkJCW91dHB1dDogNDIKCQkJCQkJCXRob3VnaHRzOiAzODIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYXRoMTJrYCBWdWxuZXJhYmlsaXR5IFJlcG9ydCoqCgpPa2F5LCBzbyBzeXpib3QgaXMgZnV6emluZyBtYWM4MDIxMSBkcml2ZXJzIHVzaW5nIGBtYWM4MDIxMV9od3NpbWAuIEJ1dCB3YWl0LCB0aGUgc3BlY2lmaWMgZHJpdmVyIG1lbnRpb25lZCBpbiB0aGUgcmVwb3J0LCBgYXRoMTJrYCwgaXMgZGVzaWduZWQgZm9yICpyZWFsKiBoYXJkd2FyZS4gVGhhdCYjMzk7cyBhIGJpdCBwZXJwbGV4aW5nLiBJcyB0aGVyZSBhbnkgY29uY2VpdmFibGUgd2F5IHN5emJvdCBjb3VsZCBldmVuIHJlYWNoIGBhdGgxMmtgIGluIGl0cyBjdXJyZW50IHRlc3Rpbmcgc2V0dXA/CgpUaGUgZmFjdCB0aGF0IHN5emJvdCBhcHBsaWVkIHRoZSBwYXRjaCBzdWdnZXN0cyBpdCYjMzk7cyAqdHJ5aW5nKiB0byB0ZXN0IGl0LCB3aGljaCByYWlzZXMgYSBmZXcgaW1tZWRpYXRlIHF1ZXN0aW9ucy4gVGhlIHBhdGNoIHRvdWNoZXMgZnVuY3Rpb25zIGxpa2UgYGF0aDEya19tYWNfc2Nhbl9maW5pc2hgLCBgYXRoMTJrX21hY19pbml0aWF0ZV9od19zY2FuYCwgYGF0aDEya19tYWNfb3BfaHdfc2NhbmAsIGBhdGgxMmtfbWFjX29wX2NhbmNlbF9od19zY2FuYCwgYGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWxgLCBgYXRoMTJrX21hY19vcF9jYW5jZWxfcmVtYWluX29uX2NoYW5uZWxgLCBhbmQgYGF0aDEya19tYWNfc2V0dXBgLiBBbGwgb2YgdGhlc2UgYXJlIGNsZWFybHkgbWFjODAyMTEgb3BlcmF0aW9ucywgd2hpY2ggaXMgZW5jb3VyYWdpbmcsIGJ1dCBhZ2FpbiwgZG9lcyBzeXpib3QgaGF2ZSB0aGUgbmVjZXNzYXJ5IGhhcmR3YXJlIHRvICphY3R1YWxseSogZXhlY3V0ZSB0aG9zZT8KCkEgZGVlcGVyIGRpdmUgaXMgbmVlZGVkLiBTeXpib3QgdHlwaWNhbGx5IHJ1bnMgb24gR0NFIFZNcywgYW5kIEkmIzM5O20gcHJldHR5IGNlcnRhaW4gdGhvc2UgZG9uJiMzOTt0IGhhdmUgdGhlIHNwZWNpZmljIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUgYGF0aDEya2AgZGVwZW5kcyBvbiDigJMgaXQgcmVxdWlyZXMgZWl0aGVyIFBDSSBvciBBSEIuIFNvLCBpdCYjMzk7cyBoaWdobHkgaW1wcm9iYWJsZSBzeXpib3QgaXMgdHJpZ2dlcmluZyB0aGlzIGFzIGEgcmVndWxhciBmdXp6aW5nIHNjZW5hcmlvLgoKQ291bGQgaXQgYmUgYSBjb21waWxlLW9ubHkgdGVzdD8gQWgsIHRoYXQgJiMzNDtzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcmIzM0OyBtZXNzYWdlIG1ha2VzIG1vcmUgc2Vuc2Ugbm93LiBBIHVzZXIgc3VibWl0dGVkIHRoZSBwYXRjaCB0byBzeXpib3QgZm9yIHRlc3RpbmcuIFN5emJvdCB3aWxsIHRyeSB0byBleGVjdXRlIGl0LCBidXQgaWYgaXQgaXMgdW5yZWFjaGFibGUsIHRoZSBwYXRjaCB3aWxsIG5vdCBiZSB0ZXN0ZWQuCgpIbW0sIGlzIHRoZXJlIGV2ZW4gYSByZW1vdGUgcG9zc2liaWxpdHkgb2YgKnNvZnR3YXJlKiBlbXVsYXRpb24gZm9yIGBhdGgxMmtgIHRoYXQgc3l6Ym90IGNvdWxkIGxldmVyYWdlPyBUaW1lIHRvIGxvb2sgdGhyb3VnaCBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuY2AgYW5kIGBjb3JlLmNgIGFuZCBzZWUgaWYgdGhlcmUgYXJlIGFueSBoaW50cyBvZiBzb2Z0d2FyZS1iYXNlZCBwcm9iaW5nIG9yIGVtdWxhdGlvbiBvZiB0aGUgaGFyZHdhcmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3BjaV9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTUwNz1hdGgxMmtfZ2V0X2RldmljZV9mYW1pbHkoY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYy0xNTI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTI4OnN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTUyOS1cdFx0XHQgICAgY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xODA4PWludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MjktXHRwY2lfZHJpdmVyLVx1MDAzZWlkX3RhYmxlID0gZHJpdmVyLVx1MDAzZWlkX3RhYmxlO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODMwOlx0cGNpX2RyaXZlci1cdTAwM2Vwcm9iZSA9IGF0aDEya19wY2lfcHJvYmU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MzEtXHRwY2lfZHJpdmVyLVx1MDAzZXJlbW92ZSA9IGF0aDEya19wY2lfcmVtb3ZlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA1OjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MTM4CgkJCQkJCQlvdXRwdXQ6IDQyCgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgYGF0aDEya2AgVmlydHVhbGl6YXRpb24gT3B0aW9ucyoqCgpPa2F5LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0byB0ZXN0IG9yIGRlYnVnIHRoZSBgYXRoMTJrYCBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGluaXRpYWwgYXNzdW1wdGlvbiDigJMgb3IsIHBlcmhhcHMsIHdpc2hmdWwgdGhpbmtpbmcg4oCTIHdhcyB0aGF0IHNvbWUga2luZCBvZiBlbXVsYXRpb24gbWlnaHQgZXhpc3Qgd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLiBCdXQgYWZ0ZXIgYSBxdWljayByZXZpZXcsIGl0IGxvb2tzIGxpa2UgdGhlcmUmIzM5O3Mgbm8gYnVpbHQtaW4gc29mdHdhcmUgZW11bGF0aW9uICpkaXJlY3RseSogZm9yIGBhdGgxMmtgLgoKVGhlbiBJIGNvbnNpZGVyZWQgYG1hYzgwMjExX2h3c2ltYC4gSSByZW1lbWJlciB0aGF0JiMzOTtzIGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBgbWFjODAyMTFgLCB3aGljaCBpcyB0aGUgZnJhbWV3b3JrIGBhdGgxMmtgIGxldmVyYWdlcywgYnV0IGl0JiMzOTtzIGEgY29tcGxldGVseSBzZXBhcmF0ZSBkcml2ZXIgKGBkcml2ZXJzL25ldC93aXJlbGVzcy9tYWM4MDIxMV9od3NpbS5jYCkuIEl0IGRvZXNuJiMzOTt0IGFjdHVhbGx5IGludGVyYWN0IHdpdGggYGF0aDEya2AmIzM5O3MgY29kZSBiYXNlLiBTbywgdGhhdCYjMzk7cyBhIGRlYWQgZW5kLgoKVGhpcyByZWFsaXphdGlvbiBpcyBsZWFkaW5nIG1lIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQsIGJhc2VkIG9uIHRoaXMgaW5pdGlhbCBpbnZlc3RpZ2F0aW9uLCBydW5uaW5nIGFuZCBpbnRlcmFjdGluZyB3aXRoIHRoZSBgYXRoMTJrYCBjb2RlIGlzIGVzc2VudGlhbGx5IGltcG9zc2libGUgaW4gdmlydHVhbCBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgZXZlbiBRRU1VIHdpdGhvdXQgc29tZSBmb3JtIG9mIFBDSSBwYXNzdGhyb3VnaCBvZiBhY3R1YWwsIHBoeXNpY2FsIGhhcmR3YXJlLiBUaGF0JiMzOTtzIGEgaHVnZSBjb25zdHJhaW50IG9uIHRoZSB3b3JrZmxvdy4KCkxldCBtZSBqdXN0IGRvIG9uZSBsYXN0IHNhbml0eSBjaGVjayBhbmQgc2VlIGlmIHRoZXJlIGlzIGFueSB2aXJ0dWFsIGJ1cywgb3Igc29tZSBzb3J0IG9mIG1vY2sgZW52aXJvbm1lbnQgZm9yIHRoZSBkcml2ZXIsIGp1c3QgaW4gY2FzZSBzb21ldGhpbmcgaGFzIGNoYW5nZWQsIG9yIHRoZXJlJiMzOTtzIHNvbWUgb2JzY3VyZSBvcHRpb24gSSYjMzk7bSBtaXNzaW5nLiBJdCB3b3VsZCBiZSBncmVhdCBpZiB0aGVyZSB3YXMgYW4gZWFzaWVyIG1ldGhvZC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMTcgMDU6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX2FoYl9wcm9iZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9OTk4PWF0aDEya19haGJfZ2V0X2RldmljZV9mYW1pbHkoY29uc3Qgc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEwMTgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjEwMTk6c3RhdGljIGludCBhdGgxMmtfYWhiX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEwMjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM9MTE4Nz1pbnQgYXRoMTJrX2FoYl9yZWdpc3Rlcl9kcml2ZXIoY29uc3QgZW51bSBhdGgxMmtfZGV2aWNlX2ZhbWlseSBkZXZpY2VfaWQsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjA4LVx0YWhiX2RyaXZlci1cdTAwM2Vkcml2ZXIub2ZfbWF0Y2hfdGFibGUgPSBkcml2ZXItXHUwMDNlaWRfdGFibGU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjEyMDk6XHRhaGJfZHJpdmVyLVx1MDAzZXByb2JlICA9IGF0aDEya19haGJfcHJvYmU7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEyMTAtXHRhaGJfZHJpdmVyLVx1MDAzZXJlbW92ZSA9IGF0aDEya19haGJfcmVtb3ZlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8xNyAwNTo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjk3OQoJCQkJCQkJb3V0cHV0OiA5NgoJCQkJCQkJdGhvdWdodHM6IDM2MQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCYjMzk7cyBGdXp6aW5nIFBvdGVudGlhbCoqCgpPa2F5LCBsZXQgbWUgdGhpbmsgdGhpcyB0aHJvdWdoLiBUaGlzIHBhdGNoLCBJIHNlZSwgaXMgdGFyZ2V0ZWQgYXQgQVJNIFNvQ3MsIHdoaWNoIGltbWVkaWF0ZWx5IHJhaXNlcyBhIHJlZCBmbGFnLiBUaGVzZSBvZnRlbiBpbnZvbHZlIHZlcnkgc3BlY2lmaWMgaGFyZHdhcmUgcmVxdWlyZW1lbnRzIHRoYXQgYSB0b29sIGxpa2Ugc3l6Ym90IHVzdWFsbHkgZG9lc24mIzM5O3QgbmF0aXZlbHkgaGFuZGxlLCBjZXJ0YWlubHkgbm90IHdpdGhvdXQgdGhlIGFwcHJvcHJpYXRlIGRldmljZSB0cmVlIG5vZGVzLiBIbW0sIGNvdWxkIHN5emJvdCBzb21laG93IGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzLCBJIHdvbmRlcj8gUGVyaGFwcyB0aHJvdWdoIGBzeXpfZGV2bWVtYCBvciBhIHNpbWlsYXIgbWVjaGFuaXNtPyBCdXQgZXZlbiB0aGVuLCB3ZSYjMzk7cmUgdGFsa2luZyBhYm91dCBuZWVkaW5nIHRvIG1hcCBtZW1vcnkgYW5kIGhhbmRsZSBpbnRlcnJ1cHRzLCBhbmQgdGhhdCYjMzk7cyBhICp2ZXJ5KiBnZW5lcmljIHdheSBvZiBkb2luZyB0aGluZ3MuIFN5emJvdCBkb2VzbiYjMzk7dCBoYXZlIHRoZSBzb3BoaXN0aWNhdGVkIGVtdWxhdGlvbiBjYXBhYmlsaXRpZXMgcmVxdWlyZWQgZm9yIHNvbWV0aGluZyBjb21wbGV4IGxpa2UgYGF0aDEya2AuCgpXYWl0IGEgc2Vjb25kLCB3aGF0IGlmIHRoaXMgcGF0Y2ggKmlzbiYjMzk7dCogc29sZWx5IGFib3V0IGBhdGgxMmtgPyBXaGF0IGlmIGl0IGFmZmVjdHMgYG1hYzgwMjExYCBtb3JlIGJyb2FkbHksIGFuZCBgYXRoMTJrYCBpcyBqdXN0IG9uZSBzcGVjaWZpYyBkcml2ZXIgdGhhdCYjMzk7cyB0b3VjaGVkPyBBaCwgbm8sIG15IG1pc3Rha2UuIFRoZSBmaWxlIHBhdGhzIGFyZSB2ZXJ5IHNwZWNpZmljOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNgLCBgY29yZS5oYCwgYW5kIGBtYWMuY2AuIE9rYXksIHNvIGl0JiMzOTtzIHN0cmljdGx5IGBhdGgxMmtgLXNwZWNpZmljIHRoZW4uIFRoYXQgY2hhbmdlcyB0aGluZ3MuCgpTaW5jZSBgYXRoMTJrYCBpcyBleHBsaWNpdGx5IGEgaGFyZHdhcmUgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMsIGFuZCB0aGVyZSYjMzk7cyBubyBlcXVpdmFsZW50IHNvZnR3YXJlIGVtdWxhdGlvbiBpbiB0aGUga2VybmVsIGxpa2Ugd2UgaGF2ZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZrbXNgIGZvciBEUk0sIGl0JiMzOTtzIGluaGVyZW50bHkgdW5yZWFjaGFibGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLiBJdCAqcmVxdWlyZXMqIHRoZSBhY3R1YWwgaGFyZHdhcmUgdG8gZnVuY3Rpb24uCgpUaGVyZWZvcmUsIGFjY29yZGluZyB0byBteSB1bmRlcnN0YW5kaW5nIGFuZCBhc3Nlc3NtZW50IG9mIHRoaXMgcGF0Y2gsIGBXb3J0aEZ1enppbmdgIGhhcyB0byBiZSBgZmFsc2VgLgoKTGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMganVzdCB0byBiZSBzdXJlLi4uIE9rYXksIGl0IHN0YXRlczogJiMzNDtSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS4mIzM0OwoKWWVzLCBgYXRoMTJrYCBpcyBhIHJlYWwgaGFyZHdhcmUgZHJpdmVyLCBsaWtlbHkgb24gUENJZSBvciBBSEIgZGV2aWNlcy4gSXQmIzM5O3Mgc2ltcGx5IG5vdCBwb3NzaWJsZSB0byByZWFjaCBpdCBpbiBHQ0UvUUVNVSwgb3IgYW55IG90aGVyIHZpcnR1YWxpemVkIGVudmlyb25tZW50LCB3aXRob3V0IHRoZSBhY3R1YWwgaGFyZHdhcmUgcHJlc2VudC4KClNvLCBJIHdpbGwgY29uZmlybSwgYFdvcnRoRnV6emluZz1mYWxzZWAuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzE3IDA1OjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogW10sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgKFBDSWUvQUhCKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHRoZSBrZXJuZWwsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgZHJpdmVyIGZvciBRdWFsY29tbSBXaS1GaSA3IGRldmljZXMgKFBDSWUvQUhCKS4gU2luY2UgdGhlcmUgaXMgbm8gc29mdHdhcmUgZW11bGF0aW9uIGZvciB0aGlzIGhhcmR3YXJlIGluIHRoZSBrZXJuZWwsIHRoZSBtb2RpZmllZCBjb2RlIHBhdGhzIGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA1OjQ4OjA1LjM3ODczOTgzMVoiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM2NzU1Mzc4NzE4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXIgZm9yIFF1YWxjb21tIFdpLUZpIDcgZGV2aWNlcyAoUENJZS9BSEIpLiBTaW5jZSB0aGVyZSBpcyBubyBzb2Z0d2FyZSBlbXVsYXRpb24gZm9yIHRoaXMgaGFyZHdhcmUgaW4gdGhlIGtlcm5lbCwgdGhlIG1vZGlmaWVkIGNvZGUgcGF0aHMgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODowNS4zNzg3NDY4NzFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc5NzQ2NjQ0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IGFlMmU1OGJkMjE3MDZjODBlZTM1OTgwMDljNmE1Yjg3YjVhMjhhNWRcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIEZyaSBKdWwgMTcgMDU6NDg6MDMgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xcbmluZGV4IDc0MmQ0ZmQxYjU5OGMyLi45NTY3M2QzYmU5ZGE5NyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXFxuQEAgLTE0NjMsNyArMTQ2Myw3IEBAIHZvaWQgYXRoMTJrX2NvcmVfaGFsdChzdHJ1Y3QgYXRoMTJrICphcilcXG4gXFxuIFxcdGF0aDEya19tYWNfc2Nhbl9maW5pc2goYXIpO1xcbiBcXHRhdGgxMmtfbWFjX3BlZXJfY2xlYW51cF9hbGwoYXIpO1xcbi1cXHRjYW5jZWxfZGVsYXllZF93b3JrX3N5bmMoXFx1MDAyNmFyLVxcdTAwM2VzY2FuLnRpbWVvdXQpO1xcbitcXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKGF0aDEya19hcl90b19odyhhciktXFx1MDAzZXdpcGh5LCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCk7XFxuIFxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmFyLVxcdTAwM2VyZWdkX3VwZGF0ZV93b3JrKTtcXG4gXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2YXItXFx1MDAzZXJlZ2RfY2hhbm5lbF91cGRhdGVfd29yayk7XFxuIFxcdGNhbmNlbF93b3JrX3N5bmMoXFx1MDAyNmFiLVxcdTAwM2VyZmtpbGxfd29yayk7XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG5pbmRleCBmYzUxMjdiNWMxYTM3Zi4uYjZmZDVlOWRmZGI3ODYgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxcbkBAIC02MzUsMTEgKzYzNSwxMiBAQCBzdHJ1Y3QgYXRoMTJrIHtcXG4gXFx0XFx0c3RydWN0IGNvbXBsZXRpb24gc3RhcnRlZDtcXG4gXFx0XFx0c3RydWN0IGNvbXBsZXRpb24gY29tcGxldGVkO1xcbiBcXHRcXHRzdHJ1Y3QgY29tcGxldGlvbiBvbl9jaGFubmVsO1xcbi1cXHRcXHRzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXQ7XFxuK1xcdFxcdHN0cnVjdCB3aXBoeV9kZWxheWVkX3dvcmsgdGltZW91dDtcXG4gXFx0XFx0ZW51bSBhdGgxMmtfc2Nhbl9zdGF0ZSBzdGF0ZTtcXG4gXFx0XFx0Ym9vbCBpc19yb2M7XFxuIFxcdFxcdGludCByb2NfZnJlcTtcXG4gXFx0XFx0Ym9vbCByb2Nfbm90aWZ5O1xcbitcXHRcXHRib29sIGZpbmlzaF9xdWV1ZWQ7XFxuIFxcdFxcdHN0cnVjdCB3aXBoeV93b3JrIHZkZXZfY2xlYW5fd2s7XFxuIFxcdFxcdHN0cnVjdCBhdGgxMmtfbGlua192aWYgKmFydmlmO1xcbiBcXHR9IHNjYW47XFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuaW5kZXggNTFjNGRmMzJlNzE2OTUuLmY1M2RmOGQ0YzgwOGE0IDEwMDY0NFxcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jXFxuQEAgLTUxNjIsNyArNTE2Miw3IEBAIHZvaWQgX19hdGgxMmtfbWFjX3NjYW5fZmluaXNoKHN0cnVjdCBhdGgxMmsgKmFyKVxcbiBcXHRcXHRcXHRpZWVlODAyMTFfcmVtYWluX29uX2NoYW5uZWxfZXhwaXJlZChodyk7XFxuIFxcdFxcdGZhbGx0aHJvdWdoO1xcbiBcXHRjYXNlIEFUSDEyS19TQ0FOX1NUQVJUSU5HOlxcbi1cXHRcXHRjYW5jZWxfZGVsYXllZF93b3JrKFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0KTtcXG4rXFx0XFx0YXItXFx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IHRydWU7XFxuIFxcdFxcdGNvbXBsZXRlX2FsbChcXHUwMDI2YXItXFx1MDAzZXNjYW4uY29tcGxldGVkKTtcXG4gXFx0XFx0d2lwaHlfd29ya19xdWV1ZShhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSwgXFx1MDAyNmFyLVxcdTAwM2VzY2FuLnZkZXZfY2xlYW5fd2spO1xcbiBcXHRcXHRicmVhaztcXG5AQCAtNTI1NCwxNCArNTI1NCwyMyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl9hYm9ydChzdHJ1Y3QgYXRoMTJrICphcilcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbiB9XFxuIFxcbi1zdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl90aW1lb3V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxcbitzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl90aW1lb3V0X3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSxcXG4rXFx0XFx0XFx0XFx0ICAgICBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcXG4ge1xcbi1cXHRzdHJ1Y3QgYXRoMTJrICphciA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXRoMTJrLFxcbi1cXHRcXHRcXHRcXHRcXHQgc2Nhbi50aW1lb3V0LndvcmspO1xcbitcXHRzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrICpkd29yaztcXG4rXFx0c3RydWN0IGF0aDEyayAqYXI7XFxuK1xcbitcXHRkd29yayA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrLCB3b3JrKTtcXG4rXFx0YXIgPSBjb250YWluZXJfb2YoZHdvcmssIHN0cnVjdCBhdGgxMmssIHNjYW4udGltZW91dCk7XFxuK1xcbitcXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbitcXHRpZiAoYXItXFx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCkge1xcbitcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuK1xcdFxcdHJldHVybjtcXG4rXFx0fVxcbitcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIFxcbi1cXHR3aXBoeV9sb2NrKGF0aDEya19hcl90b19odyhhciktXFx1MDAzZXdpcGh5KTtcXG4gXFx0YXRoMTJrX3NjYW5fYWJvcnQoYXIpO1xcbi1cXHR3aXBoeV91bmxvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cXHUwMDNld2lwaHkpO1xcbiB9XFxuIFxcbiBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3NjYW5fc2VuZF9jb21wbGV0ZShzdHJ1Y3QgYXRoMTJrICphcixcXG5AQCAtNTI5Miw2ICs1MzAxLDggQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fdmRldl9jbGVhbl93b3JrKHN0cnVjdCB3aXBoeSAqd2lwaHksIHN0cnVjdCB3aXBoeV93b3JrICpcXG4gXFxuIFxcdGFydmlmID0gYXItXFx1MDAzZXNjYW4uYXJ2aWY7XFxuIFxcbitcXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKHdpcGh5LCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCk7XFxuK1xcbiBcXHQvKiBUaGUgc2NhbiB2ZGV2IGhhcyBhbHJlYWR5IGJlZW4gZGVsZXRlZC4gVGhpcyBjYW4gb2NjdXIgd2hlbiBhXFxuIFxcdCAqIG5ldyBzY2FuIHJlcXVlc3QgaXMgbWFkZSBvbiB0aGUgc2FtZSB2aWYgd2l0aCBhIGRpZmZlcmVudFxcbiBcXHQgKiBmcmVxdWVuY3ksIGNhdXNpbmcgdGhlIHNjYW4gYXJ2aWYgdG8gbW92ZSBmcm9tIG9uZSByYWRpbyB0b1xcbkBAIC01MzIzLDYgKzUzMzQsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl92ZGV2X2NsZWFuX3dvcmsoc3RydWN0IHdpcGh5ICp3aXBoeSwgc3RydWN0IHdpcGh5X3dvcmsgKlxcbiBcXHR9XFxuIFxcbiBcXHRhci1cXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XFxuK1xcdGFyLVxcdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcXG4gXFx0YXItXFx1MDAzZXNjYW5fY2hhbm5lbCA9IE5VTEw7XFxuIFxcdGFyLVxcdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcXG4gXFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbkBAIC01NjA5LDYgKzU2MjEsNyBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0cmVpbml0X2NvbXBsZXRpb24oXFx1MDAyNmFyLVxcdTAwM2VzY2FuLmNvbXBsZXRlZCk7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fU1RBUlRJTkc7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLmlzX3JvYyA9IGZhbHNlO1xcbitcXHRcXHRhci1cXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLmFydmlmID0gYXJ2aWY7XFxuIFxcdFxcdHJldCA9IDA7XFxuIFxcdFxcdGJyZWFrO1xcbkBAIC01NjY1LDYgKzU2NzgsNyBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFxuIFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTtcXG4rXFx0XFx0YXItXFx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xcbiBcXHRcXHRzcGluX3VubG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIFxcdFxcdGdvdG8gZXhpdDtcXG4gXFx0fVxcbkBAIC01NjcyLDkgKzU2ODYsMTAgQEAgc3RhdGljIGludCBhdGgxMmtfbWFjX2luaXRpYXRlX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdGF0aDEya19kYmcoYXItXFx1MDAzZWFiLCBBVEgxMktfREJHX01BQywgXFxcIm1hYyBzY2FuIHN0YXJ0ZWRcXFwiKTtcXG4gXFxuIFxcdC8qIEFkZCBhIG1hcmdpbiB0byBhY2NvdW50IGZvciBldmVudC9jb21tYW5kIHByb2Nlc3NpbmcgKi9cXG4tXFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhhdGgxMmtfYXJfdG9faHcoYXIpLCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCxcXG4tXFx0XFx0XFx0XFx0ICAgICBtc2Vjc190b19qaWZmaWVzKGFyZy1cXHUwMDNlbWF4X3NjYW5fdGltZSArXFxuLVxcdFxcdFxcdFxcdFxcdFxcdCAgICAgIEFUSDEyS19NQUNfU0NBTl9USU1FT1VUX01TRUNTKSk7XFxuK1xcdHdpcGh5X2RlbGF5ZWRfd29ya19xdWV1ZShhdGgxMmtfYXJfdG9faHcoYXIpLVxcdTAwM2V3aXBoeSxcXG4rXFx0XFx0XFx0XFx0IFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0LFxcbitcXHRcXHRcXHRcXHQgbXNlY3NfdG9famlmZmllcyhhcmctXFx1MDAzZW1heF9zY2FuX3RpbWUgK1xcbitcXHRcXHRcXHRcXHRcXHRcXHQgIEFUSDEyS19NQUNfU0NBTl9USU1FT1VUX01TRUNTKSk7XFxuIFxcbiBleGl0OlxcbiBcXHRpZiAoYXJnKSB7XFxuQEAgLTU3NTcsNiArNTc3Miw3IEBAIGludCBhdGgxMmtfbWFjX29wX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuIFxcdFxcdFxcdFxcdHNwaW5fbG9ja19iaChcXHUwMDI2YXItXFx1MDAzZWRhdGFfbG9jayk7XFxuIFxcdFxcdFxcdFxcdGFyLVxcdTAwM2VzY2FuLmFydmlmID0gTlVMTDtcXG4gXFx0XFx0XFx0XFx0YXItXFx1MDAzZXNjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFO1xcbitcXHRcXHRcXHRcXHRhci1cXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XFxuIFxcdFxcdFxcdFxcdGFyLVxcdTAwM2VzY2FuX2NoYW5uZWwgPSBOVUxMO1xcbiBcXHRcXHRcXHRcXHRhci1cXHUwMDNlc2Nhbi5yb2NfZnJlcSA9IDA7XFxuIFxcdFxcdFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG5AQCAtNTc5Miw3ICs1ODA4LDcgQEAgdm9pZCBhdGgxMmtfbWFjX29wX2NhbmNlbF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXG4gXFx0XFx0YXRoMTJrX3NjYW5fYWJvcnQoYXIpO1xcbiBcXG4tXFx0XFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0KTtcXG4rXFx0XFx0d2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbChody1cXHUwMDNld2lwaHksIFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0KTtcXG4gXFx0fVxcbiB9XFxuIEVYUE9SVF9TWU1CT0woYXRoMTJrX21hY19vcF9jYW5jZWxfaHdfc2Nhbik7XFxuQEAgLTk5MzUsNyArOTk1MSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc3RvcChzdHJ1Y3QgYXRoMTJrICphcilcXG4gXFxuIFxcdGNsZWFyX2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXFx1MDAyNmFyLVxcdTAwM2VkZXZfZmxhZ3MpO1xcbiBcXG4tXFx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0KTtcXG4rXFx0d2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbChhdGgxMmtfYXJfdG9faHcoYXIpLVxcdTAwM2V3aXBoeSwgXFx1MDAyNmFyLVxcdTAwM2VzY2FuLnRpbWVvdXQpO1xcbiBcXHR3aXBoeV93b3JrX2NhbmNlbChhdGgxMmtfYXJfdG9faHcoYXIpLVxcdTAwM2V3aXBoeSwgXFx1MDAyNmFyLVxcdTAwM2VzY2FuLnZkZXZfY2xlYW5fd2spO1xcbiBcXHRjYW5jZWxfd29ya19zeW5jKFxcdTAwMjZhci1cXHUwMDNlcmVnZF9jaGFubmVsX3VwZGF0ZV93b3JrKTtcXG4gXFx0Y2FuY2VsX3dvcmtfc3luYyhcXHUwMDI2YXItXFx1MDAzZXJlZ2RfdXBkYXRlX3dvcmspO1xcbkBAIC0xMDk2Miw2ICsxMDk3OCw3IEBAIHZvaWQgYXRoMTJrX21hY19vcF9yZW1vdmVfaW50ZXJmYWNlKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHRcXHR9XFxuIFxcbiBcXHRcXHRcXHRhci1cXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XFxuK1xcdFxcdFxcdGFyLVxcdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcXG4gXFx0XFx0XFx0YXItXFx1MDAzZXNjYW5fY2hhbm5lbCA9IE5VTEw7XFxuIFxcdFxcdFxcdGFyLVxcdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcXG4gXFx0XFx0XFx0c3Bpbl91bmxvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbkBAIC0xMzg3Niw3ICsxMzg5Myw3IEBAIGludCBhdGgxMmtfbWFjX29wX2NhbmNlbF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFxuIFxcdGF0aDEya19zY2FuX2Fib3J0KGFyKTtcXG4gXFxuLVxcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCk7XFxuK1xcdHdpcGh5X2RlbGF5ZWRfd29ya19jYW5jZWwoaHctXFx1MDAzZXdpcGh5LCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCk7XFxuIFxcdHdpcGh5X3dvcmtfZmx1c2goaHctXFx1MDAzZXdpcGh5LCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udmRldl9jbGVhbl93ayk7XFxuIFxcbiBcXHRyZXR1cm4gMDtcXG5AQCAtMTM5NTYsNiArMTM5NzMsNyBAQCBpbnQgYXRoMTJrX21hY19vcF9yZW1haW5fb25fY2hhbm5lbChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0cmVpbml0X2NvbXBsZXRpb24oXFx1MDAyNmFyLVxcdTAwM2VzY2FuLm9uX2NoYW5uZWwpO1xcbiBcXHRcXHRhci1cXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX1NUQVJUSU5HO1xcbiBcXHRcXHRhci1cXHUwMDNlc2Nhbi5pc19yb2MgPSB0cnVlO1xcbitcXHRcXHRhci1cXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLmFydmlmID0gYXJ2aWY7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLnJvY19mcmVxID0gY2hhbi1cXHUwMDNlY2VudGVyX2ZyZXE7XFxuIFxcdFxcdGFyLVxcdTAwM2VzY2FuLnJvY19ub3RpZnkgPSB0cnVlO1xcbkBAIC0xMzk5OCw2ICsxNDAxNiw3IEBAIGludCBhdGgxMmtfbWFjX29wX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXG4gXFx0XFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4gXFx0XFx0YXItXFx1MDAzZXNjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9JRExFO1xcbitcXHRcXHRhci1cXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XFxuIFxcdFxcdHNwaW5fdW5sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG4gXFx0XFx0cmV0dXJuIHJldDtcXG4gXFx0fVxcbkBAIC0xNDAxMSw4ICsxNDAzMCw4IEBAIGludCBhdGgxMmtfbWFjX29wX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxcbiBcXHRcXHRyZXR1cm4gLUVUSU1FRE9VVDtcXG4gXFx0fVxcbiBcXG4tXFx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXFx1MDAyNmFyLVxcdTAwM2VzY2FuLnRpbWVvdXQsXFxuLVxcdFxcdFxcdFxcdCAgICAgbXNlY3NfdG9famlmZmllcyhkdXJhdGlvbikpO1xcbitcXHR3aXBoeV9kZWxheWVkX3dvcmtfcXVldWUoaHctXFx1MDAzZXdpcGh5LCBcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCxcXG4rXFx0XFx0XFx0XFx0IG1zZWNzX3RvX2ppZmZpZXMoZHVyYXRpb24pKTtcXG4gXFxuIFxcdHJldHVybiAwO1xcbiB9XFxuQEAgLTE1MDUyLDYgKzE1MDcxLDcgQEAgc3RhdGljIHZvaWQgYXRoMTJrX21hY19zZXR1cChzdHJ1Y3QgYXRoMTJrICphcilcXG4gXFx0YXItXFx1MDAzZW51bV90eF9jaGFpbnMgPSBod2VpZ2h0MzIocGRldi1cXHUwMDNlY2FwLnR4X2NoYWluX21hc2spO1xcbiBcXHRhci1cXHUwMDNlbnVtX3J4X2NoYWlucyA9IGh3ZWlnaHQzMihwZGV2LVxcdTAwM2VjYXAucnhfY2hhaW5fbWFzayk7XFxuIFxcdGFyLVxcdTAwM2VzY2FuLmFydmlmID0gTlVMTDtcXG4rXFx0YXItXFx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xcbiBcXHRhci1cXHUwMDNldmRldl9pZF8xMWRfc2NhbiA9IEFUSDEyS18xMURfSU5WQUxJRF9WREVWX0lEO1xcbiBcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbkBAIC0xNTA3Nyw3ICsxNTA5Nyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIpXFxuIFxcdGFyLVxcdTAwM2V0aGVybWFsLnRlbXBlcmF0dXJlID0gMDtcXG4gXFx0YXItXFx1MDAzZXRoZXJtYWwuaHdtb25fZGV2ID0gTlVMTDtcXG4gXFxuLVxcdElOSVRfREVMQVlFRF9XT1JLKFxcdTAwMjZhci1cXHUwMDNlc2Nhbi50aW1lb3V0LCBhdGgxMmtfc2Nhbl90aW1lb3V0X3dvcmspO1xcbitcXHR3aXBoeV9kZWxheWVkX3dvcmtfaW5pdChcXHUwMDI2YXItXFx1MDAzZXNjYW4udGltZW91dCwgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKTtcXG4gXFx0d2lwaHlfd29ya19pbml0KFxcdTAwMjZhci1cXHUwMDNlc2Nhbi52ZGV2X2NsZWFuX3drLCBhdGgxMmtfc2Nhbl92ZGV2X2NsZWFuX3dvcmspO1xcbiBcXHRJTklUX1dPUksoXFx1MDAyNmFyLVxcdTAwM2VyZWdkX2NoYW5uZWxfdXBkYXRlX3dvcmssIGF0aDEya19yZWdkX3VwZGF0ZV9jaGFuX2xpc3Rfd29yayk7XFxuIFxcdElOSVRfTElTVF9IRUFEKFxcdTAwMjZhci1cXHUwMDNlcmVnZF9jaGFubmVsX3VwZGF0ZV9xdWV1ZSk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA1OjQ4OjA2LjE3NzUwODI5NVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzU5NTY1OTg1MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbmV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXRcbiAgIHNwZWNpZmljYWxseSBjb3ZlciB0aGUgbW9kaWZpZWQgY29kZS4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzIG91dHB1dCBhcnJheSxcbiAgIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgYWUyZTU4YmQyMTcwNmM4MGVlMzU5ODAwOWM2YTViODdiNWEyOGE1ZFxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBGcmkgSnVsIDE3IDA1OjQ4OjAzIDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuY1xuaW5kZXggNzQyZDRmZDFiNTk4YzIuLjk1NjczZDNiZTlkYTk3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5jXG5AQCAtMTQ2Myw3ICsxNDYzLDcgQEAgdm9pZCBhdGgxMmtfY29yZV9oYWx0KHN0cnVjdCBhdGgxMmsgKmFyKVxuIFxuIFx0YXRoMTJrX21hY19zY2FuX2ZpbmlzaChhcik7XG4gXHRhdGgxMmtfbWFjX3BlZXJfY2xlYW51cF9hbGwoYXIpO1xuLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4rXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4gXHRjYW5jZWxfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXJlZ2RfdXBkYXRlX3dvcmspO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VyZWdkX2NoYW5uZWxfdXBkYXRlX3dvcmspO1xuIFx0Y2FuY2VsX3dvcmtfc3luYyhcdTAwMjZhYi1cdTAwM2VyZmtpbGxfd29yayk7XG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmggYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2NvcmUuaFxuaW5kZXggZmM1MTI3YjVjMWEzN2YuLmI2ZmQ1ZTlkZmRiNzg2IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmhcbisrKyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvY29yZS5oXG5AQCAtNjM1LDExICs2MzUsMTIgQEAgc3RydWN0IGF0aDEyayB7XG4gXHRcdHN0cnVjdCBjb21wbGV0aW9uIHN0YXJ0ZWQ7XG4gXHRcdHN0cnVjdCBjb21wbGV0aW9uIGNvbXBsZXRlZDtcbiBcdFx0c3RydWN0IGNvbXBsZXRpb24gb25fY2hhbm5lbDtcbi1cdFx0c3RydWN0IGRlbGF5ZWRfd29yayB0aW1lb3V0O1xuK1x0XHRzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrIHRpbWVvdXQ7XG4gXHRcdGVudW0gYXRoMTJrX3NjYW5fc3RhdGUgc3RhdGU7XG4gXHRcdGJvb2wgaXNfcm9jO1xuIFx0XHRpbnQgcm9jX2ZyZXE7XG4gXHRcdGJvb2wgcm9jX25vdGlmeTtcbitcdFx0Ym9vbCBmaW5pc2hfcXVldWVkO1xuIFx0XHRzdHJ1Y3Qgd2lwaHlfd29yayB2ZGV2X2NsZWFuX3drO1xuIFx0XHRzdHJ1Y3QgYXRoMTJrX2xpbmtfdmlmICphcnZpZjtcbiBcdH0gc2NhbjtcbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuaW5kZXggNTFjNGRmMzJlNzE2OTUuLmY1M2RmOGQ0YzgwOGE0IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuKysrIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuY1xuQEAgLTUxNjIsNyArNTE2Miw3IEBAIHZvaWQgX19hdGgxMmtfbWFjX3NjYW5fZmluaXNoKHN0cnVjdCBhdGgxMmsgKmFyKVxuIFx0XHRcdGllZWU4MDIxMV9yZW1haW5fb25fY2hhbm5lbF9leHBpcmVkKGh3KTtcbiBcdFx0ZmFsbHRocm91Z2g7XG4gXHRjYXNlIEFUSDEyS19TQ0FOX1NUQVJUSU5HOlxuLVx0XHRjYW5jZWxfZGVsYXllZF93b3JrKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4rXHRcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IHRydWU7XG4gXHRcdGNvbXBsZXRlX2FsbChcdTAwMjZhci1cdTAwM2VzY2FuLmNvbXBsZXRlZCk7XG4gXHRcdHdpcGh5X3dvcmtfcXVldWUoYXItXHUwMDNlYWgtXHUwMDNlaHctXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udmRldl9jbGVhbl93ayk7XG4gXHRcdGJyZWFrO1xuQEAgLTUyNTQsMTQgKzUyNTQsMjMgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3NjYW5fYWJvcnQoc3RydWN0IGF0aDEyayAqYXIpXG4gXHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIH1cbiBcbi1zdGF0aWMgdm9pZCBhdGgxMmtfc2Nhbl90aW1lb3V0X3dvcmsoc3RydWN0IHdvcmtfc3RydWN0ICp3b3JrKVxuK3N0YXRpYyB2b2lkIGF0aDEya19zY2FuX3RpbWVvdXRfd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LFxuK1x0XHRcdFx0ICAgICBzdHJ1Y3Qgd2lwaHlfd29yayAqd29yaylcbiB7XG4tXHRzdHJ1Y3QgYXRoMTJrICphciA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgYXRoMTJrLFxuLVx0XHRcdFx0XHQgc2Nhbi50aW1lb3V0LndvcmspO1xuK1x0c3RydWN0IHdpcGh5X2RlbGF5ZWRfd29yayAqZHdvcms7XG4rXHRzdHJ1Y3QgYXRoMTJrICphcjtcbitcbitcdGR3b3JrID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCB3aXBoeV9kZWxheWVkX3dvcmssIHdvcmspO1xuK1x0YXIgPSBjb250YWluZXJfb2YoZHdvcmssIHN0cnVjdCBhdGgxMmssIHNjYW4udGltZW91dCk7XG4rXG4rXHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbitcdGlmIChhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQpIHtcbitcdFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbitcdFx0cmV0dXJuO1xuK1x0fVxuK1x0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcbi1cdHdpcGh5X2xvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG4gXHRhdGgxMmtfc2Nhbl9hYm9ydChhcik7XG4tXHR3aXBoeV91bmxvY2soYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSk7XG4gfVxuIFxuIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2Nhbl9zZW5kX2NvbXBsZXRlKHN0cnVjdCBhdGgxMmsgKmFyLFxuQEAgLTUyOTIsNiArNTMwMSw4IEBAIHN0YXRpYyB2b2lkIGF0aDEya19zY2FuX3ZkZXZfY2xlYW5fd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqXG4gXG4gXHRhcnZpZiA9IGFyLVx1MDAzZXNjYW4uYXJ2aWY7XG4gXG4rXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKHdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuK1xuIFx0LyogVGhlIHNjYW4gdmRldiBoYXMgYWxyZWFkeSBiZWVuIGRlbGV0ZWQuIFRoaXMgY2FuIG9jY3VyIHdoZW4gYVxuIFx0ICogbmV3IHNjYW4gcmVxdWVzdCBpcyBtYWRlIG9uIHRoZSBzYW1lIHZpZiB3aXRoIGEgZGlmZmVyZW50XG4gXHQgKiBmcmVxdWVuY3ksIGNhdXNpbmcgdGhlIHNjYW4gYXJ2aWYgdG8gbW92ZSBmcm9tIG9uZSByYWRpbyB0b1xuQEAgLTUzMjMsNiArNTMzNCw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19zY2FuX3ZkZXZfY2xlYW5fd29yayhzdHJ1Y3Qgd2lwaHkgKndpcGh5LCBzdHJ1Y3Qgd2lwaHlfd29yayAqXG4gXHR9XG4gXG4gXHRhci1cdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fSURMRTtcbitcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0YXItXHUwMDNlc2Nhbl9jaGFubmVsID0gTlVMTDtcbiBcdGFyLVx1MDAzZXNjYW4ucm9jX2ZyZXEgPSAwO1xuIFx0c3Bpbl91bmxvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbkBAIC01NjA5LDYgKzU2MjEsNyBAQCBzdGF0aWMgaW50IGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbihzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0cmVpbml0X2NvbXBsZXRpb24oXHUwMDI2YXItXHUwMDNlc2Nhbi5jb21wbGV0ZWQpO1xuIFx0XHRhci1cdTAwM2VzY2FuLnN0YXRlID0gQVRIMTJLX1NDQU5fU1RBUlRJTkc7XG4gXHRcdGFyLVx1MDAzZXNjYW4uaXNfcm9jID0gZmFsc2U7XG4rXHRcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0XHRhci1cdTAwM2VzY2FuLmFydmlmID0gYXJ2aWY7XG4gXHRcdHJldCA9IDA7XG4gXHRcdGJyZWFrO1xuQEAgLTU2NjUsNiArNTY3OCw3IEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19pbml0aWF0ZV9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XG4rXHRcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIFx0XHRnb3RvIGV4aXQ7XG4gXHR9XG5AQCAtNTY3Miw5ICs1Njg2LDEwIEBAIHN0YXRpYyBpbnQgYXRoMTJrX21hY19pbml0aWF0ZV9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0YXRoMTJrX2RiZyhhci1cdTAwM2VhYiwgQVRIMTJLX0RCR19NQUMsIFwibWFjIHNjYW4gc3RhcnRlZFwiKTtcbiBcbiBcdC8qIEFkZCBhIG1hcmdpbiB0byBhY2NvdW50IGZvciBldmVudC9jb21tYW5kIHByb2Nlc3NpbmcgKi9cbi1cdGllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmsoYXRoMTJrX2FyX3RvX2h3KGFyKSwgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0LFxuLVx0XHRcdFx0ICAgICBtc2Vjc190b19qaWZmaWVzKGFyZy1cdTAwM2VtYXhfc2Nhbl90aW1lICtcbi1cdFx0XHRcdFx0XHQgICAgICBBVEgxMktfTUFDX1NDQU5fVElNRU9VVF9NU0VDUykpO1xuK1x0d2lwaHlfZGVsYXllZF93b3JrX3F1ZXVlKGF0aDEya19hcl90b19odyhhciktXHUwMDNld2lwaHksXG4rXHRcdFx0XHQgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0LFxuK1x0XHRcdFx0IG1zZWNzX3RvX2ppZmZpZXMoYXJnLVx1MDAzZW1heF9zY2FuX3RpbWUgK1xuK1x0XHRcdFx0XHRcdCAgQVRIMTJLX01BQ19TQ0FOX1RJTUVPVVRfTVNFQ1MpKTtcbiBcbiBleGl0OlxuIFx0aWYgKGFyZykge1xuQEAgLTU3NTcsNiArNTc3Miw3IEBAIGludCBhdGgxMmtfbWFjX29wX2h3X3NjYW4oc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdFx0XHRcdGFyLVx1MDAzZXNjYW4uYXJ2aWYgPSBOVUxMO1xuIFx0XHRcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XG4rXHRcdFx0XHRhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcbiBcdFx0XHRcdGFyLVx1MDAzZXNjYW5fY2hhbm5lbCA9IE5VTEw7XG4gXHRcdFx0XHRhci1cdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcbiBcdFx0XHRcdHNwaW5fdW5sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG5AQCAtNTc5Miw3ICs1ODA4LDcgQEAgdm9pZCBhdGgxMmtfbWFjX29wX2NhbmNlbF9od19zY2FuKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0XHRhdGgxMmtfc2Nhbl9hYm9ydChhcik7XG4gXG4tXHRcdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuK1x0XHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKGh3LVx1MDAzZXdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuIFx0fVxuIH1cbiBFWFBPUlRfU1lNQk9MKGF0aDEya19tYWNfb3BfY2FuY2VsX2h3X3NjYW4pO1xuQEAgLTk5MzUsNyArOTk1MSw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc3RvcChzdHJ1Y3QgYXRoMTJrICphcilcbiBcbiBcdGNsZWFyX2JpdChBVEgxMktfRkxBR19DQUNfUlVOTklORywgXHUwMDI2YXItXHUwMDNlZGV2X2ZsYWdzKTtcbiBcbi1cdGNhbmNlbF9kZWxheWVkX3dvcmtfc3luYyhcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuK1x0d2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbChhdGgxMmtfYXJfdG9faHcoYXIpLVx1MDAzZXdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuIFx0d2lwaHlfd29ya19jYW5jZWwoYXRoMTJrX2FyX3RvX2h3KGFyKS1cdTAwM2V3aXBoeSwgXHUwMDI2YXItXHUwMDNlc2Nhbi52ZGV2X2NsZWFuX3drKTtcbiBcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2YXItXHUwMDNlcmVnZF9jaGFubmVsX3VwZGF0ZV93b3JrKTtcbiBcdGNhbmNlbF93b3JrX3N5bmMoXHUwMDI2YXItXHUwMDNlcmVnZF91cGRhdGVfd29yayk7XG5AQCAtMTA5NjIsNiArMTA5NzgsNyBAQCB2b2lkIGF0aDEya19tYWNfb3BfcmVtb3ZlX2ludGVyZmFjZShzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcbiBcdFx0XHR9XG4gXG4gXHRcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XG4rXHRcdFx0YXItXHUwMDNlc2Nhbi5maW5pc2hfcXVldWVkID0gZmFsc2U7XG4gXHRcdFx0YXItXHUwMDNlc2Nhbl9jaGFubmVsID0gTlVMTDtcbiBcdFx0XHRhci1cdTAwM2VzY2FuLnJvY19mcmVxID0gMDtcbiBcdFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuQEAgLTEzODc2LDcgKzEzODkzLDcgQEAgaW50IGF0aDEya19tYWNfb3BfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0YXRoMTJrX3NjYW5fYWJvcnQoYXIpO1xuIFxuLVx0Y2FuY2VsX2RlbGF5ZWRfd29ya19zeW5jKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCk7XG4rXHR3aXBoeV9kZWxheWVkX3dvcmtfY2FuY2VsKGh3LVx1MDAzZXdpcGh5LCBcdTAwMjZhci1cdTAwM2VzY2FuLnRpbWVvdXQpO1xuIFx0d2lwaHlfd29ya19mbHVzaChody1cdTAwM2V3aXBoeSwgXHUwMDI2YXItXHUwMDNlc2Nhbi52ZGV2X2NsZWFuX3drKTtcbiBcbiBcdHJldHVybiAwO1xuQEAgLTEzOTU2LDYgKzEzOTczLDcgQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdHJlaW5pdF9jb21wbGV0aW9uKFx1MDAyNmFyLVx1MDAzZXNjYW4ub25fY2hhbm5lbCk7XG4gXHRcdGFyLVx1MDAzZXNjYW4uc3RhdGUgPSBBVEgxMktfU0NBTl9TVEFSVElORztcbiBcdFx0YXItXHUwMDNlc2Nhbi5pc19yb2MgPSB0cnVlO1xuK1x0XHRhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSBmYWxzZTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5hcnZpZiA9IGFydmlmO1xuIFx0XHRhci1cdTAwM2VzY2FuLnJvY19mcmVxID0gY2hhbi1cdTAwM2VjZW50ZXJfZnJlcTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5yb2Nfbm90aWZ5ID0gdHJ1ZTtcbkBAIC0xMzk5OCw2ICsxNDAxNiw3IEBAIGludCBhdGgxMmtfbWFjX29wX3JlbWFpbl9vbl9jaGFubmVsKHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFxuIFx0XHRzcGluX2xvY2tfYmgoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbiBcdFx0YXItXHUwMDNlc2Nhbi5zdGF0ZSA9IEFUSDEyS19TQ0FOX0lETEU7XG4rXHRcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0XHRzcGluX3VubG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuIFx0XHRyZXR1cm4gcmV0O1xuIFx0fVxuQEAgLTE0MDExLDggKzE0MDMwLDggQEAgaW50IGF0aDEya19tYWNfb3BfcmVtYWluX29uX2NoYW5uZWwoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdHJldHVybiAtRVRJTUVET1VUO1xuIFx0fVxuIFxuLVx0aWVlZTgwMjExX3F1ZXVlX2RlbGF5ZWRfd29yayhodywgXHUwMDI2YXItXHUwMDNlc2Nhbi50aW1lb3V0LFxuLVx0XHRcdFx0ICAgICBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uKSk7XG4rXHR3aXBoeV9kZWxheWVkX3dvcmtfcXVldWUoaHctXHUwMDNld2lwaHksIFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCxcbitcdFx0XHRcdCBtc2Vjc190b19qaWZmaWVzKGR1cmF0aW9uKSk7XG4gXG4gXHRyZXR1cm4gMDtcbiB9XG5AQCAtMTUwNTIsNiArMTUwNzEsNyBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfbWFjX3NldHVwKHN0cnVjdCBhdGgxMmsgKmFyKVxuIFx0YXItXHUwMDNlbnVtX3R4X2NoYWlucyA9IGh3ZWlnaHQzMihwZGV2LVx1MDAzZWNhcC50eF9jaGFpbl9tYXNrKTtcbiBcdGFyLVx1MDAzZW51bV9yeF9jaGFpbnMgPSBod2VpZ2h0MzIocGRldi1cdTAwM2VjYXAucnhfY2hhaW5fbWFzayk7XG4gXHRhci1cdTAwM2VzY2FuLmFydmlmID0gTlVMTDtcbitcdGFyLVx1MDAzZXNjYW4uZmluaXNoX3F1ZXVlZCA9IGZhbHNlO1xuIFx0YXItXHUwMDNldmRldl9pZF8xMWRfc2NhbiA9IEFUSDEyS18xMURfSU5WQUxJRF9WREVWX0lEO1xuIFxuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2YXItXHUwMDNlZGF0YV9sb2NrKTtcbkBAIC0xNTA3Nyw3ICsxNTA5Nyw3IEBAIHN0YXRpYyB2b2lkIGF0aDEya19tYWNfc2V0dXAoc3RydWN0IGF0aDEyayAqYXIpXG4gXHRhci1cdTAwM2V0aGVybWFsLnRlbXBlcmF0dXJlID0gMDtcbiBcdGFyLVx1MDAzZXRoZXJtYWwuaHdtb25fZGV2ID0gTlVMTDtcbiBcbi1cdElOSVRfREVMQVlFRF9XT1JLKFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCwgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKTtcbitcdHdpcGh5X2RlbGF5ZWRfd29ya19pbml0KFx1MDAyNmFyLVx1MDAzZXNjYW4udGltZW91dCwgYXRoMTJrX3NjYW5fdGltZW91dF93b3JrKTtcbiBcdHdpcGh5X3dvcmtfaW5pdChcdTAwMjZhci1cdTAwM2VzY2FuLnZkZXZfY2xlYW5fd2ssIGF0aDEya19zY2FuX3ZkZXZfY2xlYW5fd29yayk7XG4gXHRJTklUX1dPUksoXHUwMDI2YXItXHUwMDNlcmVnZF9jaGFubmVsX3VwZGF0ZV93b3JrLCBhdGgxMmtfcmVnZF91cGRhdGVfY2hhbl9saXN0X3dvcmspO1xuIFx0SU5JVF9MSVNUX0hFQUQoXHUwMDI2YXItXHUwMDNlcmVnZF9jaGFubmVsX3VwZGF0ZV9xdWV1ZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODowNi4xNzc1MTEwMDVaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MTM4NjQwMDE0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgYXRoMTJrIERyaXZlciBQYXRjaCoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggZm9yIHRoZSBgYXRoMTJrYCB3aXJlbGVzcyBkcml2ZXIsIGFuZCBpdCBsb29rcyBsaWtlIGEgc3RyYWlnaHRmb3J3YXJkIHN0cnVjdHVyYWwgY2hhbmdlLiBUaGUgY29yZSBvZiBpdCBzZWVtcyB0byBiZSBhYm91dCB1cGRhdGluZyB0aGUgZGVsYXllZCB3b3JrIGhhbmRsaW5nIHdpdGhpbiB0aGUgYHNjYW5gIHN0cnVjdHVyZS4gU3BlY2lmaWNhbGx5LCB0aGV5J3ZlIHN3aXRjaGVkIGZyb20gdGhlIHN0YW5kYXJkIGBzdHJ1Y3QgZGVsYXllZF93b3JrIHRpbWVvdXRgIHRvIHRoZSBgd2lwaHlgLWF3YXJlIGBzdHJ1Y3Qgd2lwaHlfZGVsYXllZF93b3JrIHRpbWVvdXRgLCBhbmQgY29ycmVzcG9uZGluZ2x5IHJlcGxhY2VkIHRoZSBvbGRlciB3b3JrIHF1ZXVlIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMgd2l0aCB0aGVpciBgd2lwaHlgIGNvdW50ZXJwYXJ0cyDigJMgYGNhbmNlbF9kZWxheWVkX3dvcmtfc3luY2AgYmVjb21lcyBgd2lwaHlfZGVsYXllZF93b3JrX2NhbmNlbGAsIHRoZSBhc3luY2hyb25vdXMgdmVyc2lvbiBpcyBoYW5kbGVkIHdpdGggYSBmbGFnIGBhci1cdTAwM2VzY2FuLmZpbmlzaF9xdWV1ZWQgPSB0cnVlYCwgYGllZWU4MDIxMV9xdWV1ZV9kZWxheWVkX3dvcmtgIGJlY29tZXMgYHdpcGh5X2RlbGF5ZWRfd29ya19xdWV1ZWAsIGFuZCBgSU5JVF9ERUxBWUVEX1dPUktgIGlzIG5vdyBgd2lwaHlfZGVsYXllZF93b3JrX2luaXRgLiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSBjbGVhbiBtb2Rlcm5pemF0aW9uLlxuXG5Ob3csIG15IG1pbmQganVtcHMgdG8gc2VjdXJpdHkgaW1wbGljYXRpb25zLiBTaW5jZSB0aGlzIGlzIGEgZHJpdmVyLCB0aGUgYXR0YWNrIHN1cmZhY2UgaXMgb2YgcGFydGljdWxhciBpbnRlcmVzdC4gSXMgYGF0aDEya2AgZXZlbiByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXQncyBhIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLCBzcGVjaWZpY2FsbHkgUENJZS9BSEIsIHdoaWNoIG1lYW5zIGRpcmVjdCBoYXJkd2FyZSBhY2Nlc3MgaXMgbGlrZWx5IGludm9sdmVkLiBXYWl0LCBjYW4gd2UgZnV6eiBpdD8gSSBhbSB1c2VkIHRvIGZ1enppbmcgdmFyaW91cyBkcml2ZXJzLiBIYXJkd2FyZSBkcml2ZXJzIGFyZSBub3RvcmlvdXNseSBkaWZmaWN1bHQgdG8gZnV6eiBkaXJlY3RseSwgYnV0IHRoZXJlIGFyZSBzb21lIHdvcmthcm91bmRzLiBJIG5lZWQgdG8ga25vdyB0aGUgdHlwZSBvZiBkcml2ZXIuIEVtdWxhdGlvbiBsYXllcnMsIFVTQiBkcml2ZXJzIHdpdGggZHVtbXkgSENEcywgb3IgYG1hYzgwMjExX2h3c2ltYCBhcmUgdHlwaWNhbCBhdmVudWVzLCBidXQgaXQgbG9va3MgbGlrZSBgYXRoMTJrYCBpcyBhIFBDSS9BSEIgZHJpdmVyLiBTbyBub3csIEknbSB0aGlua2luZyBhYm91dCBlbXVsYXRpb24uIEkgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBpcyBhbnkgZW11bGF0aW9uIGZvciBgYXRoMTJrYC5cblxuSSB3aWxsIHVzZSBgZ3JlcHBlcmAgdG8gc2VhcmNoIHRoZSBMaW51eCBzb3VyY2UgdHJlZSBmb3IgYW55IG1lbnRpb24gb2YgYGF0aDEya2AgdG8gc2VlIHdoYXQgSSBjYW4gZmluZC5cblxuXG4iLCJJbnB1dFRva2VucyI6NTE1NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyOSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA1OjQ4OjEyLjMxNjE1NDE1OVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNjUwMjEyNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgMzQ5NTIgbGluZXMuXFxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxcblxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz0yPWNvbmZpZyBBVEgxMktcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MzpcXHR0cmlzdGF0ZSBcXFwiUXVhbGNvbW0gV2ktRmkgNyBzdXBwb3J0IChhdGgxMmspXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00LVxcdGRlcGVuZHMgb24gTUFDODAyMTEgXFx1MDAyNlxcdTAwMjYgSEFTX0RNQSBcXHUwMDI2XFx1MDAyNiBQQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTU6XFx0ICBJZiB5b3UgY2hvb3NlIHRvIGJ1aWxkIGEgbW9kdWxlLCBpdCdsbCBiZSBjYWxsZWQgYXRoMTJrLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MTc9Y29uZmlnIEFUSDEyS19BSEJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6MTg6XFx0Ym9vbCBcXFwiUXVhbGNvbW0gYXRoMTJrIEFIQiBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0xOS1cXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBSRU1PVEVQUk9DXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc9MjU9Y29uZmlnIEFUSDEyS19ERUJVR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzoyNjpcXHRib29sIFxcXCJhdGgxMmsgZGVidWdnaW5nXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0yNy1cXHRkZXBlbmRzIG9uIEFUSDEyS1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnPTM1PWNvbmZpZyBBVEgxMktfREVCVUdGU1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZzozNjpcXHRib29sIFxcXCJRdWFsY29tbSBhdGgxMmsgZGVidWdmcyBzdXBwb3J0XFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy0zNy1cXHRkZXBlbmRzIG9uIEFUSDEySyBcXHUwMDI2XFx1MDAyNiBNQUM4MDIxMV9ERUJVR0ZTXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTM4LVxcdGhlbHBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6Mzk6XFx0ICBFbmFibGUgYXRoMTJrIGRlYnVnZnMgc3VwcG9ydFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00MC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz00ND1jb25maWcgQVRIMTJLX1RSQUNJTkdcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWc6NDU6XFx0Ym9vbCBcXFwiYXRoMTJrIHRyYWNpbmcgc3VwcG9ydFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNDYtXFx0ZGVwZW5kcyBvbiBBVEgxMksgXFx1MDAyNlxcdTAwMjYgRVZFTlRfVFJBQ0lOR1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00Ny1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjQ4OlxcdCAgRW5hYmxlIGF0aDEyayB0cmFjaW5nIGluZnJhc3RydWN0dXJlLlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy00OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZz01Mz1jb25maWcgQVRIMTJLX0NPUkVEVU1QXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjU0OlxcdGJvb2wgXFxcImF0aDEyayBjb3JlZHVtcFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL0tjb25maWctNTUtXFx0ZGVwZW5kcyBvbiBBVEgxMktcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvS2NvbmZpZy01Ny1cXHRoZWxwXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnOjU4OlxcdCAgRW5hYmxlIGF0aDEyayBjb3JlZHVtcCBjb2xsZWN0aW9uXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9LY29uZmlnLTU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0zLUNsYXVzZS1DbGVhclxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfQVRIMTJLKSArPSBhdGgxMmsub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6MzphdGgxMmsteSArPSBjb3JlLm8gXFxcXFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtNC1cXHQgICAgaGFsLm8gXFxcXFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0yNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjI1OmF0aDEyay0kKENPTkZJR19BVEgxMktfQUhCKSArPSBhaGIub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZT0yNz1vYmotJChDT05GSUdfQVRIMTJLKSArPSB3aWZpNy9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlLTI4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGU6Mjk6YXRoMTJrLSQoQ09ORklHX0FUSDEyS19ERUJVR0ZTKSArPSBkZWJ1Z2ZzLm8gZGVidWdmc19odHRfc3RhdHMubyBkZWJ1Z2ZzX3N0YS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMDphdGgxMmstJChDT05GSUdfQUNQSSkgKz0gYWNwaS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozMTphdGgxMmstJChDT05GSUdfQVRIMTJLX1RSQUNJTkcpICs9IHRyYWNlLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMyOmF0aDEyay0kKENPTkZJR19QTSkgKz0gd293Lm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjMzOmF0aDEyay0kKENPTkZJR19BVEgxMktfQ09SRURVTVApICs9IGNvcmVkdW1wLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM0OmF0aDEyay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSArPSB0ZXN0bW9kZS5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozNTphdGgxMmstJChDT05GSUdfVEhFUk1BTCkgKz0gdGhlcm1hbC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNi1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjExOnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIGludCBmdW5jKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4LVxcdGlmICghcm9vdF9oYW5kbGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTpcXHRcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFxcXCJpbnZhbGlkIGFjcGkgaGFuZGxlclxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAtXFx0XFx0cmV0dXJuIC1FT1BOT1RTVVBQO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjYtXFx0aWYgKCFvYmopIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNzpcXHRcXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX0JPT1QsIFxcXCJhY3BpX2V2YWx1YXRlX2RzbSgpIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjgtXFx0XFx0cmV0dXJuIC1FTk9FTlQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00Ni1cXHRcXHRcXHRcXHQgICBBVEgxMktfQUNQSV9CREZfQU5DSE9SX1NUUklOR19MRU4pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDc6XFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgRFNNIEJERiBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00OC1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VzdHJpbmcubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTYyLVxcdFxcdFxcdCAgICBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggXFx1MDAzZSBBVEgxMktfQUNQSV9EU01fRlVOQ19NQVhfQklUTUFQX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo2MzpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBEU00gZnVuYyBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy02NC1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTc1LVxcdFxcdFxcdGlmIChvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX1RBU19DRkdfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjc2OlxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBUQVMgY29uZmlnIHNpemU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTc3LVxcdFxcdFxcdFxcdFxcdCAgICBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtODctXFx0XFx0XFx0aWYgKG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCAhPSBBVEgxMktfQUNQSV9EU01fVEFTX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjg4OlxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBUQVMgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy04OS1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTk5LVxcdFxcdFxcdGlmIChvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX0JJT1NfU0FSX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjEwMDpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBCSU9TIFNBUiBkYXRhIHNpemU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEwMS1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTExMS1cXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9HRU9fT0ZGU0VUX0RBVEFfU0laRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjExMjpcXHRcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImludmFsaWQgQUNQSSBHRU8gT0ZGU0VUIGRhdGEgc2l6ZTogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTEzLVxcdFxcdFxcdFxcdFxcdCAgICBvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTIzLVxcdFxcdFxcdGlmIChvYmotXFx1MDAzZWJ1ZmZlci5sZW5ndGggIT0gQVRIMTJLX0FDUElfRFNNX0NDQV9EQVRBX1NJWkUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxMjQ6XFx0XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIEFDUEkgRFNNIENDQSBkYXRhIHNpemU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEyNS1cXHRcXHRcXHRcXHRcXHQgICAgb2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTEzNS1cXHRcXHRcXHRpZiAob2JqLVxcdTAwM2VidWZmZXIubGVuZ3RoICE9IEFUSDEyS19BQ1BJX0RTTV9CQU5EX0VER0VfREFUQV9TSVpFKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MTM2OlxcdFxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiaW52YWxpZCBBQ1BJIERTTSBiYW5kIGVkZ2UgZGF0YSBzaXplOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xMzctXFx0XFx0XFx0XFx0XFx0ICAgIG9iai1cXHUwMDNlYnVmZmVyLmxlbmd0aCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNDctXFx0fSBlbHNlIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNDg6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJBQ1BJIERTTSBtZXRob2QgcmV0dXJuZWQgYW4gdW5zdXBwb3J0ZWQgb2JqZWN0IHR5cGU6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE0OS1cXHRcXHRcXHQgICAgb2JqLVxcdTAwM2V0eXBlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNjE6c3RhdGljIGludCBhdGgxMmtfYWNwaV9zZXRfcG93ZXJfbGltaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNjIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTY3LVxcdCAgICB0YXNfc2FyX3Bvd2VyX3RhYmxlWzFdICE9IEFUSDEyS19BQ1BJX1RBU19EQVRBX0VOQUJMRSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE2ODpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImxhdGVzdCBBQ1BJIFRBUyBkYXRhIGlzIGludmFsaWRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE2OS1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxNzI6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsIFdNSV9CSU9TX1BBUkFNX1RBU19EQVRBX1RZUEUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTczLVxcdFxcdFxcdFxcdCAgICAgIHRhc19zYXJfcG93ZXJfdGFibGUsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xNzUtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE3NjpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZW5kIEFDUEkgVEFTIGRhdGEgdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE3Ny1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTgyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE4MzpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF9iaW9zX3Nhcl9wb3dlcihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE4NC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xODgtXFx0ICAgIGFiLVxcdTAwM2VhY3BpLmJpb3Nfc2FyX2RhdGFbMV0gIT0gQVRIMTJLX0FDUElfUE9XRVJfTElNSVRfRU5BQkxFX0ZMQUcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxODk6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJpbnZhbGlkIGxhdGVzdCBBQ1BJIEJJT1MgU0FSIGRhdGFcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE5MC1cXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTE5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoxOTM6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19zYXJfY21kKGFiLCBhYi1cXHUwMDNlYWNwaS5iaW9zX3Nhcl9kYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0xOTQtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjE5NTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZXQgQUNQSSBCSU9TIFNBUiB0YWJsZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMTk2LVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjAyOnN0YXRpYyB2b2lkIGF0aDEya19hY3BpX2RzbV9ub3RpZnkoYWNwaV9oYW5kbGUgaGFuZGxlLCB1MzIgZXZlbnQsIHZvaWQgKmRhdGEpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjAzLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMDQtXFx0aW50IHJldDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMDU6XFx0c3RydWN0IGF0aDEya19iYXNlICphYiA9IGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjA2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwNy1cXHRpZiAoZXZlbnQgPT0gQVRIMTJLX0FDUElfTk9USUZZX0VWRU5UKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjA4OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwidW5rbm93biBhY3BpIG5vdGlmeSAldVxcXFxuXFxcIiwgZXZlbnQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIwOS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTItXFx0aWYgKCFhYi1cXHUwMDNlYWNwaS5hY3BpX3Rhc19lbmFibGUpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMTM6XFx0XFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19CT09ULCBcXFwiYWNwaV90YXNfZW5hYmxlIGlzIGZhbHNlXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIxNzpcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19EQVRBKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMTgtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIxOTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byB1cGRhdGUgQUNQSSBUQVMgZGF0YSB0YWJsZTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjIwLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMjM6XFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X3Bvd2VyX2xpbWl0KGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMjQtXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjIyNTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZXQgQUNQSSBUQVMgcG93ZXIgbGltaXQgZGF0YTogJWRcXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIyNi1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjMyOlxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfQklPU19TQVIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzMy1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjM0OlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHVwZGF0ZSBCSU9TIFNBUjogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjM1LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTIzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyMzg6XFx0cmV0ID0gYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3Bvd2VyKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yMzktXFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI0MDpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZXQgQklPUyBTQVIgcG93ZXIgbGltaXQ6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI0MS1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjQ1OnN0YXRpYyBpbnQgYXRoMTJrX2FjcGlfc2V0X2Jpb3Nfc2FyX3BhcmFtcyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI0Ni17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjQ5OlxcdHJldCA9IGF0aDEya193bWlfc2V0X2Jpb3Nfc2FyX2NtZChhYiwgYWItXFx1MDAzZWFjcGkuYmlvc19zYXJfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjUwLVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNTE6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBTQVIgdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1Mi1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjU0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI1NTpcXHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2dlb19jbWQoYWIsIGFiLVxcdTAwM2VhY3BpLmdlb19vZmZzZXRfZGF0YSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjU2LVxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNTc6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2V0IEFDUEkgQklPUyBHRU8gdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI1OC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI2NDpzdGF0aWMgaW50IGF0aDEya19hY3BpX3NldF90YXNfcGFyYW1zKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjY1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI2Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyNjg6XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsIFdNSV9CSU9TX1BBUkFNX1RBU19DT05GSUdfVFlQRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNjktXFx0XFx0XFx0XFx0ICAgICAgYWItXFx1MDAzZWFjcGkudGFzX2NmZyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI3MS1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjcyOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgY29uZmlnIHRhYmxlIHBhcmFtZXRlcjogJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjczLVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI3NzpcXHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYiwgV01JX0JJT1NfUEFSQU1fVEFTX0RBVEFfVFlQRSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yNzgtXFx0XFx0XFx0XFx0ICAgICAgYWItXFx1MDAzZWFjcGkudGFzX3Nhcl9wb3dlcl90YWJsZSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4MC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MjgxOlxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNlbmQgQUNQSSBUQVMgZGF0YSB0YWJsZSBwYXJhbWV0ZXI6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4Mi1cXHRcXHRcXHQgICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTI4OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzoyODk6Ym9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV9yZmtpbGwoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjkzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI5NDpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlXzExYmUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0yOTUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMjk4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjI5OTp2b2lkIGF0aDEya19hY3BpX3NldF9kc21fZnVuYyhzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMwMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMDgtXFx0aWYgKGFiLVxcdTAwM2VhY3BpLmFjcGlfdGFzX2VuYWJsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMwOTpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9zZXRfdGFzX3BhcmFtcyhhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzEwLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMTE6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gc2VuZCBBQ1BJIFRBUyBwYXJhbWV0ZXJzOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMTItXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzE2LVxcdGlmIChhYi1cXHUwMDNlYWNwaS5hY3BpX2Jpb3Nfc2FyX2VuYWJsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMxNzpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9zZXRfYmlvc19zYXJfcGFyYW1zKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMTgtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMxOTpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBzZW5kIEFDUEkgQklPUyBTQVI6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMyMC1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMjUtXFx0XFx0YnVmID0gYWItXFx1MDAzZWFjcGkuY2NhX2RhdGEgKyBBVEgxMktfQUNQSV9DQ0FfVEhSX09GRlNFVF9EQVRBX09GRlNFVDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozMjY6XFx0XFx0cmV0ID0gYXRoMTJrX3dtaV9zZXRfYmlvc19jbWQoYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzI3LVxcdFxcdFxcdFxcdFxcdCAgICAgIFdNSV9CSU9TX1BBUkFNX0NDQV9USFJFU0hPTERfVFlQRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTMzMC1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzMxOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIHNldCBBQ1BJIERTTSBDQ0EgdGhyZXNob2xkOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzItXFx0XFx0XFx0XFx0ICAgIHJldCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzctXFx0aWYgKGFiLVxcdTAwM2VhY3BpLmFjcGlfYmFuZF9lZGdlX2VuYWJsZSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjMzODpcXHRcXHRyZXQgPSBhdGgxMmtfd21pX3NldF9iaW9zX2NtZChhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zMzktXFx0XFx0XFx0XFx0XFx0ICAgICAgV01JX0JJT1NfUEFSQU1fVFlQRV9CQU5ERURHRSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM0Mi1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzQzOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM0NC1cXHRcXHRcXHRcXHQgICAgXFxcImZhaWxlZCB0byBzZXQgQUNQSSBEU00gYmFuZCBlZGdlIGNoYW5uZWwgcG93ZXI6ICVkXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzUwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM1MTppbnQgYXRoMTJrX2FjcGlfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNTIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzY4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM2OTpcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1NVUFBPUlRfRlVOQ1MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3MC1cXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6MzcxOlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBEU00gZGF0YTogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzcyLVxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzUtXFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9ESVNBQkxFX0ZMQUcpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6Mzc2OlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfRElTQUJMRV9GTEFHKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zNzctXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjM3ODpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBESVNBQkxFIEZMQUc6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTM3OS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzkxLVxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfQkRGX0VYVCkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozOTI6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19CREZfRVhUKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy0zOTMtXFx0XFx0aWYgKHJldCB8fCBhYi1cXHUwMDNlYWNwaS5iZGZfc3RyaW5nWzBdID09ICdcXFxcMCcpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzozOTQ6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgQkRGIEVYVDogJWRcXFxcblxcXCIsIHJldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtMzk1LVxcdFxcdFxcdHJldHVybiByZXQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MDEtXFx0aWYgKEFUSDEyS19BQ1BJX0ZVTkNfQklUX1ZBTElEKGFiLVxcdTAwM2VhY3BpLCBBVEgxMktfQUNQSV9GVU5DX0JJVF9UQVNfQ0ZHKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQwMjpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX1RBU19DRkcpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwMy1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDA0OlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBBQ1BJIFRBUyBjb25maWcgdGFibGU6ICVkXFxcXG5cXFwiLCByZXQpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQwNS1cXHRcXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDA5LVxcdGlmIChBVEgxMktfQUNQSV9GVU5DX0JJVF9WQUxJRChhYi1cXHUwMDNlYWNwaSwgQVRIMTJLX0FDUElfRlVOQ19CSVRfVEFTX0RBVEEpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDEwOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfVEFTX0RBVEEpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQxMS1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDEyOlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBBQ1BJIFRBUyBkYXRhIHRhYmxlOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MTMtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQyMi1cXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0JJT1NfU0FSKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyMzpcXHRcXHRyZXQgPSBhdGgxMmtfYWNwaV9kc21fZ2V0X2RhdGEoYWIsIEFUSDEyS19BQ1BJX0RTTV9GVU5DX0JJT1NfU0FSKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjQtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQyNTpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBiaW9zIHNhciBkYXRhOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MjYtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQzMC1cXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0dFT19PRkZTRVQpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDMxOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfR0VPX09GRlNFVCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDMyLVxcdFxcdGlmIChyZXQpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0MzM6XFx0XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gZ2V0IEFDUEkgZ2VvIG9mZnNldCBkYXRhOiAlZFxcXFxuXFxcIiwgcmV0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00MzQtXFx0XFx0XFx0cmV0dXJuIHJldDtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0NC1cXHRpZiAoQVRIMTJLX0FDUElfRlVOQ19CSVRfVkFMSUQoYWItXFx1MDAzZWFjcGksIEFUSDEyS19BQ1BJX0ZVTkNfQklUX0NDQSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NDU6XFx0XFx0cmV0ID0gYXRoMTJrX2FjcGlfZHNtX2dldF9kYXRhKGFiLCBBVEgxMktfQUNQSV9EU01fRlVOQ19JTkRFWF9DQ0EpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0Ni1cXHRcXHRpZiAocmV0KSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDQ3OlxcdFxcdFxcdGF0aDEya193YXJuKGFiLCBcXFwiZmFpbGVkIHRvIGdldCBBQ1BJIERTTSBDQ0EgdGhyZXNob2xkIGNvbmZpZ3VyYXRpb246ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ0OC1cXHRcXHRcXHRcXHQgICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ1OS1cXHRcXHRcXHRcXHQgICAgICAgQVRIMTJLX0FDUElfRlVOQ19CSVRfQkFORF9FREdFX0NIQU5fUE9XRVIpKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDYwOlxcdFxcdHJldCA9IGF0aDEya19hY3BpX2RzbV9nZXRfZGF0YShhYiwgQVRIMTJLX0FDUElfRFNNX0ZVTkNfSU5ERVhfQkFORF9FREdFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00NjEtXFx0XFx0aWYgKHJldCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ2MjpcXHRcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBnZXQgQUNQSSBEU00gYmFuZCBlZGdlIGNoYW5uZWwgcG93ZXI6ICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ2My1cXHRcXHRcXHRcXHQgICAgcmV0KTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ3My1cXHRcXHRcXHRcXHRcXHQgICAgIEFDUElfREVWSUNFX05PVElGWSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0NzQ6XFx0XFx0XFx0XFx0XFx0ICAgICBhdGgxMmtfYWNwaV9kc21fbm90aWZ5LCBhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDc1LVxcdGlmIChBQ1BJX0ZBSUxVUkUoc3RhdHVzKSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjQ3NjpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBpbnN0YWxsIERTTSBub3RpZnkgY2FsbGJhY2s6ICVkXFxcXG5cXFwiLCBzdGF0dXMpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ3Ny1cXHRcXHRyZXR1cm4gLUVJTztcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jLTQ4NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo0ODU6aW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00ODYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDkyLVxcdGlmIChzdHJzY3B5KGFiLVxcdTAwM2VxbWkudGFyZ2V0LmJkZl9leHQsIGFiLVxcdTAwM2VhY3BpLmJkZl9zdHJpbmcgKyA0LCBtYXhfbGVuKSBcXHUwMDNjIDApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmM6NDkzOlxcdFxcdGF0aDEya19kYmcoYWIsIEFUSDEyS19EQkdfQk9PVCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy00OTQtXFx0XFx0XFx0ICAgXFxcImFjcGkgYmRmIHZhcmlhbnQgbG9uZ2VyIHRoYW4gdGhlIGJ1ZmZlciAodmFyaWFudDogJXMpXFxcXG5cXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNDk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5jOjUwMDp2b2lkIGF0aDEya19hY3BpX3N0b3Aoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYy01MDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNTA2LVxcdFxcdFxcdFxcdCAgIEFDUElfREVWSUNFX05PVElGWSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuYzo1MDc6XFx0XFx0XFx0XFx0ICAgYXRoMTJrX2FjcGlfZHNtX25vdGlmeSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmMtNTA4LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtNzQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6NzU6aW50IGF0aDEya19hY3BpX3N0YXJ0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjc2OnZvaWQgYXRoMTJrX2FjcGlfc3RvcChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3Nzpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlX3Jma2lsbChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo3ODpib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlXzExYmUoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6Nzk6dm9pZCBhdGgxMmtfYWNwaV9zZXRfZHNtX2Z1bmMoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6ODA6aW50IGF0aDEya19hY3BpX2NoZWNrX2JkZl92YXJpYW50X25hbWUoc3RydWN0IGF0aDEya19iYXNlICphYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtODEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaC04My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDo4NDpzdGF0aWMgaW5saW5lIGludCBhdGgxMmtfYWNwaV9zdGFydChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTg1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTg4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjg5OnN0YXRpYyBpbmxpbmUgdm9pZCBhdGgxMmtfYWNwaV9zdG9wKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOTAte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOTItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmg6OTM6c3RhdGljIGlubGluZSBib29sIGF0aDEya19hY3BpX2dldF9kaXNhYmxlX3Jma2lsbChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTk3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjk4OnN0YXRpYyBpbmxpbmUgYm9vbCBhdGgxMmtfYWNwaV9nZXRfZGlzYWJsZV8xMWJlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtOTkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oOjEwMzpzdGF0aWMgaW5saW5lIHZvaWQgYXRoMTJrX2FjcGlfc2V0X2RzbV9mdW5jKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9hY3BpLmgtMTA0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FjcGkuaDoxMDc6c3RhdGljIGlubGluZSBpbnQgYXRoMTJrX2FjcGlfY2hlY2tfYmRmX3ZhcmlhbnRfbmFtZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWNwaS5oLTEwOC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjM6c3RhdGljIHN0cnVjdCBhdGgxMmtfYWhiX2RyaXZlciAqYXRoMTJrX2FoYl9mYW1pbHlfZHJpdmVyc1tBVEgxMktfREVWSUNFX0ZBTUlMWV9NQVhdO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjQ6c3RhdGljIGNvbnN0IGNoYXIgYXRoMTJrX3VzZXJwZF9pcnFbXVs5XSA9IHtcXFwic3Bhd25cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjUtXFx0XFx0XFx0XFx0ICAgICBcXFwicmVhZHlcXFwiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz04ND1lbnVtIGV4dF9pcnFfbnVtIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MTI0OnN0YXRpYyB1MzIgYXRoMTJrX2FoYl9yZWFkMzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEyNS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEzMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjEzMTpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3dyaXRlMzIoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIG9mZnNldCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEzMi1cXHRcXHRcXHQgICAgICAgdTMyIHZhbHVlKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNDA6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jYW5jZWxfd29ya3F1ZXVlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDQtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWNlX2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE0NTpcXHRcXHRzdHJ1Y3QgYXRoMTJrX2NlX3BpcGUgKmNlX3BpcGUgPSBcXHUwMDI2YWItXFx1MDAzZWNlLmNlX3BpcGVbaV07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNDYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNDc6XFx0XFx0aWYgKGF0aDEya19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTQ4LVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxNTQ6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9leHRfZ3JwX2Rpc2FibGUoc3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE1NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE2MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE2MjpzdGF0aWMgdm9pZCBfX2F0aDEya19haGJfZXh0X2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNjYtXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEFUSDEyS19FWFRfSVJRX0dSUF9OVU1fTUFYOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE2NzpcXHRcXHRzdHJ1Y3QgYXRoMTJrX2V4dF9pcnFfZ3JwICppcnFfZ3JwID0gXFx1MDAyNmFiLVxcdTAwM2VleHRfaXJxX2dycFtpXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE2OTpcXHRcXHRhdGgxMmtfYWhiX2V4dF9ncnBfZGlzYWJsZShpcnFfZ3JwKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE3MC1cXHRcXHRpZiAoaXJxX2dycC1cXHUwMDNlbmFwaV9lbmFibGVkKSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE3Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE3ODpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2V4dF9ncnBfZW5hYmxlKHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xNzkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxODY6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9zZXRiaXQzMihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLCB1OCBiaXQsIHUzMiBvZmZzZXQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODcte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xODktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTA6XFx0dmFsID0gYXRoMTJrX2FoYl9yZWFkMzIoYWIsIG9mZnNldCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTE6XFx0YXRoMTJrX2FoYl93cml0ZTMyKGFiLCBvZmZzZXQsIHZhbCB8IEJJVChiaXQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5Mi19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xOTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxOTQ6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jbGVhcmJpdDMyKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHU4IGJpdCwgdTMyIG9mZnNldClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTE5Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5ODpcXHR2YWwgPSBhdGgxMmtfYWhiX3JlYWQzMihhYiwgb2Zmc2V0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjE5OTpcXHRhdGgxMmtfYWhiX3dyaXRlMzIoYWIsIG9mZnNldCwgdmFsIFxcdTAwMjYgfkJJVChiaXQpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIwMC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMDEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMDI6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFfZW5hYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUxNiBjZV9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIwMy17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIxMy1cXHRpZiAoY2VfYXR0ci1cXHUwMDNlc3JjX25lbnRyaWVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjE0OlxcdFxcdGF0aDEya19haGJfc2V0Yml0MzIoYWIsIGNlX2lkLCBpZTFfcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjE2LVxcdGlmIChjZV9hdHRyLVxcdTAwM2VkZXN0X25lbnRyaWVzKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMTc6XFx0XFx0YXRoMTJrX2FoYl9zZXRiaXQzMihhYiwgY2VfaWQsIGllMl9yZWdfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyMTg6XFx0XFx0YXRoMTJrX2FoYl9zZXRiaXQzMihhYiwgY2VfaWQgKyBDRV9IT1NUX0lFXzNfU0hJRlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMTktXFx0XFx0XFx0XFx0ICAgIGllM19yZWdfYWRkcik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIyMzpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX2NlX2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUxNiBjZV9pZClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTIzNC1cXHRpZiAoY2VfYXR0ci1cXHUwMDNlc3JjX25lbnRyaWVzKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjM1OlxcdFxcdGF0aDEya19haGJfY2xlYXJiaXQzMihhYiwgY2VfaWQsIGllMV9yZWdfYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yMzctXFx0aWYgKGNlX2F0dHItXFx1MDAzZWRlc3RfbmVudHJpZXMpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjIzODpcXHRcXHRhdGgxMmtfYWhiX2NsZWFyYml0MzIoYWIsIGNlX2lkLCBpZTJfcmVnX2FkZHIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjM5OlxcdFxcdGF0aDEya19haGJfY2xlYXJiaXQzMihhYiwgY2VfaWQgKyBDRV9IT1NUX0lFXzNfU0hJRlQsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDAtXFx0XFx0XFx0XFx0ICAgICAgaWUzX3JlZ19hZGRyKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjQ0OnN0YXRpYyB2b2lkIGF0aDEya19haGJfc3luY19jZV9pcnFzKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDUte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNDktXFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIGFiLVxcdTAwM2Vod19wYXJhbXMtXFx1MDAzZWNlX2NvdW50OyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI1MDpcXHRcXHRpZiAoYXRoMTJrX2NlX2dldF9hdHRyX2ZsYWdzKGFiLCBpKSBcXHUwMDI2IENFX0FUVFJfRElTX0lOVFIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNTEtXFx0XFx0XFx0Y29udGludWU7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI1Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI1ODpzdGF0aWMgdm9pZCBhdGgxMmtfYWhiX3N5bmNfZXh0X2lycXMoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI2My1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQVRIMTJLX0VYVF9JUlFfR1JQX05VTV9NQVg7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjY0OlxcdFxcdHN0cnVjdCBhdGgxMmtfZXh0X2lycV9ncnAgKmlycV9ncnAgPSBcXHUwMDI2YWItXFx1MDAzZWV4dF9pcnFfZ3JwW2ldO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjY1LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yNzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNzM6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFzX2VuYWJsZShzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjc0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjc3LVxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBhYi1cXHUwMDNlaHdfcGFyYW1zLVxcdTAwM2VjZV9jb3VudDsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyNzg6XFx0XFx0aWYgKGF0aDEya19jZV9nZXRfYXR0cl9mbGFncyhhYiwgaSkgXFx1MDAyNiBDRV9BVFRSX0RJU19JTlRSKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMjc5LVxcdFxcdFxcdGNvbnRpbnVlO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MjgwOlxcdFxcdGF0aDEya19haGJfY2VfaXJxX2VuYWJsZShhYiwgaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODEtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0yODMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyODQ6c3RhdGljIHZvaWQgYXRoMTJrX2FoYl9jZV9pcnFzX2Rpc2FibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI4NS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI4OC1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgYWItXFx1MDAzZWh3X3BhcmFtcy1cXHUwMDNlY2VfY291bnQ7IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6Mjg5OlxcdFxcdGlmIChhdGgxMmtfY2VfZ2V0X2F0dHJfZmxhZ3MoYWIsIGkpIFxcdTAwMjYgQ0VfQVRUUl9ESVNfSU5UUilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5MC1cXHRcXHRcXHRjb250aW51ZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI5MTpcXHRcXHRhdGgxMmtfYWhiX2NlX2lycV9kaXNhYmxlKGFiLCBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5Mi1cXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjI5NTpzdGF0aWMgaW50IGF0aDEya19haGJfc3RhcnQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5Ni17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTc6XFx0YXRoMTJrX2FoYl9jZV9pcnFzX2VuYWJsZShhYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoyOTg6XFx0YXRoMTJrX2NlX3J4X3Bvc3RfYnVmKGFiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTI5OS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzAyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzAzOnN0YXRpYyB2b2lkIGF0aDEya19haGJfZXh0X2lycV9lbmFibGUoc3RydWN0IGF0aDEya19iYXNlICphYilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTMwNC17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozMDU6XFx0c3RydWN0IGF0aDEya19leHRfaXJxX2dycCAqaXJxX2dycDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTMwNi1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzEzLVxcdFxcdH1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjMxNDpcXHRcXHRhdGgxMmtfYWhiX2V4dF9ncnBfZW5hYmxlKGlycV9ncnApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzE1LVxcdH1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzE3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzE4OnN0YXRpYyB2b2lkIGF0aDEya19haGJfZXh0X2lycV9kaXNhYmxlKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zMTkte1xcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODoxMi41ODExODY4MDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NTI0NDM4ODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgU3l6Ym90J3MgSW50ZXJhY3Rpb24gd2l0aCB0aGUgYXRoMTJrIERyaXZlcioqXG5cbk9rYXksIHNvIHRoZSBgYXRoMTJrYCBkcml2ZXIgaGFzIHRocmVlIGNvbmZpZ3VyYXRpb24gb3B0aW9uczogYENPTkZJR19BVEgxMktfQUhCYCwgYENPTkZJR19BVEgxMktgLCBhbmQgYENPTkZJR19BVEgxMktfUENJYC4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIGlzIHRoZXJlIHNvbWUga2luZCBvZiBlbXVsYXRpb24gc2V0dXAgZm9yIGBhdGgxMmtgPyBJdCdzIG5vdCBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIHdoaWNoIHVzdWFsbHkgc2ltdWxhdGVzIGEgbW9yZSBnZW5lcmljIG1hYzgwMjExIGRldmljZSwgbm90IHNwZWNpZmljYWxseSBgYXRoMTJrYC4gV2FpdCwgc3l6Ym90IGZvdW5kIGEgYnVnIGluIHRoaXM/IEludHJpZ3VpbmcuIExldCdzIHNlZSBpZiBzeXpib3QgZXZlbiBpbmNsdWRlcyBgYXRoMTJrYCBpbiBpdHMgZnV6emluZyB0YXJnZXRzLlxuXG5Ib2xkIG9uIGEgc2Vjb25kLCB0aGlzIGNvbW1pdCBtZXNzYWdlIHNheXMgXCJzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcIiBhbmQgdGhlIGF1dGhvciBpcyBsaXN0ZWQgYXMgYHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlYC4gVGhhdCBtZWFucyBzeXpib3QgKmlzKiB0ZXN0aW5nIGEgcGF0Y2ggcmVsYXRlZCB0byBgYXRoMTJrYC4gQnV0IGhvdz8gSG93IGlzIHN5emJvdCBpbnRlcmFjdGluZyB3aXRoIHRoaXMgZHJpdmVyPyBHaXZlbiB0aGF0IGBhdGgxMmtgIGlzIGEgUENJL0FIQiBkcml2ZXIsIGlzIGl0IGZ1enplZCB2aWEgc29tZSB2aXJ0dWFsIGJ1cyBvciBwZXJoYXBzIGl0J3MgYSBVU0IgZHJpdmVyPyBUaGUgdGhvdWdodCBpcywgc3l6a2FsbGVyIG1pZ2h0IGJlIHVzaW5nIGl0cyB2aXJ0dWFsIFBDSSBidXMgKGB2aGNpYCBvciBzb21ldGhpbmcgc2ltaWxhciwgbm8gd2FpdCwgYHZoY2lgIGlzIGZvciBVU0IpLiBEb2VzIHN5emthbGxlciBoYXZlIGB2ZmlvYCBvciBldmVuIGRpcmVjdCBQQ0kgZnV6emluZz8gQWN0dWFsbHksIEkgcmVtZW1iZXIgYG1hYzgwMjExX2h3c2ltYCB3aGljaCBpcyBmb3IgdGhlIGBtYWM4MDIxMWAgZnJhbWV3b3JrLlxuXG5BaGEhIE1heWJlIHN5emthbGxlciBpcyBmdXp6aW5nIGBhdGgxMmtgIGluZGlyZWN0bHkgdmlhIGBubDgwMjExYCB0ZXN0bW9kZT8gVGhhdCdzIHBsYXVzaWJsZS4gTGV0J3MgY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuY2AgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IGNsdWVzIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMDY4NywiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1NywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODoxOS4xMDU2MjgyNFoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxODEzNTcyMzYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwidGVzdG1vZGVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZT0zMz1hdGgxMmstJChDT05GSUdfQVRIMTJLX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozNDphdGgxMmstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzUtYXRoMTJrLSQoQ09ORklHX1RIRVJNQUwpICs9IHRoZXJtYWwub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNy0jaW5jbHVkZSBcXFwiZHBfcnguaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE4OiNpbmNsdWRlIFxcXCJ0ZXN0bW9kZS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTktI2luY2x1ZGUgXFxcInBlZXIuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo3OiNpbmNsdWRlIFxcXCJ0ZXN0bW9kZS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04LSNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0bGluay5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEzLSNpbmNsdWRlIFxcXCJoaWYuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTQ6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rtb2RlX2kuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9NDU9dm9pZCBhdGgxMmtfdG1fd21pX2V2ZW50X3Vuc2VnbWVudGVkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBjbWRfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTEtXFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTI6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiIGxlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTMtXFx0XFx0ICAgY21kX2lkLCBza2ItXFx1MDAzZWxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTgtXFx0aWYgKCFhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo1OTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInRlc3Rtb2RlIGV2ZW50IG5vdCBoYW5kbGVkIGR1ZSB0byBpbnZhbGlkIHBkZXZcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjY1OlxcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzItXFx0XFx0YXRoMTJrX3dhcm4oYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjczOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdW5zZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTc5LVxcdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgc2tiLVxcdTAwM2VsZW4sIHNrYi1cXHUwMDNlZGF0YSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODA6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgdW5zZWdtZW50ZWQgZXZlbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04MS1cXHRcXHRrZnJlZV9za2Iobmxfc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODU6XFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtODYtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTg4PXZvaWQgYXRoMTJrX3RtX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy05OS1cXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMDA6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgZnRtIGV2ZW50IG1zZyAlcCBkYXRhbGVuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMDEtXFx0XFx0ICAgY21kX2lkLCBmdG1fbXNnLCBsZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEwNS1cXHRpZiAocGRldl9pZCBcXHUwMDNlPSBhYi1cXHUwMDNlbnVtX3JhZGlvcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMDY6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2IGlkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTItXFx0aWYgKCFhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMTM6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gYWJzZW5jZSBvZiBwZGV2XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTE0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNTMtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTU0OlxcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTU1LVxcdFxcdFxcdFxcdFxcdFxcdCAgIDIgKiBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2MS1cXHRcXHRhdGgxMmtfd2FybihhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTYyOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTYzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzAtXFx0XFx0ICAgIFxcdTAwMjZhYi1cXHUwMDNlZnRtX2V2ZW50X29iai5ldmVudGRhdGFbMF0pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE3MTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBwb3B1bGF0ZSB0ZXN0bW9kZSBldmVudFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzItXFx0XFx0a2ZyZWVfc2tiKG5sX3NrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzY6XFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTc3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0xNzk9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4My1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTg0OlxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBjbWQgZ2V0IHZlcnNpb25fbWFqb3IgJWQgdmVyc2lvbl9taW5vciAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTg1LVxcdFxcdCAgIEFUSF9URVNUTU9ERV9WRVJTSU9OX01BSk9SLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4OC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxODk6XFx0c2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfcmVwbHlfc2tiKGFyLVxcdTAwM2VhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xOTAtXFx0XFx0XFx0XFx0XFx0XFx0MiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyMDQ6XFx0cmV0dXJuIGNmZzgwMjExX3Rlc3Rtb2RlX3JlcGx5KHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIwNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MjA3PXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF9wcm9jZXNzX2Z0bShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMjktXFx0YXRoMTJrX2RiZyhhci1cXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjIzMDpcXHRcXHQgICBcXFwidGVzdG1vZGUgY21kIHdtaSBjbWRfaWQgJWQgYnVmICVwIGJ1Zl9sZW4gJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIzMS1cXHRcXHQgICBjbWRfaWQsIGJ1ZiwgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyODE6c3RhdGljIGludCBhdGgxMmtfdG1fY21kX3Rlc3Rtb2RlX3N0YXJ0KHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTMwMD1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfd21pKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMxOC1cXHRpZiAoIWJ1Zl9sZW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzE5OlxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcIk5vIGRhdGEgcHJlc2VudCBpbiB0ZXN0bW9kZSBjb21tYW5kXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzIwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMzMS1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzMyOlxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCAgYnVmIGxlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzMzLVxcdFxcdCAgIGNtZF9pZCwgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzQ2LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzQ3OlxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzQ4LVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTM1ND1pbnQgYXRoMTJrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zODUtXFx0Y2FzZSBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozODY6XFx0XFx0cmV0dXJuIGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoYXIsIHRiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzg3LVxcdGNhc2UgQVRIX1RNX0NNRF9HRVRfVkVSU0lPTjpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0yNC0jaW5jbHVkZSBcXFwiLi4vZGVidWdmc19zdGEuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MjU6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI2LSNpbmNsdWRlIFxcXCJoYWwuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMjYtI2luY2x1ZGUgXFxcInAycC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6Mjc6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDU6NDg6MTkuMjg2OTk4MDc2WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwODExNDk5NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIGBhdGgxMmtgIFZ1bG5lcmFiaWxpdHkgUmVwb3J0KipcblxuT2theSwgc28gc3l6Ym90IGlzIGZ1enppbmcgbWFjODAyMTEgZHJpdmVycyB1c2luZyBgbWFjODAyMTFfaHdzaW1gLiBCdXQgd2FpdCwgdGhlIHNwZWNpZmljIGRyaXZlciBtZW50aW9uZWQgaW4gdGhlIHJlcG9ydCwgYGF0aDEya2AsIGlzIGRlc2lnbmVkIGZvciAqcmVhbCogaGFyZHdhcmUuIFRoYXQncyBhIGJpdCBwZXJwbGV4aW5nLiBJcyB0aGVyZSBhbnkgY29uY2VpdmFibGUgd2F5IHN5emJvdCBjb3VsZCBldmVuIHJlYWNoIGBhdGgxMmtgIGluIGl0cyBjdXJyZW50IHRlc3Rpbmcgc2V0dXA/XG5cblRoZSBmYWN0IHRoYXQgc3l6Ym90IGFwcGxpZWQgdGhlIHBhdGNoIHN1Z2dlc3RzIGl0J3MgKnRyeWluZyogdG8gdGVzdCBpdCwgd2hpY2ggcmFpc2VzIGEgZmV3IGltbWVkaWF0ZSBxdWVzdGlvbnMuIFRoZSBwYXRjaCB0b3VjaGVzIGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfbWFjX3NjYW5fZmluaXNoYCwgYGF0aDEya19tYWNfaW5pdGlhdGVfaHdfc2NhbmAsIGBhdGgxMmtfbWFjX29wX2h3X3NjYW5gLCBgYXRoMTJrX21hY19vcF9jYW5jZWxfaHdfc2NhbmAsIGBhdGgxMmtfbWFjX29wX3JlbWFpbl9vbl9jaGFubmVsYCwgYGF0aDEya19tYWNfb3BfY2FuY2VsX3JlbWFpbl9vbl9jaGFubmVsYCwgYW5kIGBhdGgxMmtfbWFjX3NldHVwYC4gQWxsIG9mIHRoZXNlIGFyZSBjbGVhcmx5IG1hYzgwMjExIG9wZXJhdGlvbnMsIHdoaWNoIGlzIGVuY291cmFnaW5nLCBidXQgYWdhaW4sIGRvZXMgc3l6Ym90IGhhdmUgdGhlIG5lY2Vzc2FyeSBoYXJkd2FyZSB0byAqYWN0dWFsbHkqIGV4ZWN1dGUgdGhvc2U/XG5cbkEgZGVlcGVyIGRpdmUgaXMgbmVlZGVkLiBTeXpib3QgdHlwaWNhbGx5IHJ1bnMgb24gR0NFIFZNcywgYW5kIEknbSBwcmV0dHkgY2VydGFpbiB0aG9zZSBkb24ndCBoYXZlIHRoZSBzcGVjaWZpYyBRdWFsY29tbSBXaS1GaSA3IGhhcmR3YXJlIGBhdGgxMmtgIGRlcGVuZHMgb24g4oCTIGl0IHJlcXVpcmVzIGVpdGhlciBQQ0kgb3IgQUhCLiBTbywgaXQncyBoaWdobHkgaW1wcm9iYWJsZSBzeXpib3QgaXMgdHJpZ2dlcmluZyB0aGlzIGFzIGEgcmVndWxhciBmdXp6aW5nIHNjZW5hcmlvLlxuXG5Db3VsZCBpdCBiZSBhIGNvbXBpbGUtb25seSB0ZXN0PyBBaCwgdGhhdCBcInN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1wiIG1lc3NhZ2UgbWFrZXMgbW9yZSBzZW5zZSBub3cuIEEgdXNlciBzdWJtaXR0ZWQgdGhlIHBhdGNoIHRvIHN5emJvdCBmb3IgdGVzdGluZy4gU3l6Ym90IHdpbGwgdHJ5IHRvIGV4ZWN1dGUgaXQsIGJ1dCBpZiBpdCBpcyB1bnJlYWNoYWJsZSwgdGhlIHBhdGNoIHdpbGwgbm90IGJlIHRlc3RlZC5cblxuSG1tLCBpcyB0aGVyZSBldmVuIGEgcmVtb3RlIHBvc3NpYmlsaXR5IG9mICpzb2Z0d2FyZSogZW11bGF0aW9uIGZvciBgYXRoMTJrYCB0aGF0IHN5emJvdCBjb3VsZCBsZXZlcmFnZT8gVGltZSB0byBsb29rIHRocm91Z2ggYGRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmNgIGFuZCBgY29yZS5jYCBhbmQgc2VlIGlmIHRoZXJlIGFyZSBhbnkgaGludHMgb2Ygc29mdHdhcmUtYmFzZWQgcHJvYmluZyBvciBlbXVsYXRpb24gb2YgdGhlIGhhcmR3YXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNDg4MiwiT3V0cHV0VG9rZW5zIjo0MiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4MiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODoyNi43OTUxMTYwOTJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIzOTA2Mjk5NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJhdGgxMmtfcGNpX3Byb2JlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmM9MTUwNz1hdGgxMmtfZ2V0X2RldmljZV9mYW1pbHkoY29uc3Qgc3RydWN0IHBjaV9kZXZpY2VfaWQgKnBjaV9kZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MjctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxNTI4OnN0YXRpYyBpbnQgYXRoMTJrX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE1MjktXFx0XFx0XFx0ICAgIGNvbnN0IHN0cnVjdCBwY2lfZGV2aWNlX2lkICpwY2lfZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYz0xODA4PWludCBhdGgxMmtfcGNpX3JlZ2lzdGVyX2RyaXZlcihjb25zdCBlbnVtIGF0aDEya19kZXZpY2VfZmFtaWx5IGRldmljZV9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvcGNpLmMtMTgyOS1cXHRwY2lfZHJpdmVyLVxcdTAwM2VpZF90YWJsZSA9IGRyaXZlci1cXHUwMDNlaWRfdGFibGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9wY2kuYzoxODMwOlxcdHBjaV9kcml2ZXItXFx1MDAzZXByb2JlID0gYXRoMTJrX3BjaV9wcm9iZTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3BjaS5jLTE4MzEtXFx0cGNpX2RyaXZlci1cXHUwMDNlcmVtb3ZlID0gYXRoMTJrX3BjaV9yZW1vdmU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA1OjQ4OjI5LjAzNDE5MDg3N1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3OTEwNzM0MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiBgYXRoMTJrYCBWaXJ0dWFsaXphdGlvbiBPcHRpb25zKipcblxuT2theSwgc28gSSdtIHRoaW5raW5nIGFib3V0IGhvdyB0byB0ZXN0IG9yIGRlYnVnIHRoZSBgYXRoMTJrYCBkcml2ZXIgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhlIGluaXRpYWwgYXNzdW1wdGlvbiDigJMgb3IsIHBlcmhhcHMsIHdpc2hmdWwgdGhpbmtpbmcg4oCTIHdhcyB0aGF0IHNvbWUga2luZCBvZiBlbXVsYXRpb24gbWlnaHQgZXhpc3Qgd2l0aGluIHRoZSBrZXJuZWwgaXRzZWxmLiBCdXQgYWZ0ZXIgYSBxdWljayByZXZpZXcsIGl0IGxvb2tzIGxpa2UgdGhlcmUncyBubyBidWlsdC1pbiBzb2Z0d2FyZSBlbXVsYXRpb24gKmRpcmVjdGx5KiBmb3IgYGF0aDEya2AuXG5cblRoZW4gSSBjb25zaWRlcmVkIGBtYWM4MDIxMV9od3NpbWAuIEkgcmVtZW1iZXIgdGhhdCdzIGEgc29mdHdhcmUgc2ltdWxhdG9yIGZvciBgbWFjODAyMTFgLCB3aGljaCBpcyB0aGUgZnJhbWV3b3JrIGBhdGgxMmtgIGxldmVyYWdlcywgYnV0IGl0J3MgYSBjb21wbGV0ZWx5IHNlcGFyYXRlIGRyaXZlciAoYGRyaXZlcnMvbmV0L3dpcmVsZXNzL21hYzgwMjExX2h3c2ltLmNgKS4gSXQgZG9lc24ndCBhY3R1YWxseSBpbnRlcmFjdCB3aXRoIGBhdGgxMmtgJ3MgY29kZSBiYXNlLiBTbywgdGhhdCdzIGEgZGVhZCBlbmQuXG5cblRoaXMgcmVhbGl6YXRpb24gaXMgbGVhZGluZyBtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0LCBiYXNlZCBvbiB0aGlzIGluaXRpYWwgaW52ZXN0aWdhdGlvbiwgcnVubmluZyBhbmQgaW50ZXJhY3Rpbmcgd2l0aCB0aGUgYGF0aDEya2AgY29kZSBpcyBlc3NlbnRpYWxseSBpbXBvc3NpYmxlIGluIHZpcnR1YWwgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIGV2ZW4gUUVNVSB3aXRob3V0IHNvbWUgZm9ybSBvZiBQQ0kgcGFzc3Rocm91Z2ggb2YgYWN0dWFsLCBwaHlzaWNhbCBoYXJkd2FyZS4gVGhhdCdzIGEgaHVnZSBjb25zdHJhaW50IG9uIHRoZSB3b3JrZmxvdy5cblxuTGV0IG1lIGp1c3QgZG8gb25lIGxhc3Qgc2FuaXR5IGNoZWNrIGFuZCBzZWUgaWYgdGhlcmUgaXMgYW55IHZpcnR1YWwgYnVzLCBvciBzb21lIHNvcnQgb2YgbW9jayBlbnZpcm9ubWVudCBmb3IgdGhlIGRyaXZlciwganVzdCBpbiBjYXNlIHNvbWV0aGluZyBoYXMgY2hhbmdlZCwgb3IgdGhlcmUncyBzb21lIG9ic2N1cmUgb3B0aW9uIEknbSBtaXNzaW5nLiBJdCB3b3VsZCBiZSBncmVhdCBpZiB0aGVyZSB3YXMgYW4gZWFzaWVyIG1ldGhvZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYxMzgsIk91dHB1dFRva2VucyI6NDIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMTdUMDU6NDg6MzMuODI1MjY3Mzg5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3OTk2NTE2NzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX2FoYl9wcm9iZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTk5OD1hdGgxMmtfYWhiX2dldF9kZXZpY2VfZmFtaWx5KGNvbnN0IHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTEwMTgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMDE5OnN0YXRpYyBpbnQgYXRoMTJrX2FoYl9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMTAyMC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTExODc9aW50IGF0aDEya19haGJfcmVnaXN0ZXJfZHJpdmVyKGNvbnN0IGVudW0gYXRoMTJrX2RldmljZV9mYW1pbHkgZGV2aWNlX2lkLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjA4LVxcdGFoYl9kcml2ZXItXFx1MDAzZWRyaXZlci5vZl9tYXRjaF90YWJsZSA9IGRyaXZlci1cXHUwMDNlaWRfdGFibGU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzoxMjA5OlxcdGFoYl9kcml2ZXItXFx1MDAzZXByb2JlICA9IGF0aDEya19haGJfcHJvYmU7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0xMjEwLVxcdGFoYl9kcml2ZXItXFx1MDAzZXJlbW92ZSA9IGF0aDEya19haGJfcmVtb3ZlO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0xN1QwNTo0ODozNC42MjQ5MzUwNDJaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwOTA5NjYxNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBQYXRjaCdzIEZ1enppbmcgUG90ZW50aWFsKipcblxuT2theSwgbGV0IG1lIHRoaW5rIHRoaXMgdGhyb3VnaC4gVGhpcyBwYXRjaCwgSSBzZWUsIGlzIHRhcmdldGVkIGF0IEFSTSBTb0NzLCB3aGljaCBpbW1lZGlhdGVseSByYWlzZXMgYSByZWQgZmxhZy4gVGhlc2Ugb2Z0ZW4gaW52b2x2ZSB2ZXJ5IHNwZWNpZmljIGhhcmR3YXJlIHJlcXVpcmVtZW50cyB0aGF0IGEgdG9vbCBsaWtlIHN5emJvdCB1c3VhbGx5IGRvZXNuJ3QgbmF0aXZlbHkgaGFuZGxlLCBjZXJ0YWlubHkgbm90IHdpdGhvdXQgdGhlIGFwcHJvcHJpYXRlIGRldmljZSB0cmVlIG5vZGVzLiBIbW0sIGNvdWxkIHN5emJvdCBzb21laG93IGluamVjdCBwbGF0Zm9ybSBkZXZpY2VzLCBJIHdvbmRlcj8gUGVyaGFwcyB0aHJvdWdoIGBzeXpfZGV2bWVtYCBvciBhIHNpbWlsYXIgbWVjaGFuaXNtPyBCdXQgZXZlbiB0aGVuLCB3ZSdyZSB0YWxraW5nIGFib3V0IG5lZWRpbmcgdG8gbWFwIG1lbW9yeSBhbmQgaGFuZGxlIGludGVycnVwdHMsIGFuZCB0aGF0J3MgYSAqdmVyeSogZ2VuZXJpYyB3YXkgb2YgZG9pbmcgdGhpbmdzLiBTeXpib3QgZG9lc24ndCBoYXZlIHRoZSBzb3BoaXN0aWNhdGVkIGVtdWxhdGlvbiBjYXBhYmlsaXRpZXMgcmVxdWlyZWQgZm9yIHNvbWV0aGluZyBjb21wbGV4IGxpa2UgYGF0aDEya2AuXG5cbldhaXQgYSBzZWNvbmQsIHdoYXQgaWYgdGhpcyBwYXRjaCAqaXNuJ3QqIHNvbGVseSBhYm91dCBgYXRoMTJrYD8gV2hhdCBpZiBpdCBhZmZlY3RzIGBtYWM4MDIxMWAgbW9yZSBicm9hZGx5LCBhbmQgYGF0aDEya2AgaXMganVzdCBvbmUgc3BlY2lmaWMgZHJpdmVyIHRoYXQncyB0b3VjaGVkPyBBaCwgbm8sIG15IG1pc3Rha2UuIFRoZSBmaWxlIHBhdGhzIGFyZSB2ZXJ5IHNwZWNpZmljOiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9jb3JlLmNgLCBgY29yZS5oYCwgYW5kIGBtYWMuY2AuIE9rYXksIHNvIGl0J3Mgc3RyaWN0bHkgYGF0aDEya2Atc3BlY2lmaWMgdGhlbi4gVGhhdCBjaGFuZ2VzIHRoaW5ncy5cblxuU2luY2UgYGF0aDEya2AgaXMgZXhwbGljaXRseSBhIGhhcmR3YXJlIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzLCBhbmQgdGhlcmUncyBubyBlcXVpdmFsZW50IHNvZnR3YXJlIGVtdWxhdGlvbiBpbiB0aGUga2VybmVsIGxpa2Ugd2UgaGF2ZSB3aXRoIGBtYWM4MDIxMV9od3NpbWAgb3IgYHZrbXNgIGZvciBEUk0sIGl0J3MgaW5oZXJlbnRseSB1bnJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMuIEl0ICpyZXF1aXJlcyogdGhlIGFjdHVhbCBoYXJkd2FyZSB0byBmdW5jdGlvbi5cblxuVGhlcmVmb3JlLCBhY2NvcmRpbmcgdG8gbXkgdW5kZXJzdGFuZGluZyBhbmQgYXNzZXNzbWVudCBvZiB0aGlzIHBhdGNoLCBgV29ydGhGdXp6aW5nYCBoYXMgdG8gYmUgYGZhbHNlYC5cblxuTGV0IG1lIHF1aWNrbHkgcmV2aWV3IHRoZSBpbnN0cnVjdGlvbnMganVzdCB0byBiZSBzdXJlLi4uIE9rYXksIGl0IHN0YXRlczogXCJSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zIGNvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZS5cIlxuXG5ZZXMsIGBhdGgxMmtgIGlzIGEgcmVhbCBoYXJkd2FyZSBkcml2ZXIsIGxpa2VseSBvbiBQQ0llIG9yIEFIQiBkZXZpY2VzLiBJdCdzIHNpbXBseSBub3QgcG9zc2libGUgdG8gcmVhY2ggaXQgaW4gR0NFL1FFTVUsIG9yIGFueSBvdGhlciB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudCwgd2l0aG91dCB0aGUgYWN0dWFsIGhhcmR3YXJlIHByZXNlbnQuXG5cblNvLCBJIHdpbGwgY29uZmlybSwgYFdvcnRoRnV6emluZz1mYWxzZWAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI2OTc5LCJPdXRwdXRUb2tlbnMiOjk2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzYxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTE3VDA1OjQ4OjQyLjEzNDAzNDcxOVoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjY5ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlciBmb3IgUXVhbGNvbW0gV2ktRmkgNyBkZXZpY2VzIChQQ0llL0FIQikuIFNpbmNlIHRoZXJlIGlzIG5vIHNvZnR3YXJlIGVtdWxhdGlvbiBmb3IgdGhpcyBoYXJkd2FyZSBpbiB0aGUga2VybmVsLCB0aGUgbW9kaWZpZWQgY29kZSBwYXRocyBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0udG9rZW5zIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnVG9vbER1ciA9IHN0YXRzLnRvb2wuY291bnQgPiAwID8gKHN0YXRzLnRvb2wuZHVyYXRpb24gLyBzdGF0cy50b29sLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCgkJCWNvbnN0IGxsbVN1bWFyeUNlbGxzID0gW3N0YXRzLmxsbS5jb3VudCwgc3RhdHMubGxtLnRva2VucywgYXZnTGxtVG9rZW4sIHN0YXRzLmxsbS5kdXJhdGlvbiwgYXZnTGxtRHVyXTsKCQkJY29uc3QgdG9vbFN1bW1hcnlDZWxscyA9IFtzdGF0cy50b29sLmNvdW50LCBzdGF0cy50b29sLmR1cmF0aW9uLCBhdmdUb29sRHVyXTsKCgkJCWNvbnN0IGxsbVN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xsbV9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJbGxtU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IGxsbVRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJbGxtU3VtYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCWxsbVRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCWxsbVN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKGxsbVRyKTsKCgkJCWNvbnN0IHRvb2xTdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b29sX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQl0b29sU3VtbWFyeUJvZHkuaW5uZXJIVE1MID0gIiI7CgkJCWNvbnN0IHRvb2xUciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCXRvb2xTdW1tYXJ5Q2VsbHMuZm9yRWFjaChjZWxsID0+IHsKCQkJCWNvbnN0IHRkID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndGQnKTsKCQkJCXRkLnRleHRDb250ZW50ID0gY2VsbDsKCQkJCXRvb2xUci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQl0b29sU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQodG9vbFRyKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgZmlsdGVyZWRTdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gWyJsbG0iLCAidG9vbCJdLmluY2x1ZGVzKGQuVHlwZSkpOwoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdEdXJhdGlvbicpOwoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOyAKCgkJCWZpbHRlcmVkU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCQoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7CgkJCQlsZXQgdG9vbHRpcCA9IHMuTmFtZTsKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iICYmIHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCQkJCWRhdGEuYWRkUm93KFtgJHtzLlNlcX1gLCBkdXIsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUaW1lIENvbnN1bXB0aW9uIG9mIExMTS9Ub29sIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0vVG9vbCBTdGVwcycsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdTZWNvbmRzJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkdXJhdGlvbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpIHsKCQkJY29uc3QgbGxtU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IGQuVHlwZSA9PT0gImxsbSIpOwoJCQlpZiAobGxtU3RlcHMubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQljb25zdCBkYXRhID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkRhdGFUYWJsZSgpOwoJCQlkYXRhLmFkZENvbHVtbignc3RyaW5nJywgJ1N0ZXAnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oJ251bWJlcicsICdUb2tlbnMnKTsJCQkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAnc3R5bGUnfSk7CQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICd0b29sdGlwJ30pOwkKCgkJCWNvbnN0IGFnZW50Q29sb3JzID0ge307CgkJCWNvbnN0IHBhbGV0dGUgPSBbJyM0Mjg1RjQnLCAnI0RCNDQzNycsICcjRjRCNDAwJywgJyMwRjlENTgnLCAnI0FCNDdCQycsICcjMDBBQ0MxJ107CgkJCWxldCBjb2xvcklkeCA9IDA7CgkJCWNvbnN0IGFnZW50TExNQ291bnRzID0ge307CgkJCWxsbVN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQlpZiAoIWFnZW50Q29sb3JzW3MuTmFtZV0pIHsKCQkJCQlhZ2VudENvbG9yc1tzLk5hbWVdID0gcGFsZXR0ZVtjb2xvcklkeCAlIHBhbGV0dGUubGVuZ3RoXTsKCQkJCQljb2xvcklkeCsrOwoJCQkJfQoKCQkJCWFnZW50TExNQ291bnRzW3MuTmFtZV0gPSAoYWdlbnRMTE1Db3VudHNbcy5OYW1lXSB8fCAwKSArIDE7CgkJCQljb25zdCBsYWJlbCA9IGAke3MuTmFtZX0tJHthZ2VudExMTUNvdW50c1tzLk5hbWVdfWA7CgkJCQljb25zdCB0b3RhbFRva2VucyA9IHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnM7CgkJCQljb25zdCBzdHlsZSA9IGBjb2xvcjogJHthZ2VudENvbG9yc1tzLk5hbWVdfWA7CgkJCQlsZXQgdG9vbHRpcCA9IGBUb3RhbCBUb2tlbnM6ICR7dG90YWxUb2tlbnN9XG4oSW46ICR7cy5JbnB1dFRva2Vuc30sIE91dDogJHtzLk91dHB1dFRva2Vuc30sIFRob3VnaHRzOiAke3MuT3V0cHV0VGhvdWdodHNUb2tlbnN9KWA7CgkJCQlpZiAocy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoKCQkJCWRhdGEuYWRkUm93KFtsYWJlbCwgdG90YWxUb2tlbnMsIHN0eWxlLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVG9rZW4gQ29uc3VtcHRpb24gYnkgTExNIENhbGxzJywKCQkJCWhBeGlzOiB7CgkJCQkJdGl0bGU6ICdMTE0gQ2FsbCBTZXF1ZW5jZScsCgkJCQl9LAoJCQkJdkF4aXM6IHsgdGl0bGU6ICdDb25zdW1lZCBUb2tlbnMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rva2VuX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgkJbGV0IGFsbEV4cGFuZGVkID0gZmFsc2U7CgkJZnVuY3Rpb24gdG9nZ2xlQWxsRGV0YWlscygpIHsKCQkJYWxsRXhwYW5kZWQgPSAhYWxsRXhwYW5kZWQ7CgkJCWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2RldGFpbHMnKS5mb3JFYWNoKGQgPT4gewoJCQkJaWYgKGFsbEV4cGFuZGVkKSBkLnNldEF0dHJpYnV0ZSgnb3BlbicsICcnKTsKCQkJCWVsc2UgZC5yZW1vdmVBdHRyaWJ1dGUoJ29wZW4nKTsKCQkJfSk7CgkJfQoJPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowcwvr8[1] Phase: Running StartedAt: 2026-07-17 05:48:54 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowcwvr8[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-17 05:48:54 +0000 UTC FinishedAt: 2026-07-17 05:49:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}