Name: series-workflowgbsbt Phase: Failed StartedAt: 2026-07-24 09:29:09 +0000 UTC FinishedAt: 2026-07-24 09:46:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgbsbt[0] Phase: Succeeded StartedAt: 2026-07-24 09:29:09 +0000 UTC FinishedAt: 2026-07-24 09:46:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgbsbt[0].run-triage Phase: Succeeded StartedAt: 2026-07-24 09:29:09 +0000 UTC FinishedAt: 2026-07-24 09:46:48 +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+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gZGV2aWNlcy4gSXQgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgZW11bGF0aW9uLCB0aGUgZHJpdmVyIGZhaWxzIHRvIHByb2JlLCBtYWtpbmcgdGhlIG1vZGlmaWVkIHRyYW5zbWlzc2lvbiBwYXRoIChhdGgxMmtfd2lmaTdfbWFjX29wX3R4KSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ0NmIwNWIxOWIyNGE2NzczNDY4ZmQxNmYwODg1YmIzZTFiYzYzMTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAwOTo0NTozOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IDFhYjExNjg1MTBhYWEwLi4yZTE3YmQ2NjVkYzk0MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5AQCAtMTAyOSw2ICYjNDM7MTAyOSw5IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHR0bXBfYXIgPSB0bXBfYXJ2aWYtXHUwMDNlYXI7XG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2dG1wX2FyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiBcdFx0XHR0bXBfZHAgPSBhdGgxMmtfYWJfdG9fZHAodG1wX2FyLVx1MDAzZWFiKTtcbiBcdFx0XHR0bXBfZHBfcGRldiA9IGF0aDEya19kcF90b19wZGV2X2RwKHRtcF9kcCxcbiBcdFx0XHRcdFx0XHRcdCAgIHRtcF9hci1cdTAwM2VwZGV2X2lkeCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gZGV2aWNlcy4gSXQgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgZW11bGF0aW9uLCB0aGUgZHJpdmVyIGZhaWxzIHRvIHByb2JlLCBtYWtpbmcgdGhlIG1vZGlmaWVkIHRyYW5zbWlzc2lvbiBwYXRoIChhdGgxMmtfd2lmaTdfbWFjX29wX3R4KSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDQ2YjA1YjE5YjI0YTY3NzM0NjhmZDE2ZjA4ODViYjNlMWJjNjMxNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDI0IDA5OjQ1OjM5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCmluZGV4IDFhYjExNjg1MTBhYWEwLi4yZTE3YmQ2NjVkYzk0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYwpAQCAtMTAyOSw2ICYjNDM7MTAyOSw5IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCQkJY29udGludWU7CiAKIAkJCXRtcF9hciA9IHRtcF9hcnZpZi0mZ3Q7YXI7CiYjNDM7CQkJaWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCAmYW1wO3RtcF9hci0mZ3Q7YWItJmd0O2Rldl9mbGFncykpKQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsKIAkJCXRtcF9kcCA9IGF0aDEya19hYl90b19kcCh0bXBfYXItJmd0O2FiKTsKIAkJCXRtcF9kcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAodG1wX2RwLAogCQkJCQkJCSAgIHRtcF9hci0mZ3Q7cGRldl9pZHgpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTkwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jYCB0aGF0IGludHJvZHVjZXMgYSBgQ1JBU0hfRkxVU0hgIGZsYWcgY2hlY2sgd2l0aGluIHRoZSBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3Mgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBgYXRoMTJrYCBkcml2ZXIgaXMgZm9yIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIHRoYXQgdHJhZGl0aW9uYWwgZnV6emluZyBtaWdodCBiZSB0cmlja3kuCgpIYXJkd2FyZS1zcGVjaWZpYyBXaS1GaSBkcml2ZXJzIGxpa2UgdGhpcyBhcmUgb2Z0ZW4gZGlmZmljdWx0IHRvIGRpcmVjdGx5IGZ1enogd2l0aG91dCBzcGVjaWFsaXplZCBlbXVsYXRpb24g4oCTIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIHBlcmhhcHMsIG9yIGluamVjdGluZyBQQ0kvVVNCIGRldmljZXMuIFN5emthbGxlciwgaW4gdGhlb3J5LCAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIHZoY2kvcGNpIGVtdWxhdGlvbi4gQnV0LCBjb3VsZCBpdCByZWFjaCB0aGlzIHNwZWNpZmljIGRyaXZlcj8gQW5kIGlzIGl0IGV2ZW4gY29uZmlndXJlZCBhcyBVU0I/IE15IGltbWVkaWF0ZSBjaGVjayBpcyB3aGV0aGVyIGBhdGgxMmtgIGhhcyBVU0Igc3VwcG9ydCwgYXMgdGhhdCB3b3VsZCBtYWtlIHRoaW5ncyBtdWNoIGVhc2llci4KCkkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBQQ0kvQUhCIGRyaXZlciBpcyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcy4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgZXhjbHVkZSBzY2VuYXJpb3Mgd2hlcmUgaGFyZHdhcmUgaXMgZW11bGF0ZWQsIHN1Y2ggYXMgd2l0aCBhIHVzYiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0sIGFzIHdlbGwgYXMgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoYXQmIzM5O3MgYSBrZXkgY29uc3RyYWludCBoZXJlLiBHaXZlbiB0aGlzIGFuZCB0aGUgdHlwaWNhbCBsaW1pdGF0aW9ucywgSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJiMzOTtzIGFueSBwYXRod2F5IHRvIHRyaWdnZXIgdGhpcyBjb2RlIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuIFRoZSBjaGFsbGVuZ2UgaXMsIHdpdGhvdXQgdGhhdCBlbXVsYXRpb24sIHJlYWNoaW5nIGhhcmR3YXJlLXNwZWNpZmljIGNvZGUgY2FuIGJlIGV4Y2VwdGlvbmFsbHkgZGlmZmljdWx0IHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfdXNiX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkFzc2Vzc21lbnQgVGltZTogUENJIG9yIE5vdCBQQ0k/KioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHNpdHVhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoZXRoZXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIFBDSSBjb21wbGlhbmNlIGlzc3VlLCBvciBpZiB0aGUgcHJvYmxlbSBsaWVzIGVsc2V3aGVyZS4gSSBuZWVkIHRvIHRyaWFnZSB0aGlzIGZhc3QuIElkZW50aWZ5aW5nIGlmIHRoaXMgaXMgYSBQQ0ktc3BlY2lmaWMgY29uY2VybiwgYXQgdGhpcyBzdGFnZSBvZiB0aGUgaW52ZXN0aWdhdGlvbiwgd2lsbCBkaWN0YXRlIHRoZSBpbW1lZGlhdGUgZGlyZWN0aW9uIEkgdGFrZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RhcnRpbmcgcG9pbnQ7IGZvY3VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTg5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgYXRoMTJrIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBhdGgxMmtgIHNpdHVhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGUgc3lzdGVtIHJlY29nbml6ZXMgYW5kIGludGVncmF0ZXMgaXQuIEhvdyBpcyB0aGUgYGF0aDEya2AgZHJpdmVyIGFjdHVhbGx5ICpyZWdpc3RlcmVkKiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBvdmVyYWxsIGZyYW1ld29yaz8gSXMgaXQgdGhyb3VnaCBhIHNwZWNpZmljIGJ1cyBpbnRlcmZhY2UsIGEgbW9kdWxlLWxvYWRpbmcgbWVjaGFuaXNtLCBzb21lIGtpbmQgb2YgcGxhdGZvcm0gZHJpdmVyIHByb2JlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIG1ldGhvZCBvZiByZWdpc3RyYXRpb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHdpcmVsZXNzIHN1YnN5c3RlbSBhbmQgdGhlIGhhcmR3YXJlIGl0c2VsZi4gS25vd2luZyAqaG93KiBpdCYjMzk7cyByZWdpc3RlcmVkIGlzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYz01NT1zdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jLTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmM6NjQ6bW9kdWxlX2luaXQoYXRoMTJrX3dpZmk3X2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmMtNjUtbW9kdWxlX2V4aXQoYXRoMTJrX3dpZmk3X2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMzAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGF0aDEya193aWZpN19pbml0KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgd2VlZHMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlzc2VjdCB0aGUgZnVuY3Rpb24gYGF0aDEya193aWZpN19pbml0YC4gU2luY2UgSSYjMzk7bSBsb29raW5nIGF0IFdpLUZpIDcgc2lsaWNvbiwgSSBleHBlY3QgdGhpcyB0byBiZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciB0aGUgbmV3IGhhcmR3YXJlIGFuZCBpdHMgc3BlY2lmaWMgZmVhdHVyZXMuIEkmIzM5O20gYW50aWNpcGF0aW5nIGl0JiMzOTtsbCBoYW5kbGUgbXVjaCBvZiB0aGUgc2V0dXAgcmVsYXRlZCB0byA4MDIuMTFiZSBmdW5jdGlvbmFsaXR5LCBwZXJoYXBzIGluY2x1ZGluZyB0aGluZ3MgbGlrZToKCiogICAqKkluaXRpYWxpemF0aW9uIG9mIHRoZSBoYXJkd2FyZSByZWdpc3RlcnM6KiogU2V0dGluZyB1cCB0aGUgYmFzZSBhZGRyZXNzZXMgYW5kIHRoZSBjcml0aWNhbCBjb250cm9sIHJlZ2lzdGVycy4KKiAgICoqUEhZIGNvbmZpZ3VyYXRpb246KiogVHdlYWtpbmcgdGhlIHBoeXNpY2FsIGxheWVyIHBhcmFtZXRlcnMgdG8gbWF0Y2ggODAyLjExYmUgc3BlY3MsIGluY2x1ZGluZyB0aGUgd2lkZXIgY2hhbm5lbCB3aWR0aHMgKDMyME1IeiksIG5ldyBtb2R1bGF0aW9uIHNjaGVtZXMgKDQwOTYtUUFNLCBtYXliZSBldmVuIHRoZSBuZXcgbXVsdGktdXNlciBvcGVyYXRpb24pLgoqICAgKipNQUMgbGF5ZXIgc2V0dXA6KiogQ29uZmlndXJpbmcgdGhlIE1BQyByZWdpc3RlcnMgZm9yIHRoZSBuZXcgZmVhdHVyZXMgbGlrZSBtdWx0aS1saW5rIG9wZXJhdGlvbiAoTUxPKSBhbmQgcG90ZW50aWFsbHkgdGhlIG5ldyBzaWduYWxpbmcgaW4gdGhlIG5ldyBtZWRpdW0gYWNjZXNzIGNvbnRyb2wgcHJvdG9jb2xzLgoqICAgKipEcml2ZXIgcmVnaXN0cmF0aW9uOioqIElmIEkmIzM5O20gbHVja3ksIHRoaXMgZnVuY3Rpb24gbWF5IGFsc28gcmVnaXN0ZXIgdGhlIGRldmljZSBhbmQgdGhlIGFzc29jaWF0ZWQgZHJpdmVyIHdpdGggdGhlIGtlcm5lbC4gSSBjYW4gZ2V0IGEgYmV0dGVyIG92ZXJ2aWV3IG9mIHdoYXQmIzM5O3MgZ29pbmcgb24gYnkgbG9va2luZyBmb3Iga2VybmVsIGNhbGxzIHJlbGF0ZWQgdG8gbmV0ZGV2IHJlZ2lzdHJhdGlvbi4KKiAgICoqSW50ZXJydXB0IHNldHVwOioqIFRoZSBmdW5jdGlvbiBtdXN0IHNldHVwIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMgdG8gaGFuZGxlIGFsbCB0aGUgZXZlbnRzIHRoZSBuZXcgaGFyZHdhcmUgaXMgZ29pbmcgdG8gZ2VuZXJhdGUsIEkgd291bGQgZXhwZWN0IGEgZGlmZmVyZW50IHNldCBvZiBpbnRlcnJ1cHQgdHlwZXMgdG8gdGhlIHByZXZpb3VzIGdlbmVyYXRpb24uCgpJJiMzOTtsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgY2FsbHMgdGhhdCBoYW5kbGUgdGhlIG5ldyBmZWF0dXJlcy4gSG9wZWZ1bGx5LCBpdCYjMzk7cyB3ZWxsLWNvbW1lbnRlZCwgYW5kIEkgY2FuIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGltcG9ydGFudCBzZWN0aW9ucy4gSSBhbHNvIHdhbnQgdG8gc2VlIGlmIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGRpdmVyZ2VzIGZyb20gdGhlIGV4aXN0aW5nIGBhdGgxMWtgIG9yIG90aGVyIGBhdGhgIGRyaXZlcnM7IGlzIHRoaXMgYnVpbHQgb24gdG9wIG9mIHRoZSBvbGQgZHJpdmVyLCBvciBpcyBpdCBjb21wbGV0ZWx5IG5ldy4gSSYjMzk7bSBrZWVuIHRvIHNwb3QgYW55IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIHRoYXQgdGhlIGVuZ2luZWVycyB3ZXJlIHdvcmtpbmcgdG8gbWl0aWdhdGUuIE92ZXJhbGwsIEkgZXhwZWN0IGEgd2VsbC1zdHJ1Y3R1cmVkIGZ1bmN0aW9uIHdpdGggY2FyZWZ1bCBoYW5kbGluZyBvZiB0aGUgbmV3IFdpLUZpIDcgcmVxdWlyZW1lbnRzLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3dpZmk3X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jPTMzPXZvaWQgYXRoMTJrX3dpZmk3X2FyY2hfZGVpbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYzozOTpzdGF0aWMgaW50IGF0aDEya193aWZpN19pbml0KHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYy00MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmM9NTU9c3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYy02My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jOjY0Om1vZHVsZV9pbml0KGF0aDEya193aWZpN19pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jLTY1LW1vZHVsZV9leGl0KGF0aDEya193aWZpN19leGl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzMgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQmIzM5O3MgZ29pbmcgdGhyb3VnaCBteSBtaW5kIGFzIEkgYXBwcm9hY2ggdGhpcyBgYXRoMTJrX3dpZmk3X2luaXRgIGNvZGUsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBdGgxMmsgV2lGaSA3IEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGlzLiBgYXRoMTJrX3dpZmk3X2luaXRgLiBJbW1lZGlhdGVseSwgdGhlICYjMzQ7aW5pdCYjMzQ7IHBhcnQgc2lnbmFscyB0aGF0IHRoaXMgaXMgdGhlIHByaW1hcnkgc2V0dXAgZnVuY3Rpb24gZm9yIHRoZSBXaUZpIDcgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGF0aDEyayBkcml2ZXIuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGNvcmUgZW50cnkgcG9pbnQsIHRoZSBvbmUgdGhhdCBvcmNoZXN0cmF0ZXMgdGhlIGluaXRpYWwgZGV2aWNlIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGludGVncmF0ZXMgd2l0aCB0aGUgaGFyZHdhcmUsIGNvbmZpZ3VyZXMgdGhlIHJhZGlvLCBhbmQgc2V0cyB1cCB0aGUgZm91bmRhdGlvbmFsIGRhdGEgc3RydWN0dXJlcyBmb3IgV2lGaSA3IG9wZXJhdGlvbnMuIEkgYmV0IHRoaXMgaXMgd2hlcmUgdGhlIHBvd2VyLXVwIHNlcXVlbmNlLCBQSFkgaW5pdGlhbGl6YXRpb24sIGFuZCBwb3NzaWJseSBmaXJtd2FyZSBsb2FkaW5nIGFyZSBoYW5kbGVkLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSByZWdpc3RlciBzZXR0aW5ncywgY2xvY2sgY29uZmlndXJhdGlvbnMsIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBkcml2ZXIgc3RydWN0dXJlcywgYW5kIGVycm9yIGhhbmRsaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIHNlcXVlbmNlIG9mIGNhbGxzLCBhbmQgYW55IGhhcmR3YXJlLXNwZWNpZmljIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyB0aGUgbmV3IGZlYXR1cmVzIG9mIFdpRmkgNywgbGlrZSB0aGUgMzIwIE1IeiBjaGFubmVscywgbXVsdGktbGluayBvcGVyYXRpb24sIGFuZCBpbXByb3ZlZCBtb2R1bGF0aW9uIHNjaGVtZXMsIGFyZSBpbnRlZ3JhdGVkIGF0IHRoZSB2ZXJ5IHN0YXJ0LiBJJiMzOTtsbCBiZSB0cnlpbmcgdG8gZ3Jhc3AgdGhlIGFyY2hpdGVjdHVyYWwgZGVjaXNpb25zIG1hZGUgaGVyZSB0byBlbmFibGUgdGhpcyBuZXcgc3RhbmRhcmQuIEl0JiMzOTtzIGxpa2VseSBnb2luZyB0byBiZSBhIGNvbXBsZXggZGFuY2UgYmV0d2VlbiBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBhbmQgZHJpdmVyIHNldHVwLCBJIG5lZWQgdG8gc2VlIGhvdyB0aGV5IGNvbWUgdG9nZXRoZXIuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzA6XHRcdHJldHVybiAwO1xuICAzMTpcdH1cbiAgMzI6XHRcbiAgMzM6XHR2b2lkIGF0aDEya193aWZpN19hcmNoX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuICAzNDpcdHtcbiAgMzU6XHRcdGF0aDEya193aWZpN19kcF9kZXZpY2VfZnJlZShhYi1cdTAwM2VkcCk7XG4gIDM2Olx0XHRhYi1cdTAwM2VkcCA9IE5VTEw7XG4gIDM3Olx0fVxuICAzODpcdFxuICAzOTpcdHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2luaXQodm9pZClcbiAgNDA6XHR7XG4gIDQxOlx0XHRhaGJfZXJyID0gYXRoMTJrX3dpZmk3X2FoYl9pbml0KCk7XG4gIDQyOlx0XHRpZiAoYWhiX2VycilcbiAgNDM6XHRcdFx0cHJfd2FybihcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSBhdGgxMmsgV2ktRmkgNyBBSEIgZGV2aWNlOiAlZFxcblwmIzM0OyxcbiAgNDQ6XHRcdFx0XHRhaGJfZXJyKTtcbiAgNDU6XHRcbiAgNDY6XHRcdHBjaV9lcnIgPSBhdGgxMmtfd2lmaTdfcGNpX2luaXQoKTtcbiAgNDc6XHRcdGlmIChwY2lfZXJyKVxuICA0ODpcdFx0XHRwcl93YXJuKFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIGF0aDEyayBXaS1GaSA3IFBDSSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuICA0OTpcdFx0XHRcdHBjaV9lcnIpO1xuICA1MDpcdFxuICA1MTpcdFx0LyogSWYgYm90aCBmYWlsZWQsIHJldHVybiBvbmUgb2YgdGhlIGZhaWx1cmVzIChhcmJpdHJhcnkpICovXG4gIDUyOlx0XHRyZXR1cm4gYWhiX2VyciBcdTAwMjZcdTAwMjYgcGNpX2VyciA/IGFoYl9lcnIgOiAwO1xuICA1MzpcdH1cbiAgNTQ6XHRcbiAgNTU6XHRzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfZXhpdCh2b2lkKVxuICA1NjpcdHtcbiAgNTc6XHRcdGlmICghcGNpX2VycilcbiAgNTg6XHRcdFx0YXRoMTJrX3dpZmk3X3BjaV9leGl0KCk7XG4gIDU5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBdHRhaW5hYmlsaXR5IG9mIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCB2aWEgU3l6a2FsbGVyIFBDSSBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCBpdCYjMzk7cyBoaXR0aW5nIG1lIHRoYXQgaXQmIzM5O3MgZGVhbGluZyB3aXRoIEFIQiBhbmQgUENJIGRldmljZXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGV2ZW4gZnV6eiBQQ0kgZGV2aWNlcz8gVGhlIGFuc3dlciBpcyB5ZXMsIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCBzcGVjaWZpY2FsbHkgYHN5el9wY2lfZGV2aWNlYC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSAqcmVhY2gqIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCB0aHJvdWdoIHRoaXMgcm91dGU/CgpQQ0kgZnV6emluZyBpcyBnZW5lcmFsbHkgZ29vZCBhdCBwcm9iaW5nIGRldmljZXMgYW5kIHRlc3RpbmcgdGhlIGJhc2ljIGRldmljZSBmdW5jdGlvbmFsaXR5LCBidXQgZ2V0dGluZyBhIGZ1bGwgbWFjODAyMTEgc3RhY2sgdXAgYW5kIHJ1bm5pbmcgdG8gdGhlIHBvaW50IHdoZXJlIGBtYWNfb3BfdHhgIGdldHMgY2FsbGVkIGlzIGEgbWFzc2l2ZSB1bmRlcnRha2luZy4gVW5sZXNzIHRoZXJlJiMzOTtzIHZlcnkgc3BlY2lmaWMgZW11bGF0aW9uIGJ1aWx0IGluLCBpdCYjMzk7cyB2aXJ0dWFsbHkgaW1wb3NzaWJsZS4gV2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nLCBidXQgaXQgdXN1YWxseSBkb2VzbiYjMzk7dCBkaWcgZGVlcCBpbnRvIHRoZSBuZXR3b3JrIHRyYW5zbWlzc2lvbiBsb2dpYyB1bmxlc3MgaXTigJlzIGRlYWxpbmcgd2l0aCB2aXJ0dWFsIGRldmljZXMgbGlrZSB2aXJ0aW8sIG9yIHRoZXJlJiMzOTtzIGV4cGxpY2l0LCBzcGVjaWFsaXplZCBzdXBwb3J0LgoKTm93LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9uczogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhhdCYjMzk7cyBtYWtpbmcgbWUgd29uZGVyOiBpcyBgYXRoMTJrYCBldmVuICpyZWFjaGFibGUqIGluIHRoaXMgY29udGV4dD8KCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEV2ZW4gaWYgc3l6a2FsbGVyIGNhbiBpbmplY3QgUENJIGRldmljZXMgd2l0aCBgc3l6X3BjaV9kZXZpY2VgIG9yIGEgc2ltaWxhciBjYWxsLCB0aGUgY2hhbmNlcyBvZiBoaXR0aW5nIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCBhcmUgaW5jcmVkaWJseSBzbGltLiBUaGlzIGlzIGJlY2F1c2UgZ2V0dGluZyB0aGF0IGZ1bmN0aW9uIHRvIGV4ZWN1dGUgcmVxdWlyZXMgdGhlIGRldmljZSB0byBmdWxseSBpbml0aWFsaXplLCBzdWNjZXNzZnVsbHkgcmVnaXN0ZXIgd2l0aCBtYWM4MDIxMSwgdGhlbiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaGFzIHRvIGJlIGJyb3VnaHQgdXAsIGFuZCB0aGVuIHBhY2tldHMgaGF2ZSB0byBzdGFydCBiZWluZyB0cmFuc21pdHRlZC4gVGhlIHdob2xlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZm9yIGF0aDEyayBpcyBjb21wbGV4LCBpdCByZWxpZXMgb24gY29tcGxleCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMgKFFNSSwgTUhJLCBhbmQgb3RoZXIgcHJvcHJpZXRhcnkgaW50ZXJmYWNlcyksIGFuZCBJJiMzOTttIHByZXR0eSBjZXJ0YWluIHRoYXQgdGhvc2UgYXJlICpub3QqIGVtdWxhdGVkLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnMgaWYgYXRoMTJrIHVzZXMgZmlybXdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoYXQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0zMzQ9c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM2NzpcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2ZncsIGZ3X25hbWUsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2OC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY5Olx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM3MC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDAwOlx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZmdzIsIGZ3Ml9uYW1lLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQwMjpcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7cmVxdWVzdF9maXJtd2FyZSBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDMtXHRcdGdvdG8gZXJyX2Z3O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjEwOnN0YXRpYyBpbnQgYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oc3RydWN0IGF0aDEya19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xMS1cdFx0XHRcdFx0ICAgIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jPTE2Mz12b2lkIGF0aDEya19md19tYXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjE2NzpcdHJldCA9IGF0aDEya19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKGFiLCBBVEgxMktfRldfQVBJMl9GSUxFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xNjgtXHRpZiAocmV0ID09IDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMmsgRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGF0aDEya2Agc2l0dWF0aW9uLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyOiB3aXRob3V0IHRoZSBwcm9wZXIgZmlybXdhcmUgbG9hZGVkIGFuZCB0aGUgaGFyZHdhcmUgZW11bGF0ZWQsIHRoaXMgZHJpdmVyIGlzIERPQS4gVGhlIGRyaXZlciwgYmVpbmcgd2hhdCBpdCBpcywgcmVsaWVzIGhlYXZpbHkgb24gdGhlc2UgY29tcG9uZW50cyB0byBmdW5jdGlvbi4gTm8gZmlybXdhcmUsIG5vIGVtdWxhdGlvbiwgYW5kIHRoZSBkcml2ZXIgd29uJiMzOTt0IGV2ZW4gcHJvYmUsIGxldCBhbG9uZSBpbml0aWFsaXplLiBUaGlzIG1lYW5zIHRoYXQgYSBjcnVjaWFsIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgYGF0aDEya193aWZpN19tYWNfb3BfdHhgLCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZy4gRm9yZ2V0IGFib3V0IHNlZWluZyBpdCBydW5uaW5nIGluIEdDRSBvciBRRU1VIHdpdGhvdXQgc2lnbmlmaWNhbnQgbW9kaWZpY2F0aW9uIG9yIGEgdmVyeSBjbGV2ZXIgd29ya2Fyb3VuZC4KClRoZSBtb3JlIEkgdGhpbmsgYWJvdXQgaXQsIEkgc3RhcnQgdG8gd29uZGVyIGlmIHRoZXJlJiMzOTtzIGFueSBjbGV2ZXIgdGVzdGluZyBtb2RlIG9yIG1vY2sgZnVuY3Rpb25hbGl0eSBidWlsdCBpbnRvIHRoZSBgYXRoMTJrYCBkcml2ZXIgaXRzZWxmPyBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgaGlkZGVuIHN3aXRjaCB0aGF0IGFsbG93cyBmb3Igc29tZSBsZXZlbCBvZiBiYXNpYyBvcGVyYXRpb24sIGV2ZW4gd2l0aG91dCB0aGUgZnVsbCBoYXJkd2FyZSBzdGFjay4gVGhhdCBjb3VsZCBiZSBteSBiZXN0IGhvcGUuIEdvdHRhIGludmVzdGlnYXRlIHRoYXQgYXNwZWN0IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rlc3Rtb2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlPTMzPWF0aDEyay0kKENPTkZJR19BVEgxMktfQ09SRURVTVApICYjNDM7PSBjb3JlZHVtcC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM0OmF0aDEyay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNS1hdGgxMmstJChDT05GSUdfVEhFUk1BTCkgJiM0Mzs9IHRoZXJtYWwub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTctI2luY2x1ZGUgXCYjMzQ7ZHBfcnguaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxODojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE5LSNpbmNsdWRlIFwmIzM0O3BlZXIuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjc6I2luY2x1ZGUgXCYjMzQ7dGVzdG1vZGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTgtI2luY2x1ZGUgXHUwMDNjbmV0L25ldGxpbmsuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMy0jaW5jbHVkZSBcJiMzNDtoaWYuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE0OiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rtb2RlX2kuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz00NT12b2lkIGF0aDEya190bV93bWlfZXZlbnRfdW5zZWdtZW50ZWQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGNtZF9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTEtXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjUyOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBldmVudCB3bWkgY21kX2lkICVkIHNrYiBsZW5ndGggJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTMtXHRcdCAgIGNtZF9pZCwgc2tiLVx1MDAzZWxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTU4LVx0aWYgKCFhcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjU5Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGludmFsaWQgcGRldlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NjU6XHRubF9za2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19ldmVudF9za2IoYXItXHUwMDNlYWgtXHUwMDNlaHctXHUwMDNld2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjYtXHRcdFx0XHRcdFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03Mi1cdFx0YXRoMTJrX3dhcm4oYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NzM6XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBhbGxvY2F0ZSBza2IgZm9yIHVuc2VnbWVudGVkIHRlc3Rtb2RlIHdtaSBldmVudFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzktXHQgICAgbmxhX3B1dChubF9za2IsIEFUSF9UTV9BVFRSX0RBVEEsIHNrYi1cdTAwM2VsZW4sIHNrYi1cdTAwM2VkYXRhKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjgwOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHBvcHVsYXRlIHRlc3Rtb2RlIHVuc2VnbWVudGVkIGV2ZW50XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04MS1cdFx0a2ZyZWVfc2tiKG5sX3NrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjg1Olx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04Ni19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTg4PXZvaWQgYXRoMTJrX3RtX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGNtZF9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtOTktXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjEwMDpcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgd21pIGNtZF9pZCAlZCBmdG0gZXZlbnQgbXNnICVwIGRhdGFsZW4gJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTAxLVx0XHQgICBjbWRfaWQsIGZ0bV9tc2csIGxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEwNS1cdGlmIChwZGV2X2lkIFx1MDAzZT0gYWItXHUwMDNlbnVtX3JhZGlvcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjEwNjpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O3Rlc3Rtb2RlIGV2ZW50IG5vdCBoYW5kbGVkIGR1ZSB0byBpbnZhbGlkIHBkZXYgaWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEwNy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTItXHRpZiAoIWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTEzOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGFic2VuY2Ugb2YgcGRldlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTE0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE1My1cdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE1NDpcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cdTAwM2VhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNTUtXHRcdFx0XHRcdFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNjEtXHRcdGF0aDEya193YXJuKGFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE2MjpcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdGVzdG1vZGUgd21pIGV2ZW50XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNjMtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTcwLVx0XHQgICAgXHUwMDI2YWItXHUwMDNlZnRtX2V2ZW50X29iai5ldmVudGRhdGFbMF0pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTcxOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHBvcHVsYXRlIHRlc3Rtb2RlIGV2ZW50XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzItXHRcdGtmcmVlX3NrYihubF9za2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTc2Olx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0xNzk9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODMtXHRhdGgxMmtfZGJnKGFyLVx1MDAzZWFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE4NDpcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgY21kIGdldCB2ZXJzaW9uX21ham9yICVkIHZlcnNpb25fbWlub3IgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTg1LVx0XHQgICBBVEhfVEVTVE1PREVfVkVSU0lPTl9NQUpPUixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTg4LVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTg5Olx0c2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfcmVwbHlfc2tiKGFyLVx1MDAzZWFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE5MC1cdFx0XHRcdFx0XHQyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjIwNDpcdHJldHVybiBjZmc4MDIxMV90ZXN0bW9kZV9yZXBseShza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIwNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTIwNz1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfcHJvY2Vzc19mdG0oc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIyOS1cdGF0aDEya19kYmcoYXItXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjMwOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCBidWYgJXAgYnVmX2xlbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMzEtXHRcdCAgIGNtZF9pZCwgYnVmLCBidWZfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjI4MTpzdGF0aWMgaW50IGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjgyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MzAwPXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMxOC1cdGlmICghYnVmX2xlbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjMxOTpcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O05vIGRhdGEgcHJlc2VudCBpbiB0ZXN0bW9kZSBjb21tYW5kXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMjAtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMzEtXHRhdGgxMmtfZGJnKGFyLVx1MDAzZWFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjMzMjpcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgY21kIHdtaSBjbWRfaWQgJWQgIGJ1ZiBsZW5ndGggJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzMzLVx0XHQgICBjbWRfaWQsIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zNDYtXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozNDc6XHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcJiMzNDtmYWlsZWQgdG8gdHJhbnNtaXQgd21pIGNvbW1hbmQgKHRlc3Rtb2RlKTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzQ4LVx0XHRcdCAgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0zNTQ9aW50IGF0aDEya190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTM4NS1cdGNhc2UgQVRIX1RNX0NNRF9URVNUTU9ERV9TVEFSVDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozODY6XHRcdHJldHVybiBhdGgxMmtfdG1fY21kX3Rlc3Rtb2RlX3N0YXJ0KGFyLCB0Yik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzg3LVx0Y2FzZSBBVEhfVE1fQ01EX0dFVF9WRVJTSU9OOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0yNC0jaW5jbHVkZSBcJiMzNDsuLi9kZWJ1Z2ZzX3N0YS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MjU6I2luY2x1ZGUgXCYjMzQ7Li4vdGVzdG1vZGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI2LSNpbmNsdWRlIFwmIzM0O2hhbC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yNi0jaW5jbHVkZSBcJiMzNDtwMnAuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoyNzojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTI4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE1MAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUZXN0bW9kZSYjMzk7cyBMaW1pdGF0aW9ucyoqCgpPa2F5LCBzbyB0ZXN0bW9kZeKApiBpdCBzZWVtcyB0aGlzIGlzIGFsbCBhYm91dCB1c2luZyBubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmRzIHRvIHNlbmQgV01JIGNvbW1hbmRzIGRpcmVjdGx5IHRvIHRoZSBmaXJtd2FyZS4gVGhhdCBtYWtlcyBzZW5zZSwgYSBzdGFuZGFyZCBhcHByb2FjaCBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLiBIb3dldmVyLCBpdCYjMzk7cyBjcnVjaWFsIHRvIHJlbWVtYmVyIHRoYXQgaXQmIzM5O3MgKm5vdCogYSBmaXJtd2FyZSBieXBhc3MuIFlvdSBzdGlsbCBuZWVkIHRoYXQgZmlybXdhcmUgcnVubmluZy4gVGhlIGltcGxpY2F0aW9ucyBhcmUgdGhhdCB3aXRob3V0IGZpcm13YXJlLCB0aGUgZHJpdmVyIGNyYXNoZXMgcHJldHR5IGVhcmx5LCBhdCBlaXRoZXIgYGF0aDEya19haGJfcG93ZXJfdXBgIG9yIGBhdGgxMmtfcGNpX3Bvd2VyX3VwYCwgbWVhbmluZyB0aGUgYGllZWU4MDIxMV9od2Agc3RydWN0dXJlIG5ldmVyIGdldHMgcmVnaXN0ZXJlZCB3aXRoIG1hYzgwMjExLgoKVGhhdCYjMzk7cyBjcml0aWNhbCEgSWYgdGhlIGBpZWVlODAyMTFfaHdgIGlzbiYjMzk7dCByZWdpc3RlcmVkLCB0aGVuIGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCBhcmUgbmV2ZXIgZXZlbiAqcmVhY2hhYmxlKi4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgdGhlIGNhc2UuIEhvbGQgb24sIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2suLi4gSSBuZWVkIHRvIHZlcmlmeSBpZiBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgY2FuIGV2ZW4gZnVuY3Rpb24gd2l0aG91dCB0aGUgaGFyZHdhcmUuIAoKQWgsIHJpZ2h0LiBMb29raW5nIGF0IHRoZSBjb2RlLCBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgaXMgcGFydCBvZiBgYXRoMTJrX3dpZmk3X21hY19vcHNgLCB3aGljaCBpcyByZWdpc3RlcmVkIHRocm91Z2ggYGllZWU4MDIxMV9od19zZXR1cGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdoaWNoIHdpbGwgcmVxdWlyZSB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0byBiZSByZWdpc3RlcmVkLgoKT2theSwgbm93IGxldCYjMzk7cyBnbyBkZWVwZXIgYW5kIHZlcmlmeSB3aGVyZSBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgaXMgYXNzaWduZWQgaW4gdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3dpZmk3X21hY19vcF90eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jPTM1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy04ODUtLyogTm90ZTogY2FsbGVkIHVuZGVyIHJjdV9yZWFkX2xvY2soKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jOjg4NjpzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTg4Ny1cdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9MTE0OD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoxMTQ5Olx0LnR4XHRcdFx0XHQ9IGF0aDEya193aWZpN19tYWNfb3BfdHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMTE1MC1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTE4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBhdGgxMmtfb3BzX3dpZmk3YCBEcml2ZXIgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBhdGgxMmtfb3BzX3dpZmk3YCBkcml2ZXIsIGFuZCBpdCYjMzk7cyByZWdpc3RlcmVkIHdpdGggbWFjODAyMTEuIEJ1dCB0aGF0IHJlZ2lzdHJhdGlvbiBpcyBjb25kaXRpb25hbCwgb25seSBoYXBwZW5pbmcgaWYgdGhlIGRldmljZSBwcm9iZXMgc3VjY2Vzc2Z1bGx5LiBUaGUgcHJvYmxlbSBpcyB0aGF0IHN1Y2Nlc3NmdWwgcHJvYmluZyBkZW1hbmRzIGJvdGggZmlybXdhcmUgYW5kIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIOKAkyB3aGV0aGVyIFBDSSBvciBBSEIg4oCTIHRvIGJlIHByZXNlbnQgYW5kIGZ1bmN0aW9uYWwuIE5vdywgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIGV2ZW4gUUVNVSwgdGhhdCYjMzk7cyBhIGh1Z2UgaHVyZGxlLiBVbmxlc3MgeW91IGhhdmUgc3BlY2lmaWMgZW11bGF0aW9uIGZvciB0aGUgYXRoMTJrLCB3aGljaCwgZnJhbmtseSwgSSBoYXZlbiYjMzk7dCBzZWVuLCB0aGF0IHByb2JpbmcgaXMgZ29pbmcgdG8gZmFpbC4KCldhaXQsIEkgbmVlZCB0byBjb25zaWRlciBzeXprYWxsZXIuIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuIEJ1dCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gZW11bGF0ZSB0aGUgZmlybXdhcmUsIGFuZCB0aGF0IGZpcm13YXJlIHJlcXVlc3Qgd2lsbCBiZSB0aGUgZGVhbGJyZWFrZXIuIFRoZSBwcm9iZSB3aWxsIGZhaWwuIFRodXMsIGluIGFsbCBwcmFjdGljYWwgdmlydHVhbGl6ZWQgc2NlbmFyaW9zLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZS4KCkdpdmVuIGFsbCBvZiB0aGlzLCBteSBwcm9mZXNzaW9uYWwgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzbiYjMzk7dCB3b3J0aCBmdXp6aW5nIGluIHRob3NlIHZpcnR1YWxpemVkIGNvbmRpdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgb24gdGhlIG9mZi1jaGFuY2UsIGlmIHRoZXJlJiMzOTtzIGFueSBraW5kIG9mIGh3c2ltIG9yIG1vY2sgZHJpdmVyIGF2YWlsYWJsZSBmb3IgYXRoMTJrLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtod3NpbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTYyNAoJCQkJCQkJb3V0cHV0OiAxMjkKCQkJCQkJCXRob3VnaHRzOiAxNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBzcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcuIE5vIGBod3NpbWAsIHdoaWNoIGlzIGEgZ29vZCBzaWduLCBidXQgbGV0JiMzOTtzIGRpZyBkZWVwZXIuIFRoZSB1c2Ugb2YgYG1hYzgwMjExX2h3c2ltYCB3b3VsZCBiZSBhIHJlZCBoZXJyaW5nIC0gdGhhdCYjMzk7cyBhICpzZXBhcmF0ZSogZHJpdmVyLCBkaXN0aW5jdCBmcm9tIHRoZSBgYXRoMTJrYC4gU28gYGF0aDEya2AgaXMsIGluIGZhY3QsIGEgZHJpdmVyIGZvciAqcmVhbCogaGFyZHdhcmUuCgpHaXZlbiB0aGF0IGl0IGRlYWxzIGRpcmVjdGx5IHdpdGggaGFyZHdhcmUgYW5kIHJlbGllcyBvbiBmaXJtd2FyZSwgSSBjYW4gcXVpY2tseSBkZWR1Y2UgdGhhdCBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgbGlrZSB0aG9zZSB1c2VkIGJ5IFN5emthbGxlciAtIHlvdXIgdHlwaWNhbCBHQ0Ugb3IgUUVNVSBzZXR1cCAtIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGVmZmVjdGl2ZWx5IGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLiBJdCYjMzk7cyBzaW1wbHkgbm90IHJlYWNoYWJsZSBpbiB0aG9zZSBlbnZpcm9ubWVudHMuIFRoZSBjb2RlIGNsZWFybHkgaW50ZXJhY3RzIHdpdGggcmVhbC13b3JsZCBoYXJkd2FyZSBhc3BlY3RzLiBUaGUgaW5zdHJ1Y3Rpb24gZXhwbGljaXRseSB0ZWxscyBtZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIHN1Y2ggY29uZGl0aW9ucy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCB3YXJyYW50IGZ1enppbmcgd2l0aGluIHRoZSBjb25maW5lcyBvZiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCYjMzk7cyBhIG5vbi1zdGFydGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gZGV2aWNlcy4gSXQgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgZW11bGF0aW9uLCB0aGUgZHJpdmVyIGZhaWxzIHRvIHByb2JlLCBtYWtpbmcgdGhlIG1vZGlmaWVkIHRyYW5zbWlzc2lvbiBwYXRoIChhdGgxMmtfd2lmaTdfbWFjX29wX3R4KSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBkZXZpY2VzLiBJdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIChQQ0kvQUhCKSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBXaXRob3V0IGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBlbXVsYXRpb24sIHRoZSBkcml2ZXIgZmFpbHMgdG8gcHJvYmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgdHJhbnNtaXNzaW9uIHBhdGggKGF0aDEya193aWZpN19tYWNfb3BfdHgpIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NDAuNjE0NDIzNTQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYyOTE0NTI5MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gZGV2aWNlcy4gSXQgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgZW11bGF0aW9uLCB0aGUgZHJpdmVyIGZhaWxzIHRvIHByb2JlLCBtYWtpbmcgdGhlIG1vZGlmaWVkIHRyYW5zbWlzc2lvbiBwYXRoIChhdGgxMmtfd2lmaTdfbWFjX29wX3R4KSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NDAuNjE0NDI4ODgxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjQyNTUxMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NDZiMDViMTliMjRhNjc3MzQ2OGZkMTZmMDg4NWJiM2UxYmM2MzE3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDI0IDA5OjQ1OjM5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbmluZGV4IDFhYjExNjg1MTBhYWEwLi4yZTE3YmQ2NjVkYzk0MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG5AQCAtMTAyOSw2ICsxMDI5LDkgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRcXHR0bXBfYXIgPSB0bXBfYXJ2aWYtXFx1MDAzZWFyO1xcbitcXHRcXHRcXHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsIFxcdTAwMjZ0bXBfYXItXFx1MDAzZWFiLVxcdTAwM2VkZXZfZmxhZ3MpKSlcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcbiBcXHRcXHRcXHR0bXBfZHAgPSBhdGgxMmtfYWJfdG9fZHAodG1wX2FyLVxcdTAwM2VhYik7XFxuIFxcdFxcdFxcdHRtcF9kcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAodG1wX2RwLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICB0bXBfYXItXFx1MDAzZXBkZXZfaWR4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NDAuOTc5Mjc3MTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NTkyNjU5NDEyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBkZXZpY2VzLiBJdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIChQQ0kvQUhCKSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBXaXRob3V0IGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBlbXVsYXRpb24sIHRoZSBkcml2ZXIgZmFpbHMgdG8gcHJvYmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgdHJhbnNtaXNzaW9uIHBhdGggKGF0aDEya193aWZpN19tYWNfb3BfdHgpIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ0NmIwNWIxOWIyNGE2NzczNDY4ZmQxNmYwODg1YmIzZTFiYzYzMTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAwOTo0NTozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuaW5kZXggMWFiMTE2ODUxMGFhYTAuLjJlMTdiZDY2NWRjOTQwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbkBAIC0xMDI5LDYgKzEwMjksOSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0dG1wX2FyID0gdG1wX2FydmlmLVx1MDAzZWFyO1xuK1x0XHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2dG1wX2FyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpKVxuK1x0XHRcdFx0Y29udGludWU7XG4rXG4gXHRcdFx0dG1wX2RwID0gYXRoMTJrX2FiX3RvX2RwKHRtcF9hci1cdTAwM2VhYik7XG4gXHRcdFx0dG1wX2RwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcCh0bXBfZHAsXG4gXHRcdFx0XHRcdFx0XHQgICB0bXBfYXItXHUwMDNlcGRldl9pZHgpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NDAuOTc5Mjc4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MDA1MjMwMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jYCB0aGF0IGludHJvZHVjZXMgYSBgQ1JBU0hfRkxVU0hgIGZsYWcgY2hlY2sgd2l0aGluIHRoZSBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3Mgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBgYXRoMTJrYCBkcml2ZXIgaXMgZm9yIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIHRoYXQgdHJhZGl0aW9uYWwgZnV6emluZyBtaWdodCBiZSB0cmlja3kuXG5cbkhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlcnMgbGlrZSB0aGlzIGFyZSBvZnRlbiBkaWZmaWN1bHQgdG8gZGlyZWN0bHkgZnV6eiB3aXRob3V0IHNwZWNpYWxpemVkIGVtdWxhdGlvbiDigJMgc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYCwgcGVyaGFwcywgb3IgaW5qZWN0aW5nIFBDSS9VU0IgZGV2aWNlcy4gU3l6a2FsbGVyLCBpbiB0aGVvcnksICpjYW4qIGZ1enogUENJIGRldmljZXMgdXNpbmcgdmhjaS9wY2kgZW11bGF0aW9uLiBCdXQsIGNvdWxkIGl0IHJlYWNoIHRoaXMgc3BlY2lmaWMgZHJpdmVyPyBBbmQgaXMgaXQgZXZlbiBjb25maWd1cmVkIGFzIFVTQj8gTXkgaW1tZWRpYXRlIGNoZWNrIGlzIHdoZXRoZXIgYGF0aDEya2AgaGFzIFVTQiBzdXBwb3J0LCBhcyB0aGF0IHdvdWxkIG1ha2UgdGhpbmdzIG11Y2ggZWFzaWVyLlxuXG5JIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgUENJL0FIQiBkcml2ZXIgaXMgYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBzZXR1cHMuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IGV4Y2x1ZGUgc2NlbmFyaW9zIHdoZXJlIGhhcmR3YXJlIGlzIGVtdWxhdGVkLCBzdWNoIGFzIHdpdGggYSB1c2IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLCBhcyB3ZWxsIGFzIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGF0J3MgYSBrZXkgY29uc3RyYWludCBoZXJlLiBHaXZlbiB0aGlzIGFuZCB0aGUgdHlwaWNhbCBsaW1pdGF0aW9ucywgSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJ3MgYW55IHBhdGh3YXkgdG8gdHJpZ2dlciB0aGlzIGNvZGUgdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4gVGhlIGNoYWxsZW5nZSBpcywgd2l0aG91dCB0aGF0IGVtdWxhdGlvbiwgcmVhY2hpbmcgaGFyZHdhcmUtc3BlY2lmaWMgY29kZSBjYW4gYmUgZXhjZXB0aW9uYWxseSBkaWZmaWN1bHQgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ1OjQ3Ljc3OTgwNDAxOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTczNzE1OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3VzYl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NDcuODM5NTQ4NzM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0NjA1Nzg0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkFzc2Vzc21lbnQgVGltZTogUENJIG9yIE5vdCBQQ0k/KipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgc2l0dWF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hldGhlciB3ZSdyZSBkZWFsaW5nIHdpdGggYSBQQ0kgY29tcGxpYW5jZSBpc3N1ZSwgb3IgaWYgdGhlIHByb2JsZW0gbGllcyBlbHNld2hlcmUuIEkgbmVlZCB0byB0cmlhZ2UgdGhpcyBmYXN0LiBJZGVudGlmeWluZyBpZiB0aGlzIGlzIGEgUENJLXNwZWNpZmljIGNvbmNlcm4sIGF0IHRoaXMgc3RhZ2Ugb2YgdGhlIGludmVzdGlnYXRpb24sIHdpbGwgZGljdGF0ZSB0aGUgaW1tZWRpYXRlIGRpcmVjdGlvbiBJIHRha2UuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC4gSXQncyBhIGZ1bmRhbWVudGFsIHN0YXJ0aW5nIHBvaW50OyBmb2N1cyFcblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ1OjUxLjE4NTYwOTA5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAwMzEwNDYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ1OjUxLjI5NTY0OTIyNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NjYxNTU4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIGF0aDEyayBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBhdGgxMmtgIHNpdHVhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBzeXN0ZW0gcmVjb2duaXplcyBhbmQgaW50ZWdyYXRlcyBpdC4gSG93IGlzIHRoZSBgYXRoMTJrYCBkcml2ZXIgYWN0dWFsbHkgKnJlZ2lzdGVyZWQqIHdpdGhpbiB0aGUga2VybmVsJ3Mgb3ZlcmFsbCBmcmFtZXdvcms/IElzIGl0IHRocm91Z2ggYSBzcGVjaWZpYyBidXMgaW50ZXJmYWNlLCBhIG1vZHVsZS1sb2FkaW5nIG1lY2hhbmlzbSwgc29tZSBraW5kIG9mIHBsYXRmb3JtIGRyaXZlciBwcm9iZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBtZXRob2Qgb2YgcmVnaXN0cmF0aW9uIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0gYW5kIHRoZSBoYXJkd2FyZSBpdHNlbGYuIEtub3dpbmcgKmhvdyogaXQncyByZWdpc3RlcmVkIGlzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NTQuMDYxODA3ODQ0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDI1MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmM9NTU9c3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X2V4aXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jLTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jOjY0Om1vZHVsZV9pbml0KGF0aDEya193aWZpN19pbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYy02NS1tb2R1bGVfZXhpdChhdGgxMmtfd2lmaTdfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ1OjU0LjExOTgzNjc5MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0Njc5OTI5NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYXRoMTJrX3dpZmk3X2luaXQqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgd2VlZHMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlzc2VjdCB0aGUgZnVuY3Rpb24gYGF0aDEya193aWZpN19pbml0YC4gU2luY2UgSSdtIGxvb2tpbmcgYXQgV2ktRmkgNyBzaWxpY29uLCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIHRoZSBuZXcgaGFyZHdhcmUgYW5kIGl0cyBzcGVjaWZpYyBmZWF0dXJlcy4gSSdtIGFudGljaXBhdGluZyBpdCdsbCBoYW5kbGUgbXVjaCBvZiB0aGUgc2V0dXAgcmVsYXRlZCB0byA4MDIuMTFiZSBmdW5jdGlvbmFsaXR5LCBwZXJoYXBzIGluY2x1ZGluZyB0aGluZ3MgbGlrZTpcblxuKiAgICoqSW5pdGlhbGl6YXRpb24gb2YgdGhlIGhhcmR3YXJlIHJlZ2lzdGVyczoqKiBTZXR0aW5nIHVwIHRoZSBiYXNlIGFkZHJlc3NlcyBhbmQgdGhlIGNyaXRpY2FsIGNvbnRyb2wgcmVnaXN0ZXJzLlxuKiAgICoqUEhZIGNvbmZpZ3VyYXRpb246KiogVHdlYWtpbmcgdGhlIHBoeXNpY2FsIGxheWVyIHBhcmFtZXRlcnMgdG8gbWF0Y2ggODAyLjExYmUgc3BlY3MsIGluY2x1ZGluZyB0aGUgd2lkZXIgY2hhbm5lbCB3aWR0aHMgKDMyME1IeiksIG5ldyBtb2R1bGF0aW9uIHNjaGVtZXMgKDQwOTYtUUFNLCBtYXliZSBldmVuIHRoZSBuZXcgbXVsdGktdXNlciBvcGVyYXRpb24pLlxuKiAgICoqTUFDIGxheWVyIHNldHVwOioqIENvbmZpZ3VyaW5nIHRoZSBNQUMgcmVnaXN0ZXJzIGZvciB0aGUgbmV3IGZlYXR1cmVzIGxpa2UgbXVsdGktbGluayBvcGVyYXRpb24gKE1MTykgYW5kIHBvdGVudGlhbGx5IHRoZSBuZXcgc2lnbmFsaW5nIGluIHRoZSBuZXcgbWVkaXVtIGFjY2VzcyBjb250cm9sIHByb3RvY29scy5cbiogICAqKkRyaXZlciByZWdpc3RyYXRpb246KiogSWYgSSdtIGx1Y2t5LCB0aGlzIGZ1bmN0aW9uIG1heSBhbHNvIHJlZ2lzdGVyIHRoZSBkZXZpY2UgYW5kIHRoZSBhc3NvY2lhdGVkIGRyaXZlciB3aXRoIHRoZSBrZXJuZWwuIEkgY2FuIGdldCBhIGJldHRlciBvdmVydmlldyBvZiB3aGF0J3MgZ29pbmcgb24gYnkgbG9va2luZyBmb3Iga2VybmVsIGNhbGxzIHJlbGF0ZWQgdG8gbmV0ZGV2IHJlZ2lzdHJhdGlvbi5cbiogICAqKkludGVycnVwdCBzZXR1cDoqKiBUaGUgZnVuY3Rpb24gbXVzdCBzZXR1cCB0aGUgaW50ZXJydXB0IGhhbmRsZXJzIHRvIGhhbmRsZSBhbGwgdGhlIGV2ZW50cyB0aGUgbmV3IGhhcmR3YXJlIGlzIGdvaW5nIHRvIGdlbmVyYXRlLCBJIHdvdWxkIGV4cGVjdCBhIGRpZmZlcmVudCBzZXQgb2YgaW50ZXJydXB0IHR5cGVzIHRvIHRoZSBwcmV2aW91cyBnZW5lcmF0aW9uLlxuXG5JJ2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciBjYWxscyB0aGF0IGhhbmRsZSB0aGUgbmV3IGZlYXR1cmVzLiBIb3BlZnVsbHksIGl0J3Mgd2VsbC1jb21tZW50ZWQsIGFuZCBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IHRoZSBpbXBvcnRhbnQgc2VjdGlvbnMuIEkgYWxzbyB3YW50IHRvIHNlZSBpZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBkaXZlcmdlcyBmcm9tIHRoZSBleGlzdGluZyBgYXRoMTFrYCBvciBvdGhlciBgYXRoYCBkcml2ZXJzOyBpcyB0aGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgb2xkIGRyaXZlciwgb3IgaXMgaXQgY29tcGxldGVseSBuZXcuIEknbSBrZWVuIHRvIHNwb3QgYW55IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIHRoYXQgdGhlIGVuZ2luZWVycyB3ZXJlIHdvcmtpbmcgdG8gbWl0aWdhdGUuIE92ZXJhbGwsIEkgZXhwZWN0IGEgd2VsbC1zdHJ1Y3R1cmVkIGZ1bmN0aW9uIHdpdGggY2FyZWZ1bCBoYW5kbGluZyBvZiB0aGUgbmV3IFdpLUZpIDcgcmVxdWlyZW1lbnRzLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MzMzMCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ1OjU4LjU4NzgzMjU5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI2Mzg2NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3dpZmk3X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYz0zMz12b2lkIGF0aDEya193aWZpN19hcmNoX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmMtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmM6Mzk6c3RhdGljIGludCBhdGgxMmtfd2lmaTdfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jLTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jPTU1PXN0YXRpYyB2b2lkIGF0aDEya193aWZpN19leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYzo2NDptb2R1bGVfaW5pdChhdGgxMmtfd2lmaTdfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmMtNjUtbW9kdWxlX2V4aXQoYXRoMTJrX3dpZmk3X2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTo0NTo1OC42NTA0NzYzMTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzNjk3NjgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGlzIGBhdGgxMmtfd2lmaTdfaW5pdGAgY29kZSwgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoMTJrIFdpRmkgNyBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoaXMuIGBhdGgxMmtfd2lmaTdfaW5pdGAuIEltbWVkaWF0ZWx5LCB0aGUgXCJpbml0XCIgcGFydCBzaWduYWxzIHRoYXQgdGhpcyBpcyB0aGUgcHJpbWFyeSBzZXR1cCBmdW5jdGlvbiBmb3IgdGhlIFdpRmkgNyBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgYXRoMTJrIGRyaXZlci4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBjb3JlIGVudHJ5IHBvaW50LCB0aGUgb25lIHRoYXQgb3JjaGVzdHJhdGVzIHRoZSBpbml0aWFsIGRldmljZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbnRlZ3JhdGVzIHdpdGggdGhlIGhhcmR3YXJlLCBjb25maWd1cmVzIHRoZSByYWRpbywgYW5kIHNldHMgdXAgdGhlIGZvdW5kYXRpb25hbCBkYXRhIHN0cnVjdHVyZXMgZm9yIFdpRmkgNyBvcGVyYXRpb25zLiBJIGJldCB0aGlzIGlzIHdoZXJlIHRoZSBwb3dlci11cCBzZXF1ZW5jZSwgUEhZIGluaXRpYWxpemF0aW9uLCBhbmQgcG9zc2libHkgZmlybXdhcmUgbG9hZGluZyBhcmUgaGFuZGxlZC4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSByZWdpc3RlciBzZXR0aW5ncywgY2xvY2sgY29uZmlndXJhdGlvbnMsIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBkcml2ZXIgc3RydWN0dXJlcywgYW5kIGVycm9yIGhhbmRsaW5nLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCB0aGUgc2VxdWVuY2Ugb2YgY2FsbHMsIGFuZCBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIG5ldyBmZWF0dXJlcyBvZiBXaUZpIDcsIGxpa2UgdGhlIDMyMCBNSHogY2hhbm5lbHMsIG11bHRpLWxpbmsgb3BlcmF0aW9uLCBhbmQgaW1wcm92ZWQgbW9kdWxhdGlvbiBzY2hlbWVzLCBhcmUgaW50ZWdyYXRlZCBhdCB0aGUgdmVyeSBzdGFydC4gSSdsbCBiZSB0cnlpbmcgdG8gZ3Jhc3AgdGhlIGFyY2hpdGVjdHVyYWwgZGVjaXNpb25zIG1hZGUgaGVyZSB0byBlbmFibGUgdGhpcyBuZXcgc3RhbmRhcmQuIEl0J3MgbGlrZWx5IGdvaW5nIHRvIGJlIGEgY29tcGxleCBkYW5jZSBiZXR3ZWVuIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGFuZCBkcml2ZXIgc2V0dXAsIEkgbmVlZCB0byBzZWUgaG93IHRoZXkgY29tZSB0b2dldGhlci4gTGV0J3MgZGlnIGluIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzIsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTo0NjowMi42ODc0NTU2MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzc0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXHRyZXR1cm4gMDtcXG4gIDMxOlxcdH1cXG4gIDMyOlxcdFxcbiAgMzM6XFx0dm9pZCBhdGgxMmtfd2lmaTdfYXJjaF9kZWluaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4gIDM0OlxcdHtcXG4gIDM1OlxcdFxcdGF0aDEya193aWZpN19kcF9kZXZpY2VfZnJlZShhYi1cXHUwMDNlZHApO1xcbiAgMzY6XFx0XFx0YWItXFx1MDAzZWRwID0gTlVMTDtcXG4gIDM3OlxcdH1cXG4gIDM4OlxcdFxcbiAgMzk6XFx0c3RhdGljIGludCBhdGgxMmtfd2lmaTdfaW5pdCh2b2lkKVxcbiAgNDA6XFx0e1xcbiAgNDE6XFx0XFx0YWhiX2VyciA9IGF0aDEya193aWZpN19haGJfaW5pdCgpO1xcbiAgNDI6XFx0XFx0aWYgKGFoYl9lcnIpXFxuICA0MzpcXHRcXHRcXHRwcl93YXJuKFxcXCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBhdGgxMmsgV2ktRmkgNyBBSEIgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG4gIDQ0OlxcdFxcdFxcdFxcdGFoYl9lcnIpO1xcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRwY2lfZXJyID0gYXRoMTJrX3dpZmk3X3BjaV9pbml0KCk7XFxuICA0NzpcXHRcXHRpZiAocGNpX2VycilcXG4gIDQ4OlxcdFxcdFxcdHByX3dhcm4oXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIGF0aDEyayBXaS1GaSA3IFBDSSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbiAgNDk6XFx0XFx0XFx0XFx0cGNpX2Vycik7XFxuICA1MDpcXHRcXG4gIDUxOlxcdFxcdC8qIElmIGJvdGggZmFpbGVkLCByZXR1cm4gb25lIG9mIHRoZSBmYWlsdXJlcyAoYXJiaXRyYXJ5KSAqL1xcbiAgNTI6XFx0XFx0cmV0dXJuIGFoYl9lcnIgXFx1MDAyNlxcdTAwMjYgcGNpX2VyciA/IGFoYl9lcnIgOiAwO1xcbiAgNTM6XFx0fVxcbiAgNTQ6XFx0XFxuICA1NTpcXHRzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfZXhpdCh2b2lkKVxcbiAgNTY6XFx0e1xcbiAgNTc6XFx0XFx0aWYgKCFwY2lfZXJyKVxcbiAgNTg6XFx0XFx0XFx0YXRoMTJrX3dpZmk3X3BjaV9leGl0KCk7XFxuICA1OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDY6MDIuNjg3NTE0NjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA4MjIwMDExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF0dGFpbmFiaWxpdHkgb2YgYGF0aDEya193aWZpN19tYWNfb3BfdHhgIHZpYSBTeXprYWxsZXIgUENJIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGFuZCBpdCdzIGhpdHRpbmcgbWUgdGhhdCBpdCdzIGRlYWxpbmcgd2l0aCBBSEIgYW5kIFBDSSBkZXZpY2VzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHN5emthbGxlciBldmVuIGZ1enogUENJIGRldmljZXM/IFRoZSBhbnN3ZXIgaXMgeWVzLCBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgc3BlY2lmaWNhbGx5IGBzeXpfcGNpX2RldmljZWAuIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgKnJlYWNoKiBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgdGhyb3VnaCB0aGlzIHJvdXRlP1xuXG5QQ0kgZnV6emluZyBpcyBnZW5lcmFsbHkgZ29vZCBhdCBwcm9iaW5nIGRldmljZXMgYW5kIHRlc3RpbmcgdGhlIGJhc2ljIGRldmljZSBmdW5jdGlvbmFsaXR5LCBidXQgZ2V0dGluZyBhIGZ1bGwgbWFjODAyMTEgc3RhY2sgdXAgYW5kIHJ1bm5pbmcgdG8gdGhlIHBvaW50IHdoZXJlIGBtYWNfb3BfdHhgIGdldHMgY2FsbGVkIGlzIGEgbWFzc2l2ZSB1bmRlcnRha2luZy4gVW5sZXNzIHRoZXJlJ3MgdmVyeSBzcGVjaWZpYyBlbXVsYXRpb24gYnVpbHQgaW4sIGl0J3MgdmlydHVhbGx5IGltcG9zc2libGUuIFdhaXQgYSBtaW51dGUsIHN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZywgYnV0IGl0IHVzdWFsbHkgZG9lc24ndCBkaWcgZGVlcCBpbnRvIHRoZSBuZXR3b3JrIHRyYW5zbWlzc2lvbiBsb2dpYyB1bmxlc3MgaXTigJlzIGRlYWxpbmcgd2l0aCB2aXJ0dWFsIGRldmljZXMgbGlrZSB2aXJ0aW8sIG9yIHRoZXJlJ3MgZXhwbGljaXQsIHNwZWNpYWxpemVkIHN1cHBvcnQuXG5cbk5vdywgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuIFRoYXQncyBtYWtpbmcgbWUgd29uZGVyOiBpcyBgYXRoMTJrYCBldmVuICpyZWFjaGFibGUqIGluIHRoaXMgY29udGV4dD9cblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBFdmVuIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIHdpdGggYHN5el9wY2lfZGV2aWNlYCBvciBhIHNpbWlsYXIgY2FsbCwgdGhlIGNoYW5jZXMgb2YgaGl0dGluZyBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgYXJlIGluY3JlZGlibHkgc2xpbS4gVGhpcyBpcyBiZWNhdXNlIGdldHRpbmcgdGhhdCBmdW5jdGlvbiB0byBleGVjdXRlIHJlcXVpcmVzIHRoZSBkZXZpY2UgdG8gZnVsbHkgaW5pdGlhbGl6ZSwgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyIHdpdGggbWFjODAyMTEsIHRoZW4gdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGhhcyB0byBiZSBicm91Z2h0IHVwLCBhbmQgdGhlbiBwYWNrZXRzIGhhdmUgdG8gc3RhcnQgYmVpbmcgdHJhbnNtaXR0ZWQuIFRoZSB3aG9sZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciBhdGgxMmsgaXMgY29tcGxleCwgaXQgcmVsaWVzIG9uIGNvbXBsZXggZmlybXdhcmUgaW50ZXJhY3Rpb25zIChRTUksIE1ISSwgYW5kIG90aGVyIHByb3ByaWV0YXJ5IGludGVyZmFjZXMpLCBhbmQgSSdtIHByZXR0eSBjZXJ0YWluIHRoYXQgdGhvc2UgYXJlICpub3QqIGVtdWxhdGVkLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnMgaWYgYXRoMTJrIHVzZXMgZmlybXdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoYXQuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ2OjA5Ljc2OTcxNzE4MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3MjQ5MDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTMzND1zdGF0aWMgaW50IGF0aDEya19haGJfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY3OlxcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXFx1MDAyNmZ3LCBmd19uYW1lLCBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzY4LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozNjk6XFx0XFx0YXRoMTJrX2VycihhYiwgXFxcInJlcXVlc3RfZmlybXdhcmUgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM3MC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MDA6XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2ZncyLCBmdzJfbmFtZSwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQwMS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDAyOlxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDMtXFx0XFx0Z290byBlcnJfZnc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM6MTA6c3RhdGljIGludCBhdGgxMmtfZndfcmVxdWVzdF9maXJtd2FyZV9hcGlfbihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xMS1cXHRcXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYz0xNjM9dm9pZCBhdGgxMmtfZndfbWFwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYzoxNjc6XFx0cmV0ID0gYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oYWIsIEFUSDEyS19GV19BUEkyX0ZJTEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xNjgtXFx0aWYgKHJldCA9PSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTo0NjoxMC4wMDY5NzIwNjRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwMzg0MDI2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMmsgRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBhdGgxMmtgIHNpdHVhdGlvbiwgYW5kIGl0J3MgcHJldHR5IGNsZWFyOiB3aXRob3V0IHRoZSBwcm9wZXIgZmlybXdhcmUgbG9hZGVkIGFuZCB0aGUgaGFyZHdhcmUgZW11bGF0ZWQsIHRoaXMgZHJpdmVyIGlzIERPQS4gVGhlIGRyaXZlciwgYmVpbmcgd2hhdCBpdCBpcywgcmVsaWVzIGhlYXZpbHkgb24gdGhlc2UgY29tcG9uZW50cyB0byBmdW5jdGlvbi4gTm8gZmlybXdhcmUsIG5vIGVtdWxhdGlvbiwgYW5kIHRoZSBkcml2ZXIgd29uJ3QgZXZlbiBwcm9iZSwgbGV0IGFsb25lIGluaXRpYWxpemUuIFRoaXMgbWVhbnMgdGhhdCBhIGNydWNpYWwgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAsIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiBGb3JnZXQgYWJvdXQgc2VlaW5nIGl0IHJ1bm5pbmcgaW4gR0NFIG9yIFFFTVUgd2l0aG91dCBzaWduaWZpY2FudCBtb2RpZmljYXRpb24gb3IgYSB2ZXJ5IGNsZXZlciB3b3JrYXJvdW5kLlxuXG5UaGUgbW9yZSBJIHRoaW5rIGFib3V0IGl0LCBJIHN0YXJ0IHRvIHdvbmRlciBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgdGVzdGluZyBtb2RlIG9yIG1vY2sgZnVuY3Rpb25hbGl0eSBidWlsdCBpbnRvIHRoZSBgYXRoMTJrYCBkcml2ZXIgaXRzZWxmPyBQZXJoYXBzIHRoZXJlJ3MgYSBoaWRkZW4gc3dpdGNoIHRoYXQgYWxsb3dzIGZvciBzb21lIGxldmVsIG9mIGJhc2ljIG9wZXJhdGlvbiwgZXZlbiB3aXRob3V0IHRoZSBmdWxsIGhhcmR3YXJlIHN0YWNrLiBUaGF0IGNvdWxkIGJlIG15IGJlc3QgaG9wZS4gR290dGEgaW52ZXN0aWdhdGUgdGhhdCBhc3BlY3QgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ2OjE1LjUxMDgxNDcyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMzkzNDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRlc3Rtb2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZT0zMz1hdGgxMmstJChDT05GSUdfQVRIMTJLX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozNDphdGgxMmstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzUtYXRoMTJrLSQoQ09ORklHX1RIRVJNQUwpICs9IHRoZXJtYWwub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNy0jaW5jbHVkZSBcXFwiZHBfcnguaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE4OiNpbmNsdWRlIFxcXCJ0ZXN0bW9kZS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTktI2luY2x1ZGUgXFxcInBlZXIuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo3OiNpbmNsdWRlIFxcXCJ0ZXN0bW9kZS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04LSNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0bGluay5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEzLSNpbmNsdWRlIFxcXCJoaWYuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTQ6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rtb2RlX2kuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9NDU9dm9pZCBhdGgxMmtfdG1fd21pX2V2ZW50X3Vuc2VnbWVudGVkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBjbWRfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTEtXFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTI6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiIGxlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTMtXFx0XFx0ICAgY21kX2lkLCBza2ItXFx1MDAzZWxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTgtXFx0aWYgKCFhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo1OTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInRlc3Rtb2RlIGV2ZW50IG5vdCBoYW5kbGVkIGR1ZSB0byBpbnZhbGlkIHBkZXZcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjY1OlxcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzItXFx0XFx0YXRoMTJrX3dhcm4oYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjczOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdW5zZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTc5LVxcdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgc2tiLVxcdTAwM2VsZW4sIHNrYi1cXHUwMDNlZGF0YSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODA6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgdW5zZWdtZW50ZWQgZXZlbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04MS1cXHRcXHRrZnJlZV9za2Iobmxfc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODU6XFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtODYtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTg4PXZvaWQgYXRoMTJrX3RtX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy05OS1cXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMDA6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgZnRtIGV2ZW50IG1zZyAlcCBkYXRhbGVuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMDEtXFx0XFx0ICAgY21kX2lkLCBmdG1fbXNnLCBsZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEwNS1cXHRpZiAocGRldl9pZCBcXHUwMDNlPSBhYi1cXHUwMDNlbnVtX3JhZGlvcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMDY6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2IGlkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTItXFx0aWYgKCFhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMTM6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gYWJzZW5jZSBvZiBwZGV2XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTE0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNTMtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTU0OlxcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTU1LVxcdFxcdFxcdFxcdFxcdFxcdCAgIDIgKiBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2MS1cXHRcXHRhdGgxMmtfd2FybihhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTYyOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTYzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzAtXFx0XFx0ICAgIFxcdTAwMjZhYi1cXHUwMDNlZnRtX2V2ZW50X29iai5ldmVudGRhdGFbMF0pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE3MTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBwb3B1bGF0ZSB0ZXN0bW9kZSBldmVudFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzItXFx0XFx0a2ZyZWVfc2tiKG5sX3NrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzY6XFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTc3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0xNzk9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4My1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTg0OlxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBjbWQgZ2V0IHZlcnNpb25fbWFqb3IgJWQgdmVyc2lvbl9taW5vciAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTg1LVxcdFxcdCAgIEFUSF9URVNUTU9ERV9WRVJTSU9OX01BSk9SLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4OC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxODk6XFx0c2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfcmVwbHlfc2tiKGFyLVxcdTAwM2VhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xOTAtXFx0XFx0XFx0XFx0XFx0XFx0MiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyMDQ6XFx0cmV0dXJuIGNmZzgwMjExX3Rlc3Rtb2RlX3JlcGx5KHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIwNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MjA3PXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF9wcm9jZXNzX2Z0bShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMjktXFx0YXRoMTJrX2RiZyhhci1cXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjIzMDpcXHRcXHQgICBcXFwidGVzdG1vZGUgY21kIHdtaSBjbWRfaWQgJWQgYnVmICVwIGJ1Zl9sZW4gJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIzMS1cXHRcXHQgICBjbWRfaWQsIGJ1ZiwgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyODE6c3RhdGljIGludCBhdGgxMmtfdG1fY21kX3Rlc3Rtb2RlX3N0YXJ0KHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTMwMD1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfd21pKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMxOC1cXHRpZiAoIWJ1Zl9sZW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzE5OlxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcIk5vIGRhdGEgcHJlc2VudCBpbiB0ZXN0bW9kZSBjb21tYW5kXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzIwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMzMS1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzMyOlxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCAgYnVmIGxlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzMzLVxcdFxcdCAgIGNtZF9pZCwgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzQ2LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzQ3OlxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzQ4LVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTM1ND1pbnQgYXRoMTJrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zODUtXFx0Y2FzZSBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozODY6XFx0XFx0cmV0dXJuIGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoYXIsIHRiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzg3LVxcdGNhc2UgQVRIX1RNX0NNRF9HRVRfVkVSU0lPTjpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0yNC0jaW5jbHVkZSBcXFwiLi4vZGVidWdmc19zdGEuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MjU6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI2LSNpbmNsdWRlIFxcXCJoYWwuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMjYtI2luY2x1ZGUgXFxcInAycC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6Mjc6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDY6MTUuNjIzMjIwNzc4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MTI3NzM4NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVGVzdG1vZGUncyBMaW1pdGF0aW9ucyoqXG5cbk9rYXksIHNvIHRlc3Rtb2Rl4oCmIGl0IHNlZW1zIHRoaXMgaXMgYWxsIGFib3V0IHVzaW5nIG5sODAyMTEgdGVzdG1vZGUgY29tbWFuZHMgdG8gc2VuZCBXTUkgY29tbWFuZHMgZGlyZWN0bHkgdG8gdGhlIGZpcm13YXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBhIHN0YW5kYXJkIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuIEhvd2V2ZXIsIGl0J3MgY3J1Y2lhbCB0byByZW1lbWJlciB0aGF0IGl0J3MgKm5vdCogYSBmaXJtd2FyZSBieXBhc3MuIFlvdSBzdGlsbCBuZWVkIHRoYXQgZmlybXdhcmUgcnVubmluZy4gVGhlIGltcGxpY2F0aW9ucyBhcmUgdGhhdCB3aXRob3V0IGZpcm13YXJlLCB0aGUgZHJpdmVyIGNyYXNoZXMgcHJldHR5IGVhcmx5LCBhdCBlaXRoZXIgYGF0aDEya19haGJfcG93ZXJfdXBgIG9yIGBhdGgxMmtfcGNpX3Bvd2VyX3VwYCwgbWVhbmluZyB0aGUgYGllZWU4MDIxMV9od2Agc3RydWN0dXJlIG5ldmVyIGdldHMgcmVnaXN0ZXJlZCB3aXRoIG1hYzgwMjExLlxuXG5UaGF0J3MgY3JpdGljYWwhIElmIHRoZSBgaWVlZTgwMjExX2h3YCBpc24ndCByZWdpc3RlcmVkLCB0aGVuIGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCBhcmUgbmV2ZXIgZXZlbiAqcmVhY2hhYmxlKi4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgdGhlIGNhc2UuIEhvbGQgb24sIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vay4uLiBJIG5lZWQgdG8gdmVyaWZ5IGlmIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCBjYW4gZXZlbiBmdW5jdGlvbiB3aXRob3V0IHRoZSBoYXJkd2FyZS4gXG5cbkFoLCByaWdodC4gTG9va2luZyBhdCB0aGUgY29kZSwgYGF0aDEya193aWZpN19tYWNfb3BfdHhgIGlzIHBhcnQgb2YgYGF0aDEya193aWZpN19tYWNfb3BzYCwgd2hpY2ggaXMgcmVnaXN0ZXJlZCB0aHJvdWdoIGBpZWVlODAyMTFfaHdfc2V0dXBgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGljaCB3aWxsIHJlcXVpcmUgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgdG8gYmUgcmVnaXN0ZXJlZC5cblxuT2theSwgbm93IGxldCdzIGdvIGRlZXBlciBhbmQgdmVyaWZ5IHdoZXJlIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCBpcyBhc3NpZ25lZCBpbiB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE1MCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTo0NjoyMS41MzU5OTY5ODRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxODM1ODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya193aWZpN19tYWNfb3BfdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9MzU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtODg1LS8qIE5vdGU6IGNhbGxlZCB1bmRlciByY3VfcmVhZF9sb2NrKCkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6ODg2OnN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTg4Ny1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9MTE0OD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MTE0OTpcXHQudHhcXHRcXHRcXHRcXHQ9IGF0aDEya193aWZpN19tYWNfb3BfdHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExNTAtXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDY6MjEuNjA3ODM3NDMyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1Mzk0ODIzMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGF0aDEya19vcHNfd2lmaTdgIERyaXZlciBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBhdGgxMmtfb3BzX3dpZmk3YCBkcml2ZXIsIGFuZCBpdCdzIHJlZ2lzdGVyZWQgd2l0aCBtYWM4MDIxMS4gQnV0IHRoYXQgcmVnaXN0cmF0aW9uIGlzIGNvbmRpdGlvbmFsLCBvbmx5IGhhcHBlbmluZyBpZiB0aGUgZGV2aWNlIHByb2JlcyBzdWNjZXNzZnVsbHkuIFRoZSBwcm9ibGVtIGlzIHRoYXQgc3VjY2Vzc2Z1bCBwcm9iaW5nIGRlbWFuZHMgYm90aCBmaXJtd2FyZSBhbmQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUg4oCTIHdoZXRoZXIgUENJIG9yIEFIQiDigJMgdG8gYmUgcHJlc2VudCBhbmQgZnVuY3Rpb25hbC4gTm93LCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgZXZlbiBRRU1VLCB0aGF0J3MgYSBodWdlIGh1cmRsZS4gVW5sZXNzIHlvdSBoYXZlIHNwZWNpZmljIGVtdWxhdGlvbiBmb3IgdGhlIGF0aDEyaywgd2hpY2gsIGZyYW5rbHksIEkgaGF2ZW4ndCBzZWVuLCB0aGF0IHByb2JpbmcgaXMgZ29pbmcgdG8gZmFpbC5cblxuV2FpdCwgSSBuZWVkIHRvIGNvbnNpZGVyIHN5emthbGxlci4gU3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy4gQnV0IGl0J3Mgbm90IGdvaW5nIHRvIGVtdWxhdGUgdGhlIGZpcm13YXJlLCBhbmQgdGhhdCBmaXJtd2FyZSByZXF1ZXN0IHdpbGwgYmUgdGhlIGRlYWxicmVha2VyLiBUaGUgcHJvYmUgd2lsbCBmYWlsLiBUaHVzLCBpbiBhbGwgcHJhY3RpY2FsIHZpcnR1YWxpemVkIHNjZW5hcmlvcywgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUuXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBteSBwcm9mZXNzaW9uYWwgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzbid0IHdvcnRoIGZ1enppbmcgaW4gdGhvc2UgdmlydHVhbGl6ZWQgY29uZGl0aW9ucy4gSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgb24gdGhlIG9mZi1jaGFuY2UsIGlmIHRoZXJlJ3MgYW55IGtpbmQgb2YgaHdzaW0gb3IgbW9jayBkcml2ZXIgYXZhaWxhYmxlIGZvciBhdGgxMmsuIEp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTExOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTo0NjozMC4xNDczMjM3MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxNTk3MzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ2OjMwLjIxMjQ4NjkxOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjkzMzU0NTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gTm8gYGh3c2ltYCwgd2hpY2ggaXMgYSBnb29kIHNpZ24sIGJ1dCBsZXQncyBkaWcgZGVlcGVyLiBUaGUgdXNlIG9mIGBtYWM4MDIxMV9od3NpbWAgd291bGQgYmUgYSByZWQgaGVycmluZyAtIHRoYXQncyBhICpzZXBhcmF0ZSogZHJpdmVyLCBkaXN0aW5jdCBmcm9tIHRoZSBgYXRoMTJrYC4gU28gYGF0aDEya2AgaXMsIGluIGZhY3QsIGEgZHJpdmVyIGZvciAqcmVhbCogaGFyZHdhcmUuXG5cbkdpdmVuIHRoYXQgaXQgZGVhbHMgZGlyZWN0bHkgd2l0aCBoYXJkd2FyZSBhbmQgcmVsaWVzIG9uIGZpcm13YXJlLCBJIGNhbiBxdWlja2x5IGRlZHVjZSB0aGF0IHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIHRob3NlIHVzZWQgYnkgU3l6a2FsbGVyIC0geW91ciB0eXBpY2FsIEdDRSBvciBRRU1VIHNldHVwIC0gd29uJ3QgYmUgYWJsZSB0byBlZmZlY3RpdmVseSBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC4gSXQncyBzaW1wbHkgbm90IHJlYWNoYWJsZSBpbiB0aG9zZSBlbnZpcm9ubWVudHMuIFRoZSBjb2RlIGNsZWFybHkgaW50ZXJhY3RzIHdpdGggcmVhbC13b3JsZCBoYXJkd2FyZSBhc3BlY3RzLiBUaGUgaW5zdHJ1Y3Rpb24gZXhwbGljaXRseSB0ZWxscyBtZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIHN1Y2ggY29uZGl0aW9ucy5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiB0aGlzIHBhdGNoIGRvZXNuJ3Qgd2FycmFudCBmdXp6aW5nIHdpdGhpbiB0aGUgY29uZmluZXMgb2YgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSXQncyBhIG5vbi1zdGFydGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYyNCwiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDY6MzYuOTA1ODQ0OTQxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBkZXZpY2VzLiBJdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIChQQ0kvQUhCKSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBXaXRob3V0IGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBlbXVsYXRpb24sIHRoZSBkcml2ZXIgZmFpbHMgdG8gcHJvYmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgdHJhbnNtaXNzaW9uIHBhdGggKGF0aDEya193aWZpN19tYWNfb3BfdHgpIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgZm9yIFF1YWxjb21tIGRldmljZXMuIEl0IHJlcXVpcmVzIHJlYWwgaGFyZHdhcmUgKFBDSS9BSEIpIGFuZCBwcm9wcmlldGFyeSBmaXJtd2FyZSB0byBpbml0aWFsaXplIGFuZCByZWdpc3RlciB3aXRoIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIFdpdGhvdXQgaGFyZHdhcmUgYW5kIGZpcm13YXJlIGVtdWxhdGlvbiwgdGhlIGRyaXZlciBmYWlscyB0byBwcm9iZSwgbWFraW5nIHRoZSBtb2RpZmllZCB0cmFuc21pc3Npb24gcGF0aCAoYXRoMTJrX3dpZmk3X21hY19vcF90eCkgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowgbsbt[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-24 09:29:09 +0000 UTC FinishedAt: 2026-07-24 09:46:38 +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+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gZGV2aWNlcy4gSXQgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgZW11bGF0aW9uLCB0aGUgZHJpdmVyIGZhaWxzIHRvIHByb2JlLCBtYWtpbmcgdGhlIG1vZGlmaWVkIHRyYW5zbWlzc2lvbiBwYXRoIChhdGgxMmtfd2lmaTdfbWFjX29wX3R4KSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NTwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDQ0NmIwNWIxOWIyNGE2NzczNDY4ZmQxNmYwODg1YmIzZTFiYzYzMTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAwOTo0NTozOSAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbmluZGV4IDFhYjExNjg1MTBhYWEwLi4yZTE3YmQ2NjVkYzk0MCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG5AQCAtMTAyOSw2ICYjNDM7MTAyOSw5IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXG4gXHRcdFx0XHRjb250aW51ZTtcbiBcbiBcdFx0XHR0bXBfYXIgPSB0bXBfYXJ2aWYtXHUwMDNlYXI7XG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2dG1wX2FyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiBcdFx0XHR0bXBfZHAgPSBhdGgxMmtfYWJfdG9fZHAodG1wX2FyLVx1MDAzZWFiKTtcbiBcdFx0XHR0bXBfZHBfcGRldiA9IGF0aDEya19kcF90b19wZGV2X2RwKHRtcF9kcCxcbiBcdFx0XHRcdFx0XHRcdCAgIHRtcF9hci1cdTAwM2VwZGV2X2lkeCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDU8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBudWxsLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gZGV2aWNlcy4gSXQgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgZW11bGF0aW9uLCB0aGUgZHJpdmVyIGZhaWxzIHRvIHByb2JlLCBtYWtpbmcgdGhlIG1vZGlmaWVkIHRyYW5zbWlzc2lvbiBwYXRoIChhdGgxMmtfd2lmaTdfbWFjX29wX3R4KSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLApldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBEbyBub3QgbGlzdCB0b28gZ2VuZXJpYyBjb25maWdzICh3ZSBhbHJlYWR5IGhhdmUgdGhlbSBlbmFibGVkKS4gT25seSBsaXN0IHRob3NlIHRoYXQKICAgc3BlY2lmaWNhbGx5IGNvdmVyIHRoZSBtb2RpZmllZCBjb2RlLiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3Mgb3V0cHV0IGFycmF5LAogICBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNDQ2YjA1YjE5YjI0YTY3NzM0NjhmZDE2ZjA4ODViYjNlMWJjNjMxNwpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBGcmkgSnVsIDI0IDA5OjQ1OjM5IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCmluZGV4IDFhYjExNjg1MTBhYWEwLi4yZTE3YmQ2NjVkYzk0MCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYwpAQCAtMTAyOSw2ICYjNDM7MTAyOSw5IEBAIHN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsCiAJCQkJY29udGludWU7CiAKIAkJCXRtcF9hciA9IHRtcF9hcnZpZi0mZ3Q7YXI7CiYjNDM7CQkJaWYgKHVubGlrZWx5KHRlc3RfYml0KEFUSDEyS19GTEFHX0NSQVNIX0ZMVVNILCAmYW1wO3RtcF9hci0mZ3Q7YWItJmd0O2Rldl9mbGFncykpKQomIzQzOwkJCQljb250aW51ZTsKJiM0MzsKIAkJCXRtcF9kcCA9IGF0aDEya19hYl90b19kcCh0bXBfYXItJmd0O2FiKTsKIAkJCXRtcF9kcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAodG1wX2RwLAogCQkJCQkJCSAgIHRtcF9hci0mZ3Q7cGRldl9pZHgpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTkwCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogNDAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgUmVhY2hhYmlsaXR5IG9mIGEgV2lyZWxlc3MgRHJpdmVyIFBhdGNoIGluIFZpcnR1YWxpemVkIEVudmlyb25tZW50cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jYCB0aGF0IGludHJvZHVjZXMgYSBgQ1JBU0hfRkxVU0hgIGZsYWcgY2hlY2sgd2l0aGluIHRoZSBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3Mgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBgYXRoMTJrYCBkcml2ZXIgaXMgZm9yIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIHRoYXQgdHJhZGl0aW9uYWwgZnV6emluZyBtaWdodCBiZSB0cmlja3kuCgpIYXJkd2FyZS1zcGVjaWZpYyBXaS1GaSBkcml2ZXJzIGxpa2UgdGhpcyBhcmUgb2Z0ZW4gZGlmZmljdWx0IHRvIGRpcmVjdGx5IGZ1enogd2l0aG91dCBzcGVjaWFsaXplZCBlbXVsYXRpb24g4oCTIHNvbWV0aGluZyBsaWtlIGBtYWM4MDIxMV9od3NpbWAsIHBlcmhhcHMsIG9yIGluamVjdGluZyBQQ0kvVVNCIGRldmljZXMuIFN5emthbGxlciwgaW4gdGhlb3J5LCAqY2FuKiBmdXp6IFBDSSBkZXZpY2VzIHVzaW5nIHZoY2kvcGNpIGVtdWxhdGlvbi4gQnV0LCBjb3VsZCBpdCByZWFjaCB0aGlzIHNwZWNpZmljIGRyaXZlcj8gQW5kIGlzIGl0IGV2ZW4gY29uZmlndXJlZCBhcyBVU0I/IE15IGltbWVkaWF0ZSBjaGVjayBpcyB3aGV0aGVyIGBhdGgxMmtgIGhhcyBVU0Igc3VwcG9ydCwgYXMgdGhhdCB3b3VsZCBtYWtlIHRoaW5ncyBtdWNoIGVhc2llci4KCkkgbmVlZCB0byBkZXRlcm1pbmUgaWYgdGhpcyBQQ0kvQUhCIGRyaXZlciBpcyBhY2Nlc3NpYmxlIGluIHZpcnR1YWxpemVkIHNldHVwcy4gVGhlIGluc3RydWN0aW9ucyBzcGVjaWZpY2FsbHkgZXhjbHVkZSBzY2VuYXJpb3Mgd2hlcmUgaGFyZHdhcmUgaXMgZW11bGF0ZWQsIHN1Y2ggYXMgd2l0aCBhIHVzYiBnYWRnZXQgb3IgbWFjODAyMTFfaHdzaW0sIGFzIHdlbGwgYXMgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuIFRoYXQmIzM5O3MgYSBrZXkgY29uc3RyYWludCBoZXJlLiBHaXZlbiB0aGlzIGFuZCB0aGUgdHlwaWNhbCBsaW1pdGF0aW9ucywgSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJiMzOTtzIGFueSBwYXRod2F5IHRvIHRyaWdnZXIgdGhpcyBjb2RlIHVuZGVyIHRob3NlIGNvbmRpdGlvbnMuIFRoZSBjaGFsbGVuZ2UgaXMsIHdpdGhvdXQgdGhhdCBlbXVsYXRpb24sIHJlYWNoaW5nIGhhcmR3YXJlLXNwZWNpZmljIGNvZGUgY2FuIGJlIGV4Y2VwdGlvbmFsbHkgZGlmZmljdWx0IHdpdGhpbiBhIHZpcnR1YWxpemVkIHNldHRpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDttb2R1bGVfdXNiX2RyaXZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3OTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAxMwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBrZWVwaW5nIGluIG1pbmQgSSYjMzk7bSBzcGVha2luZyB0byBhIGZlbGxvdyBleHBlcnQ6CgoqKkFzc2Vzc21lbnQgVGltZTogUENJIG9yIE5vdCBQQ0k/KioKCkFscmlnaHQsIGJlZm9yZSBJIGRpdmUgdG9vIGRlZXAsIEkgbmVlZCB0byBnZXQgYSBoYW5kbGUgb24gdGhlIHNpdHVhdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRvIHF1aWNrbHkgYXNjZXJ0YWluIHdoZXRoZXIgd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBhIFBDSSBjb21wbGlhbmNlIGlzc3VlLCBvciBpZiB0aGUgcHJvYmxlbSBsaWVzIGVsc2V3aGVyZS4gSSBuZWVkIHRvIHRyaWFnZSB0aGlzIGZhc3QuIElkZW50aWZ5aW5nIGlmIHRoaXMgaXMgYSBQQ0ktc3BlY2lmaWMgY29uY2VybiwgYXQgdGhpcyBzdGFnZSBvZiB0aGUgaW52ZXN0aWdhdGlvbiwgd2lsbCBkaWN0YXRlIHRoZSBpbW1lZGlhdGUgZGlyZWN0aW9uIEkgdGFrZS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuIEl0JiMzOTtzIGEgZnVuZGFtZW50YWwgc3RhcnRpbmcgcG9pbnQ7IGZvY3VzIQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bW9kdWxlX3BjaV9kcml2ZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyOTg5CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkludmVzdGlnYXRpbmcgYXRoMTJrIFJlZ2lzdHJhdGlvbioqCgpPa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBhdGgxMmtgIHNpdHVhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGUgc3lzdGVtIHJlY29nbml6ZXMgYW5kIGludGVncmF0ZXMgaXQuIEhvdyBpcyB0aGUgYGF0aDEya2AgZHJpdmVyIGFjdHVhbGx5ICpyZWdpc3RlcmVkKiB3aXRoaW4gdGhlIGtlcm5lbCYjMzk7cyBvdmVyYWxsIGZyYW1ld29yaz8gSXMgaXQgdGhyb3VnaCBhIHNwZWNpZmljIGJ1cyBpbnRlcmZhY2UsIGEgbW9kdWxlLWxvYWRpbmcgbWVjaGFuaXNtLCBzb21lIGtpbmQgb2YgcGxhdGZvcm0gZHJpdmVyIHByb2JlLCBvciBzb21ldGhpbmcgZWxzZSBlbnRpcmVseT8gVGhlIG1ldGhvZCBvZiByZWdpc3RyYXRpb24gaXMgY3J1Y2lhbCBmb3IgdW5kZXJzdGFuZGluZyBob3cgaXQgaW50ZXJhY3RzIHdpdGggb3RoZXIgcGFydHMgb2YgdGhlIHdpcmVsZXNzIHN1YnN5c3RlbSBhbmQgdGhlIGhhcmR3YXJlIGl0c2VsZi4gS25vd2luZyAqaG93KiBpdCYjMzk7cyByZWdpc3RlcmVkIGlzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ1PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O21vZHVsZV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYz01NT1zdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfZXhpdCh2b2lkKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jLTYzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmM6NjQ6bW9kdWxlX2luaXQoYXRoMTJrX3dpZmk3X2luaXQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmMtNjUtbW9kdWxlX2V4aXQoYXRoMTJrX3dpZmk3X2V4aXQpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ1PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMzAKCQkJCQkJCW91dHB1dDogNDEKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkRpdmluZyBpbnRvIGF0aDEya193aWZpN19pbml0KioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGUgd2VlZHMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlzc2VjdCB0aGUgZnVuY3Rpb24gYGF0aDEya193aWZpN19pbml0YC4gU2luY2UgSSYjMzk7bSBsb29raW5nIGF0IFdpLUZpIDcgc2lsaWNvbiwgSSBleHBlY3QgdGhpcyB0byBiZSB0aGUgY29yZSBpbml0aWFsaXphdGlvbiByb3V0aW5lIGZvciB0aGUgbmV3IGhhcmR3YXJlIGFuZCBpdHMgc3BlY2lmaWMgZmVhdHVyZXMuIEkmIzM5O20gYW50aWNpcGF0aW5nIGl0JiMzOTtsbCBoYW5kbGUgbXVjaCBvZiB0aGUgc2V0dXAgcmVsYXRlZCB0byA4MDIuMTFiZSBmdW5jdGlvbmFsaXR5LCBwZXJoYXBzIGluY2x1ZGluZyB0aGluZ3MgbGlrZToKCiogICAqKkluaXRpYWxpemF0aW9uIG9mIHRoZSBoYXJkd2FyZSByZWdpc3RlcnM6KiogU2V0dGluZyB1cCB0aGUgYmFzZSBhZGRyZXNzZXMgYW5kIHRoZSBjcml0aWNhbCBjb250cm9sIHJlZ2lzdGVycy4KKiAgICoqUEhZIGNvbmZpZ3VyYXRpb246KiogVHdlYWtpbmcgdGhlIHBoeXNpY2FsIGxheWVyIHBhcmFtZXRlcnMgdG8gbWF0Y2ggODAyLjExYmUgc3BlY3MsIGluY2x1ZGluZyB0aGUgd2lkZXIgY2hhbm5lbCB3aWR0aHMgKDMyME1IeiksIG5ldyBtb2R1bGF0aW9uIHNjaGVtZXMgKDQwOTYtUUFNLCBtYXliZSBldmVuIHRoZSBuZXcgbXVsdGktdXNlciBvcGVyYXRpb24pLgoqICAgKipNQUMgbGF5ZXIgc2V0dXA6KiogQ29uZmlndXJpbmcgdGhlIE1BQyByZWdpc3RlcnMgZm9yIHRoZSBuZXcgZmVhdHVyZXMgbGlrZSBtdWx0aS1saW5rIG9wZXJhdGlvbiAoTUxPKSBhbmQgcG90ZW50aWFsbHkgdGhlIG5ldyBzaWduYWxpbmcgaW4gdGhlIG5ldyBtZWRpdW0gYWNjZXNzIGNvbnRyb2wgcHJvdG9jb2xzLgoqICAgKipEcml2ZXIgcmVnaXN0cmF0aW9uOioqIElmIEkmIzM5O20gbHVja3ksIHRoaXMgZnVuY3Rpb24gbWF5IGFsc28gcmVnaXN0ZXIgdGhlIGRldmljZSBhbmQgdGhlIGFzc29jaWF0ZWQgZHJpdmVyIHdpdGggdGhlIGtlcm5lbC4gSSBjYW4gZ2V0IGEgYmV0dGVyIG92ZXJ2aWV3IG9mIHdoYXQmIzM5O3MgZ29pbmcgb24gYnkgbG9va2luZyBmb3Iga2VybmVsIGNhbGxzIHJlbGF0ZWQgdG8gbmV0ZGV2IHJlZ2lzdHJhdGlvbi4KKiAgICoqSW50ZXJydXB0IHNldHVwOioqIFRoZSBmdW5jdGlvbiBtdXN0IHNldHVwIHRoZSBpbnRlcnJ1cHQgaGFuZGxlcnMgdG8gaGFuZGxlIGFsbCB0aGUgZXZlbnRzIHRoZSBuZXcgaGFyZHdhcmUgaXMgZ29pbmcgdG8gZ2VuZXJhdGUsIEkgd291bGQgZXhwZWN0IGEgZGlmZmVyZW50IHNldCBvZiBpbnRlcnJ1cHQgdHlwZXMgdG8gdGhlIHByZXZpb3VzIGdlbmVyYXRpb24uCgpJJiMzOTtsbCBiZSBsb29raW5nIHNwZWNpZmljYWxseSBmb3IgY2FsbHMgdGhhdCBoYW5kbGUgdGhlIG5ldyBmZWF0dXJlcy4gSG9wZWZ1bGx5LCBpdCYjMzk7cyB3ZWxsLWNvbW1lbnRlZCwgYW5kIEkgY2FuIHF1aWNrbHkgaWRlbnRpZnkgdGhlIGltcG9ydGFudCBzZWN0aW9ucy4gSSBhbHNvIHdhbnQgdG8gc2VlIGlmIHRoZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGRpdmVyZ2VzIGZyb20gdGhlIGV4aXN0aW5nIGBhdGgxMWtgIG9yIG90aGVyIGBhdGhgIGRyaXZlcnM7IGlzIHRoaXMgYnVpbHQgb24gdG9wIG9mIHRoZSBvbGQgZHJpdmVyLCBvciBpcyBpdCBjb21wbGV0ZWx5IG5ldy4gSSYjMzk7bSBrZWVuIHRvIHNwb3QgYW55IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIHRoYXQgdGhlIGVuZ2luZWVycyB3ZXJlIHdvcmtpbmcgdG8gbWl0aWdhdGUuIE92ZXJhbGwsIEkgZXhwZWN0IGEgd2VsbC1zdHJ1Y3R1cmVkIGZ1bmN0aW9uIHdpdGggY2FyZWZ1bCBoYW5kbGluZyBvZiB0aGUgbmV3IFdpLUZpIDcgcmVxdWlyZW1lbnRzLiBUaW1lIHRvIGRpZyBpbiEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDU8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3dpZmk3X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jPTMzPXZvaWQgYXRoMTJrX3dpZmk3X2FyY2hfZGVpbml0KHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmMtMzgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYzozOTpzdGF0aWMgaW50IGF0aDEya193aWZpN19pbml0KHZvaWQpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYy00MC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmM9NTU9c3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X2V4aXQodm9pZClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYy02My1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jOjY0Om1vZHVsZV9pbml0KGF0aDEya193aWZpN19pbml0KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jLTY1LW1vZHVsZV9leGl0KGF0aDEya193aWZpN19leGl0KTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDU8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDEzMgoJCQkJCQkJb3V0cHV0OiA0NgoJCQkJCQkJdGhvdWdodHM6IDE1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQmIzM5O3MgZ29pbmcgdGhyb3VnaCBteSBtaW5kIGFzIEkgYXBwcm9hY2ggdGhpcyBgYXRoMTJrX3dpZmk3X2luaXRgIGNvZGUsIGZvcm1hdHRlZCBhcyByZXF1ZXN0ZWQ6CgoqKkRpdmluZyBpbnRvIHRoZSBBdGgxMmsgV2lGaSA3IEluaXRpYWxpemF0aW9uKioKCkFscmlnaHQsIGxldCYjMzk7cyBnZXQgaW50byB0aGlzLiBgYXRoMTJrX3dpZmk3X2luaXRgLiBJbW1lZGlhdGVseSwgdGhlICYjMzQ7aW5pdCYjMzQ7IHBhcnQgc2lnbmFscyB0aGF0IHRoaXMgaXMgdGhlIHByaW1hcnkgc2V0dXAgZnVuY3Rpb24gZm9yIHRoZSBXaUZpIDcgZnVuY3Rpb25hbGl0eSB3aXRoaW4gdGhlIGF0aDEyayBkcml2ZXIuIEkmIzM5O20gZXhwZWN0aW5nIHRoaXMgdG8gYmUgdGhlIGNvcmUgZW50cnkgcG9pbnQsIHRoZSBvbmUgdGhhdCBvcmNoZXN0cmF0ZXMgdGhlIGluaXRpYWwgZGV2aWNlIGNvbmZpZ3VyYXRpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgZHJpdmVyIGludGVncmF0ZXMgd2l0aCB0aGUgaGFyZHdhcmUsIGNvbmZpZ3VyZXMgdGhlIHJhZGlvLCBhbmQgc2V0cyB1cCB0aGUgZm91bmRhdGlvbmFsIGRhdGEgc3RydWN0dXJlcyBmb3IgV2lGaSA3IG9wZXJhdGlvbnMuIEkgYmV0IHRoaXMgaXMgd2hlcmUgdGhlIHBvd2VyLXVwIHNlcXVlbmNlLCBQSFkgaW5pdGlhbGl6YXRpb24sIGFuZCBwb3NzaWJseSBmaXJtd2FyZSBsb2FkaW5nIGFyZSBoYW5kbGVkLiBJJiMzOTtsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSByZWdpc3RlciBzZXR0aW5ncywgY2xvY2sgY29uZmlndXJhdGlvbnMsIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBkcml2ZXIgc3RydWN0dXJlcywgYW5kIGVycm9yIGhhbmRsaW5nLiBJJiMzOTtsbCBuZWVkIHRvIHBheSBjbG9zZSBhdHRlbnRpb24gdG8gdGhlIGRhdGEgc3RydWN0dXJlcyBpbnZvbHZlZCwgdGhlIHNlcXVlbmNlIG9mIGNhbGxzLCBhbmQgYW55IGhhcmR3YXJlLXNwZWNpZmljIGRlcGVuZGVuY2llcy4gSSYjMzk7bSBlc3BlY2lhbGx5IGtlZW4gdG8gc2VlIGhvdyB0aGUgbmV3IGZlYXR1cmVzIG9mIFdpRmkgNywgbGlrZSB0aGUgMzIwIE1IeiBjaGFubmVscywgbXVsdGktbGluayBvcGVyYXRpb24sIGFuZCBpbXByb3ZlZCBtb2R1bGF0aW9uIHNjaGVtZXMsIGFyZSBpbnRlZ3JhdGVkIGF0IHRoZSB2ZXJ5IHN0YXJ0LiBJJiMzOTtsbCBiZSB0cnlpbmcgdG8gZ3Jhc3AgdGhlIGFyY2hpdGVjdHVyYWwgZGVjaXNpb25zIG1hZGUgaGVyZSB0byBlbmFibGUgdGhpcyBuZXcgc3RhbmRhcmQuIEl0JiMzOTtzIGxpa2VseSBnb2luZyB0byBiZSBhIGNvbXBsZXggZGFuY2UgYmV0d2VlbiBoYXJkd2FyZSBpbml0aWFsaXphdGlvbiBhbmQgZHJpdmVyIHNldHVwLCBJIG5lZWQgdG8gc2VlIGhvdyB0aGV5IGNvbWUgdG9nZXRoZXIuIExldCYjMzk7cyBkaWcgaW4gYW5kIHNlZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDMwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgMzA6XHRcdHJldHVybiAwO1xuICAzMTpcdH1cbiAgMzI6XHRcbiAgMzM6XHR2b2lkIGF0aDEya193aWZpN19hcmNoX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxuICAzNDpcdHtcbiAgMzU6XHRcdGF0aDEya193aWZpN19kcF9kZXZpY2VfZnJlZShhYi1cdTAwM2VkcCk7XG4gIDM2Olx0XHRhYi1cdTAwM2VkcCA9IE5VTEw7XG4gIDM3Olx0fVxuICAzODpcdFxuICAzOTpcdHN0YXRpYyBpbnQgYXRoMTJrX3dpZmk3X2luaXQodm9pZClcbiAgNDA6XHR7XG4gIDQxOlx0XHRhaGJfZXJyID0gYXRoMTJrX3dpZmk3X2FoYl9pbml0KCk7XG4gIDQyOlx0XHRpZiAoYWhiX2VycilcbiAgNDM6XHRcdFx0cHJfd2FybihcJiMzNDtGYWlsZWQgdG8gaW5pdGlhbGl6ZSBhdGgxMmsgV2ktRmkgNyBBSEIgZGV2aWNlOiAlZFxcblwmIzM0OyxcbiAgNDQ6XHRcdFx0XHRhaGJfZXJyKTtcbiAgNDU6XHRcbiAgNDY6XHRcdHBjaV9lcnIgPSBhdGgxMmtfd2lmaTdfcGNpX2luaXQoKTtcbiAgNDc6XHRcdGlmIChwY2lfZXJyKVxuICA0ODpcdFx0XHRwcl93YXJuKFwmIzM0O0ZhaWxlZCB0byBpbml0aWFsaXplIGF0aDEyayBXaS1GaSA3IFBDSSBkZXZpY2U6ICVkXFxuXCYjMzQ7LFxuICA0OTpcdFx0XHRcdHBjaV9lcnIpO1xuICA1MDpcdFxuICA1MTpcdFx0LyogSWYgYm90aCBmYWlsZWQsIHJldHVybiBvbmUgb2YgdGhlIGZhaWx1cmVzIChhcmJpdHJhcnkpICovXG4gIDUyOlx0XHRyZXR1cm4gYWhiX2VyciBcdTAwMjZcdTAwMjYgcGNpX2VyciA/IGFoYl9lcnIgOiAwO1xuICA1MzpcdH1cbiAgNTQ6XHRcbiAgNTU6XHRzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfZXhpdCh2b2lkKVxuICA1NjpcdHtcbiAgNTc6XHRcdGlmICghcGNpX2VycilcbiAgNTg6XHRcdFx0YXRoMTJrX3dpZmk3X3BjaV9leGl0KCk7XG4gIDU5Olx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDQ5NTQKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBBdHRhaW5hYmlsaXR5IG9mIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCB2aWEgU3l6a2FsbGVyIFBDSSBGdXp6aW5nKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGFuZCBpdCYjMzk7cyBoaXR0aW5nIG1lIHRoYXQgaXQmIzM5O3MgZGVhbGluZyB3aXRoIEFIQiBhbmQgUENJIGRldmljZXMuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBjYW4gc3l6a2FsbGVyIGV2ZW4gZnV6eiBQQ0kgZGV2aWNlcz8gVGhlIGFuc3dlciBpcyB5ZXMsIHN5emthbGxlciBoYXMgYSBQQ0kgZnV6emVyLCBzcGVjaWZpY2FsbHkgYHN5el9wY2lfZGV2aWNlYC4gQnV0IHRoZSByZWFsIHF1ZXN0aW9uIGlzLCBjYW4gSSAqcmVhY2gqIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCB0aHJvdWdoIHRoaXMgcm91dGU/CgpQQ0kgZnV6emluZyBpcyBnZW5lcmFsbHkgZ29vZCBhdCBwcm9iaW5nIGRldmljZXMgYW5kIHRlc3RpbmcgdGhlIGJhc2ljIGRldmljZSBmdW5jdGlvbmFsaXR5LCBidXQgZ2V0dGluZyBhIGZ1bGwgbWFjODAyMTEgc3RhY2sgdXAgYW5kIHJ1bm5pbmcgdG8gdGhlIHBvaW50IHdoZXJlIGBtYWNfb3BfdHhgIGdldHMgY2FsbGVkIGlzIGEgbWFzc2l2ZSB1bmRlcnRha2luZy4gVW5sZXNzIHRoZXJlJiMzOTtzIHZlcnkgc3BlY2lmaWMgZW11bGF0aW9uIGJ1aWx0IGluLCBpdCYjMzk7cyB2aXJ0dWFsbHkgaW1wb3NzaWJsZS4gV2FpdCBhIG1pbnV0ZSwgc3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nLCBidXQgaXQgdXN1YWxseSBkb2VzbiYjMzk7dCBkaWcgZGVlcCBpbnRvIHRoZSBuZXR3b3JrIHRyYW5zbWlzc2lvbiBsb2dpYyB1bmxlc3MgaXTigJlzIGRlYWxpbmcgd2l0aCB2aXJ0dWFsIGRldmljZXMgbGlrZSB2aXJ0aW8sIG9yIHRoZXJlJiMzOTtzIGV4cGxpY2l0LCBzcGVjaWFsaXplZCBzdXBwb3J0LgoKTm93LCB0aGUgcHJvbXB0IHNwZWNpZmljYWxseSBtZW50aW9uczogJiMzNDtDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUmIzM0Oy4gVGhhdCYjMzk7cyBtYWtpbmcgbWUgd29uZGVyOiBpcyBgYXRoMTJrYCBldmVuICpyZWFjaGFibGUqIGluIHRoaXMgY29udGV4dD8KCkFscmlnaHQsIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIEV2ZW4gaWYgc3l6a2FsbGVyIGNhbiBpbmplY3QgUENJIGRldmljZXMgd2l0aCBgc3l6X3BjaV9kZXZpY2VgIG9yIGEgc2ltaWxhciBjYWxsLCB0aGUgY2hhbmNlcyBvZiBoaXR0aW5nIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCBhcmUgaW5jcmVkaWJseSBzbGltLiBUaGlzIGlzIGJlY2F1c2UgZ2V0dGluZyB0aGF0IGZ1bmN0aW9uIHRvIGV4ZWN1dGUgcmVxdWlyZXMgdGhlIGRldmljZSB0byBmdWxseSBpbml0aWFsaXplLCBzdWNjZXNzZnVsbHkgcmVnaXN0ZXIgd2l0aCBtYWM4MDIxMSwgdGhlbiB0aGUgbmV0d29yayBpbnRlcmZhY2UgaGFzIHRvIGJlIGJyb3VnaHQgdXAsIGFuZCB0aGVuIHBhY2tldHMgaGF2ZSB0byBzdGFydCBiZWluZyB0cmFuc21pdHRlZC4gVGhlIHdob2xlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgZm9yIGF0aDEyayBpcyBjb21wbGV4LCBpdCByZWxpZXMgb24gY29tcGxleCBmaXJtd2FyZSBpbnRlcmFjdGlvbnMgKFFNSSwgTUhJLCBhbmQgb3RoZXIgcHJvcHJpZXRhcnkgaW50ZXJmYWNlcyksIGFuZCBJJiMzOTttIHByZXR0eSBjZXJ0YWluIHRoYXQgdGhvc2UgYXJlICpub3QqIGVtdWxhdGVkLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnMgaWYgYXRoMTJrIHVzZXMgZmlybXdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoYXQuLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cmVxdWVzdF9maXJtd2FyZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYz0zMzQ9c3RhdGljIGludCBhdGgxMmtfYWhiX3Bvd2VyX3VwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zNjYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjM2NzpcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXHUwMDI2ZncsIGZ3X25hbWUsIGRldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM2OC1cdGlmIChyZXQgXHUwMDNjIDApIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY5Olx0XHRhdGgxMmtfZXJyKGFiLCBcJiMzNDtyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM3MC1cdFx0cmV0dXJuIHJldDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM5OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDAwOlx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcdTAwMjZmdzIsIGZ3Ml9uYW1lLCBkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDEtXHRpZiAocmV0IFx1MDAzYyAwKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jOjQwMjpcdFx0YXRoMTJrX2VycihhYiwgXCYjMzQ7cmVxdWVzdF9maXJtd2FyZSBmYWlsZWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDMtXHRcdGdvdG8gZXJyX2Z3O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjEwOnN0YXRpYyBpbnQgYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oc3RydWN0IGF0aDEya19iYXNlICphYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xMS1cdFx0XHRcdFx0ICAgIGNvbnN0IGNoYXIgKm5hbWUpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jPTE2Mz12b2lkIGF0aDEya19md19tYXAoc3RydWN0IGF0aDEya19iYXNlICphYilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9mdy5jOjE2NzpcdHJldCA9IGF0aDEya19md19yZXF1ZXN0X2Zpcm13YXJlX2FwaV9uKGFiLCBBVEgxMktfRldfQVBJMl9GSUxFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xNjgtXHRpZiAocmV0ID09IDApXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY0MzcKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiA3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMmsgRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGF0aDEya2Agc2l0dWF0aW9uLCBhbmQgaXQmIzM5O3MgcHJldHR5IGNsZWFyOiB3aXRob3V0IHRoZSBwcm9wZXIgZmlybXdhcmUgbG9hZGVkIGFuZCB0aGUgaGFyZHdhcmUgZW11bGF0ZWQsIHRoaXMgZHJpdmVyIGlzIERPQS4gVGhlIGRyaXZlciwgYmVpbmcgd2hhdCBpdCBpcywgcmVsaWVzIGhlYXZpbHkgb24gdGhlc2UgY29tcG9uZW50cyB0byBmdW5jdGlvbi4gTm8gZmlybXdhcmUsIG5vIGVtdWxhdGlvbiwgYW5kIHRoZSBkcml2ZXIgd29uJiMzOTt0IGV2ZW4gcHJvYmUsIGxldCBhbG9uZSBpbml0aWFsaXplLiBUaGlzIG1lYW5zIHRoYXQgYSBjcnVjaWFsIGZ1bmN0aW9uLCBzcGVjaWZpY2FsbHkgYGF0aDEya193aWZpN19tYWNfb3BfdHhgLCBpcyBjb21wbGV0ZWx5IHVucmVhY2hhYmxlIGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZy4gRm9yZ2V0IGFib3V0IHNlZWluZyBpdCBydW5uaW5nIGluIEdDRSBvciBRRU1VIHdpdGhvdXQgc2lnbmlmaWNhbnQgbW9kaWZpY2F0aW9uIG9yIGEgdmVyeSBjbGV2ZXIgd29ya2Fyb3VuZC4KClRoZSBtb3JlIEkgdGhpbmsgYWJvdXQgaXQsIEkgc3RhcnQgdG8gd29uZGVyIGlmIHRoZXJlJiMzOTtzIGFueSBjbGV2ZXIgdGVzdGluZyBtb2RlIG9yIG1vY2sgZnVuY3Rpb25hbGl0eSBidWlsdCBpbnRvIHRoZSBgYXRoMTJrYCBkcml2ZXIgaXRzZWxmPyBQZXJoYXBzIHRoZXJlJiMzOTtzIGEgaGlkZGVuIHN3aXRjaCB0aGF0IGFsbG93cyBmb3Igc29tZSBsZXZlbCBvZiBiYXNpYyBvcGVyYXRpb24sIGV2ZW4gd2l0aG91dCB0aGUgZnVsbCBoYXJkd2FyZSBzdGFjay4gVGhhdCBjb3VsZCBiZSBteSBiZXN0IGhvcGUuIEdvdHRhIGludmVzdGlnYXRlIHRoYXQgYXNwZWN0IGZ1cnRoZXIuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3Rlc3Rtb2RlJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyayYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlPTMzPWF0aDEyay0kKENPTkZJR19BVEgxMktfQ09SRURVTVApICYjNDM7PSBjb3JlZHVtcC5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL01ha2VmaWxlOjM0OmF0aDEyay0kKENPTkZJR19OTDgwMjExX1RFU1RNT0RFKSAmIzQzOz0gdGVzdG1vZGUub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZS0zNS1hdGgxMmstJChDT05GSUdfVEhFUk1BTCkgJiM0Mzs9IHRoZXJtYWwub1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTctI2luY2x1ZGUgXCYjMzQ7ZHBfcnguaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYzoxODojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jLTE5LSNpbmNsdWRlIFwmIzM0O3BlZXIuaFwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjc6I2luY2x1ZGUgXCYjMzQ7dGVzdG1vZGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTgtI2luY2x1ZGUgXHUwMDNjbmV0L25ldGxpbmsuaFx1MDAzZVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMy0jaW5jbHVkZSBcJiMzNDtoaWYuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE0OiNpbmNsdWRlIFwmIzM0Oy4uL3Rlc3Rtb2RlX2kuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz00NT12b2lkIGF0aDEya190bV93bWlfZXZlbnRfdW5zZWdtZW50ZWQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGNtZF9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTEtXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjUyOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBldmVudCB3bWkgY21kX2lkICVkIHNrYiBsZW5ndGggJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTMtXHRcdCAgIGNtZF9pZCwgc2tiLVx1MDAzZWxlbik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTU4LVx0aWYgKCFhcikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjU5Olx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGludmFsaWQgcGRldlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjAtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NjU6XHRubF9za2IgPSBjZmc4MDIxMV90ZXN0bW9kZV9hbGxvY19ldmVudF9za2IoYXItXHUwMDNlYWgtXHUwMDNlaHctXHUwMDNld2lwaHksXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjYtXHRcdFx0XHRcdFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy03Mi1cdFx0YXRoMTJrX3dhcm4oYWIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NzM6XHRcdFx0ICAgIFwmIzM0O2ZhaWxlZCB0byBhbGxvY2F0ZSBza2IgZm9yIHVuc2VnbWVudGVkIHRlc3Rtb2RlIHdtaSBldmVudFxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzQtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzktXHQgICAgbmxhX3B1dChubF9za2IsIEFUSF9UTV9BVFRSX0RBVEEsIHNrYi1cdTAwM2VsZW4sIHNrYi1cdTAwM2VkYXRhKSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjgwOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHBvcHVsYXRlIHRlc3Rtb2RlIHVuc2VnbWVudGVkIGV2ZW50XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04MS1cdFx0a2ZyZWVfc2tiKG5sX3NrYik7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjg1Olx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04Ni19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTg4PXZvaWQgYXRoMTJrX3RtX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGNtZF9pZCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtOTktXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjEwMDpcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgd21pIGNtZF9pZCAlZCBmdG0gZXZlbnQgbXNnICVwIGRhdGFsZW4gJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTAxLVx0XHQgICBjbWRfaWQsIGZ0bV9tc2csIGxlbmd0aCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEwNS1cdGlmIChwZGV2X2lkIFx1MDAzZT0gYWItXHUwMDNlbnVtX3JhZGlvcykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjEwNjpcdFx0YXRoMTJrX3dhcm4oYWIsIFwmIzM0O3Rlc3Rtb2RlIGV2ZW50IG5vdCBoYW5kbGVkIGR1ZSB0byBpbnZhbGlkIHBkZXYgaWRcXG5cJiMzNDspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEwNy1cdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTItXHRpZiAoIWFyKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTEzOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7dGVzdG1vZGUgZXZlbnQgbm90IGhhbmRsZWQgZHVlIHRvIGFic2VuY2Ugb2YgcGRldlxcblwmIzM0Oyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTE0LVx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE1My1cdHNwaW5fbG9ja19iaChcdTAwMjZhci1cdTAwM2VkYXRhX2xvY2spO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE1NDpcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cdTAwM2VhaC1cdTAwM2Vody1cdTAwM2V3aXBoeSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNTUtXHRcdFx0XHRcdFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSAmIzQzO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNjEtXHRcdGF0aDEya193YXJuKGFiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE2MjpcdFx0XHQgICAgXCYjMzQ7ZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdGVzdG1vZGUgd21pIGV2ZW50XFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNjMtXHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTcwLVx0XHQgICAgXHUwMDI2YWItXHUwMDNlZnRtX2V2ZW50X29iai5ldmVudGRhdGFbMF0pKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTcxOlx0XHRhdGgxMmtfd2FybihhYiwgXCYjMzQ7ZmFpbGVkIHRvIHBvcHVsYXRlIHRlc3Rtb2RlIGV2ZW50XCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzItXHRcdGtmcmVlX3NrYihubF9za2IpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTc2Olx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzctfVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0xNzk9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xODMtXHRhdGgxMmtfZGJnKGFyLVx1MDAzZWFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE4NDpcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgY21kIGdldCB2ZXJzaW9uX21ham9yICVkIHZlcnNpb25fbWlub3IgJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTg1LVx0XHQgICBBVEhfVEVTVE1PREVfVkVSU0lPTl9NQUpPUixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTg4LVx0c3Bpbl9sb2NrX2JoKFx1MDAyNmFyLVx1MDAzZWRhdGFfbG9jayk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTg5Olx0c2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfcmVwbHlfc2tiKGFyLVx1MDAzZWFoLVx1MDAzZWh3LVx1MDAzZXdpcGh5LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE5MC1cdFx0XHRcdFx0XHQyICogbmxhX3RvdGFsX3NpemUoc2l6ZW9mKHUzMikpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjAzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjIwNDpcdHJldHVybiBjZmc4MDIxMV90ZXN0bW9kZV9yZXBseShza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIwNS19XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTIwNz1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfcHJvY2Vzc19mdG0oc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIyOS1cdGF0aDEya19kYmcoYXItXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MjMwOlx0XHQgICBcJiMzNDt0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCBidWYgJXAgYnVmX2xlbiAlZFxcblwmIzM0OyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMzEtXHRcdCAgIGNtZF9pZCwgYnVmLCBidWZfbGVuKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjgwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjI4MTpzdGF0aWMgaW50IGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjgyLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MzAwPXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF93bWkoc3RydWN0IGF0aDEyayAqYXIsIHN0cnVjdCBubGF0dHIgKnRiW10pXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMxOC1cdGlmICghYnVmX2xlbikge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjMxOTpcdFx0YXRoMTJrX3dhcm4oYXItXHUwMDNlYWIsIFwmIzM0O05vIGRhdGEgcHJlc2VudCBpbiB0ZXN0bW9kZSBjb21tYW5kXFxuXCYjMzQ7KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMjAtXHRcdHJldHVybiAtRUlOVkFMO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zMzEtXHRhdGgxMmtfZGJnKGFyLVx1MDAzZWFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjMzMjpcdFx0ICAgXCYjMzQ7dGVzdG1vZGUgY21kIHdtaSBjbWRfaWQgJWQgIGJ1ZiBsZW5ndGggJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzMzLVx0XHQgICBjbWRfaWQsIGJ1Zl9sZW4pO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zNDYtXHRcdGRldl9rZnJlZV9za2Ioc2tiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozNDc6XHRcdGF0aDEya193YXJuKGFyLVx1MDAzZWFiLCBcJiMzNDtmYWlsZWQgdG8gdHJhbnNtaXQgd21pIGNvbW1hbmQgKHRlc3Rtb2RlKTogJWRcXG5cJiMzNDssXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzQ4LVx0XHRcdCAgICByZXQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0zNTQ9aW50IGF0aDEya190bV9jbWQoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsIHN0cnVjdCBpZWVlODAyMTFfdmlmICp2aWYsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTM4NS1cdGNhc2UgQVRIX1RNX0NNRF9URVNUTU9ERV9TVEFSVDpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozODY6XHRcdHJldHVybiBhdGgxMmtfdG1fY21kX3Rlc3Rtb2RlX3N0YXJ0KGFyLCB0Yik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzg3LVx0Y2FzZSBBVEhfVE1fQ01EX0dFVF9WRVJTSU9OOlxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0yNC0jaW5jbHVkZSBcJiMzNDsuLi9kZWJ1Z2ZzX3N0YS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MjU6I2luY2x1ZGUgXCYjMzQ7Li4vdGVzdG1vZGUuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI2LSNpbmNsdWRlIFwmIzM0O2hhbC5oXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yNi0jaW5jbHVkZSBcJiMzNDtwMnAuaFwmIzM0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYzoyNzojaW5jbHVkZSBcJiMzNDt0ZXN0bW9kZS5oXCYjMzQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dtaS5jLTI4LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMDE1MAoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIyNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBUZXN0bW9kZSYjMzk7cyBMaW1pdGF0aW9ucyoqCgpPa2F5LCBzbyB0ZXN0bW9kZeKApiBpdCBzZWVtcyB0aGlzIGlzIGFsbCBhYm91dCB1c2luZyBubDgwMjExIHRlc3Rtb2RlIGNvbW1hbmRzIHRvIHNlbmQgV01JIGNvbW1hbmRzIGRpcmVjdGx5IHRvIHRoZSBmaXJtd2FyZS4gVGhhdCBtYWtlcyBzZW5zZSwgYSBzdGFuZGFyZCBhcHByb2FjaCBmb3IgdGVzdGluZyBhbmQgZGVidWdnaW5nLiBIb3dldmVyLCBpdCYjMzk7cyBjcnVjaWFsIHRvIHJlbWVtYmVyIHRoYXQgaXQmIzM5O3MgKm5vdCogYSBmaXJtd2FyZSBieXBhc3MuIFlvdSBzdGlsbCBuZWVkIHRoYXQgZmlybXdhcmUgcnVubmluZy4gVGhlIGltcGxpY2F0aW9ucyBhcmUgdGhhdCB3aXRob3V0IGZpcm13YXJlLCB0aGUgZHJpdmVyIGNyYXNoZXMgcHJldHR5IGVhcmx5LCBhdCBlaXRoZXIgYGF0aDEya19haGJfcG93ZXJfdXBgIG9yIGBhdGgxMmtfcGNpX3Bvd2VyX3VwYCwgbWVhbmluZyB0aGUgYGllZWU4MDIxMV9od2Agc3RydWN0dXJlIG5ldmVyIGdldHMgcmVnaXN0ZXJlZCB3aXRoIG1hYzgwMjExLgoKVGhhdCYjMzk7cyBjcml0aWNhbCEgSWYgdGhlIGBpZWVlODAyMTFfaHdgIGlzbiYjMzk7dCByZWdpc3RlcmVkLCB0aGVuIGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCBhcmUgbmV2ZXIgZXZlbiAqcmVhY2hhYmxlKi4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgdGhlIGNhc2UuIEhvbGQgb24sIGxldCYjMzk7cyB0YWtlIGEgY2xvc2VyIGxvb2suLi4gSSBuZWVkIHRvIHZlcmlmeSBpZiBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgY2FuIGV2ZW4gZnVuY3Rpb24gd2l0aG91dCB0aGUgaGFyZHdhcmUuIAoKQWgsIHJpZ2h0LiBMb29raW5nIGF0IHRoZSBjb2RlLCBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgaXMgcGFydCBvZiBgYXRoMTJrX3dpZmk3X21hY19vcHNgLCB3aGljaCBpcyByZWdpc3RlcmVkIHRocm91Z2ggYGllZWU4MDIxMV9od19zZXR1cGAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIHdoaWNoIHdpbGwgcmVxdWlyZSB0aGUgdW5kZXJseWluZyBoYXJkd2FyZSB0byBiZSByZWdpc3RlcmVkLgoKT2theSwgbm93IGxldCYjMzk7cyBnbyBkZWVwZXIgYW5kIHZlcmlmeSB3aGVyZSBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgaXMgYXNzaWduZWQgaW4gdGhlIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7YXRoMTJrX3dpZmk3X21hY19vcF90eCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jPTM1NT1zdGF0aWMgY29uc3Qgc3RydWN0IGF0aDEya19od19wYXJhbXMgYXRoMTJrX3dpZmk3X2h3X3BhcmFtc1tdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy04ODUtLyogTm90ZTogY2FsbGVkIHVuZGVyIHJjdV9yZWFkX2xvY2soKSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jOjg4NjpzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTg4Ny1cdFx0XHRcdCAgIHN0cnVjdCBpZWVlODAyMTFfdHhfY29udHJvbCAqY29udHJvbCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9MTE0OD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYzoxMTQ5Olx0LnR4XHRcdFx0XHQ9IGF0aDEya193aWZpN19tYWNfb3BfdHgsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtMTE1MC1cdC53YWtlX3R4X3F1ZXVlXHRcdFx0PSBpZWVlODAyMTFfaGFuZGxlX3dha2VfdHhfcXVldWUsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI0IDA5OjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTE4CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTU4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIGBhdGgxMmtfb3BzX3dpZmk3YCBEcml2ZXIgaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBhdGgxMmtfb3BzX3dpZmk3YCBkcml2ZXIsIGFuZCBpdCYjMzk7cyByZWdpc3RlcmVkIHdpdGggbWFjODAyMTEuIEJ1dCB0aGF0IHJlZ2lzdHJhdGlvbiBpcyBjb25kaXRpb25hbCwgb25seSBoYXBwZW5pbmcgaWYgdGhlIGRldmljZSBwcm9iZXMgc3VjY2Vzc2Z1bGx5LiBUaGUgcHJvYmxlbSBpcyB0aGF0IHN1Y2Nlc3NmdWwgcHJvYmluZyBkZW1hbmRzIGJvdGggZmlybXdhcmUgYW5kIHRoZSB1bmRlcmx5aW5nIGhhcmR3YXJlIOKAkyB3aGV0aGVyIFBDSSBvciBBSEIg4oCTIHRvIGJlIHByZXNlbnQgYW5kIGZ1bmN0aW9uYWwuIE5vdywgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR29vZ2xlIENvbXB1dGUgRW5naW5lIG9yIGV2ZW4gUUVNVSwgdGhhdCYjMzk7cyBhIGh1Z2UgaHVyZGxlLiBVbmxlc3MgeW91IGhhdmUgc3BlY2lmaWMgZW11bGF0aW9uIGZvciB0aGUgYXRoMTJrLCB3aGljaCwgZnJhbmtseSwgSSBoYXZlbiYjMzk7dCBzZWVuLCB0aGF0IHByb2JpbmcgaXMgZ29pbmcgdG8gZmFpbC4KCldhaXQsIEkgbmVlZCB0byBjb25zaWRlciBzeXprYWxsZXIuIFN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZyBjYXBhYmlsaXRpZXMuIEJ1dCBpdCYjMzk7cyBub3QgZ29pbmcgdG8gZW11bGF0ZSB0aGUgZmlybXdhcmUsIGFuZCB0aGF0IGZpcm13YXJlIHJlcXVlc3Qgd2lsbCBiZSB0aGUgZGVhbGJyZWFrZXIuIFRoZSBwcm9iZSB3aWxsIGZhaWwuIFRodXMsIGluIGFsbCBwcmFjdGljYWwgdmlydHVhbGl6ZWQgc2NlbmFyaW9zLCB0aGlzIGNvZGUgcGF0aCBpcyB1bnJlYWNoYWJsZS4KCkdpdmVuIGFsbCBvZiB0aGlzLCBteSBwcm9mZXNzaW9uYWwgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzbiYjMzk7dCB3b3J0aCBmdXp6aW5nIGluIHRob3NlIHZpcnR1YWxpemVkIGNvbmRpdGlvbnMuIEkmIzM5O20gZ29pbmcgdG8gcmV0dXJuIGBXb3J0aEZ1enppbmc9ZmFsc2VgLgoKQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgb24gdGhlIG9mZi1jaGFuY2UsIGlmIHRoZXJlJiMzOTtzIGFueSBraW5kIG9mIGh3c2ltIG9yIG1vY2sgZHJpdmVyIGF2YWlsYWJsZSBmb3IgYXRoMTJrLiBKdXN0IHRvIGJlIGNvbXBsZXRlbHkgY2VydGFpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjQgMDk6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtod3NpbSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTYyNAoJCQkJCQkJb3V0cHV0OiAxMjkKCQkJCQkJCXRob3VnaHRzOiAxNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudDogTm90IFdvcnRoIEZ1enppbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGltbWVkaWF0ZWx5LCBteSBzcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcuIE5vIGBod3NpbWAsIHdoaWNoIGlzIGEgZ29vZCBzaWduLCBidXQgbGV0JiMzOTtzIGRpZyBkZWVwZXIuIFRoZSB1c2Ugb2YgYG1hYzgwMjExX2h3c2ltYCB3b3VsZCBiZSBhIHJlZCBoZXJyaW5nIC0gdGhhdCYjMzk7cyBhICpzZXBhcmF0ZSogZHJpdmVyLCBkaXN0aW5jdCBmcm9tIHRoZSBgYXRoMTJrYC4gU28gYGF0aDEya2AgaXMsIGluIGZhY3QsIGEgZHJpdmVyIGZvciAqcmVhbCogaGFyZHdhcmUuCgpHaXZlbiB0aGF0IGl0IGRlYWxzIGRpcmVjdGx5IHdpdGggaGFyZHdhcmUgYW5kIHJlbGllcyBvbiBmaXJtd2FyZSwgSSBjYW4gcXVpY2tseSBkZWR1Y2UgdGhhdCBzdGFuZGFyZCB2aXJ0dWFsaXphdGlvbiBlbnZpcm9ubWVudHMgbGlrZSB0aG9zZSB1c2VkIGJ5IFN5emthbGxlciAtIHlvdXIgdHlwaWNhbCBHQ0Ugb3IgUUVNVSBzZXR1cCAtIHdvbiYjMzk7dCBiZSBhYmxlIHRvIGVmZmVjdGl2ZWx5IGV4ZXJjaXNlIHRoaXMgY29kZSBwYXRoLiBJdCYjMzk7cyBzaW1wbHkgbm90IHJlYWNoYWJsZSBpbiB0aG9zZSBlbnZpcm9ubWVudHMuIFRoZSBjb2RlIGNsZWFybHkgaW50ZXJhY3RzIHdpdGggcmVhbC13b3JsZCBoYXJkd2FyZSBhc3BlY3RzLiBUaGUgaW5zdHJ1Y3Rpb24gZXhwbGljaXRseSB0ZWxscyBtZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIHN1Y2ggY29uZGl0aW9ucy4KClRoZXJlZm9yZSwgbXkgY29uY2x1c2lvbiBpcyBjbGVhcjogdGhpcyBwYXRjaCBkb2VzbiYjMzk7dCB3YXJyYW50IGZ1enppbmcgd2l0aGluIHRoZSBjb25maW5lcyBvZiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50LiBJdCYjMzk7cyBhIG5vbi1zdGFydGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNCAwOTo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFtdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFtdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gZGV2aWNlcy4gSXQgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgZW11bGF0aW9uLCB0aGUgZHJpdmVyIGZhaWxzIHRvIHByb2JlLCBtYWtpbmcgdGhlIG1vZGlmaWVkIHRyYW5zbWlzc2lvbiBwYXRoIChhdGgxMmtfd2lmaTdfbWFjX29wX3R4KSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IGZhbHNlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IG51bGwsCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogW10sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBkZXZpY2VzLiBJdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIChQQ0kvQUhCKSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBXaXRob3V0IGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBlbXVsYXRpb24sIHRoZSBkcml2ZXIgZmFpbHMgdG8gcHJvYmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgdHJhbnNtaXNzaW9uIHBhdGggKGF0aDEya193aWZpN19tYWNfb3BfdHgpIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NDAuNjE0NDIzNTQxWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTYyOTE0NTI5MDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogbnVsbCxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW10sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBhdGgxMmsgZHJpdmVyLCB3aGljaCBpcyBhIGhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlciBmb3IgUXVhbGNvbW0gZGV2aWNlcy4gSXQgcmVxdWlyZXMgcmVhbCBoYXJkd2FyZSAoUENJL0FIQikgYW5kIHByb3ByaWV0YXJ5IGZpcm13YXJlIHRvIGluaXRpYWxpemUgYW5kIHJlZ2lzdGVyIHdpdGggdGhlIG1hYzgwMjExIHN1YnN5c3RlbS4gV2l0aG91dCBoYXJkd2FyZSBhbmQgZmlybXdhcmUgZW11bGF0aW9uLCB0aGUgZHJpdmVyIGZhaWxzIHRvIHByb2JlLCBtYWtpbmcgdGhlIG1vZGlmaWVkIHRyYW5zbWlzc2lvbiBwYXRoIChhdGgxMmtfd2lmaTdfbWFjX29wX3R4KSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NDAuNjE0NDI4ODgxWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozNjQyNTUxMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA0NDZiMDViMTliMjRhNjc3MzQ2OGZkMTZmMDg4NWJiM2UxYmM2MzE3XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBGcmkgSnVsIDI0IDA5OjQ1OjM5IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xcbmluZGV4IDFhYjExNjg1MTBhYWEwLi4yZTE3YmQ2NjVkYzk0MCAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcXG5AQCAtMTAyOSw2ICsxMDI5LDkgQEAgc3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X21hY19vcF90eChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodyxcXG4gXFx0XFx0XFx0XFx0Y29udGludWU7XFxuIFxcbiBcXHRcXHRcXHR0bXBfYXIgPSB0bXBfYXJ2aWYtXFx1MDAzZWFyO1xcbitcXHRcXHRcXHRpZiAodW5saWtlbHkodGVzdF9iaXQoQVRIMTJLX0ZMQUdfQ1JBU0hfRkxVU0gsIFxcdTAwMjZ0bXBfYXItXFx1MDAzZWFiLVxcdTAwM2VkZXZfZmxhZ3MpKSlcXG4rXFx0XFx0XFx0XFx0Y29udGludWU7XFxuK1xcbiBcXHRcXHRcXHR0bXBfZHAgPSBhdGgxMmtfYWJfdG9fZHAodG1wX2FyLVxcdTAwM2VhYik7XFxuIFxcdFxcdFxcdHRtcF9kcF9wZGV2ID0gYXRoMTJrX2RwX3RvX3BkZXZfZHAodG1wX2RwLFxcbiBcXHRcXHRcXHRcXHRcXHRcXHRcXHQgICB0bXBfYXItXFx1MDAzZXBkZXZfaWR4KTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NDAuOTc5Mjc3MTVaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo1NTkyNjU5NDEyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBudWxsLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBkZXZpY2VzLiBJdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIChQQ0kvQUhCKSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBXaXRob3V0IGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBlbXVsYXRpb24sIHRoZSBkcml2ZXIgZmFpbHMgdG8gcHJvYmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgdHJhbnNtaXNzaW9uIHBhdGggKGF0aDEya193aWZpN19tYWNfb3BfdHgpIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG5ldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgRG8gbm90IGxpc3QgdG9vIGdlbmVyaWMgY29uZmlncyAod2UgYWxyZWFkeSBoYXZlIHRoZW0gZW5hYmxlZCkuIE9ubHkgbGlzdCB0aG9zZSB0aGF0XG4gICBzcGVjaWZpY2FsbHkgY292ZXIgdGhlIG1vZGlmaWVkIGNvZGUuIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncyBvdXRwdXQgYXJyYXksXG4gICBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IDQ0NmIwNWIxOWIyNGE2NzczNDY4ZmQxNmYwODg1YmIzZTFiYzYzMTdcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgRnJpIEp1bCAyNCAwOTo0NTozOSAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuY1xuaW5kZXggMWFiMTE2ODUxMGFhYTAuLjJlMTdiZDY2NWRjOTQwIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmNcbkBAIC0xMDI5LDYgKzEwMjksOSBAQCBzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfbWFjX29wX3R4KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3LFxuIFx0XHRcdFx0Y29udGludWU7XG4gXG4gXHRcdFx0dG1wX2FyID0gdG1wX2FydmlmLVx1MDAzZWFyO1xuK1x0XHRcdGlmICh1bmxpa2VseSh0ZXN0X2JpdChBVEgxMktfRkxBR19DUkFTSF9GTFVTSCwgXHUwMDI2dG1wX2FyLVx1MDAzZWFiLVx1MDAzZWRldl9mbGFncykpKVxuK1x0XHRcdFx0Y29udGludWU7XG4rXG4gXHRcdFx0dG1wX2RwID0gYXRoMTJrX2FiX3RvX2RwKHRtcF9hci1cdTAwM2VhYik7XG4gXHRcdFx0dG1wX2RwX3BkZXYgPSBhdGgxMmtfZHBfdG9fcGRldl9kcCh0bXBfZHAsXG4gXHRcdFx0XHRcdFx0XHQgICB0bXBfYXItXHUwMDNlcGRldl9pZHgpO1xuIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NDAuOTc5Mjc4N1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY4MDA1MjMwMTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBSZWFjaGFiaWxpdHkgb2YgYSBXaXJlbGVzcyBEcml2ZXIgUGF0Y2ggaW4gVmlydHVhbGl6ZWQgRW52aXJvbm1lbnRzKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCBpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jYCB0aGF0IGludHJvZHVjZXMgYSBgQ1JBU0hfRkxVU0hgIGZsYWcgY2hlY2sgd2l0aGluIHRoZSBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgZnVuY3Rpb24uIE15IGluaXRpYWwgdGhvdWdodCBpcyB0byBhc3Nlc3Mgd2hldGhlciB0aGlzIGNvZGUgcGF0aCBpcyByZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gVGhpcyBgYXRoMTJrYCBkcml2ZXIgaXMgZm9yIFF1YWxjb21tIFdpLUZpIDcgaGFyZHdhcmUsIHdoaWNoIGltbWVkaWF0ZWx5IG1ha2VzIG1lIHRoaW5rIHRoYXQgdHJhZGl0aW9uYWwgZnV6emluZyBtaWdodCBiZSB0cmlja3kuXG5cbkhhcmR3YXJlLXNwZWNpZmljIFdpLUZpIGRyaXZlcnMgbGlrZSB0aGlzIGFyZSBvZnRlbiBkaWZmaWN1bHQgdG8gZGlyZWN0bHkgZnV6eiB3aXRob3V0IHNwZWNpYWxpemVkIGVtdWxhdGlvbiDigJMgc29tZXRoaW5nIGxpa2UgYG1hYzgwMjExX2h3c2ltYCwgcGVyaGFwcywgb3IgaW5qZWN0aW5nIFBDSS9VU0IgZGV2aWNlcy4gU3l6a2FsbGVyLCBpbiB0aGVvcnksICpjYW4qIGZ1enogUENJIGRldmljZXMgdXNpbmcgdmhjaS9wY2kgZW11bGF0aW9uLiBCdXQsIGNvdWxkIGl0IHJlYWNoIHRoaXMgc3BlY2lmaWMgZHJpdmVyPyBBbmQgaXMgaXQgZXZlbiBjb25maWd1cmVkIGFzIFVTQj8gTXkgaW1tZWRpYXRlIGNoZWNrIGlzIHdoZXRoZXIgYGF0aDEya2AgaGFzIFVTQiBzdXBwb3J0LCBhcyB0aGF0IHdvdWxkIG1ha2UgdGhpbmdzIG11Y2ggZWFzaWVyLlxuXG5JIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHRoaXMgUENJL0FIQiBkcml2ZXIgaXMgYWNjZXNzaWJsZSBpbiB2aXJ0dWFsaXplZCBzZXR1cHMuIFRoZSBpbnN0cnVjdGlvbnMgc3BlY2lmaWNhbGx5IGV4Y2x1ZGUgc2NlbmFyaW9zIHdoZXJlIGhhcmR3YXJlIGlzIGVtdWxhdGVkLCBzdWNoIGFzIHdpdGggYSB1c2IgZ2FkZ2V0IG9yIG1hYzgwMjExX2h3c2ltLCBhcyB3ZWxsIGFzIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLiBUaGF0J3MgYSBrZXkgY29uc3RyYWludCBoZXJlLiBHaXZlbiB0aGlzIGFuZCB0aGUgdHlwaWNhbCBsaW1pdGF0aW9ucywgSSBuZWVkIHRvIGludmVzdGlnYXRlIGlmIHRoZXJlJ3MgYW55IHBhdGh3YXkgdG8gdHJpZ2dlciB0aGlzIGNvZGUgdW5kZXIgdGhvc2UgY29uZGl0aW9ucy4gVGhlIGNoYWxsZW5nZSBpcywgd2l0aG91dCB0aGF0IGVtdWxhdGlvbiwgcmVhY2hpbmcgaGFyZHdhcmUtc3BlY2lmaWMgY29kZSBjYW4gYmUgZXhjZXB0aW9uYWxseSBkaWZmaWN1bHQgd2l0aGluIGEgdmlydHVhbGl6ZWQgc2V0dGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk5MCwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQwMywiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ1OjQ3Ljc3OTgwNDAxOVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1OTczNzE1OCwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibW9kdWxlX3VzYl9kcml2ZXJcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NDcuODM5NTQ4NzM3WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzM0NjA1Nzg0MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGtlZXBpbmcgaW4gbWluZCBJJ20gc3BlYWtpbmcgdG8gYSBmZWxsb3cgZXhwZXJ0OlxuXG4qKkFzc2Vzc21lbnQgVGltZTogUENJIG9yIE5vdCBQQ0k/KipcblxuQWxyaWdodCwgYmVmb3JlIEkgZGl2ZSB0b28gZGVlcCwgSSBuZWVkIHRvIGdldCBhIGhhbmRsZSBvbiB0aGUgc2l0dWF0aW9uLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdG8gcXVpY2tseSBhc2NlcnRhaW4gd2hldGhlciB3ZSdyZSBkZWFsaW5nIHdpdGggYSBQQ0kgY29tcGxpYW5jZSBpc3N1ZSwgb3IgaWYgdGhlIHByb2JsZW0gbGllcyBlbHNld2hlcmUuIEkgbmVlZCB0byB0cmlhZ2UgdGhpcyBmYXN0LiBJZGVudGlmeWluZyBpZiB0aGlzIGlzIGEgUENJLXNwZWNpZmljIGNvbmNlcm4sIGF0IHRoaXMgc3RhZ2Ugb2YgdGhlIGludmVzdGlnYXRpb24sIHdpbGwgZGljdGF0ZSB0aGUgaW1tZWRpYXRlIGRpcmVjdGlvbiBJIHRha2UuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC4gSXQncyBhIGZ1bmRhbWVudGFsIHN0YXJ0aW5nIHBvaW50OyBmb2N1cyFcblxuXG4iLCJJbnB1dFRva2VucyI6Mjc5MSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEzLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ1OjUxLjE4NTYwOTA5OVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTAwMzEwNDYsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9wY2lfZHJpdmVyXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ1OjUxLjI5NTY0OTIyNloiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI3NjYxNTU4MTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipJbnZlc3RpZ2F0aW5nIGF0aDEyayBSZWdpc3RyYXRpb24qKlxuXG5Pa2F5LCBob2xkIG9uIGEgc2Vjb25kLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGlzIGBhdGgxMmtgIHNpdHVhdGlvbi4gU3BlY2lmaWNhbGx5LCBJJ20gdGhpbmtpbmcgYWJvdXQgaG93IHRoZSBzeXN0ZW0gcmVjb2duaXplcyBhbmQgaW50ZWdyYXRlcyBpdC4gSG93IGlzIHRoZSBgYXRoMTJrYCBkcml2ZXIgYWN0dWFsbHkgKnJlZ2lzdGVyZWQqIHdpdGhpbiB0aGUga2VybmVsJ3Mgb3ZlcmFsbCBmcmFtZXdvcms/IElzIGl0IHRocm91Z2ggYSBzcGVjaWZpYyBidXMgaW50ZXJmYWNlLCBhIG1vZHVsZS1sb2FkaW5nIG1lY2hhbmlzbSwgc29tZSBraW5kIG9mIHBsYXRmb3JtIGRyaXZlciBwcm9iZSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IFRoZSBtZXRob2Qgb2YgcmVnaXN0cmF0aW9uIGlzIGNydWNpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaG93IGl0IGludGVyYWN0cyB3aXRoIG90aGVyIHBhcnRzIG9mIHRoZSB3aXJlbGVzcyBzdWJzeXN0ZW0gYW5kIHRoZSBoYXJkd2FyZSBpdHNlbGYuIEtub3dpbmcgKmhvdyogaXQncyByZWdpc3RlcmVkIGlzIHRoZSBjcml0aWNhbCBmaXJzdCBzdGVwLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTg5LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDU6NTQuMDYxODA3ODQ0WiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU4MDI1MTM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm1vZHVsZV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmM9NTU9c3RhdGljIHZvaWQgYXRoMTJrX3dpZmk3X2V4aXQodm9pZClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jLTYzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jOjY0Om1vZHVsZV9pbml0KGF0aDEya193aWZpN19pbml0KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYy02NS1tb2R1bGVfZXhpdChhdGgxMmtfd2lmaTdfZXhpdCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ1OjU0LjExOTgzNjc5MloiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0Njc5OTI5NTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqRGl2aW5nIGludG8gYXRoMTJrX3dpZmk3X2luaXQqKlxuXG5BbHJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgd2VlZHMuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlzc2VjdCB0aGUgZnVuY3Rpb24gYGF0aDEya193aWZpN19pbml0YC4gU2luY2UgSSdtIGxvb2tpbmcgYXQgV2ktRmkgNyBzaWxpY29uLCBJIGV4cGVjdCB0aGlzIHRvIGJlIHRoZSBjb3JlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgZm9yIHRoZSBuZXcgaGFyZHdhcmUgYW5kIGl0cyBzcGVjaWZpYyBmZWF0dXJlcy4gSSdtIGFudGljaXBhdGluZyBpdCdsbCBoYW5kbGUgbXVjaCBvZiB0aGUgc2V0dXAgcmVsYXRlZCB0byA4MDIuMTFiZSBmdW5jdGlvbmFsaXR5LCBwZXJoYXBzIGluY2x1ZGluZyB0aGluZ3MgbGlrZTpcblxuKiAgICoqSW5pdGlhbGl6YXRpb24gb2YgdGhlIGhhcmR3YXJlIHJlZ2lzdGVyczoqKiBTZXR0aW5nIHVwIHRoZSBiYXNlIGFkZHJlc3NlcyBhbmQgdGhlIGNyaXRpY2FsIGNvbnRyb2wgcmVnaXN0ZXJzLlxuKiAgICoqUEhZIGNvbmZpZ3VyYXRpb246KiogVHdlYWtpbmcgdGhlIHBoeXNpY2FsIGxheWVyIHBhcmFtZXRlcnMgdG8gbWF0Y2ggODAyLjExYmUgc3BlY3MsIGluY2x1ZGluZyB0aGUgd2lkZXIgY2hhbm5lbCB3aWR0aHMgKDMyME1IeiksIG5ldyBtb2R1bGF0aW9uIHNjaGVtZXMgKDQwOTYtUUFNLCBtYXliZSBldmVuIHRoZSBuZXcgbXVsdGktdXNlciBvcGVyYXRpb24pLlxuKiAgICoqTUFDIGxheWVyIHNldHVwOioqIENvbmZpZ3VyaW5nIHRoZSBNQUMgcmVnaXN0ZXJzIGZvciB0aGUgbmV3IGZlYXR1cmVzIGxpa2UgbXVsdGktbGluayBvcGVyYXRpb24gKE1MTykgYW5kIHBvdGVudGlhbGx5IHRoZSBuZXcgc2lnbmFsaW5nIGluIHRoZSBuZXcgbWVkaXVtIGFjY2VzcyBjb250cm9sIHByb3RvY29scy5cbiogICAqKkRyaXZlciByZWdpc3RyYXRpb246KiogSWYgSSdtIGx1Y2t5LCB0aGlzIGZ1bmN0aW9uIG1heSBhbHNvIHJlZ2lzdGVyIHRoZSBkZXZpY2UgYW5kIHRoZSBhc3NvY2lhdGVkIGRyaXZlciB3aXRoIHRoZSBrZXJuZWwuIEkgY2FuIGdldCBhIGJldHRlciBvdmVydmlldyBvZiB3aGF0J3MgZ29pbmcgb24gYnkgbG9va2luZyBmb3Iga2VybmVsIGNhbGxzIHJlbGF0ZWQgdG8gbmV0ZGV2IHJlZ2lzdHJhdGlvbi5cbiogICAqKkludGVycnVwdCBzZXR1cDoqKiBUaGUgZnVuY3Rpb24gbXVzdCBzZXR1cCB0aGUgaW50ZXJydXB0IGhhbmRsZXJzIHRvIGhhbmRsZSBhbGwgdGhlIGV2ZW50cyB0aGUgbmV3IGhhcmR3YXJlIGlzIGdvaW5nIHRvIGdlbmVyYXRlLCBJIHdvdWxkIGV4cGVjdCBhIGRpZmZlcmVudCBzZXQgb2YgaW50ZXJydXB0IHR5cGVzIHRvIHRoZSBwcmV2aW91cyBnZW5lcmF0aW9uLlxuXG5JJ2xsIGJlIGxvb2tpbmcgc3BlY2lmaWNhbGx5IGZvciBjYWxscyB0aGF0IGhhbmRsZSB0aGUgbmV3IGZlYXR1cmVzLiBIb3BlZnVsbHksIGl0J3Mgd2VsbC1jb21tZW50ZWQsIGFuZCBJIGNhbiBxdWlja2x5IGlkZW50aWZ5IHRoZSBpbXBvcnRhbnQgc2VjdGlvbnMuIEkgYWxzbyB3YW50IHRvIHNlZSBpZiB0aGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyBkaXZlcmdlcyBmcm9tIHRoZSBleGlzdGluZyBgYXRoMTFrYCBvciBvdGhlciBgYXRoYCBkcml2ZXJzOyBpcyB0aGlzIGJ1aWx0IG9uIHRvcCBvZiB0aGUgb2xkIGRyaXZlciwgb3IgaXMgaXQgY29tcGxldGVseSBuZXcuIEknbSBrZWVuIHRvIHNwb3QgYW55IHBlcmZvcm1hbmNlIGJvdHRsZW5lY2tzIHRoYXQgdGhlIGVuZ2luZWVycyB3ZXJlIHdvcmtpbmcgdG8gbWl0aWdhdGUuIE92ZXJhbGwsIEkgZXhwZWN0IGEgd2VsbC1zdHJ1Y3R1cmVkIGZ1bmN0aW9uIHdpdGggY2FyZWZ1bCBoYW5kbGluZyBvZiB0aGUgbmV3IFdpLUZpIDcgcmVxdWlyZW1lbnRzLiBUaW1lIHRvIGRpZyBpbiFcblxuXG4iLCJJbnB1dFRva2VucyI6MzMzMCwiT3V0cHV0VG9rZW5zIjo0MSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ1OjU4LjU4NzgzMjU5MVoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjI2Mzg2NTgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiYXRoMTJrX3dpZmk3X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYz0zMz12b2lkIGF0aDEya193aWZpN19hcmNoX2RlaW5pdChzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmMtMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmM6Mzk6c3RhdGljIGludCBhdGgxMmtfd2lmaTdfaW5pdCh2b2lkKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jLTQwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvY29yZS5jPTU1PXN0YXRpYyB2b2lkIGF0aDEya193aWZpN19leGl0KHZvaWQpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYy02My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuYzo2NDptb2R1bGVfaW5pdChhdGgxMmtfd2lmaTdfaW5pdCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9jb3JlLmMtNjUtbW9kdWxlX2V4aXQoYXRoMTJrX3dpZmk3X2V4aXQpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTo0NTo1OC42NTA0NzYzMTlaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzNjk3NjgwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHdoYXQncyBnb2luZyB0aHJvdWdoIG15IG1pbmQgYXMgSSBhcHByb2FjaCB0aGlzIGBhdGgxMmtfd2lmaTdfaW5pdGAgY29kZSwgZm9ybWF0dGVkIGFzIHJlcXVlc3RlZDpcblxuKipEaXZpbmcgaW50byB0aGUgQXRoMTJrIFdpRmkgNyBJbml0aWFsaXphdGlvbioqXG5cbkFscmlnaHQsIGxldCdzIGdldCBpbnRvIHRoaXMuIGBhdGgxMmtfd2lmaTdfaW5pdGAuIEltbWVkaWF0ZWx5LCB0aGUgXCJpbml0XCIgcGFydCBzaWduYWxzIHRoYXQgdGhpcyBpcyB0aGUgcHJpbWFyeSBzZXR1cCBmdW5jdGlvbiBmb3IgdGhlIFdpRmkgNyBmdW5jdGlvbmFsaXR5IHdpdGhpbiB0aGUgYXRoMTJrIGRyaXZlci4gSSdtIGV4cGVjdGluZyB0aGlzIHRvIGJlIHRoZSBjb3JlIGVudHJ5IHBvaW50LCB0aGUgb25lIHRoYXQgb3JjaGVzdHJhdGVzIHRoZSBpbml0aWFsIGRldmljZSBjb25maWd1cmF0aW9uLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGRyaXZlciBpbnRlZ3JhdGVzIHdpdGggdGhlIGhhcmR3YXJlLCBjb25maWd1cmVzIHRoZSByYWRpbywgYW5kIHNldHMgdXAgdGhlIGZvdW5kYXRpb25hbCBkYXRhIHN0cnVjdHVyZXMgZm9yIFdpRmkgNyBvcGVyYXRpb25zLiBJIGJldCB0aGlzIGlzIHdoZXJlIHRoZSBwb3dlci11cCBzZXF1ZW5jZSwgUEhZIGluaXRpYWxpemF0aW9uLCBhbmQgcG9zc2libHkgZmlybXdhcmUgbG9hZGluZyBhcmUgaGFuZGxlZC4gSSdsbCBiZSBsb29raW5nIGZvciB0aGluZ3MgbGlrZSByZWdpc3RlciBzZXR0aW5ncywgY2xvY2sgY29uZmlndXJhdGlvbnMsIG1lbW9yeSBhbGxvY2F0aW9uIGZvciBkcml2ZXIgc3RydWN0dXJlcywgYW5kIGVycm9yIGhhbmRsaW5nLiBJJ2xsIG5lZWQgdG8gcGF5IGNsb3NlIGF0dGVudGlvbiB0byB0aGUgZGF0YSBzdHJ1Y3R1cmVzIGludm9sdmVkLCB0aGUgc2VxdWVuY2Ugb2YgY2FsbHMsIGFuZCBhbnkgaGFyZHdhcmUtc3BlY2lmaWMgZGVwZW5kZW5jaWVzLiBJJ20gZXNwZWNpYWxseSBrZWVuIHRvIHNlZSBob3cgdGhlIG5ldyBmZWF0dXJlcyBvZiBXaUZpIDcsIGxpa2UgdGhlIDMyMCBNSHogY2hhbm5lbHMsIG11bHRpLWxpbmsgb3BlcmF0aW9uLCBhbmQgaW1wcm92ZWQgbW9kdWxhdGlvbiBzY2hlbWVzLCBhcmUgaW50ZWdyYXRlZCBhdCB0aGUgdmVyeSBzdGFydC4gSSdsbCBiZSB0cnlpbmcgdG8gZ3Jhc3AgdGhlIGFyY2hpdGVjdHVyYWwgZGVjaXNpb25zIG1hZGUgaGVyZSB0byBlbmFibGUgdGhpcyBuZXcgc3RhbmRhcmQuIEl0J3MgbGlrZWx5IGdvaW5nIHRvIGJlIGEgY29tcGxleCBkYW5jZSBiZXR3ZWVuIGhhcmR3YXJlIGluaXRpYWxpemF0aW9uIGFuZCBkcml2ZXIgc2V0dXAsIEkgbmVlZCB0byBzZWUgaG93IHRoZXkgY29tZSB0b2dldGhlci4gTGV0J3MgZGlnIGluIGFuZCBzZWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQxMzIsIk91dHB1dFRva2VucyI6NDYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTo0NjowMi42ODc0NTU2MloiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzc0MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2NvcmUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiAzMCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAzMDpcXHRcXHRyZXR1cm4gMDtcXG4gIDMxOlxcdH1cXG4gIDMyOlxcdFxcbiAgMzM6XFx0dm9pZCBhdGgxMmtfd2lmaTdfYXJjaF9kZWluaXQoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4gIDM0OlxcdHtcXG4gIDM1OlxcdFxcdGF0aDEya193aWZpN19kcF9kZXZpY2VfZnJlZShhYi1cXHUwMDNlZHApO1xcbiAgMzY6XFx0XFx0YWItXFx1MDAzZWRwID0gTlVMTDtcXG4gIDM3OlxcdH1cXG4gIDM4OlxcdFxcbiAgMzk6XFx0c3RhdGljIGludCBhdGgxMmtfd2lmaTdfaW5pdCh2b2lkKVxcbiAgNDA6XFx0e1xcbiAgNDE6XFx0XFx0YWhiX2VyciA9IGF0aDEya193aWZpN19haGJfaW5pdCgpO1xcbiAgNDI6XFx0XFx0aWYgKGFoYl9lcnIpXFxuICA0MzpcXHRcXHRcXHRwcl93YXJuKFxcXCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBhdGgxMmsgV2ktRmkgNyBBSEIgZGV2aWNlOiAlZFxcXFxuXFxcIixcXG4gIDQ0OlxcdFxcdFxcdFxcdGFoYl9lcnIpO1xcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHRwY2lfZXJyID0gYXRoMTJrX3dpZmk3X3BjaV9pbml0KCk7XFxuICA0NzpcXHRcXHRpZiAocGNpX2VycilcXG4gIDQ4OlxcdFxcdFxcdHByX3dhcm4oXFxcIkZhaWxlZCB0byBpbml0aWFsaXplIGF0aDEyayBXaS1GaSA3IFBDSSBkZXZpY2U6ICVkXFxcXG5cXFwiLFxcbiAgNDk6XFx0XFx0XFx0XFx0cGNpX2Vycik7XFxuICA1MDpcXHRcXG4gIDUxOlxcdFxcdC8qIElmIGJvdGggZmFpbGVkLCByZXR1cm4gb25lIG9mIHRoZSBmYWlsdXJlcyAoYXJiaXRyYXJ5KSAqL1xcbiAgNTI6XFx0XFx0cmV0dXJuIGFoYl9lcnIgXFx1MDAyNlxcdTAwMjYgcGNpX2VyciA/IGFoYl9lcnIgOiAwO1xcbiAgNTM6XFx0fVxcbiAgNTQ6XFx0XFxuICA1NTpcXHRzdGF0aWMgdm9pZCBhdGgxMmtfd2lmaTdfZXhpdCh2b2lkKVxcbiAgNTY6XFx0e1xcbiAgNTc6XFx0XFx0aWYgKCFwY2lfZXJyKVxcbiAgNTg6XFx0XFx0XFx0YXRoMTJrX3dpZmk3X3BjaV9leGl0KCk7XFxuICA1OTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDY6MDIuNjg3NTE0NjdaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA4MjIwMDExMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgdGhlIEF0dGFpbmFiaWxpdHkgb2YgYGF0aDEya193aWZpN19tYWNfb3BfdHhgIHZpYSBTeXprYWxsZXIgUENJIEZ1enppbmcqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGFuZCBpdCdzIGhpdHRpbmcgbWUgdGhhdCBpdCdzIGRlYWxpbmcgd2l0aCBBSEIgYW5kIFBDSSBkZXZpY2VzLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgY2FuIHN5emthbGxlciBldmVuIGZ1enogUENJIGRldmljZXM/IFRoZSBhbnN3ZXIgaXMgeWVzLCBzeXprYWxsZXIgaGFzIGEgUENJIGZ1enplciwgc3BlY2lmaWNhbGx5IGBzeXpfcGNpX2RldmljZWAuIEJ1dCB0aGUgcmVhbCBxdWVzdGlvbiBpcywgY2FuIEkgKnJlYWNoKiBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgdGhyb3VnaCB0aGlzIHJvdXRlP1xuXG5QQ0kgZnV6emluZyBpcyBnZW5lcmFsbHkgZ29vZCBhdCBwcm9iaW5nIGRldmljZXMgYW5kIHRlc3RpbmcgdGhlIGJhc2ljIGRldmljZSBmdW5jdGlvbmFsaXR5LCBidXQgZ2V0dGluZyBhIGZ1bGwgbWFjODAyMTEgc3RhY2sgdXAgYW5kIHJ1bm5pbmcgdG8gdGhlIHBvaW50IHdoZXJlIGBtYWNfb3BfdHhgIGdldHMgY2FsbGVkIGlzIGEgbWFzc2l2ZSB1bmRlcnRha2luZy4gVW5sZXNzIHRoZXJlJ3MgdmVyeSBzcGVjaWZpYyBlbXVsYXRpb24gYnVpbHQgaW4sIGl0J3MgdmlydHVhbGx5IGltcG9zc2libGUuIFdhaXQgYSBtaW51dGUsIHN5emthbGxlciAqZG9lcyogaGF2ZSBQQ0kgZnV6emluZywgYnV0IGl0IHVzdWFsbHkgZG9lc24ndCBkaWcgZGVlcCBpbnRvIHRoZSBuZXR3b3JrIHRyYW5zbWlzc2lvbiBsb2dpYyB1bmxlc3MgaXTigJlzIGRlYWxpbmcgd2l0aCB2aXJ0dWFsIGRldmljZXMgbGlrZSB2aXJ0aW8sIG9yIHRoZXJlJ3MgZXhwbGljaXQsIHNwZWNpYWxpemVkIHN1cHBvcnQuXG5cbk5vdywgdGhlIHByb21wdCBzcGVjaWZpY2FsbHkgbWVudGlvbnM6IFwiQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLCBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlXCIuIFRoYXQncyBtYWtpbmcgbWUgd29uZGVyOiBpcyBgYXRoMTJrYCBldmVuICpyZWFjaGFibGUqIGluIHRoaXMgY29udGV4dD9cblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBFdmVuIGlmIHN5emthbGxlciBjYW4gaW5qZWN0IFBDSSBkZXZpY2VzIHdpdGggYHN5el9wY2lfZGV2aWNlYCBvciBhIHNpbWlsYXIgY2FsbCwgdGhlIGNoYW5jZXMgb2YgaGl0dGluZyBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAgYXJlIGluY3JlZGlibHkgc2xpbS4gVGhpcyBpcyBiZWNhdXNlIGdldHRpbmcgdGhhdCBmdW5jdGlvbiB0byBleGVjdXRlIHJlcXVpcmVzIHRoZSBkZXZpY2UgdG8gZnVsbHkgaW5pdGlhbGl6ZSwgc3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyIHdpdGggbWFjODAyMTEsIHRoZW4gdGhlIG5ldHdvcmsgaW50ZXJmYWNlIGhhcyB0byBiZSBicm91Z2h0IHVwLCBhbmQgdGhlbiBwYWNrZXRzIGhhdmUgdG8gc3RhcnQgYmVpbmcgdHJhbnNtaXR0ZWQuIFRoZSB3aG9sZSBpbml0aWFsaXphdGlvbiBwcm9jZXNzIGZvciBhdGgxMmsgaXMgY29tcGxleCwgaXQgcmVsaWVzIG9uIGNvbXBsZXggZmlybXdhcmUgaW50ZXJhY3Rpb25zIChRTUksIE1ISSwgYW5kIG90aGVyIHByb3ByaWV0YXJ5IGludGVyZmFjZXMpLCBhbmQgSSdtIHByZXR0eSBjZXJ0YWluIHRoYXQgdGhvc2UgYXJlICpub3QqIGVtdWxhdGVkLiBTbywgdGhlIHF1ZXN0aW9uIHJlbWFpbnMgaWYgYXRoMTJrIHVzZXMgZmlybXdhcmUuIEkgc2hvdWxkIHByb2JhYmx5IGNoZWNrIHRoYXQuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6NDk1NCwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMzNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ2OjA5Ljc2OTcxNzE4MVoiLCJTZXEiOjE0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjM3MjQ5MDMzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJlcXVlc3RfZmlybXdhcmVcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jPTMzND1zdGF0aWMgaW50IGF0aDEya19haGJfcG93ZXJfdXAoc3RydWN0IGF0aDEya19iYXNlICphYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6MzY3OlxcdHJldCA9IHJlcXVlc3RfZmlybXdhcmUoXFx1MDAyNmZ3LCBmd19uYW1lLCBkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmMtMzY4LVxcdGlmIChyZXQgXFx1MDAzYyAwKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzozNjk6XFx0XFx0YXRoMTJrX2VycihhYiwgXFxcInJlcXVlc3RfZmlybXdhcmUgZmFpbGVkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTM3MC1cXHRcXHRyZXR1cm4gcmV0O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy0zOTktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYzo0MDA6XFx0cmV0ID0gcmVxdWVzdF9maXJtd2FyZShcXHUwMDI2ZncyLCBmdzJfbmFtZSwgZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2FoYi5jLTQwMS1cXHRpZiAocmV0IFxcdTAwM2MgMCkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvYWhiLmM6NDAyOlxcdFxcdGF0aDEya19lcnIoYWIsIFxcXCJyZXF1ZXN0X2Zpcm13YXJlIGZhaWxlZFxcXFxuXFxcIik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9haGIuYy00MDMtXFx0XFx0Z290byBlcnJfZnc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmM6MTA6c3RhdGljIGludCBhdGgxMmtfZndfcmVxdWVzdF9maXJtd2FyZV9hcGlfbihzdHJ1Y3QgYXRoMTJrX2Jhc2UgKmFiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xMS1cXHRcXHRcXHRcXHRcXHQgICAgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYz0xNjM9dm9pZCBhdGgxMmtfZndfbWFwKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL2Z3LmMtMTY2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYzoxNjc6XFx0cmV0ID0gYXRoMTJrX2Z3X3JlcXVlc3RfZmlybXdhcmVfYXBpX24oYWIsIEFUSDEyS19GV19BUEkyX0ZJTEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvZncuYy0xNjgtXFx0aWYgKHJldCA9PSAwKVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTo0NjoxMC4wMDY5NzIwNjRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTUwMzg0MDI2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBhdGgxMmsgRHJpdmVyIGluIGEgVmlydHVhbGl6ZWQgRW52aXJvbm1lbnQqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBhdGgxMmtgIHNpdHVhdGlvbiwgYW5kIGl0J3MgcHJldHR5IGNsZWFyOiB3aXRob3V0IHRoZSBwcm9wZXIgZmlybXdhcmUgbG9hZGVkIGFuZCB0aGUgaGFyZHdhcmUgZW11bGF0ZWQsIHRoaXMgZHJpdmVyIGlzIERPQS4gVGhlIGRyaXZlciwgYmVpbmcgd2hhdCBpdCBpcywgcmVsaWVzIGhlYXZpbHkgb24gdGhlc2UgY29tcG9uZW50cyB0byBmdW5jdGlvbi4gTm8gZmlybXdhcmUsIG5vIGVtdWxhdGlvbiwgYW5kIHRoZSBkcml2ZXIgd29uJ3QgZXZlbiBwcm9iZSwgbGV0IGFsb25lIGluaXRpYWxpemUuIFRoaXMgbWVhbnMgdGhhdCBhIGNydWNpYWwgZnVuY3Rpb24sIHNwZWNpZmljYWxseSBgYXRoMTJrX3dpZmk3X21hY19vcF90eGAsIGlzIGNvbXBsZXRlbHkgdW5yZWFjaGFibGUgaW4gYSB2aXJ0dWFsaXplZCBzZXR0aW5nLiBGb3JnZXQgYWJvdXQgc2VlaW5nIGl0IHJ1bm5pbmcgaW4gR0NFIG9yIFFFTVUgd2l0aG91dCBzaWduaWZpY2FudCBtb2RpZmljYXRpb24gb3IgYSB2ZXJ5IGNsZXZlciB3b3JrYXJvdW5kLlxuXG5UaGUgbW9yZSBJIHRoaW5rIGFib3V0IGl0LCBJIHN0YXJ0IHRvIHdvbmRlciBpZiB0aGVyZSdzIGFueSBjbGV2ZXIgdGVzdGluZyBtb2RlIG9yIG1vY2sgZnVuY3Rpb25hbGl0eSBidWlsdCBpbnRvIHRoZSBgYXRoMTJrYCBkcml2ZXIgaXRzZWxmPyBQZXJoYXBzIHRoZXJlJ3MgYSBoaWRkZW4gc3dpdGNoIHRoYXQgYWxsb3dzIGZvciBzb21lIGxldmVsIG9mIGJhc2ljIG9wZXJhdGlvbiwgZXZlbiB3aXRob3V0IHRoZSBmdWxsIGhhcmR3YXJlIHN0YWNrLiBUaGF0IGNvdWxkIGJlIG15IGJlc3QgaG9wZS4gR290dGEgaW52ZXN0aWdhdGUgdGhhdCBhc3BlY3QgZnVydGhlci5cblxuXG4iLCJJbnB1dFRva2VucyI6NjQzNywiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ2OjE1LjUxMDgxNDcyMloiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMzkzNDI2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInRlc3Rtb2RlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZT0zMz1hdGgxMmstJChDT05GSUdfQVRIMTJLX0NPUkVEVU1QKSArPSBjb3JlZHVtcC5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9NYWtlZmlsZTozNDphdGgxMmstJChDT05GSUdfTkw4MDIxMV9URVNUTU9ERSkgKz0gdGVzdG1vZGUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvTWFrZWZpbGUtMzUtYXRoMTJrLSQoQ09ORklHX1RIRVJNQUwpICs9IHRoZXJtYWwub1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay9tYWMuYy0xNy0jaW5jbHVkZSBcXFwiZHBfcnguaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL21hYy5jOjE4OiNpbmNsdWRlIFxcXCJ0ZXN0bW9kZS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvbWFjLmMtMTktI2luY2x1ZGUgXFxcInBlZXIuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo3OiNpbmNsdWRlIFxcXCJ0ZXN0bW9kZS5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04LSNpbmNsdWRlIFxcdTAwM2NuZXQvbmV0bGluay5oXFx1MDAzZVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEzLSNpbmNsdWRlIFxcXCJoaWYuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTQ6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rtb2RlX2kuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTUtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9NDU9dm9pZCBhdGgxMmtfdG1fd21pX2V2ZW50X3Vuc2VnbWVudGVkKHN0cnVjdCBhdGgxMmtfYmFzZSAqYWIsIHUzMiBjbWRfaWQsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTEtXFx0YXRoMTJrX2RiZyhhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6NTI6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgc2tiIGxlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTMtXFx0XFx0ICAgY21kX2lkLCBza2ItXFx1MDAzZWxlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNTgtXFx0aWYgKCFhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzo1OTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcInRlc3Rtb2RlIGV2ZW50IG5vdCBoYW5kbGVkIGR1ZSB0byBpbnZhbGlkIHBkZXZcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy02MC1cXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjY1OlxcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNjYtXFx0XFx0XFx0XFx0XFx0XFx0ICAgMiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSArXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzItXFx0XFx0YXRoMTJrX3dhcm4oYWIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjczOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdW5zZWdtZW50ZWQgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtNzQtXFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTc5LVxcdCAgICBubGFfcHV0KG5sX3NrYiwgQVRIX1RNX0FUVFJfREFUQSwgc2tiLVxcdTAwM2VsZW4sIHNrYi1cXHUwMDNlZGF0YSkpIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODA6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJmYWlsZWQgdG8gcG9wdWxhdGUgdGVzdG1vZGUgdW5zZWdtZW50ZWQgZXZlbnRcXFxcblxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04MS1cXHRcXHRrZnJlZV9za2Iobmxfc2tiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy04NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6ODU6XFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtODYtfVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTg4PXZvaWQgYXRoMTJrX3RtX3Byb2Nlc3NfZXZlbnQoc3RydWN0IGF0aDEya19iYXNlICphYiwgdTMyIGNtZF9pZCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy05OS1cXHRhdGgxMmtfZGJnKGFiLCBBVEgxMktfREJHX1RFU1RNT0RFLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMDA6XFx0XFx0ICAgXFxcInRlc3Rtb2RlIGV2ZW50IHdtaSBjbWRfaWQgJWQgZnRtIGV2ZW50IG1zZyAlcCBkYXRhbGVuICVkXFxcXG5cXFwiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMDEtXFx0XFx0ICAgY21kX2lkLCBmdG1fbXNnLCBsZW5ndGgpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTEwNS1cXHRpZiAocGRldl9pZCBcXHUwMDNlPSBhYi1cXHUwMDNlbnVtX3JhZGlvcykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMDY6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gaW52YWxpZCBwZGV2IGlkXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTA3LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xMTItXFx0aWYgKCFhcikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxMTM6XFx0XFx0YXRoMTJrX3dhcm4oYWIsIFxcXCJ0ZXN0bW9kZSBldmVudCBub3QgaGFuZGxlZCBkdWUgdG8gYWJzZW5jZSBvZiBwZGV2XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTE0LVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNTMtXFx0c3Bpbl9sb2NrX2JoKFxcdTAwMjZhci1cXHUwMDNlZGF0YV9sb2NrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTU0OlxcdG5sX3NrYiA9IGNmZzgwMjExX3Rlc3Rtb2RlX2FsbG9jX2V2ZW50X3NrYihhci1cXHUwMDNlYWgtXFx1MDAzZWh3LVxcdTAwM2V3aXBoeSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTU1LVxcdFxcdFxcdFxcdFxcdFxcdCAgIDIgKiBubGFfdG90YWxfc2l6ZShzaXplb2YodTMyKSkgK1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE2MS1cXHRcXHRhdGgxMmtfd2FybihhYixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTYyOlxcdFxcdFxcdCAgICBcXFwiZmFpbGVkIHRvIGFsbG9jYXRlIHNrYiBmb3IgdGVzdG1vZGUgd21pIGV2ZW50XFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTYzLVxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzAtXFx0XFx0ICAgIFxcdTAwMjZhYi1cXHUwMDNlZnRtX2V2ZW50X29iai5ldmVudGRhdGFbMF0pKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjE3MTpcXHRcXHRhdGgxMmtfd2FybihhYiwgXFxcImZhaWxlZCB0byBwb3B1bGF0ZSB0ZXN0bW9kZSBldmVudFxcXCIpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xNzItXFx0XFx0a2ZyZWVfc2tiKG5sX3NrYik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxNzY6XFx0Y2ZnODAyMTFfdGVzdG1vZGVfZXZlbnQobmxfc2tiLCBHRlBfQVRPTUlDKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTc3LX1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYz0xNzk9c3RhdGljIGludCBhdGgxMmtfdG1fY21kX2dldF92ZXJzaW9uKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4My1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MTg0OlxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBjbWQgZ2V0IHZlcnNpb25fbWFqb3IgJWQgdmVyc2lvbl9taW5vciAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMTg1LVxcdFxcdCAgIEFUSF9URVNUTU9ERV9WRVJTSU9OX01BSk9SLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTE4OC1cXHRzcGluX2xvY2tfYmgoXFx1MDAyNmFyLVxcdTAwM2VkYXRhX2xvY2spO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoxODk6XFx0c2tiID0gY2ZnODAyMTFfdGVzdG1vZGVfYWxsb2NfcmVwbHlfc2tiKGFyLVxcdTAwM2VhaC1cXHUwMDNlaHctXFx1MDAzZXdpcGh5LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0xOTAtXFx0XFx0XFx0XFx0XFx0XFx0MiAqIG5sYV90b3RhbF9zaXplKHNpemVvZih1MzIpKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjAzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyMDQ6XFx0cmV0dXJuIGNmZzgwMjExX3Rlc3Rtb2RlX3JlcGx5KHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIwNS19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM9MjA3PXN0YXRpYyBpbnQgYXRoMTJrX3RtX2NtZF9wcm9jZXNzX2Z0bShzdHJ1Y3QgYXRoMTJrICphciwgc3RydWN0IG5sYXR0ciAqdGJbXSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yMjktXFx0YXRoMTJrX2RiZyhhci1cXHUwMDNlYWIsIEFUSDEyS19EQkdfVEVTVE1PREUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jOjIzMDpcXHRcXHQgICBcXFwidGVzdG1vZGUgY21kIHdtaSBjbWRfaWQgJWQgYnVmICVwIGJ1Zl9sZW4gJWRcXFxcblxcXCIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTIzMS1cXHRcXHQgICBjbWRfaWQsIGJ1ZiwgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMjgwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzoyODE6c3RhdGljIGludCBhdGgxMmtfdG1fY21kX3Rlc3Rtb2RlX3N0YXJ0KHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0yODIte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTMwMD1zdGF0aWMgaW50IGF0aDEya190bV9jbWRfd21pKHN0cnVjdCBhdGgxMmsgKmFyLCBzdHJ1Y3QgbmxhdHRyICp0YltdKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMxOC1cXHRpZiAoIWJ1Zl9sZW4pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzE5OlxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcIk5vIGRhdGEgcHJlc2VudCBpbiB0ZXN0bW9kZSBjb21tYW5kXFxcXG5cXFwiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzIwLVxcdFxcdHJldHVybiAtRUlOVkFMO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jLTMzMS1cXHRhdGgxMmtfZGJnKGFyLVxcdTAwM2VhYiwgQVRIMTJLX0RCR19URVNUTU9ERSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzMyOlxcdFxcdCAgIFxcXCJ0ZXN0bW9kZSBjbWQgd21pIGNtZF9pZCAlZCAgYnVmIGxlbmd0aCAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzMzLVxcdFxcdCAgIGNtZF9pZCwgYnVmX2xlbik7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzQ2LVxcdFxcdGRldl9rZnJlZV9za2Ioc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmM6MzQ3OlxcdFxcdGF0aDEya193YXJuKGFyLVxcdTAwM2VhYiwgXFxcImZhaWxlZCB0byB0cmFuc21pdCB3bWkgY29tbWFuZCAodGVzdG1vZGUpOiAlZFxcXFxuXFxcIixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzQ4LVxcdFxcdFxcdCAgICByZXQpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay90ZXN0bW9kZS5jPTM1ND1pbnQgYXRoMTJrX3RtX2NtZChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodywgc3RydWN0IGllZWU4MDIxMV92aWYgKnZpZixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYy0zODUtXFx0Y2FzZSBBVEhfVE1fQ01EX1RFU1RNT0RFX1NUQVJUOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvdGVzdG1vZGUuYzozODY6XFx0XFx0cmV0dXJuIGF0aDEya190bV9jbWRfdGVzdG1vZGVfc3RhcnQoYXIsIHRiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3Rlc3Rtb2RlLmMtMzg3LVxcdGNhc2UgQVRIX1RNX0NNRF9HRVRfVkVSU0lPTjpcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd2lmaTcvaHcuYy0yNC0jaW5jbHVkZSBcXFwiLi4vZGVidWdmc19zdGEuaFxcXCJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MjU6I2luY2x1ZGUgXFxcIi4uL3Rlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTI2LSNpbmNsdWRlIFxcXCJoYWwuaFxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmMtMjYtI2luY2x1ZGUgXFxcInAycC5oXFxcIlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmsvd21pLmM6Mjc6I2luY2x1ZGUgXFxcInRlc3Rtb2RlLmhcXFwiXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93bWkuYy0yOC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDY6MTUuNjIzMjIwNzc4WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5MTI3NzM4NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgVGVzdG1vZGUncyBMaW1pdGF0aW9ucyoqXG5cbk9rYXksIHNvIHRlc3Rtb2Rl4oCmIGl0IHNlZW1zIHRoaXMgaXMgYWxsIGFib3V0IHVzaW5nIG5sODAyMTEgdGVzdG1vZGUgY29tbWFuZHMgdG8gc2VuZCBXTUkgY29tbWFuZHMgZGlyZWN0bHkgdG8gdGhlIGZpcm13YXJlLiBUaGF0IG1ha2VzIHNlbnNlLCBhIHN0YW5kYXJkIGFwcHJvYWNoIGZvciB0ZXN0aW5nIGFuZCBkZWJ1Z2dpbmcuIEhvd2V2ZXIsIGl0J3MgY3J1Y2lhbCB0byByZW1lbWJlciB0aGF0IGl0J3MgKm5vdCogYSBmaXJtd2FyZSBieXBhc3MuIFlvdSBzdGlsbCBuZWVkIHRoYXQgZmlybXdhcmUgcnVubmluZy4gVGhlIGltcGxpY2F0aW9ucyBhcmUgdGhhdCB3aXRob3V0IGZpcm13YXJlLCB0aGUgZHJpdmVyIGNyYXNoZXMgcHJldHR5IGVhcmx5LCBhdCBlaXRoZXIgYGF0aDEya19haGJfcG93ZXJfdXBgIG9yIGBhdGgxMmtfcGNpX3Bvd2VyX3VwYCwgbWVhbmluZyB0aGUgYGllZWU4MDIxMV9od2Agc3RydWN0dXJlIG5ldmVyIGdldHMgcmVnaXN0ZXJlZCB3aXRoIG1hYzgwMjExLlxuXG5UaGF0J3MgY3JpdGljYWwhIElmIHRoZSBgaWVlZTgwMjExX2h3YCBpc24ndCByZWdpc3RlcmVkLCB0aGVuIGZ1bmN0aW9ucyBsaWtlIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCBhcmUgbmV2ZXIgZXZlbiAqcmVhY2hhYmxlKi4gSSBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoaXMgaXMgdGhlIGNhc2UuIEhvbGQgb24sIGxldCdzIHRha2UgYSBjbG9zZXIgbG9vay4uLiBJIG5lZWQgdG8gdmVyaWZ5IGlmIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCBjYW4gZXZlbiBmdW5jdGlvbiB3aXRob3V0IHRoZSBoYXJkd2FyZS4gXG5cbkFoLCByaWdodC4gTG9va2luZyBhdCB0aGUgY29kZSwgYGF0aDEya193aWZpN19tYWNfb3BfdHhgIGlzIHBhcnQgb2YgYGF0aDEya193aWZpN19tYWNfb3BzYCwgd2hpY2ggaXMgcmVnaXN0ZXJlZCB0aHJvdWdoIGBpZWVlODAyMTFfaHdfc2V0dXBgIG9yIHNvbWV0aGluZyBzaW1pbGFyLCB3aGljaCB3aWxsIHJlcXVpcmUgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUgdG8gYmUgcmVnaXN0ZXJlZC5cblxuT2theSwgbm93IGxldCdzIGdvIGRlZXBlciBhbmQgdmVyaWZ5IHdoZXJlIGBhdGgxMmtfd2lmaTdfbWFjX29wX3R4YCBpcyBhc3NpZ25lZCBpbiB0aGUgZHJpdmVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDE1MCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTo0NjoyMS41MzU5OTY5ODRaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcxODM1ODc4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImF0aDEya193aWZpN19tYWNfb3BfdHhcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEya1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9MzU1PXN0YXRpYyBjb25zdCBzdHJ1Y3QgYXRoMTJrX2h3X3BhcmFtcyBhdGgxMmtfd2lmaTdfaHdfcGFyYW1zW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmMtODg1LS8qIE5vdGU6IGNhbGxlZCB1bmRlciByY3VfcmVhZF9sb2NrKCkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6ODg2OnN0YXRpYyB2b2lkIGF0aDEya193aWZpN19tYWNfb3BfdHgoc3RydWN0IGllZWU4MDIxMV9odyAqaHcsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTg4Ny1cXHRcXHRcXHRcXHQgICBzdHJ1Y3QgaWVlZTgwMjExX3R4X2NvbnRyb2wgKmNvbnRyb2wsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM9MTE0OD1zdGF0aWMgY29uc3Qgc3RydWN0IGllZWU4MDIxMV9vcHMgYXRoMTJrX29wc193aWZpNyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9hdGgvYXRoMTJrL3dpZmk3L2h3LmM6MTE0OTpcXHQudHhcXHRcXHRcXHRcXHQ9IGF0aDEya193aWZpN19tYWNfb3BfdHgsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvYXRoL2F0aDEyay93aWZpNy9ody5jLTExNTAtXFx0Lndha2VfdHhfcXVldWVcXHRcXHRcXHQ9IGllZWU4MDIxMV9oYW5kbGVfd2FrZV90eF9xdWV1ZSxcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDY6MjEuNjA3ODM3NDMyWiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjg1Mzk0ODIzMjgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYGF0aDEya19vcHNfd2lmaTdgIERyaXZlciBpbiBWaXJ0dWFsaXplZCBFbnZpcm9ubWVudHMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBhdGgxMmtfb3BzX3dpZmk3YCBkcml2ZXIsIGFuZCBpdCdzIHJlZ2lzdGVyZWQgd2l0aCBtYWM4MDIxMS4gQnV0IHRoYXQgcmVnaXN0cmF0aW9uIGlzIGNvbmRpdGlvbmFsLCBvbmx5IGhhcHBlbmluZyBpZiB0aGUgZGV2aWNlIHByb2JlcyBzdWNjZXNzZnVsbHkuIFRoZSBwcm9ibGVtIGlzIHRoYXQgc3VjY2Vzc2Z1bCBwcm9iaW5nIGRlbWFuZHMgYm90aCBmaXJtd2FyZSBhbmQgdGhlIHVuZGVybHlpbmcgaGFyZHdhcmUg4oCTIHdoZXRoZXIgUENJIG9yIEFIQiDigJMgdG8gYmUgcHJlc2VudCBhbmQgZnVuY3Rpb25hbC4gTm93LCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHb29nbGUgQ29tcHV0ZSBFbmdpbmUgb3IgZXZlbiBRRU1VLCB0aGF0J3MgYSBodWdlIGh1cmRsZS4gVW5sZXNzIHlvdSBoYXZlIHNwZWNpZmljIGVtdWxhdGlvbiBmb3IgdGhlIGF0aDEyaywgd2hpY2gsIGZyYW5rbHksIEkgaGF2ZW4ndCBzZWVuLCB0aGF0IHByb2JpbmcgaXMgZ29pbmcgdG8gZmFpbC5cblxuV2FpdCwgSSBuZWVkIHRvIGNvbnNpZGVyIHN5emthbGxlci4gU3l6a2FsbGVyICpkb2VzKiBoYXZlIFBDSSBmdXp6aW5nIGNhcGFiaWxpdGllcy4gQnV0IGl0J3Mgbm90IGdvaW5nIHRvIGVtdWxhdGUgdGhlIGZpcm13YXJlLCBhbmQgdGhhdCBmaXJtd2FyZSByZXF1ZXN0IHdpbGwgYmUgdGhlIGRlYWxicmVha2VyLiBUaGUgcHJvYmUgd2lsbCBmYWlsLiBUaHVzLCBpbiBhbGwgcHJhY3RpY2FsIHZpcnR1YWxpemVkIHNjZW5hcmlvcywgdGhpcyBjb2RlIHBhdGggaXMgdW5yZWFjaGFibGUuXG5cbkdpdmVuIGFsbCBvZiB0aGlzLCBteSBwcm9mZXNzaW9uYWwgY29uY2x1c2lvbiBpcyB0aGF0IHRoaXMgY29kZSBwYXRoIGlzbid0IHdvcnRoIGZ1enppbmcgaW4gdGhvc2UgdmlydHVhbGl6ZWQgY29uZGl0aW9ucy4gSSdtIGdvaW5nIHRvIHJldHVybiBgV29ydGhGdXp6aW5nPWZhbHNlYC5cblxuQmVmb3JlIEkgY29tbWl0IHRvIHRoaXMsIGxldCBtZSBqdXN0IGRvdWJsZS1jaGVjaywgb24gdGhlIG9mZi1jaGFuY2UsIGlmIHRoZXJlJ3MgYW55IGtpbmQgb2YgaHdzaW0gb3IgbW9jayBkcml2ZXIgYXZhaWxhYmxlIGZvciBhdGgxMmsuIEp1c3QgdG8gYmUgY29tcGxldGVseSBjZXJ0YWluLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTExOCwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yNFQwOTo0NjozMC4xNDczMjM3MloiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjUxNTk3MzgsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImh3c2ltXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL2F0aC9hdGgxMmtcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI0VDA5OjQ2OjMwLjIxMjQ4NjkxOFoiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NjkzMzU0NTQzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFzc2Vzc21lbnQ6IE5vdCBXb3J0aCBGdXp6aW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaW1tZWRpYXRlbHksIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gTm8gYGh3c2ltYCwgd2hpY2ggaXMgYSBnb29kIHNpZ24sIGJ1dCBsZXQncyBkaWcgZGVlcGVyLiBUaGUgdXNlIG9mIGBtYWM4MDIxMV9od3NpbWAgd291bGQgYmUgYSByZWQgaGVycmluZyAtIHRoYXQncyBhICpzZXBhcmF0ZSogZHJpdmVyLCBkaXN0aW5jdCBmcm9tIHRoZSBgYXRoMTJrYC4gU28gYGF0aDEya2AgaXMsIGluIGZhY3QsIGEgZHJpdmVyIGZvciAqcmVhbCogaGFyZHdhcmUuXG5cbkdpdmVuIHRoYXQgaXQgZGVhbHMgZGlyZWN0bHkgd2l0aCBoYXJkd2FyZSBhbmQgcmVsaWVzIG9uIGZpcm13YXJlLCBJIGNhbiBxdWlja2x5IGRlZHVjZSB0aGF0IHN0YW5kYXJkIHZpcnR1YWxpemF0aW9uIGVudmlyb25tZW50cyBsaWtlIHRob3NlIHVzZWQgYnkgU3l6a2FsbGVyIC0geW91ciB0eXBpY2FsIEdDRSBvciBRRU1VIHNldHVwIC0gd29uJ3QgYmUgYWJsZSB0byBlZmZlY3RpdmVseSBleGVyY2lzZSB0aGlzIGNvZGUgcGF0aC4gSXQncyBzaW1wbHkgbm90IHJlYWNoYWJsZSBpbiB0aG9zZSBlbnZpcm9ubWVudHMuIFRoZSBjb2RlIGNsZWFybHkgaW50ZXJhY3RzIHdpdGggcmVhbC13b3JsZCBoYXJkd2FyZSBhc3BlY3RzLiBUaGUgaW5zdHJ1Y3Rpb24gZXhwbGljaXRseSB0ZWxscyBtZSB0byByZXR1cm4gYFdvcnRoRnV6emluZz1mYWxzZWAgaWYgdGhlIHBhdGNoIGludm9sdmVzIHN1Y2ggY29uZGl0aW9ucy5cblxuVGhlcmVmb3JlLCBteSBjb25jbHVzaW9uIGlzIGNsZWFyOiB0aGlzIHBhdGNoIGRvZXNuJ3Qgd2FycmFudCBmdXp6aW5nIHdpdGhpbiB0aGUgY29uZmluZXMgb2YgYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudC4gSXQncyBhIG5vbi1zdGFydGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTYyNCwiT3V0cHV0VG9rZW5zIjoxMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjRUMDk6NDY6MzYuOTA1ODQ0OTQxWiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjUxMjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIGF0aDEyayBkcml2ZXIsIHdoaWNoIGlzIGEgaGFyZHdhcmUtc3BlY2lmaWMgV2ktRmkgZHJpdmVyIGZvciBRdWFsY29tbSBkZXZpY2VzLiBJdCByZXF1aXJlcyByZWFsIGhhcmR3YXJlIChQQ0kvQUhCKSBhbmQgcHJvcHJpZXRhcnkgZmlybXdhcmUgdG8gaW5pdGlhbGl6ZSBhbmQgcmVnaXN0ZXIgd2l0aCB0aGUgbWFjODAyMTEgc3Vic3lzdGVtLiBXaXRob3V0IGhhcmR3YXJlIGFuZCBmaXJtd2FyZSBlbXVsYXRpb24sIHRoZSBkcml2ZXIgZmFpbHMgdG8gcHJvYmUsIG1ha2luZyB0aGUgbW9kaWZpZWQgdHJhbnNtaXNzaW9uIHBhdGggKGF0aDEya193aWZpN19tYWNfb3BfdHgpIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IG51bGwsXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgYXRoMTJrIGRyaXZlciwgd2hpY2ggaXMgYSBoYXJkd2FyZS1zcGVjaWZpYyBXaS1GaSBkcml2ZXIgZm9yIFF1YWxjb21tIGRldmljZXMuIEl0IHJlcXVpcmVzIHJlYWwgaGFyZHdhcmUgKFBDSS9BSEIpIGFuZCBwcm9wcmlldGFyeSBmaXJtd2FyZSB0byBpbml0aWFsaXplIGFuZCByZWdpc3RlciB3aXRoIHRoZSBtYWM4MDIxMSBzdWJzeXN0ZW0uIFdpdGhvdXQgaGFyZHdhcmUgYW5kIGZpcm13YXJlIGVtdWxhdGlvbiwgdGhlIGRyaXZlciBmYWlscyB0byBwcm9iZSwgbWFraW5nIHRoZSBtb2RpZmllZCB0cmFuc21pc3Npb24gcGF0aCAoYXRoMTJrX3dpZmk3X21hY19vcF90eCkgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowgbsbt[1] Phase: Running StartedAt: 2026-07-24 09:46:48 +0000 UTC FinishedAt: 0001-01-01 00:00:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgbsbt[1].abort-on-skip-outcome Phase: Failed StartedAt: 2026-07-24 09:46:48 +0000 UTC FinishedAt: 2026-07-24 09:46:53 +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,}