Name: series-workflowf4czp Phase: Succeeded StartedAt: 2026-08-12 15:12:39 +0000 UTC FinishedAt: 2026-08-12 15:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf4czp[0] Phase: Succeeded StartedAt: 2026-08-12 15:12:39 +0000 UTC FinishedAt: 2026-08-12 15:21:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf4czp[0].run-triage Phase: Succeeded StartedAt: 2026-08-12 15:12:39 +0000 UTC FinishedAt: 2026-08-12 15:21:00 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI", "SND", "SND_PCI", "SND_HDA_INTEL", "SND_AD1889", "SND_ATIIXP", "SND_ATIIXP_MODEM", "SND_AW2", "SND_BT87X", "SND_LOLA", "SND_HDSPM", "SND_SOC", "SND_SOC_LOONGSON_I2S_PCI", "COMPILE_TEST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI", "SND", "SND_PCI", "SND_HDA_INTEL", "SND_AD1889", "SND_ATIIXP", "SND_ATIIXP_MODEM", "SND_AW2", "SND_BT87X", "SND_LOLA", "SND_HDSPM", "SND_SOC", "SND_SOC_LOONGSON_I2S_PCI", "COMPILE_TEST" ], "series_id": "cf4c92da-e7cd-4738-a9b7-46dae2926016" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "pcim_ioremap_region" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtTTkQmIzM0OywKICAgICYjMzQ7U05EX1BDSSYjMzQ7LAogICAgJiMzNDtTTkRfSERBX0lOVEVMJiMzNDssCiAgICAmIzM0O1NORF9BRDE4ODkmIzM0OywKICAgICYjMzQ7U05EX0FUSUlYUCYjMzQ7LAogICAgJiMzNDtTTkRfQVRJSVhQX01PREVNJiMzNDssCiAgICAmIzM0O1NORF9BVzImIzM0OywKICAgICYjMzQ7U05EX0JUODdYJiMzNDssCiAgICAmIzM0O1NORF9MT0xBJiMzNDssCiAgICAmIzM0O1NORF9IRFNQTSYjMzQ7LAogICAgJiMzNDtTTkRfU09DJiMzNDssCiAgICAmIzM0O1NORF9TT0NfTE9PTkdTT05fSTJTX1BDSSYjMzQ7LAogICAgJiMzNDtDT01QSUxFX1RFU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwY2ltX2lvcmVtYXBfcmVnaW9uJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIFBDSSBmdW5jdGlvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgd2hpY2ggd3JhcHMgYHBjaV9pb3JlbWFwX2JhcmAgYW5kIGBwY2lfcmVxdWVzdF9yZWdpb25gIHdpdGggZGV2cmVzLiBJdCByZXBsYWNlcyBgcGNpbV9pb21hcF9yZWdpb25gIGluIHNldmVyYWwgc291bmQgZHJpdmVycywgZm9yY2luZyB0aGVtIHRvIHVzZSBtZW1vcnkgbWFwcGluZyBpbnN0ZWFkIG9mIHBvdGVudGlhbGx5IHVzaW5nIElPIG1hcHBpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFBDSSBhbmQgZHJpdmVyIHByb2JpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYTZmNGM2MDI0YTk5ZWE2NzIzMTc2ZmQyNTRjNTI5N2Y2OTU1ZWQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTU6MTU6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvZGV2cmVzLmMgYi9kcml2ZXJzL3BjaS9kZXZyZXMuY1xuaW5kZXggZjA3NWU3ODgxYzNhNi4uZmFhNjc4ZmY1YjU2ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGNpL2RldnJlcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BjaS9kZXZyZXMuY1xuQEAgLTYzOSw2ICYjNDM7NjM5LDU1IEBAIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG4gfVxuIEVYUE9SVF9TWU1CT0wocGNpbV9pb21hcF9yZWdpb24pO1xuIFxuJiM0MzsvKipcbiYjNDM7ICogcGNpbV9pb3JlbWFwX3JlZ2lvbiAtIFJlcXVlc3QgYW5kIGlvcmVtYXAgYSBQQ0kgQkFSXG4mIzQzOyAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yXG4mIzQzOyAqIEBiYXI6IEluZGV4IG9mIGEgQkFSIHRvIG1hcFxuJiM0MzsgKiBAbmFtZTogTmFtZSBvZiB0aGUgZHJpdmVyIHJlcXVlc3RpbmcgdGhlIHJlc291cmNlXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IF9faW9tZW0gcG9pbnRlciBvbiBzdWNjZXNzLCBhbiBJT01FTV9FUlJfUFRSIG9uIGZhaWx1cmUuXG4mIzQzOyAqXG4mIzQzOyAqIE1hcHBpbmcgYW5kIHJlZ2lvbiB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIElmXG4mIzQzOyAqIGRlc2lyZWQsIHJlbGVhc2UgbWFudWFsbHkgb25seSB3aXRoIHBjaW1faW91bm1hcF9yZWdpb24oKS5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbiYjNDM7XHRcdFx0XHQgIGNvbnN0IGNoYXIgKm5hbWUpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcdHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzICpyZXM7XG4mIzQzO1xuJiM0MztcdGlmICghcGNpX2Jhcl9pbmRleF9pc192YWxpZChiYXIpKVxuJiM0MztcdFx0cmV0dXJuIElPTUVNX0VSUl9QVFIoLUVJTlZBTCk7XG4mIzQzO1xuJiM0MztcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG4mIzQzO1x0aWYgKCFyZXMpXG4mIzQzO1x0XHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRU5PTUVNKTtcbiYjNDM7XG4mIzQzO1x0cmVzLVx1MDAzZXR5cGUgPSBQQ0lNX0FERFJfREVWUkVTX1RZUEVfUkVHSU9OX01BUFBJTkc7XG4mIzQzO1x0cmVzLVx1MDAzZWJhciA9IGJhcjtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcGNpX3JlcXVlc3RfcmVnaW9uKHBkZXYsIGJhciwgbmFtZSk7XG4mIzQzO1x0aWYgKHJldCAhPSAwKVxuJiM0MztcdFx0Z290byBlcnJfcmVnaW9uO1xuJiM0MztcbiYjNDM7XHRyZXMtXHUwMDNlYmFzZWFkZHIgPSBwY2lfaW9yZW1hcF9iYXIocGRldiwgYmFyKTtcbiYjNDM7XHRpZiAoIXJlcy1cdTAwM2ViYXNlYWRkcikge1xuJiM0MztcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdGdvdG8gZXJyX2lvbWFwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0ZGV2cmVzX2FkZChcdTAwMjZwZGV2LVx1MDAzZWRldiwgcmVzKTtcbiYjNDM7XHRyZXR1cm4gcmVzLVx1MDAzZWJhc2VhZGRyO1xuJiM0MztcbiYjNDM7ZXJyX2lvbWFwOlxuJiM0MztcdHBjaV9yZWxlYXNlX3JlZ2lvbihwZGV2LCBiYXIpO1xuJiM0MztlcnJfcmVnaW9uOlxuJiM0MztcdHBjaW1fYWRkcl9kZXZyZXNfZnJlZShyZXMpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gSU9NRU1fRVJSX1BUUihyZXQpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7XG4mIzQzO1xuIC8qKlxuICAqIHBjaW1faW91bm1hcF9yZWdpb24gLSBVbm1hcCBhbmQgcmVsZWFzZSBhIFBDSSBCQVJcbiAgKiBAcGRldjogUENJIGRldmljZSB0byBvcGVyYXRlIG9uXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2kuaCBiL2luY2x1ZGUvbGludXgvcGNpLmhcbmluZGV4IDY0YjMwOGI2ZTYxYzEuLmU3YTJlY2UxMzhlYTYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BjaS5oXG5AQCAtMjUwNiw2ICYjNDM7MjUwNiw4IEBAIGludCBwY2ltX3JlcXVlc3RfYWxsX3JlZ2lvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IGNoYXIgKm5hbWUpO1xuIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwgdW5zaWduZWQgbG9uZyBtYXhsZW4pO1xuIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG4gXHRcdFx0XHRjb25zdCBjaGFyICpuYW1lKTtcbiYjNDM7dm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxuJiM0MztcdFx0XHRcdCAgY29uc3QgY2hhciAqbmFtZSk7XG4gdm9pZCBwY2ltX2lvdW5tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyKTtcbiB2b2lkIHBjaW1faW91bm1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdm9pZCBfX2lvbWVtICphZGRyKTtcbiB2b2lkIF9faW9tZW0gKiBjb25zdCAqcGNpbV9pb21hcF90YWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG5kaWZmIC0tZ2l0IGEvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmMgYi9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuY1xuaW5kZXggMjhjNTVjNWEyZDJlZi4uNWRhMGFjMWVkNDA3MSAxMDA2NDRcbi0tLSBhL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuY1xuQEAgLTE5MjYsNyAmIzQzOzE5MjYsNyBAQCBzdGF0aWMgaW50IGF6eF9maXJzdF9pbml0KHN0cnVjdCBhenggKmNoaXApXG4gXHRpZiAoY2hpcC1cdTAwM2Vkcml2ZXJfdHlwZSA9PSBBWlhfRFJJVkVSX1pIQU9YSU5IRE1JKVxuIFx0XHRidXMtXHUwMDNlcG9sbGluZ19tb2RlID0gMTtcbiBcbi1cdGJ1cy1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtJQ0ggSEQgYXVkaW9cJiMzNDspO1xuJiM0MztcdGJ1cy1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0lDSCBIRCBhdWRpb1wmIzM0Oyk7XG4gXHRpZiAoSVNfRVJSKGJ1cy1cdTAwM2VyZW1hcF9hZGRyKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoYnVzLVx1MDAzZXJlbWFwX2FkZHIpO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hZDE4ODkuYyBiL3NvdW5kL3BjaS9hZDE4ODkuY1xuaW5kZXggZjRlYzQwNGMwZDE1YS4uYTI1NzBhMTQ4ZjYwNiAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hZDE4ODkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2FkMTg4OS5jXG5AQCAtODA0LDcgJiM0Mzs4MDQsNyBAQCBzbmRfYWQxODg5X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXG4gXHRjaGlwLVx1MDAzZWlycSA9IC0xO1xuIFxuIFx0LyogKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uICovXG4tXHRjaGlwLVx1MDAzZWlvYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgY2FyZC1cdTAwM2Vkcml2ZXIpO1xuJiM0MztcdGNoaXAtXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtXHUwMDNlZHJpdmVyKTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2Vpb2Jhc2UpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZWlvYmFzZSk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F0aWl4cC5jIGIvc291bmQvcGNpL2F0aWl4cC5jXG5pbmRleCBiNzM4Mjk1YjQxZTVkLi5iOWZjZDkxM2ZiYzZmIDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2F0aWl4cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYXRpaXhwLmNcbkBAIC0xNTMxLDcgJiM0MzsxNTMxLDcgQEAgc3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuIFx0Y2hpcC1cdTAwM2VjYXJkID0gY2FyZDtcbiBcdGNoaXAtXHUwMDNlcGNpID0gcGNpO1xuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbi1cdGNoaXAtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7QVRJIElYUCBBQzk3XCYjMzQ7KTtcbiYjNDM7XHRjaGlwLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7QVRJIElYUCBBQzk3XCYjMzQ7KTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2VyZW1hcF9hZGRyKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2VyZW1hcF9hZGRyKTtcbiBcdGNoaXAtXHUwMDNlYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYyBiL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xuaW5kZXggOGFhZWIxOTdjZTQ1OC4uZjY1NDgwNDgzOTk2NiAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jXG5AQCAtMTE2Myw3ICYjNDM7MTE2Myw3IEBAIHN0YXRpYyBpbnQgc25kX2F0aWl4cF9pbml0KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbiBcdGNoaXAtXHUwMDNlY2FyZCA9IGNhcmQ7XG4gXHRjaGlwLVx1MDAzZXBjaSA9IHBjaTtcbiBcdGNoaXAtXHUwMDNlaXJxID0gLTE7XG4tXHRjaGlwLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0FUSSBJWFAgTUM5N1wmIzM0Oyk7XG4mIzQzO1x0Y2hpcC1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0FUSSBJWFAgTUM5N1wmIzM0Oyk7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcikpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcik7XG4gXHRjaGlwLVx1MDAzZWFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuY1xuaW5kZXggYmIwMjk0NTc5M2YwYy4uYTc3M2U4YTU2YzBjNSAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcbkBAIC0xNjAsNyAmIzQzOzE2MCw3IEBAIHNuZF92b3J0ZXhfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbiBcdC8vICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvblxuIFx0Ly8gR2V0IE1NSU8gYXJlYVxuIFx0Ly9cbi1cdGNoaXAtXHUwMDNlbW1pbyA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpO1xuJiM0MztcdGNoaXAtXHUwMDNlbW1pbyA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBLQlVJTERfTU9ETkFNRSk7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlbW1pbykpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlbW1pbyk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jIGIvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jXG5pbmRleCA2MGE4NzMyMmVhZTQ5Li4yN2ZkNDVkNjQ3MDE5IDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmNcbkBAIC0yMjQsNyAmIzQzOzIyNCw3IEBAIHN0YXRpYyBpbnQgc25kX2F3Ml9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbiBcbiBcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xuLVx0Y2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7QXVkaW93ZXJrMlwmIzM0Oyk7XG4mIzQzO1x0Y2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtBdWRpb3dlcmsyXCYjMzQ7KTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlaW9iYXNlX3ZpcnQpO1xuIFx0Y2hpcC1cdTAwM2Vpb2Jhc2VfcGh5cyA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9idDg3eC5jIGIvc291bmQvcGNpL2J0ODd4LmNcbmluZGV4IDM4M2RlZjFmMmFmNzQuLjU1ZjZiNzliZDllYWMgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvYnQ4N3guY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2J0ODd4LmNcbkBAIC02OTAsNyAmIzQzOzY5MCw3IEBAIHN0YXRpYyBpbnQgc25kX2J0ODd4X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXHRjaGlwLVx1MDAzZWlycSA9IC0xO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VyZWdfbG9jayk7XG4gXG4tXHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0J0ODd4IGF1ZGlvXCYjMzQ7KTtcbiYjNDM7XHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7QnQ4N3ggYXVkaW9cJiMzNDspO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZW1taW8pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZW1taW8pO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczQyODEuYyBiL3NvdW5kL3BjaS9jczQyODEuY1xuaW5kZXggZjUxZjRiYjYzNzY2NC4uZjAwMGRjYTk0ZTRmZCAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9jczQyODEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2NzNDI4MS5jXG5AQCAtMTI5OCwxMiAmIzQzOzEyOTgsMTIgQEAgc3RhdGljIGludCBzbmRfY3M0MjgxX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXHR9XG4gXHRjaGlwLVx1MDAzZWR1YWxfY29kZWMgPSBkdWFsX2NvZGVjO1xuIFxuLVx0Y2hpcC1cdTAwM2ViYTAgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0NTNDI4MVwmIzM0Oyk7XG4mIzQzO1x0Y2hpcC1cdTAwM2ViYTAgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7Q1M0MjgxXCYjMzQ7KTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2ViYTApKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZWJhMCk7XG4gXHRjaGlwLVx1MDAzZWJhMF9hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XG4gXG4tXHRjaGlwLVx1MDAzZWJhMSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMSwgXCYjMzQ7Q1M0MjgxXCYjMzQ7KTtcbiYjNDM7XHRjaGlwLVx1MDAzZWJhMSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAxLCBcJiMzNDtDUzQyODFcJiMzNDspO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZWJhMSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlYmExKTtcbiBcdGNoaXAtXHUwMDNlYmExX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAxKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3M1NTMwLmMgYi9zb3VuZC9wY2kvY3M1NTMwLmNcbmluZGV4IDI5MmI2NWFhNzU4YTkuLjdjZjc0ZTc3OTcwY2QgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvY3M1NTMwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9jczU1MzAuY1xuQEAgLTkxLDcgJiM0Mzs5MSw3IEBAIHN0YXRpYyBpbnQgc25kX2NzNTUzMF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFx0Y2hpcC1cdTAwM2VjYXJkID0gY2FyZDtcbiBcdGNoaXAtXHUwMDNlcGNpID0gcGNpO1xuIFxuLVx0bWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtDUzU1MzBcJiMzNDspO1xuJiM0MztcdG1lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtDUzU1MzBcJiMzNDspO1xuIFx0aWYgKElTX0VSUihtZW0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihtZW0pO1xuIFx0Y2hpcC1cdTAwM2VwY2lfYmFzZSA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuYyBiL3NvdW5kL3BjaS9sb2xhL2xvbGEuY1xuaW5kZXggMzRhM2JhMTdkZWI0Yi4uZWMyOTM4YzRiNTMyMyAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2xvbGEvbG9sYS5jXG5AQCAtNTc5LDE0ICYjNDM7NTc5LDE0IEBAIHN0YXRpYyBpbnQgbG9sYV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpLCBpbnQgZGV2KVxuIFx0XHRjaGlwLVx1MDAzZXNhbXBsZV9yYXRlX21pbiA9IDE2MDAwO1xuIFx0fVxuIFxuLVx0aW9tZW0gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpO1xuJiM0MztcdGlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpO1xuIFx0aWYgKElTX0VSUihpb21lbSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGlvbWVtKTtcbiBcbiBcdGNoaXAtXHUwMDNlYmFyWzBdLnJlbWFwX2FkZHIgPSBpb21lbTtcbiBcdGNoaXAtXHUwMDNlYmFyWzBdLmFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbiBcbi1cdGlvbWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTtcbiYjNDM7XHRpb21lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTtcbiBcdGlmIChJU19FUlIoaW9tZW0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihpb21lbSk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcbmluZGV4IGQ4YmJlZGJjOGZmNjguLjliMzc1OGNhMWQwMDQgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jXG5AQCAtNjUxMSw3ICYjNDM7NjUxMSw3IEBAIHN0YXRpYyBpbnQgc25kX2hkc3BtX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXG4gXHRwY2lfc2V0X21hc3RlcihoZHNwbS1cdTAwM2VwY2kpO1xuIFxuLVx0aGRzcG0tXHUwMDNlaW9iYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtoZHNwbVwmIzM0Oyk7XG4mIzQzO1x0aGRzcG0tXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O2hkc3BtXCYjMzQ7KTtcbiBcdGlmIChJU19FUlIoaGRzcG0tXHUwMDNlaW9iYXNlKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoaGRzcG0tXHUwMDNlaW9iYXNlKTtcbiBcbmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jIGIvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuY1xuaW5kZXggZjViNTYwNDY1NzA2Zi4uMzJmYzBmNTQ0OTI4MiAxMDA2NDRcbi0tLSBhL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmNcbkBAIC00MSw3ICYjNDM7NDEsNyBAQCBzdGF0aWMgaW50IGxvb25nc29uX2kyc19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRpMnMtXHUwMDNlZGV2ID0gZGV2O1xuIFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIGkycyk7XG4gXG4tXHRpMnMtXHUwMDNlcmVnX2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7XG4mIzQzO1x0aTJzLVx1MDAzZXJlZ19iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7XG4gXHRpZiAoSVNfRVJSKGkycy1cdTAwM2VyZWdfYmFzZSkpIHtcbiBcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2lvbWFwX3JlZ2lvbiBmYWlsZWRcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihpMnMtXHUwMDNlcmVnX2Jhc2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7U05EJiMzNDssCiAgICAmIzM0O1NORF9QQ0kmIzM0OywKICAgICYjMzQ7U05EX0hEQV9JTlRFTCYjMzQ7LAogICAgJiMzNDtTTkRfQUQxODg5JiMzNDssCiAgICAmIzM0O1NORF9BVElJWFAmIzM0OywKICAgICYjMzQ7U05EX0FUSUlYUF9NT0RFTSYjMzQ7LAogICAgJiMzNDtTTkRfQVcyJiMzNDssCiAgICAmIzM0O1NORF9CVDg3WCYjMzQ7LAogICAgJiMzNDtTTkRfTE9MQSYjMzQ7LAogICAgJiMzNDtTTkRfSERTUE0mIzM0OywKICAgICYjMzQ7U05EX1NPQyYjMzQ7LAogICAgJiMzNDtTTkRfU09DX0xPT05HU09OX0kyU19QQ0kmIzM0OywKICAgICYjMzQ7Q09NUElMRV9URVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGNpbV9pb3JlbWFwX3JlZ2lvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCB3aGljaCB3cmFwcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZyZXMuIEl0IHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIHRoZW0gdG8gdXNlIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgdXNpbmcgSU8gbWFwcGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgUENJIGFuZCBkcml2ZXIgcHJvYmluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZhNmY0YzYwMjRhOTllYTY3MjMxNzZmZDI1NGM1Mjk3ZjY5NTVlZDAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAxNToxNToyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2RldnJlcy5jIGIvZHJpdmVycy9wY2kvZGV2cmVzLmMKaW5kZXggZjA3NWU3ODgxYzNhNi4uZmFhNjc4ZmY1YjU2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvZGV2cmVzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wY2kvZGV2cmVzLmMKQEAgLTYzOSw2ICYjNDM7NjM5LDU1IEBAIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsCiB9CiBFWFBPUlRfU1lNQk9MKHBjaW1faW9tYXBfcmVnaW9uKTsKIAomIzQzOy8qKgomIzQzOyAqIHBjaW1faW9yZW1hcF9yZWdpb24gLSBSZXF1ZXN0IGFuZCBpb3JlbWFwIGEgUENJIEJBUgomIzQzOyAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yCiYjNDM7ICogQGJhcjogSW5kZXggb2YgYSBCQVIgdG8gbWFwCiYjNDM7ICogQG5hbWU6IE5hbWUgb2YgdGhlIGRyaXZlciByZXF1ZXN0aW5nIHRoZSByZXNvdXJjZQomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogX19pb21lbSBwb2ludGVyIG9uIHN1Y2Nlc3MsIGFuIElPTUVNX0VSUl9QVFIgb24gZmFpbHVyZS4KJiM0MzsgKgomIzQzOyAqIE1hcHBpbmcgYW5kIHJlZ2lvbiB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIElmCiYjNDM7ICogZGVzaXJlZCwgcmVsZWFzZSBtYW51YWxseSBvbmx5IHdpdGggcGNpbV9pb3VubWFwX3JlZ2lvbigpLgomIzQzOyAqLwomIzQzO3ZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwKJiM0MzsJCQkJICBjb25zdCBjaGFyICpuYW1lKQomIzQzO3sKJiM0MzsJaW50IHJldDsKJiM0MzsJc3RydWN0IHBjaW1fYWRkcl9kZXZyZXMgKnJlczsKJiM0MzsKJiM0MzsJaWYgKCFwY2lfYmFyX2luZGV4X2lzX3ZhbGlkKGJhcikpCiYjNDM7CQlyZXR1cm4gSU9NRU1fRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsKJiM0MzsJcmVzID0gcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KTsKJiM0MzsJaWYgKCFyZXMpCiYjNDM7CQlyZXR1cm4gSU9NRU1fRVJSX1BUUigtRU5PTUVNKTsKJiM0MzsKJiM0MzsJcmVzLSZndDt0eXBlID0gUENJTV9BRERSX0RFVlJFU19UWVBFX1JFR0lPTl9NQVBQSU5HOwomIzQzOwlyZXMtJmd0O2JhciA9IGJhcjsKJiM0MzsKJiM0MzsJcmV0ID0gcGNpX3JlcXVlc3RfcmVnaW9uKHBkZXYsIGJhciwgbmFtZSk7CiYjNDM7CWlmIChyZXQgIT0gMCkKJiM0MzsJCWdvdG8gZXJyX3JlZ2lvbjsKJiM0MzsKJiM0MzsJcmVzLSZndDtiYXNlYWRkciA9IHBjaV9pb3JlbWFwX2JhcihwZGV2LCBiYXIpOwomIzQzOwlpZiAoIXJlcy0mZ3Q7YmFzZWFkZHIpIHsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIGVycl9pb21hcDsKJiM0MzsJfQomIzQzOwomIzQzOwlkZXZyZXNfYWRkKCZhbXA7cGRldi0mZ3Q7ZGV2LCByZXMpOwomIzQzOwlyZXR1cm4gcmVzLSZndDtiYXNlYWRkcjsKJiM0MzsKJiM0MztlcnJfaW9tYXA6CiYjNDM7CXBjaV9yZWxlYXNlX3JlZ2lvbihwZGV2LCBiYXIpOwomIzQzO2Vycl9yZWdpb246CiYjNDM7CXBjaW1fYWRkcl9kZXZyZXNfZnJlZShyZXMpOwomIzQzOwomIzQzOwlyZXR1cm4gSU9NRU1fRVJSX1BUUihyZXQpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKHBjaW1faW9yZW1hcF9yZWdpb24pOwomIzQzOwogLyoqCiAgKiBwY2ltX2lvdW5tYXBfcmVnaW9uIC0gVW5tYXAgYW5kIHJlbGVhc2UgYSBQQ0kgQkFSCiAgKiBAcGRldjogUENJIGRldmljZSB0byBvcGVyYXRlIG9uCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS5oIGIvaW5jbHVkZS9saW51eC9wY2kuaAppbmRleCA2NGIzMDhiNmU2MWMxLi5lN2EyZWNlMTM4ZWE2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGNpLmgKQEAgLTI1MDYsNiAmIzQzOzI1MDYsOCBAQCBpbnQgcGNpbV9yZXF1ZXN0X2FsbF9yZWdpb25zKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBjaGFyICpuYW1lKTsKIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwgdW5zaWduZWQgbG9uZyBtYXhsZW4pOwogdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwKIAkJCQljb25zdCBjaGFyICpuYW1lKTsKJiM0Mzt2b2lkIF9faW9tZW0gKnBjaW1faW9yZW1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsCiYjNDM7CQkJCSAgY29uc3QgY2hhciAqbmFtZSk7CiB2b2lkIHBjaW1faW91bm1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIpOwogdm9pZCBwY2ltX2lvdW5tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHZvaWQgX19pb21lbSAqYWRkcik7CiB2b2lkIF9faW9tZW0gKiBjb25zdCAqcGNpbV9pb21hcF90YWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7CmRpZmYgLS1naXQgYS9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuYyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jCmluZGV4IDI4YzU1YzVhMmQyZWYuLjVkYTBhYzFlZDQwNzEgMTAwNjQ0Ci0tLSBhL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jCkBAIC0xOTI2LDcgJiM0MzsxOTI2LDcgQEAgc3RhdGljIGludCBhenhfZmlyc3RfaW5pdChzdHJ1Y3QgYXp4ICpjaGlwKQogCWlmIChjaGlwLSZndDtkcml2ZXJfdHlwZSA9PSBBWlhfRFJJVkVSX1pIQU9YSU5IRE1JKQogCQlidXMtJmd0O3BvbGxpbmdfbW9kZSA9IDE7CiAKLQlidXMtJmd0O3JlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7SUNIIEhEIGF1ZGlvJiMzNDspOwomIzQzOwlidXMtJmd0O3JlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtJQ0ggSEQgYXVkaW8mIzM0Oyk7CiAJaWYgKElTX0VSUihidXMtJmd0O3JlbWFwX2FkZHIpKQogCQlyZXR1cm4gUFRSX0VSUihidXMtJmd0O3JlbWFwX2FkZHIpOwogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYWQxODg5LmMgYi9zb3VuZC9wY2kvYWQxODg5LmMKaW5kZXggZjRlYzQwNGMwZDE1YS4uYTI1NzBhMTQ4ZjYwNiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2FkMTg4OS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9hZDE4ODkuYwpAQCAtODA0LDcgJiM0Mzs4MDQsNyBAQCBzbmRfYWQxODg5X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpCiAJY2hpcC0mZ3Q7aXJxID0gLTE7CiAKIAkvKiAoMSkgUENJIHJlc291cmNlIGFsbG9jYXRpb24gKi8KLQljaGlwLSZndDtpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtJmd0O2RyaXZlcik7CiYjNDM7CWNoaXAtJmd0O2lvYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBjYXJkLSZndDtkcml2ZXIpOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7aW9iYXNlKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2hpcC0mZ3Q7aW9iYXNlKTsKIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F0aWl4cC5jIGIvc291bmQvcGNpL2F0aWl4cC5jCmluZGV4IGI3MzgyOTViNDFlNWQuLmI5ZmNkOTEzZmJjNmYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdGlpeHAuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYXRpaXhwLmMKQEAgLTE1MzEsNyAmIzQzOzE1MzEsNyBAQCBzdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpCiAJY2hpcC0mZ3Q7Y2FyZCA9IGNhcmQ7CiAJY2hpcC0mZ3Q7cGNpID0gcGNpOwogCWNoaXAtJmd0O2lycSA9IC0xOwotCWNoaXAtJmd0O3JlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QVRJIElYUCBBQzk3JiMzNDspOwomIzQzOwljaGlwLSZndDtyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QVRJIElYUCBBQzk3JiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7cmVtYXBfYWRkcikpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O3JlbWFwX2FkZHIpOwogCWNoaXAtJmd0O2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYyBiL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYwppbmRleCA4YWFlYjE5N2NlNDU4Li5mNjU0ODA0ODM5OTY2IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jCkBAIC0xMTYzLDcgJiM0MzsxMTYzLDcgQEAgc3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKQogCWNoaXAtJmd0O2NhcmQgPSBjYXJkOwogCWNoaXAtJmd0O3BjaSA9IHBjaTsKIAljaGlwLSZndDtpcnEgPSAtMTsKLQljaGlwLSZndDtyZW1hcF9hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0FUSSBJWFAgTUM5NyYjMzQ7KTsKJiM0MzsJY2hpcC0mZ3Q7cmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0FUSSBJWFAgTUM5NyYjMzQ7KTsKIAlpZiAoSVNfRVJSKGNoaXAtJmd0O3JlbWFwX2FkZHIpKQogCQlyZXR1cm4gUFRSX0VSUihjaGlwLSZndDtyZW1hcF9hZGRyKTsKIAljaGlwLSZndDthZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYwppbmRleCBiYjAyOTQ1NzkzZjBjLi5hNzczZThhNTZjMGM1IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmMKQEAgLTE2MCw3ICYjNDM7MTYwLDcgQEAgc25kX3ZvcnRleF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKQogCS8vICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbgogCS8vIEdldCBNTUlPIGFyZWEKIAkvLwotCWNoaXAtJmd0O21taW8gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIEtCVUlMRF9NT0ROQU1FKTsKJiM0MzsJY2hpcC0mZ3Q7bW1pbyA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBLQlVJTERfTU9ETkFNRSk7CiAJaWYgKElTX0VSUihjaGlwLSZndDttbWlvKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2hpcC0mZ3Q7bW1pbyk7CiAKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYyBiL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYwppbmRleCA2MGE4NzMyMmVhZTQ5Li4yN2ZkNDVkNjQ3MDE5IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jCkBAIC0yMjQsNyAmIzQzOzIyNCw3IEBAIHN0YXRpYyBpbnQgc25kX2F3Ml9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLAogCWNoaXAtJmd0O2lycSA9IC0xOwogCiAJLyogKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uICovCi0JY2hpcC0mZ3Q7aW9iYXNlX3ZpcnQgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QXVkaW93ZXJrMiYjMzQ7KTsKJiM0MzsJY2hpcC0mZ3Q7aW9iYXNlX3ZpcnQgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtBdWRpb3dlcmsyJiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7aW9iYXNlX3ZpcnQpKQogCQlyZXR1cm4gUFRSX0VSUihjaGlwLSZndDtpb2Jhc2VfdmlydCk7CiAJY2hpcC0mZ3Q7aW9iYXNlX3BoeXMgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9idDg3eC5jIGIvc291bmQvcGNpL2J0ODd4LmMKaW5kZXggMzgzZGVmMWYyYWY3NC4uNTVmNmI3OWJkOWVhYyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2J0ODd4LmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2J0ODd4LmMKQEAgLTY5MCw3ICYjNDM7NjkwLDcgQEAgc3RhdGljIGludCBzbmRfYnQ4N3hfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwKIAljaGlwLSZndDtpcnEgPSAtMTsKIAlzcGluX2xvY2tfaW5pdCgmYW1wO2NoaXAtJmd0O3JlZ19sb2NrKTsKIAotCWNoaXAtJmd0O21taW8gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QnQ4N3ggYXVkaW8mIzM0Oyk7CiYjNDM7CWNoaXAtJmd0O21taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtCdDg3eCBhdWRpbyYjMzQ7KTsKIAlpZiAoSVNfRVJSKGNoaXAtJmd0O21taW8pKQogCQlyZXR1cm4gUFRSX0VSUihjaGlwLSZndDttbWlvKTsKIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNDI4MS5jIGIvc291bmQvcGNpL2NzNDI4MS5jCmluZGV4IGY1MWY0YmI2Mzc2NjQuLmYwMDBkY2E5NGU0ZmQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jczQyODEuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvY3M0MjgxLmMKQEAgLTEyOTgsMTIgJiM0MzsxMjk4LDEyIEBAIHN0YXRpYyBpbnQgc25kX2NzNDI4MV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLAogCX0KIAljaGlwLSZndDtkdWFsX2NvZGVjID0gZHVhbF9jb2RlYzsKIAotCWNoaXAtJmd0O2JhMCA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtDUzQyODEmIzM0Oyk7CiYjNDM7CWNoaXAtJmd0O2JhMCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0NTNDI4MSYjMzQ7KTsKIAlpZiAoSVNfRVJSKGNoaXAtJmd0O2JhMCkpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O2JhMCk7CiAJY2hpcC0mZ3Q7YmEwX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKIAotCWNoaXAtJmd0O2JhMSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMSwgJiMzNDtDUzQyODEmIzM0Oyk7CiYjNDM7CWNoaXAtJmd0O2JhMSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAxLCAmIzM0O0NTNDI4MSYjMzQ7KTsKIAlpZiAoSVNfRVJSKGNoaXAtJmd0O2JhMSkpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O2JhMSk7CiAJY2hpcC0mZ3Q7YmExX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAxKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczU1MzAuYyBiL3NvdW5kL3BjaS9jczU1MzAuYwppbmRleCAyOTJiNjVhYTc1OGE5Li43Y2Y3NGU3Nzk3MGNkIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvY3M1NTMwLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2NzNTUzMC5jCkBAIC05MSw3ICYjNDM7OTEsNyBAQCBzdGF0aWMgaW50IHNuZF9jczU1MzBfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwKIAljaGlwLSZndDtjYXJkID0gY2FyZDsKIAljaGlwLSZndDtwY2kgPSBwY2k7CiAKLQltZW0gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7Q1M1NTMwJiMzNDspOwomIzQzOwltZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtDUzU1MzAmIzM0Oyk7CiAJaWYgKElTX0VSUihtZW0pKQogCQlyZXR1cm4gUFRSX0VSUihtZW0pOwogCWNoaXAtJmd0O3BjaV9iYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvbG9sYS9sb2xhLmMgYi9zb3VuZC9wY2kvbG9sYS9sb2xhLmMKaW5kZXggMzRhM2JhMTdkZWI0Yi4uZWMyOTM4YzRiNTMyMyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2xvbGEvbG9sYS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9sb2xhL2xvbGEuYwpAQCAtNTc5LDE0ICYjNDM7NTc5LDE0IEBAIHN0YXRpYyBpbnQgbG9sYV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpLCBpbnQgZGV2KQogCQljaGlwLSZndDtzYW1wbGVfcmF0ZV9taW4gPSAxNjAwMDsKIAl9CiAKLQlpb21lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgRFJWTkFNRSk7CiYjNDM7CWlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpOwogCWlmIChJU19FUlIoaW9tZW0pKQogCQlyZXR1cm4gUFRSX0VSUihpb21lbSk7CiAKIAljaGlwLSZndDtiYXJbMF0ucmVtYXBfYWRkciA9IGlvbWVtOwogCWNoaXAtJmd0O2JhclswXS5hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7CiAKLQlpb21lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMiwgRFJWTkFNRSk7CiYjNDM7CWlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDIsIERSVk5BTUUpOwogCWlmIChJU19FUlIoaW9tZW0pKQogCQlyZXR1cm4gUFRSX0VSUihpb21lbSk7CiAKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jCmluZGV4IGQ4YmJlZGJjOGZmNjguLjliMzc1OGNhMWQwMDQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYwpAQCAtNjUxMSw3ICYjNDM7NjUxMSw3IEBAIHN0YXRpYyBpbnQgc25kX2hkc3BtX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsCiAKIAlwY2lfc2V0X21hc3RlcihoZHNwbS0mZ3Q7cGNpKTsKIAotCWhkc3BtLSZndDtpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7aGRzcG0mIzM0Oyk7CiYjNDM7CWhkc3BtLSZndDtpb2Jhc2UgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtoZHNwbSYjMzQ7KTsKIAlpZiAoSVNfRVJSKGhkc3BtLSZndDtpb2Jhc2UpKQogCQlyZXR1cm4gUFRSX0VSUihoZHNwbS0mZ3Q7aW9iYXNlKTsKIApkaWZmIC0tZ2l0IGEvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYyBiL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmMKaW5kZXggZjViNTYwNDY1NzA2Zi4uMzJmYzBmNTQ0OTI4MiAxMDA2NDQKLS0tIGEvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jCkBAIC00MSw3ICYjNDM7NDEsNyBAQCBzdGF0aWMgaW50IGxvb25nc29uX2kyc19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJaTJzLSZndDtkZXYgPSBkZXY7CiAJcGNpX3NldF9kcnZkYXRhKHBkZXYsIGkycyk7CiAKLQlpMnMtJmd0O3JlZ19iYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgMCwgRFJJVkVSX05BTUUpOwomIzQzOwlpMnMtJmd0O3JlZ19iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7CiAJaWYgKElTX0VSUihpMnMtJmd0O3JlZ19iYXNlKSkgewogCQlkZXZfZXJyKGRldiwgJiMzNDtpb21hcF9yZWdpb24gZmFpbGVkXG4mIzM0Oyk7CiAJCXJldHVybiBQVFJfRVJSKGkycy0mZ3Q7cmVnX2Jhc2UpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTcyCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNjM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIGludHJvZHVjaW5nIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBpbiBgZHJpdmVycy9wY2kvZGV2cmVzLmNgLCBhbmQgaXQmIzM5O3MgcmVwbGFjaW5nIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gYSBidW5jaCBvZiBzb3VuZCBkcml2ZXJzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZS4gTG9va2luZyBhdCB0aGUgY29kZSwgYHBjaW1faW9yZW1hcF9yZWdpb25gIHNlZW1zIHRvIGJlIGEgY29tcG9zaXRlIGZ1bmN0aW9uIOKAkyBpdCBjYWxscyBgcGNpbV9hZGRyX2RldnJlc19hbGxvY2AsIGBwY2lfcmVxdWVzdF9yZWdpb25gLCBgcGNpX2lvcmVtYXBfYmFyYCwgYW5kIHRoZW4gYGRldnJlc19hZGRgLiBUaGUgb2xkZXIgZnVuY3Rpb24sIGBwY2ltX2lvbWFwX3JlZ2lvbmAsIHVzZWQgYHBjaV9pb21hcGAsIHdoaWNoIGhhbmRsZWQgYm90aCBJTyBhbmQgbWVtb3J5IHJlZ2lvbnMuIFRoZSBrZXkgZGlmZmVyZW5jZSBoZXJlIGlzIHRoYXQgYHBjaW1faW9yZW1hcF9yZWdpb25gICpzcGVjaWZpY2FsbHkqIHVzZXMgYHBjaV9pb3JlbWFwX2JhcmAsIHNvIGl0JiMzOTtzIG9ubHkgZm9yIG1lbW9yeSByZWdpb25zLCBub3QgSU8uCgpUaGUgbW9kaWZpZWQgc291bmQgZHJpdmVycyBhcmUgYWxsIGxpc3RlZC4gSXQgbG9va3MgbGlrZSBxdWl0ZSBhIGZldyBkcml2ZXJzIGFyZSBhZmZlY3RlZCwgaW5jbHVkaW5nIHNvbWUgY29tbW9uIG9uZXMgbGlrZSBgaW50ZWwuY2AuCgpBIG5ldyBjb3JlIFBDSSBmdW5jdGlvbi4uLiB0aGF0IG1ha2VzIG1lIHRoaW5rIGFib3V0IGZ1enppbmcgaXQuIEdpdmVuIHRoZSBudW1iZXIgb2YgZHJpdmVycyB1c2luZyBpdCwgYW5kIHRoYXQgaXQmIzM5O3MgaW4gdGhlIFBDSSBjb3JlLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGNvbnNpZGVyYXRpb24uIEJ1dCB3YWl0LCBpdCYjMzk7cyBlc3NlbnRpYWxseSBhIHdyYXBwZXIgYXJvdW5kIGBwY2lfaW9yZW1hcF9iYXJgIGFuZCBgcGNpX3JlcXVlc3RfcmVnaW9uYCB1c2luZyBkZXZyZXMuIFNvLCBpdCYjMzk7cyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UgYmVjYXVzZSBpdCBlbmZvcmNlcyBtZW1vcnkgbWFwcGluZywgdW5saWtlIHRoZSBmbGV4aWJpbGl0eSBgcGNpX2lvbWFwYCBwcm92aWRlZC4gV2UgY2FuIHRyaWdnZXIgaXQgZHVyaW5nIGRyaXZlciBwcm9iZSAtIG1ha2VzIHNlbnNlLgoKU28gdGhlIG5leHQgcXVlc3Rpb24gaXMsIGNhbiB3ZSBmdXp6IGl0PyBJZiB3ZSBjYW4gdHJpZ2dlciB0aGUgcHJvYmUgb2Ygb25lIG9mIHRoZXNlIGRyaXZlcnMsIHdlIGNhbiBleGVyY2lzZSB0aGUgY29kZS4gSG1tLCBjYW4gd2UgdHJpZ2dlciBgc25kX2hkYV9pbnRlbGAgb3IgYW5vdGhlciBvbmU/IFllcywgd2UgY2FuIHVzZSBzeXprYWxsZXImIzM5O3MgcHNldWRvLXN5c2NhbGxzIGZvciBQQ0kuIFRoYXQmIzM5O3MgZ29vZCwgYHN5el9wY2lfc2V0dXBgIHNob3VsZCBhbGxvdyB1cyB0byBnZXQgYSBkcml2ZXIgdG8gcHJvYmUhCgpSaWdodCwgYHBjaW1faW9yZW1hcF9yZWdpb25gIGlzIGEgYnJhbmQgbmV3IEFQSS4gVGltZSB0byBjaGVjayBgZHJpdmVycy9wY2kvZGV2cmVzLmNgIGZvciBtb3JlIGluZm8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpbV9pb3JlbWFwX3JlZ2lvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9kZXZyZXMuYz02NDA9RVhQT1JUX1NZTUJPTChwY2ltX2lvbWFwX3JlZ2lvbik7XG4tLVxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjQyLS8qKlxuZHJpdmVycy9wY2kvZGV2cmVzLmM6NjQzOiAqIHBjaW1faW9yZW1hcF9yZWdpb24gLSBSZXF1ZXN0IGFuZCBpb3JlbWFwIGEgUENJIEJBUlxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjQ0LSAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yXG4tLVxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjUyLSAqL1xuZHJpdmVycy9wY2kvZGV2cmVzLmM6NjUzOnZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTY1NC1cdFx0XHRcdCAgY29uc3QgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02ODgtfVxuZHJpdmVycy9wY2kvZGV2cmVzLmM6Njg5OkVYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7XG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02OTAtXG4tLVxuaW5jbHVkZS9saW51eC9wY2kuaD0yNTA3PXZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG5pbmNsdWRlL2xpbnV4L3BjaS5oLTI1MDgtXHRcdFx0XHRjb25zdCBjaGFyICpuYW1lKTtcbmluY2x1ZGUvbGludXgvcGNpLmg6MjUwOTp2b2lkIF9faW9tZW0gKnBjaW1faW9yZW1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG5pbmNsdWRlL2xpbnV4L3BjaS5oLTI1MTAtXHRcdFx0XHQgIGNvbnN0IGNoYXIgKm5hbWUpO1xuLS1cbnNvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jPTE4OTI9c3RhdGljIGludCBhenhfZmlyc3RfaW5pdChzdHJ1Y3QgYXp4ICpjaGlwKVxuLS1cbnNvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jLTE5MjgtXG5zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuYzoxOTI5Olx0YnVzLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7SUNIIEhEIGF1ZGlvXCYjMzQ7KTtcbnNvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jLTE5MzAtXHRpZiAoSVNfRVJSKGJ1cy1cdTAwM2VyZW1hcF9hZGRyKSlcbi0tXG5zb3VuZC9wY2kvYWQxODg5LmM9Nzg3PXNuZF9hZDE4ODlfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbi0tXG5zb3VuZC9wY2kvYWQxODg5LmMtODA2LVx0LyogKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uICovXG5zb3VuZC9wY2kvYWQxODg5LmM6ODA3Olx0Y2hpcC1cdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgY2FyZC1cdTAwM2Vkcml2ZXIpO1xuc291bmQvcGNpL2FkMTg4OS5jLTgwOC1cdGlmIChJU19FUlIoY2hpcC1cdTAwM2Vpb2Jhc2UpKVxuLS1cbnNvdW5kL3BjaS9hdGlpeHAuYz0xNTIwPXN0YXRpYyBpbnQgc25kX2F0aWl4cF9pbml0KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbi0tXG5zb3VuZC9wY2kvYXRpaXhwLmMtMTUzMy1cdGNoaXAtXHUwMDNlaXJxID0gLTE7XG5zb3VuZC9wY2kvYXRpaXhwLmM6MTUzNDpcdGNoaXAtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtBVEkgSVhQIEFDOTdcJiMzNDspO1xuc291bmQvcGNpL2F0aWl4cC5jLTE1MzUtXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcikpXG4tLVxuc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jPTExNTI9c3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuLS1cbnNvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYy0xMTY1LVx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbnNvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYzoxMTY2Olx0Y2hpcC1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0FUSSBJWFAgTUM5N1wmIzM0Oyk7XG5zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMtMTE2Ny1cdGlmIChJU19FUlIoY2hpcC1cdTAwM2VyZW1hcF9hZGRyKSlcbi0tXG5zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jPTEzNz1zbmRfdm9ydGV4X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXG4tLVxuc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYy0xNjItXHQvL1xuc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYzoxNjM6XHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpO1xuc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYy0xNjQtXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlbW1pbykpXG4tLVxuc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jPTIwMz1zdGF0aWMgaW50IHNuZF9hdzJfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcbi0tXG5zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMtMjI2LVx0LyogKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uICovXG5zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmM6MjI3Olx0Y2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtBdWRpb3dlcmsyXCYjMzQ7KTtcbnNvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYy0yMjgtXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlaW9iYXNlX3ZpcnQpKVxuLS1cbnNvdW5kL3BjaS9idDg3eC5jPTY3OD1zdGF0aWMgaW50IHNuZF9idDg3eF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuLS1cbnNvdW5kL3BjaS9idDg3eC5jLTY5Mi1cbnNvdW5kL3BjaS9idDg3eC5jOjY5MzpcdGNoaXAtXHUwMDNlbW1pbyA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtCdDg3eCBhdWRpb1wmIzM0Oyk7XG5zb3VuZC9wY2kvYnQ4N3guYy02OTQtXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlbW1pbykpXG4tLVxuc291bmQvcGNpL2NzNDI4MS5jPTEyODA9c3RhdGljIGludCBzbmRfY3M0MjgxX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4tLVxuc291bmQvcGNpL2NzNDI4MS5jLTEzMDAtXG5zb3VuZC9wY2kvY3M0MjgxLmM6MTMwMTpcdGNoaXAtXHUwMDNlYmEwID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0NTNDI4MVwmIzM0Oyk7XG5zb3VuZC9wY2kvY3M0MjgxLmMtMTMwMi1cdGlmIChJU19FUlIoY2hpcC1cdTAwM2ViYTApKVxuLS1cbnNvdW5kL3BjaS9jczQyODEuYy0xMzA1LVxuc291bmQvcGNpL2NzNDI4MS5jOjEzMDY6XHRjaGlwLVx1MDAzZWJhMSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAxLCBcJiMzNDtDUzQyODFcJiMzNDspO1xuc291bmQvcGNpL2NzNDI4MS5jLTEzMDctXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlYmExKSlcbi0tXG5zb3VuZC9wY2kvY3M1NTMwLmM9Nzc9c3RhdGljIGludCBzbmRfY3M1NTMwX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4tLVxuc291bmQvcGNpL2NzNTUzMC5jLTkzLVxuc291bmQvcGNpL2NzNTUzMC5jOjk0Olx0bWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0NTNTUzMFwmIzM0Oyk7XG5zb3VuZC9wY2kvY3M1NTMwLmMtOTUtXHRpZiAoSVNfRVJSKG1lbSkpXG4tLVxuc291bmQvcGNpL2xvbGEvbG9sYS5jPTUzNz1zdGF0aWMgaW50IGxvbGFfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSwgaW50IGRldilcbi0tXG5zb3VuZC9wY2kvbG9sYS9sb2xhLmMtNTgxLVxuc291bmQvcGNpL2xvbGEvbG9sYS5jOjU4MjpcdGlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpO1xuc291bmQvcGNpL2xvbGEvbG9sYS5jLTU4My1cdGlmIChJU19FUlIoaW9tZW0pKVxuLS1cbnNvdW5kL3BjaS9sb2xhL2xvbGEuYy01ODgtXG5zb3VuZC9wY2kvbG9sYS9sb2xhLmM6NTg5Olx0aW9tZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMiwgRFJWTkFNRSk7XG5zb3VuZC9wY2kvbG9sYS9sb2xhLmMtNTkwLVx0aWYgKElTX0VSUihpb21lbSkpXG4tLVxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYz02NDUxPXN0YXRpYyBpbnQgc25kX2hkc3BtX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4tLVxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYy02NTEzLVxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYzo2NTE0Olx0aGRzcG0tXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O2hkc3BtXCYjMzQ7KTtcbnNvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMtNjUxNS1cdGlmIChJU19FUlIoaGRzcG0tXHUwMDNlaW9iYXNlKSlcbi0tXG5zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jPTIyPXN0YXRpYyBpbnQgbG9vbmdzb25faTJzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jLTQzLVxuc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYzo0NDpcdGkycy1cdTAwM2VyZWdfYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGRldiwgMCwgRFJJVkVSX05BTUUpO1xuc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYy00NS1cdGlmIChJU19FUlIoaTJzLVx1MDAzZXJlZ19iYXNlKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MzIKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiAzMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTmV3IFBDSSBpb3JlbWFwIEFQSSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBuZXcgZnVuY3Rpb24sIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCwgaW50cm9kdWNlZCBpbiBgZHJpdmVycy9wY2kvZGV2cmVzLmNgLiAgSXQmIzM5O3MgYmFzaWNhbGx5IGEgZGV2cmVzLW1hbmFnZWQgd3JhcHBlciBhcm91bmQgYHBjaV9pb3JlbWFwX2JhcmAgYW5kIGBwY2lfcmVxdWVzdF9yZWdpb25gLiAgSXQmIzM5O3MgaW1wb3J0YW50IGJlY2F1c2UgaXQmIzM5O3MgYSBjb3JlIFBDSSBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIHNldmVyYWwgZHJpdmVyIHByb2JlIGZ1bmN0aW9ucy4gIERlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZyBwb3RlbnRpYWwg4oCTIGEgbmV3IGZ1bmN0aW9uIGxpa2UgdGhpcyBjb3VsZCBoYXJib3Igc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIHRoYXQgd2VyZW4mIzM5O3QgY2F1Z2h0IGluIGluaXRpYWwgdGVzdGluZy4KCk15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBpdHNlbGYuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24gbmVlZGVkIHRvIGJ1aWxkIGFuZCB0ZXN0IHRoaXMuIExvb2tzIGxpa2UgYENPTkZJR19QQ0lgIGlzIHRoZSBjcml0aWNhbCByZXF1aXJlbWVudCB0byBnZXQgYGRyaXZlcnMvcGNpL2RldnJlcy5jYCBlbmFibGVkLgoKRm9yIHRoZSBkcml2ZXIgc2lkZSBvZiB0aGluZ3MsIEkmIzM5O2xsIG5lZWQgc29tZSBleGFtcGxlcyB0aGF0IHVzZSB0aGlzIGZ1bmN0aW9uLiBTb3VuZCBkcml2ZXJzIHNlZW0gbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gZ29pbmcgdG8gZW5hYmxlIGEgZmV3IG9mIHRob3NlLiBTbyBmYXIgSSYjMzk7bGwgY2hlY2sgb24gYENPTkZJR19TTkRfSERBX0lOVEVMYCwgYENPTkZJR19TTkRfQUQxODg5YCwgYENPTkZJR19TTkRfQVRJSVhQYCwgYENPTkZJR19TTkRfQVRJSVhQX01PREVNYCwgYENPTkZJR19TTkRfQVU4ODEwYCwgYENPTkZJR19TTkRfQVU4ODIwYCwgYENPTkZJR19TTkRfQVU4ODMwYCwgYENPTkZJR19TTkRfQVcyYCwgYENPTkZJR19TTkRfQlQ4N1hgLCBgQ09ORklHX1NORF9DUzQyODFgLCBgQ09ORklHX1NORF9DUzU1MzBgLCBgQ09ORklHX1NORF9MT0xBYCwgYENPTkZJR19TTkRfSERTUE1gLCBgQ09ORklHX1NORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZXNlIGRyaXZlcnMgdG8gdmVyaWZ5IGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX0hEQV9JTlRFTCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9oZGEvY29kZWNzL2hkbWkvS2NvbmZpZz0zMz1jb25maWcgU05EX0hEQV9DT0RFQ19IRE1JX0lOVEVMXG4tLVxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWctNDAtXG5zb3VuZC9oZGEvY29kZWNzL2hkbWkvS2NvbmZpZzo0MTpjb25maWcgU05EX0hEQV9JTlRFTF9IRE1JX1NJTEVOVF9TVFJFQU1cbnNvdW5kL2hkYS9jb2RlY3MvaGRtaS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtFbmFibGUgU2lsZW50IFN0cmVhbSBhbHdheXMgZm9yIEhETUlcJiMzNDtcbi0tXG5zb3VuZC9oZGEvY29udHJvbGxlcnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWc6Mjpjb25maWcgU05EX0hEQV9JTlRFTFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0hEIEF1ZGlvIFBDSVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfQUQxODg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTExPWlmIFNORF9QQ0lcbnNvdW5kL3BjaS9LY29uZmlnLTEyLVxuc291bmQvcGNpL0tjb25maWc6MTM6Y29uZmlnIFNORF9BRDE4ODlcbnNvdW5kL3BjaS9LY29uZmlnLTE0LVx0dHJpc3RhdGUgXCYjMzQ7QW5hbG9nIERldmljZXMgQUQxODg5XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9BVElJWFAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWc9NjU9Y29uZmlnIFNORF9BU0lIUElcbi0tXG5zb3VuZC9wY2kvS2NvbmZpZy03Ni1cbnNvdW5kL3BjaS9LY29uZmlnOjc3OmNvbmZpZyBTTkRfQVRJSVhQXG5zb3VuZC9wY2kvS2NvbmZpZy03OC1cdHRyaXN0YXRlIFwmIzM0O0FUSSBJWFAgQUM5NyBDb250cm9sbGVyXCYjMzQ7XG4tLVxuc291bmQvcGNpL0tjb25maWctODctXG5zb3VuZC9wY2kvS2NvbmZpZzo4ODpjb25maWcgU05EX0FUSUlYUF9NT0RFTVxuc291bmQvcGNpL0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDtBVEkgSVhQIE1vZGVtXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9BVTg4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTg4PWNvbmZpZyBTTkRfQVRJSVhQX01PREVNXG4tLVxuc291bmQvcGNpL0tjb25maWctOTctXG5zb3VuZC9wY2kvS2NvbmZpZzo5ODpjb25maWcgU05EX0FVODgxMFxuc291bmQvcGNpL0tjb25maWctOTktXHR0cmlzdGF0ZSBcJiMzNDtBdXJlYWwgQWR2YW50YWdlXCYjMzQ7XG4tLVxuc291bmQvcGNpL0tjb25maWctMTEyLVxuc291bmQvcGNpL0tjb25maWc6MTEzOmNvbmZpZyBTTkRfQVU4ODIwXG5zb3VuZC9wY2kvS2NvbmZpZy0xMTQtXHR0cmlzdGF0ZSBcJiMzNDtBdXJlYWwgVm9ydGV4XCYjMzQ7XG4tLVxuc291bmQvcGNpL0tjb25maWctMTI2LVxuc291bmQvcGNpL0tjb25maWc6MTI3OmNvbmZpZyBTTkRfQVU4ODMwXG5zb3VuZC9wY2kvS2NvbmZpZy0xMjgtXHR0cmlzdGF0ZSBcJiMzNDtBdXJlYWwgVm9ydGV4IDJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwODUKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGF1ZGlvIGxhbmRzY2FwZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaW52b2x2ZXMgYSBxdWljayBtZW50YWwgc2NhbiBvZiB0aG9zZSBmYW1pbGlhciBzb3VuZCBkcml2ZXJzOiBgU05EX0FXMmAsIGBTTkRfQlQ4N1hgLCBgU05EX0NTNDI4MWAsIGBTTkRfQ1M1NTMwYCwgYFNORF9MT0xBYCwgYW5kIGBTTkRfSERTUE1gLiAgSSYjMzk7bSBpbW1lZGlhdGVseSBjYXRhbG9naW5nIHRoZW0gaW4gbXkgbWluZCwgcHJvYmFibHkgY3Jvc3MtcmVmZXJlbmNpbmcgdGhlbSBhZ2FpbnN0IGtub3duIGFyY2hpdGVjdHVyZXMgb3IgcGFzdCBleHBlcmllbmNlcyB3aXRoIHNpbWlsYXIgaGFyZHdhcmUuICBFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gbWVudGFsbHkgbWFwIHRoZXNlIHRvIG15IGludGVybmFsIGRhdGFiYXNlIG9mIGF1ZGlvIGRldmljZXMgYW5kIHRoZWlyIHR5cGljYWwgYmVoYXZpb3JzLiBBcmUgdGhlcmUgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3M/IEFueSBzdGFuZG91dCBwZXJmb3JtZXJzPyAgSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIHNvbWUgaW5pdGlhbCBhc3N1bXB0aW9ucyBhYm91dCB0aGVpciBpbnRlbmRlZCB1c2UgYmFzZWQgb24gdGhlaXIgbmFtZXMuIExldCYjMzk7cyBzZWUgd2hhdCBuZWVkcyBhIGNsb3NlciBsb29rLCBzaGFsbCB3ZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9BVzImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWc9MTI3PWNvbmZpZyBTTkRfQVU4ODMwXG4tLVxuc291bmQvcGNpL0tjb25maWctMTQxLVxuc291bmQvcGNpL0tjb25maWc6MTQyOmNvbmZpZyBTTkRfQVcyXG5zb3VuZC9wY2kvS2NvbmZpZy0xNDMtXHR0cmlzdGF0ZSBcJiMzNDtFbWFnaWMgQXVkaW93ZXJrIDJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9CVDg3WCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9wY2kvS2NvbmZpZz0xNTY9Y29uZmlnIFNORF9BWlQzMzI4XG4tLVxuc291bmQvcGNpL0tjb25maWctMTc2LVxuc291bmQvcGNpL0tjb25maWc6MTc3OmNvbmZpZyBTTkRfQlQ4N1hcbnNvdW5kL3BjaS9LY29uZmlnLTE3OC1cdHRyaXN0YXRlIFwmIzM0O0J0ODd4IEF1ZGlvIENhcHR1cmVcJiMzNDtcbi0tXG5zb3VuZC9wY2kvS2NvbmZpZy0xODctXG5zb3VuZC9wY2kvS2NvbmZpZzoxODg6Y29uZmlnIFNORF9CVDg3WF9PVkVSQ0xPQ0tcbnNvdW5kL3BjaS9LY29uZmlnLTE4OS1cdGJvb2wgXCYjMzQ7QnQ4N3ggQXVkaW8gb3ZlcmNsb2NraW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfQ1M0MjgxJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTIyOD1jb25maWcgU05EX09YWUdFTlxuLS1cbnNvdW5kL3BjaS9LY29uZmlnLTI1My1cbnNvdW5kL3BjaS9LY29uZmlnOjI1NDpjb25maWcgU05EX0NTNDI4MVxuc291bmQvcGNpL0tjb25maWctMjU1LVx0dHJpc3RhdGUgXCYjMzQ7Q2lycnVzIExvZ2ljIChTb3VuZCBGdXNpb24pIENTNDI4MVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX0NTNTUzMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9wY2kvS2NvbmZpZz0yNzk9Y29uZmlnIFNORF9DUzQ2WFhfTkVXX0RTUFxuLS1cbnNvdW5kL3BjaS9LY29uZmlnLTI4Ny1cbnNvdW5kL3BjaS9LY29uZmlnOjI4ODpjb25maWcgU05EX0NTNTUzMFxuc291bmQvcGNpL0tjb25maWctMjg5LVx0dHJpc3RhdGUgXCYjMzQ7Q1M1NTMwIEF1ZGlvXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODMyCgkJCQkJCQlvdXRwdXQ6IDY3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipRdWljayBBdWRpbyBEcml2ZXIgQ2hlY2sqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCBtZSBydW4gdGhyb3VnaCBhIHF1aWNrIG1lbnRhbCBjaGVja2xpc3Qgb24gdGhlc2UgYXVkaW8gZHJpdmVyczogYFNORF9MT0xBYCwgYFNORF9IRFNQTWAsIGFuZCBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYC4gSSBrbm93IHRoZXNlIGFyZSBkaWZmZXJlbnQsIHNvIEkmIzM5O20gbGlrZWx5IGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLCBkZXBlbmRlbmNpZXMsIG9yIG92ZXJsYXAsIGFuZCBtYWtpbmcgc3VyZSB0aGF0IEkmIzM5O20gdXAgdG8gZGF0ZSBvbiB0aGVzZSBkcml2ZXJzIHRvIGlkZW50aWZ5IGlmIHRoZXJlIGFyZSBhbnkgbmV3IHVwZGF0ZXMgYW5kIGVuc3VyZSB0aGV5JiMzOTtyZSBhcHByb3ByaWF0ZWx5IHNldC4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBkb2N1bWVudCBteSBmaW5kaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9MT0xBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTY5OD1jb25maWcgU05EX0tPUkcxMjEyXG4tLVxuc291bmQvcGNpL0tjb25maWctNzA2LVxuc291bmQvcGNpL0tjb25maWc6NzA3OmNvbmZpZyBTTkRfTE9MQVxuc291bmQvcGNpL0tjb25maWctNzA4LVx0dHJpc3RhdGUgXCYjMzQ7RGlnaWdyYW0gTG9sYVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX0hEU1BNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTYyMT1jb21tZW50IFwmIzM0O0RvbiYjMzk7dCBmb3JnZXQgdG8gYWRkIGJ1aWx0LWluIGZpcm13YXJlcyBmb3IgSERTUCBkcml2ZXJcJiMzNDtcbi0tXG5zb3VuZC9wY2kvS2NvbmZpZy02MjMtXG5zb3VuZC9wY2kvS2NvbmZpZzo2MjQ6Y29uZmlnIFNORF9IRFNQTVxuc291bmQvcGNpL0tjb25maWctNjI1LVx0dHJpc3RhdGUgXCYjMzQ7Uk1FIEhhbW1lcmZhbGwgRFNQIE1BREkvUmF5REFUL0FJT1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnPTQ9Y29uZmlnIFNORF9TT0NfTE9PTkdTT05fQ0FSRFxuLS1cbnNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnLTE1LVxuc291bmQvc29jL2xvb25nc29uL0tjb25maWc6MTY6Y29uZmlnIFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSVxuc291bmQvc29jL2xvb25nc29uL0tjb25maWctMTctXHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBJMlMtUENJIERldmljZSBEcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzODkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHBjaW1faW9yZW1hcF9yZWdpb25gIENoYW5nZSBhbmQgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyB0aGlzIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBmdW5jdGlvbiBpcyB0aGUgbmV3IGhvdG5lc3MsIHJlcGxhY2luZyBgcGNpbV9pb21hcF9yZWdpb25gIGluIGEgYnVuY2ggb2Ygc291bmQgZHJpdmVycy4gVGhlIGtleSB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IG1hbmRhdGVzIHRoZSB1c2Ugb2YgYHBjaV9pb3JlbWFwX2JhcmAgaW5zdGVhZCBvZiBgcGNpX2lvbWFwYC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBzaGlmdCwgbGltaXRpbmcgdXMgdG8gTUVNIEJBUnMsIG5vdCBJTyBCQVJzLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgdGhvdWdodDogVGhpcyBpcyByaXBlIGZvciBmdXp6aW5nLgoKTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBjaGFuZ2UgbmVjZXNzaXRhdGVzIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbiBmb3IgdGhlIGZ1bmN0aW9uIGl0c2VsZi4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZS4gSSBrbm93IEkmIzM5O2xsIG5lZWQgYFBDSWAsIG9idmlvdXNseSwgYW5kIHRoZW4gYFNORF9QQ0lgIHRvIHRhcmdldCBzb3VuZCBkZXZpY2VzLCBidXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIGBTTkRfUENJYCBpcyAqc3RyaWN0bHkqIHJlcXVpcmVkLCBvciBpZiB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBqdXN0IHRoZSBkcml2ZXIgY29uZmlncy4gVGhhdCYjMzk7cyBhIGdvb2QgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9wY2kvS2NvbmZpZy0zLVxuc291bmQvcGNpL0tjb25maWc6NDptZW51Y29uZmlnIFNORF9QQ0lcbnNvdW5kL3BjaS9LY29uZmlnLTUtXHRib29sIFwmIzM0O1BDSSBzb3VuZCBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODE3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIFNvdW5kIERyaXZlciBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgY29uZmlybWVkLiBXZSBkZWZpbml0ZWx5IG5lZWQgYFNORF9QQ0lgLiBUaGF0JiMzOTtzIGEgZ2l2ZW4uIE5vdywgbGV0JiMzOTtzIHBpdm90IGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYFNORF9IREFfSU5URUxgLiBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIG5vdCBpbXBsaWNpdGx5IGRlcGVuZGluZyBvbiBhbnkgb3RoZXIgbW9kdWxlcyBvciBmdW5jdGlvbmFsaXRpZXMgdGhhdCBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgb2J2aW91cy4gR290dGEgbWFrZSBzdXJlIHdlIGNvdmVyIGFsbCBvdXIgYmFzZXMgYW5kIHRoYXQgdGhlIHN5c3RlbSBpcyBzZXQgdXAgcHJvcGVybHkgdG8gdXRpbGl6ZSB0aGUgYEhEQWAgSW50ZWwgYXVkaW8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKlNORF9IREFfSU5URUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvaGRhL2NvbW1vbi9LY29uZmlnPTY3PWNvbmZpZyBTTkRfSERBX0NUTF9ERVZfSURcbnNvdW5kL2hkYS9jb21tb24vS2NvbmZpZy02OC1cdGJvb2wgXCYjMzQ7VXNlIHRoZSBkZXZpY2UgaWRlbnRpZmllciBmaWVsZCBmb3IgY29udHJvbHNcJiMzNDtcbnNvdW5kL2hkYS9jb21tb24vS2NvbmZpZzo2OTpcdGRlcGVuZHMgb24gU05EX0hEQV9JTlRFTFxuc291bmQvaGRhL2NvbW1vbi9LY29uZmlnLTcwLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA5NAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgRGVwZW5kZW5jaWVzIG9mIFNORF9IREFfSU5URUwqKgoKQWxyaWdodCwgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlciB3aXRoIHRoaXMsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIGFic29sdXRlbHkgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZS4gVGhpcyB3aG9sZSB0aGluZyBoaW5nZXMgb24gYXVkaW8sIGFuZCBgU05EX0hEQV9JTlRFTGAgaXMgYSBjb3JlIGNvbXBvbmVudCB0aGVyZSwgc28gbGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBkZXBlbmRlbmN5IGFuYWx5c2lzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMsIGRyaXZlcnMsIG9yIGV2ZW4gc3lzdGVtIGNvbmZpZ3VyYXRpb25zIGBTTkRfSERBX0lOVEVMYCByZWxpZXMgb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBXaXRob3V0IHRoYXQga25vd2xlZGdlLCBJIGNvdWxkIGJlIGNoYXNpbmcgbXkgdGFpbC4gSSBrbm93IG15IGZpZWxkLiBUaGlzIGlzIGltcG9ydGFudC4gQSBwcm9wZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgZ3VpZGUgdGhlIG5leHQgY291cnNlIG9mIGFjdGlvbi4gSSB3aWxsIG5lZWQgdG8gYmUgbWV0aWN1bG91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9IREFfSU5URUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc9MzM9Y29uZmlnIFNORF9IREFfQ09ERUNfSERNSV9JTlRFTFxuLS1cbnNvdW5kL2hkYS9jb2RlY3MvaGRtaS9LY29uZmlnLTQwLVxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc6NDE6Y29uZmlnIFNORF9IREFfSU5URUxfSERNSV9TSUxFTlRfU1RSRUFNXG5zb3VuZC9oZGEvY29kZWNzL2hkbWkvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7RW5hYmxlIFNpbGVudCBTdHJlYW0gYWx3YXlzIGZvciBIRE1JXCYjMzQ7XG4tLVxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbnNvdW5kL2hkYS9jb250cm9sbGVycy9LY29uZmlnOjI6Y29uZmlnIFNORF9IREFfSU5URUxcbnNvdW5kL2hkYS9jb250cm9sbGVycy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtIRCBBdWRpbyBQQ0lcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0ODgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVjb2RpbmcgdGhlIGBTTkRfSERBX0lOVEVMYCBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGd1dHMgb2YgdGhlIHNvdW5kIHN1YnN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgU05EX0hEQV9JTlRFTGAuIEEgcXVpY2sgY2hlY2sgb2YgYHNvdW5kL2hkYS9jb250cm9sbGVycy9LY29uZmlnYCBpcyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gSSBhbHJlYWR5IGtub3cgdGhlIHVzdWFsIHN1c3BlY3RzLCBvZiBjb3Vyc2UsIGJ1dCBpdCYjMzk7cyBhbHdheXMgd29ydGggYSBxdWljayBjb25maXJtYXRpb24gYW5kIHRvIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBub3RoaW5nIEkmIzM5O3ZlIGZvcmdvdHRlbiBvciBhbnkgc3VidGxlIGNoYW5nZXMgZnJvbSB0aGUgbGFzdCB0aW1lIEkgbG9va2VkLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgbGluY2hwaW4gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGNvbnN0cmFpbnRzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGluZ3MgdGhhdCBtaWdodCBpbmRpcmVjdGx5IGFmZmVjdCBvciBpbnRlcmFjdCB3aXRoIGBTTkRfSERBX0lOVEVMYCAtIGRlcGVuZGVuY2llcyBvbiBwYXJ0aWN1bGFyIGhhcmR3YXJlIGZlYXR1cmVzLCBvciBzcGVjaWZpYyBjaGlwc2V0IGZhbWlsaWVzLCBvciBldmVuIG90aGVyIGF1ZGlvIGRyaXZlcnMgdGhhdCBtaWdodCBoYXZlIGNvbmZsaWN0cy4gR290dGEgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlLiBNeSBmb2N1cyBpcyBvbiBiZWluZyBwcmVjaXNlIGFuZCBub3QgbWlzc2luZyBhbnkgZGV0YWlscy4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byBkZWNpZGUgd2hhdCwgaWYgYW55LCBmb2xsb3cgdXAgdGVzdHMgbmVlZCB0byBiZSBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU05EX0hEQV9JTlRFTFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7SEQgQXVkaW8gUENJXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgNTpcdFx0c2VsZWN0IFNORF9IREFcbiAgIDY6XHRcdHNlbGVjdCBTTkRfSU5URUxfRFNQX0NPTkZJR1xuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgSW50ZWwgXCYjMzQ7SGlnaCBEZWZpbml0aW9uXG4gICA5Olx0XHQgIEF1ZGlvXCYjMzQ7IChBemFsaWEpIGFuZCBpdHMgY29tcGF0aWJsZSBkZXZpY2VzLlxuICAxMDpcdFxuICAxMTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBIRC1hdWRpbyBjb250cm9sbGVyLiAgRG9uJiMzOTt0IGZvcmdldFxuICAxMjpcdFx0ICB0byBjaG9vc2UgdGhlIGFwcHJvcHJpYXRlIEhELWF1ZGlvIGNvZGVjIG9wdGlvbnMuXG4gIDEzOlx0XG4gIDE0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMTU6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWhkYS1pbnRlbC5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgU05EX0hEQV9URUdSQVxuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7TlZJRElBIFRlZ3JhIEhEIEF1ZGlvXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkFcbiAgMjA6XHRcdHNlbGVjdCBTTkRfSERBXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDc1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgQXVkaW8gRHJpdmVyIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSB0aGluayB0aGlzIHRocm91Z2guIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYFNORF9IREFfSU5URUxgIGRyaXZlciBoYXMgYSBkaXJlY3QgZGVwZW5kZW5jeSBvbiB0aGUgYFBDSWAgc3Vic3lzdGVtLiBNYWtlcyBzZW5zZSwgZ2l2ZW4gdGhhdCB0aGUgSW50ZWwgSGlnaCBEZWZpbml0aW9uIEF1ZGlvIGNvbnRyb2xsZXIgaXMgdHlwaWNhbGx5IGNvbm5lY3RlZCB2aWEgUENJLiBOb3csIG15IG5leHQgaW1tZWRpYXRlIHRob3VnaHQsIGJlY2F1c2UgSSBhbHdheXMgbGlrZSB0byBtYWtlIHN1cmUgSSBjb3ZlciBhbGwgYmFzZXMsIGlzIHRvIGNvbnNpZGVyIGBTTkRfQUQxODg5YC4gSSBuZWVkIHRvIGFzayBteXNlbGYsIGRvZXMgKml0KiBkZXBlbmQgb24gYFBDSWAgYXMgd2VsbD8gSSBuZWVkIHRvIGtub3csIGlzIHRoaXMgYWxzbyBhIFBDSS1hdHRhY2hlZCBkZXZpY2UsIG9yIGlzIGl0IGhhbmRsZWQgZGlmZmVyZW50bHksIGVpdGhlciBkaXJlY3RseSBmcm9tIHRoZSBjaGlwc2V0IG9yIHRocm91Z2ggYW5vdGhlciBjb25uZWN0aW9uPyBUaGUgZGVwZW5kZW5jeSBhbmFseXNpcyBpc24mIzM5O3QgY29tcGxldGUgdW50aWwgSSBjb25maXJtIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0IyBBTFNBIFBDSSBkcml2ZXJzXG4gICAzOlx0XG4gICA0Olx0bWVudWNvbmZpZyBTTkRfUENJXG4gICA1Olx0XHRib29sIFwmIzM0O1BDSSBzb3VuZCBkZXZpY2VzXCYjMzQ7XG4gICA2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgNzpcdFx0ZGVmYXVsdCB5XG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFN1cHBvcnQgZm9yIHNvdW5kIGRldmljZXMgY29ubmVjdGVkIHZpYSB0aGUgUENJIGJ1cy5cbiAgMTA6XHRcbiAgMTE6XHRpZiBTTkRfUENJXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFNORF9BRDE4ODlcbiAgMTQ6XHRcdHRyaXN0YXRlIFwmIzM0O0FuYWxvZyBEZXZpY2VzIEFEMTg4OVwmIzM0O1xuICAxNTpcdFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgaW50ZWdyYXRlZCBBQzk3IHNvdW5kXG4gIDE4Olx0XHQgIGRldmljZSBmb3VuZCBpbiBwYXJ0aWN1bGFyIG9uIHRoZSBIZXdsZXR0LVBhY2thcmQgW0JDSl0teHh4MFxuICAxOTpcdFx0ICBjbGFzcyBQQS1SSVNDIHdvcmtzdGF0aW9ucywgdXNpbmcgdGhlIEFEMTgxOSBjb2RlYy5cbiAgMjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1NzYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXVkaW8gRHJpdmVyIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBhdWRpbyBkcml2ZXIgb3B0aW9ucyBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgYFNORF9QQ0lgIGhhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIGBQQ0lgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHlvdSBjYW4mIzM5O3QgaGF2ZSBQQ0kgYXVkaW8gd2l0aG91dCwgd2VsbCwgUENJLiBNb3Zpbmcgb24sIEkgc2VlIGEgbG9uZyBsaXN0IG9mIHNwZWNpZmljIGF1ZGlvIGRyaXZlcnMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBlbmFibGluZzogYFNORF9IREFfSU5URUxgLCBgU05EX0FEMTg4OWAsIGBTTkRfQVRJSVhQYCwgYFNORF9BVElJWFBfTU9ERU1gLCBgU05EX0FVODgxMGAsIGBTTkRfQVU4ODIwYCwgYFNORF9BVTg4MzBgLCBgU05EX0FXMmAsIGBTTkRfQlQ4N1hgLCBgU05EX0NTNDI4MWAsIGBTTkRfQ1M1NTMwYCwgYFNORF9MT0xBYCwgYFNORF9IRFNQTWAuIEEgZ29vZCBzZWxlY3Rpb24sIGNvdmVyaW5nIGEgbG90IG9mIHRoZSBjb21tb24gaGFyZHdhcmUgb3V0IHRoZXJlLgoKTm93LCBhIHF1aWNrIHNjYW4gZG93biB0aGUgbGlzdC4uLndhaXQgYSBzZWNvbmQuIFdoYXQmIzM5O3MgdGhpcz8gYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAuLi5kb2VzIHRoYXQgb25lIGhhdmUgKmFub3RoZXIqIGRlcGVuZGVuY3kgSSBuZWVkIHRvIGNoZWNrPyBUaGF0JiMzOTtzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgYWx3YXlzIGNhdGNoZXMgeW91IG91dCBpZiB5b3UgZG9uJiMzOTt0IGtlZXAgYW4gZXllIG9uIGl0LiBHb3R0YSBtYWtlIHN1cmUgSSB0cmFjayBkb3duIHdoYXQgdGhhdCBkZXBlbmRzIG9uIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdG1lbnUgXCYjMzQ7TG9vbmdzb25cJiMzNDtcbiAgIDM6XHRcbiAgIDQ6XHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9DQVJEXG4gICA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBTb3VuZCBDYXJkIERyaXZlclwmIzM0O1xuICAgNjpcdFx0ZGVwZW5kcyBvbiBMT09OR0FSQ0ggfHwgQ09NUElMRV9URVNUXG4gICA3Olx0XHRzZWxlY3QgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJIGlmIFBDSVxuICAgODpcdFx0c2VsZWN0IFNORF9TT0NfTE9PTkdTT05fSTJTX1BMQVRGT1JNIGlmIE9GXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFNheSBZIG9yIE0gaWYgeW91IHdhbnQgdG8gYWRkIHN1cHBvcnQgZm9yIFNvQyBhdWRpbyB1c2luZ1xuICAxMTpcdFx0ICBsb29uZ3NvbiBJMlMgY29udHJvbGxlci5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgVGhlIGRyaXZlciBhZGQgc3VwcG9ydCBmb3IgQUxTQSBTb0MgQXVkaW8gc3VwcG9ydCB1c2luZ1xuICAxNDpcdFx0ICBsb29uZ3NvbiBJMlMgY29udHJvbGxlci5cbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJXG4gIDE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBJMlMtUENJIERldmljZSBEcml2ZXJcJiMzNDtcbiAgMTg6XHRcdGRlcGVuZHMgb24gTE9PTkdBUkNIIHx8IENPTVBJTEVfVEVTVFxuICAxOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMjA6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM3MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNvdW5kIERyaXZlciBDb25maWd1cmF0aW9uIGZvciBMb29uZ0FyY2ggU3lzdGVtcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIGFuZCBpdCBoaW5nZXMgb24gYSBmZXcga2V5IGZhY3RvcnM6IHRoZSBgTE9PTkdBUkNIYCBhcmNoaXRlY3R1cmUgYW5kIHdoZXRoZXIgd2UmIzM5O3JlIGluIGEgYENPTVBJTEVfVEVTVGAgZW52aXJvbm1lbnQuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggUENJIGhlcmUsIHRvbywgb2YgY291cnNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBzaW1wbHkgZW5hYmxlIGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgIGFuZCBgQ09NUElMRV9URVNUYCB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIG91dGNvbWU/IFByb2JhYmx5LgoKVGhlIGNyaXRpY2FsIHBpZWNlLCB0aG91Z2gsIGlzIHdoZXRoZXIgYHBjaW1faW9yZW1hcF9yZWdpb25gIGlzIGFjY2Vzc2libGUuIEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHRoYXQgb3VyIGRyaXZlciYjMzk7cyBwcm9iZSByb3V0aW5lIGNhbiByZWFjaCBpdC4gR29vZCwgaXQgbG9va3MgbGlrZSB0aGF0JiMzOTtzIHRoZSBjYXNlLiBJdCBhcHBlYXJzIHRvIGJlIGV4cG9ydGVkIGFuZCByZWFjaGFibGUgdmlhIHRoZSBkcml2ZXIgcHJvYmUuCgpTbywgYHBjaW1faW9yZW1hcF9yZWdpb25gIHNlZW1zIHRvIGJlIHRoZSBmb2N1cyBoZXJlLCB0aGUgbHluY2hwaW4uIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGl0cyBkZWZpbml0aW9uIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlOyBJJiMzOTtsbCBuZWVkIHRvIG9wZW4gdGhlIGBkcml2ZXJzL3BjaS9kZXZyZXMuY2AgZmlsZSBhbmQgaGF2ZSBhIGxvb2sgYXQgYHBjaW1faW9yZW1hcF9yZWdpb25gIHRoZXJlIHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvZGV2cmVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY0MDpcdEVYUE9SVF9TWU1CT0wocGNpbV9pb21hcF9yZWdpb24pO1xuIDY0MTpcdFxuIDY0MjpcdC8qKlxuIDY0MzpcdCAqIHBjaW1faW9yZW1hcF9yZWdpb24gLSBSZXF1ZXN0IGFuZCBpb3JlbWFwIGEgUENJIEJBUlxuIDY0NDpcdCAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yXG4gNjQ1Olx0ICogQGJhcjogSW5kZXggb2YgYSBCQVIgdG8gbWFwXG4gNjQ2Olx0ICogQG5hbWU6IE5hbWUgb2YgdGhlIGRyaXZlciByZXF1ZXN0aW5nIHRoZSByZXNvdXJjZVxuIDY0NzpcdCAqXG4gNjQ4Olx0ICogUmV0dXJuczogX19pb21lbSBwb2ludGVyIG9uIHN1Y2Nlc3MsIGFuIElPTUVNX0VSUl9QVFIgb24gZmFpbHVyZS5cbiA2NDk6XHQgKlxuIDY1MDpcdCAqIE1hcHBpbmcgYW5kIHJlZ2lvbiB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIElmXG4gNjUxOlx0ICogZGVzaXJlZCwgcmVsZWFzZSBtYW51YWxseSBvbmx5IHdpdGggcGNpbV9pb3VubWFwX3JlZ2lvbigpLlxuIDY1MjpcdCAqL1xuIDY1MzpcdHZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbiA2NTQ6XHRcdFx0XHRcdCAgY29uc3QgY2hhciAqbmFtZSlcbiA2NTU6XHR7XG4gNjU2Olx0XHRpbnQgcmV0O1xuIDY1NzpcdFx0c3RydWN0IHBjaW1fYWRkcl9kZXZyZXMgKnJlcztcbiA2NTg6XHRcbiA2NTk6XHRcdGlmICghcGNpX2Jhcl9pbmRleF9pc192YWxpZChiYXIpKVxuIDY2MDpcdFx0XHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRUlOVkFMKTtcbiA2NjE6XHRcbiA2NjI6XHRcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG4gNjYzOlx0XHRpZiAoIXJlcylcbiA2NjQ6XHRcdFx0cmV0dXJuIElPTUVNX0VSUl9QVFIoLUVOT01FTSk7XG4gNjY1Olx0XG4gNjY2Olx0XHRyZXMtXHUwMDNldHlwZSA9IFBDSU1fQUREUl9ERVZSRVNfVFlQRV9SRUdJT05fTUFQUElORztcbiA2Njc6XHRcdHJlcy1cdTAwM2ViYXIgPSBiYXI7XG4gNjY4Olx0XG4gNjY5Olx0XHRyZXQgPSBwY2lfcmVxdWVzdF9yZWdpb24ocGRldiwgYmFyLCBuYW1lKTtcbiA2NzA6XHRcdGlmIChyZXQgIT0gMClcbiA2NzE6XHRcdFx0Z290byBlcnJfcmVnaW9uO1xuIDY3MjpcdFxuIDY3MzpcdFx0cmVzLVx1MDAzZWJhc2VhZGRyID0gcGNpX2lvcmVtYXBfYmFyKHBkZXYsIGJhcik7XG4gNjc0Olx0XHRpZiAoIXJlcy1cdTAwM2ViYXNlYWRkcikge1xuIDY3NTpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDY3NjpcdFx0XHRnb3RvIGVycl9pb21hcDtcbiA2Nzc6XHRcdH1cbiA2Nzg6XHRcbiA2Nzk6XHRcdGRldnJlc19hZGQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJlcyk7XG4gNjgwOlx0XHRyZXR1cm4gcmVzLVx1MDAzZWJhc2VhZGRyO1xuIDY4MTpcdFxuIDY4MjpcdGVycl9pb21hcDpcbiA2ODM6XHRcdHBjaV9yZWxlYXNlX3JlZ2lvbihwZGV2LCBiYXIpO1xuIDY4NDpcdGVycl9yZWdpb246XG4gNjg1Olx0XHRwY2ltX2FkZHJfZGV2cmVzX2ZyZWUocmVzKTtcbiA2ODY6XHRcbiA2ODc6XHRcdHJldHVybiBJT01FTV9FUlJfUFRSKHJldCk7XG4gNjg4Olx0fVxuIDY4OTpcdEVYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTMzCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBhcyBhIG5ldyBjb3JlIEFQSSB0aGF0JiMzOTtzIGJlaW5nIHVzZWQgYWNyb3NzIGEgYnVuY2ggb2Ygc291bmQgZHJpdmVycy4gVGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGZvY3VzIGhlcmUgaXMgZGVmaW5pdGVseSB0aGF0IHN5bWJvbCwgYHBjaW1faW9yZW1hcF9yZWdpb25gLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjb25maWdzIG5lZWRlZCB0byBlbmFibGUgaXQuIEkmIzM5O3ZlIGdvdCBhIGdvb2Qgc3RhcnRpbmcgc2V0OiBgUENJYCwgYFNORF9QQ0lgLCBgU05EX0hEQV9JTlRFTGAsIGBTTkRfQUQxODg5YCwgYFNORF9BVElJWFBgLCBgU05EX0FUSUlYUF9NT0RFTWAsIGBTTkRfQVU4ODEwYCwgYFNORF9BVTg4MjBgLCBgU05EX0FVODgzMGAsIGBTTkRfQVcyYCwgYFNORF9CVDg3WGAsIGBTTkRfQ1M0MjgxYCwgYFNORF9DUzU1MzBgLCBgU05EX0xPTEFgLCBgU05EX0hEU1BNYCwgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAsIGFuZCBgQ09NUElMRV9URVNUYC4gR290dGEgYmUgdGhvcm91Z2gsIHNvIEkmIzM5O2xsIGRvdWJsZSBjaGVjayB0byBzZWUgaWYgdGhvc2UgY292ZXIgZXZlcnl0aGluZy4KCkkga25vdyBgU05EYCBpcyBhIGRlcGVuZGVuY3kgZm9yIGBTTkRfUENJYCDigJMgc3RhbmRhcmQgc3R1ZmYuIEFuZCwgb2YgY291cnNlLCBgU05EX1NPQ2AgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgLiBMZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgZ290Y2hhcyBJJiMzOTttIG1pc3NpbmcuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGtleSBjb25maWd1cmF0aW9ucyBJJiMzOTttIG1pc3NpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfU09DJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTc0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5zb3VuZC9zb2MvS2NvbmZpZy01LVxuc291bmQvc29jL0tjb25maWc6NjptZW51Y29uZmlnIFNORF9TT0NcbnNvdW5kL3NvYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtBTFNBIGZvciBTb0MgYXVkaW8gc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9LY29uZmlnPTI0PWlmIFNORF9TT0NcbnNvdW5kL3NvYy9LY29uZmlnLTI1LVxuc291bmQvc29jL0tjb25maWc6MjY6Y29uZmlnIFNORF9TT0NfQUM5N19CVVNcbnNvdW5kL3NvYy9LY29uZmlnLTI3LVx0Ym9vbFxuc291bmQvc29jL0tjb25maWctMjgtXG5zb3VuZC9zb2MvS2NvbmZpZzoyOTpjb25maWcgU05EX1NPQ19HRU5FUklDX0RNQUVOR0lORV9QQ01cbnNvdW5kL3NvYy9LY29uZmlnLTMwLVx0Ym9vbFxuLS1cbnNvdW5kL3NvYy9LY29uZmlnLTMyLVxuc291bmQvc29jL0tjb25maWc6MzM6Y29uZmlnIFNORF9TT0NfQ09NUFJFU1NcbnNvdW5kL3NvYy9LY29uZmlnLTM0LVx0Ym9vbFxuLS1cbnNvdW5kL3NvYy9LY29uZmlnLTM2LVxuc291bmQvc29jL0tjb25maWc6Mzc6Y29uZmlnIFNORF9TT0NfVE9QT0xPR1lcbnNvdW5kL3NvYy9LY29uZmlnLTM4LVx0Ym9vbFxuLS1cbnNvdW5kL3NvYy9LY29uZmlnLTQwLVxuc291bmQvc29jL0tjb25maWc6NDE6Y29uZmlnIFNORF9TT0NfVE9QT0xPR1lfQlVJTERcbnNvdW5kL3NvYy9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtCdWlsZCB0b3BvbG9neSBjb3JlXCYjMzQ7XG4tLVxuc291bmQvc29jL0tjb25maWctNTEtXG5zb3VuZC9zb2MvS2NvbmZpZzo1Mjpjb25maWcgU05EX1NPQ19UT1BPTE9HWV9LVU5JVF9URVNUXG5zb3VuZC9zb2MvS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBTb0MgdG9wb2xvZ3lcJiMzNDtcbi0tXG5zb3VuZC9zb2MvS2NvbmZpZy02OC1cbnNvdW5kL3NvYy9LY29uZmlnOjY5OmNvbmZpZyBTTkRfU09DX0NBUkRfS1VOSVRfVEVTVFxuc291bmQvc29jL0tjb25maWctNzAtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgU29DIGNhcmRcJiMzNDtcbi0tXG5zb3VuZC9zb2MvS2NvbmZpZy03Ni1cbnNvdW5kL3NvYy9LY29uZmlnOjc3OmNvbmZpZyBTTkRfU09DX1VUSUxTX0tVTklUX1RFU1RcbnNvdW5kL3NvYy9LY29uZmlnLTc4LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIFNvQyB1dGlsc1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9LY29uZmlnLTgzLVxuc291bmQvc29jL0tjb25maWc6ODQ6Y29uZmlnIFNORF9TT0NfT1BTX0tVTklUX1RFU1RcbnNvdW5kL3NvYy9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIFNvQyBvcHNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvS2NvbmZpZy05MC1cbnNvdW5kL3NvYy9LY29uZmlnOjkxOmNvbmZpZyBTTkRfU09DX0FDUElcbnNvdW5kL3NvYy9LY29uZmlnLTkyLVx0dHJpc3RhdGVcbnNvdW5kL3NvYy9LY29uZmlnLTkzLVxuc291bmQvc29jL0tjb25maWc6OTQ6Y29uZmlnIFNORF9TT0NfVVNCXG5zb3VuZC9zb2MvS2NvbmZpZy05NS1cdHRyaXN0YXRlIFwmIzM0O1NvQyBiYXNlZCBVU0IgYXVkaW8gb2ZmbG9hZGluZ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9hZGkvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7QW5hbG9nIERldmljZXNcJiMzNDtcbnNvdW5kL3NvYy9hZGkvS2NvbmZpZy0zLVxuc291bmQvc29jL2FkaS9LY29uZmlnOjQ6Y29uZmlnIFNORF9TT0NfQURJX0FYSV9JMlNcbnNvdW5kL3NvYy9hZGkvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7QVhJLUkyUyBzdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2FkaS9LY29uZmlnLTEwLVxuc291bmQvc29jL2FkaS9LY29uZmlnOjExOmNvbmZpZyBTTkRfU09DX0FESV9BWElfU1BESUZcbnNvdW5kL3NvYy9hZGkvS2NvbmZpZy0xMi1cdHRyaXN0YXRlIFwmIzM0O0FYSS1TUERJRiBzdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnPTI9bWVudSBcJiMzNDtBTURcJiMzNDtcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0zLVxuc291bmQvc29jL2FtZC9LY29uZmlnOjQ6Y29uZmlnIFNORF9TT0NfQU1EX0FDUFxuc291bmQvc29jL2FtZC9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtBTUQgQXVkaW8gQ29wcm9jZXNzb3Igc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy04LVxuc291bmQvc29jL2FtZC9LY29uZmlnOjk6Y29uZmlnIFNORF9TT0NfQU1EX0NaX0RBNzIxOU1YOTgzNTdfTUFDSFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7QU1EIENaIHN1cHBvcnQgZm9yIERBNzIxOSwgUlQ1NjgyIGFuZCBNQVg5ODM1XCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnLTE5LVxuc291bmQvc29jL2FtZC9LY29uZmlnOjIwOmNvbmZpZyBTTkRfU09DX0FNRF9DWl9SVDU2NDVfTUFDSFxuc291bmQvc29jL2FtZC9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7QU1EIENaIHN1cHBvcnQgZm9yIFJUNTY0NVwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0yNi1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzoyNzpjb25maWcgU05EX1NPQ19BTURfU1RfRVM4MzM2X01BQ0hcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0yOC1cdHRyaXN0YXRlIFwmIzM0O0FNRCBTVCBzdXBwb3J0IGZvciBFUzgzMzZcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMzgtXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6Mzk6Y29uZmlnIFNORF9TT0NfQU1EX0FDUDN4XG5zb3VuZC9zb2MvYW1kL0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtBTUQgQXVkaW8gQ29wcm9jZXNzb3ItdjMueCBzdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnLTQ0LVxuc291bmQvc29jL2FtZC9LY29uZmlnOjQ1OmNvbmZpZyBTTkRfU09DX0FNRF9SVl9SVDU2ODJfTUFDSFxuc291bmQvc29jL2FtZC9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7QU1EIFJWIHN1cHBvcnQgZm9yIFJUNTY4MlwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy01Ni1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo1Nzpjb25maWcgU05EX1NPQ19BTURfUkVOT0lSXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNTgtXHR0cmlzdGF0ZSBcJiMzNDtBTUQgQXVkaW8gQ29wcm9jZXNzb3IgLSBSZW5vaXIgc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy02My1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo2NDpjb25maWcgU05EX1NPQ19BTURfUkVOT0lSX01BQ0hcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy02NS1cdHRyaXN0YXRlIFwmIzM0O0FNRCBSZW5vaXIgc3VwcG9ydCBmb3IgRE1JQ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy03MC1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo3MTpjb25maWcgU05EX1NPQ19BTURfQUNQNXhcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy03Mi1cdHRyaXN0YXRlIFwmIzM0O0FNRCBBdWRpbyBDb3Byb2Nlc3Nvci12NS54IEkyUyBzdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnLTgwLVxuc291bmQvc29jL2FtZC9LY29uZmlnOjgxOmNvbmZpZyBTTkRfU09DX0FNRF9WQU5HT0dIX01BQ0hcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy04Mi1cdHRyaXN0YXRlIFwmIzM0O0FNRCBWYW5nb2doIHN1cHBvcnQgZm9yIE5BVTg4MjEvQ1MzNUw0MS9NQVg5ODM4OFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy05My1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo5NDpjb25maWcgU05EX1NPQ19BTURfQUNQNnhcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy05NS1cdHRyaXN0YXRlIFwmIzM0O0FNRCBBdWRpbyBDb3Byb2Nlc3Nvci12Ni54IFllbGxvdyBDYXJwIHN1cHBvcnRcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTA0LVxuc291bmQvc29jL2FtZC9LY29uZmlnOjEwNTpjb25maWcgU05EX1NPQ19BTURfWUNfTUFDSFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEwNi1cdHRyaXN0YXRlIFwmIzM0O0FNRCBZQyBzdXBwb3J0IGZvciBETUlDXCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnPTEyMz1zb3VyY2UgXCYjMzQ7c291bmQvc29jL2FtZC9hY3AvS2NvbmZpZ1wmIzM0O1xuc291bmQvc29jL2FtZC9LY29uZmlnLTEyNC1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzoxMjU6Y29uZmlnIFNORF9TT0NfQU1EX0FDUDYzX1RPUExFVkVMXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTI2LVx0dHJpc3RhdGUgXCYjMzQ7c3VwcG9ydCBmb3IgQU1EIHBsYXRmb3JtcyB3aXRoIEFDUCB2ZXJzaW9uIFx1MDAzZT0gNi4zXCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnPTEzNj1pZiBTTkRfU09DX0FNRF9BQ1A2M19UT1BMRVZFTFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEzNy1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzoxMzg6Y29uZmlnIFNORF9TT0NfQU1EX1NPVU5EV0lSRV9MSU5LX0JBU0VMSU5FXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTM5LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTQxLVxuc291bmQvc29jL2FtZC9LY29uZmlnOjE0Mjpjb25maWcgU05EX1NPQ19BTURfU09VTkRXSVJFXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTQzLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgU291bmRXaXJlIGJhc2VkIEFNRCBwbGF0Zm9ybXNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTUyLVxuc291bmQvc29jL2FtZC9LY29uZmlnOjE1Mzpjb25maWcgU05EX1NPQ19BTURfUFNcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNTQtICAgICAgICB0cmlzdGF0ZSBcJiMzNDtBTUQgQXVkaW8gQ29wcm9jZXNzb3ItdjYuMy92Ny4wL3Y3LjEgc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNjUtXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6MTY2OmNvbmZpZyBTTkRfU09DX0FNRF9QU19NQUNIXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTY3LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7QU1EIFBJTksgU0FSRElORSBzdXBwb3J0IGZvciBETUlDXCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnLTE3Ni1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzoxNzc6Y29uZmlnIFNORF9TT0NfQU1EX0FDUDdYXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTc4LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7QU1EIEF1ZGlvIENvcHJvY2Vzc29yLXY3Lnggc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNy1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6ODpjb25maWcgU05EX1NPQ19BTURfQUNQX0NPTU1PTlxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7QU1EIEF1ZGlvIEFDUCBDb21tb24gc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTUtXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjE2OmNvbmZpZyBTTkRfU09DX0FDUElfQU1EX01BVENIXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE3LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE5LVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzoyMDpjb25maWcgU05EX1NPQ19BQ1BJX0FNRF9TRENBX1FVSVJLU1xuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7QU1EIEFDUEkgU0RDQSBxdWlya3NcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnPTMwPWlmIFNORF9TT0NfQU1EX0FDUF9DT01NT05cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMzEtXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjMyOmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BfUERNXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMzQtXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjM1OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BfTEVHQUNZX0NPTU1PTlxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTM3LVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzozODpjb25maWcgU05EX1NPQ19BTURfQUNQX0kyU1xuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zOS1cdHRyaXN0YXRlXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTQwLVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzo0MTpjb25maWcgU05EX1NPQ19BTURfQUNQSV9NQUNIXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTQyLVx0dHJpc3RhdGVcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDMtXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjQ0OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BfUENNXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTQ1LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTQ3LVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzo0ODpjb25maWcgU05EX1NPQ19BTURfQUNQX1BDSVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy00OS1cdHRyaXN0YXRlIFwmIzM0O0FNRCBBQ1AgUENJIERyaXZlciBTdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZz05OT1jb25maWcgU05EX0FNRF9BU09DX0FDUDcwXG4tLVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xMTMtXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjExNDpjb25maWcgU05EX1NPQ19BTURfTUFDSF9DT01NT05cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTE1LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTEyNy1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTI4OmNvbmZpZyBTTkRfU09DX0FNRF9MRUdBQ1lfTUFDSFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xMjktXHR0cmlzdGF0ZSBcJiMzNDtBTUQgTGVnYWN5IE1hY2hpbmUgRHJpdmVyIFN1cHBvcnRcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTEzNC1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTM1OmNvbmZpZyBTTkRfU09DX0FNRF9TT0ZfTUFDSFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xMzYtXHR0cmlzdGF0ZSBcJiMzNDtBTUQgU09GIE1hY2hpbmUgRHJpdmVyIFN1cHBvcnRcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE0MS1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTQyOmNvbmZpZyBTTkRfU09DX0FNRF9TRFdfTUFDSF9DT01NT05cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTQzLVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE0Ny1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTQ4OmNvbmZpZyBTTkRfU09DX0FNRF9TT0ZfU0RXX01BQ0hcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7QU1EIFNPRiBTb3VuZHdpcmUgTWFjaGluZSBEcml2ZXIgU3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTY3LVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzoxNjg6Y29uZmlnIFNORF9TT0NfQU1EX0xFR0FDWV9TRFdfTUFDSFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xNjktXHR0cmlzdGF0ZSBcJiMzNDtBTUQgTGVnYWN5KE5vIERTUCkgU291bmR3aXJlIE1hY2hpbmUgRHJpdmVyIFN1cHBvcnRcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYXBwbGUvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7QXBwbGVcJiMzNDtcbnNvdW5kL3NvYy9hcHBsZS9LY29uZmlnLTMtXG5zb3VuZC9zb2MvYXBwbGUvS2NvbmZpZzo0OmNvbmZpZyBTTkRfU09DX0FQUExFX01DQVxuc291bmQvc29jL2FwcGxlL0tjb25maWctNS1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIFNpbGljb24gTUNBIGRyaXZlclwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hdG1lbC9LY29uZmlnPTkzPWNvbmZpZyBTTkRfQVRNRUxfU09DX0kyU1xuLS1cbnNvdW5kL3NvYy9hdG1lbC9LY29uZmlnLTEwMS1cbnNvdW5kL3NvYy9hdG1lbC9LY29uZmlnOjEwMjpjb25maWcgU05EX1NPQ19NSUtST0VfUFJPVE9cbnNvdW5kL3NvYy9hdG1lbC9LY29uZmlnLTEwMy1cdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIE1pa3JvZS1QUk9UTyBib2FyZFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWc9NT1tZW51IFwmIzM0O0F1MXhcJiMzNDtcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctNi1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWc6Nzpjb25maWcgU05EX1NPQ19BVTFYUFNDXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTgtXHR0cmlzdGF0ZSBcJiMzNDtTb0MgQXVkaW8gZm9yIEF1MTJ4eC9BdTEzeHgvQXUxNTUwXCYjMzQ7XG4tLVxuc291bmQvc29jL2F1MXgvS2NvbmZpZy0xNC1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWc6MTU6Y29uZmlnIFNORF9TT0NfQVUxWFBTQ19JMlNcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMTYtXHR0cmlzdGF0ZVxuc291bmQvc29jL2F1MXgvS2NvbmZpZy0xNy1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWc6MTg6Y29uZmlnIFNORF9TT0NfQVUxWFBTQ19BQzk3XG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTE5LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTI2LSMjXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjI3OmNvbmZpZyBTTkRfU09DX0FVMVhBVURJT1xuc291bmQvc29jL2F1MXgvS2NvbmZpZy0yOC1cdHRyaXN0YXRlIFwmIzM0O1NvQyBBdWRpbyBmb3IgQXUxMDAwL0F1MTUwMC9BdTExMDBcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTMzLVxuc291bmQvc29jL2F1MXgvS2NvbmZpZzozNDpjb25maWcgU05EX1NPQ19BVTFYQUM5N0NcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMzUtXHR0cmlzdGF0ZVxuLS1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMzktXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjQwOmNvbmZpZyBTTkRfU09DX0FVMVhJMlNDXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTQxLVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTQ2LSMjXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjQ3OmNvbmZpZyBTTkRfU09DX0RCMTAwMFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0RCMTAwMCBBdWRpbyBzdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2F1MXgvS2NvbmZpZy01NS1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWc6NTY6Y29uZmlnIFNORF9TT0NfREIxMjAwXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTU3LVx0dHJpc3RhdGUgXCYjMzQ7REIxMjAwL0RCMTMwMC9EQjE1NTAgQXVkaW8gc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9iY20vS2NvbmZpZz00PWNvbmZpZyBTTkRfQkNNMjgzNV9TT0NfSTJTXG4tLVxuc291bmQvc29jL2JjbS9LY29uZmlnLTEzLVxuc291bmQvc29jL2JjbS9LY29uZmlnOjE0OmNvbmZpZyBTTkRfU09DX0NZR05VU1xuc291bmQvc29jL2JjbS9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U29DIHBsYXRmb3JtIGF1ZGlvIGZvciBCcm9hZGNvbSBDeWdudXMgY2hpcHNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNS0jIHNldHRpbmcgLSBTUEkgY2FuJiMzOTt0IGJlIG1vZHVsYXIgc28gdGhhdCBjYXNlIGRvZXNuJiMzOTt0IG5lZWQgdG8gYmUgY292ZXJlZC5cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2OmNvbmZpZyBTTkRfU09DX0kyQ19BTkRfU1BJXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNy1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnPTEyPW1lbnUgXCYjMzQ7Q09ERUMgZHJpdmVyc1wmIzM0O1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTEzLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjE0OmNvbmZpZyBTTkRfU09DX0FMTF9DT0RFQ1NcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O0J1aWxkIGFsbCBBU29DIENPREVDIGRyaXZlcnNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctMzgxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjM4Mjpjb25maWcgU05EX1NPQ184OFBNODYwWFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM4My1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM4NS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzozODY6Y29uZmlnIFNORF9TT0NfQVJJWk9OQVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM4Ny1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM5OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzozOTk6Y29uZmlnIFNORF9TT0NfV01fSFVCU1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQwMC1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQwMy1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MDQ6Y29uZmlnIFNORF9TT0NfV01fQURTUFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQwNS1cdHRyaXN0YXRlIFwmIzM0O0NpcnJ1cyBMb2dpYyB3bV9hZHNwIGRyaXZlclwmIzM0OyBpZiBLVU5JVFxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MDgtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDA5OmNvbmZpZyBTTkRfU09DX1dNX0FEU1BfVEVTVFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQxMC1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBDaXJydXMgTG9naWMgd21fYWRzcFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQyMC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MjE6Y29uZmlnIFNORF9TT0NfQUI4NTAwX0NPREVDXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDIyLVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDI0LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQyNTpjb25maWcgU05EX1NPQ19BQzk3X0NPREVDXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDI2LVx0dHJpc3RhdGUgXCYjMzQ7QnVpbGQgZ2VuZXJpYyBBU29DIEFDOTcgQ09ERUMgZHJpdmVyXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQyOS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MzA6Y29uZmlnIFNORF9TT0NfQUQxODM2XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDMxLVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDMzLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQzNDpjb25maWcgU05EX1NPQ19BRDE5M1hcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MzUtXHR0cmlzdGF0ZVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQzNi1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0Mzc6Y29uZmlnIFNORF9TT0NfQUQxOTNYX1NQSVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQzOC1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ0MS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0NDI6Y29uZmlnIFNORF9TT0NfQUQxOTNYX0kyQ1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ0My1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ0Ni1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0NDc6Y29uZmlnIFNORF9TT0NfQUQxOTgwXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDQ4LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDUxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ1Mjpjb25maWcgU05EX1NPQ19BRDczMzExXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDUzLVx0dHJpc3RhdGVcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NTQtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDU1OmNvbmZpZyBTTkRfU09DX0FEQVVfVVRJTFNcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NTYtXHR0cmlzdGF0ZVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ1Ny1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0NTg6Y29uZmlnIFNORF9TT0NfQURBVTEzNzJcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NTktXHR0cmlzdGF0ZVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NjEtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDYyOmNvbmZpZyBTTkRfU09DX0FEQVUxMzcyX0kyQ1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ2My1cdHRyaXN0YXRlIFwmIzM0O0FuYWxvZyBEZXZpY2VzIEFEQVUxMzcyIENPREVDIChJMkMpXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ2Ny1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0Njg6Y29uZmlnIFNORF9TT0NfQURBVTEzNzJfU1BJXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDY5LVx0dHJpc3RhdGUgXCYjMzQ7QW5hbG9nIERldmljZXMgQURBVTEzNzIgQ09ERUMgKFNQSSlcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDczLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ3NDpjb25maWcgU05EX1NPQ19BREFVMTM3M1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ3NS1cdHRyaXN0YXRlIFwmIzM0O0FuYWxvZyBEZXZpY2VzIEFEQVUxMzczIENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ3OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0Nzk6Y29uZmlnIFNORF9TT0NfQURBVTE3MDFcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00ODAtXHR0cmlzdGF0ZSBcJiMzNDtBbmFsb2cgRGV2aWNlcyBBREFVMTcwMSBDT0RFQ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00ODMtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDg0OmNvbmZpZyBTTkRfU09DX0FEQVUxN1gxXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDg1LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDg4LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ4OTpjb25maWcgU05EX1NPQ19BREFVMTc2MVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ5MC1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ5Mi1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0OTM6Y29uZmlnIFNORF9TT0NfQURBVTE3NjFfSTJDXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDk0LVx0dHJpc3RhdGUgXCYjMzQ7QW5hbG9nIERldmljZXMgQVUxNzYxIENPREVDIC0gSTJDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ5OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0OTk6Y29uZmlnIFNORF9TT0NfQURBVTE3NjFfU1BJXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTAwLVx0dHJpc3RhdGUgXCYjMzQ7QW5hbG9nIERldmljZXMgQVUxNzYxIENPREVDIC0gU1BJXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUwNC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1MDU6Y29uZmlnIFNORF9TT0NfQURBVTE3ODFcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MDYtXHRzZWxlY3QgU05EX1NPQ19BREFVMTdYMVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MDgtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTA5OmNvbmZpZyBTTkRfU09DX0FEQVUxNzgxX0kyQ1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUxMC1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUxNC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1MTU6Y29uZmlnIFNORF9TT0NfQURBVTE3ODFfU1BJXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTE2LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTIwLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUyMTpjb25maWcgU05EX1NPQ19BREFVMTk3N1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUyMi1cdHRyaXN0YXRlXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTIzLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUyNDpjb25maWcgU05EX1NPQ19BREFVMTk3N19TUElcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MjUtXHR0cmlzdGF0ZVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MjktXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTMwOmNvbmZpZyBTTkRfU09DX0FEQVUxOTc3X0kyQ1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUzMS1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUzNS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1MzY6Y29uZmlnIFNORF9TT0NfQURBVTcwMDJcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MzctXHR0cmlzdGF0ZSBcJiMzNDtBbmFsb2cgRGV2aWNlcyBBREFVNzAwMiBTdGVyZW8gUERNLXRvLUkyUy9URE0gQ29udmVydGVyXCYjMzQ7XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTM4LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUzOTpjb25maWcgU05EX1NPQ19BREFVNzExOFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU0MC1cdHRyaXN0YXRlXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTQxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjU0Mjpjb25maWcgU05EX1NPQ19BREFVNzExOF9IV1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU0My1cdHRyaXN0YXRlIFwmIzM0O0FuYWxvZyBEZXZpY2VzIEFEQVU3MTE4IDggQ2hhbm5lbCBQRE0tdG8tSTJTL1RETSBDb252ZXJ0ZXIgLSBIVyBNb2RlXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU1My1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1NTQ6Y29uZmlnIFNORF9TT0NfQURBVTcxMThfSTJDXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTU1LVx0dHJpc3RhdGUgXCYjMzQ7QW5hbG9nIERldmljZXMgQURBVTcxMTggOCBDaGFubmVsIFBETS10by1JMlMvVERNIENvbnZlcnRlciAtIEkyQ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NjUtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTY2OmNvbmZpZyBTTkRfU09DX0FEQVY4MFhcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NjctXHR0cmlzdGF0ZVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU2OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1Njk6Y29uZmlnIFNORF9TT0NfQURBVjgwMVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU3MC1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU3My1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1NzQ6Y29uZmlnIFNORF9TT0NfQURBVjgwM1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU3NS1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU3OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1Nzk6Y29uZmlnIFNORF9TT0NfQURTMTE3WFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU4MC1cdHRyaXN0YXRlXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTgxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjU4Mjpjb25maWcgU05EX1NPQ19BSzQxMDRcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01ODMtXHR0cmlzdGF0ZSBcJiMzNDtBS00gQUs0MTA0IENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU4NS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1ODY6Y29uZmlnIFNORF9TT0NfQUs0MTE4XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTg3LVx0dHJpc3RhdGUgXCYjMzQ7QUtNIEFLNDExOCBDT0RFQ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01OTAtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTkxOmNvbmZpZyBTTkRfU09DX0FLNDM3NVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU5Mi1cdHRyaXN0YXRlIFwmIzM0O0FLTSBBSzQzNzUgQ09ERUNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjAwLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYwMTpjb25maWcgU05EX1NPQ19BSzQ0NThcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MDItXHR0cmlzdGF0ZSBcJiMzNDtBS00gQUs0NDU4IENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYwNS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2MDY6Y29uZmlnIFNORF9TT0NfQUs0NTM1XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjA3LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjA5LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYxMDpjb25maWcgU05EX1NPQ19BSzQ1NTRcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MTEtXHR0cmlzdGF0ZSBcJiMzNDtBS00gQUs0NTU0IENPREVDXCYjMzQ7XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjEyLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYxMzpjb25maWcgU05EX1NPQ19BSzQ2MTNcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MTQtXHR0cmlzdGF0ZSBcJiMzNDtBS00gQUs0NjEzIENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYxNi1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2MTc6Y29uZmlnIFNORF9TT0NfQUs0NjE5XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjE4LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7QUtNIEFLNDYxOSBDT0RFQ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjAtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjIxOmNvbmZpZyBTTkRfU09DX0FLNDY0Mlxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYyMi1cdHRyaXN0YXRlIFwmIzM0O0FLTSBBSzQ2NDIgQ09ERUNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjI0LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYyNTpjb25maWcgU05EX1NPQ19BSzQ2NzFcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjYtXHR0cmlzdGF0ZVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjgtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjI5OmNvbmZpZyBTTkRfU09DX0FLNTM4Nlxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYzMC1cdHRyaXN0YXRlIFwmIzM0O0FLTSBBSzU2MzggQ09ERUNcJiMzNDtcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MzEtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjMyOmNvbmZpZyBTTkRfU09DX0FLNTU1OFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYzMy1cdHRyaXN0YXRlIFwmIzM0O0FLTSBBSzU1NTggQ09ERUNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjM2LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYzNzpjb25maWcgU05EX1NPQ19BTEM1NjIzXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjM4LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBBTEM1NjIzIENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY0MC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NDE6Y29uZmlnIFNORF9TT0NfQUxDNTYzMlxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY0Mi1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY0NC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NDU6Y29uZmlnIFNORF9TT0NfQVVESU9fSUlPX0FVWFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY0Ni1cdHRyaXN0YXRlIFwmIzM0O0F1ZGlvIElJTyBBdXhpbGlhcnkgZGV2aWNlXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY1NS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NTY6Y29uZmlnIFNORF9TT0NfQVc4NzM4XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjU3LVx0dHJpc3RhdGUgXCYjMzQ7QXdpbmljIEFXODczOCBBdWRpbyBBbXBsaWZpZXJcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjY0LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjY2NTpjb25maWcgU05EX1NPQ19BVzg4Mzk1X0xJQlxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY2Ni1cdHNlbGVjdCBDUkM4XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY2OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2Njk6Y29uZmlnIFNORF9TT0NfQVc4ODM5NVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY3MC1cdHRyaXN0YXRlIFwmIzM0O1NvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgzOTVcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjgxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjY4Mjpjb25maWcgU05EX1NPQ19BVzg4MTY2XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjgzLVx0dHJpc3RhdGUgXCYjMzQ7U29jIEF1ZGlvIGZvciBhd2luaWMgYXc4ODE2NlwmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02OTMtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6Njk0OmNvbmZpZyBTTkRfU09DX0FXODgyNjFcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02OTUtXHR0cmlzdGF0ZSBcJiMzNDtTb2MgQXVkaW8gZm9yIGF3aW5pYyBhdzg4MjYxXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTcwNi1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3MDc6Y29uZmlnIFNORF9TT0NfQVc4ODA4MVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTcwOC1cdHRyaXN0YXRlIFwmIzM0O1NvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgwODEvYXc4ODA4M1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03MTctXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzE4OmNvbmZpZyBTTkRfU09DX0FXODczOTBcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03MTktXHR0cmlzdGF0ZSBcJiMzNDtTb2MgQXVkaW8gZm9yIGF3aW5pYyBhdzg3MzkwXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTcyOC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3Mjk6Y29uZmlnIFNORF9TT0NfQVc4ODM5OVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTczMC1cdHRyaXN0YXRlIFwmIzM0O1NvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgzOTlcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzQxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjc0Mjpjb25maWcgU05EX1NPQ19CRDI4NjIzXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzQzLVx0dHJpc3RhdGUgXCYjMzQ7Uk9ITSBCRDI4NjIzIENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc0OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3NDk6Y29uZmlnIFNORF9TT0NfQlRfU0NPXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzUwLVx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgQlQgU0NPIGNvZGVjIGRyaXZlclwmIzM0O1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc1MS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3NTI6Y29uZmlnIFNORF9TT0NfQ0hWM19DT0RFQ1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc1My1cdHRyaXN0YXRlIFwmIzM0O0dvb2dsZSBDaGFtZWxlb24gdjMgY29kZWMgZHJpdmVyXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc1OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3NTk6Y29uZmlnIFNORF9TT0NfQ1BDQVBcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjAtXHR0cmlzdGF0ZSBcJiMzNDtNb3Rvcm9sYSBDUENBUCBjb2RlY1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjItXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzYzOmNvbmZpZyBTTkRfU09DX0NRMDA5M1ZDXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzY0LVx0dHJpc3RhdGVcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjUtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzY2OmNvbmZpZyBTTkRfU09DX0NST1NfRUNfQ09ERUNcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjctXHR0cmlzdGF0ZSBcJiMzNDtjb2RlYyBkcml2ZXIgZm9yIENocm9tZU9TIEVDXCYjMzQ7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDAxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBLZXJuZWwgU291bmQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzb3VuZCBjb25maWd1cmF0aW9uIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O0hleSwgaWYgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgYXV0b21hdGljYWxseSBlbmFibGVzIGBTTkRfU09DYCB0aHJvdWdoIGl0cyBjb25maWd1cmF0aW9uLCB0aGVuIEkgZG9uJiMzOTt0IG5lZWQgdG8gd29ycnkgYWJvdXQgbWFudWFsbHkgc2V0dGluZyBgU05EX1NPQ2AuJiMzNDsgSXQganVzdCBtYWtlcyB0aGluZ3MgZWFzaWVyLCByaWdodD8KClRoZW4gSSByZW1lbWJlcmVkIHRoYXQgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgaXMgZm91bmQgc3BlY2lmaWNhbGx5IGluIGBzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ2AuIFJpZ2h0LCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBMb29uZ3NvbiBzb3VuZCBzdXBwb3J0IHJlc2lkZXMuIE5vdywgbGV0JiMzOTtzIGp1c3QgY29uZmlybSBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgYnkgY2hlY2tpbmcgaWYgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgZG9lcywgaW4gZmFjdCwgaGF2ZSBgU05EX1NPQ2AgYXMgYSBkZXBlbmRlbmN5LiBJdCYjMzk7cyBiZXN0IHRvIGJlIGNvbXBsZXRlbHkgY2xlYXIgb24gdGhlc2UgY29uZmlndXJhdGlvbnMuIEkgYW0gcHJldHR5IHN1cmUgaXQgZG9lcywgaXQmIzM5O3MganVzdCBnb29kIHByYWN0aWNlIHRvIHZlcmlmeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZz00PWNvbmZpZyBTTkRfU09DX0xPT05HU09OX0NBUkRcbi0tXG5zb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZy0xNS1cbnNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnOjE2OmNvbmZpZyBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcbnNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnLTE3LVx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gSTJTLVBDSSBEZXZpY2UgRHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDQ2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gaXQuCgoqKlJlZm9jdXNpbmcgb24gdGhlIEtjb25maWcgRmlsZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIHJldmlzaXQgYHNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnYC4gSSYjMzk7dmUgYmVlbiB3b3JraW5nIG9uIHRoaXMgYXVkaW8gc3Vic3lzdGVtIGludGVncmF0aW9uIGFuZCB0aGVyZSYjMzk7cyBzb21ldGhpbmcgbmFnZ2luZyBhdCBtZS4gSSYjMzk7dmUgcHJvYmFibHkgZ2xhbmNlZCBhdCB0aGlzIGZpbGUgYSBkb3plbiB0aW1lcyBhbHJlYWR5LCBidXQgZXhwZXJpZW5jZSB0ZWxscyBtZSBpdCYjMzk7cyBhbHdheXMgd29ydGggYW5vdGhlciBjYXJlZnVsIGxvb2suIEtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCBlc3BlY2lhbGx5IHRob3NlIGRlZmluaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgb2YgYSBjb21wbGV4IHN1YnN5c3RlbSwgYXJlIG5vdG9yaW91cyBmb3IgaGlkaW5nIHN1YnRsZSBkZXRhaWxzLiBTb21ldGhpbmcgaW4gdGhlcmUgbWlnaHQgaG9sZCB0aGUga2V5IHRvIHJlc29sdmluZyB0aGUgY3VycmVudCBpc3N1ZSBvciB1bmNvdmVyIGFuIHVuZm9yZXNlZW4gb3Bwb3J0dW5pdHkgZm9yIGltcHJvdmVtZW50LiBMZXQmIzM5O3Mgc2VlIGlmIGFub3RoZXIgcGFzcyByZXZlYWxzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdG1lbnUgXCYjMzQ7TG9vbmdzb25cJiMzNDtcbiAgIDM6XHRcbiAgIDQ6XHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9DQVJEXG4gICA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBTb3VuZCBDYXJkIERyaXZlclwmIzM0O1xuICAgNjpcdFx0ZGVwZW5kcyBvbiBMT09OR0FSQ0ggfHwgQ09NUElMRV9URVNUXG4gICA3Olx0XHRzZWxlY3QgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJIGlmIFBDSVxuICAgODpcdFx0c2VsZWN0IFNORF9TT0NfTE9PTkdTT05fSTJTX1BMQVRGT1JNIGlmIE9GXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFNheSBZIG9yIE0gaWYgeW91IHdhbnQgdG8gYWRkIHN1cHBvcnQgZm9yIFNvQyBhdWRpbyB1c2luZ1xuICAxMTpcdFx0ICBsb29uZ3NvbiBJMlMgY29udHJvbGxlci5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgVGhlIGRyaXZlciBhZGQgc3VwcG9ydCBmb3IgQUxTQSBTb0MgQXVkaW8gc3VwcG9ydCB1c2luZ1xuICAxNDpcdFx0ICBsb29uZ3NvbiBJMlMgY29udHJvbGxlci5cbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJXG4gIDE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBJMlMtUENJIERldmljZSBEcml2ZXJcJiMzNDtcbiAgMTg6XHRcdGRlcGVuZHMgb24gTE9PTkdBUkNIIHx8IENPTVBJTEVfVEVTVFxuICAxOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMjA6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjkzOQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU291bmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgbW9kdWxlIGFuZCBpdCBkb2VzbiYjMzk7dCAqZGlyZWN0bHkqIHJlbHkgb24gYFNORF9TT0NgLCB3aGljaCBpcyBnb29kLiBIb3dldmVyLCBpdCYjMzk7cyBsb2NhdGVkIHdpdGhpbiB0aGUgYHNvdW5kL3NvYy9gIGRpcmVjdG9yeSwgYW5kIHRoYXQgZGlyZWN0b3J5IGlzIG9ubHkgaW5jb3Jwb3JhdGVkIGlmIGBTTkRfU09DYCBpcyBlbmFibGVkIGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGF0IG1ha2VzIHRoZSBkZWNpc2lvbiBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyB3ZSBuZWVkIHRvIGVuYWJsZSBgU05EX1NPQ2AgYXMgYSBwcmVyZXF1aXNpdGUsIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIG5vdCBhIGhhcmQgZGVwZW5kZW5jeS4KCkFscmlnaHQsIGxldCYjMzk7cyBsaXN0IG91dCB3aGF0IHdlIGhhdmUgdG8gZGVhbCB3aXRoIGluIHRlcm1zIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0IG5vdywgSSYjMzk7bSB0cmFja2luZzoKCiogICBgUENJYAoqICAgYFNORGAKKiAgIGBTTkRfUENJYAoqICAgYFNORF9IREFfSU5URUxgCiogICBgU05EX0FEMTg4OWAKKiAgIGBTTkRfQVRJSVhQYAoqICAgYFNORF9BVElJWFBfTU9ERU1gCiogICBgU05EX0FVODgxMGAKKiAgIGBTTkRfQVU4ODIwYAoqICAgYFNORF9BVTg4MzBgCiogICBgU05EX0FXMmAKKiAgIGBTTkRfQlQ4N1hgCiogICBgU05EX0NTNDI4MWAKKiAgIGBTTkRfQ1M1NTMwYAoqICAgYFNORF9MT0xBYAoqICAgYFNORF9IRFNQTWAKKiAgIGBTTkRfU09DYAoqICAgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAKKiAgIGBDT01QSUxFX1RFU1RgCgpIb2xkIG9uIGEgc2Vjb25kLi4uIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIEkgdGhvdWdodCBgU05EX0hEQV9JTlRFTGAgd2FzIGluIGBzb3VuZC9oZGEvY29udHJvbGxlcnMvS2NvbmZpZ2AuIEFuZCwgaWYgSSYjMzk7bSByZW1lbWJlcmluZyBjb3JyZWN0bHksIHRoYXQmIzM5O3MgcG90ZW50aWFsbHkgdGllZCB0byBgU05EX1BDSWAuIFNvLCBpcyBgU05EX0hEQV9JTlRFTGAgcHVsbGVkIGluIGF1dG9tYXRpY2FsbHkgaWYgYFNORF9QQ0lgIGlzIGFjdGl2ZT8gTGV0JiMzOTtzIHF1aWNrbHkgcGVlayBhdCBgc291bmQvcGNpL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlIGNvbnRyb2wgZmxvdy4gR290dGEgbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgZHVwbGljYXRpbmcgb3IgbWlzc2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c291cmNlIFwmIzM0O3NvdW5kL2hkYS9LY29uZmlnXCYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL0tjb25maWc9NTg9c291cmNlIFwmIzM0O3NvdW5kL3BjaS9LY29uZmlnXCYjMzQ7XG5zb3VuZC9LY29uZmlnLTU5LVxuc291bmQvS2NvbmZpZzo2MDpzb3VyY2UgXCYjMzQ7c291bmQvaGRhL0tjb25maWdcJiMzNDtcbnNvdW5kL0tjb25maWctNjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Nzk2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgSERBIEtjb25maWcgUmVsYXRpb25zaGlwKioKCkFscmlnaHQsIHNvIHRoZSBgc291bmQvaGRhL0tjb25maWdgIGZpbGUgZ2V0cyBpdHMgY29uZmlndXJhdGlvbiBkaXJlY3RpdmVzIGRpcmVjdGx5IGZyb20gYHNvdW5kL0tjb25maWdgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIHNldHVwLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyBhcmUgc3RydWN0dXJlZC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byBgc291bmQvaGRhL0tjb25maWdgIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyBkZWZpbmVkIHRoZXJlLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGF1ZGlvIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyBtdWNoIGN1c3RvbWl6YXRpb24gaXMgb2ZmZXJlZCBhdCB0aGlzIGxldmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL2hkYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudSBcJiMzNDtIRC1BdWRpb1wmIzM0O1xuICAgMzpcdFxuICAgNDpcdHNvdXJjZSBcJiMzNDtzb3VuZC9oZGEvY29tbW9uL0tjb25maWdcJiMzNDtcbiAgIDU6XHRzb3VyY2UgXCYjMzQ7c291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWdcJiMzNDtcbiAgIDY6XHRzb3VyY2UgXCYjMzQ7c291bmQvaGRhL2NvZGVjcy9LY29uZmlnXCYjMzQ7XG4gICA3Olx0c291cmNlIFwmIzM0O3NvdW5kL2hkYS9jb3JlL0tjb25maWdcJiMzNDtcbiAgIDg6XHRcbiAgIDk6XHRlbmRtZW51XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTE1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyBhbmQgS2NvbmZpZyBIaWVyYXJjaHkqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gbm90aW5nIGlzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgU05EX0hEQV9JTlRFTGAgYW5kIGBTTkRgLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpZiBnZW5lcmFsIHNvdW5kIHN1cHBvcnQgKGBTTkRgKSBpcyBlbmFibGVkLCB0aGVuIHdlIGNhbiBsaWtlbHkgYWxzbyBlbmFibGUgSW50ZWwgSGlnaCBEZWZpbml0aW9uIEF1ZGlvIChgU05EX0hEQV9JTlRFTGApLiBTdGFuZGFyZCBkZXBlbmRlbmN5LgoKTm93LCBJIG5lZWQgdG8gcmV2aXNpdCBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUsIGBzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ2AsIGlzIHByb3Blcmx5IHNvdXJjZWQgZnJvbSwgb3IgaW5jbHVkZWQgYnksIHRoZSBtYWluIFNvdW5kIFN1YnN5c3RlbSBLY29uZmlnIGZpbGUsIGBzb3VuZC9zb2MvS2NvbmZpZ2AuIFRoaXMgaXMgY3J1Y2lhbCB0byBlbnN1cmUgdGhhdCB0aGUgTG9vbmdzb24gSTJTIFBDSSBkcml2ZXIgZ2V0cyBjb3JyZWN0bHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEdvdHRhIG1ha2Ugc3VyZSBpdCYjMzk7cyBsaW5rZWQgdXAgcmlnaHQsIG90aGVyd2lzZSBpdCYjMzk7bGwgbmV2ZXIgZXZlbiBiZSBjb25zaWRlcmVkIGR1cmluZyBidWlsZCB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UgXCYjMzQ7c291bmQvc29jL2xvb25nc29uL0tjb25maWdcJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvc29jL0tjb25maWc9MTE3PXNvdXJjZSBcJiMzNDtzb3VuZC9zb2Mva2lya3dvb2QvS2NvbmZpZ1wmIzM0O1xuc291bmQvc29jL0tjb25maWc6MTE4OnNvdXJjZSBcJiMzNDtzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ1wmIzM0O1xuc291bmQvc29jL0tjb25maWctMTE5LXNvdXJjZSBcJiMzNDtzb3VuZC9zb2MvaW1nL0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1MTEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEF1ZGlvIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCB5ZXMsIEkmIzM5O20gd2l0aCB0aGlzLiBMZXQmIzM5O3Mgc2VlLiBUaGUgY3VycmVudCBhdWRpbyBjb25maWd1cmF0aW9ucyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzZWVtIHRvIGludm9sdmUgUENJLWJhc2VkIHNvdW5kIGNhcmRzLCBhIGJ1bmNoIG9mIHNvdW5kIGRyaXZlcnMuIFdlJiMzOTtyZSBvYnZpb3VzbHkgY292ZXJpbmcgYSBicm9hZCByYW5nZSBvZiBoYXJkd2FyZS4gSSBzZWUgYFNORGAsIGBTTkRfUENJYCwgYW5kIHRoZW4gc3BlY2lmaWMgZHJpdmVycyBsaWtlIGBTTkRfSERBX0lOVEVMYCwgYFNORF9BRDE4ODlgLCBhbmQgb3RoZXJzIHdoaWNoIHJlcHJlc2VudCBsZWdhY3kgYW5kIGN1cnJlbnQgYXVkaW8gaW50ZXJmYWNlcy4gSXQgc2VlbXMgd2UmIzM5O3JlIGluY2x1ZGluZyBhIHN5c3RlbS1vbi1hLWNoaXAgKFNvQykgY29uZmlndXJhdGlvbiBvcHRpb246IGBTTkRfU09DYCBhbmQgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgYXMgd2VsbC4gQWxzbyBgQ09NUElMRV9URVNUYC4gQSBnb29kIHJhbmdlLgoKSG9sZCBvbi4uLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYFNORF9DUzU1MzBgLi4uIHJpZ2h0LCBpdCAqZGVwZW5kcyogb24gYElTQV9ETUFfQVBJYC4gSXQmIzM5O3MgZXNzZW50aWFsIHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGlzIGNvcnJlY3RseSBoYW5kbGVkIGluIG91ciBidWlsZCBwcm9jZXNzLCBzbyBsZXQmIzM5O3MgY2hlY2sgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfQ1M1NTMwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTI3OT1jb25maWcgU05EX0NTNDZYWF9ORVdfRFNQXG4tLVxuc291bmQvcGNpL0tjb25maWctMjg3LVxuc291bmQvcGNpL0tjb25maWc6Mjg4OmNvbmZpZyBTTkRfQ1M1NTMwXG5zb3VuZC9wY2kvS2NvbmZpZy0yODktXHR0cmlzdGF0ZSBcJiMzNDtDUzU1MzAgQXVkaW9cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNjUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIHRocm91Z2ggbXkgbWluZCBhcyBJIGFwcHJvYWNoIHRoaXM6CgoqKkFuYWx5emluZyB0aGUgS2NvbmZpZyBmb3IgU05EX0NTNTUzMCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgc291bmQvcGNpL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYFNORF9DUzU1MzBgIHNvdW5kIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVGhpcyBpcyB3aGVyZSB0aGUgZGVjaXNpb25zIGFyZSBtYWRlOiBpcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQ/IElzIGl0IGEgbW9kdWxlLCBvciBidWlsdC1pbj8gV2hhdCBkZXBlbmRlbmNpZXMgZG9lcyBpdCBoYXZlIG9uIG90aGVyIG9wdGlvbnMgb3IgaGFyZHdhcmU/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGBjb25maWcgU05EX0NTNTUzMGAsIGl0cyBgZGVwZW5kcyBvbmAsIGBzZWxlY3RgLCBgaGVscGAgdGV4dCwgYW5kIHBvdGVudGlhbCBkZWZhdWx0cy4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB3aWxsIHVzZSB0aGUgc3RhbmRhcmQgS2NvbmZpZyBmb3JtYXQsIHNvIGl0IHNob3VsZCBiZSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCB0byBwYXJzZS4gVGhlIGdvYWwgaXMgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBzcGVjaWZpYyBhdWRpbyBkcml2ZXIgZml0cyBpbnRvIHRoZSBsYXJnZXIgc291bmQgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLCBhbmQgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueXRoaW5nIHVudXN1YWwgb3Igd29ydGggbm90aW5nIGluIGl0cyBzZXR1cC4gSSYjMzk7bSByZWFkeSB0byBkaXZlIGluIGFuZCBxdWlja2x5IHNwb3QgYW55IGdvdGNoYXMgb3IgYXJlYXMgb2YgcG90ZW50aWFsIGNvbmZsaWN0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjg4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyODg6XHRjb25maWcgU05EX0NTNTUzMFxuIDI4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7Q1M1NTMwIEF1ZGlvXCYjMzQ7XG4gMjkwOlx0XHRkZXBlbmRzIG9uIElTQV9ETUFfQVBJIFx1MDAyNlx1MDAyNiAoWDg2XzMyIHx8IENPTVBJTEVfVEVTVClcbiAyOTE6XHRcdGRlcGVuZHMgb24gIU02OEtcbiAyOTI6XHRcdHNlbGVjdCBTTkRfU0IxNl9EU1BcbiAyOTM6XHRcdGhlbHBcbiAyOTQ6XHRcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIGF1ZGlvIG9uIEN5cml4L05hdFNlbWkgQ1M1NTMwIGNoaXBzLlxuIDI5NTpcdFxuIDI5NjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gMjk3Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1jczU1MzAuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTQzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIHRoaXMgc2VjdGlvbiBvZiBjb2RlJiMzOTtzIGJlaGF2aW9yIGhpbmdlcyBvbiBgSVNBX0RNQV9BUElgIGJlaW5nIGRlZmluZWQsIGFuZCBzcGVjaWZpY2FsbHksIHdoZXRoZXIgd2UmIzM5O3JlIG9uIGFuIFg4Nl8zMiBhcmNoaXRlY3R1cmUgb3IgY29tcGlsaW5nIGEgdGVzdCBidWlsZC4gSSYjMzk7bSBzZWVpbmcgdGhhdCB3ZSAqZG8qIGhhdmUgYENPTVBJTEVfVEVTVGAgZW5hYmxlZCwgd2hpY2ggc3VnZ2VzdHMgdGhhdCB0aGUgY29uZGl0aW9ucyBzaG91bGQgYmUgbWV0LCBidXQgSSYjMzk7bSBzdGlsbCBhIGJpdCBoZXNpdGFudCwgYmVjYXVzZSBgSVNBX0RNQV9BUElgIG1pZ2h0IG5vdCBiZSB1bml2ZXJzYWxseSBzdXBwb3J0ZWQgYWNyb3NzIGFsbCBvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZXMuIEhvd2V2ZXIsIGNvbnNpZGVyaW5nIHRoYXQgd2Ugb25seSBuZWVkIHRvIGVuYWJsZSAqZW5vdWdoKiBvZiB0aGVzZSB0byB0cmlnZ2VyIHRoZSByZWxldmFudCBjb2RlIHBhdGhzLCB0aGF0IHNob3VsZG4mIzM5O3QgYmUgYSBodWdlIHByb2JsZW0uIFdlIGRvbiYjMzk7dCBuZWVkICpldmVyeSogcG9zc2libGUgZmVhdHVyZSBlbmFibGVkLCBqdXN0IGVub3VnaCB0byBnZXQgdGhlIHRlc3QgdG8gcnVuLiBgU05EX0hEQV9JTlRFTGAgaXMgYSBjb21tb24gYW5kIGVhc2lseSB0cmlnZ2VyZWQgY29uZGl0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBjaGVja2luZyBpZiBgU05EX0FEMTg4OWAgaXMgYSBzdWl0YWJsZSBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDEzOlx0Y29uZmlnIFNORF9BRDE4ODlcbiAgMTQ6XHRcdHRyaXN0YXRlIFwmIzM0O0FuYWxvZyBEZXZpY2VzIEFEMTg4OVwmIzM0O1xuICAxNTpcdFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgaW50ZWdyYXRlZCBBQzk3IHNvdW5kXG4gIDE4Olx0XHQgIGRldmljZSBmb3VuZCBpbiBwYXJ0aWN1bGFyIG9uIHRoZSBIZXdsZXR0LVBhY2thcmQgW0JDSl0teHh4MFxuICAxOTpcdFx0ICBjbGFzcyBQQS1SSVNDIHdvcmtzdGF0aW9ucywgdXNpbmcgdGhlIEFEMTgxOSBjb2RlYy5cbiAgMjA6XHRcbiAgMjE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDIyOlx0XHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1hZDE4ODkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDYxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHBvc2l0aXZlIOKAkyB3ZSYjMzk7cmUgb3BlcmF0aW5nIHdpdGggbm8gaW1tZWRpYXRlbHkgYXBwYXJlbnQgc3BlY2lhbCBkZXBlbmRlbmNpZXMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhbHdheXMgYSByZWxpZWYgaW4gY29tcGxleCBwcm9qZWN0cy4gTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biB0byB0aGUgc3BlY2lmaWNzLiBNeSBuZXh0IHN0ZXAsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBpbW1lZGlhdGVseSBjaGVjayB0aGUgaW1wbGljYXRpb25zIGFuZCBzdGF0dXMgb2YgYFNORF9BVElJWFBgLiBUaGlzIGxpa2VseSByZXByZXNlbnRzIGEgY3JpdGljYWwgYXVkaW8gb3IgaGFyZHdhcmUgaW50ZXJmYWNlIGNvbXBvbmVudCwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLiBXZSBuZWVkIHRvIGFzY2VydGFpbiBpdHMgY3VycmVudCBjb25maWd1cmF0aW9uLCBwb3RlbnRpYWwgdmVyc2lvbiBjb25mbGljdHMsIGFuZCBhbnkga25vd24gaXNzdWVzIG9yIGxpbWl0YXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHN5c3RlbSBwZXJmb3JtYW5jZSBvciBjb21wYXRpYmlsaXR5IGRvd24gdGhlIGxpbmUuIEl0JiMzOTtzIHRoZSBseW5jaHBpbiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDc3Olx0Y29uZmlnIFNORF9BVElJWFBcbiAgNzg6XHRcdHRyaXN0YXRlIFwmIzM0O0FUSSBJWFAgQUM5NyBDb250cm9sbGVyXCYjMzQ7XG4gIDc5Olx0XHRzZWxlY3QgU05EX0FDOTdfQ09ERUNcbiAgODA6XHRcdGhlbHBcbiAgODE6XHRcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBpbnRlZ3JhdGVkIEFDOTcgc291bmRcbiAgODI6XHRcdCAgZGV2aWNlIG9uIG1vdGhlcmJvYXJkcyB3aXRoIEFUSSBjaGlwc2V0cyAoQVRJIElYUCAxNTAvMjAwLzI1MC9cbiAgODM6XHRcdCAgMzAwLzQwMCkuXG4gIDg0Olx0XG4gIDg1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgODY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWF0aWl4cC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA0NDIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE1pbmltYWwgRXh0ZXJuYWwgRW50YW5nbGVtZW50cyoqCgpBbHJpZ2h0LCBzdHJhaWdodCB0byB0aGUgcG9pbnQuIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIHJlZ2lzdGVyaW5nIGlzIHRoZSBhYnNlbmNlIG9mIGFueSBzcGVjaWZpZWQgZGVwZW5kZW5jaWVzLiBUaGF0JiMzOTtzIGdvb2QsIGEgY2xlYW4gc2xhdGUgb2Z0ZW4gc2lnbmFscyBlaXRoZXIgc2ltcGxpY2l0eSBvciBhIGZvY3VzZWQgc2NvcGUuIEl0IHN1Z2dlc3RzIHdoYXRldmVyIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggKnNob3VsZG4mIzM5O3QqIHJlcXVpcmUgcHVsbGluZyBpbiBhIHdob2xlIGhvc3Qgb2YgZXh0ZXJuYWwgbGlicmFyaWVzIG9yIGZyYW1ld29ya3Mg4oCTIGF0IGxlYXN0LCBub3QgaW5pdGlhbGx5LiBBbHdheXMgYSBwbHVzIHRvIGtlZXAgdGhpbmdzIGxpZ2h0d2VpZ2h0IGFuZCBtYW5hZ2VhYmxlLgoKTm93LCB3aGVyZSBkbyB3ZSBnbyBmcm9tIGhlcmU/IExldCYjMzk7cyBkcmlsbCBkb3duIGFuZCBzZWUgYWJvdXQgYFNORF9BVTg4MTBgLiBUaGlzIGlzIHdoZXJlIHRoZSB3b3JrIGJlZ2lucyB0byB0YWtlIHNoYXBlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5ODpcdGNvbmZpZyBTTkRfQVU4ODEwXG4gIDk5Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdXJlYWwgQWR2YW50YWdlXCYjMzQ7XG4gMTAwOlx0XHRkZXBlbmRzIG9uIEhBU19JT1BPUlRcbiAxMDE6XHRcdHNlbGVjdCBTTkRfTVBVNDAxX1VBUlRcbiAxMDI6XHRcdHNlbGVjdCBTTkRfQUM5N19DT0RFQ1xuIDEwMzpcdFx0aGVscFxuIDEwNDpcdFx0ICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgQXVyZWFsIEFkdmFudGFnZSBzb3VuZGNhcmRzLlxuIDEwNTpcdFxuIDEwNjpcdFx0ICBTdXBwb3J0ZWQgZmVhdHVyZXM6IEhhcmR3YXJlIE1peGVyLCBTUkMsIEVRIGFuZCBTUERJRiBvdXRwdXQuXG4gMTA3Olx0XHQgIDNEIHN1cHBvcnQgY29kZSBpcyBpbiBwbGFjZSwgYnV0IG5vdCB5ZXQgdXNlYWJsZS4gRm9yIG1vcmUgaW5mbyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA4MjYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91OgoKKipJbnZlc3RpZ2F0aW5nIGEgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKCk9rYXksIHNvIHRoZSBzaXR1YXRpb24gaGluZ2VzIG9uIGBIQVNfSU9QT1JUYC4gVGhhdCYjMzk7cyB0aGUga2V5IHZhcmlhYmxlIGhlcmUuIFdlJiMzOTt2ZSBnb3QgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGRlZmluZWQgYW5kIHdoYXQgaXRzIGltcGxpY2F0aW9ucyBhcmUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGhvdyB0aGlzIGluZmx1ZW5jZXMgdGhlIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7TGV0JiMzOTtzIGFzc3VtZSBpdCYjMzk7cyBzZXQuJiMzNDsgV2hhdCBoYXBwZW5zIGRvd25zdHJlYW0/CgpOb3csIGxldCYjMzk7cyBwaXZvdCBhbmQgY2hlY2sgYFNORF9BVzJgLiBUaGF0JiMzOTtzIGFub3RoZXIgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBuZWVkIHRvIGtub3cgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBJL08gcG9ydCBjaGVjay4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYW4gYXVkaW8gY29tcG9uZW50IHRoYXQgZGVwZW5kcyBvbiBgSEFTX0lPUE9SVGA/IE9yIGlzIGBTTkRfQVcyYCBzb21laG93IGluZGVwZW5kZW50LCBidXQgYWZmZWN0ZWQgYnkgdGhlIG92ZXJhbGwgaGFyZHdhcmUgY29uZmlndXJhdGlvbj8gVGhpcyBjb25uZWN0aW9uIGRlbWFuZHMgaW1tZWRpYXRlIHNjcnV0aW55LiBVbmRlcnN0YW5kaW5nIHRoZWlyIGludGVycmVsYXRpb25zaGlwIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgcGljdHVyZS4gQXJlIHdlIHRyb3VibGVzaG9vdGluZyBhIGRlcGVuZGVuY3ksIG9yIGp1c3QgZXhwbG9yaW5nIHRoZSBmZWF0dXJlIHNldD8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHN5c3RlbSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDI6XHRjb25maWcgU05EX0FXMlxuIDE0MzpcdFx0dHJpc3RhdGUgXCYjMzQ7RW1hZ2ljIEF1ZGlvd2VyayAyXCYjMzQ7XG4gMTQ0Olx0XHRoZWxwXG4gMTQ1Olx0XHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBFbWFnaWMgQXVkaW93ZXJrIDIgc291bmRjYXJkcy5cbiAxNDY6XHRcbiAxNDc6XHRcdCAgU3VwcG9ydGVkIGZlYXR1cmVzOiBBbmFsb2cgYW5kIFNQRElGIG91dHB1dC4gQW5hbG9nIG9yIFNQRElGIGlucHV0LlxuIDE0ODpcdFx0ICBOb3RlOiBTd2l0Y2ggYmV0d2VlbiBhbmFsb2cgYW5kIGRpZ2l0YWwgaW5wdXQgZG9lcyBub3QgYWx3YXlzIHdvcmsuXG4gMTQ5Olx0XHQgIEl0IGNhbiBwcm9kdWNlIGNvbnRpbnVvdXMgbm9pc2UuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHN3aXRjaCBhZ2FpblxuIDE1MDpcdFx0ICAoYW5kIGFnYWluKSBiZXR3ZWVuIGRpZ2l0YWwgYW5kIGFuYWxvZyBpbnB1dCB1bnRpbCBpdCB3b3Jrcy5cbiAxNTE6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyNzkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqUXVpY2sgSW5pdGlhbCBBc3Nlc3NtZW50KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIExvb2tzIGxpa2UgdGhlcmUgYXJlbiYjMzk7dCBhbnkgaW1tZWRpYXRlLCBnbGFyaW5nIHNwZWNpYWwgZGVwZW5kZW5jaWVzIHRvIGNvbnNpZGVyLiBBbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IOKAkyBsZXNzIHRvIHdyYW5nbGUgbGF0ZXIuIE5vdywgbGV0JiMzOTtzIGp1bXAgcmlnaHQgaW50byB0aGUgbWVhdCBvZiBpdCBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBTTkRfQlQ4N1hgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbWFwIG9mIHRoYXQgbW9kdWxlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgZ290Y2hhcyBsdXJraW5nIHdpdGhpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9wY2kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3NywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTc3Olx0Y29uZmlnIFNORF9CVDg3WFxuIDE3ODpcdFx0dHJpc3RhdGUgXCYjMzQ7QnQ4N3ggQXVkaW8gQ2FwdHVyZVwmIzM0O1xuIDE3OTpcdFx0c2VsZWN0IFNORF9QQ01cbiAxODA6XHRcdGhlbHBcbiAxODE6XHRcdCAgSWYgeW91IHdhbnQgdG8gcmVjb3JkIGF1ZGlvIGZyb20gVFYgY2FyZHMgYmFzZWQgb25cbiAxODI6XHRcdCAgQnJvb2t0cmVlIEJ0ODc4L0J0ODc5IGNoaXBzLCBzYXkgWSBoZXJlIGFuZCByZWFkXG4gMTgzOlx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zb3VuZC9jYXJkcy9idDg3eC5yc3RcdTAwM2UuXG4gMTg0Olx0XG4gMTg1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxODY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWJ0ODd4LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTYyNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBNaW5pbWFsIENvbXBsZXhpdHkqKgoKQWxyaWdodCwgbm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXQgbWUgYXMgcHJvYmxlbWF0aWMgaW4gdGhlIGRlcGVuZGVuY3kgZGVwYXJ0bWVudC4gU291bmRzIGxpa2Ugd2UmIzM5O3JlIGtlZXBpbmcgdGhpbmdzIHN0cmVhbWxpbmVkLCB3aGljaCBJIGFwcHJlY2lhdGUuIEFsd2F5cyBnb29kIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGJsb2F0LCBlc3BlY2lhbGx5IGVhcmx5IG9uLiBJdCBzaW1wbGlmaWVzIHRyb3VibGVzaG9vdGluZyBhbmQgZGVwbG95bWVudC4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgbWF0dGVyLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHB1bGxpbmcgdXAgZXZlcnl0aGluZyBJIGtub3cgYWJvdXQgYFNORF9DUzQyODFgLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGxhc3QgdGltZSBJIHRvdWNoZWQgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1NDpcdGNvbmZpZyBTTkRfQ1M0MjgxXG4gMjU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgTG9naWMgKFNvdW5kIEZ1c2lvbikgQ1M0MjgxXCYjMzQ7XG4gMjU2Olx0XHRkZXBlbmRzIG9uIEhBU19JT1BPUlRcbiAyNTc6XHRcdHNlbGVjdCBTTkRfT1BMM19MSUJcbiAyNTg6XHRcdHNlbGVjdCBTTkRfUkFXTUlESVxuIDI1OTpcdFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXG4gMjYwOlx0XHRoZWxwXG4gMjYxOlx0XHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBDaXJydXMgTG9naWMgQ1M0MjgxIGNoaXBzLlxuIDI2MjpcdFxuIDI2MzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxOTk1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyB0aGUgTGFuZHNjYXBlKioKCk9rYXksIHNvIHRoZSBkaXJlY3Rpb24gdGhpcyBhbmFseXNpcyB0YWtlcyBkZXBlbmRzIGhlYXZpbHkgb24gd2hldGhlciBgSEFTX0lPUE9SVGAgaXMgZGVmaW5lZC4gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgZmlyc3QgaHVyZGxlLiBCZWZvcmUgSSBjYW4gcHJvY2VlZCB3aXRoIGFueSBhc3N1bXB0aW9ucywgSSBuZWVkIHRvIGtub3cgaWYgdGhhdCBjb25kaXRpb24gaG9sZHMgdHJ1ZS4gSSBjYW4mIzM5O3QgbW92ZSBmb3J3YXJkIGJsaW5kbHkuCgpBZnRlciB0aGF0JiMzOTtzIGNsYXJpZmllZCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIHRvIGludmVzdGlnYXRlIGlzIHRoZSBzdGF0ZSBvZiBgU05EX0xPTEFgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RhdHVzLCBhbmQgaG93IGl0IGludGVycmVsYXRlcyB3aXRoIGBIQVNfSU9QT1JUYC4gTXkgYXBwcm9hY2ggd2lsbCBzaGlmdCBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9wY2kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzA3Olx0Y29uZmlnIFNORF9MT0xBXG4gNzA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtEaWdpZ3JhbSBMb2xhXCYjMzQ7XG4gNzA5Olx0XHRzZWxlY3QgU05EX1BDTVxuIDcxMDpcdFx0aGVscFxuIDcxMTpcdFx0ICBTYXkgWSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIERpZ2lncmFtIExvbGEgYm9hcmRzLlxuIDcxMjpcdFxuIDcxMzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gNzE0Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1sb2xhLlxuIDcxNTpcdFxuIDcxNjpcdGNvbmZpZyBTTkRfTFg2NDY0RVNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzMjUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqUXVpY2sgQXVkaXQ6IERlcGVuZGVuY2llcyAmYW1wOyBNb2R1bGUgQ2hlY2sqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGtlZXAgdGhpcyBjbGVhbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O05vIHNwZWNpYWwgZGVwZW5kZW5jaWVzLiYjMzQ7IEFsd2F5cyBnb29kIHRvIHN0YXJ0IHdpdGggYSBtaW5pbWFsIGJhc2VsaW5lLiBUaGUgbGVzcyBleHRyYSBiYWdnYWdlLCB0aGUgYmV0dGVyIGZvciBwb3J0YWJpbGl0eSBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLgoKTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBzcGVjaWZpY3MuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSB0aGlua2luZyBvZiB0aGUgcmlnaHQgdGhpbmcuIE9rYXksICYjMzQ7TGV0JiMzOTtzIGNoZWNrIGBTTkRfSERTUE1gLiYjMzQ7IFRoYXQmIzM5O3MgdGhlIGtleSBtb2R1bGUuIE5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoYXQuIEkgd2FudCB0byBjb25maXJtIHdoYXQgSSYjMzk7bSBleHBlY3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MjQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYyNDpcdGNvbmZpZyBTTkRfSERTUE1cbiA2MjU6XHRcdHRyaXN0YXRlIFwmIzM0O1JNRSBIYW1tZXJmYWxsIERTUCBNQURJL1JheURBVC9BSU9cJiMzNDtcbiA2MjY6XHRcdHNlbGVjdCBTTkRfSFdERVBcbiA2Mjc6XHRcdHNlbGVjdCBTTkRfUkFXTUlESVxuIDYyODpcdFx0c2VsZWN0IFNORF9QQ01cbiA2Mjk6XHRcdGhlbHBcbiA2MzA6XHRcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIFJNRSBIYW1tZXJmYWxsIERTUCBNQURJLFxuIDYzMTpcdFx0ICBSYXlEQVQgYW5kIEFJTyBzb3VuZGNhcmRzLlxuIDYzMjpcdFxuIDYzMzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNjg1CgkJCQkJCQlvdXRwdXQ6IDI2MAoJCQkJCQkJdGhvdWdodHM6IDMwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgQ2hhbmdlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE5vIHVudXN1YWwgZGVwZW5kZW5jaWVzIHRvIHdvcnJ5IGFib3V0LCB0aGF0JiMzOTtzIGdvb2QuIE15IGZvY3VzIGlzIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWZmZWN0ZWQ6IGBQQ0lgLCBgU05EYCwgYFNORF9QQ0lgLCBhbmQgYWxsIHRoZSBzb3VuZC1yZWxhdGVkIGRyaXZlcnMgSSBzZWUgbGlzdGVkIChgU05EX0hEQV9JTlRFTGAsIGBTTkRfQUQxODg5YCwgZXRjLiwgcmlnaHQgZG93biB0byBgQ09NUElMRV9URVNUYCkuIEl0JiMzOTtzIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgbGlzdCwgaW5kaWNhdGluZyB0aGlzIGhhcyBhIHBvdGVudGlhbGx5IGJyb2FkIGltcGFjdC4KClRoZSBrZXkgY2hhbmdlLCB0aGUgdGhpbmcgSSBuZWVkIHRvIGludmVzdGlnYXRlIGluIGRldGFpbCwgaXMgdGhpcyBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoaXMgaXMgYSBuZXcgY29yZSBQQ0kgZnVuY3Rpb24gdGhhdCBpbnRlZ3JhdGVzIGBwY2lfaW9yZW1hcF9iYXJgIGFuZCBgcGNpX3JlcXVlc3RfcmVnaW9uYCB3aXRoIGRldmljZSByZXNvdXJjZXMgKGRldnJlcyksIGFuZCBlc3NlbnRpYWxseSBjaGFuZ2VzIGhvdyB0aGUgZHJpdmVyIHByb2JlcyBhbmQgZG9lcyB0aGUgaW9yZW1hcCBvZiB0aGUgcmVnaW9uLCB1c2luZyBtZW1vcnkgbWFwcGVkIHJlZ2lvbi4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgdGhpcyB3aWxsIGJlIHVzZWQgZm9yIHNvdW5kIGRyaXZlcnMsIGZvcmNpbmcgbWVtb3J5IG1hcHBpbmcgb3ZlciBJTyBtYXBwaW5nIGluIG1hbnkgY2FzZXMuIFNvIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFBDSSBjb3JlIGFuZCBpbiBkcml2ZXIgcHJvYmluZyBsb2dpYyDigJMgYW5kIGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIFBDSSBkZXZpY2UgcHJvYmUsIHdoaWNoIG1ha2VzIGl0IGZ1enphYmxlLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcuCgpJJiMzOTttIG1ha2luZyBzdXJlIHRoYXQgdGhlIG5ldyBmdW5jdGlvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgaXMgZXhwb3J0ZWQgYmVjYXVzZSBpdCBpcyBhIGtleSBmdW5jdGlvbi4gSSBjYW4gY29uZmlybTogYEVYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7YCDigJMgcGVyZmVjdC4gQW5kIGl0JiMzOTtzIG5vdCBzdGF0aWMgb3IgaW5saW5lZCwgc28gaXQmIzM5O3MgZGlyZWN0bHkgYWNjZXNzaWJsZS4KCkkmIzM5O2xsIHByb2NlZWQgdXNpbmcgdGhlIHNldC1yZXN1bHRzIHRvb2wgZm9yIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7U05EJiMzNDssCiAgICAmIzM0O1NORF9QQ0kmIzM0OywKICAgICYjMzQ7U05EX0hEQV9JTlRFTCYjMzQ7LAogICAgJiMzNDtTTkRfQUQxODg5JiMzNDssCiAgICAmIzM0O1NORF9BVElJWFAmIzM0OywKICAgICYjMzQ7U05EX0FUSUlYUF9NT0RFTSYjMzQ7LAogICAgJiMzNDtTTkRfQVcyJiMzNDssCiAgICAmIzM0O1NORF9CVDg3WCYjMzQ7LAogICAgJiMzNDtTTkRfTE9MQSYjMzQ7LAogICAgJiMzNDtTTkRfSERTUE0mIzM0OywKICAgICYjMzQ7U05EX1NPQyYjMzQ7LAogICAgJiMzNDtTTkRfU09DX0xPT05HU09OX0kyU19QQ0kmIzM0OywKICAgICYjMzQ7Q09NUElMRV9URVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGNpbV9pb3JlbWFwX3JlZ2lvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCB3aGljaCB3cmFwcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZyZXMuIEl0IHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIHRoZW0gdG8gdXNlIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgdXNpbmcgSU8gbWFwcGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgUENJIGFuZCBkcml2ZXIgcHJvYmluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O1NORCYjMzQ7LAogICAgJiMzNDtTTkRfUENJJiMzNDssCiAgICAmIzM0O1NORF9IREFfSU5URUwmIzM0OywKICAgICYjMzQ7U05EX0FEMTg4OSYjMzQ7LAogICAgJiMzNDtTTkRfQVRJSVhQJiMzNDssCiAgICAmIzM0O1NORF9BVElJWFBfTU9ERU0mIzM0OywKICAgICYjMzQ7U05EX0FXMiYjMzQ7LAogICAgJiMzNDtTTkRfQlQ4N1gmIzM0OywKICAgICYjMzQ7U05EX0xPTEEmIzM0OywKICAgICYjMzQ7U05EX0hEU1BNJiMzNDssCiAgICAmIzM0O1NORF9TT0MmIzM0OywKICAgICYjMzQ7U05EX1NPQ19MT09OR1NPTl9JMlNfUENJJiMzNDssCiAgICAmIzM0O0NPTVBJTEVfVEVTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BjaW1faW9yZW1hcF9yZWdpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIFBDSSBmdW5jdGlvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgd2hpY2ggd3JhcHMgYHBjaV9pb3JlbWFwX2JhcmAgYW5kIGBwY2lfcmVxdWVzdF9yZWdpb25gIHdpdGggZGV2cmVzLiBJdCByZXBsYWNlcyBgcGNpbV9pb21hcF9yZWdpb25gIGluIHNldmVyYWwgc291bmQgZHJpdmVycywgZm9yY2luZyB0aGVtIHRvIHVzZSBtZW1vcnkgbWFwcGluZyBpbnN0ZWFkIG9mIHBvdGVudGlhbGx5IHVzaW5nIElPIG1hcHBpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFBDSSBhbmQgZHJpdmVyIHByb2JpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmE2ZjRjNjAyNGE5OWVhNjcyMzE3NmZkMjU0YzUyOTdmNjk1NWVkMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE1OjE1OjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvZGV2cmVzLmMgYi9kcml2ZXJzL3BjaS9kZXZyZXMuYwppbmRleCBmMDc1ZTc4ODFjM2E2Li5mYWE2NzhmZjViNTZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9kZXZyZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BjaS9kZXZyZXMuYwpAQCAtNjM5LDYgJiM0Mzs2MzksNTUgQEAgdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwKIH0KIEVYUE9SVF9TWU1CT0wocGNpbV9pb21hcF9yZWdpb24pOwogCiYjNDM7LyoqCiYjNDM7ICogcGNpbV9pb3JlbWFwX3JlZ2lvbiAtIFJlcXVlc3QgYW5kIGlvcmVtYXAgYSBQQ0kgQkFSCiYjNDM7ICogQHBkZXY6IFBDSSBkZXZpY2UgdG8gbWFwIElPIHJlc291cmNlcyBmb3IKJiM0MzsgKiBAYmFyOiBJbmRleCBvZiBhIEJBUiB0byBtYXAKJiM0MzsgKiBAbmFtZTogTmFtZSBvZiB0aGUgZHJpdmVyIHJlcXVlc3RpbmcgdGhlIHJlc291cmNlCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zOiBfX2lvbWVtIHBvaW50ZXIgb24gc3VjY2VzcywgYW4gSU9NRU1fRVJSX1BUUiBvbiBmYWlsdXJlLgomIzQzOyAqCiYjNDM7ICogTWFwcGluZyBhbmQgcmVnaW9uIHdpbGwgZ2V0IGF1dG9tYXRpY2FsbHkgcmVsZWFzZWQgb24gZHJpdmVyIGRldGFjaC4gSWYKJiM0MzsgKiBkZXNpcmVkLCByZWxlYXNlIG1hbnVhbGx5IG9ubHkgd2l0aCBwY2ltX2lvdW5tYXBfcmVnaW9uKCkuCiYjNDM7ICovCiYjNDM7dm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLAomIzQzOwkJCQkgIGNvbnN0IGNoYXIgKm5hbWUpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwlzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcmVzOwomIzQzOwomIzQzOwlpZiAoIXBjaV9iYXJfaW5kZXhfaXNfdmFsaWQoYmFyKSkKJiM0MzsJCXJldHVybiBJT01FTV9FUlJfUFRSKC1FSU5WQUwpOwomIzQzOwomIzQzOwlyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpOwomIzQzOwlpZiAoIXJlcykKJiM0MzsJCXJldHVybiBJT01FTV9FUlJfUFRSKC1FTk9NRU0pOwomIzQzOwomIzQzOwlyZXMtJmd0O3R5cGUgPSBQQ0lNX0FERFJfREVWUkVTX1RZUEVfUkVHSU9OX01BUFBJTkc7CiYjNDM7CXJlcy0mZ3Q7YmFyID0gYmFyOwomIzQzOwomIzQzOwlyZXQgPSBwY2lfcmVxdWVzdF9yZWdpb24ocGRldiwgYmFyLCBuYW1lKTsKJiM0MzsJaWYgKHJldCAhPSAwKQomIzQzOwkJZ290byBlcnJfcmVnaW9uOwomIzQzOwomIzQzOwlyZXMtJmd0O2Jhc2VhZGRyID0gcGNpX2lvcmVtYXBfYmFyKHBkZXYsIGJhcik7CiYjNDM7CWlmICghcmVzLSZndDtiYXNlYWRkcikgewomIzQzOwkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCWdvdG8gZXJyX2lvbWFwOwomIzQzOwl9CiYjNDM7CiYjNDM7CWRldnJlc19hZGQoJmFtcDtwZGV2LSZndDtkZXYsIHJlcyk7CiYjNDM7CXJldHVybiByZXMtJmd0O2Jhc2VhZGRyOwomIzQzOwomIzQzO2Vycl9pb21hcDoKJiM0MzsJcGNpX3JlbGVhc2VfcmVnaW9uKHBkZXYsIGJhcik7CiYjNDM7ZXJyX3JlZ2lvbjoKJiM0MzsJcGNpbV9hZGRyX2RldnJlc19mcmVlKHJlcyk7CiYjNDM7CiYjNDM7CXJldHVybiBJT01FTV9FUlJfUFRSKHJldCk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7CiYjNDM7CiAvKioKICAqIHBjaW1faW91bm1hcF9yZWdpb24gLSBVbm1hcCBhbmQgcmVsZWFzZSBhIFBDSSBCQVIKICAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG9wZXJhdGUgb24KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNpLmggYi9pbmNsdWRlL2xpbnV4L3BjaS5oCmluZGV4IDY0YjMwOGI2ZTYxYzEuLmU3YTJlY2UxMzhlYTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGNpLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wY2kuaApAQCAtMjUwNiw2ICYjNDM7MjUwNiw4IEBAIGludCBwY2ltX3JlcXVlc3RfYWxsX3JlZ2lvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IGNoYXIgKm5hbWUpOwogdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLCB1bnNpZ25lZCBsb25nIG1heGxlbik7CiB2b2lkIF9faW9tZW0gKnBjaW1faW9tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLAogCQkJCWNvbnN0IGNoYXIgKm5hbWUpOwomIzQzO3ZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwKJiM0MzsJCQkJICBjb25zdCBjaGFyICpuYW1lKTsKIHZvaWQgcGNpbV9pb3VubWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcik7CiB2b2lkIHBjaW1faW91bm1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdm9pZCBfX2lvbWVtICphZGRyKTsKIHZvaWQgX19pb21lbSAqIGNvbnN0ICpwY2ltX2lvbWFwX3RhYmxlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTsKZGlmZiAtLWdpdCBhL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jIGIvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmMKaW5kZXggMjhjNTVjNWEyZDJlZi4uNWRhMGFjMWVkNDA3MSAxMDA2NDQKLS0tIGEvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmMKQEAgLTE5MjYsNyAmIzQzOzE5MjYsNyBAQCBzdGF0aWMgaW50IGF6eF9maXJzdF9pbml0KHN0cnVjdCBhenggKmNoaXApCiAJaWYgKGNoaXAtJmd0O2RyaXZlcl90eXBlID09IEFaWF9EUklWRVJfWkhBT1hJTkhETUkpCiAJCWJ1cy0mZ3Q7cG9sbGluZ19tb2RlID0gMTsKIAotCWJ1cy0mZ3Q7cmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtJQ0ggSEQgYXVkaW8mIzM0Oyk7CiYjNDM7CWJ1cy0mZ3Q7cmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0lDSCBIRCBhdWRpbyYjMzQ7KTsKIAlpZiAoSVNfRVJSKGJ1cy0mZ3Q7cmVtYXBfYWRkcikpCiAJCXJldHVybiBQVFJfRVJSKGJ1cy0mZ3Q7cmVtYXBfYWRkcik7CiAKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hZDE4ODkuYyBiL3NvdW5kL3BjaS9hZDE4ODkuYwppbmRleCBmNGVjNDA0YzBkMTVhLi5hMjU3MGExNDhmNjA2IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYWQxODg5LmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2FkMTg4OS5jCkBAIC04MDQsNyAmIzQzOzgwNCw3IEBAIHNuZF9hZDE4ODlfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSkKIAljaGlwLSZndDtpcnEgPSAtMTsKIAogCS8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqLwotCWNoaXAtJmd0O2lvYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgY2FyZC0mZ3Q7ZHJpdmVyKTsKJiM0MzsJY2hpcC0mZ3Q7aW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtJmd0O2RyaXZlcik7CiAJaWYgKElTX0VSUihjaGlwLSZndDtpb2Jhc2UpKQogCQlyZXR1cm4gUFRSX0VSUihjaGlwLSZndDtpb2Jhc2UpOwogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXRpaXhwLmMgYi9zb3VuZC9wY2kvYXRpaXhwLmMKaW5kZXggYjczODI5NWI0MWU1ZC4uYjlmY2Q5MTNmYmM2ZiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2F0aWl4cC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9hdGlpeHAuYwpAQCAtMTUzMSw3ICYjNDM7MTUzMSw3IEBAIHN0YXRpYyBpbnQgc25kX2F0aWl4cF9pbml0KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSkKIAljaGlwLSZndDtjYXJkID0gY2FyZDsKIAljaGlwLSZndDtwY2kgPSBwY2k7CiAJY2hpcC0mZ3Q7aXJxID0gLTE7Ci0JY2hpcC0mZ3Q7cmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtBVEkgSVhQIEFDOTcmIzM0Oyk7CiYjNDM7CWNoaXAtJmd0O3JlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtBVEkgSVhQIEFDOTcmIzM0Oyk7CiAJaWYgKElTX0VSUihjaGlwLSZndDtyZW1hcF9hZGRyKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2hpcC0mZ3Q7cmVtYXBfYWRkcik7CiAJY2hpcC0mZ3Q7YWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jIGIvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jCmluZGV4IDhhYWViMTk3Y2U0NTguLmY2NTQ4MDQ4Mzk5NjYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMKQEAgLTExNjMsNyAmIzQzOzExNjMsNyBAQCBzdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpCiAJY2hpcC0mZ3Q7Y2FyZCA9IGNhcmQ7CiAJY2hpcC0mZ3Q7cGNpID0gcGNpOwogCWNoaXAtJmd0O2lycSA9IC0xOwotCWNoaXAtJmd0O3JlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QVRJIElYUCBNQzk3JiMzNDspOwomIzQzOwljaGlwLSZndDtyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QVRJIElYUCBNQzk3JiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7cmVtYXBfYWRkcikpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O3JlbWFwX2FkZHIpOwogCWNoaXAtJmd0O2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmMgYi9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jCmluZGV4IGJiMDI5NDU3OTNmMGMuLmE3NzNlOGE1NmMwYzUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYwpAQCAtMTYwLDcgJiM0MzsxNjAsNyBAQCBzbmRfdm9ydGV4X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpCiAJLy8gKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uCiAJLy8gR2V0IE1NSU8gYXJlYQogCS8vCi0JY2hpcC0mZ3Q7bW1pbyA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpOwomIzQzOwljaGlwLSZndDttbWlvID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIEtCVUlMRF9NT0ROQU1FKTsKIAlpZiAoSVNfRVJSKGNoaXAtJmd0O21taW8pKQogCQlyZXR1cm4gUFRSX0VSUihjaGlwLSZndDttbWlvKTsKIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jIGIvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jCmluZGV4IDYwYTg3MzIyZWFlNDkuLjI3ZmQ0NWQ2NDcwMTkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMKQEAgLTIyNCw3ICYjNDM7MjI0LDcgQEAgc3RhdGljIGludCBzbmRfYXcyX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsCiAJY2hpcC0mZ3Q7aXJxID0gLTE7CiAKIAkvKiAoMSkgUENJIHJlc291cmNlIGFsbG9jYXRpb24gKi8KLQljaGlwLSZndDtpb2Jhc2VfdmlydCA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtBdWRpb3dlcmsyJiMzNDspOwomIzQzOwljaGlwLSZndDtpb2Jhc2VfdmlydCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0F1ZGlvd2VyazImIzM0Oyk7CiAJaWYgKElTX0VSUihjaGlwLSZndDtpb2Jhc2VfdmlydCkpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O2lvYmFzZV92aXJ0KTsKIAljaGlwLSZndDtpb2Jhc2VfcGh5cyA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2J0ODd4LmMgYi9zb3VuZC9wY2kvYnQ4N3guYwppbmRleCAzODNkZWYxZjJhZjc0Li41NWY2Yjc5YmQ5ZWFjIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYnQ4N3guYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYnQ4N3guYwpAQCAtNjkwLDcgJiM0Mzs2OTAsNyBAQCBzdGF0aWMgaW50IHNuZF9idDg3eF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLAogCWNoaXAtJmd0O2lycSA9IC0xOwogCXNwaW5fbG9ja19pbml0KCZhbXA7Y2hpcC0mZ3Q7cmVnX2xvY2spOwogCi0JY2hpcC0mZ3Q7bW1pbyA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtCdDg3eCBhdWRpbyYjMzQ7KTsKJiM0MzsJY2hpcC0mZ3Q7bW1pbyA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0J0ODd4IGF1ZGlvJiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7bW1pbykpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O21taW8pOwogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3M0MjgxLmMgYi9zb3VuZC9wY2kvY3M0MjgxLmMKaW5kZXggZjUxZjRiYjYzNzY2NC4uZjAwMGRjYTk0ZTRmZCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NzNDI4MS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9jczQyODEuYwpAQCAtMTI5OCwxMiAmIzQzOzEyOTgsMTIgQEAgc3RhdGljIGludCBzbmRfY3M0MjgxX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsCiAJfQogCWNoaXAtJmd0O2R1YWxfY29kZWMgPSBkdWFsX2NvZGVjOwogCi0JY2hpcC0mZ3Q7YmEwID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0NTNDI4MSYjMzQ7KTsKJiM0MzsJY2hpcC0mZ3Q7YmEwID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7Q1M0MjgxJiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7YmEwKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2hpcC0mZ3Q7YmEwKTsKIAljaGlwLSZndDtiYTBfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApOwogCi0JY2hpcC0mZ3Q7YmExID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAxLCAmIzM0O0NTNDI4MSYjMzQ7KTsKJiM0MzsJY2hpcC0mZ3Q7YmExID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDEsICYjMzQ7Q1M0MjgxJiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7YmExKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2hpcC0mZ3Q7YmExKTsKIAljaGlwLSZndDtiYTFfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDEpOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNTUzMC5jIGIvc291bmQvcGNpL2NzNTUzMC5jCmluZGV4IDI5MmI2NWFhNzU4YTkuLjdjZjc0ZTc3OTcwY2QgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jczU1MzAuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvY3M1NTMwLmMKQEAgLTkxLDcgJiM0Mzs5MSw3IEBAIHN0YXRpYyBpbnQgc25kX2NzNTUzMF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLAogCWNoaXAtJmd0O2NhcmQgPSBjYXJkOwogCWNoaXAtJmd0O3BjaSA9IHBjaTsKIAotCW1lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtDUzU1MzAmIzM0Oyk7CiYjNDM7CW1lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0NTNTUzMCYjMzQ7KTsKIAlpZiAoSVNfRVJSKG1lbSkpCiAJCXJldHVybiBQVFJfRVJSKG1lbSk7CiAJY2hpcC0mZ3Q7cGNpX2Jhc2UgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuYyBiL3NvdW5kL3BjaS9sb2xhL2xvbGEuYwppbmRleCAzNGEzYmExN2RlYjRiLi5lYzI5MzhjNGI1MzIzIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvbG9sYS9sb2xhLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2xvbGEvbG9sYS5jCkBAIC01NzksMTQgJiM0Mzs1NzksMTQgQEAgc3RhdGljIGludCBsb2xhX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2ksIGludCBkZXYpCiAJCWNoaXAtJmd0O3NhbXBsZV9yYXRlX21pbiA9IDE2MDAwOwogCX0KIAotCWlvbWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBEUlZOQU1FKTsKJiM0MzsJaW9tZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgRFJWTkFNRSk7CiAJaWYgKElTX0VSUihpb21lbSkpCiAJCXJldHVybiBQVFJfRVJSKGlvbWVtKTsKIAogCWNoaXAtJmd0O2JhclswXS5yZW1hcF9hZGRyID0gaW9tZW07CiAJY2hpcC0mZ3Q7YmFyWzBdLmFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKIAotCWlvbWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTsKJiM0MzsJaW9tZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMiwgRFJWTkFNRSk7CiAJaWYgKElTX0VSUihpb21lbSkpCiAJCXJldHVybiBQVFJfRVJSKGlvbWVtKTsKIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMKaW5kZXggZDhiYmVkYmM4ZmY2OC4uOWIzNzU4Y2ExZDAwNCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jCkBAIC02NTExLDcgJiM0Mzs2NTExLDcgQEAgc3RhdGljIGludCBzbmRfaGRzcG1fY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwKIAogCXBjaV9zZXRfbWFzdGVyKGhkc3BtLSZndDtwY2kpOwogCi0JaGRzcG0tJmd0O2lvYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtoZHNwbSYjMzQ7KTsKJiM0MzsJaGRzcG0tJmd0O2lvYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O2hkc3BtJiMzNDspOwogCWlmIChJU19FUlIoaGRzcG0tJmd0O2lvYmFzZSkpCiAJCXJldHVybiBQVFJfRVJSKGhkc3BtLSZndDtpb2Jhc2UpOwogCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jIGIvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYwppbmRleCBmNWI1NjA0NjU3MDZmLi4zMmZjMGY1NDQ5MjgyIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmMKQEAgLTQxLDcgJiM0Mzs0MSw3IEBAIHN0YXRpYyBpbnQgbG9vbmdzb25faTJzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlpMnMtJmd0O2RldiA9IGRldjsKIAlwY2lfc2V0X2RydmRhdGEocGRldiwgaTJzKTsKIAotCWkycy0mZ3Q7cmVnX2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7CiYjNDM7CWkycy0mZ3Q7cmVnX2Jhc2UgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBkZXYsIDAsIERSSVZFUl9OQU1FKTsKIAlpZiAoSVNfRVJSKGkycy0mZ3Q7cmVnX2Jhc2UpKSB7CiAJCWRldl9lcnIoZGV2LCAmIzM0O2lvbWFwX3JlZ2lvbiBmYWlsZWRcbiYjMzQ7KTsKIAkJcmV0dXJuIFBUUl9FUlIoaTJzLSZndDtyZWdfYmFzZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTY5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIFBDSSBNTUlPIENoYW5nZSoqCgpBbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBpbiBgZHJpdmVycy9wY2kvZGV2cmVzLmNgLCB3aGljaCBpcyBhIG5ldyBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGFsc28gcmVwbGFjaW5nIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCB0aGlzIG5ldyBvbmUgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLiBIb2xkIG9uIGEgc2Vjb25kLCBJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBgcGNpbV9pb21hcF9yZWdpb25gIHVzZXMgYHBjaV9pb21hcGAsIGFuZCB0aGF0IGNhbiBoYW5kbGUgYm90aCBQcm9ncmFtbWVkIEkvTyAoUElPKSAqb3IqIE1lbW9yeSBNYXBwZWQgSS9PIChNTUlPKSwgcmlnaHQ/IEJ1dCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmA/IFRoYXTigJlzIHVzaW5nIGBwY2lfaW9yZW1hcF9iYXJgLCB3aGljaCBpcyAqc3RyaWN0bHkqIE1NSU8uIE9rYXksIHRoYXQmIzM5O3MgdGhlIGRpZmZlcmVuY2UsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGNoYW5nZSBpcyBzYWZlLgoKTGV0JiMzOTtzIHNlZeKApiBpcyB0aGVyZSBhIHJpc2sgb2YgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUgaGVyZT8gVGhlIGNvcmUgb2YgdGhpcyBpcyB0aGUgbmV3IGZ1bmN0aW9uLCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAsIGFuZCBpdCYjMzk7cyBhbGxvY2F0aW5nIGEgYHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzYCB1c2luZyBgcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KWAuIEhtbSwgdGhhdCBgcGNpbV9hZGRyX2RldnJlc19hbGxvY2AgaXMgaW50ZXJuYWwgdG8gYGRyaXZlcnMvcGNpL2RldnJlcy5jYCwgc28gSSBuZWVkIHRvIGNoZWNrIGl0cyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2ltX2FkZHJfZGV2cmVzX2FsbG9jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpL2RldnJlcy5jPTczPXN0YXRpYyB2b2lkIHBjaW1fYWRkcl9yZXNvdXJjZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzb3VyY2VfcmF3KVxuLS1cbmRyaXZlcnMvcGNpL2RldnJlcy5jLTkzLVxuZHJpdmVycy9wY2kvZGV2cmVzLmM6OTQ6c3RhdGljIHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzICpwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9wY2kvZGV2cmVzLmMtOTUte1xuLS1cbmRyaXZlcnMvcGNpL2RldnJlcy5jPTUzNT12b2lkIF9faW9tZW0gKnBjaW1faW9tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsIHVuc2lnbmVkIGxvbmcgbWF4bGVuKVxuLS1cbmRyaXZlcnMvcGNpL2RldnJlcy5jLTU0Mi1cbmRyaXZlcnMvcGNpL2RldnJlcy5jOjU0MzpcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG5kcml2ZXJzL3BjaS9kZXZyZXMuYy01NDQtXHRpZiAoIXJlcylcbi0tXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz02MDQ9dm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbi0tXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02MTItXG5kcml2ZXJzL3BjaS9kZXZyZXMuYzo2MTM6XHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjE0LVx0aWYgKCFyZXMpXG4tLVxuZHJpdmVycy9wY2kvZGV2cmVzLmM9NjUzPXZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbi0tXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02NjEtXG5kcml2ZXJzL3BjaS9kZXZyZXMuYzo2NjI6XHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjYzLVx0aWYgKCFyZXMpXG4tLVxuZHJpdmVycy9wY2kvZGV2cmVzLmM9NzcwPWludCBwY2ltX3JlcXVlc3RfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLCBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvcGNpL2RldnJlcy5jLTc3Ny1cbmRyaXZlcnMvcGNpL2RldnJlcy5jOjc3ODpcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG5kcml2ZXJzL3BjaS9kZXZyZXMuYy03NzktXHRpZiAoIXJlcylcbi0tXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz04ODA9dm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JhbmdlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxuLS1cbmRyaXZlcnMvcGNpL2RldnJlcy5jLTg4OC1cbmRyaXZlcnMvcGNpL2RldnJlcy5jOjg4OTpcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG5kcml2ZXJzL3BjaS9kZXZyZXMuYy04OTAtXHRpZiAoIXJlcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM3NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jYCoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgYHBjaW1fYWRkcl9kZXZyZXNfYWxsb2NgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcyBvZiB0aGlzIGZ1bmN0aW9uLCBhcyBpdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudCBpbiBob3cgd2UgaGFuZGxlIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uIHdpdGhpbiB0aGUgZGV2aWNlIHJlc291cmNlIGZyYW1ld29yay4gSSBrbm93IGl0JiMzOTtzIGEga2V5IHBhcnQgb2YgZW5zdXJpbmcgcHJvcGVyIGNsZWFudXAgYW5kIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzIHdpdGggUENJIGRldmljZXMuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEkgd2FudCB0byBzZWUgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgZGV2aWNlIHJlc291cmNlIG1hbmFnZW1lbnQgc3lzdGVtIGFuZCBmaWd1cmUgb3V0IGFueSBwb3RlbnRpYWwgZWRnZSBjYXNlcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZiBpbiBteSBjdXJyZW50IHByb2plY3QuIFNwZWNpZmljYWxseSwgaG93IGRvZXMgaXQgaGFuZGxlIHBvdGVudGlhbCBjb25mbGljdHMgZHVyaW5nIGFsbG9jYXRpb24sIGhvdyBpdCBkZWFscyB3aXRoIGZhaWx1cmVzLCBhbmQgaG93IGl04oCZcyBhZmZlY3RlZCBieSB0aGUgZGlmZmVyZW50IHJlc291cmNlIHR5cGVzIChtZW1vcnksIEkvTywgZXRjLikuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhpcyBjb2RlIHBhdGggc28gSSBjYW4gaW50ZWdyYXRlIHRoaXMgZnVuY3Rpb24gcHJvcGVybHkgd2l0aCBtaW5pbWFsIHJpc2sgdG8gbXkgb3duIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9kZXZyZXMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTA6XHRcdFx0YnJlYWs7XG4gIDkxOlx0XHR9XG4gIDkyOlx0fVxuICA5MzpcdFxuICA5NDpcdHN0YXRpYyBzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcGNpbV9hZGRyX2RldnJlc19hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiAgOTU6XHR7XG4gIDk2Olx0XHRzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcmVzO1xuICA5NzpcdFxuICA5ODpcdFx0cmVzID0gZGV2cmVzX2FsbG9jX25vZGUocGNpbV9hZGRyX3Jlc291cmNlX3JlbGVhc2UsIHNpemVvZigqcmVzKSxcbiAgOTk6XHRcdFx0XHRcdEdGUF9LRVJORUwsIGRldl90b19ub2RlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KSk7XG4gMTAwOlx0XHRpZiAocmVzKVxuIDEwMTpcdFx0XHRwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKHJlcyk7XG4gMTAyOlx0XHRyZXR1cm4gcmVzO1xuIDEwMzpcdH1cbiAxMDQ6XHRcbiAxMDU6XHQvKiBKdXN0IGZvciBjb25zaXN0ZW5jeSBhbmQgcmVhZGFiaWxpdHkuICovXG4gMTA2Olx0c3RhdGljIGlubGluZSB2b2lkIHBjaW1fYWRkcl9kZXZyZXNfZnJlZShzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcmVzKVxuIDEwNzpcdHtcbiAxMDg6XHRcdGRldnJlc19mcmVlKHJlcyk7XG4gMTA5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjczLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTQ1CgkJCQkJCQlvdXRwdXQ6IDE4NwoJCQkJCQkJdGhvdWdodHM6IDE4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZhY3RvcmluZyBQQ0kgSU8gTWFwcGluZzogQSBDbGVhbiBhbmQgU2FmZSBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZyBvZiB0aGUgUENJIElPIG1hcHBpbmcgQVBJLiBFc3NlbnRpYWxseSwgd2UmIzM5O3JlIGludHJvZHVjaW5nIGEgbmV3IGZ1bmN0aW9uLCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAsIHdoaWNoIGlzIHZlcnkgbXVjaCBsaWtlIHRoZSBleGlzdGluZyBgcGNpbV9pb21hcF9yZWdpb25gLCBidXQgdGhpcyBvbmUmIzM5O3MgdXNpbmcgYHBjaV9pb3JlbWFwX2JhcmAgaW5zdGVhZCBvZiBgcGNpX2lvbWFwYCBpbnRlcm5hbGx5LiBJJiMzOTttIHNlZWluZyB0aGF0IGl0JiMzOTtzIGp1c3QgYSBkaXJlY3QgcmVwbGFjZW1lbnQgaW4gc29tZSBzb3VuZCBkcml2ZXJzLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYW55IHN1YnRsZSBtZW1vcnkgcmlza3MsIHBhcnRpY3VsYXJseSB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZXMuIEJ1dCBhZnRlciByZXZpZXdpbmcgdGhlIGNvZGUsIEkmIzM5O20gY29uZmlkZW50IHRoYXQmIzM5O3Mgbm90IHRoZSBjYXNlLiBUaGUgc3RydWN0dXJlIGlzIGNsZWFyZWQgdXNpbmcgYHBjaW1fYWRkcl9kZXZyZXNfY2xlYXJgIGJlZm9yZSB1c2UsIGFuZCB0aGUgcmV0dXJuZWQgcG9pbnRlciBpcyBleHBsaWNpdGx5IGFuIElPIG1lbW9yeSBwb2ludGVyLiBObyB1c2VyIHNwYWNlIGNvcHlpbmcgaXMgaGFwcGVuaW5nIGhlcmUsIGFuZCBJIGRvbiYjMzk7dCBzZWUgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGJlaW5nIHVzZWQuIFRoaXMgcmVhbGx5IGFwcGVhcnMgdG8gYmUgYSBzdGFuZGFyZCBkcml2ZXIgQVBJIGNoYW5nZS4gSSYjMzk7bGwgZmxhZyB0aGlzIGFzIHNhZmUuIEkgYW0gY29tZm9ydGFibGUgc2V0dGluZyBOZWVkc0tNU0FOIHRvIGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBDSSBkZXZyZXMgQVBJIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBhbmQgcmVwbGFjZXMgYHBjaW1faW9tYXBfcmVnaW9uYCB3aXRoIGl0IGluIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhlIG5ldyBmdW5jdGlvbiBhbGxvY2F0ZXMgYSBgcGNpbV9hZGRyX2RldnJlc2Agc3RydWN0dXJlLCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCB2aWEgYHBjaW1fYWRkcl9kZXZyZXNfY2xlYXIoKWAsIGFuZCBtYXBzIFBDSSBCQVJzIHVzaW5nIGBwY2lfaW9yZW1hcF9iYXIoKWAuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIG9yIGNvbnRyb2wgZmxvdyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBtZW1vcnkgbWFwcGluZywgcmVzb3VyY2UgbGVha3MsIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMsIGFsbCBvZiB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTU6MzAuNjAzNjgwNTEzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3NTI2NTgyODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBDSVwiLFxuICAgIFwiU05EXCIsXG4gICAgXCJTTkRfUENJXCIsXG4gICAgXCJTTkRfSERBX0lOVEVMXCIsXG4gICAgXCJTTkRfQUQxODg5XCIsXG4gICAgXCJTTkRfQVRJSVhQXCIsXG4gICAgXCJTTkRfQVRJSVhQX01PREVNXCIsXG4gICAgXCJTTkRfQVcyXCIsXG4gICAgXCJTTkRfQlQ4N1hcIixcbiAgICBcIlNORF9MT0xBXCIsXG4gICAgXCJTTkRfSERTUE1cIixcbiAgICBcIlNORF9TT0NcIixcbiAgICBcIlNORF9TT0NfTE9PTkdTT05fSTJTX1BDSVwiLFxuICAgIFwiQ09NUElMRV9URVNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGNpbV9pb3JlbWFwX3JlZ2lvblwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCB3aGljaCB3cmFwcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZyZXMuIEl0IHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIHRoZW0gdG8gdXNlIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgdXNpbmcgSU8gbWFwcGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgUENJIGFuZCBkcml2ZXIgcHJvYmluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTU6MzAuNjAzNjg1NjEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjUwODQ2MTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmE2ZjRjNjAyNGE5OWVhNjcyMzE3NmZkMjU0YzUyOTdmNjk1NWVkMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNToxNToyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9kZXZyZXMuYyBiL2RyaXZlcnMvcGNpL2RldnJlcy5jXFxuaW5kZXggZjA3NWU3ODgxYzNhNi4uZmFhNjc4ZmY1YjU2ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3BjaS9kZXZyZXMuY1xcbisrKyBiL2RyaXZlcnMvcGNpL2RldnJlcy5jXFxuQEAgLTYzOSw2ICs2MzksNTUgQEAgdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHBjaW1faW9tYXBfcmVnaW9uKTtcXG4gXFxuKy8qKlxcbisgKiBwY2ltX2lvcmVtYXBfcmVnaW9uIC0gUmVxdWVzdCBhbmQgaW9yZW1hcCBhIFBDSSBCQVJcXG4rICogQHBkZXY6IFBDSSBkZXZpY2UgdG8gbWFwIElPIHJlc291cmNlcyBmb3JcXG4rICogQGJhcjogSW5kZXggb2YgYSBCQVIgdG8gbWFwXFxuKyAqIEBuYW1lOiBOYW1lIG9mIHRoZSBkcml2ZXIgcmVxdWVzdGluZyB0aGUgcmVzb3VyY2VcXG4rICpcXG4rICogUmV0dXJuczogX19pb21lbSBwb2ludGVyIG9uIHN1Y2Nlc3MsIGFuIElPTUVNX0VSUl9QVFIgb24gZmFpbHVyZS5cXG4rICpcXG4rICogTWFwcGluZyBhbmQgcmVnaW9uIHdpbGwgZ2V0IGF1dG9tYXRpY2FsbHkgcmVsZWFzZWQgb24gZHJpdmVyIGRldGFjaC4gSWZcXG4rICogZGVzaXJlZCwgcmVsZWFzZSBtYW51YWxseSBvbmx5IHdpdGggcGNpbV9pb3VubWFwX3JlZ2lvbigpLlxcbisgKi9cXG4rdm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxcbitcXHRcXHRcXHRcXHQgIGNvbnN0IGNoYXIgKm5hbWUpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFx0c3RydWN0IHBjaW1fYWRkcl9kZXZyZXMgKnJlcztcXG4rXFxuK1xcdGlmICghcGNpX2Jhcl9pbmRleF9pc192YWxpZChiYXIpKVxcbitcXHRcXHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRUlOVkFMKTtcXG4rXFxuK1xcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XFxuK1xcdGlmICghcmVzKVxcbitcXHRcXHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRU5PTUVNKTtcXG4rXFxuK1xcdHJlcy1cXHUwMDNldHlwZSA9IFBDSU1fQUREUl9ERVZSRVNfVFlQRV9SRUdJT05fTUFQUElORztcXG4rXFx0cmVzLVxcdTAwM2ViYXIgPSBiYXI7XFxuK1xcbitcXHRyZXQgPSBwY2lfcmVxdWVzdF9yZWdpb24ocGRldiwgYmFyLCBuYW1lKTtcXG4rXFx0aWYgKHJldCAhPSAwKVxcbitcXHRcXHRnb3RvIGVycl9yZWdpb247XFxuK1xcbitcXHRyZXMtXFx1MDAzZWJhc2VhZGRyID0gcGNpX2lvcmVtYXBfYmFyKHBkZXYsIGJhcik7XFxuK1xcdGlmICghcmVzLVxcdTAwM2ViYXNlYWRkcikge1xcbitcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRnb3RvIGVycl9pb21hcDtcXG4rXFx0fVxcbitcXG4rXFx0ZGV2cmVzX2FkZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCByZXMpO1xcbitcXHRyZXR1cm4gcmVzLVxcdTAwM2ViYXNlYWRkcjtcXG4rXFxuK2Vycl9pb21hcDpcXG4rXFx0cGNpX3JlbGVhc2VfcmVnaW9uKHBkZXYsIGJhcik7XFxuK2Vycl9yZWdpb246XFxuK1xcdHBjaW1fYWRkcl9kZXZyZXNfZnJlZShyZXMpO1xcbitcXG4rXFx0cmV0dXJuIElPTUVNX0VSUl9QVFIocmV0KTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MKHBjaW1faW9yZW1hcF9yZWdpb24pO1xcbitcXG4gLyoqXFxuICAqIHBjaW1faW91bm1hcF9yZWdpb24gLSBVbm1hcCBhbmQgcmVsZWFzZSBhIFBDSSBCQVJcXG4gICogQHBkZXY6IFBDSSBkZXZpY2UgdG8gb3BlcmF0ZSBvblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS5oIGIvaW5jbHVkZS9saW51eC9wY2kuaFxcbmluZGV4IDY0YjMwOGI2ZTYxYzEuLmU3YTJlY2UxMzhlYTYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9wY2kuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGNpLmhcXG5AQCAtMjUwNiw2ICsyNTA2LDggQEAgaW50IHBjaW1fcmVxdWVzdF9hbGxfcmVnaW9ucyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3QgY2hhciAqbmFtZSk7XFxuIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwgdW5zaWduZWQgbG9uZyBtYXhsZW4pO1xcbiB2b2lkIF9faW9tZW0gKnBjaW1faW9tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxcbiBcXHRcXHRcXHRcXHRjb25zdCBjaGFyICpuYW1lKTtcXG4rdm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxcbitcXHRcXHRcXHRcXHQgIGNvbnN0IGNoYXIgKm5hbWUpO1xcbiB2b2lkIHBjaW1faW91bm1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIpO1xcbiB2b2lkIHBjaW1faW91bm1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdm9pZCBfX2lvbWVtICphZGRyKTtcXG4gdm9pZCBfX2lvbWVtICogY29uc3QgKnBjaW1faW9tYXBfdGFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRpZmYgLS1naXQgYS9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuYyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXFxuaW5kZXggMjhjNTVjNWEyZDJlZi4uNWRhMGFjMWVkNDA3MSAxMDA2NDRcXG4tLS0gYS9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuY1xcbisrKyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXFxuQEAgLTE5MjYsNyArMTkyNiw3IEBAIHN0YXRpYyBpbnQgYXp4X2ZpcnN0X2luaXQoc3RydWN0IGF6eCAqY2hpcClcXG4gXFx0aWYgKGNoaXAtXFx1MDAzZWRyaXZlcl90eXBlID09IEFaWF9EUklWRVJfWkhBT1hJTkhETUkpXFxuIFxcdFxcdGJ1cy1cXHUwMDNlcG9sbGluZ19tb2RlID0gMTtcXG4gXFxuLVxcdGJ1cy1cXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXFxcIklDSCBIRCBhdWRpb1xcXCIpO1xcbitcXHRidXMtXFx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIklDSCBIRCBhdWRpb1xcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGJ1cy1cXHUwMDNlcmVtYXBfYWRkcikpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKGJ1cy1cXHUwMDNlcmVtYXBfYWRkcik7XFxuIFxcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYWQxODg5LmMgYi9zb3VuZC9wY2kvYWQxODg5LmNcXG5pbmRleCBmNGVjNDA0YzBkMTVhLi5hMjU3MGExNDhmNjA2IDEwMDY0NFxcbi0tLSBhL3NvdW5kL3BjaS9hZDE4ODkuY1xcbisrKyBiL3NvdW5kL3BjaS9hZDE4ODkuY1xcbkBAIC04MDQsNyArODA0LDcgQEAgc25kX2FkMTg4OV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxcbiBcXHRjaGlwLVxcdTAwM2VpcnEgPSAtMTtcXG4gXFxuIFxcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xcbi1cXHRjaGlwLVxcdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtXFx1MDAzZWRyaXZlcik7XFxuK1xcdGNoaXAtXFx1MDAzZWlvYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBjYXJkLVxcdTAwM2Vkcml2ZXIpO1xcbiBcXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZWlvYmFzZSkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKGNoaXAtXFx1MDAzZWlvYmFzZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXRpaXhwLmMgYi9zb3VuZC9wY2kvYXRpaXhwLmNcXG5pbmRleCBiNzM4Mjk1YjQxZTVkLi5iOWZjZDkxM2ZiYzZmIDEwMDY0NFxcbi0tLSBhL3NvdW5kL3BjaS9hdGlpeHAuY1xcbisrKyBiL3NvdW5kL3BjaS9hdGlpeHAuY1xcbkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBzdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXFxuIFxcdGNoaXAtXFx1MDAzZWNhcmQgPSBjYXJkO1xcbiBcXHRjaGlwLVxcdTAwM2VwY2kgPSBwY2k7XFxuIFxcdGNoaXAtXFx1MDAzZWlycSA9IC0xO1xcbi1cXHRjaGlwLVxcdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcXFwiQVRJIElYUCBBQzk3XFxcIik7XFxuK1xcdGNoaXAtXFx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkFUSSBJWFAgQUM5N1xcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZXJlbWFwX2FkZHIpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihjaGlwLVxcdTAwM2VyZW1hcF9hZGRyKTtcXG4gXFx0Y2hpcC1cXHUwMDNlYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMgYi9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmNcXG5pbmRleCA4YWFlYjE5N2NlNDU4Li5mNjU0ODA0ODM5OTY2IDEwMDY0NFxcbi0tLSBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xcbisrKyBiL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xcbkBAIC0xMTYzLDcgKzExNjMsNyBAQCBzdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXFxuIFxcdGNoaXAtXFx1MDAzZWNhcmQgPSBjYXJkO1xcbiBcXHRjaGlwLVxcdTAwM2VwY2kgPSBwY2k7XFxuIFxcdGNoaXAtXFx1MDAzZWlycSA9IC0xO1xcbi1cXHRjaGlwLVxcdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcXFwiQVRJIElYUCBNQzk3XFxcIik7XFxuK1xcdGNoaXAtXFx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkFUSSBJWFAgTUM5N1xcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZXJlbWFwX2FkZHIpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihjaGlwLVxcdTAwM2VyZW1hcF9hZGRyKTtcXG4gXFx0Y2hpcC1cXHUwMDNlYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuY1xcbmluZGV4IGJiMDI5NDU3OTNmMGMuLmE3NzNlOGE1NmMwYzUgMTAwNjQ0XFxuLS0tIGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuY1xcbisrKyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcXG5AQCAtMTYwLDcgKzE2MCw3IEBAIHNuZF92b3J0ZXhfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcXG4gXFx0Ly8gKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uXFxuIFxcdC8vIEdldCBNTUlPIGFyZWFcXG4gXFx0Ly9cXG4tXFx0Y2hpcC1cXHUwMDNlbW1pbyA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpO1xcbitcXHRjaGlwLVxcdTAwM2VtbWlvID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIEtCVUlMRF9NT0ROQU1FKTtcXG4gXFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2VtbWlvKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cXHUwMDNlbW1pbyk7XFxuIFxcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMgYi9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmNcXG5pbmRleCA2MGE4NzMyMmVhZTQ5Li4yN2ZkNDVkNjQ3MDE5IDEwMDY0NFxcbi0tLSBhL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuY1xcbisrKyBiL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuY1xcbkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIGludCBzbmRfYXcyX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuIFxcdGNoaXAtXFx1MDAzZWlycSA9IC0xO1xcbiBcXG4gXFx0LyogKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uICovXFxuLVxcdGNoaXAtXFx1MDAzZWlvYmFzZV92aXJ0ID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcXFwiQXVkaW93ZXJrMlxcXCIpO1xcbitcXHRjaGlwLVxcdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcXFwiQXVkaW93ZXJrMlxcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZWlvYmFzZV92aXJ0KSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cXHUwMDNlaW9iYXNlX3ZpcnQpO1xcbiBcXHRjaGlwLVxcdTAwM2Vpb2Jhc2VfcGh5cyA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYnQ4N3guYyBiL3NvdW5kL3BjaS9idDg3eC5jXFxuaW5kZXggMzgzZGVmMWYyYWY3NC4uNTVmNmI3OWJkOWVhYyAxMDA2NDRcXG4tLS0gYS9zb3VuZC9wY2kvYnQ4N3guY1xcbisrKyBiL3NvdW5kL3BjaS9idDg3eC5jXFxuQEAgLTY5MCw3ICs2OTAsNyBAQCBzdGF0aWMgaW50IHNuZF9idDg3eF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxcbiBcXHRjaGlwLVxcdTAwM2VpcnEgPSAtMTtcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmNoaXAtXFx1MDAzZXJlZ19sb2NrKTtcXG4gXFxuLVxcdGNoaXAtXFx1MDAzZW1taW8gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJCdDg3eCBhdWRpb1xcXCIpO1xcbitcXHRjaGlwLVxcdTAwM2VtbWlvID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJCdDg3eCBhdWRpb1xcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZW1taW8pKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihjaGlwLVxcdTAwM2VtbWlvKTtcXG4gXFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczQyODEuYyBiL3NvdW5kL3BjaS9jczQyODEuY1xcbmluZGV4IGY1MWY0YmI2Mzc2NjQuLmYwMDBkY2E5NGU0ZmQgMTAwNjQ0XFxuLS0tIGEvc291bmQvcGNpL2NzNDI4MS5jXFxuKysrIGIvc291bmQvcGNpL2NzNDI4MS5jXFxuQEAgLTEyOTgsMTIgKzEyOTgsMTIgQEAgc3RhdGljIGludCBzbmRfY3M0MjgxX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuIFxcdH1cXG4gXFx0Y2hpcC1cXHUwMDNlZHVhbF9jb2RlYyA9IGR1YWxfY29kZWM7XFxuIFxcbi1cXHRjaGlwLVxcdTAwM2ViYTAgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJDUzQyODFcXFwiKTtcXG4rXFx0Y2hpcC1cXHUwMDNlYmEwID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJDUzQyODFcXFwiKTtcXG4gXFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2ViYTApKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihjaGlwLVxcdTAwM2ViYTApO1xcbiBcXHRjaGlwLVxcdTAwM2ViYTBfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xcbiBcXG4tXFx0Y2hpcC1cXHUwMDNlYmExID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAxLCBcXFwiQ1M0MjgxXFxcIik7XFxuK1xcdGNoaXAtXFx1MDAzZWJhMSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAxLCBcXFwiQ1M0MjgxXFxcIik7XFxuIFxcdGlmIChJU19FUlIoY2hpcC1cXHUwMDNlYmExKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cXHUwMDNlYmExKTtcXG4gXFx0Y2hpcC1cXHUwMDNlYmExX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAxKTtcXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNTUzMC5jIGIvc291bmQvcGNpL2NzNTUzMC5jXFxuaW5kZXggMjkyYjY1YWE3NThhOS4uN2NmNzRlNzc5NzBjZCAxMDA2NDRcXG4tLS0gYS9zb3VuZC9wY2kvY3M1NTMwLmNcXG4rKysgYi9zb3VuZC9wY2kvY3M1NTMwLmNcXG5AQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW50IHNuZF9jczU1MzBfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcXG4gXFx0Y2hpcC1cXHUwMDNlY2FyZCA9IGNhcmQ7XFxuIFxcdGNoaXAtXFx1MDAzZXBjaSA9IHBjaTtcXG4gXFxuLVxcdG1lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkNTNTUzMFxcXCIpO1xcbitcXHRtZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkNTNTUzMFxcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKG1lbSkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKG1lbSk7XFxuIFxcdGNoaXAtXFx1MDAzZXBjaV9iYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuYyBiL3NvdW5kL3BjaS9sb2xhL2xvbGEuY1xcbmluZGV4IDM0YTNiYTE3ZGViNGIuLmVjMjkzOGM0YjUzMjMgMTAwNjQ0XFxuLS0tIGEvc291bmQvcGNpL2xvbGEvbG9sYS5jXFxuKysrIGIvc291bmQvcGNpL2xvbGEvbG9sYS5jXFxuQEAgLTU3OSwxNCArNTc5LDE0IEBAIHN0YXRpYyBpbnQgbG9sYV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpLCBpbnQgZGV2KVxcbiBcXHRcXHRjaGlwLVxcdTAwM2VzYW1wbGVfcmF0ZV9taW4gPSAxNjAwMDtcXG4gXFx0fVxcbiBcXG4tXFx0aW9tZW0gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpO1xcbitcXHRpb21lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBEUlZOQU1FKTtcXG4gXFx0aWYgKElTX0VSUihpb21lbSkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKGlvbWVtKTtcXG4gXFxuIFxcdGNoaXAtXFx1MDAzZWJhclswXS5yZW1hcF9hZGRyID0gaW9tZW07XFxuIFxcdGNoaXAtXFx1MDAzZWJhclswXS5hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XFxuIFxcbi1cXHRpb21lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMiwgRFJWTkFNRSk7XFxuK1xcdGlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDIsIERSVk5BTUUpO1xcbiBcXHRpZiAoSVNfRVJSKGlvbWVtKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoaW9tZW0pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcXG5pbmRleCBkOGJiZWRiYzhmZjY4Li45YjM3NThjYTFkMDA0IDEwMDY0NFxcbi0tLSBhL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcXG4rKysgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jXFxuQEAgLTY1MTEsNyArNjUxMSw3IEBAIHN0YXRpYyBpbnQgc25kX2hkc3BtX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuIFxcbiBcXHRwY2lfc2V0X21hc3RlcihoZHNwbS1cXHUwMDNlcGNpKTtcXG4gXFxuLVxcdGhkc3BtLVxcdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJoZHNwbVxcXCIpO1xcbitcXHRoZHNwbS1cXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJoZHNwbVxcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGhkc3BtLVxcdTAwM2Vpb2Jhc2UpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihoZHNwbS1cXHUwMDNlaW9iYXNlKTtcXG4gXFxuZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmMgYi9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jXFxuaW5kZXggZjViNTYwNDY1NzA2Zi4uMzJmYzBmNTQ0OTI4MiAxMDA2NDRcXG4tLS0gYS9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jXFxuKysrIGIvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuY1xcbkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBpbnQgbG9vbmdzb25faTJzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0aTJzLVxcdTAwM2VkZXYgPSBkZXY7XFxuIFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBpMnMpO1xcbiBcXG4tXFx0aTJzLVxcdTAwM2VyZWdfYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBkZXYsIDAsIERSSVZFUl9OQU1FKTtcXG4rXFx0aTJzLVxcdTAwM2VyZWdfYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGRldiwgMCwgRFJJVkVSX05BTUUpO1xcbiBcXHRpZiAoSVNfRVJSKGkycy1cXHUwMDNlcmVnX2Jhc2UpKSB7XFxuIFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiaW9tYXBfcmVnaW9uIGZhaWxlZFxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKGkycy1cXHUwMDNlcmVnX2Jhc2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNTozMi4yNTU2MTU5MDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyOTg5MzQ4Mzg3MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUENJXCIsXG4gICAgXCJTTkRcIixcbiAgICBcIlNORF9QQ0lcIixcbiAgICBcIlNORF9IREFfSU5URUxcIixcbiAgICBcIlNORF9BRDE4ODlcIixcbiAgICBcIlNORF9BVElJWFBcIixcbiAgICBcIlNORF9BVElJWFBfTU9ERU1cIixcbiAgICBcIlNORF9BVzJcIixcbiAgICBcIlNORF9CVDg3WFwiLFxuICAgIFwiU05EX0xPTEFcIixcbiAgICBcIlNORF9IRFNQTVwiLFxuICAgIFwiU05EX1NPQ1wiLFxuICAgIFwiU05EX1NPQ19MT09OR1NPTl9JMlNfUENJXCIsXG4gICAgXCJDT01QSUxFX1RFU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwY2ltX2lvcmVtYXBfcmVnaW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIFBDSSBmdW5jdGlvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgd2hpY2ggd3JhcHMgYHBjaV9pb3JlbWFwX2JhcmAgYW5kIGBwY2lfcmVxdWVzdF9yZWdpb25gIHdpdGggZGV2cmVzLiBJdCByZXBsYWNlcyBgcGNpbV9pb21hcF9yZWdpb25gIGluIHNldmVyYWwgc291bmQgZHJpdmVycywgZm9yY2luZyB0aGVtIHRvIHVzZSBtZW1vcnkgbWFwcGluZyBpbnN0ZWFkIG9mIHBvdGVudGlhbGx5IHVzaW5nIElPIG1hcHBpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFBDSSBhbmQgZHJpdmVyIHByb2JpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZhNmY0YzYwMjRhOTllYTY3MjMxNzZmZDI1NGM1Mjk3ZjY5NTVlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNToxNToyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2RldnJlcy5jIGIvZHJpdmVycy9wY2kvZGV2cmVzLmNcbmluZGV4IGYwNzVlNzg4MWMzYTYuLmZhYTY3OGZmNWI1NmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3BjaS9kZXZyZXMuY1xuKysrIGIvZHJpdmVycy9wY2kvZGV2cmVzLmNcbkBAIC02MzksNiArNjM5LDU1IEBAIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG4gfVxuIEVYUE9SVF9TWU1CT0wocGNpbV9pb21hcF9yZWdpb24pO1xuIFxuKy8qKlxuKyAqIHBjaW1faW9yZW1hcF9yZWdpb24gLSBSZXF1ZXN0IGFuZCBpb3JlbWFwIGEgUENJIEJBUlxuKyAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yXG4rICogQGJhcjogSW5kZXggb2YgYSBCQVIgdG8gbWFwXG4rICogQG5hbWU6IE5hbWUgb2YgdGhlIGRyaXZlciByZXF1ZXN0aW5nIHRoZSByZXNvdXJjZVxuKyAqXG4rICogUmV0dXJuczogX19pb21lbSBwb2ludGVyIG9uIHN1Y2Nlc3MsIGFuIElPTUVNX0VSUl9QVFIgb24gZmFpbHVyZS5cbisgKlxuKyAqIE1hcHBpbmcgYW5kIHJlZ2lvbiB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIElmXG4rICogZGVzaXJlZCwgcmVsZWFzZSBtYW51YWxseSBvbmx5IHdpdGggcGNpbV9pb3VubWFwX3JlZ2lvbigpLlxuKyAqL1xuK3ZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbitcdFx0XHRcdCAgY29uc3QgY2hhciAqbmFtZSlcbit7XG4rXHRpbnQgcmV0O1xuK1x0c3RydWN0IHBjaW1fYWRkcl9kZXZyZXMgKnJlcztcbitcbitcdGlmICghcGNpX2Jhcl9pbmRleF9pc192YWxpZChiYXIpKVxuK1x0XHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRUlOVkFMKTtcbitcbitcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG4rXHRpZiAoIXJlcylcbitcdFx0cmV0dXJuIElPTUVNX0VSUl9QVFIoLUVOT01FTSk7XG4rXG4rXHRyZXMtXHUwMDNldHlwZSA9IFBDSU1fQUREUl9ERVZSRVNfVFlQRV9SRUdJT05fTUFQUElORztcbitcdHJlcy1cdTAwM2ViYXIgPSBiYXI7XG4rXG4rXHRyZXQgPSBwY2lfcmVxdWVzdF9yZWdpb24ocGRldiwgYmFyLCBuYW1lKTtcbitcdGlmIChyZXQgIT0gMClcbitcdFx0Z290byBlcnJfcmVnaW9uO1xuK1xuK1x0cmVzLVx1MDAzZWJhc2VhZGRyID0gcGNpX2lvcmVtYXBfYmFyKHBkZXYsIGJhcik7XG4rXHRpZiAoIXJlcy1cdTAwM2ViYXNlYWRkcikge1xuK1x0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRnb3RvIGVycl9pb21hcDtcbitcdH1cbitcbitcdGRldnJlc19hZGQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJlcyk7XG4rXHRyZXR1cm4gcmVzLVx1MDAzZWJhc2VhZGRyO1xuK1xuK2Vycl9pb21hcDpcbitcdHBjaV9yZWxlYXNlX3JlZ2lvbihwZGV2LCBiYXIpO1xuK2Vycl9yZWdpb246XG4rXHRwY2ltX2FkZHJfZGV2cmVzX2ZyZWUocmVzKTtcbitcbitcdHJldHVybiBJT01FTV9FUlJfUFRSKHJldCk7XG4rfVxuK0VYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7XG4rXG4gLyoqXG4gICogcGNpbV9pb3VubWFwX3JlZ2lvbiAtIFVubWFwIGFuZCByZWxlYXNlIGEgUENJIEJBUlxuICAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG9wZXJhdGUgb25cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS5oIGIvaW5jbHVkZS9saW51eC9wY2kuaFxuaW5kZXggNjRiMzA4YjZlNjFjMS4uZTdhMmVjZTEzOGVhNiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGNpLmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGNpLmhcbkBAIC0yNTA2LDYgKzI1MDYsOCBAQCBpbnQgcGNpbV9yZXF1ZXN0X2FsbF9yZWdpb25zKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBjaGFyICpuYW1lKTtcbiB2b2lkIF9faW9tZW0gKnBjaW1faW9tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsIHVuc2lnbmVkIGxvbmcgbWF4bGVuKTtcbiB2b2lkIF9faW9tZW0gKnBjaW1faW9tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxuIFx0XHRcdFx0Y29uc3QgY2hhciAqbmFtZSk7XG4rdm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxuK1x0XHRcdFx0ICBjb25zdCBjaGFyICpuYW1lKTtcbiB2b2lkIHBjaW1faW91bm1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIpO1xuIHZvaWQgcGNpbV9pb3VubWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB2b2lkIF9faW9tZW0gKmFkZHIpO1xuIHZvaWQgX19pb21lbSAqIGNvbnN0ICpwY2ltX2lvbWFwX3RhYmxlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcbmRpZmYgLS1naXQgYS9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuYyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXG5pbmRleCAyOGM1NWM1YTJkMmVmLi41ZGEwYWMxZWQ0MDcxIDEwMDY0NFxuLS0tIGEvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmNcbisrKyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXG5AQCAtMTkyNiw3ICsxOTI2LDcgQEAgc3RhdGljIGludCBhenhfZmlyc3RfaW5pdChzdHJ1Y3QgYXp4ICpjaGlwKVxuIFx0aWYgKGNoaXAtXHUwMDNlZHJpdmVyX3R5cGUgPT0gQVpYX0RSSVZFUl9aSEFPWElOSERNSSlcbiBcdFx0YnVzLVx1MDAzZXBvbGxpbmdfbW9kZSA9IDE7XG4gXG4tXHRidXMtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJJQ0ggSEQgYXVkaW9cIik7XG4rXHRidXMtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcIklDSCBIRCBhdWRpb1wiKTtcbiBcdGlmIChJU19FUlIoYnVzLVx1MDAzZXJlbWFwX2FkZHIpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihidXMtXHUwMDNlcmVtYXBfYWRkcik7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2FkMTg4OS5jIGIvc291bmQvcGNpL2FkMTg4OS5jXG5pbmRleCBmNGVjNDA0YzBkMTVhLi5hMjU3MGExNDhmNjA2IDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2FkMTg4OS5jXG4rKysgYi9zb3VuZC9wY2kvYWQxODg5LmNcbkBAIC04MDQsNyArODA0LDcgQEAgc25kX2FkMTg4OV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbiBcbiBcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xuLVx0Y2hpcC1cdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtXHUwMDNlZHJpdmVyKTtcbitcdGNoaXAtXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtXHUwMDNlZHJpdmVyKTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2Vpb2Jhc2UpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZWlvYmFzZSk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F0aWl4cC5jIGIvc291bmQvcGNpL2F0aWl4cC5jXG5pbmRleCBiNzM4Mjk1YjQxZTVkLi5iOWZjZDkxM2ZiYzZmIDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2F0aWl4cC5jXG4rKysgYi9zb3VuZC9wY2kvYXRpaXhwLmNcbkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBzdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXG4gXHRjaGlwLVx1MDAzZWNhcmQgPSBjYXJkO1xuIFx0Y2hpcC1cdTAwM2VwY2kgPSBwY2k7XG4gXHRjaGlwLVx1MDAzZWlycSA9IC0xO1xuLVx0Y2hpcC1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcIkFUSSBJWFAgQUM5N1wiKTtcbitcdGNoaXAtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcIkFUSSBJWFAgQUM5N1wiKTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2VyZW1hcF9hZGRyKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2VyZW1hcF9hZGRyKTtcbiBcdGNoaXAtXHUwMDNlYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYyBiL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xuaW5kZXggOGFhZWIxOTdjZTQ1OC4uZjY1NDgwNDgzOTk2NiAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xuKysrIGIvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jXG5AQCAtMTE2Myw3ICsxMTYzLDcgQEAgc3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuIFx0Y2hpcC1cdTAwM2VjYXJkID0gY2FyZDtcbiBcdGNoaXAtXHUwMDNlcGNpID0gcGNpO1xuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbi1cdGNoaXAtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJBVEkgSVhQIE1DOTdcIik7XG4rXHRjaGlwLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJBVEkgSVhQIE1DOTdcIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcikpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcik7XG4gXHRjaGlwLVx1MDAzZWFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuY1xuaW5kZXggYmIwMjk0NTc5M2YwYy4uYTc3M2U4YTU2YzBjNSAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcbisrKyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcbkBAIC0xNjAsNyArMTYwLDcgQEAgc25kX3ZvcnRleF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuIFx0Ly8gKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uXG4gXHQvLyBHZXQgTU1JTyBhcmVhXG4gXHQvL1xuLVx0Y2hpcC1cdTAwM2VtbWlvID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBLQlVJTERfTU9ETkFNRSk7XG4rXHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZW1taW8pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZW1taW8pO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYyBiL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuY1xuaW5kZXggNjBhODczMjJlYWU0OS4uMjdmZDQ1ZDY0NzAxOSAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuY1xuKysrIGIvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jXG5AQCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyBpbnQgc25kX2F3Ml9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbiBcbiBcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xuLVx0Y2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJBdWRpb3dlcmsyXCIpO1xuK1x0Y2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcIkF1ZGlvd2VyazJcIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlaW9iYXNlX3ZpcnQpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZWlvYmFzZV92aXJ0KTtcbiBcdGNoaXAtXHUwMDNlaW9iYXNlX3BoeXMgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYnQ4N3guYyBiL3NvdW5kL3BjaS9idDg3eC5jXG5pbmRleCAzODNkZWYxZjJhZjc0Li41NWY2Yjc5YmQ5ZWFjIDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2J0ODd4LmNcbisrKyBiL3NvdW5kL3BjaS9idDg3eC5jXG5AQCAtNjkwLDcgKzY5MCw3IEBAIHN0YXRpYyBpbnQgc25kX2J0ODd4X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXHRjaGlwLVx1MDAzZWlycSA9IC0xO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VyZWdfbG9jayk7XG4gXG4tXHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiQnQ4N3ggYXVkaW9cIik7XG4rXHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJCdDg3eCBhdWRpb1wiKTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2VtbWlvKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2VtbWlvKTtcbiBcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3M0MjgxLmMgYi9zb3VuZC9wY2kvY3M0MjgxLmNcbmluZGV4IGY1MWY0YmI2Mzc2NjQuLmYwMDBkY2E5NGU0ZmQgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvY3M0MjgxLmNcbisrKyBiL3NvdW5kL3BjaS9jczQyODEuY1xuQEAgLTEyOTgsMTIgKzEyOTgsMTIgQEAgc3RhdGljIGludCBzbmRfY3M0MjgxX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXHR9XG4gXHRjaGlwLVx1MDAzZWR1YWxfY29kZWMgPSBkdWFsX2NvZGVjO1xuIFxuLVx0Y2hpcC1cdTAwM2ViYTAgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiQ1M0MjgxXCIpO1xuK1x0Y2hpcC1cdTAwM2ViYTAgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJDUzQyODFcIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlYmEwKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2ViYTApO1xuIFx0Y2hpcC1cdTAwM2ViYTBfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuIFxuLVx0Y2hpcC1cdTAwM2ViYTEgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDEsIFwiQ1M0MjgxXCIpO1xuK1x0Y2hpcC1cdTAwM2ViYTEgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMSwgXCJDUzQyODFcIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlYmExKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2ViYTEpO1xuIFx0Y2hpcC1cdTAwM2ViYTFfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDEpO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczU1MzAuYyBiL3NvdW5kL3BjaS9jczU1MzAuY1xuaW5kZXggMjkyYjY1YWE3NThhOS4uN2NmNzRlNzc5NzBjZCAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9jczU1MzAuY1xuKysrIGIvc291bmQvcGNpL2NzNTUzMC5jXG5AQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW50IHNuZF9jczU1MzBfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcbiBcdGNoaXAtXHUwMDNlY2FyZCA9IGNhcmQ7XG4gXHRjaGlwLVx1MDAzZXBjaSA9IHBjaTtcbiBcbi1cdG1lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJDUzU1MzBcIik7XG4rXHRtZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJDUzU1MzBcIik7XG4gXHRpZiAoSVNfRVJSKG1lbSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKG1lbSk7XG4gXHRjaGlwLVx1MDAzZXBjaV9iYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2xvbGEvbG9sYS5jIGIvc291bmQvcGNpL2xvbGEvbG9sYS5jXG5pbmRleCAzNGEzYmExN2RlYjRiLi5lYzI5MzhjNGI1MzIzIDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2xvbGEvbG9sYS5jXG4rKysgYi9zb3VuZC9wY2kvbG9sYS9sb2xhLmNcbkBAIC01NzksMTQgKzU3OSwxNCBAQCBzdGF0aWMgaW50IGxvbGFfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSwgaW50IGRldilcbiBcdFx0Y2hpcC1cdTAwM2VzYW1wbGVfcmF0ZV9taW4gPSAxNjAwMDtcbiBcdH1cbiBcbi1cdGlvbWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBEUlZOQU1FKTtcbitcdGlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpO1xuIFx0aWYgKElTX0VSUihpb21lbSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGlvbWVtKTtcbiBcbiBcdGNoaXAtXHUwMDNlYmFyWzBdLnJlbWFwX2FkZHIgPSBpb21lbTtcbiBcdGNoaXAtXHUwMDNlYmFyWzBdLmFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbiBcbi1cdGlvbWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTtcbitcdGlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDIsIERSVk5BTUUpO1xuIFx0aWYgKElTX0VSUihpb21lbSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGlvbWVtKTtcbiBcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jIGIvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uY1xuaW5kZXggZDhiYmVkYmM4ZmY2OC4uOWIzNzU4Y2ExZDAwNCAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcbisrKyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcbkBAIC02NTExLDcgKzY1MTEsNyBAQCBzdGF0aWMgaW50IHNuZF9oZHNwbV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFxuIFx0cGNpX3NldF9tYXN0ZXIoaGRzcG0tXHUwMDNlcGNpKTtcbiBcbi1cdGhkc3BtLVx1MDAzZWlvYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJoZHNwbVwiKTtcbitcdGhkc3BtLVx1MDAzZWlvYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcImhkc3BtXCIpO1xuIFx0aWYgKElTX0VSUihoZHNwbS1cdTAwM2Vpb2Jhc2UpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihoZHNwbS1cdTAwM2Vpb2Jhc2UpO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmMgYi9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jXG5pbmRleCBmNWI1NjA0NjU3MDZmLi4zMmZjMGY1NDQ5MjgyIDEwMDY0NFxuLS0tIGEvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuY1xuKysrIGIvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuY1xuQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIGludCBsb29uZ3Nvbl9pMnNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0aTJzLVx1MDAzZWRldiA9IGRldjtcbiBcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBpMnMpO1xuIFxuLVx0aTJzLVx1MDAzZXJlZ19iYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgMCwgRFJJVkVSX05BTUUpO1xuK1x0aTJzLVx1MDAzZXJlZ19iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7XG4gXHRpZiAoSVNfRVJSKGkycy1cdTAwM2VyZWdfYmFzZSkpIHtcbiBcdFx0ZGV2X2VycihkZXYsIFwiaW9tYXBfcmVnaW9uIGZhaWxlZFxcblwiKTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIoaTJzLVx1MDAzZXJlZ19iYXNlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE1OjMyLjI1NTYxODAzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzQ4NTgxNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwYXRjaCBpbnRyb2R1Y2luZyBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgaW4gYGRyaXZlcnMvcGNpL2RldnJlcy5jYCwgYW5kIGl0J3MgcmVwbGFjaW5nIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gYSBidW5jaCBvZiBzb3VuZCBkcml2ZXJzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZS4gTG9va2luZyBhdCB0aGUgY29kZSwgYHBjaW1faW9yZW1hcF9yZWdpb25gIHNlZW1zIHRvIGJlIGEgY29tcG9zaXRlIGZ1bmN0aW9uIOKAkyBpdCBjYWxscyBgcGNpbV9hZGRyX2RldnJlc19hbGxvY2AsIGBwY2lfcmVxdWVzdF9yZWdpb25gLCBgcGNpX2lvcmVtYXBfYmFyYCwgYW5kIHRoZW4gYGRldnJlc19hZGRgLiBUaGUgb2xkZXIgZnVuY3Rpb24sIGBwY2ltX2lvbWFwX3JlZ2lvbmAsIHVzZWQgYHBjaV9pb21hcGAsIHdoaWNoIGhhbmRsZWQgYm90aCBJTyBhbmQgbWVtb3J5IHJlZ2lvbnMuIFRoZSBrZXkgZGlmZmVyZW5jZSBoZXJlIGlzIHRoYXQgYHBjaW1faW9yZW1hcF9yZWdpb25gICpzcGVjaWZpY2FsbHkqIHVzZXMgYHBjaV9pb3JlbWFwX2JhcmAsIHNvIGl0J3Mgb25seSBmb3IgbWVtb3J5IHJlZ2lvbnMsIG5vdCBJTy5cblxuVGhlIG1vZGlmaWVkIHNvdW5kIGRyaXZlcnMgYXJlIGFsbCBsaXN0ZWQuIEl0IGxvb2tzIGxpa2UgcXVpdGUgYSBmZXcgZHJpdmVycyBhcmUgYWZmZWN0ZWQsIGluY2x1ZGluZyBzb21lIGNvbW1vbiBvbmVzIGxpa2UgYGludGVsLmNgLlxuXG5BIG5ldyBjb3JlIFBDSSBmdW5jdGlvbi4uLiB0aGF0IG1ha2VzIG1lIHRoaW5rIGFib3V0IGZ1enppbmcgaXQuIEdpdmVuIHRoZSBudW1iZXIgb2YgZHJpdmVycyB1c2luZyBpdCwgYW5kIHRoYXQgaXQncyBpbiB0aGUgUENJIGNvcmUsIGl0J3MgZGVmaW5pdGVseSB3b3J0aCBjb25zaWRlcmF0aW9uLiBCdXQgd2FpdCwgaXQncyBlc3NlbnRpYWxseSBhIHdyYXBwZXIgYXJvdW5kIGBwY2lfaW9yZW1hcF9iYXJgIGFuZCBgcGNpX3JlcXVlc3RfcmVnaW9uYCB1c2luZyBkZXZyZXMuIFNvLCBpdCdzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBiZWNhdXNlIGl0IGVuZm9yY2VzIG1lbW9yeSBtYXBwaW5nLCB1bmxpa2UgdGhlIGZsZXhpYmlsaXR5IGBwY2lfaW9tYXBgIHByb3ZpZGVkLiBXZSBjYW4gdHJpZ2dlciBpdCBkdXJpbmcgZHJpdmVyIHByb2JlIC0gbWFrZXMgc2Vuc2UuXG5cblNvIHRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBjYW4gd2UgZnV6eiBpdD8gSWYgd2UgY2FuIHRyaWdnZXIgdGhlIHByb2JlIG9mIG9uZSBvZiB0aGVzZSBkcml2ZXJzLCB3ZSBjYW4gZXhlcmNpc2UgdGhlIGNvZGUuIEhtbSwgY2FuIHdlIHRyaWdnZXIgYHNuZF9oZGFfaW50ZWxgIG9yIGFub3RoZXIgb25lPyBZZXMsIHdlIGNhbiB1c2Ugc3l6a2FsbGVyJ3MgcHNldWRvLXN5c2NhbGxzIGZvciBQQ0kuIFRoYXQncyBnb29kLCBgc3l6X3BjaV9zZXR1cGAgc2hvdWxkIGFsbG93IHVzIHRvIGdldCBhIGRyaXZlciB0byBwcm9iZSFcblxuUmlnaHQsIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBpcyBhIGJyYW5kIG5ldyBBUEkuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvcGNpL2RldnJlcy5jYCBmb3IgbW9yZSBpbmZvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTcyLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjM2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTY6MzYuNjA0MjAyNTk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjA5NjU3MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpbV9pb3JlbWFwX3JlZ2lvblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BjaS9kZXZyZXMuYz02NDA9RVhQT1JUX1NZTUJPTChwY2ltX2lvbWFwX3JlZ2lvbik7XFxuLS1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02NDItLyoqXFxuZHJpdmVycy9wY2kvZGV2cmVzLmM6NjQzOiAqIHBjaW1faW9yZW1hcF9yZWdpb24gLSBSZXF1ZXN0IGFuZCBpb3JlbWFwIGEgUENJIEJBUlxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTY0NC0gKiBAcGRldjogUENJIGRldmljZSB0byBtYXAgSU8gcmVzb3VyY2VzIGZvclxcbi0tXFxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjUyLSAqL1xcbmRyaXZlcnMvcGNpL2RldnJlcy5jOjY1Mzp2b2lkIF9faW9tZW0gKnBjaW1faW9yZW1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXFxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjU0LVxcdFxcdFxcdFxcdCAgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTY4OC19XFxuZHJpdmVycy9wY2kvZGV2cmVzLmM6Njg5OkVYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7XFxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjkwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9wY2kuaD0yNTA3PXZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXFxuaW5jbHVkZS9saW51eC9wY2kuaC0yNTA4LVxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgKm5hbWUpO1xcbmluY2x1ZGUvbGludXgvcGNpLmg6MjUwOTp2b2lkIF9faW9tZW0gKnBjaW1faW9yZW1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXFxuaW5jbHVkZS9saW51eC9wY2kuaC0yNTEwLVxcdFxcdFxcdFxcdCAgY29uc3QgY2hhciAqbmFtZSk7XFxuLS1cXG5zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuYz0xODkyPXN0YXRpYyBpbnQgYXp4X2ZpcnN0X2luaXQoc3RydWN0IGF6eCAqY2hpcClcXG4tLVxcbnNvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jLTE5MjgtXFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmM6MTkyOTpcXHRidXMtXFx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIklDSCBIRCBhdWRpb1xcXCIpO1xcbnNvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jLTE5MzAtXFx0aWYgKElTX0VSUihidXMtXFx1MDAzZXJlbWFwX2FkZHIpKVxcbi0tXFxuc291bmQvcGNpL2FkMTg4OS5jPTc4Nz1zbmRfYWQxODg5X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXFxuLS1cXG5zb3VuZC9wY2kvYWQxODg5LmMtODA2LVxcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xcbnNvdW5kL3BjaS9hZDE4ODkuYzo4MDc6XFx0Y2hpcC1cXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtXFx1MDAzZWRyaXZlcik7XFxuc291bmQvcGNpL2FkMTg4OS5jLTgwOC1cXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZWlvYmFzZSkpXFxuLS1cXG5zb3VuZC9wY2kvYXRpaXhwLmM9MTUyMD1zdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXFxuLS1cXG5zb3VuZC9wY2kvYXRpaXhwLmMtMTUzMy1cXHRjaGlwLVxcdTAwM2VpcnEgPSAtMTtcXG5zb3VuZC9wY2kvYXRpaXhwLmM6MTUzNDpcXHRjaGlwLVxcdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJBVEkgSVhQIEFDOTdcXFwiKTtcXG5zb3VuZC9wY2kvYXRpaXhwLmMtMTUzNS1cXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZXJlbWFwX2FkZHIpKVxcbi0tXFxuc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jPTExNTI9c3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxcbi0tXFxuc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jLTExNjUtXFx0Y2hpcC1cXHUwMDNlaXJxID0gLTE7XFxuc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jOjExNjY6XFx0Y2hpcC1cXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcXFwiQVRJIElYUCBNQzk3XFxcIik7XFxuc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jLTExNjctXFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2VyZW1hcF9hZGRyKSlcXG4tLVxcbnNvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmM9MTM3PXNuZF92b3J0ZXhfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcXG4tLVxcbnNvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmMtMTYyLVxcdC8vXFxuc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYzoxNjM6XFx0Y2hpcC1cXHUwMDNlbW1pbyA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBLQlVJTERfTU9ETkFNRSk7XFxuc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYy0xNjQtXFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2VtbWlvKSlcXG4tLVxcbnNvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYz0yMDM9c3RhdGljIGludCBzbmRfYXcyX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuLS1cXG5zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMtMjI2LVxcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xcbnNvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYzoyMjc6XFx0Y2hpcC1cXHUwMDNlaW9iYXNlX3ZpcnQgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkF1ZGlvd2VyazJcXFwiKTtcXG5zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMtMjI4LVxcdGlmIChJU19FUlIoY2hpcC1cXHUwMDNlaW9iYXNlX3ZpcnQpKVxcbi0tXFxuc291bmQvcGNpL2J0ODd4LmM9Njc4PXN0YXRpYyBpbnQgc25kX2J0ODd4X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuLS1cXG5zb3VuZC9wY2kvYnQ4N3guYy02OTItXFxuc291bmQvcGNpL2J0ODd4LmM6NjkzOlxcdGNoaXAtXFx1MDAzZW1taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkJ0ODd4IGF1ZGlvXFxcIik7XFxuc291bmQvcGNpL2J0ODd4LmMtNjk0LVxcdGlmIChJU19FUlIoY2hpcC1cXHUwMDNlbW1pbykpXFxuLS1cXG5zb3VuZC9wY2kvY3M0MjgxLmM9MTI4MD1zdGF0aWMgaW50IHNuZF9jczQyODFfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcXG4tLVxcbnNvdW5kL3BjaS9jczQyODEuYy0xMzAwLVxcbnNvdW5kL3BjaS9jczQyODEuYzoxMzAxOlxcdGNoaXAtXFx1MDAzZWJhMCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcXFwiQ1M0MjgxXFxcIik7XFxuc291bmQvcGNpL2NzNDI4MS5jLTEzMDItXFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2ViYTApKVxcbi0tXFxuc291bmQvcGNpL2NzNDI4MS5jLTEzMDUtXFxuc291bmQvcGNpL2NzNDI4MS5jOjEzMDY6XFx0Y2hpcC1cXHUwMDNlYmExID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDEsIFxcXCJDUzQyODFcXFwiKTtcXG5zb3VuZC9wY2kvY3M0MjgxLmMtMTMwNy1cXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZWJhMSkpXFxuLS1cXG5zb3VuZC9wY2kvY3M1NTMwLmM9Nzc9c3RhdGljIGludCBzbmRfY3M1NTMwX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuLS1cXG5zb3VuZC9wY2kvY3M1NTMwLmMtOTMtXFxuc291bmQvcGNpL2NzNTUzMC5jOjk0OlxcdG1lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcXFwiQ1M1NTMwXFxcIik7XFxuc291bmQvcGNpL2NzNTUzMC5jLTk1LVxcdGlmIChJU19FUlIobWVtKSlcXG4tLVxcbnNvdW5kL3BjaS9sb2xhL2xvbGEuYz01Mzc9c3RhdGljIGludCBsb2xhX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2ksIGludCBkZXYpXFxuLS1cXG5zb3VuZC9wY2kvbG9sYS9sb2xhLmMtNTgxLVxcbnNvdW5kL3BjaS9sb2xhL2xvbGEuYzo1ODI6XFx0aW9tZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgRFJWTkFNRSk7XFxuc291bmQvcGNpL2xvbGEvbG9sYS5jLTU4My1cXHRpZiAoSVNfRVJSKGlvbWVtKSlcXG4tLVxcbnNvdW5kL3BjaS9sb2xhL2xvbGEuYy01ODgtXFxuc291bmQvcGNpL2xvbGEvbG9sYS5jOjU4OTpcXHRpb21lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTtcXG5zb3VuZC9wY2kvbG9sYS9sb2xhLmMtNTkwLVxcdGlmIChJU19FUlIoaW9tZW0pKVxcbi0tXFxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYz02NDUxPXN0YXRpYyBpbnQgc25kX2hkc3BtX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuLS1cXG5zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jLTY1MTMtXFxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYzo2NTE0OlxcdGhkc3BtLVxcdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcImhkc3BtXFxcIik7XFxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYy02NTE1LVxcdGlmIChJU19FUlIoaGRzcG0tXFx1MDAzZWlvYmFzZSkpXFxuLS1cXG5zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jPTIyPXN0YXRpYyBpbnQgbG9vbmdzb25faTJzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbnNvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmMtNDMtXFxuc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYzo0NDpcXHRpMnMtXFx1MDAzZXJlZ19iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7XFxuc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYy00NS1cXHRpZiAoSVNfRVJSKGkycy1cXHUwMDNlcmVnX2Jhc2UpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE2OjM4Ljk2NTE3NzQxNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMDE5NTQ0MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTmV3IFBDSSBpb3JlbWFwIEFQSSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgbmV3IGZ1bmN0aW9uLCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAsIGludHJvZHVjZWQgaW4gYGRyaXZlcnMvcGNpL2RldnJlcy5jYC4gIEl0J3MgYmFzaWNhbGx5IGEgZGV2cmVzLW1hbmFnZWQgd3JhcHBlciBhcm91bmQgYHBjaV9pb3JlbWFwX2JhcmAgYW5kIGBwY2lfcmVxdWVzdF9yZWdpb25gLiAgSXQncyBpbXBvcnRhbnQgYmVjYXVzZSBpdCdzIGEgY29yZSBQQ0kgZnVuY3Rpb24sIGFuZCBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHNldmVyYWwgZHJpdmVyIHByb2JlIGZ1bmN0aW9ucy4gIERlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZyBwb3RlbnRpYWwg4oCTIGEgbmV3IGZ1bmN0aW9uIGxpa2UgdGhpcyBjb3VsZCBoYXJib3Igc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIHRoYXQgd2VyZW4ndCBjYXVnaHQgaW4gaW5pdGlhbCB0ZXN0aW5nLlxuXG5NeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgaXRzZWxmLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbWluaW1hbCBjb25maWd1cmF0aW9uIG5lZWRlZCB0byBidWlsZCBhbmQgdGVzdCB0aGlzLiBMb29rcyBsaWtlIGBDT05GSUdfUENJYCBpcyB0aGUgY3JpdGljYWwgcmVxdWlyZW1lbnQgdG8gZ2V0IGBkcml2ZXJzL3BjaS9kZXZyZXMuY2AgZW5hYmxlZC5cblxuRm9yIHRoZSBkcml2ZXIgc2lkZSBvZiB0aGluZ3MsIEknbGwgbmVlZCBzb21lIGV4YW1wbGVzIHRoYXQgdXNlIHRoaXMgZnVuY3Rpb24uIFNvdW5kIGRyaXZlcnMgc2VlbSBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSdtIGdvaW5nIHRvIGVuYWJsZSBhIGZldyBvZiB0aG9zZS4gU28gZmFyIEknbGwgY2hlY2sgb24gYENPTkZJR19TTkRfSERBX0lOVEVMYCwgYENPTkZJR19TTkRfQUQxODg5YCwgYENPTkZJR19TTkRfQVRJSVhQYCwgYENPTkZJR19TTkRfQVRJSVhQX01PREVNYCwgYENPTkZJR19TTkRfQVU4ODEwYCwgYENPTkZJR19TTkRfQVU4ODIwYCwgYENPTkZJR19TTkRfQVU4ODMwYCwgYENPTkZJR19TTkRfQVcyYCwgYENPTkZJR19TTkRfQlQ4N1hgLCBgQ09ORklHX1NORF9DUzQyODFgLCBgQ09ORklHX1NORF9DUzU1MzBgLCBgQ09ORklHX1NORF9MT0xBYCwgYENPTkZJR19TTkRfSERTUE1gLCBgQ09ORklHX1NORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhlc2UgZHJpdmVycyB0byB2ZXJpZnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjMyLCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE2OjQ3LjA2NzEzNjE5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjk1NDkwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9IREFfSU5URUxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc9MzM9Y29uZmlnIFNORF9IREFfQ09ERUNfSERNSV9JTlRFTFxcbi0tXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWctNDAtXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc6NDE6Y29uZmlnIFNORF9IREFfSU5URUxfSERNSV9TSUxFTlRfU1RSRUFNXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWctNDItXFx0Ym9vbCBcXFwiRW5hYmxlIFNpbGVudCBTdHJlYW0gYWx3YXlzIGZvciBIRE1JXFxcIlxcbi0tXFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5zb3VuZC9oZGEvY29udHJvbGxlcnMvS2NvbmZpZzoyOmNvbmZpZyBTTkRfSERBX0lOVEVMXFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSEQgQXVkaW8gUENJXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNjo0OS4zOTY2OTAzNDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxMjYxMjEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX0FEMTg4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9wY2kvS2NvbmZpZz0xMT1pZiBTTkRfUENJXFxuc291bmQvcGNpL0tjb25maWctMTItXFxuc291bmQvcGNpL0tjb25maWc6MTM6Y29uZmlnIFNORF9BRDE4ODlcXG5zb3VuZC9wY2kvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZSBcXFwiQW5hbG9nIERldmljZXMgQUQxODg5XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNjo1MS42MDkzMDc2NThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1ODY2MzQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX0FUSUlYUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9wY2kvS2NvbmZpZz02NT1jb25maWcgU05EX0FTSUhQSVxcbi0tXFxuc291bmQvcGNpL0tjb25maWctNzYtXFxuc291bmQvcGNpL0tjb25maWc6Nzc6Y29uZmlnIFNORF9BVElJWFBcXG5zb3VuZC9wY2kvS2NvbmZpZy03OC1cXHR0cmlzdGF0ZSBcXFwiQVRJIElYUCBBQzk3IENvbnRyb2xsZXJcXFwiXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy04Ny1cXG5zb3VuZC9wY2kvS2NvbmZpZzo4ODpjb25maWcgU05EX0FUSUlYUF9NT0RFTVxcbnNvdW5kL3BjaS9LY29uZmlnLTg5LVxcdHRyaXN0YXRlIFxcXCJBVEkgSVhQIE1vZGVtXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNjo1My43Njc5NzkwNThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0OTY1OTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX0FVODhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvcGNpL0tjb25maWc9ODg9Y29uZmlnIFNORF9BVElJWFBfTU9ERU1cXG4tLVxcbnNvdW5kL3BjaS9LY29uZmlnLTk3LVxcbnNvdW5kL3BjaS9LY29uZmlnOjk4OmNvbmZpZyBTTkRfQVU4ODEwXFxuc291bmQvcGNpL0tjb25maWctOTktXFx0dHJpc3RhdGUgXFxcIkF1cmVhbCBBZHZhbnRhZ2VcXFwiXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy0xMTItXFxuc291bmQvcGNpL0tjb25maWc6MTEzOmNvbmZpZyBTTkRfQVU4ODIwXFxuc291bmQvcGNpL0tjb25maWctMTE0LVxcdHRyaXN0YXRlIFxcXCJBdXJlYWwgVm9ydGV4XFxcIlxcbi0tXFxuc291bmQvcGNpL0tjb25maWctMTI2LVxcbnNvdW5kL3BjaS9LY29uZmlnOjEyNzpjb25maWcgU05EX0FVODgzMFxcbnNvdW5kL3BjaS9LY29uZmlnLTEyOC1cXHR0cmlzdGF0ZSBcXFwiQXVyZWFsIFZvcnRleCAyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNjo1Ni4wMTc2NDU5OThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA5MDMzNTM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYXVkaW8gbGFuZHNjYXBlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpbnZvbHZlcyBhIHF1aWNrIG1lbnRhbCBzY2FuIG9mIHRob3NlIGZhbWlsaWFyIHNvdW5kIGRyaXZlcnM6IGBTTkRfQVcyYCwgYFNORF9CVDg3WGAsIGBTTkRfQ1M0MjgxYCwgYFNORF9DUzU1MzBgLCBgU05EX0xPTEFgLCBhbmQgYFNORF9IRFNQTWAuICBJJ20gaW1tZWRpYXRlbHkgY2F0YWxvZ2luZyB0aGVtIGluIG15IG1pbmQsIHByb2JhYmx5IGNyb3NzLXJlZmVyZW5jaW5nIHRoZW0gYWdhaW5zdCBrbm93biBhcmNoaXRlY3R1cmVzIG9yIHBhc3QgZXhwZXJpZW5jZXMgd2l0aCBzaW1pbGFyIGhhcmR3YXJlLiAgRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gbWVudGFsbHkgbWFwIHRoZXNlIHRvIG15IGludGVybmFsIGRhdGFiYXNlIG9mIGF1ZGlvIGRldmljZXMgYW5kIHRoZWlyIHR5cGljYWwgYmVoYXZpb3JzLiBBcmUgdGhlcmUgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3M/IEFueSBzdGFuZG91dCBwZXJmb3JtZXJzPyAgSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgc29tZSBpbml0aWFsIGFzc3VtcHRpb25zIGFib3V0IHRoZWlyIGludGVuZGVkIHVzZSBiYXNlZCBvbiB0aGVpciBuYW1lcy4gTGV0J3Mgc2VlIHdoYXQgbmVlZHMgYSBjbG9zZXIgbG9vaywgc2hhbGwgd2U/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMDg1LCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MDMuMTA3OTgzNDgzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAzMDczNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfQVcyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnPTEyNz1jb25maWcgU05EX0FVODgzMFxcbi0tXFxuc291bmQvcGNpL0tjb25maWctMTQxLVxcbnNvdW5kL3BjaS9LY29uZmlnOjE0Mjpjb25maWcgU05EX0FXMlxcbnNvdW5kL3BjaS9LY29uZmlnLTE0My1cXHR0cmlzdGF0ZSBcXFwiRW1hZ2ljIEF1ZGlvd2VyayAyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzowNS4zMTEwNjExNDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTM4MDMyOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9CVDg3WFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9wY2kvS2NvbmZpZz0xNTY9Y29uZmlnIFNORF9BWlQzMzI4XFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy0xNzYtXFxuc291bmQvcGNpL0tjb25maWc6MTc3OmNvbmZpZyBTTkRfQlQ4N1hcXG5zb3VuZC9wY2kvS2NvbmZpZy0xNzgtXFx0dHJpc3RhdGUgXFxcIkJ0ODd4IEF1ZGlvIENhcHR1cmVcXFwiXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy0xODctXFxuc291bmQvcGNpL0tjb25maWc6MTg4OmNvbmZpZyBTTkRfQlQ4N1hfT1ZFUkNMT0NLXFxuc291bmQvcGNpL0tjb25maWctMTg5LVxcdGJvb2wgXFxcIkJ0ODd4IEF1ZGlvIG92ZXJjbG9ja2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MDcuNjA0ODcwMDMxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQwNzUwODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfQ1M0MjgxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnPTIyOD1jb25maWcgU05EX09YWUdFTlxcbi0tXFxuc291bmQvcGNpL0tjb25maWctMjUzLVxcbnNvdW5kL3BjaS9LY29uZmlnOjI1NDpjb25maWcgU05EX0NTNDI4MVxcbnNvdW5kL3BjaS9LY29uZmlnLTI1NS1cXHR0cmlzdGF0ZSBcXFwiQ2lycnVzIExvZ2ljIChTb3VuZCBGdXNpb24pIENTNDI4MVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MTAuMzQ1NjI2MjE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTkyMzM4NzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfQ1M1NTMwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnPTI3OT1jb25maWcgU05EX0NTNDZYWF9ORVdfRFNQXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy0yODctXFxuc291bmQvcGNpL0tjb25maWc6Mjg4OmNvbmZpZyBTTkRfQ1M1NTMwXFxuc291bmQvcGNpL0tjb25maWctMjg5LVxcdHRyaXN0YXRlIFxcXCJDUzU1MzAgQXVkaW9cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE3OjEyLjMzNzk3MDQ5OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzUyMDU2Nzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKlF1aWNrIEF1ZGlvIERyaXZlciBDaGVjayoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQgbWUgcnVuIHRocm91Z2ggYSBxdWljayBtZW50YWwgY2hlY2tsaXN0IG9uIHRoZXNlIGF1ZGlvIGRyaXZlcnM6IGBTTkRfTE9MQWAsIGBTTkRfSERTUE1gLCBhbmQgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAuIEkga25vdyB0aGVzZSBhcmUgZGlmZmVyZW50LCBzbyBJJ20gbGlrZWx5IGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLCBkZXBlbmRlbmNpZXMsIG9yIG92ZXJsYXAsIGFuZCBtYWtpbmcgc3VyZSB0aGF0IEknbSB1cCB0byBkYXRlIG9uIHRoZXNlIGRyaXZlcnMgdG8gaWRlbnRpZnkgaWYgdGhlcmUgYXJlIGFueSBuZXcgdXBkYXRlcyBhbmQgZW5zdXJlIHRoZXkncmUgYXBwcm9wcmlhdGVseSBzZXQuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBkb2N1bWVudCBteSBmaW5kaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4MzIsIk91dHB1dFRva2VucyI6NjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzoxNy4wOTAwMjk2MjRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzQ5NDA4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9MT0xBXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnPTY5OD1jb25maWcgU05EX0tPUkcxMjEyXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy03MDYtXFxuc291bmQvcGNpL0tjb25maWc6NzA3OmNvbmZpZyBTTkRfTE9MQVxcbnNvdW5kL3BjaS9LY29uZmlnLTcwOC1cXHR0cmlzdGF0ZSBcXFwiRGlnaWdyYW0gTG9sYVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MTkuMzI0OTc1MDk0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU2OTgxNjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfSERTUE1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvcGNpL0tjb25maWc9NjIxPWNvbW1lbnQgXFxcIkRvbid0IGZvcmdldCB0byBhZGQgYnVpbHQtaW4gZmlybXdhcmVzIGZvciBIRFNQIGRyaXZlclxcXCJcXG4tLVxcbnNvdW5kL3BjaS9LY29uZmlnLTYyMy1cXG5zb3VuZC9wY2kvS2NvbmZpZzo2MjQ6Y29uZmlnIFNORF9IRFNQTVxcbnNvdW5kL3BjaS9LY29uZmlnLTYyNS1cXHR0cmlzdGF0ZSBcXFwiUk1FIEhhbW1lcmZhbGwgRFNQIE1BREkvUmF5REFUL0FJT1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MjEuNDgxOTYyMDU0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDM0MjUxNDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvc29jL2xvb25nc29uL0tjb25maWc9ND1jb25maWcgU05EX1NPQ19MT09OR1NPTl9DQVJEXFxuLS1cXG5zb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZy0xNS1cXG5zb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZzoxNjpjb25maWcgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJXFxuc291bmQvc29jL2xvb25nc29uL0tjb25maWctMTctXFx0dHJpc3RhdGUgXFxcIkxvb25nc29uIEkyUy1QQ0kgRGV2aWNlIERyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MjMuNTE2MjIwNTA1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2ODc4MDg3MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHBjaW1faW9yZW1hcF9yZWdpb25gIENoYW5nZSBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIHRoaXMgYHBjaW1faW9yZW1hcF9yZWdpb25gIGZ1bmN0aW9uIGlzIHRoZSBuZXcgaG90bmVzcywgcmVwbGFjaW5nIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gYSBidW5jaCBvZiBzb3VuZCBkcml2ZXJzLiBUaGUga2V5IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQgbWFuZGF0ZXMgdGhlIHVzZSBvZiBgcGNpX2lvcmVtYXBfYmFyYCBpbnN0ZWFkIG9mIGBwY2lfaW9tYXBgLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIHNoaWZ0LCBsaW1pdGluZyB1cyB0byBNRU0gQkFScywgbm90IElPIEJBUnMuIFRoYXQgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSB0aG91Z2h0OiBUaGlzIGlzIHJpcGUgZm9yIGZ1enppbmcuXG5cbk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgY2hhbmdlIG5lY2Vzc2l0YXRlcyBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24gZm9yIHRoZSBmdW5jdGlvbiBpdHNlbGYuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UuIEkga25vdyBJJ2xsIG5lZWQgYFBDSWAsIG9idmlvdXNseSwgYW5kIHRoZW4gYFNORF9QQ0lgIHRvIHRhcmdldCBzb3VuZCBkZXZpY2VzLCBidXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIGBTTkRfUENJYCBpcyAqc3RyaWN0bHkqIHJlcXVpcmVkLCBvciBpZiB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBqdXN0IHRoZSBkcml2ZXIgY29uZmlncy4gVGhhdCdzIGEgZ29vZCBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzg5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MzEuMjA0MDMxNjQ0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTI2OTQ4NTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfUENJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnLTMtXFxuc291bmQvcGNpL0tjb25maWc6NDptZW51Y29uZmlnIFNORF9QQ0lcXG5zb3VuZC9wY2kvS2NvbmZpZy01LVxcdGJvb2wgXFxcIlBDSSBzb3VuZCBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzozMy4zMzA5ODkxODVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3MTQ3NTQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgU291bmQgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGNvbmZpcm1lZC4gV2UgZGVmaW5pdGVseSBuZWVkIGBTTkRfUENJYC4gVGhhdCdzIGEgZ2l2ZW4uIE5vdywgbGV0J3MgcGl2b3QgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgU05EX0hEQV9JTlRFTGAuIEkgbmVlZCB0byBlbnN1cmUgaXQncyBub3QgaW1wbGljaXRseSBkZXBlbmRpbmcgb24gYW55IG90aGVyIG1vZHVsZXMgb3IgZnVuY3Rpb25hbGl0aWVzIHRoYXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IG9idmlvdXMuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBjb3ZlciBhbGwgb3VyIGJhc2VzIGFuZCB0aGF0IHRoZSBzeXN0ZW0gaXMgc2V0IHVwIHByb3Blcmx5IHRvIHV0aWxpemUgdGhlIGBIREFgIEludGVsIGF1ZGlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgxNywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE3OjM3LjUwMjQ2NzE0N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU5NjIwMjAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipTTkRfSERBX0lOVEVMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL2hkYS9jb21tb24vS2NvbmZpZz02Nz1jb25maWcgU05EX0hEQV9DVExfREVWX0lEXFxuc291bmQvaGRhL2NvbW1vbi9LY29uZmlnLTY4LVxcdGJvb2wgXFxcIlVzZSB0aGUgZGV2aWNlIGlkZW50aWZpZXIgZmllbGQgZm9yIGNvbnRyb2xzXFxcIlxcbnNvdW5kL2hkYS9jb21tb24vS2NvbmZpZzo2OTpcXHRkZXBlbmRzIG9uIFNORF9IREFfSU5URUxcXG5zb3VuZC9oZGEvY29tbW9uL0tjb25maWctNzAtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzo0MC4wOTg2NzM2NDNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0ODM0NzcyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBEZXBlbmRlbmNpZXMgb2YgU05EX0hEQV9JTlRFTCoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIHByb2NlZWQgYW55IGZ1cnRoZXIgd2l0aCB0aGlzLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuIFRoaXMgd2hvbGUgdGhpbmcgaGluZ2VzIG9uIGF1ZGlvLCBhbmQgYFNORF9IREFfSU5URUxgIGlzIGEgY29yZSBjb21wb25lbnQgdGhlcmUsIHNvIGxldCdzIHN0YXJ0IHdpdGggYSBkZXBlbmRlbmN5IGFuYWx5c2lzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMsIGRyaXZlcnMsIG9yIGV2ZW4gc3lzdGVtIGNvbmZpZ3VyYXRpb25zIGBTTkRfSERBX0lOVEVMYCByZWxpZXMgb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBXaXRob3V0IHRoYXQga25vd2xlZGdlLCBJIGNvdWxkIGJlIGNoYXNpbmcgbXkgdGFpbC4gSSBrbm93IG15IGZpZWxkLiBUaGlzIGlzIGltcG9ydGFudC4gQSBwcm9wZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgZ3VpZGUgdGhlIG5leHQgY291cnNlIG9mIGFjdGlvbi4gSSB3aWxsIG5lZWQgdG8gYmUgbWV0aWN1bG91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwOTQsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzo0My43NDcwMjQxNjlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTYyNTU3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9IREFfSU5URUxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc9MzM9Y29uZmlnIFNORF9IREFfQ09ERUNfSERNSV9JTlRFTFxcbi0tXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWctNDAtXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc6NDE6Y29uZmlnIFNORF9IREFfSU5URUxfSERNSV9TSUxFTlRfU1RSRUFNXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWctNDItXFx0Ym9vbCBcXFwiRW5hYmxlIFNpbGVudCBTdHJlYW0gYWx3YXlzIGZvciBIRE1JXFxcIlxcbi0tXFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5zb3VuZC9oZGEvY29udHJvbGxlcnMvS2NvbmZpZzoyOmNvbmZpZyBTTkRfSERBX0lOVEVMXFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSEQgQXVkaW8gUENJXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzo0Ni4wMDMyODQyNDlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyMDIzNTAxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlY29kaW5nIHRoZSBgU05EX0hEQV9JTlRFTGAgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGUgc291bmQgc3Vic3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTTkRfSERBX0lOVEVMYC4gQSBxdWljayBjaGVjayBvZiBgc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWdgIGlzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIGFscmVhZHkga25vdyB0aGUgdXN1YWwgc3VzcGVjdHMsIG9mIGNvdXJzZSwgYnV0IGl0J3MgYWx3YXlzIHdvcnRoIGEgcXVpY2sgY29uZmlybWF0aW9uIGFuZCB0byBtYWtlIHN1cmUgdGhlcmUncyBub3RoaW5nIEkndmUgZm9yZ290dGVuIG9yIGFueSBzdWJ0bGUgY2hhbmdlcyBmcm9tIHRoZSBsYXN0IHRpbWUgSSBsb29rZWQuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHRoZSBsaW5jaHBpbiBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgY29uc3RyYWludHMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhpbmdzIHRoYXQgbWlnaHQgaW5kaXJlY3RseSBhZmZlY3Qgb3IgaW50ZXJhY3Qgd2l0aCBgU05EX0hEQV9JTlRFTGAgLSBkZXBlbmRlbmNpZXMgb24gcGFydGljdWxhciBoYXJkd2FyZSBmZWF0dXJlcywgb3Igc3BlY2lmaWMgY2hpcHNldCBmYW1pbGllcywgb3IgZXZlbiBvdGhlciBhdWRpbyBkcml2ZXJzIHRoYXQgbWlnaHQgaGF2ZSBjb25mbGljdHMuIEdvdHRhIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZm9jdXMgaXMgb24gYmVpbmcgcHJlY2lzZSBhbmQgbm90IG1pc3NpbmcgYW55IGRldGFpbHMuIEZyb20gdGhlcmUsIEknbGwgYmUgYWJsZSB0byBkZWNpZGUgd2hhdCwgaWYgYW55LCBmb2xsb3cgdXAgdGVzdHMgbmVlZCB0byBiZSBydW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDg4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6NTAuMTIzNTIyOTUxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL2hkYS9jb250cm9sbGVycy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU05EX0hEQV9JTlRFTFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkhEIEF1ZGlvIFBDSVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAgNTpcXHRcXHRzZWxlY3QgU05EX0hEQVxcbiAgIDY6XFx0XFx0c2VsZWN0IFNORF9JTlRFTF9EU1BfQ09ORklHXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBJbnRlbCBcXFwiSGlnaCBEZWZpbml0aW9uXFxuICAgOTpcXHRcXHQgIEF1ZGlvXFxcIiAoQXphbGlhKSBhbmQgaXRzIGNvbXBhdGlibGUgZGV2aWNlcy5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBIRC1hdWRpbyBjb250cm9sbGVyLiAgRG9uJ3QgZm9yZ2V0XFxuICAxMjpcXHRcXHQgIHRvIGNob29zZSB0aGUgYXBwcm9wcmlhdGUgSEQtYXVkaW8gY29kZWMgb3B0aW9ucy5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAxNTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1oZGEtaW50ZWwuXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBTTkRfSERBX1RFR1JBXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiTlZJRElBIFRlZ3JhIEhEIEF1ZGlvXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1RFR1JBXFxuICAyMDpcXHRcXHRzZWxlY3QgU05EX0hEQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzo1MC4xMjM2MTY0MTFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwMzE4MTY2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgQXVkaW8gRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCBtZSBxdWlja2x5IHRoaW5rIHRoaXMgdGhyb3VnaC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBgU05EX0hEQV9JTlRFTGAgZHJpdmVyIGhhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIHRoZSBgUENJYCBzdWJzeXN0ZW0uIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGF0IHRoZSBJbnRlbCBIaWdoIERlZmluaXRpb24gQXVkaW8gY29udHJvbGxlciBpcyB0eXBpY2FsbHkgY29ubmVjdGVkIHZpYSBQQ0kuIE5vdywgbXkgbmV4dCBpbW1lZGlhdGUgdGhvdWdodCwgYmVjYXVzZSBJIGFsd2F5cyBsaWtlIHRvIG1ha2Ugc3VyZSBJIGNvdmVyIGFsbCBiYXNlcywgaXMgdG8gY29uc2lkZXIgYFNORF9BRDE4ODlgLiBJIG5lZWQgdG8gYXNrIG15c2VsZiwgZG9lcyAqaXQqIGRlcGVuZCBvbiBgUENJYCBhcyB3ZWxsPyBJIG5lZWQgdG8ga25vdywgaXMgdGhpcyBhbHNvIGEgUENJLWF0dGFjaGVkIGRldmljZSwgb3IgaXMgaXQgaGFuZGxlZCBkaWZmZXJlbnRseSwgZWl0aGVyIGRpcmVjdGx5IGZyb20gdGhlIGNoaXBzZXQgb3IgdGhyb3VnaCBhbm90aGVyIGNvbm5lY3Rpb24/IFRoZSBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzbid0IGNvbXBsZXRlIHVudGlsIEkgY29uZmlybSB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQwNzUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE3OjU3LjYyNjgwMTcyMloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic291bmQvcGNpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCMgQUxTQSBQQ0kgZHJpdmVyc1xcbiAgIDM6XFx0XFxuICAgNDpcXHRtZW51Y29uZmlnIFNORF9QQ0lcXG4gICA1OlxcdFxcdGJvb2wgXFxcIlBDSSBzb3VuZCBkZXZpY2VzXFxcIlxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA3OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBTdXBwb3J0IGZvciBzb3VuZCBkZXZpY2VzIGNvbm5lY3RlZCB2aWEgdGhlIFBDSSBidXMuXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFNORF9QQ0lcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIFNORF9BRDE4ODlcXG4gIDE0OlxcdFxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBRDE4ODlcXFwiXFxuICAxNTpcXHRcXHRzZWxlY3QgU05EX0FDOTdfQ09ERUNcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBpbnRlZ3JhdGVkIEFDOTcgc291bmRcXG4gIDE4OlxcdFxcdCAgZGV2aWNlIGZvdW5kIGluIHBhcnRpY3VsYXIgb24gdGhlIEhld2xldHQtUGFja2FyZCBbQkNKXS14eHgwXFxuICAxOTpcXHRcXHQgIGNsYXNzIFBBLVJJU0Mgd29ya3N0YXRpb25zLCB1c2luZyB0aGUgQUQxODE5IGNvZGVjLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE3OjU3LjYyNjk1NjcxMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA1Njk3MzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkF1ZGlvIERyaXZlciBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGF1ZGlvIGRyaXZlciBvcHRpb25zIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgU05EX1BDSWAgaGFzIGEgZGlyZWN0IGRlcGVuZGVuY3kgb24gYFBDSWAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgeW91IGNhbid0IGhhdmUgUENJIGF1ZGlvIHdpdGhvdXQsIHdlbGwsIFBDSS4gTW92aW5nIG9uLCBJIHNlZSBhIGxvbmcgbGlzdCBvZiBzcGVjaWZpYyBhdWRpbyBkcml2ZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZW5hYmxpbmc6IGBTTkRfSERBX0lOVEVMYCwgYFNORF9BRDE4ODlgLCBgU05EX0FUSUlYUGAsIGBTTkRfQVRJSVhQX01PREVNYCwgYFNORF9BVTg4MTBgLCBgU05EX0FVODgyMGAsIGBTTkRfQVU4ODMwYCwgYFNORF9BVzJgLCBgU05EX0JUODdYYCwgYFNORF9DUzQyODFgLCBgU05EX0NTNTUzMGAsIGBTTkRfTE9MQWAsIGBTTkRfSERTUE1gLiBBIGdvb2Qgc2VsZWN0aW9uLCBjb3ZlcmluZyBhIGxvdCBvZiB0aGUgY29tbW9uIGhhcmR3YXJlIG91dCB0aGVyZS5cblxuTm93LCBhIHF1aWNrIHNjYW4gZG93biB0aGUgbGlzdC4uLndhaXQgYSBzZWNvbmQuIFdoYXQncyB0aGlzPyBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYC4uLmRvZXMgdGhhdCBvbmUgaGF2ZSAqYW5vdGhlciogZGVwZW5kZW5jeSBJIG5lZWQgdG8gY2hlY2s/IFRoYXQncyB0aGUga2luZCBvZiB0aGluZyB0aGF0IGFsd2F5cyBjYXRjaGVzIHlvdSBvdXQgaWYgeW91IGRvbid0IGtlZXAgYW4gZXllIG9uIGl0LiBHb3R0YSBtYWtlIHN1cmUgSSB0cmFjayBkb3duIHdoYXQgdGhhdCBkZXBlbmRzIG9uIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU3NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE4OjA0LjkzMjY1NzM2NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdG1lbnUgXFxcIkxvb25nc29uXFxcIlxcbiAgIDM6XFx0XFxuICAgNDpcXHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9DQVJEXFxuICAgNTpcXHRcXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24gU291bmQgQ2FyZCBEcml2ZXJcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIExPT05HQVJDSCB8fCBDT01QSUxFX1RFU1RcXG4gICA3OlxcdFxcdHNlbGVjdCBTTkRfU09DX0xPT05HU09OX0kyU19QQ0kgaWYgUENJXFxuICAgODpcXHRcXHRzZWxlY3QgU05EX1NPQ19MT09OR1NPTl9JMlNfUExBVEZPUk0gaWYgT0ZcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgU2F5IFkgb3IgTSBpZiB5b3Ugd2FudCB0byBhZGQgc3VwcG9ydCBmb3IgU29DIGF1ZGlvIHVzaW5nXFxuICAxMTpcXHRcXHQgIGxvb25nc29uIEkyUyBjb250cm9sbGVyLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIFRoZSBkcml2ZXIgYWRkIHN1cHBvcnQgZm9yIEFMU0EgU29DIEF1ZGlvIHN1cHBvcnQgdXNpbmdcXG4gIDE0OlxcdFxcdCAgbG9vbmdzb24gSTJTIGNvbnRyb2xsZXIuXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcXG4gIDE3OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBJMlMtUENJIERldmljZSBEcml2ZXJcXFwiXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIExPT05HQVJDSCB8fCBDT01QSUxFX1RFU1RcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAyMDpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTg6MDQuOTMyNzU2Njk1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyNzA2NTEzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTb3VuZCBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgTG9vbmdBcmNoIFN5c3RlbXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIGl0IGhpbmdlcyBvbiBhIGZldyBrZXkgZmFjdG9yczogdGhlIGBMT09OR0FSQ0hgIGFyY2hpdGVjdHVyZSBhbmQgd2hldGhlciB3ZSdyZSBpbiBhIGBDT01QSUxFX1RFU1RgIGVudmlyb25tZW50LiBXZSdyZSBkZWFsaW5nIHdpdGggUENJIGhlcmUsIHRvbywgb2YgY291cnNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBzaW1wbHkgZW5hYmxlIGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgIGFuZCBgQ09NUElMRV9URVNUYCB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIG91dGNvbWU/IFByb2JhYmx5LlxuXG5UaGUgY3JpdGljYWwgcGllY2UsIHRob3VnaCwgaXMgd2hldGhlciBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgaXMgYWNjZXNzaWJsZS4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIGV4cG9ydGVkIGFuZCB0aGF0IG91ciBkcml2ZXIncyBwcm9iZSByb3V0aW5lIGNhbiByZWFjaCBpdC4gR29vZCwgaXQgbG9va3MgbGlrZSB0aGF0J3MgdGhlIGNhc2UuIEl0IGFwcGVhcnMgdG8gYmUgZXhwb3J0ZWQgYW5kIHJlYWNoYWJsZSB2aWEgdGhlIGRyaXZlciBwcm9iZS5cblxuU28sIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBzZWVtcyB0byBiZSB0aGUgZm9jdXMgaGVyZSwgdGhlIGx5bmNocGluLiBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGl0cyBkZWZpbml0aW9uIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlOyBJJ2xsIG5lZWQgdG8gb3BlbiB0aGUgYGRyaXZlcnMvcGNpL2RldnJlcy5jYCBmaWxlIGFuZCBoYXZlIGEgbG9vayBhdCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgdGhlcmUgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzNzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxODoxMi4yMDM0MTAyMzhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvcGNpL2RldnJlcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY0MDpcXHRFWFBPUlRfU1lNQk9MKHBjaW1faW9tYXBfcmVnaW9uKTtcXG4gNjQxOlxcdFxcbiA2NDI6XFx0LyoqXFxuIDY0MzpcXHQgKiBwY2ltX2lvcmVtYXBfcmVnaW9uIC0gUmVxdWVzdCBhbmQgaW9yZW1hcCBhIFBDSSBCQVJcXG4gNjQ0OlxcdCAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yXFxuIDY0NTpcXHQgKiBAYmFyOiBJbmRleCBvZiBhIEJBUiB0byBtYXBcXG4gNjQ2OlxcdCAqIEBuYW1lOiBOYW1lIG9mIHRoZSBkcml2ZXIgcmVxdWVzdGluZyB0aGUgcmVzb3VyY2VcXG4gNjQ3OlxcdCAqXFxuIDY0ODpcXHQgKiBSZXR1cm5zOiBfX2lvbWVtIHBvaW50ZXIgb24gc3VjY2VzcywgYW4gSU9NRU1fRVJSX1BUUiBvbiBmYWlsdXJlLlxcbiA2NDk6XFx0ICpcXG4gNjUwOlxcdCAqIE1hcHBpbmcgYW5kIHJlZ2lvbiB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIElmXFxuIDY1MTpcXHQgKiBkZXNpcmVkLCByZWxlYXNlIG1hbnVhbGx5IG9ubHkgd2l0aCBwY2ltX2lvdW5tYXBfcmVnaW9uKCkuXFxuIDY1MjpcXHQgKi9cXG4gNjUzOlxcdHZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcXG4gNjU0OlxcdFxcdFxcdFxcdFxcdCAgY29uc3QgY2hhciAqbmFtZSlcXG4gNjU1OlxcdHtcXG4gNjU2OlxcdFxcdGludCByZXQ7XFxuIDY1NzpcXHRcXHRzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcmVzO1xcbiA2NTg6XFx0XFxuIDY1OTpcXHRcXHRpZiAoIXBjaV9iYXJfaW5kZXhfaXNfdmFsaWQoYmFyKSlcXG4gNjYwOlxcdFxcdFxcdHJldHVybiBJT01FTV9FUlJfUFRSKC1FSU5WQUwpO1xcbiA2NjE6XFx0XFxuIDY2MjpcXHRcXHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xcbiA2NjM6XFx0XFx0aWYgKCFyZXMpXFxuIDY2NDpcXHRcXHRcXHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRU5PTUVNKTtcXG4gNjY1OlxcdFxcbiA2NjY6XFx0XFx0cmVzLVxcdTAwM2V0eXBlID0gUENJTV9BRERSX0RFVlJFU19UWVBFX1JFR0lPTl9NQVBQSU5HO1xcbiA2Njc6XFx0XFx0cmVzLVxcdTAwM2ViYXIgPSBiYXI7XFxuIDY2ODpcXHRcXG4gNjY5OlxcdFxcdHJldCA9IHBjaV9yZXF1ZXN0X3JlZ2lvbihwZGV2LCBiYXIsIG5hbWUpO1xcbiA2NzA6XFx0XFx0aWYgKHJldCAhPSAwKVxcbiA2NzE6XFx0XFx0XFx0Z290byBlcnJfcmVnaW9uO1xcbiA2NzI6XFx0XFxuIDY3MzpcXHRcXHRyZXMtXFx1MDAzZWJhc2VhZGRyID0gcGNpX2lvcmVtYXBfYmFyKHBkZXYsIGJhcik7XFxuIDY3NDpcXHRcXHRpZiAoIXJlcy1cXHUwMDNlYmFzZWFkZHIpIHtcXG4gNjc1OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDY3NjpcXHRcXHRcXHRnb3RvIGVycl9pb21hcDtcXG4gNjc3OlxcdFxcdH1cXG4gNjc4OlxcdFxcbiA2Nzk6XFx0XFx0ZGV2cmVzX2FkZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCByZXMpO1xcbiA2ODA6XFx0XFx0cmV0dXJuIHJlcy1cXHUwMDNlYmFzZWFkZHI7XFxuIDY4MTpcXHRcXG4gNjgyOlxcdGVycl9pb21hcDpcXG4gNjgzOlxcdFxcdHBjaV9yZWxlYXNlX3JlZ2lvbihwZGV2LCBiYXIpO1xcbiA2ODQ6XFx0ZXJyX3JlZ2lvbjpcXG4gNjg1OlxcdFxcdHBjaW1fYWRkcl9kZXZyZXNfZnJlZShyZXMpO1xcbiA2ODY6XFx0XFxuIDY4NzpcXHRcXHRyZXR1cm4gSU9NRU1fRVJSX1BUUihyZXQpO1xcbiA2ODg6XFx0fVxcbiA2ODk6XFx0RVhQT1JUX1NZTUJPTChwY2ltX2lvcmVtYXBfcmVnaW9uKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTg6MTIuMjAzNTIzODA4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MDgyMTUxNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYHBjaW1faW9yZW1hcF9yZWdpb25gIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBhcyBhIG5ldyBjb3JlIEFQSSB0aGF0J3MgYmVpbmcgdXNlZCBhY3Jvc3MgYSBidW5jaCBvZiBzb3VuZCBkcml2ZXJzLiBUaGF0IG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgZm9jdXMgaGVyZSBpcyBkZWZpbml0ZWx5IHRoYXQgc3ltYm9sLCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWdzIG5lZWRlZCB0byBlbmFibGUgaXQuIEkndmUgZ290IGEgZ29vZCBzdGFydGluZyBzZXQ6IGBQQ0lgLCBgU05EX1BDSWAsIGBTTkRfSERBX0lOVEVMYCwgYFNORF9BRDE4ODlgLCBgU05EX0FUSUlYUGAsIGBTTkRfQVRJSVhQX01PREVNYCwgYFNORF9BVTg4MTBgLCBgU05EX0FVODgyMGAsIGBTTkRfQVU4ODMwYCwgYFNORF9BVzJgLCBgU05EX0JUODdYYCwgYFNORF9DUzQyODFgLCBgU05EX0NTNTUzMGAsIGBTTkRfTE9MQWAsIGBTTkRfSERTUE1gLCBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYCwgYW5kIGBDT01QSUxFX1RFU1RgLiBHb3R0YSBiZSB0aG9yb3VnaCwgc28gSSdsbCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRob3NlIGNvdmVyIGV2ZXJ5dGhpbmcuXG5cbkkga25vdyBgU05EYCBpcyBhIGRlcGVuZGVuY3kgZm9yIGBTTkRfUENJYCDigJMgc3RhbmRhcmQgc3R1ZmYuIEFuZCwgb2YgY291cnNlLCBgU05EX1NPQ2AgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgLiBMZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGdvdGNoYXMgSSdtIG1pc3NpbmcuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGtleSBjb25maWd1cmF0aW9ucyBJJ20gbWlzc2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTY1MzMsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxODoxOC43MTE3NDE2MDhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTkzMjY0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9TT0NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTc0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5zb3VuZC9zb2MvS2NvbmZpZy01LVxcbnNvdW5kL3NvYy9LY29uZmlnOjY6bWVudWNvbmZpZyBTTkRfU09DXFxuc291bmQvc29jL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiQUxTQSBmb3IgU29DIGF1ZGlvIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvS2NvbmZpZz0yND1pZiBTTkRfU09DXFxuc291bmQvc29jL0tjb25maWctMjUtXFxuc291bmQvc29jL0tjb25maWc6MjY6Y29uZmlnIFNORF9TT0NfQUM5N19CVVNcXG5zb3VuZC9zb2MvS2NvbmZpZy0yNy1cXHRib29sXFxuc291bmQvc29jL0tjb25maWctMjgtXFxuc291bmQvc29jL0tjb25maWc6Mjk6Y29uZmlnIFNORF9TT0NfR0VORVJJQ19ETUFFTkdJTkVfUENNXFxuc291bmQvc29jL0tjb25maWctMzAtXFx0Ym9vbFxcbi0tXFxuc291bmQvc29jL0tjb25maWctMzItXFxuc291bmQvc29jL0tjb25maWc6MzM6Y29uZmlnIFNORF9TT0NfQ09NUFJFU1NcXG5zb3VuZC9zb2MvS2NvbmZpZy0zNC1cXHRib29sXFxuLS1cXG5zb3VuZC9zb2MvS2NvbmZpZy0zNi1cXG5zb3VuZC9zb2MvS2NvbmZpZzozNzpjb25maWcgU05EX1NPQ19UT1BPTE9HWVxcbnNvdW5kL3NvYy9LY29uZmlnLTM4LVxcdGJvb2xcXG4tLVxcbnNvdW5kL3NvYy9LY29uZmlnLTQwLVxcbnNvdW5kL3NvYy9LY29uZmlnOjQxOmNvbmZpZyBTTkRfU09DX1RPUE9MT0dZX0JVSUxEXFxuc291bmQvc29jL0tjb25maWctNDItXFx0Ym9vbCBcXFwiQnVpbGQgdG9wb2xvZ3kgY29yZVxcXCJcXG4tLVxcbnNvdW5kL3NvYy9LY29uZmlnLTUxLVxcbnNvdW5kL3NvYy9LY29uZmlnOjUyOmNvbmZpZyBTTkRfU09DX1RPUE9MT0dZX0tVTklUX1RFU1RcXG5zb3VuZC9zb2MvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIFNvQyB0b3BvbG9neVxcXCJcXG4tLVxcbnNvdW5kL3NvYy9LY29uZmlnLTY4LVxcbnNvdW5kL3NvYy9LY29uZmlnOjY5OmNvbmZpZyBTTkRfU09DX0NBUkRfS1VOSVRfVEVTVFxcbnNvdW5kL3NvYy9LY29uZmlnLTcwLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgU29DIGNhcmRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvS2NvbmZpZy03Ni1cXG5zb3VuZC9zb2MvS2NvbmZpZzo3Nzpjb25maWcgU05EX1NPQ19VVElMU19LVU5JVF9URVNUXFxuc291bmQvc29jL0tjb25maWctNzgtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBTb0MgdXRpbHNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvS2NvbmZpZy04My1cXG5zb3VuZC9zb2MvS2NvbmZpZzo4NDpjb25maWcgU05EX1NPQ19PUFNfS1VOSVRfVEVTVFxcbnNvdW5kL3NvYy9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgU29DIG9wc1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9LY29uZmlnLTkwLVxcbnNvdW5kL3NvYy9LY29uZmlnOjkxOmNvbmZpZyBTTkRfU09DX0FDUElcXG5zb3VuZC9zb2MvS2NvbmZpZy05Mi1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9LY29uZmlnLTkzLVxcbnNvdW5kL3NvYy9LY29uZmlnOjk0OmNvbmZpZyBTTkRfU09DX1VTQlxcbnNvdW5kL3NvYy9LY29uZmlnLTk1LVxcdHRyaXN0YXRlIFxcXCJTb0MgYmFzZWQgVVNCIGF1ZGlvIG9mZmxvYWRpbmdcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYWRpL0tjb25maWc9Mj1tZW51IFxcXCJBbmFsb2cgRGV2aWNlc1xcXCJcXG5zb3VuZC9zb2MvYWRpL0tjb25maWctMy1cXG5zb3VuZC9zb2MvYWRpL0tjb25maWc6NDpjb25maWcgU05EX1NPQ19BRElfQVhJX0kyU1xcbnNvdW5kL3NvYy9hZGkvS2NvbmZpZy01LVxcdHRyaXN0YXRlIFxcXCJBWEktSTJTIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYWRpL0tjb25maWctMTAtXFxuc291bmQvc29jL2FkaS9LY29uZmlnOjExOmNvbmZpZyBTTkRfU09DX0FESV9BWElfU1BESUZcXG5zb3VuZC9zb2MvYWRpL0tjb25maWctMTItXFx0dHJpc3RhdGUgXFxcIkFYSS1TUERJRiBzdXBwb3J0XFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnPTI9bWVudSBcXFwiQU1EXFxcIlxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0zLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo0OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BcXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiQU1EIEF1ZGlvIENvcHJvY2Vzc29yIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctOC1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6OTpjb25maWcgU05EX1NPQ19BTURfQ1pfREE3MjE5TVg5ODM1N19NQUNIXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJBTUQgQ1ogc3VwcG9ydCBmb3IgREE3MjE5LCBSVDU2ODIgYW5kIE1BWDk4MzVcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTktXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjIwOmNvbmZpZyBTTkRfU09DX0FNRF9DWl9SVDU2NDVfTUFDSFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiQU1EIENaIHN1cHBvcnQgZm9yIFJUNTY0NVxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0yNi1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6Mjc6Y29uZmlnIFNORF9TT0NfQU1EX1NUX0VTODMzNl9NQUNIXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTI4LVxcdHRyaXN0YXRlIFxcXCJBTUQgU1Qgc3VwcG9ydCBmb3IgRVM4MzM2XFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTM4LVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzozOTpjb25maWcgU05EX1NPQ19BTURfQUNQM3hcXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNDAtXFx0dHJpc3RhdGUgXFxcIkFNRCBBdWRpbyBDb3Byb2Nlc3Nvci12My54IHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNDQtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjQ1OmNvbmZpZyBTTkRfU09DX0FNRF9SVl9SVDU2ODJfTUFDSFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiQU1EIFJWIHN1cHBvcnQgZm9yIFJUNTY4MlxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy01Ni1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6NTc6Y29uZmlnIFNORF9TT0NfQU1EX1JFTk9JUlxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy01OC1cXHR0cmlzdGF0ZSBcXFwiQU1EIEF1ZGlvIENvcHJvY2Vzc29yIC0gUmVub2lyIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNjMtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjY0OmNvbmZpZyBTTkRfU09DX0FNRF9SRU5PSVJfTUFDSFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy02NS1cXHR0cmlzdGF0ZSBcXFwiQU1EIFJlbm9pciBzdXBwb3J0IGZvciBETUlDXFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTcwLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo3MTpjb25maWcgU05EX1NPQ19BTURfQUNQNXhcXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNzItXFx0dHJpc3RhdGUgXFxcIkFNRCBBdWRpbyBDb3Byb2Nlc3Nvci12NS54IEkyUyBzdXBwb3J0XFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTgwLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo4MTpjb25maWcgU05EX1NPQ19BTURfVkFOR09HSF9NQUNIXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTgyLVxcdHRyaXN0YXRlIFxcXCJBTUQgVmFuZ29naCBzdXBwb3J0IGZvciBOQVU4ODIxL0NTMzVMNDEvTUFYOTgzODhcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctOTMtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjk0OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1A2eFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy05NS1cXHR0cmlzdGF0ZSBcXFwiQU1EIEF1ZGlvIENvcHJvY2Vzc29yLXY2LnggWWVsbG93IENhcnAgc3VwcG9ydFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xMDQtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjEwNTpjb25maWcgU05EX1NPQ19BTURfWUNfTUFDSFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xMDYtXFx0dHJpc3RhdGUgXFxcIkFNRCBZQyBzdXBwb3J0IGZvciBETUlDXFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnPTEyMz1zb3VyY2UgXFxcInNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWdcXFwiXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEyNC1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6MTI1OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1A2M19UT1BMRVZFTFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xMjYtXFx0dHJpc3RhdGUgXFxcInN1cHBvcnQgZm9yIEFNRCBwbGF0Zm9ybXMgd2l0aCBBQ1AgdmVyc2lvbiBcXHUwMDNlPSA2LjNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc9MTM2PWlmIFNORF9TT0NfQU1EX0FDUDYzX1RPUExFVkVMXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEzNy1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6MTM4OmNvbmZpZyBTTkRfU09DX0FNRF9TT1VORFdJUkVfTElOS19CQVNFTElORVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xMzktXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNDEtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjE0Mjpjb25maWcgU05EX1NPQ19BTURfU09VTkRXSVJFXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTE0My1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgU291bmRXaXJlIGJhc2VkIEFNRCBwbGF0Zm9ybXNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTUyLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzoxNTM6Y29uZmlnIFNORF9TT0NfQU1EX1BTXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTE1NC0gICAgICAgIHRyaXN0YXRlIFxcXCJBTUQgQXVkaW8gQ29wcm9jZXNzb3ItdjYuMy92Ny4wL3Y3LjEgc3VwcG9ydFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNjUtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjE2Njpjb25maWcgU05EX1NPQ19BTURfUFNfTUFDSFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNjctICAgICAgICB0cmlzdGF0ZSBcXFwiQU1EIFBJTksgU0FSRElORSBzdXBwb3J0IGZvciBETUlDXFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTE3Ni1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6MTc3OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1A3WFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNzgtICAgICAgICB0cmlzdGF0ZSBcXFwiQU1EIEF1ZGlvIENvcHJvY2Vzc29yLXY3Lnggc3VwcG9ydFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNy1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjg6Y29uZmlnIFNORF9TT0NfQU1EX0FDUF9DT01NT05cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIkFNRCBBdWRpbyBBQ1AgQ29tbW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE1LVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTY6Y29uZmlnIFNORF9TT0NfQUNQSV9BTURfTUFUQ0hcXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE3LVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE5LVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MjA6Y29uZmlnIFNORF9TT0NfQUNQSV9BTURfU0RDQV9RVUlSS1NcXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIkFNRCBBQ1BJIFNEQ0EgcXVpcmtzXFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZz0zMD1pZiBTTkRfU09DX0FNRF9BQ1BfQ09NTU9OXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zMS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjMyOmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BfUERNXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMzQtXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzozNTpjb25maWcgU05EX1NPQ19BTURfQUNQX0xFR0FDWV9DT01NT05cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTM2LVxcdHRyaXN0YXRlXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zNy1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjM4OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BfSTJTXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDAtXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzo0MTpjb25maWcgU05EX1NPQ19BTURfQUNQSV9NQUNIXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDMtXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzo0NDpjb25maWcgU05EX1NPQ19BTURfQUNQX1BDTVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDUtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDctXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzo0ODpjb25maWcgU05EX1NPQ19BTURfQUNQX1BDSVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDktXFx0dHJpc3RhdGUgXFxcIkFNRCBBQ1AgUENJIERyaXZlciBTdXBwb3J0XFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZz05OT1jb25maWcgU05EX0FNRF9BU09DX0FDUDcwXFxuLS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTExMy1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjExNDpjb25maWcgU05EX1NPQ19BTURfTUFDSF9DT01NT05cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTExNS1cXHR0cmlzdGF0ZVxcbi0tXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xMjctXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzoxMjg6Y29uZmlnIFNORF9TT0NfQU1EX0xFR0FDWV9NQUNIXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xMjktXFx0dHJpc3RhdGUgXFxcIkFNRCBMZWdhY3kgTWFjaGluZSBEcml2ZXIgU3VwcG9ydFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTM0LVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTM1OmNvbmZpZyBTTkRfU09DX0FNRF9TT0ZfTUFDSFxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJBTUQgU09GIE1hY2hpbmUgRHJpdmVyIFN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE0MS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjE0Mjpjb25maWcgU05EX1NPQ19BTURfU0RXX01BQ0hfQ09NTU9OXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xNDMtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTQ3LVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTQ4OmNvbmZpZyBTTkRfU09DX0FNRF9TT0ZfU0RXX01BQ0hcXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiQU1EIFNPRiBTb3VuZHdpcmUgTWFjaGluZSBEcml2ZXIgU3VwcG9ydFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTY3LVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTY4OmNvbmZpZyBTTkRfU09DX0FNRF9MRUdBQ1lfU0RXX01BQ0hcXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwiQU1EIExlZ2FjeShObyBEU1ApIFNvdW5kd2lyZSBNYWNoaW5lIERyaXZlciBTdXBwb3J0XFxcIlxcbi0tXFxuc291bmQvc29jL2FwcGxlL0tjb25maWc9Mj1tZW51IFxcXCJBcHBsZVxcXCJcXG5zb3VuZC9zb2MvYXBwbGUvS2NvbmZpZy0zLVxcbnNvdW5kL3NvYy9hcHBsZS9LY29uZmlnOjQ6Y29uZmlnIFNORF9TT0NfQVBQTEVfTUNBXFxuc291bmQvc29jL2FwcGxlL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgU2lsaWNvbiBNQ0EgZHJpdmVyXFxcIlxcbi0tXFxuc291bmQvc29jL2F0bWVsL0tjb25maWc9OTM9Y29uZmlnIFNORF9BVE1FTF9TT0NfSTJTXFxuLS1cXG5zb3VuZC9zb2MvYXRtZWwvS2NvbmZpZy0xMDEtXFxuc291bmQvc29jL2F0bWVsL0tjb25maWc6MTAyOmNvbmZpZyBTTkRfU09DX01JS1JPRV9QUk9UT1xcbnNvdW5kL3NvYy9hdG1lbC9LY29uZmlnLTEwMy1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgTWlrcm9lLVBST1RPIGJvYXJkXFxcIlxcbi0tXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZz01PW1lbnUgXFxcIkF1MXhcXFwiXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy02LVxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWc6Nzpjb25maWcgU05EX1NPQ19BVTFYUFNDXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJTb0MgQXVkaW8gZm9yIEF1MTJ4eC9BdTEzeHgvQXUxNTUwXFxcIlxcbi0tXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy0xNC1cXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjE1OmNvbmZpZyBTTkRfU09DX0FVMVhQU0NfSTJTXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMTctXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZzoxODpjb25maWcgU05EX1NPQ19BVTFYUFNDX0FDOTdcXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTE5LVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTI2LSMjXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZzoyNzpjb25maWcgU05EX1NPQ19BVTFYQVVESU9cXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTI4LVxcdHRyaXN0YXRlIFxcXCJTb0MgQXVkaW8gZm9yIEF1MTAwMC9BdTE1MDAvQXUxMTAwXFxcIlxcbi0tXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy0zMy1cXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjM0OmNvbmZpZyBTTkRfU09DX0FVMVhBQzk3Q1xcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMzUtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMzktXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZzo0MDpjb25maWcgU05EX1NPQ19BVTFYSTJTQ1xcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctNDEtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctNDYtIyNcXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjQ3OmNvbmZpZyBTTkRfU09DX0RCMTAwMFxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIkRCMTAwMCBBdWRpbyBzdXBwb3J0XFxcIlxcbi0tXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy01NS1cXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjU2OmNvbmZpZyBTTkRfU09DX0RCMTIwMFxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctNTctXFx0dHJpc3RhdGUgXFxcIkRCMTIwMC9EQjEzMDAvREIxNTUwIEF1ZGlvIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYmNtL0tjb25maWc9ND1jb25maWcgU05EX0JDTTI4MzVfU09DX0kyU1xcbi0tXFxuc291bmQvc29jL2JjbS9LY29uZmlnLTEzLVxcbnNvdW5kL3NvYy9iY20vS2NvbmZpZzoxNDpjb25maWcgU05EX1NPQ19DWUdOVVNcXG5zb3VuZC9zb2MvYmNtL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNvQyBwbGF0Zm9ybSBhdWRpbyBmb3IgQnJvYWRjb20gQ3lnbnVzIGNoaXBzXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUtIyBzZXR0aW5nIC0gU1BJIGNhbid0IGJlIG1vZHVsYXIgc28gdGhhdCBjYXNlIGRvZXNuJ3QgbmVlZCB0byBiZSBjb3ZlcmVkLlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2OmNvbmZpZyBTTkRfU09DX0kyQ19BTkRfU1BJXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTctXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZz0xMj1tZW51IFxcXCJDT0RFQyBkcml2ZXJzXFxcIlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0xMy1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6MTQ6Y29uZmlnIFNORF9TT0NfQUxMX0NPREVDU1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiQnVpbGQgYWxsIEFTb0MgQ09ERUMgZHJpdmVyc1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0zODEtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjM4Mjpjb25maWcgU05EX1NPQ184OFBNODYwWFxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0zODMtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0zODUtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjM4Njpjb25maWcgU05EX1NPQ19BUklaT05BXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM4Ny1cXHR0cmlzdGF0ZVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM5OC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6Mzk5OmNvbmZpZyBTTkRfU09DX1dNX0hVQlNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDAwLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDAzLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MDQ6Y29uZmlnIFNORF9TT0NfV01fQURTUFxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MDUtXFx0dHJpc3RhdGUgXFxcIkNpcnJ1cyBMb2dpYyB3bV9hZHNwIGRyaXZlclxcXCIgaWYgS1VOSVRcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MDgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQwOTpjb25maWcgU05EX1NPQ19XTV9BRFNQX1RFU1RcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDEwLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgQ2lycnVzIExvZ2ljIHdtX2Fkc3BcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MjAtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQyMTpjb25maWcgU05EX1NPQ19BQjg1MDBfQ09ERUNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDIyLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDI0LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MjU6Y29uZmlnIFNORF9TT0NfQUM5N19DT0RFQ1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MjYtXFx0dHJpc3RhdGUgXFxcIkJ1aWxkIGdlbmVyaWMgQVNvQyBBQzk3IENPREVDIGRyaXZlclxcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MjktXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQzMDpjb25maWcgU05EX1NPQ19BRDE4MzZcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDMxLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDMzLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MzQ6Y29uZmlnIFNORF9TT0NfQUQxOTNYXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQzNS1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MzYtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQzNzpjb25maWcgU05EX1NPQ19BRDE5M1hfU1BJXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQzOC1cXHR0cmlzdGF0ZVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ0MS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDQyOmNvbmZpZyBTTkRfU09DX0FEMTkzWF9JMkNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDQzLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDQ2LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0NDc6Y29uZmlnIFNORF9TT0NfQUQxOTgwXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ0OC1cXHR0cmlzdGF0ZVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ1MS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDUyOmNvbmZpZyBTTkRfU09DX0FENzMzMTFcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDUzLVxcdHRyaXN0YXRlXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ1NC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDU1OmNvbmZpZyBTTkRfU09DX0FEQVVfVVRJTFNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDU2LVxcdHRyaXN0YXRlXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ1Ny1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDU4OmNvbmZpZyBTTkRfU09DX0FEQVUxMzcyXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ1OS1cXHR0cmlzdGF0ZVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ2MS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDYyOmNvbmZpZyBTTkRfU09DX0FEQVUxMzcyX0kyQ1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NjMtXFx0dHJpc3RhdGUgXFxcIkFuYWxvZyBEZXZpY2VzIEFEQVUxMzcyIENPREVDIChJMkMpXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ2Ny1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDY4OmNvbmZpZyBTTkRfU09DX0FEQVUxMzcyX1NQSVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NjktXFx0dHJpc3RhdGUgXFxcIkFuYWxvZyBEZXZpY2VzIEFEQVUxMzcyIENPREVDIChTUEkpXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ3My1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDc0OmNvbmZpZyBTTkRfU09DX0FEQVUxMzczXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ3NS1cXHR0cmlzdGF0ZSBcXFwiQW5hbG9nIERldmljZXMgQURBVTEzNzMgQ09ERUNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDc4LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0Nzk6Y29uZmlnIFNORF9TT0NfQURBVTE3MDFcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDgwLVxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBREFVMTcwMSBDT0RFQ1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00ODMtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ4NDpjb25maWcgU05EX1NPQ19BREFVMTdYMVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00ODUtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00ODgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ4OTpjb25maWcgU05EX1NPQ19BREFVMTc2MVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00OTItXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ5Mzpjb25maWcgU05EX1NPQ19BREFVMTc2MV9JMkNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDk0LVxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBVTE3NjEgQ09ERUMgLSBJMkNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDk4LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0OTk6Y29uZmlnIFNORF9TT0NfQURBVTE3NjFfU1BJXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUwMC1cXHR0cmlzdGF0ZSBcXFwiQW5hbG9nIERldmljZXMgQVUxNzYxIENPREVDIC0gU1BJXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUwNC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTA1OmNvbmZpZyBTTkRfU09DX0FEQVUxNzgxXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUwNi1cXHRzZWxlY3QgU05EX1NPQ19BREFVMTdYMVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUwOC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTA5OmNvbmZpZyBTTkRfU09DX0FEQVUxNzgxX0kyQ1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MTAtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MTQtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUxNTpjb25maWcgU05EX1NPQ19BREFVMTc4MV9TUElcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTE2LVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTIwLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1MjE6Y29uZmlnIFNORF9TT0NfQURBVTE5NzdcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTIyLVxcdHRyaXN0YXRlXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUyMy1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTI0OmNvbmZpZyBTTkRfU09DX0FEQVUxOTc3X1NQSVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MjUtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MjktXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUzMDpjb25maWcgU05EX1NPQ19BREFVMTk3N19JMkNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTMxLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTM1LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1MzY6Y29uZmlnIFNORF9TT0NfQURBVTcwMDJcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTM3LVxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBREFVNzAwMiBTdGVyZW8gUERNLXRvLUkyUy9URE0gQ29udmVydGVyXFxcIlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MzgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUzOTpjb25maWcgU05EX1NPQ19BREFVNzExOFxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NDAtXFx0dHJpc3RhdGVcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTQxLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1NDI6Y29uZmlnIFNORF9TT0NfQURBVTcxMThfSFdcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTQzLVxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBREFVNzExOCA4IENoYW5uZWwgUERNLXRvLUkyUy9URE0gQ29udmVydGVyIC0gSFcgTW9kZVxcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NTMtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjU1NDpjb25maWcgU05EX1NPQ19BREFVNzExOF9JMkNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTU1LVxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBREFVNzExOCA4IENoYW5uZWwgUERNLXRvLUkyUy9URE0gQ29udmVydGVyIC0gSTJDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU2NS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTY2OmNvbmZpZyBTTkRfU09DX0FEQVY4MFhcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTY3LVxcdHRyaXN0YXRlXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU2OC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTY5OmNvbmZpZyBTTkRfU09DX0FEQVY4MDFcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTcwLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTczLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1NzQ6Y29uZmlnIFNORF9TT0NfQURBVjgwM1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NzUtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NzgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjU3OTpjb25maWcgU05EX1NPQ19BRFMxMTdYXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU4MC1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01ODEtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjU4Mjpjb25maWcgU05EX1NPQ19BSzQxMDRcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTgzLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs0MTA0IENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU4NS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTg2OmNvbmZpZyBTTkRfU09DX0FLNDExOFxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01ODctXFx0dHJpc3RhdGUgXFxcIkFLTSBBSzQxMTggQ09ERUNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTkwLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1OTE6Y29uZmlnIFNORF9TT0NfQUs0Mzc1XFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU5Mi1cXHR0cmlzdGF0ZSBcXFwiQUtNIEFLNDM3NSBDT0RFQ1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MDAtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYwMTpjb25maWcgU05EX1NPQ19BSzQ0NThcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjAyLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs0NDU4IENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYwNS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjA2OmNvbmZpZyBTTkRfU09DX0FLNDUzNVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MDctXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MDktXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYxMDpjb25maWcgU05EX1NPQ19BSzQ1NTRcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjExLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs0NTU0IENPREVDXFxcIlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MTItXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYxMzpjb25maWcgU05EX1NPQ19BSzQ2MTNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjE0LVxcdHRyaXN0YXRlIFxcXCJBS00gQUs0NjEzIENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYxNi1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjE3OmNvbmZpZyBTTkRfU09DX0FLNDYxOVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MTgtICAgICAgICB0cmlzdGF0ZSBcXFwiQUtNIEFLNDYxOSBDT0RFQ1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjAtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYyMTpjb25maWcgU05EX1NPQ19BSzQ2NDJcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjIyLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs0NjQyIENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYyNC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjI1OmNvbmZpZyBTTkRfU09DX0FLNDY3MVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjYtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYyOTpjb25maWcgU05EX1NPQ19BSzUzODZcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjMwLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs1NjM4IENPREVDXFxcIlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MzEtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYzMjpjb25maWcgU05EX1NPQ19BSzU1NThcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjMzLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs1NTU4IENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYzNi1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjM3OmNvbmZpZyBTTkRfU09DX0FMQzU2MjNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjM4LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIEFMQzU2MjMgQ09ERUNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjQwLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NDE6Y29uZmlnIFNORF9TT0NfQUxDNTYzMlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02NDItXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02NDQtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjY0NTpjb25maWcgU05EX1NPQ19BVURJT19JSU9fQVVYXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY0Ni1cXHR0cmlzdGF0ZSBcXFwiQXVkaW8gSUlPIEF1eGlsaWFyeSBkZXZpY2VcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjU1LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NTY6Y29uZmlnIFNORF9TT0NfQVc4NzM4XFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY1Ny1cXHR0cmlzdGF0ZSBcXFwiQXdpbmljIEFXODczOCBBdWRpbyBBbXBsaWZpZXJcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjY0LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NjU6Y29uZmlnIFNORF9TT0NfQVc4ODM5NV9MSUJcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjY2LVxcdHNlbGVjdCBDUkM4XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjY4LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2Njk6Y29uZmlnIFNORF9TT0NfQVc4ODM5NVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02NzAtXFx0dHJpc3RhdGUgXFxcIlNvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgzOTVcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjgxLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2ODI6Y29uZmlnIFNORF9TT0NfQVc4ODE2NlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02ODMtXFx0dHJpc3RhdGUgXFxcIlNvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgxNjZcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjkzLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2OTQ6Y29uZmlnIFNORF9TT0NfQVc4ODI2MVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02OTUtXFx0dHJpc3RhdGUgXFxcIlNvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgyNjFcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzA2LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3MDc6Y29uZmlnIFNORF9TT0NfQVc4ODA4MVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03MDgtXFx0dHJpc3RhdGUgXFxcIlNvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgwODEvYXc4ODA4M1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03MTctXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjcxODpjb25maWcgU05EX1NPQ19BVzg3MzkwXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTcxOS1cXHR0cmlzdGF0ZSBcXFwiU29jIEF1ZGlvIGZvciBhd2luaWMgYXc4NzM5MFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03MjgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjcyOTpjb25maWcgU05EX1NPQ19BVzg4Mzk5XFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTczMC1cXHR0cmlzdGF0ZSBcXFwiU29jIEF1ZGlvIGZvciBhd2luaWMgYXc4ODM5OVxcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NDEtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjc0Mjpjb25maWcgU05EX1NPQ19CRDI4NjIzXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc0My1cXHR0cmlzdGF0ZSBcXFwiUk9ITSBCRDI4NjIzIENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc0OC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzQ5OmNvbmZpZyBTTkRfU09DX0JUX1NDT1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NTAtXFx0dHJpc3RhdGUgXFxcIkR1bW15IEJUIFNDTyBjb2RlYyBkcml2ZXJcXFwiXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc1MS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzUyOmNvbmZpZyBTTkRfU09DX0NIVjNfQ09ERUNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzUzLVxcdHRyaXN0YXRlIFxcXCJHb29nbGUgQ2hhbWVsZW9uIHYzIGNvZGVjIGRyaXZlclxcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NTgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjc1OTpjb25maWcgU05EX1NPQ19DUENBUFxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjAtXFx0dHJpc3RhdGUgXFxcIk1vdG9yb2xhIENQQ0FQIGNvZGVjXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc2Mi1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzYzOmNvbmZpZyBTTkRfU09DX0NRMDA5M1ZDXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc2NC1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjUtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjc2Njpjb25maWcgU05EX1NPQ19DUk9TX0VDX0NPREVDXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc2Ny1cXHR0cmlzdGF0ZSBcXFwiY29kZWMgZHJpdmVyIGZvciBDaHJvbWVPUyBFQ1xcXCJcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxODoyMS4wMTEwNzQ2OTdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg3MTgyODQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBTb3VuZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBzb3VuZCBjb25maWd1cmF0aW9uIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIkhleSwgaWYgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgYXV0b21hdGljYWxseSBlbmFibGVzIGBTTkRfU09DYCB0aHJvdWdoIGl0cyBjb25maWd1cmF0aW9uLCB0aGVuIEkgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBtYW51YWxseSBzZXR0aW5nIGBTTkRfU09DYC5cIiBJdCBqdXN0IG1ha2VzIHRoaW5ncyBlYXNpZXIsIHJpZ2h0P1xuXG5UaGVuIEkgcmVtZW1iZXJlZCB0aGF0IGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgIGlzIGZvdW5kIHNwZWNpZmljYWxseSBpbiBgc291bmQvc29jL2xvb25nc29uL0tjb25maWdgLiBSaWdodCwgdGhhdCdzIHdoZXJlIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBMb29uZ3NvbiBzb3VuZCBzdXBwb3J0IHJlc2lkZXMuIE5vdywgbGV0J3MganVzdCBjb25maXJtIG15IGluaXRpYWwgdW5kZXJzdGFuZGluZyBieSBjaGVja2luZyBpZiBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYCBkb2VzLCBpbiBmYWN0LCBoYXZlIGBTTkRfU09DYCBhcyBhIGRlcGVuZGVuY3kuIEl0J3MgYmVzdCB0byBiZSBjb21wbGV0ZWx5IGNsZWFyIG9uIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBJIGFtIHByZXR0eSBzdXJlIGl0IGRvZXMsIGl0J3MganVzdCBnb29kIHByYWN0aWNlIHRvIHZlcmlmeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwMDEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxODoyOS44ODI5MDY0OTVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDAwNDcyMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZz00PWNvbmZpZyBTTkRfU09DX0xPT05HU09OX0NBUkRcXG4tLVxcbnNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnLTE1LVxcbnNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnOjE2OmNvbmZpZyBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcXG5zb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZy0xNy1cXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24gSTJTLVBDSSBEZXZpY2UgRHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxODozMi4zODI5NTk4NDJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4ODMyOTI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIGl0LlxuXG4qKlJlZm9jdXNpbmcgb24gdGhlIEtjb25maWcgRmlsZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gcmV2aXNpdCBgc291bmQvc29jL2xvb25nc29uL0tjb25maWdgLiBJJ3ZlIGJlZW4gd29ya2luZyBvbiB0aGlzIGF1ZGlvIHN1YnN5c3RlbSBpbnRlZ3JhdGlvbiBhbmQgdGhlcmUncyBzb21ldGhpbmcgbmFnZ2luZyBhdCBtZS4gSSd2ZSBwcm9iYWJseSBnbGFuY2VkIGF0IHRoaXMgZmlsZSBhIGRvemVuIHRpbWVzIGFscmVhZHksIGJ1dCBleHBlcmllbmNlIHRlbGxzIG1lIGl0J3MgYWx3YXlzIHdvcnRoIGFub3RoZXIgY2FyZWZ1bCBsb29rLiBLZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcywgZXNwZWNpYWxseSB0aG9zZSBkZWZpbmluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIG9mIGEgY29tcGxleCBzdWJzeXN0ZW0sIGFyZSBub3RvcmlvdXMgZm9yIGhpZGluZyBzdWJ0bGUgZGV0YWlscy4gU29tZXRoaW5nIGluIHRoZXJlIG1pZ2h0IGhvbGQgdGhlIGtleSB0byByZXNvbHZpbmcgdGhlIGN1cnJlbnQgaXNzdWUgb3IgdW5jb3ZlciBhbiB1bmZvcmVzZWVuIG9wcG9ydHVuaXR5IGZvciBpbXByb3ZlbWVudC4gTGV0J3Mgc2VlIGlmIGFub3RoZXIgcGFzcyByZXZlYWxzIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQ0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE4OjM2Ljg3MTI5MTczMVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdG1lbnUgXFxcIkxvb25nc29uXFxcIlxcbiAgIDM6XFx0XFxuICAgNDpcXHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9DQVJEXFxuICAgNTpcXHRcXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24gU291bmQgQ2FyZCBEcml2ZXJcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIExPT05HQVJDSCB8fCBDT01QSUxFX1RFU1RcXG4gICA3OlxcdFxcdHNlbGVjdCBTTkRfU09DX0xPT05HU09OX0kyU19QQ0kgaWYgUENJXFxuICAgODpcXHRcXHRzZWxlY3QgU05EX1NPQ19MT09OR1NPTl9JMlNfUExBVEZPUk0gaWYgT0ZcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgU2F5IFkgb3IgTSBpZiB5b3Ugd2FudCB0byBhZGQgc3VwcG9ydCBmb3IgU29DIGF1ZGlvIHVzaW5nXFxuICAxMTpcXHRcXHQgIGxvb25nc29uIEkyUyBjb250cm9sbGVyLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIFRoZSBkcml2ZXIgYWRkIHN1cHBvcnQgZm9yIEFMU0EgU29DIEF1ZGlvIHN1cHBvcnQgdXNpbmdcXG4gIDE0OlxcdFxcdCAgbG9vbmdzb24gSTJTIGNvbnRyb2xsZXIuXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcXG4gIDE3OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBJMlMtUENJIERldmljZSBEcml2ZXJcXFwiXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIExPT05HQVJDSCB8fCBDT01QSUxFX1RFU1RcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAyMDpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTg6MzYuODcxMzkyNzgxWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzNDk1Mzk2MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBTb3VuZCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgbW9kdWxlIGFuZCBpdCBkb2Vzbid0ICpkaXJlY3RseSogcmVseSBvbiBgU05EX1NPQ2AsIHdoaWNoIGlzIGdvb2QuIEhvd2V2ZXIsIGl0J3MgbG9jYXRlZCB3aXRoaW4gdGhlIGBzb3VuZC9zb2MvYCBkaXJlY3RvcnksIGFuZCB0aGF0IGRpcmVjdG9yeSBpcyBvbmx5IGluY29ycG9yYXRlZCBpZiBgU05EX1NPQ2AgaXMgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbi4gVGhhdCBtYWtlcyB0aGUgZGVjaXNpb24gcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgd2UgbmVlZCB0byBlbmFibGUgYFNORF9TT0NgIGFzIGEgcHJlcmVxdWlzaXRlLCBldmVuIHRob3VnaCBpdCdzIG5vdCBhIGhhcmQgZGVwZW5kZW5jeS5cblxuQWxyaWdodCwgbGV0J3MgbGlzdCBvdXQgd2hhdCB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBpbiB0ZXJtcyBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBSaWdodCBub3csIEknbSB0cmFja2luZzpcblxuKiAgIGBQQ0lgXG4qICAgYFNORGBcbiogICBgU05EX1BDSWBcbiogICBgU05EX0hEQV9JTlRFTGBcbiogICBgU05EX0FEMTg4OWBcbiogICBgU05EX0FUSUlYUGBcbiogICBgU05EX0FUSUlYUF9NT0RFTWBcbiogICBgU05EX0FVODgxMGBcbiogICBgU05EX0FVODgyMGBcbiogICBgU05EX0FVODgzMGBcbiogICBgU05EX0FXMmBcbiogICBgU05EX0JUODdYYFxuKiAgIGBTTkRfQ1M0MjgxYFxuKiAgIGBTTkRfQ1M1NTMwYFxuKiAgIGBTTkRfTE9MQWBcbiogICBgU05EX0hEU1BNYFxuKiAgIGBTTkRfU09DYFxuKiAgIGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgXG4qICAgYENPTVBJTEVfVEVTVGBcblxuSG9sZCBvbiBhIHNlY29uZC4uLiBteSBzcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBJIHRob3VnaHQgYFNORF9IREFfSU5URUxgIHdhcyBpbiBgc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWdgLiBBbmQsIGlmIEknbSByZW1lbWJlcmluZyBjb3JyZWN0bHksIHRoYXQncyBwb3RlbnRpYWxseSB0aWVkIHRvIGBTTkRfUENJYC4gU28sIGlzIGBTTkRfSERBX0lOVEVMYCBwdWxsZWQgaW4gYXV0b21hdGljYWxseSBpZiBgU05EX1BDSWAgaXMgYWN0aXZlPyBMZXQncyBxdWlja2x5IHBlZWsgYXQgYHNvdW5kL3BjaS9LY29uZmlnYCB0byBjb25maXJtIHRoZSBjb250cm9sIGZsb3cuIEdvdHRhIG1ha2Ugc3VyZSB3ZSdyZSBub3QgZHVwbGljYXRpbmcgb3IgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5MzksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTowMC4zNjY3OTI0MjVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDg1NjQzMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlIFxcXCJzb3VuZC9oZGEvS2NvbmZpZ1xcXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvS2NvbmZpZz01OD1zb3VyY2UgXFxcInNvdW5kL3BjaS9LY29uZmlnXFxcIlxcbnNvdW5kL0tjb25maWctNTktXFxuc291bmQvS2NvbmZpZzo2MDpzb3VyY2UgXFxcInNvdW5kL2hkYS9LY29uZmlnXFxcIlxcbnNvdW5kL0tjb25maWctNjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjAyLjQ3NTM2MzM2NloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Mjc4NjI2MjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBIREEgS2NvbmZpZyBSZWxhdGlvbnNoaXAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYHNvdW5kL2hkYS9LY29uZmlnYCBmaWxlIGdldHMgaXRzIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcyBkaXJlY3RseSBmcm9tIGBzb3VuZC9LY29uZmlnYC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBzZXR1cCwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIHJpZ2h0IGludG8gYHNvdW5kL2hkYS9LY29uZmlnYCBhbmQgc2VlIHdoYXQncyBiZWluZyBkZWZpbmVkIHRoZXJlLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGF1ZGlvIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyBtdWNoIGN1c3RvbWl6YXRpb24gaXMgb2ZmZXJlZCBhdCB0aGlzIGxldmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzc5NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjA5Ljc1Mzk5NTIxOVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic291bmQvaGRhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnUgXFxcIkhELUF1ZGlvXFxcIlxcbiAgIDM6XFx0XFxuICAgNDpcXHRzb3VyY2UgXFxcInNvdW5kL2hkYS9jb21tb24vS2NvbmZpZ1xcXCJcXG4gICA1OlxcdHNvdXJjZSBcXFwic291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWdcXFwiXFxuICAgNjpcXHRzb3VyY2UgXFxcInNvdW5kL2hkYS9jb2RlY3MvS2NvbmZpZ1xcXCJcXG4gICA3OlxcdHNvdXJjZSBcXFwic291bmQvaGRhL2NvcmUvS2NvbmZpZ1xcXCJcXG4gICA4OlxcdFxcbiAgIDk6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTowOS43NTQxMjY0ODlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwMDA1MTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyBhbmQgS2NvbmZpZyBIaWVyYXJjaHkqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSdtIG5vdGluZyBpcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYFNORF9IREFfSU5URUxgIGFuZCBgU05EYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpZiBnZW5lcmFsIHNvdW5kIHN1cHBvcnQgKGBTTkRgKSBpcyBlbmFibGVkLCB0aGVuIHdlIGNhbiBsaWtlbHkgYWxzbyBlbmFibGUgSW50ZWwgSGlnaCBEZWZpbml0aW9uIEF1ZGlvIChgU05EX0hEQV9JTlRFTGApLiBTdGFuZGFyZCBkZXBlbmRlbmN5LlxuXG5Ob3csIEkgbmVlZCB0byByZXZpc2l0IGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLCBgc291bmQvc29jL2xvb25nc29uL0tjb25maWdgLCBpcyBwcm9wZXJseSBzb3VyY2VkIGZyb20sIG9yIGluY2x1ZGVkIGJ5LCB0aGUgbWFpbiBTb3VuZCBTdWJzeXN0ZW0gS2NvbmZpZyBmaWxlLCBgc291bmQvc29jL0tjb25maWdgLiBUaGlzIGlzIGNydWNpYWwgdG8gZW5zdXJlIHRoYXQgdGhlIExvb25nc29uIEkyUyBQQ0kgZHJpdmVyIGdldHMgY29ycmVjdGx5IGludGVncmF0ZWQgaW50byB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBHb3R0YSBtYWtlIHN1cmUgaXQncyBsaW5rZWQgdXAgcmlnaHQsIG90aGVyd2lzZSBpdCdsbCBuZXZlciBldmVuIGJlIGNvbnNpZGVyZWQgZHVyaW5nIGJ1aWxkIHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MTE1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOToxNC4xNTQxODE0NThaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTI3OTgwNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlIFxcXCJzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ1xcXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvc29jL0tjb25maWc9MTE3PXNvdXJjZSBcXFwic291bmQvc29jL2tpcmt3b29kL0tjb25maWdcXFwiXFxuc291bmQvc29jL0tjb25maWc6MTE4OnNvdXJjZSBcXFwic291bmQvc29jL2xvb25nc29uL0tjb25maWdcXFwiXFxuc291bmQvc29jL0tjb25maWctMTE5LXNvdXJjZSBcXFwic291bmQvc29jL2ltZy9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOToxNi4yNDY5ODcyOTlaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAwMzYxNDgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQXVkaW8gQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgeWVzLCBJJ20gd2l0aCB0aGlzLiBMZXQncyBzZWUuIFRoZSBjdXJyZW50IGF1ZGlvIGNvbmZpZ3VyYXRpb25zIHdlJ3JlIGxvb2tpbmcgYXQgc2VlbSB0byBpbnZvbHZlIFBDSS1iYXNlZCBzb3VuZCBjYXJkcywgYSBidW5jaCBvZiBzb3VuZCBkcml2ZXJzLiBXZSdyZSBvYnZpb3VzbHkgY292ZXJpbmcgYSBicm9hZCByYW5nZSBvZiBoYXJkd2FyZS4gSSBzZWUgYFNORGAsIGBTTkRfUENJYCwgYW5kIHRoZW4gc3BlY2lmaWMgZHJpdmVycyBsaWtlIGBTTkRfSERBX0lOVEVMYCwgYFNORF9BRDE4ODlgLCBhbmQgb3RoZXJzIHdoaWNoIHJlcHJlc2VudCBsZWdhY3kgYW5kIGN1cnJlbnQgYXVkaW8gaW50ZXJmYWNlcy4gSXQgc2VlbXMgd2UncmUgaW5jbHVkaW5nIGEgc3lzdGVtLW9uLWEtY2hpcCAoU29DKSBjb25maWd1cmF0aW9uIG9wdGlvbjogYFNORF9TT0NgIGFuZCBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYCBhcyB3ZWxsLiBBbHNvIGBDT01QSUxFX1RFU1RgLiBBIGdvb2QgcmFuZ2UuXG5cbkhvbGQgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBTTkRfQ1M1NTMwYC4uLiByaWdodCwgaXQgKmRlcGVuZHMqIG9uIGBJU0FfRE1BX0FQSWAuIEl0J3MgZXNzZW50aWFsIHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGlzIGNvcnJlY3RseSBoYW5kbGVkIGluIG91ciBidWlsZCBwcm9jZXNzLCBzbyBsZXQncyBjaGVjayBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1MTEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTk6MjIuMjUwNjA2NDA0WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY2NjYwNTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfQ1M1NTMwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnPTI3OT1jb25maWcgU05EX0NTNDZYWF9ORVdfRFNQXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy0yODctXFxuc291bmQvcGNpL0tjb25maWc6Mjg4OmNvbmZpZyBTTkRfQ1M1NTMwXFxuc291bmQvcGNpL0tjb25maWctMjg5LVxcdHRyaXN0YXRlIFxcXCJDUzU1MzAgQXVkaW9cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjI0LjQxNzI3MDk0NFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Njg5MDUyNDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCdzIGdvaW5nIHRocm91Z2ggbXkgbWluZCBhcyBJIGFwcHJvYWNoIHRoaXM6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBTTkRfQ1M1NTMwKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGUgYHNvdW5kL3BjaS9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBTTkRfQ1M1NTMwYCBzb3VuZCBkcml2ZXIgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgdGhlIGRlY2lzaW9ucyBhcmUgbWFkZTogaXMgaXQgZW5hYmxlZCBieSBkZWZhdWx0PyBJcyBpdCBhIG1vZHVsZSwgb3IgYnVpbHQtaW4/IFdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgaXQgaGF2ZSBvbiBvdGhlciBvcHRpb25zIG9yIGhhcmR3YXJlPyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGBjb25maWcgU05EX0NTNTUzMGAsIGl0cyBgZGVwZW5kcyBvbmAsIGBzZWxlY3RgLCBgaGVscGAgdGV4dCwgYW5kIHBvdGVudGlhbCBkZWZhdWx0cy4gSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgdXNlIHRoZSBzdGFuZGFyZCBLY29uZmlnIGZvcm1hdCwgc28gaXQgc2hvdWxkIGJlIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHRvIHBhcnNlLiBUaGUgZ29hbCBpcyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHNwZWNpZmljIGF1ZGlvIGRyaXZlciBmaXRzIGludG8gdGhlIGxhcmdlciBzb3VuZCBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbiBsYW5kc2NhcGUsIGFuZCB0byBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyB1bnVzdWFsIG9yIHdvcnRoIG5vdGluZyBpbiBpdHMgc2V0dXAuIEknbSByZWFkeSB0byBkaXZlIGluIGFuZCBxdWlja2x5IHNwb3QgYW55IGdvdGNoYXMgb3IgYXJlYXMgb2YgcG90ZW50aWFsIGNvbmZsaWN0IVxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA2NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjMwLjEwNjMyNTUwMloiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9wY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODgsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyODg6XFx0Y29uZmlnIFNORF9DUzU1MzBcXG4gMjg5OlxcdFxcdHRyaXN0YXRlIFxcXCJDUzU1MzAgQXVkaW9cXFwiXFxuIDI5MDpcXHRcXHRkZXBlbmRzIG9uIElTQV9ETUFfQVBJIFxcdTAwMjZcXHUwMDI2IChYODZfMzIgfHwgQ09NUElMRV9URVNUKVxcbiAyOTE6XFx0XFx0ZGVwZW5kcyBvbiAhTTY4S1xcbiAyOTI6XFx0XFx0c2VsZWN0IFNORF9TQjE2X0RTUFxcbiAyOTM6XFx0XFx0aGVscFxcbiAyOTQ6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgYXVkaW8gb24gQ3lyaXgvTmF0U2VtaSBDUzU1MzAgY2hpcHMuXFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyOTc6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtY3M1NTMwLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTozMC4xMDY0MTI5ODJaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ2MDIxODk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25kaXRpb25hbCBDb21waWxhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIHRoaXMgc2VjdGlvbiBvZiBjb2RlJ3MgYmVoYXZpb3IgaGluZ2VzIG9uIGBJU0FfRE1BX0FQSWAgYmVpbmcgZGVmaW5lZCwgYW5kIHNwZWNpZmljYWxseSwgd2hldGhlciB3ZSdyZSBvbiBhbiBYODZfMzIgYXJjaGl0ZWN0dXJlIG9yIGNvbXBpbGluZyBhIHRlc3QgYnVpbGQuIEknbSBzZWVpbmcgdGhhdCB3ZSAqZG8qIGhhdmUgYENPTVBJTEVfVEVTVGAgZW5hYmxlZCwgd2hpY2ggc3VnZ2VzdHMgdGhhdCB0aGUgY29uZGl0aW9ucyBzaG91bGQgYmUgbWV0LCBidXQgSSdtIHN0aWxsIGEgYml0IGhlc2l0YW50LCBiZWNhdXNlIGBJU0FfRE1BX0FQSWAgbWlnaHQgbm90IGJlIHVuaXZlcnNhbGx5IHN1cHBvcnRlZCBhY3Jvc3MgYWxsIG91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlcy4gSG93ZXZlciwgY29uc2lkZXJpbmcgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gZW5hYmxlICplbm91Z2gqIG9mIHRoZXNlIHRvIHRyaWdnZXIgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMsIHRoYXQgc2hvdWxkbid0IGJlIGEgaHVnZSBwcm9ibGVtLiBXZSBkb24ndCBuZWVkICpldmVyeSogcG9zc2libGUgZmVhdHVyZSBlbmFibGVkLCBqdXN0IGVub3VnaCB0byBnZXQgdGhlIHRlc3QgdG8gcnVuLiBgU05EX0hEQV9JTlRFTGAgaXMgYSBjb21tb24gYW5kIGVhc2lseSB0cmlnZ2VyZWQgY29uZGl0aW9uLiBMZXQncyBzdGFydCB3aXRoIGNoZWNraW5nIGlmIGBTTkRfQUQxODg5YCBpcyBhIHN1aXRhYmxlIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1NDMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTozNS41NjY2MzQ3NzJaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDEzOlxcdGNvbmZpZyBTTkRfQUQxODg5XFxuICAxNDpcXHRcXHR0cmlzdGF0ZSBcXFwiQW5hbG9nIERldmljZXMgQUQxODg5XFxcIlxcbiAgMTU6XFx0XFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgaW50ZWdyYXRlZCBBQzk3IHNvdW5kXFxuICAxODpcXHRcXHQgIGRldmljZSBmb3VuZCBpbiBwYXJ0aWN1bGFyIG9uIHRoZSBIZXdsZXR0LVBhY2thcmQgW0JDSl0teHh4MFxcbiAgMTk6XFx0XFx0ICBjbGFzcyBQQS1SSVNDIHdvcmtzdGF0aW9ucywgdXNpbmcgdGhlIEFEMTgxOSBjb2RlYy5cXG4gIDIwOlxcdFxcbiAgMjE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDIyOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWFkMTg4OS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTk6MzUuNTY2NzU3NzYyWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MDQ1ODQ5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHBvc2l0aXZlIOKAkyB3ZSdyZSBvcGVyYXRpbmcgd2l0aCBubyBpbW1lZGlhdGVseSBhcHBhcmVudCBzcGVjaWFsIGRlcGVuZGVuY2llcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYWx3YXlzIGEgcmVsaWVmIGluIGNvbXBsZXggcHJvamVjdHMuIE5vdywgbGV0J3MgZHJpbGwgZG93biB0byB0aGUgc3BlY2lmaWNzLiBNeSBuZXh0IHN0ZXAsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBpbW1lZGlhdGVseSBjaGVjayB0aGUgaW1wbGljYXRpb25zIGFuZCBzdGF0dXMgb2YgYFNORF9BVElJWFBgLiBUaGlzIGxpa2VseSByZXByZXNlbnRzIGEgY3JpdGljYWwgYXVkaW8gb3IgaGFyZHdhcmUgaW50ZXJmYWNlIGNvbXBvbmVudCwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLiBXZSBuZWVkIHRvIGFzY2VydGFpbiBpdHMgY3VycmVudCBjb25maWd1cmF0aW9uLCBwb3RlbnRpYWwgdmVyc2lvbiBjb25mbGljdHMsIGFuZCBhbnkga25vd24gaXNzdWVzIG9yIGxpbWl0YXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHN5c3RlbSBwZXJmb3JtYW5jZSBvciBjb21wYXRpYmlsaXR5IGRvd24gdGhlIGxpbmUuIEl0J3MgdGhlIGx5bmNocGluIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwNjEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjQxLjE3MTM0Nzk4WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9wY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3NzpcXHRjb25maWcgU05EX0FUSUlYUFxcbiAgNzg6XFx0XFx0dHJpc3RhdGUgXFxcIkFUSSBJWFAgQUM5NyBDb250cm9sbGVyXFxcIlxcbiAgNzk6XFx0XFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXFxuICA4MDpcXHRcXHRoZWxwXFxuICA4MTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgaW50ZWdyYXRlZCBBQzk3IHNvdW5kXFxuICA4MjpcXHRcXHQgIGRldmljZSBvbiBtb3RoZXJib2FyZHMgd2l0aCBBVEkgY2hpcHNldHMgKEFUSSBJWFAgMTUwLzIwMC8yNTAvXFxuICA4MzpcXHRcXHQgIDMwMC80MDApLlxcbiAgODQ6XFx0XFxuICA4NTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDg2OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWF0aWl4cC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTk6NDEuMTcxNDk0NjZaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzNjM5MzcyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBNaW5pbWFsIEV4dGVybmFsIEVudGFuZ2xlbWVudHMqKlxuXG5BbHJpZ2h0LCBzdHJhaWdodCB0byB0aGUgcG9pbnQuIFRoZSBmaXJzdCB0aGluZyBJJ20gcmVnaXN0ZXJpbmcgaXMgdGhlIGFic2VuY2Ugb2YgYW55IHNwZWNpZmllZCBkZXBlbmRlbmNpZXMuIFRoYXQncyBnb29kLCBhIGNsZWFuIHNsYXRlIG9mdGVuIHNpZ25hbHMgZWl0aGVyIHNpbXBsaWNpdHkgb3IgYSBmb2N1c2VkIHNjb3BlLiBJdCBzdWdnZXN0cyB3aGF0ZXZlciB3ZSdyZSBkZWFsaW5nIHdpdGggKnNob3VsZG4ndCogcmVxdWlyZSBwdWxsaW5nIGluIGEgd2hvbGUgaG9zdCBvZiBleHRlcm5hbCBsaWJyYXJpZXMgb3IgZnJhbWV3b3JrcyDigJMgYXQgbGVhc3QsIG5vdCBpbml0aWFsbHkuIEFsd2F5cyBhIHBsdXMgdG8ga2VlcCB0aGluZ3MgbGlnaHR3ZWlnaHQgYW5kIG1hbmFnZWFibGUuXG5cbk5vdywgd2hlcmUgZG8gd2UgZ28gZnJvbSBoZXJlPyBMZXQncyBkcmlsbCBkb3duIGFuZCBzZWUgYWJvdXQgYFNORF9BVTg4MTBgLiBUaGlzIGlzIHdoZXJlIHRoZSB3b3JrIGJlZ2lucyB0byB0YWtlIHNoYXBlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDQ0MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTk6NDUuNDA3ODkxMjYxWiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk4LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDk4OlxcdGNvbmZpZyBTTkRfQVU4ODEwXFxuICA5OTpcXHRcXHR0cmlzdGF0ZSBcXFwiQXVyZWFsIEFkdmFudGFnZVxcXCJcXG4gMTAwOlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPUE9SVFxcbiAxMDE6XFx0XFx0c2VsZWN0IFNORF9NUFU0MDFfVUFSVFxcbiAxMDI6XFx0XFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXFxuIDEwMzpcXHRcXHRoZWxwXFxuIDEwNDpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBBdXJlYWwgQWR2YW50YWdlIHNvdW5kY2FyZHMuXFxuIDEwNTpcXHRcXG4gMTA2OlxcdFxcdCAgU3VwcG9ydGVkIGZlYXR1cmVzOiBIYXJkd2FyZSBNaXhlciwgU1JDLCBFUSBhbmQgU1BESUYgb3V0cHV0LlxcbiAxMDc6XFx0XFx0ICAzRCBzdXBwb3J0IGNvZGUgaXMgaW4gcGxhY2UsIGJ1dCBub3QgeWV0IHVzZWFibGUuIEZvciBtb3JlIGluZm8sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjQ1LjQwNzk5MDM0MVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjk0OTYyMjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KipcblxuT2theSwgc28gdGhlIHNpdHVhdGlvbiBoaW5nZXMgb24gYEhBU19JT1BPUlRgLiBUaGF0J3MgdGhlIGtleSB2YXJpYWJsZSBoZXJlLiBXZSd2ZSBnb3QgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgZGVmaW5lZCBhbmQgd2hhdCBpdHMgaW1wbGljYXRpb25zIGFyZS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaG93IHRoaXMgaW5mbHVlbmNlcyB0aGUgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZS4gSSdtIHRoaW5raW5nLCBcIkxldCdzIGFzc3VtZSBpdCdzIHNldC5cIiBXaGF0IGhhcHBlbnMgZG93bnN0cmVhbT9cblxuTm93LCBsZXQncyBwaXZvdCBhbmQgY2hlY2sgYFNORF9BVzJgLiBUaGF0J3MgYW5vdGhlciBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIG5lZWQgdG8ga25vdyBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIEkvTyBwb3J0IGNoZWNrLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhbiBhdWRpbyBjb21wb25lbnQgdGhhdCBkZXBlbmRzIG9uIGBIQVNfSU9QT1JUYD8gT3IgaXMgYFNORF9BVzJgIHNvbWVob3cgaW5kZXBlbmRlbnQsIGJ1dCBhZmZlY3RlZCBieSB0aGUgb3ZlcmFsbCBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBUaGlzIGNvbm5lY3Rpb24gZGVtYW5kcyBpbW1lZGlhdGUgc2NydXRpbnkuIFVuZGVyc3RhbmRpbmcgdGhlaXIgaW50ZXJyZWxhdGlvbnNoaXAgaXMgY3J1Y2lhbCBmb3IgYSBjb21wbGV0ZSBwaWN0dXJlLiBBcmUgd2UgdHJvdWJsZXNob290aW5nIGEgZGVwZW5kZW5jeSwgb3IganVzdCBleHBsb3JpbmcgdGhlIGZlYXR1cmUgc2V0PyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgc3lzdGVtIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODI2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTo0OS4xMDI5NTUzNzdaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0MixcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0MjpcXHRjb25maWcgU05EX0FXMlxcbiAxNDM6XFx0XFx0dHJpc3RhdGUgXFxcIkVtYWdpYyBBdWRpb3dlcmsgMlxcXCJcXG4gMTQ0OlxcdFxcdGhlbHBcXG4gMTQ1OlxcdFxcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIEVtYWdpYyBBdWRpb3dlcmsgMiBzb3VuZGNhcmRzLlxcbiAxNDY6XFx0XFxuIDE0NzpcXHRcXHQgIFN1cHBvcnRlZCBmZWF0dXJlczogQW5hbG9nIGFuZCBTUERJRiBvdXRwdXQuIEFuYWxvZyBvciBTUERJRiBpbnB1dC5cXG4gMTQ4OlxcdFxcdCAgTm90ZTogU3dpdGNoIGJldHdlZW4gYW5hbG9nIGFuZCBkaWdpdGFsIGlucHV0IGRvZXMgbm90IGFsd2F5cyB3b3JrLlxcbiAxNDk6XFx0XFx0ICBJdCBjYW4gcHJvZHVjZSBjb250aW51b3VzIG5vaXNlLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBzd2l0Y2ggYWdhaW5cXG4gMTUwOlxcdFxcdCAgKGFuZCBhZ2FpbikgYmV0d2VlbiBkaWdpdGFsIGFuZCBhbmFsb2cgaW5wdXQgdW50aWwgaXQgd29ya3MuXFxuIDE1MTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTk6NDkuMTAzMDU5Njc3WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0OTI4OTkyNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipRdWljayBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIExvb2tzIGxpa2UgdGhlcmUgYXJlbid0IGFueSBpbW1lZGlhdGUsIGdsYXJpbmcgc3BlY2lhbCBkZXBlbmRlbmNpZXMgdG8gY29uc2lkZXIuIEFsd2F5cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQg4oCTIGxlc3MgdG8gd3JhbmdsZSBsYXRlci4gTm93LCBsZXQncyBqdW1wIHJpZ2h0IGludG8gdGhlIG1lYXQgb2YgaXQgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgU05EX0JUODdYYC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVudGFsIG1hcCBvZiB0aGF0IG1vZHVsZSBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgZ290Y2hhcyBsdXJraW5nIHdpdGhpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyNzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjU0LjU5NTk2MTQ0N1oiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9wY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzcsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzc6XFx0Y29uZmlnIFNORF9CVDg3WFxcbiAxNzg6XFx0XFx0dHJpc3RhdGUgXFxcIkJ0ODd4IEF1ZGlvIENhcHR1cmVcXFwiXFxuIDE3OTpcXHRcXHRzZWxlY3QgU05EX1BDTVxcbiAxODA6XFx0XFx0aGVscFxcbiAxODE6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byByZWNvcmQgYXVkaW8gZnJvbSBUViBjYXJkcyBiYXNlZCBvblxcbiAxODI6XFx0XFx0ICBCcm9va3RyZWUgQnQ4NzgvQnQ4NzkgY2hpcHMsIHNheSBZIGhlcmUgYW5kIHJlYWRcXG4gMTgzOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zb3VuZC9jYXJkcy9idDg3eC5yc3RcXHUwMDNlLlxcbiAxODQ6XFx0XFxuIDE4NTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTg2OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWJ0ODd4LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTo1NC41OTYwNTA1MTdaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3NTc3NjM3OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBNaW5pbWFsIENvbXBsZXhpdHkqKlxuXG5BbHJpZ2h0LCBub3RoaW5nIGltbWVkaWF0ZWx5IGp1bXBzIG91dCBhdCBtZSBhcyBwcm9ibGVtYXRpYyBpbiB0aGUgZGVwZW5kZW5jeSBkZXBhcnRtZW50LiBTb3VuZHMgbGlrZSB3ZSdyZSBrZWVwaW5nIHRoaW5ncyBzdHJlYW1saW5lZCwgd2hpY2ggSSBhcHByZWNpYXRlLiBBbHdheXMgZ29vZCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBibG9hdCwgZXNwZWNpYWxseSBlYXJseSBvbi4gSXQgc2ltcGxpZmllcyB0cm91Ymxlc2hvb3RpbmcgYW5kIGRlcGxveW1lbnQuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIuIEknbSBnb2luZyB0byBzdGFydCBieSBwdWxsaW5nIHVwIGV2ZXJ5dGhpbmcgSSBrbm93IGFib3V0IGBTTkRfQ1M0MjgxYC4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGxhc3QgdGltZSBJIHRvdWNoZWQgdGhhdCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjI3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDowNS4zNTM4MTg2MThaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1NCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1NDpcXHRjb25maWcgU05EX0NTNDI4MVxcbiAyNTU6XFx0XFx0dHJpc3RhdGUgXFxcIkNpcnJ1cyBMb2dpYyAoU291bmQgRnVzaW9uKSBDUzQyODFcXFwiXFxuIDI1NjpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT1BPUlRcXG4gMjU3OlxcdFxcdHNlbGVjdCBTTkRfT1BMM19MSUJcXG4gMjU4OlxcdFxcdHNlbGVjdCBTTkRfUkFXTUlESVxcbiAyNTk6XFx0XFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXFxuIDI2MDpcXHRcXHRoZWxwXFxuIDI2MTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBDaXJydXMgTG9naWMgQ1M0MjgxIGNoaXBzLlxcbiAyNjI6XFx0XFxuIDI2MzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6MDUuMzUzOTk2MDI4WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTI2NTQ2OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIHRoZSBkaXJlY3Rpb24gdGhpcyBhbmFseXNpcyB0YWtlcyBkZXBlbmRzIGhlYXZpbHkgb24gd2hldGhlciBgSEFTX0lPUE9SVGAgaXMgZGVmaW5lZC4gVGhhdCdzIHRoZSBjcml0aWNhbCBmaXJzdCBodXJkbGUuIEJlZm9yZSBJIGNhbiBwcm9jZWVkIHdpdGggYW55IGFzc3VtcHRpb25zLCBJIG5lZWQgdG8ga25vdyBpZiB0aGF0IGNvbmRpdGlvbiBob2xkcyB0cnVlLiBJIGNhbid0IG1vdmUgZm9yd2FyZCBibGluZGx5LlxuXG5BZnRlciB0aGF0J3MgY2xhcmlmaWVkLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgdG8gaW52ZXN0aWdhdGUgaXMgdGhlIHN0YXRlIG9mIGBTTkRfTE9MQWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzdGF0dXMsIGFuZCBob3cgaXQgaW50ZXJyZWxhdGVzIHdpdGggYEhBU19JT1BPUlRgLiBNeSBhcHByb2FjaCB3aWxsIHNoaWZ0IGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTk5NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6MDkuMjY2NjU0NjcyWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9wY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MDcsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MDc6XFx0Y29uZmlnIFNORF9MT0xBXFxuIDcwODpcXHRcXHR0cmlzdGF0ZSBcXFwiRGlnaWdyYW0gTG9sYVxcXCJcXG4gNzA5OlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuIDcxMDpcXHRcXHRoZWxwXFxuIDcxMTpcXHRcXHQgIFNheSBZIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgRGlnaWdyYW0gTG9sYSBib2FyZHMuXFxuIDcxMjpcXHRcXG4gNzEzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiA3MTQ6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtbG9sYS5cXG4gNzE1OlxcdFxcbiA3MTY6XFx0Y29uZmlnIFNORF9MWDY0NjRFU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDowOS4yNjY4MDE3NDJaIiwiU2VxIjo2MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUxNjY0NzU1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipRdWljayBBdWRpdDogRGVwZW5kZW5jaWVzIFx1MDAyNiBNb2R1bGUgQ2hlY2sqKlxuXG5BbHJpZ2h0LCBsZXQncyBrZWVwIHRoaXMgY2xlYW4uIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJObyBzcGVjaWFsIGRlcGVuZGVuY2llcy5cIiBBbHdheXMgZ29vZCB0byBzdGFydCB3aXRoIGEgbWluaW1hbCBiYXNlbGluZS4gVGhlIGxlc3MgZXh0cmEgYmFnZ2FnZSwgdGhlIGJldHRlciBmb3IgcG9ydGFiaWxpdHkgYW5kIHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS5cblxuTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBzcGVjaWZpY3MuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHRoaW5raW5nIG9mIHRoZSByaWdodCB0aGluZy4gT2theSwgXCJMZXQncyBjaGVjayBgU05EX0hEU1BNYC5cIiBUaGF0J3MgdGhlIGtleSBtb2R1bGUuIE5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoYXQuIEkgd2FudCB0byBjb25maXJtIHdoYXQgSSdtIGV4cGVjdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzMjUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjIwOjI0LjQzMzI4MDYzN1oiLCJTZXEiOjY0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic291bmQvcGNpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNjI0LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjI0OlxcdGNvbmZpZyBTTkRfSERTUE1cXG4gNjI1OlxcdFxcdHRyaXN0YXRlIFxcXCJSTUUgSGFtbWVyZmFsbCBEU1AgTUFESS9SYXlEQVQvQUlPXFxcIlxcbiA2MjY6XFx0XFx0c2VsZWN0IFNORF9IV0RFUFxcbiA2Mjc6XFx0XFx0c2VsZWN0IFNORF9SQVdNSURJXFxuIDYyODpcXHRcXHRzZWxlY3QgU05EX1BDTVxcbiA2Mjk6XFx0XFx0aGVscFxcbiA2MzA6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgUk1FIEhhbW1lcmZhbGwgRFNQIE1BREksXFxuIDYzMTpcXHRcXHQgIFJheURBVCBhbmQgQUlPIHNvdW5kY2FyZHMuXFxuIDYzMjpcXHRcXG4gNjMzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDoyNC40MzM0MjA3ODhaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY0MTc3MTMyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBObyB1bnVzdWFsIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCwgdGhhdCdzIGdvb2QuIE15IGZvY3VzIGlzIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWZmZWN0ZWQ6IGBQQ0lgLCBgU05EYCwgYFNORF9QQ0lgLCBhbmQgYWxsIHRoZSBzb3VuZC1yZWxhdGVkIGRyaXZlcnMgSSBzZWUgbGlzdGVkIChgU05EX0hEQV9JTlRFTGAsIGBTTkRfQUQxODg5YCwgZXRjLiwgcmlnaHQgZG93biB0byBgQ09NUElMRV9URVNUYCkuIEl0J3MgYSBwcmV0dHkgY29tcHJlaGVuc2l2ZSBsaXN0LCBpbmRpY2F0aW5nIHRoaXMgaGFzIGEgcG90ZW50aWFsbHkgYnJvYWQgaW1wYWN0LlxuXG5UaGUga2V5IGNoYW5nZSwgdGhlIHRoaW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpbiBkZXRhaWwsIGlzIHRoaXMgYHBjaW1faW9yZW1hcF9yZWdpb25gIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGlzIGlzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIHRoYXQgaW50ZWdyYXRlcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZpY2UgcmVzb3VyY2VzIChkZXZyZXMpLCBhbmQgZXNzZW50aWFsbHkgY2hhbmdlcyBob3cgdGhlIGRyaXZlciBwcm9iZXMgYW5kIGRvZXMgdGhlIGlvcmVtYXAgb2YgdGhlIHJlZ2lvbiwgdXNpbmcgbWVtb3J5IG1hcHBlZCByZWdpb24uIFRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IHRoaXMgd2lsbCBiZSB1c2VkIGZvciBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIG1lbW9yeSBtYXBwaW5nIG92ZXIgSU8gbWFwcGluZyBpbiBtYW55IGNhc2VzLiBTbyBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFBDSSBjb3JlIGFuZCBpbiBkcml2ZXIgcHJvYmluZyBsb2dpYyDigJMgYW5kIGl0J3MgcmVhY2hhYmxlIHRocm91Z2ggUENJIGRldmljZSBwcm9iZSwgd2hpY2ggbWFrZXMgaXQgZnV6emFibGUsIHdoaWNoIGlzIGEgZ29vZCB0aGluZy5cblxuSSdtIG1ha2luZyBzdXJlIHRoYXQgdGhlIG5ldyBmdW5jdGlvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgaXMgZXhwb3J0ZWQgYmVjYXVzZSBpdCBpcyBhIGtleSBmdW5jdGlvbi4gSSBjYW4gY29uZmlybTogYEVYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7YCDigJMgcGVyZmVjdC4gQW5kIGl0J3Mgbm90IHN0YXRpYyBvciBpbmxpbmVkLCBzbyBpdCdzIGRpcmVjdGx5IGFjY2Vzc2libGUuXG5cbkknbGwgcHJvY2VlZCB1c2luZyB0aGUgc2V0LXJlc3VsdHMgdG9vbCBmb3IgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2ODUsIk91dHB1dFRva2VucyI6MjYwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6MzEuMDc1MTk1NDkyWiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1MjU2MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQ0lcIixcbiAgICBcIlNORFwiLFxuICAgIFwiU05EX1BDSVwiLFxuICAgIFwiU05EX0hEQV9JTlRFTFwiLFxuICAgIFwiU05EX0FEMTg4OVwiLFxuICAgIFwiU05EX0FUSUlYUFwiLFxuICAgIFwiU05EX0FUSUlYUF9NT0RFTVwiLFxuICAgIFwiU05EX0FXMlwiLFxuICAgIFwiU05EX0JUODdYXCIsXG4gICAgXCJTTkRfTE9MQVwiLFxuICAgIFwiU05EX0hEU1BNXCIsXG4gICAgXCJTTkRfU09DXCIsXG4gICAgXCJTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcIixcbiAgICBcIkNPTVBJTEVfVEVTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBjaW1faW9yZW1hcF9yZWdpb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCB3aGljaCB3cmFwcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZyZXMuIEl0IHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIHRoZW0gdG8gdXNlIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgdXNpbmcgSU8gbWFwcGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgUENJIGFuZCBkcml2ZXIgcHJvYmluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQ0lcIixcbiAgICBcIlNORFwiLFxuICAgIFwiU05EX1BDSVwiLFxuICAgIFwiU05EX0hEQV9JTlRFTFwiLFxuICAgIFwiU05EX0FEMTg4OVwiLFxuICAgIFwiU05EX0FUSUlYUFwiLFxuICAgIFwiU05EX0FUSUlYUF9NT0RFTVwiLFxuICAgIFwiU05EX0FXMlwiLFxuICAgIFwiU05EX0JUODdYXCIsXG4gICAgXCJTTkRfTE9MQVwiLFxuICAgIFwiU05EX0hEU1BNXCIsXG4gICAgXCJTTkRfU09DXCIsXG4gICAgXCJTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcIixcbiAgICBcIkNPTVBJTEVfVEVTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBjaW1faW9yZW1hcF9yZWdpb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCB3aGljaCB3cmFwcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZyZXMuIEl0IHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIHRoZW0gdG8gdXNlIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgdXNpbmcgSU8gbWFwcGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgUENJIGFuZCBkcml2ZXIgcHJvYmluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6MzEuMTkwNDU4NjExWiIsIlNlcSI6NjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkzOTc5MTc2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjIwOjMxLjE5MTA1MjIxMVoiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjkzOTE5MjYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYTZmNGM2MDI0YTk5ZWE2NzIzMTc2ZmQyNTRjNTI5N2Y2OTU1ZWQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTU6MTU6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9kZXZyZXMuYyBiL2RyaXZlcnMvcGNpL2RldnJlcy5jXG5pbmRleCBmMDc1ZTc4ODFjM2E2Li5mYWE2NzhmZjViNTZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wY2kvZGV2cmVzLmNcbisrKyBiL2RyaXZlcnMvcGNpL2RldnJlcy5jXG5AQCAtNjM5LDYgKzYzOSw1NSBAQCB2b2lkIF9faW9tZW0gKnBjaW1faW9tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxuIH1cbiBFWFBPUlRfU1lNQk9MKHBjaW1faW9tYXBfcmVnaW9uKTtcbiBcbisvKipcbisgKiBwY2ltX2lvcmVtYXBfcmVnaW9uIC0gUmVxdWVzdCBhbmQgaW9yZW1hcCBhIFBDSSBCQVJcbisgKiBAcGRldjogUENJIGRldmljZSB0byBtYXAgSU8gcmVzb3VyY2VzIGZvclxuKyAqIEBiYXI6IEluZGV4IG9mIGEgQkFSIHRvIG1hcFxuKyAqIEBuYW1lOiBOYW1lIG9mIHRoZSBkcml2ZXIgcmVxdWVzdGluZyB0aGUgcmVzb3VyY2VcbisgKlxuKyAqIFJldHVybnM6IF9faW9tZW0gcG9pbnRlciBvbiBzdWNjZXNzLCBhbiBJT01FTV9FUlJfUFRSIG9uIGZhaWx1cmUuXG4rICpcbisgKiBNYXBwaW5nIGFuZCByZWdpb24gd2lsbCBnZXQgYXV0b21hdGljYWxseSByZWxlYXNlZCBvbiBkcml2ZXIgZGV0YWNoLiBJZlxuKyAqIGRlc2lyZWQsIHJlbGVhc2UgbWFudWFsbHkgb25seSB3aXRoIHBjaW1faW91bm1hcF9yZWdpb24oKS5cbisgKi9cbit2b2lkIF9faW9tZW0gKnBjaW1faW9yZW1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG4rXHRcdFx0XHQgIGNvbnN0IGNoYXIgKm5hbWUpXG4re1xuK1x0aW50IHJldDtcbitcdHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzICpyZXM7XG4rXG4rXHRpZiAoIXBjaV9iYXJfaW5kZXhfaXNfdmFsaWQoYmFyKSlcbitcdFx0cmV0dXJuIElPTUVNX0VSUl9QVFIoLUVJTlZBTCk7XG4rXG4rXHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xuK1x0aWYgKCFyZXMpXG4rXHRcdHJldHVybiBJT01FTV9FUlJfUFRSKC1FTk9NRU0pO1xuK1xuK1x0cmVzLVx1MDAzZXR5cGUgPSBQQ0lNX0FERFJfREVWUkVTX1RZUEVfUkVHSU9OX01BUFBJTkc7XG4rXHRyZXMtXHUwMDNlYmFyID0gYmFyO1xuK1xuK1x0cmV0ID0gcGNpX3JlcXVlc3RfcmVnaW9uKHBkZXYsIGJhciwgbmFtZSk7XG4rXHRpZiAocmV0ICE9IDApXG4rXHRcdGdvdG8gZXJyX3JlZ2lvbjtcbitcbitcdHJlcy1cdTAwM2ViYXNlYWRkciA9IHBjaV9pb3JlbWFwX2JhcihwZGV2LCBiYXIpO1xuK1x0aWYgKCFyZXMtXHUwMDNlYmFzZWFkZHIpIHtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBlcnJfaW9tYXA7XG4rXHR9XG4rXG4rXHRkZXZyZXNfYWRkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCByZXMpO1xuK1x0cmV0dXJuIHJlcy1cdTAwM2ViYXNlYWRkcjtcbitcbitlcnJfaW9tYXA6XG4rXHRwY2lfcmVsZWFzZV9yZWdpb24ocGRldiwgYmFyKTtcbitlcnJfcmVnaW9uOlxuK1x0cGNpbV9hZGRyX2RldnJlc19mcmVlKHJlcyk7XG4rXG4rXHRyZXR1cm4gSU9NRU1fRVJSX1BUUihyZXQpO1xuK31cbitFWFBPUlRfU1lNQk9MKHBjaW1faW9yZW1hcF9yZWdpb24pO1xuK1xuIC8qKlxuICAqIHBjaW1faW91bm1hcF9yZWdpb24gLSBVbm1hcCBhbmQgcmVsZWFzZSBhIFBDSSBCQVJcbiAgKiBAcGRldjogUENJIGRldmljZSB0byBvcGVyYXRlIG9uXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2kuaCBiL2luY2x1ZGUvbGludXgvcGNpLmhcbmluZGV4IDY0YjMwOGI2ZTYxYzEuLmU3YTJlY2UxMzhlYTYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BjaS5oXG5AQCAtMjUwNiw2ICsyNTA2LDggQEAgaW50IHBjaW1fcmVxdWVzdF9hbGxfcmVnaW9ucyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3QgY2hhciAqbmFtZSk7XG4gdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLCB1bnNpZ25lZCBsb25nIG1heGxlbik7XG4gdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbiBcdFx0XHRcdGNvbnN0IGNoYXIgKm5hbWUpO1xuK3ZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbitcdFx0XHRcdCAgY29uc3QgY2hhciAqbmFtZSk7XG4gdm9pZCBwY2ltX2lvdW5tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyKTtcbiB2b2lkIHBjaW1faW91bm1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdm9pZCBfX2lvbWVtICphZGRyKTtcbiB2b2lkIF9faW9tZW0gKiBjb25zdCAqcGNpbV9pb21hcF90YWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG5kaWZmIC0tZ2l0IGEvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmMgYi9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuY1xuaW5kZXggMjhjNTVjNWEyZDJlZi4uNWRhMGFjMWVkNDA3MSAxMDA2NDRcbi0tLSBhL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXG4rKysgYi9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuY1xuQEAgLTE5MjYsNyArMTkyNiw3IEBAIHN0YXRpYyBpbnQgYXp4X2ZpcnN0X2luaXQoc3RydWN0IGF6eCAqY2hpcClcbiBcdGlmIChjaGlwLVx1MDAzZWRyaXZlcl90eXBlID09IEFaWF9EUklWRVJfWkhBT1hJTkhETUkpXG4gXHRcdGJ1cy1cdTAwM2Vwb2xsaW5nX21vZGUgPSAxO1xuIFxuLVx0YnVzLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiSUNIIEhEIGF1ZGlvXCIpO1xuK1x0YnVzLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJJQ0ggSEQgYXVkaW9cIik7XG4gXHRpZiAoSVNfRVJSKGJ1cy1cdTAwM2VyZW1hcF9hZGRyKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoYnVzLVx1MDAzZXJlbWFwX2FkZHIpO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hZDE4ODkuYyBiL3NvdW5kL3BjaS9hZDE4ODkuY1xuaW5kZXggZjRlYzQwNGMwZDE1YS4uYTI1NzBhMTQ4ZjYwNiAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hZDE4ODkuY1xuKysrIGIvc291bmQvcGNpL2FkMTg4OS5jXG5AQCAtODA0LDcgKzgwNCw3IEBAIHNuZF9hZDE4ODlfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbiBcdGNoaXAtXHUwMDNlaXJxID0gLTE7XG4gXG4gXHQvKiAoMSkgUENJIHJlc291cmNlIGFsbG9jYXRpb24gKi9cbi1cdGNoaXAtXHUwMDNlaW9iYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBjYXJkLVx1MDAzZWRyaXZlcik7XG4rXHRjaGlwLVx1MDAzZWlvYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBjYXJkLVx1MDAzZWRyaXZlcik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlaW9iYXNlKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2Vpb2Jhc2UpO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdGlpeHAuYyBiL3NvdW5kL3BjaS9hdGlpeHAuY1xuaW5kZXggYjczODI5NWI0MWU1ZC4uYjlmY2Q5MTNmYmM2ZiAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdGlpeHAuY1xuKysrIGIvc291bmQvcGNpL2F0aWl4cC5jXG5AQCAtMTUzMSw3ICsxNTMxLDcgQEAgc3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuIFx0Y2hpcC1cdTAwM2VjYXJkID0gY2FyZDtcbiBcdGNoaXAtXHUwMDNlcGNpID0gcGNpO1xuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbi1cdGNoaXAtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJBVEkgSVhQIEFDOTdcIik7XG4rXHRjaGlwLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJBVEkgSVhQIEFDOTdcIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcikpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcik7XG4gXHRjaGlwLVx1MDAzZWFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMgYi9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmNcbmluZGV4IDhhYWViMTk3Y2U0NTguLmY2NTQ4MDQ4Mzk5NjYgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmNcbisrKyBiL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xuQEAgLTExNjMsNyArMTE2Myw3IEBAIHN0YXRpYyBpbnQgc25kX2F0aWl4cF9pbml0KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbiBcdGNoaXAtXHUwMDNlY2FyZCA9IGNhcmQ7XG4gXHRjaGlwLVx1MDAzZXBjaSA9IHBjaTtcbiBcdGNoaXAtXHUwMDNlaXJxID0gLTE7XG4tXHRjaGlwLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiQVRJIElYUCBNQzk3XCIpO1xuK1x0Y2hpcC1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwiQVRJIElYUCBNQzk3XCIpO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZXJlbWFwX2FkZHIpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZXJlbWFwX2FkZHIpO1xuIFx0Y2hpcC1cdTAwM2VhZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcbmluZGV4IGJiMDI5NDU3OTNmMGMuLmE3NzNlOGE1NmMwYzUgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jXG4rKysgYi9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jXG5AQCAtMTYwLDcgKzE2MCw3IEBAIHNuZF92b3J0ZXhfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbiBcdC8vICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvblxuIFx0Ly8gR2V0IE1NSU8gYXJlYVxuIFx0Ly9cbi1cdGNoaXAtXHUwMDNlbW1pbyA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpO1xuK1x0Y2hpcC1cdTAwM2VtbWlvID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIEtCVUlMRF9NT0ROQU1FKTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2VtbWlvKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2VtbWlvKTtcbiBcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMgYi9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmNcbmluZGV4IDYwYTg3MzIyZWFlNDkuLjI3ZmQ0NWQ2NDcwMTkgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmNcbisrKyBiL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuY1xuQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgaW50IHNuZF9hdzJfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcbiBcdGNoaXAtXHUwMDNlaXJxID0gLTE7XG4gXG4gXHQvKiAoMSkgUENJIHJlc291cmNlIGFsbG9jYXRpb24gKi9cbi1cdGNoaXAtXHUwMDNlaW9iYXNlX3ZpcnQgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiQXVkaW93ZXJrMlwiKTtcbitcdGNoaXAtXHUwMDNlaW9iYXNlX3ZpcnQgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJBdWRpb3dlcmsyXCIpO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZWlvYmFzZV92aXJ0KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCk7XG4gXHRjaGlwLVx1MDAzZWlvYmFzZV9waHlzID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2J0ODd4LmMgYi9zb3VuZC9wY2kvYnQ4N3guY1xuaW5kZXggMzgzZGVmMWYyYWY3NC4uNTVmNmI3OWJkOWVhYyAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9idDg3eC5jXG4rKysgYi9zb3VuZC9wY2kvYnQ4N3guY1xuQEAgLTY5MCw3ICs2OTAsNyBAQCBzdGF0aWMgaW50IHNuZF9idDg3eF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNoaXAtXHUwMDNlcmVnX2xvY2spO1xuIFxuLVx0Y2hpcC1cdTAwM2VtbWlvID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcIkJ0ODd4IGF1ZGlvXCIpO1xuK1x0Y2hpcC1cdTAwM2VtbWlvID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwiQnQ4N3ggYXVkaW9cIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlbW1pbykpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlbW1pbyk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNDI4MS5jIGIvc291bmQvcGNpL2NzNDI4MS5jXG5pbmRleCBmNTFmNGJiNjM3NjY0Li5mMDAwZGNhOTRlNGZkIDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2NzNDI4MS5jXG4rKysgYi9zb3VuZC9wY2kvY3M0MjgxLmNcbkBAIC0xMjk4LDEyICsxMjk4LDEyIEBAIHN0YXRpYyBpbnQgc25kX2NzNDI4MV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFx0fVxuIFx0Y2hpcC1cdTAwM2VkdWFsX2NvZGVjID0gZHVhbF9jb2RlYztcbiBcbi1cdGNoaXAtXHUwMDNlYmEwID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcIkNTNDI4MVwiKTtcbitcdGNoaXAtXHUwMDNlYmEwID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwiQ1M0MjgxXCIpO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZWJhMCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlYmEwKTtcbiBcdGNoaXAtXHUwMDNlYmEwX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbiBcbi1cdGNoaXAtXHUwMDNlYmExID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAxLCBcIkNTNDI4MVwiKTtcbitcdGNoaXAtXHUwMDNlYmExID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDEsIFwiQ1M0MjgxXCIpO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZWJhMSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlYmExKTtcbiBcdGNoaXAtXHUwMDNlYmExX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAxKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3M1NTMwLmMgYi9zb3VuZC9wY2kvY3M1NTMwLmNcbmluZGV4IDI5MmI2NWFhNzU4YTkuLjdjZjc0ZTc3OTcwY2QgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvY3M1NTMwLmNcbisrKyBiL3NvdW5kL3BjaS9jczU1MzAuY1xuQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGludCBzbmRfY3M1NTMwX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXHRjaGlwLVx1MDAzZWNhcmQgPSBjYXJkO1xuIFx0Y2hpcC1cdTAwM2VwY2kgPSBwY2k7XG4gXG4tXHRtZW0gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiQ1M1NTMwXCIpO1xuK1x0bWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwiQ1M1NTMwXCIpO1xuIFx0aWYgKElTX0VSUihtZW0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihtZW0pO1xuIFx0Y2hpcC1cdTAwM2VwY2lfYmFzZSA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuYyBiL3NvdW5kL3BjaS9sb2xhL2xvbGEuY1xuaW5kZXggMzRhM2JhMTdkZWI0Yi4uZWMyOTM4YzRiNTMyMyAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuY1xuKysrIGIvc291bmQvcGNpL2xvbGEvbG9sYS5jXG5AQCAtNTc5LDE0ICs1NzksMTQgQEAgc3RhdGljIGludCBsb2xhX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2ksIGludCBkZXYpXG4gXHRcdGNoaXAtXHUwMDNlc2FtcGxlX3JhdGVfbWluID0gMTYwMDA7XG4gXHR9XG4gXG4tXHRpb21lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgRFJWTkFNRSk7XG4rXHRpb21lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBEUlZOQU1FKTtcbiBcdGlmIChJU19FUlIoaW9tZW0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihpb21lbSk7XG4gXG4gXHRjaGlwLVx1MDAzZWJhclswXS5yZW1hcF9hZGRyID0gaW9tZW07XG4gXHRjaGlwLVx1MDAzZWJhclswXS5hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XG4gXG4tXHRpb21lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMiwgRFJWTkFNRSk7XG4rXHRpb21lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTtcbiBcdGlmIChJU19FUlIoaW9tZW0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihpb21lbSk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcbmluZGV4IGQ4YmJlZGJjOGZmNjguLjliMzc1OGNhMWQwMDQgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jXG4rKysgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jXG5AQCAtNjUxMSw3ICs2NTExLDcgQEAgc3RhdGljIGludCBzbmRfaGRzcG1fY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcbiBcbiBcdHBjaV9zZXRfbWFzdGVyKGhkc3BtLVx1MDAzZXBjaSk7XG4gXG4tXHRoZHNwbS1cdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiaGRzcG1cIik7XG4rXHRoZHNwbS1cdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJoZHNwbVwiKTtcbiBcdGlmIChJU19FUlIoaGRzcG0tXHUwMDNlaW9iYXNlKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoaGRzcG0tXHUwMDNlaW9iYXNlKTtcbiBcbmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jIGIvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuY1xuaW5kZXggZjViNTYwNDY1NzA2Zi4uMzJmYzBmNTQ0OTI4MiAxMDA2NDRcbi0tLSBhL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmNcbisrKyBiL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmNcbkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBpbnQgbG9vbmdzb25faTJzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdGkycy1cdTAwM2VkZXYgPSBkZXY7XG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgaTJzKTtcbiBcbi1cdGkycy1cdTAwM2VyZWdfYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBkZXYsIDAsIERSSVZFUl9OQU1FKTtcbitcdGkycy1cdTAwM2VyZWdfYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGRldiwgMCwgRFJJVkVSX05BTUUpO1xuIFx0aWYgKElTX0VSUihpMnMtXHUwMDNlcmVnX2Jhc2UpKSB7XG4gXHRcdGRldl9lcnIoZGV2LCBcImlvbWFwX3JlZ2lvbiBmYWlsZWRcXG5cIik7XG4gXHRcdHJldHVybiBQVFJfRVJSKGkycy1cdTAwM2VyZWdfYmFzZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDozMS4xOTEwNTMzNTFaIiwiU2VxIjo2OSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3MzExOTgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIFBDSSBNTUlPIENoYW5nZSoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYHBjaW1faW9yZW1hcF9yZWdpb25gIGluIGBkcml2ZXJzL3BjaS9kZXZyZXMuY2AsIHdoaWNoIGlzIGEgbmV3IGZ1bmN0aW9uLCBhbmQgaXQncyBhbHNvIHJlcGxhY2luZyBgcGNpbV9pb21hcF9yZWdpb25gIHdpdGggdGhpcyBuZXcgb25lIGluIHNldmVyYWwgc291bmQgZHJpdmVycy4gSG9sZCBvbiBhIHNlY29uZCwgSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gYHBjaW1faW9tYXBfcmVnaW9uYCB1c2VzIGBwY2lfaW9tYXBgLCBhbmQgdGhhdCBjYW4gaGFuZGxlIGJvdGggUHJvZ3JhbW1lZCBJL08gKFBJTykgKm9yKiBNZW1vcnkgTWFwcGVkIEkvTyAoTU1JTyksIHJpZ2h0PyBCdXQgYHBjaW1faW9yZW1hcF9yZWdpb25gPyBUaGF04oCZcyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyYCwgd2hpY2ggaXMgKnN0cmljdGx5KiBNTUlPLiBPa2F5LCB0aGF0J3MgdGhlIGRpZmZlcmVuY2UsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGNoYW5nZSBpcyBzYWZlLlxuXG5MZXQncyBzZWXigKYgaXMgdGhlcmUgYSByaXNrIG9mIGludHJvZHVjaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlIGhlcmU/IFRoZSBjb3JlIG9mIHRoaXMgaXMgdGhlIG5ldyBmdW5jdGlvbiwgYHBjaW1faW9yZW1hcF9yZWdpb25gLCBhbmQgaXQncyBhbGxvY2F0aW5nIGEgYHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzYCB1c2luZyBgcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KWAuIEhtbSwgdGhhdCBgcGNpbV9hZGRyX2RldnJlc19hbGxvY2AgaXMgaW50ZXJuYWwgdG8gYGRyaXZlcnMvcGNpL2RldnJlcy5jYCwgc28gSSBuZWVkIHRvIGNoZWNrIGl0cyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaG93IGl0J3MgaW5pdGlhbGl6ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNjksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDozNS43NjQxNzc0OTZaIiwiU2VxIjo3MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDEyMDYyMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpbV9hZGRyX2RldnJlc19hbGxvY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BjaS9kZXZyZXMuYz03Mz1zdGF0aWMgdm9pZCBwY2ltX2FkZHJfcmVzb3VyY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlc291cmNlX3JhdylcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTkzLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jOjk0OnN0YXRpYyBzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcGNpbV9hZGRyX2RldnJlc19hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy05NS17XFxuLS1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz01MzU9dm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLCB1bnNpZ25lZCBsb25nIG1heGxlbilcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTU0Mi1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYzo1NDM6XFx0cmVzID0gcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KTtcXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy01NDQtXFx0aWYgKCFyZXMpXFxuLS1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz02MDQ9dm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTYxMi1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYzo2MTM6XFx0cmVzID0gcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KTtcXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02MTQtXFx0aWYgKCFyZXMpXFxuLS1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz02NTM9dm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxcbi0tXFxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjYxLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jOjY2MjpcXHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTY2My1cXHRpZiAoIXJlcylcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jPTc3MD1pbnQgcGNpbV9yZXF1ZXN0X3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTc3Ny1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYzo3Nzg6XFx0cmVzID0gcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KTtcXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy03NzktXFx0aWYgKCFyZXMpXFxuLS1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz04ODA9dm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JhbmdlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxcbi0tXFxuZHJpdmVycy9wY2kvZGV2cmVzLmMtODg4LVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jOjg4OTpcXHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTg5MC1cXHRpZiAoIXJlcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6MzcuOTA1Mzg4Mjk1WiIsIlNlcSI6NzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODI3NTczNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIGBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jYCoqXG5cblJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIGBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jYC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBmdW5jdGlvbiwgYXMgaXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCBpbiBob3cgd2UgaGFuZGxlIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uIHdpdGhpbiB0aGUgZGV2aWNlIHJlc291cmNlIGZyYW1ld29yay4gSSBrbm93IGl0J3MgYSBrZXkgcGFydCBvZiBlbnN1cmluZyBwcm9wZXIgY2xlYW51cCBhbmQgcHJldmVudGluZyBtZW1vcnkgbGVha3Mgd2l0aCBQQ0kgZGV2aWNlcy4gTGV0J3Mgc3RhcnQgd2l0aCBhIGRlZXAgZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBJIHdhbnQgdG8gc2VlIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIGRldmljZSByZXNvdXJjZSBtYW5hZ2VtZW50IHN5c3RlbSBhbmQgZmlndXJlIG91dCBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaW4gbXkgY3VycmVudCBwcm9qZWN0LiBTcGVjaWZpY2FsbHksIGhvdyBkb2VzIGl0IGhhbmRsZSBwb3RlbnRpYWwgY29uZmxpY3RzIGR1cmluZyBhbGxvY2F0aW9uLCBob3cgaXQgZGVhbHMgd2l0aCBmYWlsdXJlcywgYW5kIGhvdyBpdOKAmXMgYWZmZWN0ZWQgYnkgdGhlIGRpZmZlcmVudCByZXNvdXJjZSB0eXBlcyAobWVtb3J5LCBJL08sIGV0Yy4pLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIHRoaXMgY29kZSBwYXRoIHNvIEkgY2FuIGludGVncmF0ZSB0aGlzIGZ1bmN0aW9uIHByb3Blcmx5IHdpdGggbWluaW1hbCByaXNrIHRvIG15IG93biBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDo0Mi4xODgxNDc4ODNaIiwiU2VxIjo3MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wY2kvZGV2cmVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTA6XFx0XFx0XFx0YnJlYWs7XFxuICA5MTpcXHRcXHR9XFxuICA5MjpcXHR9XFxuICA5MzpcXHRcXG4gIDk0OlxcdHN0YXRpYyBzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcGNpbV9hZGRyX2RldnJlc19hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gIDk1OlxcdHtcXG4gIDk2OlxcdFxcdHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzICpyZXM7XFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdHJlcyA9IGRldnJlc19hbGxvY19ub2RlKHBjaW1fYWRkcl9yZXNvdXJjZV9yZWxlYXNlLCBzaXplb2YoKnJlcyksXFxuICA5OTpcXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMLCBkZXZfdG9fbm9kZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KSk7XFxuIDEwMDpcXHRcXHRpZiAocmVzKVxcbiAxMDE6XFx0XFx0XFx0cGNpbV9hZGRyX2RldnJlc19jbGVhcihyZXMpO1xcbiAxMDI6XFx0XFx0cmV0dXJuIHJlcztcXG4gMTAzOlxcdH1cXG4gMTA0OlxcdFxcbiAxMDU6XFx0LyogSnVzdCBmb3IgY29uc2lzdGVuY3kgYW5kIHJlYWRhYmlsaXR5LiAqL1xcbiAxMDY6XFx0c3RhdGljIGlubGluZSB2b2lkIHBjaW1fYWRkcl9kZXZyZXNfZnJlZShzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcmVzKVxcbiAxMDc6XFx0e1xcbiAxMDg6XFx0XFx0ZGV2cmVzX2ZyZWUocmVzKTtcXG4gMTA5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6NDIuMTg4MjMxNTMzWiIsIlNlcSI6NzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NDE5ODQ3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgUENJIElPIE1hcHBpbmc6IEEgQ2xlYW4gYW5kIFNhZmUgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZyBvZiB0aGUgUENJIElPIG1hcHBpbmcgQVBJLiBFc3NlbnRpYWxseSwgd2UncmUgaW50cm9kdWNpbmcgYSBuZXcgZnVuY3Rpb24sIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCwgd2hpY2ggaXMgdmVyeSBtdWNoIGxpa2UgdGhlIGV4aXN0aW5nIGBwY2ltX2lvbWFwX3JlZ2lvbmAsIGJ1dCB0aGlzIG9uZSdzIHVzaW5nIGBwY2lfaW9yZW1hcF9iYXJgIGluc3RlYWQgb2YgYHBjaV9pb21hcGAgaW50ZXJuYWxseS4gSSdtIHNlZWluZyB0aGF0IGl0J3MganVzdCBhIGRpcmVjdCByZXBsYWNlbWVudCBpbiBzb21lIHNvdW5kIGRyaXZlcnMuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIHdoZXRoZXIgdGhpcyBpbnRyb2R1Y2VzIGFueSBzdWJ0bGUgbWVtb3J5IHJpc2tzLCBwYXJ0aWN1bGFybHkgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmVzLiBCdXQgYWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb2RlLCBJJ20gY29uZmlkZW50IHRoYXQncyBub3QgdGhlIGNhc2UuIFRoZSBzdHJ1Y3R1cmUgaXMgY2xlYXJlZCB1c2luZyBgcGNpbV9hZGRyX2RldnJlc19jbGVhcmAgYmVmb3JlIHVzZSwgYW5kIHRoZSByZXR1cm5lZCBwb2ludGVyIGlzIGV4cGxpY2l0bHkgYW4gSU8gbWVtb3J5IHBvaW50ZXIuIE5vIHVzZXIgc3BhY2UgY29weWluZyBpcyBoYXBwZW5pbmcgaGVyZSwgYW5kIEkgZG9uJ3Qgc2VlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBiZWluZyB1c2VkLiBUaGlzIHJlYWxseSBhcHBlYXJzIHRvIGJlIGEgc3RhbmRhcmQgZHJpdmVyIEFQSSBjaGFuZ2UuIEknbGwgZmxhZyB0aGlzIGFzIHNhZmUuIEkgYW0gY29tZm9ydGFibGUgc2V0dGluZyBOZWVkc0tNU0FOIHRvIGZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTQ1LCJPdXRwdXRUb2tlbnMiOjE4NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjIwOjQ4LjEzMDIxOTYxNVoiLCJTZXEiOjc0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBDSSBkZXZyZXMgQVBJIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBhbmQgcmVwbGFjZXMgYHBjaW1faW9tYXBfcmVnaW9uYCB3aXRoIGl0IGluIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhlIG5ldyBmdW5jdGlvbiBhbGxvY2F0ZXMgYSBgcGNpbV9hZGRyX2RldnJlc2Agc3RydWN0dXJlLCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCB2aWEgYHBjaW1fYWRkcl9kZXZyZXNfY2xlYXIoKWAsIGFuZCBtYXBzIFBDSSBCQVJzIHVzaW5nIGBwY2lfaW9yZW1hcF9iYXIoKWAuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIG9yIGNvbnRyb2wgZmxvdyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBtZW1vcnkgbWFwcGluZywgcmVzb3VyY2UgbGVha3MsIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMsIGFsbCBvZiB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowf4czp[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-12 15:12:39 +0000 UTC FinishedAt: 2026-08-12 15:20:50 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI", "SND", "SND_PCI", "SND_HDA_INTEL", "SND_AD1889", "SND_ATIIXP", "SND_ATIIXP_MODEM", "SND_AW2", "SND_BT87X", "SND_LOLA", "SND_HDSPM", "SND_SOC", "SND_SOC_LOONGSON_I2S_PCI", "COMPILE_TEST" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "drm-next", "tree_url": "https://gitlab.freedesktop.org/drm/kernel.git", "commit_hash": "db2ddb87143519e20a95aa36c60b36107b736a58", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "PCI", "SND", "SND_PCI", "SND_HDA_INTEL", "SND_AD1889", "SND_ATIIXP", "SND_ATIIXP_MODEM", "SND_AW2", "SND_BT87X", "SND_LOLA", "SND_HDSPM", "SND_SOC", "SND_SOC_LOONGSON_I2S_PCI", "COMPILE_TEST" ], "series_id": "cf4c92da-e7cd-4738-a9b7-46dae2926016" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "pcim_ioremap_region" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE1PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+NW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1BDSSYjMzQ7LAogICAgJiMzNDtTTkQmIzM0OywKICAgICYjMzQ7U05EX1BDSSYjMzQ7LAogICAgJiMzNDtTTkRfSERBX0lOVEVMJiMzNDssCiAgICAmIzM0O1NORF9BRDE4ODkmIzM0OywKICAgICYjMzQ7U05EX0FUSUlYUCYjMzQ7LAogICAgJiMzNDtTTkRfQVRJSVhQX01PREVNJiMzNDssCiAgICAmIzM0O1NORF9BVzImIzM0OywKICAgICYjMzQ7U05EX0JUODdYJiMzNDssCiAgICAmIzM0O1NORF9MT0xBJiMzNDssCiAgICAmIzM0O1NORF9IRFNQTSYjMzQ7LAogICAgJiMzNDtTTkRfU09DJiMzNDssCiAgICAmIzM0O1NORF9TT0NfTE9PTkdTT05fSTJTX1BDSSYjMzQ7LAogICAgJiMzNDtDT01QSUxFX1RFU1QmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtwY2ltX2lvcmVtYXBfcmVnaW9uJiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UsCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIFBDSSBmdW5jdGlvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgd2hpY2ggd3JhcHMgYHBjaV9pb3JlbWFwX2JhcmAgYW5kIGBwY2lfcmVxdWVzdF9yZWdpb25gIHdpdGggZGV2cmVzLiBJdCByZXBsYWNlcyBgcGNpbV9pb21hcF9yZWdpb25gIGluIHNldmVyYWwgc291bmQgZHJpdmVycywgZm9yY2luZyB0aGVtIHRvIHVzZSBtZW1vcnkgbWFwcGluZyBpbnN0ZWFkIG9mIHBvdGVudGlhbGx5IHVzaW5nIElPIG1hcHBpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFBDSSBhbmQgZHJpdmVyIHByb2JpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTU8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmYTZmNGM2MDI0YTk5ZWE2NzIzMTc2ZmQyNTRjNTI5N2Y2OTU1ZWQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTU6MTU6MjggMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvZGV2cmVzLmMgYi9kcml2ZXJzL3BjaS9kZXZyZXMuY1xuaW5kZXggZjA3NWU3ODgxYzNhNi4uZmFhNjc4ZmY1YjU2ZiAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvcGNpL2RldnJlcy5jXG4mIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BjaS9kZXZyZXMuY1xuQEAgLTYzOSw2ICYjNDM7NjM5LDU1IEBAIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG4gfVxuIEVYUE9SVF9TWU1CT0wocGNpbV9pb21hcF9yZWdpb24pO1xuIFxuJiM0MzsvKipcbiYjNDM7ICogcGNpbV9pb3JlbWFwX3JlZ2lvbiAtIFJlcXVlc3QgYW5kIGlvcmVtYXAgYSBQQ0kgQkFSXG4mIzQzOyAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yXG4mIzQzOyAqIEBiYXI6IEluZGV4IG9mIGEgQkFSIHRvIG1hcFxuJiM0MzsgKiBAbmFtZTogTmFtZSBvZiB0aGUgZHJpdmVyIHJlcXVlc3RpbmcgdGhlIHJlc291cmNlXG4mIzQzOyAqXG4mIzQzOyAqIFJldHVybnM6IF9faW9tZW0gcG9pbnRlciBvbiBzdWNjZXNzLCBhbiBJT01FTV9FUlJfUFRSIG9uIGZhaWx1cmUuXG4mIzQzOyAqXG4mIzQzOyAqIE1hcHBpbmcgYW5kIHJlZ2lvbiB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIElmXG4mIzQzOyAqIGRlc2lyZWQsIHJlbGVhc2UgbWFudWFsbHkgb25seSB3aXRoIHBjaW1faW91bm1hcF9yZWdpb24oKS5cbiYjNDM7ICovXG4mIzQzO3ZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbiYjNDM7XHRcdFx0XHQgIGNvbnN0IGNoYXIgKm5hbWUpXG4mIzQzO3tcbiYjNDM7XHRpbnQgcmV0O1xuJiM0MztcdHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzICpyZXM7XG4mIzQzO1xuJiM0MztcdGlmICghcGNpX2Jhcl9pbmRleF9pc192YWxpZChiYXIpKVxuJiM0MztcdFx0cmV0dXJuIElPTUVNX0VSUl9QVFIoLUVJTlZBTCk7XG4mIzQzO1xuJiM0MztcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG4mIzQzO1x0aWYgKCFyZXMpXG4mIzQzO1x0XHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRU5PTUVNKTtcbiYjNDM7XG4mIzQzO1x0cmVzLVx1MDAzZXR5cGUgPSBQQ0lNX0FERFJfREVWUkVTX1RZUEVfUkVHSU9OX01BUFBJTkc7XG4mIzQzO1x0cmVzLVx1MDAzZWJhciA9IGJhcjtcbiYjNDM7XG4mIzQzO1x0cmV0ID0gcGNpX3JlcXVlc3RfcmVnaW9uKHBkZXYsIGJhciwgbmFtZSk7XG4mIzQzO1x0aWYgKHJldCAhPSAwKVxuJiM0MztcdFx0Z290byBlcnJfcmVnaW9uO1xuJiM0MztcbiYjNDM7XHRyZXMtXHUwMDNlYmFzZWFkZHIgPSBwY2lfaW9yZW1hcF9iYXIocGRldiwgYmFyKTtcbiYjNDM7XHRpZiAoIXJlcy1cdTAwM2ViYXNlYWRkcikge1xuJiM0MztcdFx0cmV0ID0gLUVJTlZBTDtcbiYjNDM7XHRcdGdvdG8gZXJyX2lvbWFwO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0ZGV2cmVzX2FkZChcdTAwMjZwZGV2LVx1MDAzZWRldiwgcmVzKTtcbiYjNDM7XHRyZXR1cm4gcmVzLVx1MDAzZWJhc2VhZGRyO1xuJiM0MztcbiYjNDM7ZXJyX2lvbWFwOlxuJiM0MztcdHBjaV9yZWxlYXNlX3JlZ2lvbihwZGV2LCBiYXIpO1xuJiM0MztlcnJfcmVnaW9uOlxuJiM0MztcdHBjaW1fYWRkcl9kZXZyZXNfZnJlZShyZXMpO1xuJiM0MztcbiYjNDM7XHRyZXR1cm4gSU9NRU1fRVJSX1BUUihyZXQpO1xuJiM0Mzt9XG4mIzQzO0VYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7XG4mIzQzO1xuIC8qKlxuICAqIHBjaW1faW91bm1hcF9yZWdpb24gLSBVbm1hcCBhbmQgcmVsZWFzZSBhIFBDSSBCQVJcbiAgKiBAcGRldjogUENJIGRldmljZSB0byBvcGVyYXRlIG9uXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2kuaCBiL2luY2x1ZGUvbGludXgvcGNpLmhcbmluZGV4IDY0YjMwOGI2ZTYxYzEuLmU3YTJlY2UxMzhlYTYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L3BjaS5oXG5AQCAtMjUwNiw2ICYjNDM7MjUwNiw4IEBAIGludCBwY2ltX3JlcXVlc3RfYWxsX3JlZ2lvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IGNoYXIgKm5hbWUpO1xuIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwgdW5zaWduZWQgbG9uZyBtYXhsZW4pO1xuIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG4gXHRcdFx0XHRjb25zdCBjaGFyICpuYW1lKTtcbiYjNDM7dm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxuJiM0MztcdFx0XHRcdCAgY29uc3QgY2hhciAqbmFtZSk7XG4gdm9pZCBwY2ltX2lvdW5tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyKTtcbiB2b2lkIHBjaW1faW91bm1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdm9pZCBfX2lvbWVtICphZGRyKTtcbiB2b2lkIF9faW9tZW0gKiBjb25zdCAqcGNpbV9pb21hcF90YWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG5kaWZmIC0tZ2l0IGEvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmMgYi9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuY1xuaW5kZXggMjhjNTVjNWEyZDJlZi4uNWRhMGFjMWVkNDA3MSAxMDA2NDRcbi0tLSBhL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuY1xuQEAgLTE5MjYsNyAmIzQzOzE5MjYsNyBAQCBzdGF0aWMgaW50IGF6eF9maXJzdF9pbml0KHN0cnVjdCBhenggKmNoaXApXG4gXHRpZiAoY2hpcC1cdTAwM2Vkcml2ZXJfdHlwZSA9PSBBWlhfRFJJVkVSX1pIQU9YSU5IRE1JKVxuIFx0XHRidXMtXHUwMDNlcG9sbGluZ19tb2RlID0gMTtcbiBcbi1cdGJ1cy1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtJQ0ggSEQgYXVkaW9cJiMzNDspO1xuJiM0MztcdGJ1cy1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0lDSCBIRCBhdWRpb1wmIzM0Oyk7XG4gXHRpZiAoSVNfRVJSKGJ1cy1cdTAwM2VyZW1hcF9hZGRyKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoYnVzLVx1MDAzZXJlbWFwX2FkZHIpO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hZDE4ODkuYyBiL3NvdW5kL3BjaS9hZDE4ODkuY1xuaW5kZXggZjRlYzQwNGMwZDE1YS4uYTI1NzBhMTQ4ZjYwNiAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hZDE4ODkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2FkMTg4OS5jXG5AQCAtODA0LDcgJiM0Mzs4MDQsNyBAQCBzbmRfYWQxODg5X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXG4gXHRjaGlwLVx1MDAzZWlycSA9IC0xO1xuIFxuIFx0LyogKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uICovXG4tXHRjaGlwLVx1MDAzZWlvYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgY2FyZC1cdTAwM2Vkcml2ZXIpO1xuJiM0MztcdGNoaXAtXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtXHUwMDNlZHJpdmVyKTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2Vpb2Jhc2UpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZWlvYmFzZSk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F0aWl4cC5jIGIvc291bmQvcGNpL2F0aWl4cC5jXG5pbmRleCBiNzM4Mjk1YjQxZTVkLi5iOWZjZDkxM2ZiYzZmIDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2F0aWl4cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYXRpaXhwLmNcbkBAIC0xNTMxLDcgJiM0MzsxNTMxLDcgQEAgc3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuIFx0Y2hpcC1cdTAwM2VjYXJkID0gY2FyZDtcbiBcdGNoaXAtXHUwMDNlcGNpID0gcGNpO1xuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbi1cdGNoaXAtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7QVRJIElYUCBBQzk3XCYjMzQ7KTtcbiYjNDM7XHRjaGlwLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7QVRJIElYUCBBQzk3XCYjMzQ7KTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2VyZW1hcF9hZGRyKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2VyZW1hcF9hZGRyKTtcbiBcdGNoaXAtXHUwMDNlYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYyBiL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xuaW5kZXggOGFhZWIxOTdjZTQ1OC4uZjY1NDgwNDgzOTk2NiAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jXG5AQCAtMTE2Myw3ICYjNDM7MTE2Myw3IEBAIHN0YXRpYyBpbnQgc25kX2F0aWl4cF9pbml0KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbiBcdGNoaXAtXHUwMDNlY2FyZCA9IGNhcmQ7XG4gXHRjaGlwLVx1MDAzZXBjaSA9IHBjaTtcbiBcdGNoaXAtXHUwMDNlaXJxID0gLTE7XG4tXHRjaGlwLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0FUSSBJWFAgTUM5N1wmIzM0Oyk7XG4mIzQzO1x0Y2hpcC1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0FUSSBJWFAgTUM5N1wmIzM0Oyk7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcikpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcik7XG4gXHRjaGlwLVx1MDAzZWFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuY1xuaW5kZXggYmIwMjk0NTc5M2YwYy4uYTc3M2U4YTU2YzBjNSAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcbkBAIC0xNjAsNyAmIzQzOzE2MCw3IEBAIHNuZF92b3J0ZXhfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbiBcdC8vICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvblxuIFx0Ly8gR2V0IE1NSU8gYXJlYVxuIFx0Ly9cbi1cdGNoaXAtXHUwMDNlbW1pbyA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpO1xuJiM0MztcdGNoaXAtXHUwMDNlbW1pbyA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBLQlVJTERfTU9ETkFNRSk7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlbW1pbykpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlbW1pbyk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jIGIvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jXG5pbmRleCA2MGE4NzMyMmVhZTQ5Li4yN2ZkNDVkNjQ3MDE5IDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmNcbkBAIC0yMjQsNyAmIzQzOzIyNCw3IEBAIHN0YXRpYyBpbnQgc25kX2F3Ml9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbiBcbiBcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xuLVx0Y2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7QXVkaW93ZXJrMlwmIzM0Oyk7XG4mIzQzO1x0Y2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtBdWRpb3dlcmsyXCYjMzQ7KTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlaW9iYXNlX3ZpcnQpO1xuIFx0Y2hpcC1cdTAwM2Vpb2Jhc2VfcGh5cyA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9idDg3eC5jIGIvc291bmQvcGNpL2J0ODd4LmNcbmluZGV4IDM4M2RlZjFmMmFmNzQuLjU1ZjZiNzliZDllYWMgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvYnQ4N3guY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2J0ODd4LmNcbkBAIC02OTAsNyAmIzQzOzY5MCw3IEBAIHN0YXRpYyBpbnQgc25kX2J0ODd4X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXHRjaGlwLVx1MDAzZWlycSA9IC0xO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VyZWdfbG9jayk7XG4gXG4tXHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0J0ODd4IGF1ZGlvXCYjMzQ7KTtcbiYjNDM7XHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7QnQ4N3ggYXVkaW9cJiMzNDspO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZW1taW8pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZW1taW8pO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczQyODEuYyBiL3NvdW5kL3BjaS9jczQyODEuY1xuaW5kZXggZjUxZjRiYjYzNzY2NC4uZjAwMGRjYTk0ZTRmZCAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9jczQyODEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2NzNDI4MS5jXG5AQCAtMTI5OCwxMiAmIzQzOzEyOTgsMTIgQEAgc3RhdGljIGludCBzbmRfY3M0MjgxX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXHR9XG4gXHRjaGlwLVx1MDAzZWR1YWxfY29kZWMgPSBkdWFsX2NvZGVjO1xuIFxuLVx0Y2hpcC1cdTAwM2ViYTAgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0NTNDI4MVwmIzM0Oyk7XG4mIzQzO1x0Y2hpcC1cdTAwM2ViYTAgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7Q1M0MjgxXCYjMzQ7KTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2ViYTApKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZWJhMCk7XG4gXHRjaGlwLVx1MDAzZWJhMF9hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XG4gXG4tXHRjaGlwLVx1MDAzZWJhMSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMSwgXCYjMzQ7Q1M0MjgxXCYjMzQ7KTtcbiYjNDM7XHRjaGlwLVx1MDAzZWJhMSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAxLCBcJiMzNDtDUzQyODFcJiMzNDspO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZWJhMSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlYmExKTtcbiBcdGNoaXAtXHUwMDNlYmExX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAxKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3M1NTMwLmMgYi9zb3VuZC9wY2kvY3M1NTMwLmNcbmluZGV4IDI5MmI2NWFhNzU4YTkuLjdjZjc0ZTc3OTcwY2QgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvY3M1NTMwLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9jczU1MzAuY1xuQEAgLTkxLDcgJiM0Mzs5MSw3IEBAIHN0YXRpYyBpbnQgc25kX2NzNTUzMF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFx0Y2hpcC1cdTAwM2VjYXJkID0gY2FyZDtcbiBcdGNoaXAtXHUwMDNlcGNpID0gcGNpO1xuIFxuLVx0bWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtDUzU1MzBcJiMzNDspO1xuJiM0MztcdG1lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtDUzU1MzBcJiMzNDspO1xuIFx0aWYgKElTX0VSUihtZW0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihtZW0pO1xuIFx0Y2hpcC1cdTAwM2VwY2lfYmFzZSA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuYyBiL3NvdW5kL3BjaS9sb2xhL2xvbGEuY1xuaW5kZXggMzRhM2JhMTdkZWI0Yi4uZWMyOTM4YzRiNTMyMyAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2xvbGEvbG9sYS5jXG5AQCAtNTc5LDE0ICYjNDM7NTc5LDE0IEBAIHN0YXRpYyBpbnQgbG9sYV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpLCBpbnQgZGV2KVxuIFx0XHRjaGlwLVx1MDAzZXNhbXBsZV9yYXRlX21pbiA9IDE2MDAwO1xuIFx0fVxuIFxuLVx0aW9tZW0gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpO1xuJiM0MztcdGlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpO1xuIFx0aWYgKElTX0VSUihpb21lbSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGlvbWVtKTtcbiBcbiBcdGNoaXAtXHUwMDNlYmFyWzBdLnJlbWFwX2FkZHIgPSBpb21lbTtcbiBcdGNoaXAtXHUwMDNlYmFyWzBdLmFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbiBcbi1cdGlvbWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTtcbiYjNDM7XHRpb21lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTtcbiBcdGlmIChJU19FUlIoaW9tZW0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihpb21lbSk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcbmluZGV4IGQ4YmJlZGJjOGZmNjguLjliMzc1OGNhMWQwMDQgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jXG4mIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jXG5AQCAtNjUxMSw3ICYjNDM7NjUxMSw3IEBAIHN0YXRpYyBpbnQgc25kX2hkc3BtX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXG4gXHRwY2lfc2V0X21hc3RlcihoZHNwbS1cdTAwM2VwY2kpO1xuIFxuLVx0aGRzcG0tXHUwMDNlaW9iYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtoZHNwbVwmIzM0Oyk7XG4mIzQzO1x0aGRzcG0tXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O2hkc3BtXCYjMzQ7KTtcbiBcdGlmIChJU19FUlIoaGRzcG0tXHUwMDNlaW9iYXNlKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoaGRzcG0tXHUwMDNlaW9iYXNlKTtcbiBcbmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jIGIvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuY1xuaW5kZXggZjViNTYwNDY1NzA2Zi4uMzJmYzBmNTQ0OTI4MiAxMDA2NDRcbi0tLSBhL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmNcbkBAIC00MSw3ICYjNDM7NDEsNyBAQCBzdGF0aWMgaW50IGxvb25nc29uX2kyc19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsXG4gXHRpMnMtXHUwMDNlZGV2ID0gZGV2O1xuIFx0cGNpX3NldF9kcnZkYXRhKHBkZXYsIGkycyk7XG4gXG4tXHRpMnMtXHUwMDNlcmVnX2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7XG4mIzQzO1x0aTJzLVx1MDAzZXJlZ19iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7XG4gXHRpZiAoSVNfRVJSKGkycy1cdTAwM2VyZWdfYmFzZSkpIHtcbiBcdFx0ZGV2X2VycihkZXYsIFwmIzM0O2lvbWFwX3JlZ2lvbiBmYWlsZWRcXG5cJiMzNDspO1xuIFx0XHRyZXR1cm4gUFRSX0VSUihpMnMtXHUwMDNlcmVnX2Jhc2UpO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE1PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjRtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7U05EJiMzNDssCiAgICAmIzM0O1NORF9QQ0kmIzM0OywKICAgICYjMzQ7U05EX0hEQV9JTlRFTCYjMzQ7LAogICAgJiMzNDtTTkRfQUQxODg5JiMzNDssCiAgICAmIzM0O1NORF9BVElJWFAmIzM0OywKICAgICYjMzQ7U05EX0FUSUlYUF9NT0RFTSYjMzQ7LAogICAgJiMzNDtTTkRfQVcyJiMzNDssCiAgICAmIzM0O1NORF9CVDg3WCYjMzQ7LAogICAgJiMzNDtTTkRfTE9MQSYjMzQ7LAogICAgJiMzNDtTTkRfSERTUE0mIzM0OywKICAgICYjMzQ7U05EX1NPQyYjMzQ7LAogICAgJiMzNDtTTkRfU09DX0xPT05HU09OX0kyU19QQ0kmIzM0OywKICAgICYjMzQ7Q09NUElMRV9URVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGNpbV9pb3JlbWFwX3JlZ2lvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCB3aGljaCB3cmFwcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZyZXMuIEl0IHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIHRoZW0gdG8gdXNlIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgdXNpbmcgSU8gbWFwcGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgUENJIGFuZCBkcml2ZXIgcHJvYmluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IGZhNmY0YzYwMjRhOTllYTY3MjMxNzZmZDI1NGM1Mjk3ZjY5NTVlZDAKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAxMiAxNToxNToyOCAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2RldnJlcy5jIGIvZHJpdmVycy9wY2kvZGV2cmVzLmMKaW5kZXggZjA3NWU3ODgxYzNhNi4uZmFhNjc4ZmY1YjU2ZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9wY2kvZGV2cmVzLmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9wY2kvZGV2cmVzLmMKQEAgLTYzOSw2ICYjNDM7NjM5LDU1IEBAIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsCiB9CiBFWFBPUlRfU1lNQk9MKHBjaW1faW9tYXBfcmVnaW9uKTsKIAomIzQzOy8qKgomIzQzOyAqIHBjaW1faW9yZW1hcF9yZWdpb24gLSBSZXF1ZXN0IGFuZCBpb3JlbWFwIGEgUENJIEJBUgomIzQzOyAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yCiYjNDM7ICogQGJhcjogSW5kZXggb2YgYSBCQVIgdG8gbWFwCiYjNDM7ICogQG5hbWU6IE5hbWUgb2YgdGhlIGRyaXZlciByZXF1ZXN0aW5nIHRoZSByZXNvdXJjZQomIzQzOyAqCiYjNDM7ICogUmV0dXJuczogX19pb21lbSBwb2ludGVyIG9uIHN1Y2Nlc3MsIGFuIElPTUVNX0VSUl9QVFIgb24gZmFpbHVyZS4KJiM0MzsgKgomIzQzOyAqIE1hcHBpbmcgYW5kIHJlZ2lvbiB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIElmCiYjNDM7ICogZGVzaXJlZCwgcmVsZWFzZSBtYW51YWxseSBvbmx5IHdpdGggcGNpbV9pb3VubWFwX3JlZ2lvbigpLgomIzQzOyAqLwomIzQzO3ZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwKJiM0MzsJCQkJICBjb25zdCBjaGFyICpuYW1lKQomIzQzO3sKJiM0MzsJaW50IHJldDsKJiM0MzsJc3RydWN0IHBjaW1fYWRkcl9kZXZyZXMgKnJlczsKJiM0MzsKJiM0MzsJaWYgKCFwY2lfYmFyX2luZGV4X2lzX3ZhbGlkKGJhcikpCiYjNDM7CQlyZXR1cm4gSU9NRU1fRVJSX1BUUigtRUlOVkFMKTsKJiM0MzsKJiM0MzsJcmVzID0gcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KTsKJiM0MzsJaWYgKCFyZXMpCiYjNDM7CQlyZXR1cm4gSU9NRU1fRVJSX1BUUigtRU5PTUVNKTsKJiM0MzsKJiM0MzsJcmVzLSZndDt0eXBlID0gUENJTV9BRERSX0RFVlJFU19UWVBFX1JFR0lPTl9NQVBQSU5HOwomIzQzOwlyZXMtJmd0O2JhciA9IGJhcjsKJiM0MzsKJiM0MzsJcmV0ID0gcGNpX3JlcXVlc3RfcmVnaW9uKHBkZXYsIGJhciwgbmFtZSk7CiYjNDM7CWlmIChyZXQgIT0gMCkKJiM0MzsJCWdvdG8gZXJyX3JlZ2lvbjsKJiM0MzsKJiM0MzsJcmVzLSZndDtiYXNlYWRkciA9IHBjaV9pb3JlbWFwX2JhcihwZGV2LCBiYXIpOwomIzQzOwlpZiAoIXJlcy0mZ3Q7YmFzZWFkZHIpIHsKJiM0MzsJCXJldCA9IC1FSU5WQUw7CiYjNDM7CQlnb3RvIGVycl9pb21hcDsKJiM0MzsJfQomIzQzOwomIzQzOwlkZXZyZXNfYWRkKCZhbXA7cGRldi0mZ3Q7ZGV2LCByZXMpOwomIzQzOwlyZXR1cm4gcmVzLSZndDtiYXNlYWRkcjsKJiM0MzsKJiM0MztlcnJfaW9tYXA6CiYjNDM7CXBjaV9yZWxlYXNlX3JlZ2lvbihwZGV2LCBiYXIpOwomIzQzO2Vycl9yZWdpb246CiYjNDM7CXBjaW1fYWRkcl9kZXZyZXNfZnJlZShyZXMpOwomIzQzOwomIzQzOwlyZXR1cm4gSU9NRU1fRVJSX1BUUihyZXQpOwomIzQzO30KJiM0MztFWFBPUlRfU1lNQk9MKHBjaW1faW9yZW1hcF9yZWdpb24pOwomIzQzOwogLyoqCiAgKiBwY2ltX2lvdW5tYXBfcmVnaW9uIC0gVW5tYXAgYW5kIHJlbGVhc2UgYSBQQ0kgQkFSCiAgKiBAcGRldjogUENJIGRldmljZSB0byBvcGVyYXRlIG9uCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS5oIGIvaW5jbHVkZS9saW51eC9wY2kuaAppbmRleCA2NGIzMDhiNmU2MWMxLi5lN2EyZWNlMTM4ZWE2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvcGNpLmgKQEAgLTI1MDYsNiAmIzQzOzI1MDYsOCBAQCBpbnQgcGNpbV9yZXF1ZXN0X2FsbF9yZWdpb25zKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBjaGFyICpuYW1lKTsKIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwgdW5zaWduZWQgbG9uZyBtYXhsZW4pOwogdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwKIAkJCQljb25zdCBjaGFyICpuYW1lKTsKJiM0Mzt2b2lkIF9faW9tZW0gKnBjaW1faW9yZW1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsCiYjNDM7CQkJCSAgY29uc3QgY2hhciAqbmFtZSk7CiB2b2lkIHBjaW1faW91bm1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIpOwogdm9pZCBwY2ltX2lvdW5tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIHZvaWQgX19pb21lbSAqYWRkcik7CiB2b2lkIF9faW9tZW0gKiBjb25zdCAqcGNpbV9pb21hcF90YWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7CmRpZmYgLS1naXQgYS9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuYyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jCmluZGV4IDI4YzU1YzVhMmQyZWYuLjVkYTBhYzFlZDQwNzEgMTAwNjQ0Ci0tLSBhL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jCkBAIC0xOTI2LDcgJiM0MzsxOTI2LDcgQEAgc3RhdGljIGludCBhenhfZmlyc3RfaW5pdChzdHJ1Y3QgYXp4ICpjaGlwKQogCWlmIChjaGlwLSZndDtkcml2ZXJfdHlwZSA9PSBBWlhfRFJJVkVSX1pIQU9YSU5IRE1JKQogCQlidXMtJmd0O3BvbGxpbmdfbW9kZSA9IDE7CiAKLQlidXMtJmd0O3JlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7SUNIIEhEIGF1ZGlvJiMzNDspOwomIzQzOwlidXMtJmd0O3JlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtJQ0ggSEQgYXVkaW8mIzM0Oyk7CiAJaWYgKElTX0VSUihidXMtJmd0O3JlbWFwX2FkZHIpKQogCQlyZXR1cm4gUFRSX0VSUihidXMtJmd0O3JlbWFwX2FkZHIpOwogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYWQxODg5LmMgYi9zb3VuZC9wY2kvYWQxODg5LmMKaW5kZXggZjRlYzQwNGMwZDE1YS4uYTI1NzBhMTQ4ZjYwNiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2FkMTg4OS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9hZDE4ODkuYwpAQCAtODA0LDcgJiM0Mzs4MDQsNyBAQCBzbmRfYWQxODg5X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpCiAJY2hpcC0mZ3Q7aXJxID0gLTE7CiAKIAkvKiAoMSkgUENJIHJlc291cmNlIGFsbG9jYXRpb24gKi8KLQljaGlwLSZndDtpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtJmd0O2RyaXZlcik7CiYjNDM7CWNoaXAtJmd0O2lvYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBjYXJkLSZndDtkcml2ZXIpOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7aW9iYXNlKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2hpcC0mZ3Q7aW9iYXNlKTsKIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F0aWl4cC5jIGIvc291bmQvcGNpL2F0aWl4cC5jCmluZGV4IGI3MzgyOTViNDFlNWQuLmI5ZmNkOTEzZmJjNmYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdGlpeHAuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYXRpaXhwLmMKQEAgLTE1MzEsNyAmIzQzOzE1MzEsNyBAQCBzdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpCiAJY2hpcC0mZ3Q7Y2FyZCA9IGNhcmQ7CiAJY2hpcC0mZ3Q7cGNpID0gcGNpOwogCWNoaXAtJmd0O2lycSA9IC0xOwotCWNoaXAtJmd0O3JlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QVRJIElYUCBBQzk3JiMzNDspOwomIzQzOwljaGlwLSZndDtyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QVRJIElYUCBBQzk3JiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7cmVtYXBfYWRkcikpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O3JlbWFwX2FkZHIpOwogCWNoaXAtJmd0O2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYyBiL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYwppbmRleCA4YWFlYjE5N2NlNDU4Li5mNjU0ODA0ODM5OTY2IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jCkBAIC0xMTYzLDcgJiM0MzsxMTYzLDcgQEAgc3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKQogCWNoaXAtJmd0O2NhcmQgPSBjYXJkOwogCWNoaXAtJmd0O3BjaSA9IHBjaTsKIAljaGlwLSZndDtpcnEgPSAtMTsKLQljaGlwLSZndDtyZW1hcF9hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0FUSSBJWFAgTUM5NyYjMzQ7KTsKJiM0MzsJY2hpcC0mZ3Q7cmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0FUSSBJWFAgTUM5NyYjMzQ7KTsKIAlpZiAoSVNfRVJSKGNoaXAtJmd0O3JlbWFwX2FkZHIpKQogCQlyZXR1cm4gUFRSX0VSUihjaGlwLSZndDtyZW1hcF9hZGRyKTsKIAljaGlwLSZndDthZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYwppbmRleCBiYjAyOTQ1NzkzZjBjLi5hNzczZThhNTZjMGM1IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmMKQEAgLTE2MCw3ICYjNDM7MTYwLDcgQEAgc25kX3ZvcnRleF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKQogCS8vICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbgogCS8vIEdldCBNTUlPIGFyZWEKIAkvLwotCWNoaXAtJmd0O21taW8gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIEtCVUlMRF9NT0ROQU1FKTsKJiM0MzsJY2hpcC0mZ3Q7bW1pbyA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBLQlVJTERfTU9ETkFNRSk7CiAJaWYgKElTX0VSUihjaGlwLSZndDttbWlvKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2hpcC0mZ3Q7bW1pbyk7CiAKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYyBiL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYwppbmRleCA2MGE4NzMyMmVhZTQ5Li4yN2ZkNDVkNjQ3MDE5IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jCkBAIC0yMjQsNyAmIzQzOzIyNCw3IEBAIHN0YXRpYyBpbnQgc25kX2F3Ml9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLAogCWNoaXAtJmd0O2lycSA9IC0xOwogCiAJLyogKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uICovCi0JY2hpcC0mZ3Q7aW9iYXNlX3ZpcnQgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QXVkaW93ZXJrMiYjMzQ7KTsKJiM0MzsJY2hpcC0mZ3Q7aW9iYXNlX3ZpcnQgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtBdWRpb3dlcmsyJiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7aW9iYXNlX3ZpcnQpKQogCQlyZXR1cm4gUFRSX0VSUihjaGlwLSZndDtpb2Jhc2VfdmlydCk7CiAJY2hpcC0mZ3Q7aW9iYXNlX3BoeXMgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9idDg3eC5jIGIvc291bmQvcGNpL2J0ODd4LmMKaW5kZXggMzgzZGVmMWYyYWY3NC4uNTVmNmI3OWJkOWVhYyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2J0ODd4LmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2J0ODd4LmMKQEAgLTY5MCw3ICYjNDM7NjkwLDcgQEAgc3RhdGljIGludCBzbmRfYnQ4N3hfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwKIAljaGlwLSZndDtpcnEgPSAtMTsKIAlzcGluX2xvY2tfaW5pdCgmYW1wO2NoaXAtJmd0O3JlZ19sb2NrKTsKIAotCWNoaXAtJmd0O21taW8gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QnQ4N3ggYXVkaW8mIzM0Oyk7CiYjNDM7CWNoaXAtJmd0O21taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtCdDg3eCBhdWRpbyYjMzQ7KTsKIAlpZiAoSVNfRVJSKGNoaXAtJmd0O21taW8pKQogCQlyZXR1cm4gUFRSX0VSUihjaGlwLSZndDttbWlvKTsKIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNDI4MS5jIGIvc291bmQvcGNpL2NzNDI4MS5jCmluZGV4IGY1MWY0YmI2Mzc2NjQuLmYwMDBkY2E5NGU0ZmQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jczQyODEuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvY3M0MjgxLmMKQEAgLTEyOTgsMTIgJiM0MzsxMjk4LDEyIEBAIHN0YXRpYyBpbnQgc25kX2NzNDI4MV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLAogCX0KIAljaGlwLSZndDtkdWFsX2NvZGVjID0gZHVhbF9jb2RlYzsKIAotCWNoaXAtJmd0O2JhMCA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtDUzQyODEmIzM0Oyk7CiYjNDM7CWNoaXAtJmd0O2JhMCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0NTNDI4MSYjMzQ7KTsKIAlpZiAoSVNfRVJSKGNoaXAtJmd0O2JhMCkpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O2JhMCk7CiAJY2hpcC0mZ3Q7YmEwX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKIAotCWNoaXAtJmd0O2JhMSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMSwgJiMzNDtDUzQyODEmIzM0Oyk7CiYjNDM7CWNoaXAtJmd0O2JhMSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAxLCAmIzM0O0NTNDI4MSYjMzQ7KTsKIAlpZiAoSVNfRVJSKGNoaXAtJmd0O2JhMSkpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O2JhMSk7CiAJY2hpcC0mZ3Q7YmExX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAxKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczU1MzAuYyBiL3NvdW5kL3BjaS9jczU1MzAuYwppbmRleCAyOTJiNjVhYTc1OGE5Li43Y2Y3NGU3Nzk3MGNkIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvY3M1NTMwLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2NzNTUzMC5jCkBAIC05MSw3ICYjNDM7OTEsNyBAQCBzdGF0aWMgaW50IHNuZF9jczU1MzBfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwKIAljaGlwLSZndDtjYXJkID0gY2FyZDsKIAljaGlwLSZndDtwY2kgPSBwY2k7CiAKLQltZW0gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7Q1M1NTMwJiMzNDspOwomIzQzOwltZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtDUzU1MzAmIzM0Oyk7CiAJaWYgKElTX0VSUihtZW0pKQogCQlyZXR1cm4gUFRSX0VSUihtZW0pOwogCWNoaXAtJmd0O3BjaV9iYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7CmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvbG9sYS9sb2xhLmMgYi9zb3VuZC9wY2kvbG9sYS9sb2xhLmMKaW5kZXggMzRhM2JhMTdkZWI0Yi4uZWMyOTM4YzRiNTMyMyAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2xvbGEvbG9sYS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9sb2xhL2xvbGEuYwpAQCAtNTc5LDE0ICYjNDM7NTc5LDE0IEBAIHN0YXRpYyBpbnQgbG9sYV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpLCBpbnQgZGV2KQogCQljaGlwLSZndDtzYW1wbGVfcmF0ZV9taW4gPSAxNjAwMDsKIAl9CiAKLQlpb21lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgRFJWTkFNRSk7CiYjNDM7CWlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpOwogCWlmIChJU19FUlIoaW9tZW0pKQogCQlyZXR1cm4gUFRSX0VSUihpb21lbSk7CiAKIAljaGlwLSZndDtiYXJbMF0ucmVtYXBfYWRkciA9IGlvbWVtOwogCWNoaXAtJmd0O2JhclswXS5hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7CiAKLQlpb21lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMiwgRFJWTkFNRSk7CiYjNDM7CWlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDIsIERSVk5BTUUpOwogCWlmIChJU19FUlIoaW9tZW0pKQogCQlyZXR1cm4gUFRSX0VSUihpb21lbSk7CiAKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jCmluZGV4IGQ4YmJlZGJjOGZmNjguLjliMzc1OGNhMWQwMDQgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYwpAQCAtNjUxMSw3ICYjNDM7NjUxMSw3IEBAIHN0YXRpYyBpbnQgc25kX2hkc3BtX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsCiAKIAlwY2lfc2V0X21hc3RlcihoZHNwbS0mZ3Q7cGNpKTsKIAotCWhkc3BtLSZndDtpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7aGRzcG0mIzM0Oyk7CiYjNDM7CWhkc3BtLSZndDtpb2Jhc2UgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtoZHNwbSYjMzQ7KTsKIAlpZiAoSVNfRVJSKGhkc3BtLSZndDtpb2Jhc2UpKQogCQlyZXR1cm4gUFRSX0VSUihoZHNwbS0mZ3Q7aW9iYXNlKTsKIApkaWZmIC0tZ2l0IGEvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYyBiL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmMKaW5kZXggZjViNTYwNDY1NzA2Zi4uMzJmYzBmNTQ0OTI4MiAxMDA2NDQKLS0tIGEvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jCkBAIC00MSw3ICYjNDM7NDEsNyBAQCBzdGF0aWMgaW50IGxvb25nc29uX2kyc19wY2lfcHJvYmUoc3RydWN0IHBjaV9kZXYgKnBkZXYsCiAJaTJzLSZndDtkZXYgPSBkZXY7CiAJcGNpX3NldF9kcnZkYXRhKHBkZXYsIGkycyk7CiAKLQlpMnMtJmd0O3JlZ19iYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgMCwgRFJJVkVSX05BTUUpOwomIzQzOwlpMnMtJmd0O3JlZ19iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7CiAJaWYgKElTX0VSUihpMnMtJmd0O3JlZ19iYXNlKSkgewogCQlkZXZfZXJyKGRldiwgJiMzNDtpb21hcF9yZWdpb24gZmFpbGVkXG4mIzM0Oyk7CiAJCXJldHVybiBQVFJfRVJSKGkycy0mZ3Q7cmVnX2Jhc2UpOwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTcyCgkJCQkJCQlvdXRwdXQ6IDIxCgkJCQkJCQl0aG91Z2h0czogNjM2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCoqCgpPa2F5LCBzbyB0aGVyZSYjMzk7cyBhIHBhdGNoIGludHJvZHVjaW5nIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBpbiBgZHJpdmVycy9wY2kvZGV2cmVzLmNgLCBhbmQgaXQmIzM5O3MgcmVwbGFjaW5nIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gYSBidW5jaCBvZiBzb3VuZCBkcml2ZXJzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZS4gTG9va2luZyBhdCB0aGUgY29kZSwgYHBjaW1faW9yZW1hcF9yZWdpb25gIHNlZW1zIHRvIGJlIGEgY29tcG9zaXRlIGZ1bmN0aW9uIOKAkyBpdCBjYWxscyBgcGNpbV9hZGRyX2RldnJlc19hbGxvY2AsIGBwY2lfcmVxdWVzdF9yZWdpb25gLCBgcGNpX2lvcmVtYXBfYmFyYCwgYW5kIHRoZW4gYGRldnJlc19hZGRgLiBUaGUgb2xkZXIgZnVuY3Rpb24sIGBwY2ltX2lvbWFwX3JlZ2lvbmAsIHVzZWQgYHBjaV9pb21hcGAsIHdoaWNoIGhhbmRsZWQgYm90aCBJTyBhbmQgbWVtb3J5IHJlZ2lvbnMuIFRoZSBrZXkgZGlmZmVyZW5jZSBoZXJlIGlzIHRoYXQgYHBjaW1faW9yZW1hcF9yZWdpb25gICpzcGVjaWZpY2FsbHkqIHVzZXMgYHBjaV9pb3JlbWFwX2JhcmAsIHNvIGl0JiMzOTtzIG9ubHkgZm9yIG1lbW9yeSByZWdpb25zLCBub3QgSU8uCgpUaGUgbW9kaWZpZWQgc291bmQgZHJpdmVycyBhcmUgYWxsIGxpc3RlZC4gSXQgbG9va3MgbGlrZSBxdWl0ZSBhIGZldyBkcml2ZXJzIGFyZSBhZmZlY3RlZCwgaW5jbHVkaW5nIHNvbWUgY29tbW9uIG9uZXMgbGlrZSBgaW50ZWwuY2AuCgpBIG5ldyBjb3JlIFBDSSBmdW5jdGlvbi4uLiB0aGF0IG1ha2VzIG1lIHRoaW5rIGFib3V0IGZ1enppbmcgaXQuIEdpdmVuIHRoZSBudW1iZXIgb2YgZHJpdmVycyB1c2luZyBpdCwgYW5kIHRoYXQgaXQmIzM5O3MgaW4gdGhlIFBDSSBjb3JlLCBpdCYjMzk7cyBkZWZpbml0ZWx5IHdvcnRoIGNvbnNpZGVyYXRpb24uIEJ1dCB3YWl0LCBpdCYjMzk7cyBlc3NlbnRpYWxseSBhIHdyYXBwZXIgYXJvdW5kIGBwY2lfaW9yZW1hcF9iYXJgIGFuZCBgcGNpX3JlcXVlc3RfcmVnaW9uYCB1c2luZyBkZXZyZXMuIFNvLCBpdCYjMzk7cyBhICpmdW5jdGlvbmFsKiBjaGFuZ2UgYmVjYXVzZSBpdCBlbmZvcmNlcyBtZW1vcnkgbWFwcGluZywgdW5saWtlIHRoZSBmbGV4aWJpbGl0eSBgcGNpX2lvbWFwYCBwcm92aWRlZC4gV2UgY2FuIHRyaWdnZXIgaXQgZHVyaW5nIGRyaXZlciBwcm9iZSAtIG1ha2VzIHNlbnNlLgoKU28gdGhlIG5leHQgcXVlc3Rpb24gaXMsIGNhbiB3ZSBmdXp6IGl0PyBJZiB3ZSBjYW4gdHJpZ2dlciB0aGUgcHJvYmUgb2Ygb25lIG9mIHRoZXNlIGRyaXZlcnMsIHdlIGNhbiBleGVyY2lzZSB0aGUgY29kZS4gSG1tLCBjYW4gd2UgdHJpZ2dlciBgc25kX2hkYV9pbnRlbGAgb3IgYW5vdGhlciBvbmU/IFllcywgd2UgY2FuIHVzZSBzeXprYWxsZXImIzM5O3MgcHNldWRvLXN5c2NhbGxzIGZvciBQQ0kuIFRoYXQmIzM5O3MgZ29vZCwgYHN5el9wY2lfc2V0dXBgIHNob3VsZCBhbGxvdyB1cyB0byBnZXQgYSBkcml2ZXIgdG8gcHJvYmUhCgpSaWdodCwgYHBjaW1faW9yZW1hcF9yZWdpb25gIGlzIGEgYnJhbmQgbmV3IEFQSS4gVGltZSB0byBjaGVjayBgZHJpdmVycy9wY2kvZGV2cmVzLmNgIGZvciBtb3JlIGluZm8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGNpbV9pb3JlbWFwX3JlZ2lvbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9kZXZyZXMuYz02NDA9RVhQT1JUX1NZTUJPTChwY2ltX2lvbWFwX3JlZ2lvbik7XG4tLVxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjQyLS8qKlxuZHJpdmVycy9wY2kvZGV2cmVzLmM6NjQzOiAqIHBjaW1faW9yZW1hcF9yZWdpb24gLSBSZXF1ZXN0IGFuZCBpb3JlbWFwIGEgUENJIEJBUlxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjQ0LSAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yXG4tLVxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjUyLSAqL1xuZHJpdmVycy9wY2kvZGV2cmVzLmM6NjUzOnZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTY1NC1cdFx0XHRcdCAgY29uc3QgY2hhciAqbmFtZSlcbi0tXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02ODgtfVxuZHJpdmVycy9wY2kvZGV2cmVzLmM6Njg5OkVYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7XG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02OTAtXG4tLVxuaW5jbHVkZS9saW51eC9wY2kuaD0yNTA3PXZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG5pbmNsdWRlL2xpbnV4L3BjaS5oLTI1MDgtXHRcdFx0XHRjb25zdCBjaGFyICpuYW1lKTtcbmluY2x1ZGUvbGludXgvcGNpLmg6MjUwOTp2b2lkIF9faW9tZW0gKnBjaW1faW9yZW1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG5pbmNsdWRlL2xpbnV4L3BjaS5oLTI1MTAtXHRcdFx0XHQgIGNvbnN0IGNoYXIgKm5hbWUpO1xuLS1cbnNvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jPTE4OTI9c3RhdGljIGludCBhenhfZmlyc3RfaW5pdChzdHJ1Y3QgYXp4ICpjaGlwKVxuLS1cbnNvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jLTE5MjgtXG5zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuYzoxOTI5Olx0YnVzLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCYjMzQ7SUNIIEhEIGF1ZGlvXCYjMzQ7KTtcbnNvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jLTE5MzAtXHRpZiAoSVNfRVJSKGJ1cy1cdTAwM2VyZW1hcF9hZGRyKSlcbi0tXG5zb3VuZC9wY2kvYWQxODg5LmM9Nzg3PXNuZF9hZDE4ODlfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbi0tXG5zb3VuZC9wY2kvYWQxODg5LmMtODA2LVx0LyogKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uICovXG5zb3VuZC9wY2kvYWQxODg5LmM6ODA3Olx0Y2hpcC1cdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgY2FyZC1cdTAwM2Vkcml2ZXIpO1xuc291bmQvcGNpL2FkMTg4OS5jLTgwOC1cdGlmIChJU19FUlIoY2hpcC1cdTAwM2Vpb2Jhc2UpKVxuLS1cbnNvdW5kL3BjaS9hdGlpeHAuYz0xNTIwPXN0YXRpYyBpbnQgc25kX2F0aWl4cF9pbml0KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbi0tXG5zb3VuZC9wY2kvYXRpaXhwLmMtMTUzMy1cdGNoaXAtXHUwMDNlaXJxID0gLTE7XG5zb3VuZC9wY2kvYXRpaXhwLmM6MTUzNDpcdGNoaXAtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtBVEkgSVhQIEFDOTdcJiMzNDspO1xuc291bmQvcGNpL2F0aWl4cC5jLTE1MzUtXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcikpXG4tLVxuc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jPTExNTI9c3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuLS1cbnNvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYy0xMTY1LVx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbnNvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYzoxMTY2Olx0Y2hpcC1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0FUSSBJWFAgTUM5N1wmIzM0Oyk7XG5zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMtMTE2Ny1cdGlmIChJU19FUlIoY2hpcC1cdTAwM2VyZW1hcF9hZGRyKSlcbi0tXG5zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jPTEzNz1zbmRfdm9ydGV4X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXG4tLVxuc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYy0xNjItXHQvL1xuc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYzoxNjM6XHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpO1xuc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYy0xNjQtXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlbW1pbykpXG4tLVxuc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jPTIwMz1zdGF0aWMgaW50IHNuZF9hdzJfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcbi0tXG5zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMtMjI2LVx0LyogKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uICovXG5zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmM6MjI3Olx0Y2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtBdWRpb3dlcmsyXCYjMzQ7KTtcbnNvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYy0yMjgtXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlaW9iYXNlX3ZpcnQpKVxuLS1cbnNvdW5kL3BjaS9idDg3eC5jPTY3OD1zdGF0aWMgaW50IHNuZF9idDg3eF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuLS1cbnNvdW5kL3BjaS9idDg3eC5jLTY5Mi1cbnNvdW5kL3BjaS9idDg3eC5jOjY5MzpcdGNoaXAtXHUwMDNlbW1pbyA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcJiMzNDtCdDg3eCBhdWRpb1wmIzM0Oyk7XG5zb3VuZC9wY2kvYnQ4N3guYy02OTQtXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlbW1pbykpXG4tLVxuc291bmQvcGNpL2NzNDI4MS5jPTEyODA9c3RhdGljIGludCBzbmRfY3M0MjgxX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4tLVxuc291bmQvcGNpL2NzNDI4MS5jLTEzMDAtXG5zb3VuZC9wY2kvY3M0MjgxLmM6MTMwMTpcdGNoaXAtXHUwMDNlYmEwID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0NTNDI4MVwmIzM0Oyk7XG5zb3VuZC9wY2kvY3M0MjgxLmMtMTMwMi1cdGlmIChJU19FUlIoY2hpcC1cdTAwM2ViYTApKVxuLS1cbnNvdW5kL3BjaS9jczQyODEuYy0xMzA1LVxuc291bmQvcGNpL2NzNDI4MS5jOjEzMDY6XHRjaGlwLVx1MDAzZWJhMSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAxLCBcJiMzNDtDUzQyODFcJiMzNDspO1xuc291bmQvcGNpL2NzNDI4MS5jLTEzMDctXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlYmExKSlcbi0tXG5zb3VuZC9wY2kvY3M1NTMwLmM9Nzc9c3RhdGljIGludCBzbmRfY3M1NTMwX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4tLVxuc291bmQvcGNpL2NzNTUzMC5jLTkzLVxuc291bmQvcGNpL2NzNTUzMC5jOjk0Olx0bWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O0NTNTUzMFwmIzM0Oyk7XG5zb3VuZC9wY2kvY3M1NTMwLmMtOTUtXHRpZiAoSVNfRVJSKG1lbSkpXG4tLVxuc291bmQvcGNpL2xvbGEvbG9sYS5jPTUzNz1zdGF0aWMgaW50IGxvbGFfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSwgaW50IGRldilcbi0tXG5zb3VuZC9wY2kvbG9sYS9sb2xhLmMtNTgxLVxuc291bmQvcGNpL2xvbGEvbG9sYS5jOjU4MjpcdGlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpO1xuc291bmQvcGNpL2xvbGEvbG9sYS5jLTU4My1cdGlmIChJU19FUlIoaW9tZW0pKVxuLS1cbnNvdW5kL3BjaS9sb2xhL2xvbGEuYy01ODgtXG5zb3VuZC9wY2kvbG9sYS9sb2xhLmM6NTg5Olx0aW9tZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMiwgRFJWTkFNRSk7XG5zb3VuZC9wY2kvbG9sYS9sb2xhLmMtNTkwLVx0aWYgKElTX0VSUihpb21lbSkpXG4tLVxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYz02NDUxPXN0YXRpYyBpbnQgc25kX2hkc3BtX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4tLVxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYy02NTEzLVxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYzo2NTE0Olx0aGRzcG0tXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwmIzM0O2hkc3BtXCYjMzQ7KTtcbnNvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMtNjUxNS1cdGlmIChJU19FUlIoaGRzcG0tXHUwMDNlaW9iYXNlKSlcbi0tXG5zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jPTIyPXN0YXRpYyBpbnQgbG9vbmdzb25faTJzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbi0tXG5zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jLTQzLVxuc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYzo0NDpcdGkycy1cdTAwM2VyZWdfYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGRldiwgMCwgRFJJVkVSX05BTUUpO1xuc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYy00NS1cdGlmIChJU19FUlIoaTJzLVx1MDAzZXJlZ19iYXNlKSkge1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDk2MzIKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiAzMTIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRnV6emluZyB0aGUgTmV3IFBDSSBpb3JlbWFwIEFQSSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBuZXcgZnVuY3Rpb24sIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCwgaW50cm9kdWNlZCBpbiBgZHJpdmVycy9wY2kvZGV2cmVzLmNgLiAgSXQmIzM5O3MgYmFzaWNhbGx5IGEgZGV2cmVzLW1hbmFnZWQgd3JhcHBlciBhcm91bmQgYHBjaV9pb3JlbWFwX2JhcmAgYW5kIGBwY2lfcmVxdWVzdF9yZWdpb25gLiAgSXQmIzM5O3MgaW1wb3J0YW50IGJlY2F1c2UgaXQmIzM5O3MgYSBjb3JlIFBDSSBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGJlaW5nIGNhbGxlZCBmcm9tIHNldmVyYWwgZHJpdmVyIHByb2JlIGZ1bmN0aW9ucy4gIERlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZyBwb3RlbnRpYWwg4oCTIGEgbmV3IGZ1bmN0aW9uIGxpa2UgdGhpcyBjb3VsZCBoYXJib3Igc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIHRoYXQgd2VyZW4mIzM5O3QgY2F1Z2h0IGluIGluaXRpYWwgdGVzdGluZy4KCk15IGZvY3VzIGlzIGdvaW5nIHRvIGJlIG9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBpdHNlbGYuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBtaW5pbWFsIGNvbmZpZ3VyYXRpb24gbmVlZGVkIHRvIGJ1aWxkIGFuZCB0ZXN0IHRoaXMuIExvb2tzIGxpa2UgYENPTkZJR19QQ0lgIGlzIHRoZSBjcml0aWNhbCByZXF1aXJlbWVudCB0byBnZXQgYGRyaXZlcnMvcGNpL2RldnJlcy5jYCBlbmFibGVkLgoKRm9yIHRoZSBkcml2ZXIgc2lkZSBvZiB0aGluZ3MsIEkmIzM5O2xsIG5lZWQgc29tZSBleGFtcGxlcyB0aGF0IHVzZSB0aGlzIGZ1bmN0aW9uLiBTb3VuZCBkcml2ZXJzIHNlZW0gbGlrZSBhIGdvb2QgcGxhY2UgdG8gc3RhcnQuIEkmIzM5O20gZ29pbmcgdG8gZW5hYmxlIGEgZmV3IG9mIHRob3NlLiBTbyBmYXIgSSYjMzk7bGwgY2hlY2sgb24gYENPTkZJR19TTkRfSERBX0lOVEVMYCwgYENPTkZJR19TTkRfQUQxODg5YCwgYENPTkZJR19TTkRfQVRJSVhQYCwgYENPTkZJR19TTkRfQVRJSVhQX01PREVNYCwgYENPTkZJR19TTkRfQVU4ODEwYCwgYENPTkZJR19TTkRfQVU4ODIwYCwgYENPTkZJR19TTkRfQVU4ODMwYCwgYENPTkZJR19TTkRfQVcyYCwgYENPTkZJR19TTkRfQlQ4N1hgLCBgQ09ORklHX1NORF9DUzQyODFgLCBgQ09ORklHX1NORF9DUzU1MzBgLCBgQ09ORklHX1NORF9MT0xBYCwgYENPTkZJR19TTkRfSERTUE1gLCBgQ09ORklHX1NORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIEtjb25maWcgZmlsZXMgZm9yIHRoZXNlIGRyaXZlcnMgdG8gdmVyaWZ5IGRlcGVuZGVuY2llcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX0hEQV9JTlRFTCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9oZGEvY29kZWNzL2hkbWkvS2NvbmZpZz0zMz1jb25maWcgU05EX0hEQV9DT0RFQ19IRE1JX0lOVEVMXG4tLVxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWctNDAtXG5zb3VuZC9oZGEvY29kZWNzL2hkbWkvS2NvbmZpZzo0MTpjb25maWcgU05EX0hEQV9JTlRFTF9IRE1JX1NJTEVOVF9TVFJFQU1cbnNvdW5kL2hkYS9jb2RlY3MvaGRtaS9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtFbmFibGUgU2lsZW50IFN0cmVhbSBhbHdheXMgZm9yIEhETUlcJiMzNDtcbi0tXG5zb3VuZC9oZGEvY29udHJvbGxlcnMvS2NvbmZpZy0xLSMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seVxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWc6Mjpjb25maWcgU05EX0hEQV9JTlRFTFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMy1cdHRyaXN0YXRlIFwmIzM0O0hEIEF1ZGlvIFBDSVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE2PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfQUQxODg5JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTExPWlmIFNORF9QQ0lcbnNvdW5kL3BjaS9LY29uZmlnLTEyLVxuc291bmQvcGNpL0tjb25maWc6MTM6Y29uZmlnIFNORF9BRDE4ODlcbnNvdW5kL3BjaS9LY29uZmlnLTE0LVx0dHJpc3RhdGUgXCYjMzQ7QW5hbG9nIERldmljZXMgQUQxODg5XCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9BVElJWFAmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWc9NjU9Y29uZmlnIFNORF9BU0lIUElcbi0tXG5zb3VuZC9wY2kvS2NvbmZpZy03Ni1cbnNvdW5kL3BjaS9LY29uZmlnOjc3OmNvbmZpZyBTTkRfQVRJSVhQXG5zb3VuZC9wY2kvS2NvbmZpZy03OC1cdHRyaXN0YXRlIFwmIzM0O0FUSSBJWFAgQUM5NyBDb250cm9sbGVyXCYjMzQ7XG4tLVxuc291bmQvcGNpL0tjb25maWctODctXG5zb3VuZC9wY2kvS2NvbmZpZzo4ODpjb25maWcgU05EX0FUSUlYUF9NT0RFTVxuc291bmQvcGNpL0tjb25maWctODktXHR0cmlzdGF0ZSBcJiMzNDtBVEkgSVhQIE1vZGVtXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9BVTg4JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTg4PWNvbmZpZyBTTkRfQVRJSVhQX01PREVNXG4tLVxuc291bmQvcGNpL0tjb25maWctOTctXG5zb3VuZC9wY2kvS2NvbmZpZzo5ODpjb25maWcgU05EX0FVODgxMFxuc291bmQvcGNpL0tjb25maWctOTktXHR0cmlzdGF0ZSBcJiMzNDtBdXJlYWwgQWR2YW50YWdlXCYjMzQ7XG4tLVxuc291bmQvcGNpL0tjb25maWctMTEyLVxuc291bmQvcGNpL0tjb25maWc6MTEzOmNvbmZpZyBTTkRfQVU4ODIwXG5zb3VuZC9wY2kvS2NvbmZpZy0xMTQtXHR0cmlzdGF0ZSBcJiMzNDtBdXJlYWwgVm9ydGV4XCYjMzQ7XG4tLVxuc291bmQvcGNpL0tjb25maWctMTI2LVxuc291bmQvcGNpL0tjb25maWc6MTI3OmNvbmZpZyBTTkRfQVU4ODMwXG5zb3VuZC9wY2kvS2NvbmZpZy0xMjgtXHR0cmlzdGF0ZSBcJiMzNDtBdXJlYWwgVm9ydGV4IDJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTEwODUKCQkJCQkJCW91dHB1dDogODQKCQkJCQkJCXRob3VnaHRzOiA1NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgbGV0JiMzOTtzIGRpdmUgaW50byB0aGlzIGF1ZGlvIGxhbmRzY2FwZS4gTXkgaW5pdGlhbCB0aG91Z2h0IHByb2Nlc3MgaW52b2x2ZXMgYSBxdWljayBtZW50YWwgc2NhbiBvZiB0aG9zZSBmYW1pbGlhciBzb3VuZCBkcml2ZXJzOiBgU05EX0FXMmAsIGBTTkRfQlQ4N1hgLCBgU05EX0NTNDI4MWAsIGBTTkRfQ1M1NTMwYCwgYFNORF9MT0xBYCwgYW5kIGBTTkRfSERTUE1gLiAgSSYjMzk7bSBpbW1lZGlhdGVseSBjYXRhbG9naW5nIHRoZW0gaW4gbXkgbWluZCwgcHJvYmFibHkgY3Jvc3MtcmVmZXJlbmNpbmcgdGhlbSBhZ2FpbnN0IGtub3duIGFyY2hpdGVjdHVyZXMgb3IgcGFzdCBleHBlcmllbmNlcyB3aXRoIHNpbWlsYXIgaGFyZHdhcmUuICBFc3NlbnRpYWxseSwgSSYjMzk7bSB0cnlpbmcgdG8gbWVudGFsbHkgbWFwIHRoZXNlIHRvIG15IGludGVybmFsIGRhdGFiYXNlIG9mIGF1ZGlvIGRldmljZXMgYW5kIHRoZWlyIHR5cGljYWwgYmVoYXZpb3JzLiBBcmUgdGhlcmUgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3M/IEFueSBzdGFuZG91dCBwZXJmb3JtZXJzPyAgSSYjMzk7bSBhbHJlYWR5IGZvcm11bGF0aW5nIHNvbWUgaW5pdGlhbCBhc3N1bXB0aW9ucyBhYm91dCB0aGVpciBpbnRlbmRlZCB1c2UgYmFzZWQgb24gdGhlaXIgbmFtZXMuIExldCYjMzk7cyBzZWUgd2hhdCBuZWVkcyBhIGNsb3NlciBsb29rLCBzaGFsbCB3ZT8KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9BVzImIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWc9MTI3PWNvbmZpZyBTTkRfQVU4ODMwXG4tLVxuc291bmQvcGNpL0tjb25maWctMTQxLVxuc291bmQvcGNpL0tjb25maWc6MTQyOmNvbmZpZyBTTkRfQVcyXG5zb3VuZC9wY2kvS2NvbmZpZy0xNDMtXHR0cmlzdGF0ZSBcJiMzNDtFbWFnaWMgQXVkaW93ZXJrIDJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9CVDg3WCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9wY2kvS2NvbmZpZz0xNTY9Y29uZmlnIFNORF9BWlQzMzI4XG4tLVxuc291bmQvcGNpL0tjb25maWctMTc2LVxuc291bmQvcGNpL0tjb25maWc6MTc3OmNvbmZpZyBTTkRfQlQ4N1hcbnNvdW5kL3BjaS9LY29uZmlnLTE3OC1cdHRyaXN0YXRlIFwmIzM0O0J0ODd4IEF1ZGlvIENhcHR1cmVcJiMzNDtcbi0tXG5zb3VuZC9wY2kvS2NvbmZpZy0xODctXG5zb3VuZC9wY2kvS2NvbmZpZzoxODg6Y29uZmlnIFNORF9CVDg3WF9PVkVSQ0xPQ0tcbnNvdW5kL3BjaS9LY29uZmlnLTE4OS1cdGJvb2wgXCYjMzQ7QnQ4N3ggQXVkaW8gb3ZlcmNsb2NraW5nXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfQ1M0MjgxJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTIyOD1jb25maWcgU05EX09YWUdFTlxuLS1cbnNvdW5kL3BjaS9LY29uZmlnLTI1My1cbnNvdW5kL3BjaS9LY29uZmlnOjI1NDpjb25maWcgU05EX0NTNDI4MVxuc291bmQvcGNpL0tjb25maWctMjU1LVx0dHJpc3RhdGUgXCYjMzQ7Q2lycnVzIExvZ2ljIChTb3VuZCBGdXNpb24pIENTNDI4MVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX0NTNTUzMCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9wY2kvS2NvbmZpZz0yNzk9Y29uZmlnIFNORF9DUzQ2WFhfTkVXX0RTUFxuLS1cbnNvdW5kL3BjaS9LY29uZmlnLTI4Ny1cbnNvdW5kL3BjaS9LY29uZmlnOjI4ODpjb25maWcgU05EX0NTNTUzMFxuc291bmQvcGNpL0tjb25maWctMjg5LVx0dHJpc3RhdGUgXCYjMzQ7Q1M1NTMwIEF1ZGlvXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExODMyCgkJCQkJCQlvdXRwdXQ6IDY3CgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOgoKKipRdWljayBBdWRpbyBEcml2ZXIgQ2hlY2sqKgoKQWxyaWdodCwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIExldCBtZSBydW4gdGhyb3VnaCBhIHF1aWNrIG1lbnRhbCBjaGVja2xpc3Qgb24gdGhlc2UgYXVkaW8gZHJpdmVyczogYFNORF9MT0xBYCwgYFNORF9IRFNQTWAsIGFuZCBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYC4gSSBrbm93IHRoZXNlIGFyZSBkaWZmZXJlbnQsIHNvIEkmIzM5O20gbGlrZWx5IGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLCBkZXBlbmRlbmNpZXMsIG9yIG92ZXJsYXAsIGFuZCBtYWtpbmcgc3VyZSB0aGF0IEkmIzM5O20gdXAgdG8gZGF0ZSBvbiB0aGVzZSBkcml2ZXJzIHRvIGlkZW50aWZ5IGlmIHRoZXJlIGFyZSBhbnkgbmV3IHVwZGF0ZXMgYW5kIGVuc3VyZSB0aGV5JiMzOTtyZSBhcHByb3ByaWF0ZWx5IHNldC4gSSYjMzk7bGwgbmVlZCB0byByZW1lbWJlciB0byBkb2N1bWVudCBteSBmaW5kaW5ncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9MT0xBJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTY5OD1jb25maWcgU05EX0tPUkcxMjEyXG4tLVxuc291bmQvcGNpL0tjb25maWctNzA2LVxuc291bmQvcGNpL0tjb25maWc6NzA3OmNvbmZpZyBTTkRfTE9MQVxuc291bmQvcGNpL0tjb25maWctNzA4LVx0dHJpc3RhdGUgXCYjMzQ7RGlnaWdyYW0gTG9sYVwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX0hEU1BNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTYyMT1jb21tZW50IFwmIzM0O0RvbiYjMzk7dCBmb3JnZXQgdG8gYWRkIGJ1aWx0LWluIGZpcm13YXJlcyBmb3IgSERTUCBkcml2ZXJcJiMzNDtcbi0tXG5zb3VuZC9wY2kvS2NvbmZpZy02MjMtXG5zb3VuZC9wY2kvS2NvbmZpZzo2MjQ6Y29uZmlnIFNORF9IRFNQTVxuc291bmQvcGNpL0tjb25maWctNjI1LVx0dHJpc3RhdGUgXCYjMzQ7Uk1FIEhhbW1lcmZhbGwgRFNQIE1BREkvUmF5REFUL0FJT1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnPTQ9Y29uZmlnIFNORF9TT0NfTE9PTkdTT05fQ0FSRFxuLS1cbnNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnLTE1LVxuc291bmQvc29jL2xvb25nc29uL0tjb25maWc6MTY6Y29uZmlnIFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSVxuc291bmQvc29jL2xvb25nc29uL0tjb25maWctMTctXHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBJMlMtUENJIERldmljZSBEcml2ZXJcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTIzODkKCQkJCQkJCW91dHB1dDogMTgKCQkJCQkJCXRob3VnaHRzOiAxMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHBjaW1faW9yZW1hcF9yZWdpb25gIENoYW5nZSBhbmQgRnV6emluZyBTdHJhdGVneSoqCgpPa2F5LCBzbyB0aGlzIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBmdW5jdGlvbiBpcyB0aGUgbmV3IGhvdG5lc3MsIHJlcGxhY2luZyBgcGNpbV9pb21hcF9yZWdpb25gIGluIGEgYnVuY2ggb2Ygc291bmQgZHJpdmVycy4gVGhlIGtleSB0aGluZyB0aGF0IGp1bXBzIG91dCBpcyB0aGF0IGl0IG1hbmRhdGVzIHRoZSB1c2Ugb2YgYHBjaV9pb3JlbWFwX2JhcmAgaW5zdGVhZCBvZiBgcGNpX2lvbWFwYC4gVGhpcyBpcyBhICpmdW5jdGlvbmFsKiBzaGlmdCwgbGltaXRpbmcgdXMgdG8gTUVNIEJBUnMsIG5vdCBJTyBCQVJzLiBUaGF0IGltbWVkaWF0ZWx5IHRyaWdnZXJzIGEgdGhvdWdodDogVGhpcyBpcyByaXBlIGZvciBmdXp6aW5nLgoKTXkgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHRoYXQgdGhpcyBjaGFuZ2UgbmVjZXNzaXRhdGVzIGEgdGhvcm91Z2ggZnV6emluZyBjYW1wYWlnbiBmb3IgdGhlIGZ1bmN0aW9uIGl0c2VsZi4gTm93LCBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIHVzZS4gSSBrbm93IEkmIzM5O2xsIG5lZWQgYFBDSWAsIG9idmlvdXNseSwgYW5kIHRoZW4gYFNORF9QQ0lgIHRvIHRhcmdldCBzb3VuZCBkZXZpY2VzLCBidXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIGBTTkRfUENJYCBpcyAqc3RyaWN0bHkqIHJlcXVpcmVkLCBvciBpZiB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBqdXN0IHRoZSBkcml2ZXIgY29uZmlncy4gVGhhdCYjMzk7cyBhIGdvb2QgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU05EX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9wY2kvS2NvbmZpZy0zLVxuc291bmQvcGNpL0tjb25maWc6NDptZW51Y29uZmlnIFNORF9QQ0lcbnNvdW5kL3BjaS9LY29uZmlnLTUtXHRib29sIFwmIzM0O1BDSSBzb3VuZCBkZXZpY2VzXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODE3CgkJCQkJCQlvdXRwdXQ6IDI1CgkJCQkJCQl0aG91Z2h0czogMzEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCYjMzk7cyBpbnRlcm5hbCBtb25vbG9ndWU6CgoqKkNoZWNraW5nIFNvdW5kIERyaXZlciBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgY29uZmlybWVkLiBXZSBkZWZpbml0ZWx5IG5lZWQgYFNORF9QQ0lgLiBUaGF0JiMzOTtzIGEgZ2l2ZW4uIE5vdywgbGV0JiMzOTtzIHBpdm90IGFuZCB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYFNORF9IREFfSU5URUxgLiBJIG5lZWQgdG8gZW5zdXJlIGl0JiMzOTtzIG5vdCBpbXBsaWNpdGx5IGRlcGVuZGluZyBvbiBhbnkgb3RoZXIgbW9kdWxlcyBvciBmdW5jdGlvbmFsaXRpZXMgdGhhdCBtaWdodCBub3QgYmUgaW1tZWRpYXRlbHkgb2J2aW91cy4gR290dGEgbWFrZSBzdXJlIHdlIGNvdmVyIGFsbCBvdXIgYmFzZXMgYW5kIHRoYXQgdGhlIHN5c3RlbSBpcyBzZXQgdXAgcHJvcGVybHkgdG8gdXRpbGl6ZSB0aGUgYEhEQWAgSW50ZWwgYXVkaW8uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2RlcGVuZHMgb24uKlNORF9IREFfSU5URUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvaGRhL2NvbW1vbi9LY29uZmlnPTY3PWNvbmZpZyBTTkRfSERBX0NUTF9ERVZfSURcbnNvdW5kL2hkYS9jb21tb24vS2NvbmZpZy02OC1cdGJvb2wgXCYjMzQ7VXNlIHRoZSBkZXZpY2UgaWRlbnRpZmllciBmaWVsZCBmb3IgY29udHJvbHNcJiMzNDtcbnNvdW5kL2hkYS9jb21tb24vS2NvbmZpZzo2OTpcdGRlcGVuZHMgb24gU05EX0hEQV9JTlRFTFxuc291bmQvaGRhL2NvbW1vbi9LY29uZmlnLTcwLVx0aGVscFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA5NAoJCQkJCQkJb3V0cHV0OiAyMgoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgRGVwZW5kZW5jaWVzIG9mIFNORF9IREFfSU5URUwqKgoKQWxyaWdodCwgYmVmb3JlIEkgcHJvY2VlZCBhbnkgZnVydGhlciB3aXRoIHRoaXMsIEkgbmVlZCB0byB0YWtlIGEgc3RlcCBiYWNrIGFuZCBtYWtlIGFic29sdXRlbHkgc3VyZSBJIHVuZGVyc3RhbmQgdGhlIGxhbmRzY2FwZS4gVGhpcyB3aG9sZSB0aGluZyBoaW5nZXMgb24gYXVkaW8sIGFuZCBgU05EX0hEQV9JTlRFTGAgaXMgYSBjb3JlIGNvbXBvbmVudCB0aGVyZSwgc28gbGV0JiMzOTtzIHN0YXJ0IHdpdGggYSBkZXBlbmRlbmN5IGFuYWx5c2lzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMsIGRyaXZlcnMsIG9yIGV2ZW4gc3lzdGVtIGNvbmZpZ3VyYXRpb25zIGBTTkRfSERBX0lOVEVMYCByZWxpZXMgb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBXaXRob3V0IHRoYXQga25vd2xlZGdlLCBJIGNvdWxkIGJlIGNoYXNpbmcgbXkgdGFpbC4gSSBrbm93IG15IGZpZWxkLiBUaGlzIGlzIGltcG9ydGFudC4gQSBwcm9wZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgZ3VpZGUgdGhlIG5leHQgY291cnNlIG9mIGFjdGlvbi4gSSB3aWxsIG5lZWQgdG8gYmUgbWV0aWN1bG91cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9IREFfSU5URUwmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc9MzM9Y29uZmlnIFNORF9IREFfQ09ERUNfSERNSV9JTlRFTFxuLS1cbnNvdW5kL2hkYS9jb2RlY3MvaGRtaS9LY29uZmlnLTQwLVxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc6NDE6Y29uZmlnIFNORF9IREFfSU5URUxfSERNSV9TSUxFTlRfU1RSRUFNXG5zb3VuZC9oZGEvY29kZWNzL2hkbWkvS2NvbmZpZy00Mi1cdGJvb2wgXCYjMzQ7RW5hYmxlIFNpbGVudCBTdHJlYW0gYWx3YXlzIGZvciBIRE1JXCYjMzQ7XG4tLVxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbnNvdW5kL2hkYS9jb250cm9sbGVycy9LY29uZmlnOjI6Y29uZmlnIFNORF9IREFfSU5URUxcbnNvdW5kL2hkYS9jb250cm9sbGVycy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtIRCBBdWRpbyBQQ0lcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTM0ODgKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAzMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqRGVjb2RpbmcgdGhlIGBTTkRfSERBX0lOVEVMYCBEZXBlbmRlbmNpZXMqKgoKUmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhlIGd1dHMgb2YgdGhlIHNvdW5kIHN1YnN5c3RlbS4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIGRlcGVuZGVuY2llcyBvZiBgU05EX0hEQV9JTlRFTGAuIEEgcXVpY2sgY2hlY2sgb2YgYHNvdW5kL2hkYS9jb250cm9sbGVycy9LY29uZmlnYCBpcyB0aGUgb2J2aW91cyBzdGFydGluZyBwb2ludC4gSSBhbHJlYWR5IGtub3cgdGhlIHVzdWFsIHN1c3BlY3RzLCBvZiBjb3Vyc2UsIGJ1dCBpdCYjMzk7cyBhbHdheXMgd29ydGggYSBxdWljayBjb25maXJtYXRpb24gYW5kIHRvIG1ha2Ugc3VyZSB0aGVyZSYjMzk7cyBub3RoaW5nIEkmIzM5O3ZlIGZvcmdvdHRlbiBvciBhbnkgc3VidGxlIGNoYW5nZXMgZnJvbSB0aGUgbGFzdCB0aW1lIEkgbG9va2VkLiBUaGlzIEtjb25maWcgZmlsZSBpcyB0aGUgbGluY2hwaW4gZm9yIHVuZGVyc3RhbmRpbmcgdGhlIGJ1aWxkIG9wdGlvbnMgYW5kIGNvbnN0cmFpbnRzLiBJJiMzOTttIGVzcGVjaWFsbHkgaW50ZXJlc3RlZCBpbiB0aGluZ3MgdGhhdCBtaWdodCBpbmRpcmVjdGx5IGFmZmVjdCBvciBpbnRlcmFjdCB3aXRoIGBTTkRfSERBX0lOVEVMYCAtIGRlcGVuZGVuY2llcyBvbiBwYXJ0aWN1bGFyIGhhcmR3YXJlIGZlYXR1cmVzLCBvciBzcGVjaWZpYyBjaGlwc2V0IGZhbWlsaWVzLCBvciBldmVuIG90aGVyIGF1ZGlvIGRyaXZlcnMgdGhhdCBtaWdodCBoYXZlIGNvbmZsaWN0cy4gR290dGEgbWFrZSBzdXJlIEkgaGF2ZSB0aGUgZnVsbCBwaWN0dXJlLiBNeSBmb2N1cyBpcyBvbiBiZWluZyBwcmVjaXNlIGFuZCBub3QgbWlzc2luZyBhbnkgZGV0YWlscy4gRnJvbSB0aGVyZSwgSSYjMzk7bGwgYmUgYWJsZSB0byBkZWNpZGUgd2hhdCwgaWYgYW55LCBmb2xsb3cgdXAgdGVzdHMgbmVlZCB0byBiZSBydW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcbiAgIDI6XHRjb25maWcgU05EX0hEQV9JTlRFTFxuICAgMzpcdFx0dHJpc3RhdGUgXCYjMzQ7SEQgQXVkaW8gUENJXCYjMzQ7XG4gICA0Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgNTpcdFx0c2VsZWN0IFNORF9IREFcbiAgIDY6XHRcdHNlbGVjdCBTTkRfSU5URUxfRFNQX0NPTkZJR1xuICAgNzpcdFx0aGVscFxuICAgODpcdFx0ICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgSW50ZWwgXCYjMzQ7SGlnaCBEZWZpbml0aW9uXG4gICA5Olx0XHQgIEF1ZGlvXCYjMzQ7IChBemFsaWEpIGFuZCBpdHMgY29tcGF0aWJsZSBkZXZpY2VzLlxuICAxMDpcdFxuICAxMTpcdFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBIRC1hdWRpbyBjb250cm9sbGVyLiAgRG9uJiMzOTt0IGZvcmdldFxuICAxMjpcdFx0ICB0byBjaG9vc2UgdGhlIGFwcHJvcHJpYXRlIEhELWF1ZGlvIGNvZGVjIG9wdGlvbnMuXG4gIDEzOlx0XG4gIDE0Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgMTU6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWhkYS1pbnRlbC5cbiAgMTY6XHRcbiAgMTc6XHRjb25maWcgU05EX0hEQV9URUdSQVxuICAxODpcdFx0dHJpc3RhdGUgXCYjMzQ7TlZJRElBIFRlZ3JhIEhEIEF1ZGlvXCYjMzQ7XG4gIDE5Olx0XHRkZXBlbmRzIG9uIEFSQ0hfVEVHUkFcbiAgMjA6XHRcdHNlbGVjdCBTTkRfSERBXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE0MDc1CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHByZXNlbnRlZCBhcyBhIHBlcnNvbmFsIHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOgoKKipBc3Nlc3NpbmcgQXVkaW8gRHJpdmVyIERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQgbWUgcXVpY2tseSB0aGluayB0aGlzIHRocm91Z2guIE15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGUgYFNORF9IREFfSU5URUxgIGRyaXZlciBoYXMgYSBkaXJlY3QgZGVwZW5kZW5jeSBvbiB0aGUgYFBDSWAgc3Vic3lzdGVtLiBNYWtlcyBzZW5zZSwgZ2l2ZW4gdGhhdCB0aGUgSW50ZWwgSGlnaCBEZWZpbml0aW9uIEF1ZGlvIGNvbnRyb2xsZXIgaXMgdHlwaWNhbGx5IGNvbm5lY3RlZCB2aWEgUENJLiBOb3csIG15IG5leHQgaW1tZWRpYXRlIHRob3VnaHQsIGJlY2F1c2UgSSBhbHdheXMgbGlrZSB0byBtYWtlIHN1cmUgSSBjb3ZlciBhbGwgYmFzZXMsIGlzIHRvIGNvbnNpZGVyIGBTTkRfQUQxODg5YC4gSSBuZWVkIHRvIGFzayBteXNlbGYsIGRvZXMgKml0KiBkZXBlbmQgb24gYFBDSWAgYXMgd2VsbD8gSSBuZWVkIHRvIGtub3csIGlzIHRoaXMgYWxzbyBhIFBDSS1hdHRhY2hlZCBkZXZpY2UsIG9yIGlzIGl0IGhhbmRsZWQgZGlmZmVyZW50bHksIGVpdGhlciBkaXJlY3RseSBmcm9tIHRoZSBjaGlwc2V0IG9yIHRocm91Z2ggYW5vdGhlciBjb25uZWN0aW9uPyBUaGUgZGVwZW5kZW5jeSBhbmFseXNpcyBpc24mIzM5O3QgY29tcGxldGUgdW50aWwgSSBjb25maXJtIHRoaXMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIGhhcmR3YXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxNzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0IyBBTFNBIFBDSSBkcml2ZXJzXG4gICAzOlx0XG4gICA0Olx0bWVudWNvbmZpZyBTTkRfUENJXG4gICA1Olx0XHRib29sIFwmIzM0O1BDSSBzb3VuZCBkZXZpY2VzXCYjMzQ7XG4gICA2Olx0XHRkZXBlbmRzIG9uIFBDSVxuICAgNzpcdFx0ZGVmYXVsdCB5XG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFN1cHBvcnQgZm9yIHNvdW5kIGRldmljZXMgY29ubmVjdGVkIHZpYSB0aGUgUENJIGJ1cy5cbiAgMTA6XHRcbiAgMTE6XHRpZiBTTkRfUENJXG4gIDEyOlx0XG4gIDEzOlx0Y29uZmlnIFNORF9BRDE4ODlcbiAgMTQ6XHRcdHRyaXN0YXRlIFwmIzM0O0FuYWxvZyBEZXZpY2VzIEFEMTg4OVwmIzM0O1xuICAxNTpcdFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgaW50ZWdyYXRlZCBBQzk3IHNvdW5kXG4gIDE4Olx0XHQgIGRldmljZSBmb3VuZCBpbiBwYXJ0aWN1bGFyIG9uIHRoZSBIZXdsZXR0LVBhY2thcmQgW0JDSl0teHh4MFxuICAxOTpcdFx0ICBjbGFzcyBQQS1SSVNDIHdvcmtzdGF0aW9ucywgdXNpbmcgdGhlIEFEMTgxOSBjb2RlYy5cbiAgMjA6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yOS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQ1NzYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNTkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQXVkaW8gRHJpdmVyIENvbmZpZ3VyYXRpb24gRGVwZW5kZW5jaWVzKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGVzZSBhdWRpbyBkcml2ZXIgb3B0aW9ucyBhbmQgdGhlIGZpcnN0IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgYFNORF9QQ0lgIGhhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIGBQQ0lgLiBUaGF0IG1ha2VzIHBlcmZlY3Qgc2Vuc2U7IHlvdSBjYW4mIzM5O3QgaGF2ZSBQQ0kgYXVkaW8gd2l0aG91dCwgd2VsbCwgUENJLiBNb3Zpbmcgb24sIEkgc2VlIGEgbG9uZyBsaXN0IG9mIHNwZWNpZmljIGF1ZGlvIGRyaXZlcnMgdGhhdCBhcmUgYXZhaWxhYmxlIGZvciBlbmFibGluZzogYFNORF9IREFfSU5URUxgLCBgU05EX0FEMTg4OWAsIGBTTkRfQVRJSVhQYCwgYFNORF9BVElJWFBfTU9ERU1gLCBgU05EX0FVODgxMGAsIGBTTkRfQVU4ODIwYCwgYFNORF9BVTg4MzBgLCBgU05EX0FXMmAsIGBTTkRfQlQ4N1hgLCBgU05EX0NTNDI4MWAsIGBTTkRfQ1M1NTMwYCwgYFNORF9MT0xBYCwgYFNORF9IRFNQTWAuIEEgZ29vZCBzZWxlY3Rpb24sIGNvdmVyaW5nIGEgbG90IG9mIHRoZSBjb21tb24gaGFyZHdhcmUgb3V0IHRoZXJlLgoKTm93LCBhIHF1aWNrIHNjYW4gZG93biB0aGUgbGlzdC4uLndhaXQgYSBzZWNvbmQuIFdoYXQmIzM5O3MgdGhpcz8gYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAuLi5kb2VzIHRoYXQgb25lIGhhdmUgKmFub3RoZXIqIGRlcGVuZGVuY3kgSSBuZWVkIHRvIGNoZWNrPyBUaGF0JiMzOTtzIHRoZSBraW5kIG9mIHRoaW5nIHRoYXQgYWx3YXlzIGNhdGNoZXMgeW91IG91dCBpZiB5b3UgZG9uJiMzOTt0IGtlZXAgYW4gZXllIG9uIGl0LiBHb3R0YSBtYWtlIHN1cmUgSSB0cmFjayBkb3duIHdoYXQgdGhhdCBkZXBlbmRzIG9uIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdG1lbnUgXCYjMzQ7TG9vbmdzb25cJiMzNDtcbiAgIDM6XHRcbiAgIDQ6XHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9DQVJEXG4gICA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBTb3VuZCBDYXJkIERyaXZlclwmIzM0O1xuICAgNjpcdFx0ZGVwZW5kcyBvbiBMT09OR0FSQ0ggfHwgQ09NUElMRV9URVNUXG4gICA3Olx0XHRzZWxlY3QgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJIGlmIFBDSVxuICAgODpcdFx0c2VsZWN0IFNORF9TT0NfTE9PTkdTT05fSTJTX1BMQVRGT1JNIGlmIE9GXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFNheSBZIG9yIE0gaWYgeW91IHdhbnQgdG8gYWRkIHN1cHBvcnQgZm9yIFNvQyBhdWRpbyB1c2luZ1xuICAxMTpcdFx0ICBsb29uZ3NvbiBJMlMgY29udHJvbGxlci5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgVGhlIGRyaXZlciBhZGQgc3VwcG9ydCBmb3IgQUxTQSBTb0MgQXVkaW8gc3VwcG9ydCB1c2luZ1xuICAxNDpcdFx0ICBsb29uZ3NvbiBJMlMgY29udHJvbGxlci5cbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJXG4gIDE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBJMlMtUENJIERldmljZSBEcml2ZXJcJiMzNDtcbiAgMTg6XHRcdGRlcGVuZHMgb24gTE9PTkdBUkNIIHx8IENPTVBJTEVfVEVTVFxuICAxOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMjA6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNTM3MwoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDExOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNvdW5kIERyaXZlciBDb25maWd1cmF0aW9uIGZvciBMb29uZ0FyY2ggU3lzdGVtcyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb25maWd1cmF0aW9uIGFuZCBpdCBoaW5nZXMgb24gYSBmZXcga2V5IGZhY3RvcnM6IHRoZSBgTE9PTkdBUkNIYCBhcmNoaXRlY3R1cmUgYW5kIHdoZXRoZXIgd2UmIzM5O3JlIGluIGEgYENPTVBJTEVfVEVTVGAgZW52aXJvbm1lbnQuIFdlJiMzOTtyZSBkZWFsaW5nIHdpdGggUENJIGhlcmUsIHRvbywgb2YgY291cnNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBzaW1wbHkgZW5hYmxlIGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgIGFuZCBgQ09NUElMRV9URVNUYCB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIG91dGNvbWU/IFByb2JhYmx5LgoKVGhlIGNyaXRpY2FsIHBpZWNlLCB0aG91Z2gsIGlzIHdoZXRoZXIgYHBjaW1faW9yZW1hcF9yZWdpb25gIGlzIGFjY2Vzc2libGUuIEkgbmVlZCB0byBlbnN1cmUgaXQmIzM5O3MgZXhwb3J0ZWQgYW5kIHRoYXQgb3VyIGRyaXZlciYjMzk7cyBwcm9iZSByb3V0aW5lIGNhbiByZWFjaCBpdC4gR29vZCwgaXQgbG9va3MgbGlrZSB0aGF0JiMzOTtzIHRoZSBjYXNlLiBJdCBhcHBlYXJzIHRvIGJlIGV4cG9ydGVkIGFuZCByZWFjaGFibGUgdmlhIHRoZSBkcml2ZXIgcHJvYmUuCgpTbywgYHBjaW1faW9yZW1hcF9yZWdpb25gIHNlZW1zIHRvIGJlIHRoZSBmb2N1cyBoZXJlLCB0aGUgbHluY2hwaW4uIEkmIzM5O20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGl0cyBkZWZpbml0aW9uIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlOyBJJiMzOTtsbCBuZWVkIHRvIG9wZW4gdGhlIGBkcml2ZXJzL3BjaS9kZXZyZXMuY2AgZmlsZSBhbmQgaGF2ZSBhIGxvb2sgYXQgYHBjaW1faW9yZW1hcF9yZWdpb25gIHRoZXJlIHRvIGJlIGNlcnRhaW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9wY2kvZGV2cmVzLmMmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2NDAsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDY0MDpcdEVYUE9SVF9TWU1CT0wocGNpbV9pb21hcF9yZWdpb24pO1xuIDY0MTpcdFxuIDY0MjpcdC8qKlxuIDY0MzpcdCAqIHBjaW1faW9yZW1hcF9yZWdpb24gLSBSZXF1ZXN0IGFuZCBpb3JlbWFwIGEgUENJIEJBUlxuIDY0NDpcdCAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yXG4gNjQ1Olx0ICogQGJhcjogSW5kZXggb2YgYSBCQVIgdG8gbWFwXG4gNjQ2Olx0ICogQG5hbWU6IE5hbWUgb2YgdGhlIGRyaXZlciByZXF1ZXN0aW5nIHRoZSByZXNvdXJjZVxuIDY0NzpcdCAqXG4gNjQ4Olx0ICogUmV0dXJuczogX19pb21lbSBwb2ludGVyIG9uIHN1Y2Nlc3MsIGFuIElPTUVNX0VSUl9QVFIgb24gZmFpbHVyZS5cbiA2NDk6XHQgKlxuIDY1MDpcdCAqIE1hcHBpbmcgYW5kIHJlZ2lvbiB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIElmXG4gNjUxOlx0ICogZGVzaXJlZCwgcmVsZWFzZSBtYW51YWxseSBvbmx5IHdpdGggcGNpbV9pb3VubWFwX3JlZ2lvbigpLlxuIDY1MjpcdCAqL1xuIDY1MzpcdHZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbiA2NTQ6XHRcdFx0XHRcdCAgY29uc3QgY2hhciAqbmFtZSlcbiA2NTU6XHR7XG4gNjU2Olx0XHRpbnQgcmV0O1xuIDY1NzpcdFx0c3RydWN0IHBjaW1fYWRkcl9kZXZyZXMgKnJlcztcbiA2NTg6XHRcbiA2NTk6XHRcdGlmICghcGNpX2Jhcl9pbmRleF9pc192YWxpZChiYXIpKVxuIDY2MDpcdFx0XHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRUlOVkFMKTtcbiA2NjE6XHRcbiA2NjI6XHRcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG4gNjYzOlx0XHRpZiAoIXJlcylcbiA2NjQ6XHRcdFx0cmV0dXJuIElPTUVNX0VSUl9QVFIoLUVOT01FTSk7XG4gNjY1Olx0XG4gNjY2Olx0XHRyZXMtXHUwMDNldHlwZSA9IFBDSU1fQUREUl9ERVZSRVNfVFlQRV9SRUdJT05fTUFQUElORztcbiA2Njc6XHRcdHJlcy1cdTAwM2ViYXIgPSBiYXI7XG4gNjY4Olx0XG4gNjY5Olx0XHRyZXQgPSBwY2lfcmVxdWVzdF9yZWdpb24ocGRldiwgYmFyLCBuYW1lKTtcbiA2NzA6XHRcdGlmIChyZXQgIT0gMClcbiA2NzE6XHRcdFx0Z290byBlcnJfcmVnaW9uO1xuIDY3MjpcdFxuIDY3MzpcdFx0cmVzLVx1MDAzZWJhc2VhZGRyID0gcGNpX2lvcmVtYXBfYmFyKHBkZXYsIGJhcik7XG4gNjc0Olx0XHRpZiAoIXJlcy1cdTAwM2ViYXNlYWRkcikge1xuIDY3NTpcdFx0XHRyZXQgPSAtRUlOVkFMO1xuIDY3NjpcdFx0XHRnb3RvIGVycl9pb21hcDtcbiA2Nzc6XHRcdH1cbiA2Nzg6XHRcbiA2Nzk6XHRcdGRldnJlc19hZGQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJlcyk7XG4gNjgwOlx0XHRyZXR1cm4gcmVzLVx1MDAzZWJhc2VhZGRyO1xuIDY4MTpcdFxuIDY4MjpcdGVycl9pb21hcDpcbiA2ODM6XHRcdHBjaV9yZWxlYXNlX3JlZ2lvbihwZGV2LCBiYXIpO1xuIDY4NDpcdGVycl9yZWdpb246XG4gNjg1Olx0XHRwY2ltX2FkZHJfZGV2cmVzX2ZyZWUocmVzKTtcbiA2ODY6XHRcbiA2ODc6XHRcdHJldHVybiBJT01FTV9FUlJfUFRSKHJldCk7XG4gNjg4Olx0fVxuIDY4OTpcdEVYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2NTMzCgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMjU0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgdGhlIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBGdW5jdGlvbioqCgpPa2F5LCBzbyBJJiMzOTt2ZSBpZGVudGlmaWVkIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBhcyBhIG5ldyBjb3JlIEFQSSB0aGF0JiMzOTtzIGJlaW5nIHVzZWQgYWNyb3NzIGEgYnVuY2ggb2Ygc291bmQgZHJpdmVycy4gVGhhdCBtYWtlcyBpdCBhIHByaW1lIGNhbmRpZGF0ZSBmb3IgZnV6emluZy4gVGhlIGZvY3VzIGhlcmUgaXMgZGVmaW5pdGVseSB0aGF0IHN5bWJvbCwgYHBjaW1faW9yZW1hcF9yZWdpb25gLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHRoZSBjb25maWdzIG5lZWRlZCB0byBlbmFibGUgaXQuIEkmIzM5O3ZlIGdvdCBhIGdvb2Qgc3RhcnRpbmcgc2V0OiBgUENJYCwgYFNORF9QQ0lgLCBgU05EX0hEQV9JTlRFTGAsIGBTTkRfQUQxODg5YCwgYFNORF9BVElJWFBgLCBgU05EX0FUSUlYUF9NT0RFTWAsIGBTTkRfQVU4ODEwYCwgYFNORF9BVTg4MjBgLCBgU05EX0FVODgzMGAsIGBTTkRfQVcyYCwgYFNORF9CVDg3WGAsIGBTTkRfQ1M0MjgxYCwgYFNORF9DUzU1MzBgLCBgU05EX0xPTEFgLCBgU05EX0hEU1BNYCwgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAsIGFuZCBgQ09NUElMRV9URVNUYC4gR290dGEgYmUgdGhvcm91Z2gsIHNvIEkmIzM5O2xsIGRvdWJsZSBjaGVjayB0byBzZWUgaWYgdGhvc2UgY292ZXIgZXZlcnl0aGluZy4KCkkga25vdyBgU05EYCBpcyBhIGRlcGVuZGVuY3kgZm9yIGBTTkRfUENJYCDigJMgc3RhbmRhcmQgc3R1ZmYuIEFuZCwgb2YgY291cnNlLCBgU05EX1NPQ2AgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgLiBMZXQmIzM5O3MganVzdCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgb3RoZXIgZ290Y2hhcyBJJiMzOTttIG1pc3NpbmcuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGtleSBjb25maWd1cmF0aW9ucyBJJiMzOTttIG1pc3NpbmchCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfU09DJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O1xuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTc0IGxpbmVzLlxuVXNlIG1vcmUgcHJlY2lzZSBleHByZXNzaW9uIGlmIHBvc3NpYmxlLlxuXG5zb3VuZC9zb2MvS2NvbmZpZy01LVxuc291bmQvc29jL0tjb25maWc6NjptZW51Y29uZmlnIFNORF9TT0NcbnNvdW5kL3NvYy9LY29uZmlnLTctXHR0cmlzdGF0ZSBcJiMzNDtBTFNBIGZvciBTb0MgYXVkaW8gc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9LY29uZmlnPTI0PWlmIFNORF9TT0NcbnNvdW5kL3NvYy9LY29uZmlnLTI1LVxuc291bmQvc29jL0tjb25maWc6MjY6Y29uZmlnIFNORF9TT0NfQUM5N19CVVNcbnNvdW5kL3NvYy9LY29uZmlnLTI3LVx0Ym9vbFxuc291bmQvc29jL0tjb25maWctMjgtXG5zb3VuZC9zb2MvS2NvbmZpZzoyOTpjb25maWcgU05EX1NPQ19HRU5FUklDX0RNQUVOR0lORV9QQ01cbnNvdW5kL3NvYy9LY29uZmlnLTMwLVx0Ym9vbFxuLS1cbnNvdW5kL3NvYy9LY29uZmlnLTMyLVxuc291bmQvc29jL0tjb25maWc6MzM6Y29uZmlnIFNORF9TT0NfQ09NUFJFU1NcbnNvdW5kL3NvYy9LY29uZmlnLTM0LVx0Ym9vbFxuLS1cbnNvdW5kL3NvYy9LY29uZmlnLTM2LVxuc291bmQvc29jL0tjb25maWc6Mzc6Y29uZmlnIFNORF9TT0NfVE9QT0xPR1lcbnNvdW5kL3NvYy9LY29uZmlnLTM4LVx0Ym9vbFxuLS1cbnNvdW5kL3NvYy9LY29uZmlnLTQwLVxuc291bmQvc29jL0tjb25maWc6NDE6Y29uZmlnIFNORF9TT0NfVE9QT0xPR1lfQlVJTERcbnNvdW5kL3NvYy9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtCdWlsZCB0b3BvbG9neSBjb3JlXCYjMzQ7XG4tLVxuc291bmQvc29jL0tjb25maWctNTEtXG5zb3VuZC9zb2MvS2NvbmZpZzo1Mjpjb25maWcgU05EX1NPQ19UT1BPTE9HWV9LVU5JVF9URVNUXG5zb3VuZC9zb2MvS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBTb0MgdG9wb2xvZ3lcJiMzNDtcbi0tXG5zb3VuZC9zb2MvS2NvbmZpZy02OC1cbnNvdW5kL3NvYy9LY29uZmlnOjY5OmNvbmZpZyBTTkRfU09DX0NBUkRfS1VOSVRfVEVTVFxuc291bmQvc29jL0tjb25maWctNzAtXHR0cmlzdGF0ZSBcJiMzNDtLVW5pdCB0ZXN0cyBmb3IgU29DIGNhcmRcJiMzNDtcbi0tXG5zb3VuZC9zb2MvS2NvbmZpZy03Ni1cbnNvdW5kL3NvYy9LY29uZmlnOjc3OmNvbmZpZyBTTkRfU09DX1VUSUxTX0tVTklUX1RFU1RcbnNvdW5kL3NvYy9LY29uZmlnLTc4LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIFNvQyB1dGlsc1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9LY29uZmlnLTgzLVxuc291bmQvc29jL0tjb25maWc6ODQ6Y29uZmlnIFNORF9TT0NfT1BTX0tVTklUX1RFU1RcbnNvdW5kL3NvYy9LY29uZmlnLTg1LVx0dHJpc3RhdGUgXCYjMzQ7S1VuaXQgdGVzdHMgZm9yIFNvQyBvcHNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvS2NvbmZpZy05MC1cbnNvdW5kL3NvYy9LY29uZmlnOjkxOmNvbmZpZyBTTkRfU09DX0FDUElcbnNvdW5kL3NvYy9LY29uZmlnLTkyLVx0dHJpc3RhdGVcbnNvdW5kL3NvYy9LY29uZmlnLTkzLVxuc291bmQvc29jL0tjb25maWc6OTQ6Y29uZmlnIFNORF9TT0NfVVNCXG5zb3VuZC9zb2MvS2NvbmZpZy05NS1cdHRyaXN0YXRlIFwmIzM0O1NvQyBiYXNlZCBVU0IgYXVkaW8gb2ZmbG9hZGluZ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9hZGkvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7QW5hbG9nIERldmljZXNcJiMzNDtcbnNvdW5kL3NvYy9hZGkvS2NvbmZpZy0zLVxuc291bmQvc29jL2FkaS9LY29uZmlnOjQ6Y29uZmlnIFNORF9TT0NfQURJX0FYSV9JMlNcbnNvdW5kL3NvYy9hZGkvS2NvbmZpZy01LVx0dHJpc3RhdGUgXCYjMzQ7QVhJLUkyUyBzdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2FkaS9LY29uZmlnLTEwLVxuc291bmQvc29jL2FkaS9LY29uZmlnOjExOmNvbmZpZyBTTkRfU09DX0FESV9BWElfU1BESUZcbnNvdW5kL3NvYy9hZGkvS2NvbmZpZy0xMi1cdHRyaXN0YXRlIFwmIzM0O0FYSS1TUERJRiBzdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnPTI9bWVudSBcJiMzNDtBTURcJiMzNDtcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0zLVxuc291bmQvc29jL2FtZC9LY29uZmlnOjQ6Y29uZmlnIFNORF9TT0NfQU1EX0FDUFxuc291bmQvc29jL2FtZC9LY29uZmlnLTUtXHR0cmlzdGF0ZSBcJiMzNDtBTUQgQXVkaW8gQ29wcm9jZXNzb3Igc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy04LVxuc291bmQvc29jL2FtZC9LY29uZmlnOjk6Y29uZmlnIFNORF9TT0NfQU1EX0NaX0RBNzIxOU1YOTgzNTdfTUFDSFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEwLVx0dHJpc3RhdGUgXCYjMzQ7QU1EIENaIHN1cHBvcnQgZm9yIERBNzIxOSwgUlQ1NjgyIGFuZCBNQVg5ODM1XCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnLTE5LVxuc291bmQvc29jL2FtZC9LY29uZmlnOjIwOmNvbmZpZyBTTkRfU09DX0FNRF9DWl9SVDU2NDVfTUFDSFxuc291bmQvc29jL2FtZC9LY29uZmlnLTIxLVx0dHJpc3RhdGUgXCYjMzQ7QU1EIENaIHN1cHBvcnQgZm9yIFJUNTY0NVwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0yNi1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzoyNzpjb25maWcgU05EX1NPQ19BTURfU1RfRVM4MzM2X01BQ0hcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0yOC1cdHRyaXN0YXRlIFwmIzM0O0FNRCBTVCBzdXBwb3J0IGZvciBFUzgzMzZcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMzgtXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6Mzk6Y29uZmlnIFNORF9TT0NfQU1EX0FDUDN4XG5zb3VuZC9zb2MvYW1kL0tjb25maWctNDAtXHR0cmlzdGF0ZSBcJiMzNDtBTUQgQXVkaW8gQ29wcm9jZXNzb3ItdjMueCBzdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnLTQ0LVxuc291bmQvc29jL2FtZC9LY29uZmlnOjQ1OmNvbmZpZyBTTkRfU09DX0FNRF9SVl9SVDU2ODJfTUFDSFxuc291bmQvc29jL2FtZC9LY29uZmlnLTQ2LVx0dHJpc3RhdGUgXCYjMzQ7QU1EIFJWIHN1cHBvcnQgZm9yIFJUNTY4MlwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy01Ni1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo1Nzpjb25maWcgU05EX1NPQ19BTURfUkVOT0lSXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNTgtXHR0cmlzdGF0ZSBcJiMzNDtBTUQgQXVkaW8gQ29wcm9jZXNzb3IgLSBSZW5vaXIgc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy02My1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo2NDpjb25maWcgU05EX1NPQ19BTURfUkVOT0lSX01BQ0hcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy02NS1cdHRyaXN0YXRlIFwmIzM0O0FNRCBSZW5vaXIgc3VwcG9ydCBmb3IgRE1JQ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy03MC1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo3MTpjb25maWcgU05EX1NPQ19BTURfQUNQNXhcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy03Mi1cdHRyaXN0YXRlIFwmIzM0O0FNRCBBdWRpbyBDb3Byb2Nlc3Nvci12NS54IEkyUyBzdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnLTgwLVxuc291bmQvc29jL2FtZC9LY29uZmlnOjgxOmNvbmZpZyBTTkRfU09DX0FNRF9WQU5HT0dIX01BQ0hcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy04Mi1cdHRyaXN0YXRlIFwmIzM0O0FNRCBWYW5nb2doIHN1cHBvcnQgZm9yIE5BVTg4MjEvQ1MzNUw0MS9NQVg5ODM4OFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy05My1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo5NDpjb25maWcgU05EX1NPQ19BTURfQUNQNnhcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy05NS1cdHRyaXN0YXRlIFwmIzM0O0FNRCBBdWRpbyBDb3Byb2Nlc3Nvci12Ni54IFllbGxvdyBDYXJwIHN1cHBvcnRcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTA0LVxuc291bmQvc29jL2FtZC9LY29uZmlnOjEwNTpjb25maWcgU05EX1NPQ19BTURfWUNfTUFDSFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEwNi1cdHRyaXN0YXRlIFwmIzM0O0FNRCBZQyBzdXBwb3J0IGZvciBETUlDXCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnPTEyMz1zb3VyY2UgXCYjMzQ7c291bmQvc29jL2FtZC9hY3AvS2NvbmZpZ1wmIzM0O1xuc291bmQvc29jL2FtZC9LY29uZmlnLTEyNC1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzoxMjU6Y29uZmlnIFNORF9TT0NfQU1EX0FDUDYzX1RPUExFVkVMXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTI2LVx0dHJpc3RhdGUgXCYjMzQ7c3VwcG9ydCBmb3IgQU1EIHBsYXRmb3JtcyB3aXRoIEFDUCB2ZXJzaW9uIFx1MDAzZT0gNi4zXCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnPTEzNj1pZiBTTkRfU09DX0FNRF9BQ1A2M19UT1BMRVZFTFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEzNy1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzoxMzg6Y29uZmlnIFNORF9TT0NfQU1EX1NPVU5EV0lSRV9MSU5LX0JBU0VMSU5FXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTM5LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTQxLVxuc291bmQvc29jL2FtZC9LY29uZmlnOjE0Mjpjb25maWcgU05EX1NPQ19BTURfU09VTkRXSVJFXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTQzLVx0dHJpc3RhdGUgXCYjMzQ7U3VwcG9ydCBmb3IgU291bmRXaXJlIGJhc2VkIEFNRCBwbGF0Zm9ybXNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTUyLVxuc291bmQvc29jL2FtZC9LY29uZmlnOjE1Mzpjb25maWcgU05EX1NPQ19BTURfUFNcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNTQtICAgICAgICB0cmlzdGF0ZSBcJiMzNDtBTUQgQXVkaW8gQ29wcm9jZXNzb3ItdjYuMy92Ny4wL3Y3LjEgc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNjUtXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6MTY2OmNvbmZpZyBTTkRfU09DX0FNRF9QU19NQUNIXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTY3LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7QU1EIFBJTksgU0FSRElORSBzdXBwb3J0IGZvciBETUlDXCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9LY29uZmlnLTE3Ni1cbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzoxNzc6Y29uZmlnIFNORF9TT0NfQU1EX0FDUDdYXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTc4LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7QU1EIEF1ZGlvIENvcHJvY2Vzc29yLXY3Lnggc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNy1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6ODpjb25maWcgU05EX1NPQ19BTURfQUNQX0NPTU1PTlxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy05LVx0dHJpc3RhdGUgXCYjMzQ7QU1EIEF1ZGlvIEFDUCBDb21tb24gc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTUtXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjE2OmNvbmZpZyBTTkRfU09DX0FDUElfQU1EX01BVENIXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE3LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE5LVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzoyMDpjb25maWcgU05EX1NPQ19BQ1BJX0FNRF9TRENBX1FVSVJLU1xuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0yMS1cdGJvb2wgXCYjMzQ7QU1EIEFDUEkgU0RDQSBxdWlya3NcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnPTMwPWlmIFNORF9TT0NfQU1EX0FDUF9DT01NT05cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMzEtXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjMyOmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BfUERNXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTMzLVx0dHJpc3RhdGVcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMzQtXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjM1OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BfTEVHQUNZX0NPTU1PTlxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zNi1cdHRyaXN0YXRlXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTM3LVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzozODpjb25maWcgU05EX1NPQ19BTURfQUNQX0kyU1xuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zOS1cdHRyaXN0YXRlXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTQwLVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzo0MTpjb25maWcgU05EX1NPQ19BTURfQUNQSV9NQUNIXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTQyLVx0dHJpc3RhdGVcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDMtXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjQ0OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BfUENNXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTQ1LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTQ3LVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzo0ODpjb25maWcgU05EX1NPQ19BTURfQUNQX1BDSVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy00OS1cdHRyaXN0YXRlIFwmIzM0O0FNRCBBQ1AgUENJIERyaXZlciBTdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZz05OT1jb25maWcgU05EX0FNRF9BU09DX0FDUDcwXG4tLVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xMTMtXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjExNDpjb25maWcgU05EX1NPQ19BTURfTUFDSF9DT01NT05cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTE1LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTEyNy1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTI4OmNvbmZpZyBTTkRfU09DX0FNRF9MRUdBQ1lfTUFDSFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xMjktXHR0cmlzdGF0ZSBcJiMzNDtBTUQgTGVnYWN5IE1hY2hpbmUgRHJpdmVyIFN1cHBvcnRcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTEzNC1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTM1OmNvbmZpZyBTTkRfU09DX0FNRF9TT0ZfTUFDSFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xMzYtXHR0cmlzdGF0ZSBcJiMzNDtBTUQgU09GIE1hY2hpbmUgRHJpdmVyIFN1cHBvcnRcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE0MS1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTQyOmNvbmZpZyBTTkRfU09DX0FNRF9TRFdfTUFDSF9DT01NT05cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTQzLVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE0Ny1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTQ4OmNvbmZpZyBTTkRfU09DX0FNRF9TT0ZfU0RXX01BQ0hcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTQ5LVx0dHJpc3RhdGUgXCYjMzQ7QU1EIFNPRiBTb3VuZHdpcmUgTWFjaGluZSBEcml2ZXIgU3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTY3LVxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzoxNjg6Y29uZmlnIFNORF9TT0NfQU1EX0xFR0FDWV9TRFdfTUFDSFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xNjktXHR0cmlzdGF0ZSBcJiMzNDtBTUQgTGVnYWN5KE5vIERTUCkgU291bmR3aXJlIE1hY2hpbmUgRHJpdmVyIFN1cHBvcnRcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYXBwbGUvS2NvbmZpZz0yPW1lbnUgXCYjMzQ7QXBwbGVcJiMzNDtcbnNvdW5kL3NvYy9hcHBsZS9LY29uZmlnLTMtXG5zb3VuZC9zb2MvYXBwbGUvS2NvbmZpZzo0OmNvbmZpZyBTTkRfU09DX0FQUExFX01DQVxuc291bmQvc29jL2FwcGxlL0tjb25maWctNS1cdHRyaXN0YXRlIFwmIzM0O0FwcGxlIFNpbGljb24gTUNBIGRyaXZlclwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hdG1lbC9LY29uZmlnPTkzPWNvbmZpZyBTTkRfQVRNRUxfU09DX0kyU1xuLS1cbnNvdW5kL3NvYy9hdG1lbC9LY29uZmlnLTEwMS1cbnNvdW5kL3NvYy9hdG1lbC9LY29uZmlnOjEwMjpjb25maWcgU05EX1NPQ19NSUtST0VfUFJPVE9cbnNvdW5kL3NvYy9hdG1lbC9LY29uZmlnLTEwMy1cdHRyaXN0YXRlIFwmIzM0O1N1cHBvcnQgZm9yIE1pa3JvZS1QUk9UTyBib2FyZFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWc9NT1tZW51IFwmIzM0O0F1MXhcJiMzNDtcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctNi1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWc6Nzpjb25maWcgU05EX1NPQ19BVTFYUFNDXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTgtXHR0cmlzdGF0ZSBcJiMzNDtTb0MgQXVkaW8gZm9yIEF1MTJ4eC9BdTEzeHgvQXUxNTUwXCYjMzQ7XG4tLVxuc291bmQvc29jL2F1MXgvS2NvbmZpZy0xNC1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWc6MTU6Y29uZmlnIFNORF9TT0NfQVUxWFBTQ19JMlNcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMTYtXHR0cmlzdGF0ZVxuc291bmQvc29jL2F1MXgvS2NvbmZpZy0xNy1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWc6MTg6Y29uZmlnIFNORF9TT0NfQVUxWFBTQ19BQzk3XG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTE5LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTI2LSMjXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjI3OmNvbmZpZyBTTkRfU09DX0FVMVhBVURJT1xuc291bmQvc29jL2F1MXgvS2NvbmZpZy0yOC1cdHRyaXN0YXRlIFwmIzM0O1NvQyBBdWRpbyBmb3IgQXUxMDAwL0F1MTUwMC9BdTExMDBcJiMzNDtcbi0tXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTMzLVxuc291bmQvc29jL2F1MXgvS2NvbmZpZzozNDpjb25maWcgU05EX1NPQ19BVTFYQUM5N0NcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMzUtXHR0cmlzdGF0ZVxuLS1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMzktXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjQwOmNvbmZpZyBTTkRfU09DX0FVMVhJMlNDXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTQxLVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTQ2LSMjXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjQ3OmNvbmZpZyBTTkRfU09DX0RCMTAwMFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy00OC1cdHRyaXN0YXRlIFwmIzM0O0RCMTAwMCBBdWRpbyBzdXBwb3J0XCYjMzQ7XG4tLVxuc291bmQvc29jL2F1MXgvS2NvbmZpZy01NS1cbnNvdW5kL3NvYy9hdTF4L0tjb25maWc6NTY6Y29uZmlnIFNORF9TT0NfREIxMjAwXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTU3LVx0dHJpc3RhdGUgXCYjMzQ7REIxMjAwL0RCMTMwMC9EQjE1NTAgQXVkaW8gc3VwcG9ydFwmIzM0O1xuLS1cbnNvdW5kL3NvYy9iY20vS2NvbmZpZz00PWNvbmZpZyBTTkRfQkNNMjgzNV9TT0NfSTJTXG4tLVxuc291bmQvc29jL2JjbS9LY29uZmlnLTEzLVxuc291bmQvc29jL2JjbS9LY29uZmlnOjE0OmNvbmZpZyBTTkRfU09DX0NZR05VU1xuc291bmQvc29jL2JjbS9LY29uZmlnLTE1LVx0dHJpc3RhdGUgXCYjMzQ7U29DIHBsYXRmb3JtIGF1ZGlvIGZvciBCcm9hZGNvbSBDeWdudXMgY2hpcHNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNS0jIHNldHRpbmcgLSBTUEkgY2FuJiMzOTt0IGJlIG1vZHVsYXIgc28gdGhhdCBjYXNlIGRvZXNuJiMzOTt0IG5lZWQgdG8gYmUgY292ZXJlZC5cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2OmNvbmZpZyBTTkRfU09DX0kyQ19BTkRfU1BJXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNy1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnPTEyPW1lbnUgXCYjMzQ7Q09ERUMgZHJpdmVyc1wmIzM0O1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTEzLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjE0OmNvbmZpZyBTTkRfU09DX0FMTF9DT0RFQ1NcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0xNS1cdHRyaXN0YXRlIFwmIzM0O0J1aWxkIGFsbCBBU29DIENPREVDIGRyaXZlcnNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctMzgxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjM4Mjpjb25maWcgU05EX1NPQ184OFBNODYwWFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM4My1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM4NS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzozODY6Y29uZmlnIFNORF9TT0NfQVJJWk9OQVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM4Ny1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM5OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzozOTk6Y29uZmlnIFNORF9TT0NfV01fSFVCU1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQwMC1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQwMy1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MDQ6Y29uZmlnIFNORF9TT0NfV01fQURTUFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQwNS1cdHRyaXN0YXRlIFwmIzM0O0NpcnJ1cyBMb2dpYyB3bV9hZHNwIGRyaXZlclwmIzM0OyBpZiBLVU5JVFxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MDgtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDA5OmNvbmZpZyBTTkRfU09DX1dNX0FEU1BfVEVTVFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQxMC1cdHRyaXN0YXRlIFwmIzM0O0tVbml0IHRlc3RzIGZvciBDaXJydXMgTG9naWMgd21fYWRzcFwmIzM0OyBpZiAhS1VOSVRfQUxMX1RFU1RTXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQyMC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MjE6Y29uZmlnIFNORF9TT0NfQUI4NTAwX0NPREVDXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDIyLVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDI0LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQyNTpjb25maWcgU05EX1NPQ19BQzk3X0NPREVDXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDI2LVx0dHJpc3RhdGUgXCYjMzQ7QnVpbGQgZ2VuZXJpYyBBU29DIEFDOTcgQ09ERUMgZHJpdmVyXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQyOS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MzA6Y29uZmlnIFNORF9TT0NfQUQxODM2XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDMxLVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDMzLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQzNDpjb25maWcgU05EX1NPQ19BRDE5M1hcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MzUtXHR0cmlzdGF0ZVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQzNi1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0Mzc6Y29uZmlnIFNORF9TT0NfQUQxOTNYX1NQSVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQzOC1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ0MS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0NDI6Y29uZmlnIFNORF9TT0NfQUQxOTNYX0kyQ1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ0My1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ0Ni1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0NDc6Y29uZmlnIFNORF9TT0NfQUQxOTgwXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDQ4LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDUxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ1Mjpjb25maWcgU05EX1NPQ19BRDczMzExXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDUzLVx0dHJpc3RhdGVcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NTQtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDU1OmNvbmZpZyBTTkRfU09DX0FEQVVfVVRJTFNcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NTYtXHR0cmlzdGF0ZVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ1Ny1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0NTg6Y29uZmlnIFNORF9TT0NfQURBVTEzNzJcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NTktXHR0cmlzdGF0ZVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NjEtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDYyOmNvbmZpZyBTTkRfU09DX0FEQVUxMzcyX0kyQ1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ2My1cdHRyaXN0YXRlIFwmIzM0O0FuYWxvZyBEZXZpY2VzIEFEQVUxMzcyIENPREVDIChJMkMpXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ2Ny1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0Njg6Y29uZmlnIFNORF9TT0NfQURBVTEzNzJfU1BJXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDY5LVx0dHJpc3RhdGUgXCYjMzQ7QW5hbG9nIERldmljZXMgQURBVTEzNzIgQ09ERUMgKFNQSSlcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDczLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ3NDpjb25maWcgU05EX1NPQ19BREFVMTM3M1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ3NS1cdHRyaXN0YXRlIFwmIzM0O0FuYWxvZyBEZXZpY2VzIEFEQVUxMzczIENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ3OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0Nzk6Y29uZmlnIFNORF9TT0NfQURBVTE3MDFcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00ODAtXHR0cmlzdGF0ZSBcJiMzNDtBbmFsb2cgRGV2aWNlcyBBREFVMTcwMSBDT0RFQ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00ODMtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDg0OmNvbmZpZyBTTkRfU09DX0FEQVUxN1gxXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDg1LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDg4LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ4OTpjb25maWcgU05EX1NPQ19BREFVMTc2MVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ5MC1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ5Mi1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0OTM6Y29uZmlnIFNORF9TT0NfQURBVTE3NjFfSTJDXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDk0LVx0dHJpc3RhdGUgXCYjMzQ7QW5hbG9nIERldmljZXMgQVUxNzYxIENPREVDIC0gSTJDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ5OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0OTk6Y29uZmlnIFNORF9TT0NfQURBVTE3NjFfU1BJXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTAwLVx0dHJpc3RhdGUgXCYjMzQ7QW5hbG9nIERldmljZXMgQVUxNzYxIENPREVDIC0gU1BJXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUwNC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1MDU6Y29uZmlnIFNORF9TT0NfQURBVTE3ODFcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MDYtXHRzZWxlY3QgU05EX1NPQ19BREFVMTdYMVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MDgtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTA5OmNvbmZpZyBTTkRfU09DX0FEQVUxNzgxX0kyQ1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUxMC1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUxNC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1MTU6Y29uZmlnIFNORF9TT0NfQURBVTE3ODFfU1BJXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTE2LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTIwLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUyMTpjb25maWcgU05EX1NPQ19BREFVMTk3N1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUyMi1cdHRyaXN0YXRlXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTIzLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUyNDpjb25maWcgU05EX1NPQ19BREFVMTk3N19TUElcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MjUtXHR0cmlzdGF0ZVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MjktXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTMwOmNvbmZpZyBTTkRfU09DX0FEQVUxOTc3X0kyQ1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUzMS1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUzNS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1MzY6Y29uZmlnIFNORF9TT0NfQURBVTcwMDJcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MzctXHR0cmlzdGF0ZSBcJiMzNDtBbmFsb2cgRGV2aWNlcyBBREFVNzAwMiBTdGVyZW8gUERNLXRvLUkyUy9URE0gQ29udmVydGVyXCYjMzQ7XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTM4LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUzOTpjb25maWcgU05EX1NPQ19BREFVNzExOFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU0MC1cdHRyaXN0YXRlXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTQxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjU0Mjpjb25maWcgU05EX1NPQ19BREFVNzExOF9IV1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU0My1cdHRyaXN0YXRlIFwmIzM0O0FuYWxvZyBEZXZpY2VzIEFEQVU3MTE4IDggQ2hhbm5lbCBQRE0tdG8tSTJTL1RETSBDb252ZXJ0ZXIgLSBIVyBNb2RlXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU1My1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1NTQ6Y29uZmlnIFNORF9TT0NfQURBVTcxMThfSTJDXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTU1LVx0dHJpc3RhdGUgXCYjMzQ7QW5hbG9nIERldmljZXMgQURBVTcxMTggOCBDaGFubmVsIFBETS10by1JMlMvVERNIENvbnZlcnRlciAtIEkyQ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NjUtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTY2OmNvbmZpZyBTTkRfU09DX0FEQVY4MFhcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NjctXHR0cmlzdGF0ZVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU2OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1Njk6Y29uZmlnIFNORF9TT0NfQURBVjgwMVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU3MC1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU3My1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1NzQ6Y29uZmlnIFNORF9TT0NfQURBVjgwM1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU3NS1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU3OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1Nzk6Y29uZmlnIFNORF9TT0NfQURTMTE3WFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU4MC1cdHRyaXN0YXRlXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTgxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjU4Mjpjb25maWcgU05EX1NPQ19BSzQxMDRcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01ODMtXHR0cmlzdGF0ZSBcJiMzNDtBS00gQUs0MTA0IENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU4NS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1ODY6Y29uZmlnIFNORF9TT0NfQUs0MTE4XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTg3LVx0dHJpc3RhdGUgXCYjMzQ7QUtNIEFLNDExOCBDT0RFQ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01OTAtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTkxOmNvbmZpZyBTTkRfU09DX0FLNDM3NVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU5Mi1cdHRyaXN0YXRlIFwmIzM0O0FLTSBBSzQzNzUgQ09ERUNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjAwLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYwMTpjb25maWcgU05EX1NPQ19BSzQ0NThcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MDItXHR0cmlzdGF0ZSBcJiMzNDtBS00gQUs0NDU4IENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYwNS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2MDY6Y29uZmlnIFNORF9TT0NfQUs0NTM1XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjA3LVx0dHJpc3RhdGVcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjA5LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYxMDpjb25maWcgU05EX1NPQ19BSzQ1NTRcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MTEtXHR0cmlzdGF0ZSBcJiMzNDtBS00gQUs0NTU0IENPREVDXCYjMzQ7XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjEyLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYxMzpjb25maWcgU05EX1NPQ19BSzQ2MTNcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MTQtXHR0cmlzdGF0ZSBcJiMzNDtBS00gQUs0NjEzIENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYxNi1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2MTc6Y29uZmlnIFNORF9TT0NfQUs0NjE5XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjE4LSAgICAgICAgdHJpc3RhdGUgXCYjMzQ7QUtNIEFLNDYxOSBDT0RFQ1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjAtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjIxOmNvbmZpZyBTTkRfU09DX0FLNDY0Mlxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYyMi1cdHRyaXN0YXRlIFwmIzM0O0FLTSBBSzQ2NDIgQ09ERUNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjI0LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYyNTpjb25maWcgU05EX1NPQ19BSzQ2NzFcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjYtXHR0cmlzdGF0ZVxuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjgtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjI5OmNvbmZpZyBTTkRfU09DX0FLNTM4Nlxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYzMC1cdHRyaXN0YXRlIFwmIzM0O0FLTSBBSzU2MzggQ09ERUNcJiMzNDtcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MzEtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjMyOmNvbmZpZyBTTkRfU09DX0FLNTU1OFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYzMy1cdHRyaXN0YXRlIFwmIzM0O0FLTSBBSzU1NTggQ09ERUNcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjM2LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYzNzpjb25maWcgU05EX1NPQ19BTEM1NjIzXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjM4LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayBBTEM1NjIzIENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY0MC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NDE6Y29uZmlnIFNORF9TT0NfQUxDNTYzMlxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY0Mi1cdHRyaXN0YXRlXG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY0NC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NDU6Y29uZmlnIFNORF9TT0NfQVVESU9fSUlPX0FVWFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY0Ni1cdHRyaXN0YXRlIFwmIzM0O0F1ZGlvIElJTyBBdXhpbGlhcnkgZGV2aWNlXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY1NS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NTY6Y29uZmlnIFNORF9TT0NfQVc4NzM4XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjU3LVx0dHJpc3RhdGUgXCYjMzQ7QXdpbmljIEFXODczOCBBdWRpbyBBbXBsaWZpZXJcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjY0LVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjY2NTpjb25maWcgU05EX1NPQ19BVzg4Mzk1X0xJQlxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY2Ni1cdHNlbGVjdCBDUkM4XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY2OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2Njk6Y29uZmlnIFNORF9TT0NfQVc4ODM5NVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY3MC1cdHRyaXN0YXRlIFwmIzM0O1NvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgzOTVcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjgxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjY4Mjpjb25maWcgU05EX1NPQ19BVzg4MTY2XG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjgzLVx0dHJpc3RhdGUgXCYjMzQ7U29jIEF1ZGlvIGZvciBhd2luaWMgYXc4ODE2NlwmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02OTMtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6Njk0OmNvbmZpZyBTTkRfU09DX0FXODgyNjFcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02OTUtXHR0cmlzdGF0ZSBcJiMzNDtTb2MgQXVkaW8gZm9yIGF3aW5pYyBhdzg4MjYxXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTcwNi1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3MDc6Y29uZmlnIFNORF9TT0NfQVc4ODA4MVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTcwOC1cdHRyaXN0YXRlIFwmIzM0O1NvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgwODEvYXc4ODA4M1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03MTctXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzE4OmNvbmZpZyBTTkRfU09DX0FXODczOTBcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03MTktXHR0cmlzdGF0ZSBcJiMzNDtTb2MgQXVkaW8gZm9yIGF3aW5pYyBhdzg3MzkwXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTcyOC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3Mjk6Y29uZmlnIFNORF9TT0NfQVc4ODM5OVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTczMC1cdHRyaXN0YXRlIFwmIzM0O1NvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgzOTlcJiMzNDtcbi0tXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzQxLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjc0Mjpjb25maWcgU05EX1NPQ19CRDI4NjIzXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzQzLVx0dHJpc3RhdGUgXCYjMzQ7Uk9ITSBCRDI4NjIzIENPREVDXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc0OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3NDk6Y29uZmlnIFNORF9TT0NfQlRfU0NPXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzUwLVx0dHJpc3RhdGUgXCYjMzQ7RHVtbXkgQlQgU0NPIGNvZGVjIGRyaXZlclwmIzM0O1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc1MS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3NTI6Y29uZmlnIFNORF9TT0NfQ0hWM19DT0RFQ1xuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc1My1cdHRyaXN0YXRlIFwmIzM0O0dvb2dsZSBDaGFtZWxlb24gdjMgY29kZWMgZHJpdmVyXCYjMzQ7XG4tLVxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc1OC1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3NTk6Y29uZmlnIFNORF9TT0NfQ1BDQVBcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjAtXHR0cmlzdGF0ZSBcJiMzNDtNb3Rvcm9sYSBDUENBUCBjb2RlY1wmIzM0O1xuLS1cbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjItXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzYzOmNvbmZpZyBTTkRfU09DX0NRMDA5M1ZDXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzY0LVx0dHJpc3RhdGVcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjUtXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzY2OmNvbmZpZyBTTkRfU09DX0NST1NfRUNfQ09ERUNcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjctXHR0cmlzdGF0ZSBcJiMzNDtjb2RlYyBkcml2ZXIgZm9yIENocm9tZU9TIEVDXCYjMzQ7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2MDAxCgkJCQkJCQlvdXRwdXQ6IDI4CgkJCQkJCQl0aG91Z2h0czogODYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRXhhbWluaW5nIHRoZSBLZXJuZWwgU291bmQgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzb3VuZCBjb25maWd1cmF0aW9uIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCAmIzM0O0hleSwgaWYgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgYXV0b21hdGljYWxseSBlbmFibGVzIGBTTkRfU09DYCB0aHJvdWdoIGl0cyBjb25maWd1cmF0aW9uLCB0aGVuIEkgZG9uJiMzOTt0IG5lZWQgdG8gd29ycnkgYWJvdXQgbWFudWFsbHkgc2V0dGluZyBgU05EX1NPQ2AuJiMzNDsgSXQganVzdCBtYWtlcyB0aGluZ3MgZWFzaWVyLCByaWdodD8KClRoZW4gSSByZW1lbWJlcmVkIHRoYXQgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgaXMgZm91bmQgc3BlY2lmaWNhbGx5IGluIGBzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ2AuIFJpZ2h0LCB0aGF0JiMzOTtzIHdoZXJlIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBMb29uZ3NvbiBzb3VuZCBzdXBwb3J0IHJlc2lkZXMuIE5vdywgbGV0JiMzOTtzIGp1c3QgY29uZmlybSBteSBpbml0aWFsIHVuZGVyc3RhbmRpbmcgYnkgY2hlY2tpbmcgaWYgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgZG9lcywgaW4gZmFjdCwgaGF2ZSBgU05EX1NPQ2AgYXMgYSBkZXBlbmRlbmN5LiBJdCYjMzk7cyBiZXN0IHRvIGJlIGNvbXBsZXRlbHkgY2xlYXIgb24gdGhlc2UgY29uZmlndXJhdGlvbnMuIEkgYW0gcHJldHR5IHN1cmUgaXQgZG9lcywgaXQmIzM5O3MganVzdCBnb29kIHByYWN0aWNlIHRvIHZlcmlmeS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZz00PWNvbmZpZyBTTkRfU09DX0xPT05HU09OX0NBUkRcbi0tXG5zb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZy0xNS1cbnNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnOjE2OmNvbmZpZyBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcbnNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnLTE3LVx0dHJpc3RhdGUgXCYjMzQ7TG9vbmdzb24gSTJTLVBDSSBEZXZpY2UgRHJpdmVyXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI2NDQ2CgkJCQkJCQlvdXRwdXQ6IDM2CgkJCQkJCQl0aG91Z2h0czogMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGxldCYjMzk7cyBkaXZlIGludG8gaXQuCgoqKlJlZm9jdXNpbmcgb24gdGhlIEtjb25maWcgRmlsZSoqCgpBbHJpZ2h0LCB0aW1lIHRvIHJldmlzaXQgYHNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnYC4gSSYjMzk7dmUgYmVlbiB3b3JraW5nIG9uIHRoaXMgYXVkaW8gc3Vic3lzdGVtIGludGVncmF0aW9uIGFuZCB0aGVyZSYjMzk7cyBzb21ldGhpbmcgbmFnZ2luZyBhdCBtZS4gSSYjMzk7dmUgcHJvYmFibHkgZ2xhbmNlZCBhdCB0aGlzIGZpbGUgYSBkb3plbiB0aW1lcyBhbHJlYWR5LCBidXQgZXhwZXJpZW5jZSB0ZWxscyBtZSBpdCYjMzk7cyBhbHdheXMgd29ydGggYW5vdGhlciBjYXJlZnVsIGxvb2suIEtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCBlc3BlY2lhbGx5IHRob3NlIGRlZmluaW5nIHRoZSBidWlsZCBvcHRpb25zIGFuZCBkZXBlbmRlbmNpZXMgb2YgYSBjb21wbGV4IHN1YnN5c3RlbSwgYXJlIG5vdG9yaW91cyBmb3IgaGlkaW5nIHN1YnRsZSBkZXRhaWxzLiBTb21ldGhpbmcgaW4gdGhlcmUgbWlnaHQgaG9sZCB0aGUga2V5IHRvIHJlc29sdmluZyB0aGUgY3VycmVudCBpc3N1ZSBvciB1bmNvdmVyIGFuIHVuZm9yZXNlZW4gb3Bwb3J0dW5pdHkgZm9yIGltcHJvdmVtZW50LiBMZXQmIzM5O3Mgc2VlIGlmIGFub3RoZXIgcGFzcyByZXZlYWxzIGFueXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxuICAgMjpcdG1lbnUgXCYjMzQ7TG9vbmdzb25cJiMzNDtcbiAgIDM6XHRcbiAgIDQ6XHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9DQVJEXG4gICA1Olx0XHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBTb3VuZCBDYXJkIERyaXZlclwmIzM0O1xuICAgNjpcdFx0ZGVwZW5kcyBvbiBMT09OR0FSQ0ggfHwgQ09NUElMRV9URVNUXG4gICA3Olx0XHRzZWxlY3QgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJIGlmIFBDSVxuICAgODpcdFx0c2VsZWN0IFNORF9TT0NfTE9PTkdTT05fSTJTX1BMQVRGT1JNIGlmIE9GXG4gICA5Olx0XHRoZWxwXG4gIDEwOlx0XHQgIFNheSBZIG9yIE0gaWYgeW91IHdhbnQgdG8gYWRkIHN1cHBvcnQgZm9yIFNvQyBhdWRpbyB1c2luZ1xuICAxMTpcdFx0ICBsb29uZ3NvbiBJMlMgY29udHJvbGxlci5cbiAgMTI6XHRcbiAgMTM6XHRcdCAgVGhlIGRyaXZlciBhZGQgc3VwcG9ydCBmb3IgQUxTQSBTb0MgQXVkaW8gc3VwcG9ydCB1c2luZ1xuICAxNDpcdFx0ICBsb29uZ3NvbiBJMlMgY29udHJvbGxlci5cbiAgMTU6XHRcbiAgMTY6XHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJXG4gIDE3Olx0XHR0cmlzdGF0ZSBcJiMzNDtMb29uZ3NvbiBJMlMtUENJIERldmljZSBEcml2ZXJcJiMzNDtcbiAgMTg6XHRcdGRlcGVuZHMgb24gTE9PTkdBUkNIIHx8IENPTVBJTEVfVEVTVFxuICAxOTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgMjA6XHRcdHNlbGVjdCBSRUdNQVBfTU1JT1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjkzOQoJCQkJCQkJb3V0cHV0OiAyNAoJCQkJCQkJdGhvdWdodHM6IDI4OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgU291bmQgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgbW9kdWxlIGFuZCBpdCBkb2VzbiYjMzk7dCAqZGlyZWN0bHkqIHJlbHkgb24gYFNORF9TT0NgLCB3aGljaCBpcyBnb29kLiBIb3dldmVyLCBpdCYjMzk7cyBsb2NhdGVkIHdpdGhpbiB0aGUgYHNvdW5kL3NvYy9gIGRpcmVjdG9yeSwgYW5kIHRoYXQgZGlyZWN0b3J5IGlzIG9ubHkgaW5jb3Jwb3JhdGVkIGlmIGBTTkRfU09DYCBpcyBlbmFibGVkIGluIHRoZSBjb25maWd1cmF0aW9uLiBUaGF0IG1ha2VzIHRoZSBkZWNpc2lvbiBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkIOKAkyB3ZSBuZWVkIHRvIGVuYWJsZSBgU05EX1NPQ2AgYXMgYSBwcmVyZXF1aXNpdGUsIGV2ZW4gdGhvdWdoIGl0JiMzOTtzIG5vdCBhIGhhcmQgZGVwZW5kZW5jeS4KCkFscmlnaHQsIGxldCYjMzk7cyBsaXN0IG91dCB3aGF0IHdlIGhhdmUgdG8gZGVhbCB3aXRoIGluIHRlcm1zIG9mIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMuIFJpZ2h0IG5vdywgSSYjMzk7bSB0cmFja2luZzoKCiogICBgUENJYAoqICAgYFNORGAKKiAgIGBTTkRfUENJYAoqICAgYFNORF9IREFfSU5URUxgCiogICBgU05EX0FEMTg4OWAKKiAgIGBTTkRfQVRJSVhQYAoqICAgYFNORF9BVElJWFBfTU9ERU1gCiogICBgU05EX0FVODgxMGAKKiAgIGBTTkRfQVU4ODIwYAoqICAgYFNORF9BVTg4MzBgCiogICBgU05EX0FXMmAKKiAgIGBTTkRfQlQ4N1hgCiogICBgU05EX0NTNDI4MWAKKiAgIGBTTkRfQ1M1NTMwYAoqICAgYFNORF9MT0xBYAoqICAgYFNORF9IRFNQTWAKKiAgIGBTTkRfU09DYAoqICAgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAKKiAgIGBDT01QSUxFX1RFU1RgCgpIb2xkIG9uIGEgc2Vjb25kLi4uIG15IHNwaWRleS1zZW5zZSBpcyB0aW5nbGluZy4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayBzb21ldGhpbmcuIEkgdGhvdWdodCBgU05EX0hEQV9JTlRFTGAgd2FzIGluIGBzb3VuZC9oZGEvY29udHJvbGxlcnMvS2NvbmZpZ2AuIEFuZCwgaWYgSSYjMzk7bSByZW1lbWJlcmluZyBjb3JyZWN0bHksIHRoYXQmIzM5O3MgcG90ZW50aWFsbHkgdGllZCB0byBgU05EX1BDSWAuIFNvLCBpcyBgU05EX0hEQV9JTlRFTGAgcHVsbGVkIGluIGF1dG9tYXRpY2FsbHkgaWYgYFNORF9QQ0lgIGlzIGFjdGl2ZT8gTGV0JiMzOTtzIHF1aWNrbHkgcGVlayBhdCBgc291bmQvcGNpL0tjb25maWdgIHRvIGNvbmZpcm0gdGhlIGNvbnRyb2wgZmxvdy4gR290dGEgbWFrZSBzdXJlIHdlJiMzOTtyZSBub3QgZHVwbGljYXRpbmcgb3IgbWlzc2luZyBhbnl0aGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c291cmNlIFwmIzM0O3NvdW5kL2hkYS9LY29uZmlnXCYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL0tjb25maWc9NTg9c291cmNlIFwmIzM0O3NvdW5kL3BjaS9LY29uZmlnXCYjMzQ7XG5zb3VuZC9LY29uZmlnLTU5LVxuc291bmQvS2NvbmZpZzo2MDpzb3VyY2UgXCYjMzQ7c291bmQvaGRhL0tjb25maWdcJiMzNDtcbnNvdW5kL0tjb25maWctNjEtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI3Nzk2CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjoKCioqSW52ZXN0aWdhdGluZyB0aGUgSERBIEtjb25maWcgUmVsYXRpb25zaGlwKioKCkFscmlnaHQsIHNvIHRoZSBgc291bmQvaGRhL0tjb25maWdgIGZpbGUgZ2V0cyBpdHMgY29uZmlndXJhdGlvbiBkaXJlY3RpdmVzIGRpcmVjdGx5IGZyb20gYHNvdW5kL0tjb25maWdgLiBUaGlzIGlzIGEgcHJldHR5IHN0YW5kYXJkIHNldHVwLCBhbmQgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhlIHNwZWNpZmljcyBvZiBob3cgdGhlIGRlcGVuZGVuY2llcyBhbmQgb3B0aW9ucyBhcmUgc3RydWN0dXJlZC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGRpdmUgcmlnaHQgaW50byBgc291bmQvaGRhL0tjb25maWdgIGFuZCBzZWUgd2hhdCYjMzk7cyBiZWluZyBkZWZpbmVkIHRoZXJlLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGF1ZGlvIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyBtdWNoIGN1c3RvbWl6YXRpb24gaXMgb2ZmZXJlZCBhdCB0aGlzIGxldmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL2hkYS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0bWVudSBcJiMzNDtIRC1BdWRpb1wmIzM0O1xuICAgMzpcdFxuICAgNDpcdHNvdXJjZSBcJiMzNDtzb3VuZC9oZGEvY29tbW9uL0tjb25maWdcJiMzNDtcbiAgIDU6XHRzb3VyY2UgXCYjMzQ7c291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWdcJiMzNDtcbiAgIDY6XHRzb3VyY2UgXCYjMzQ7c291bmQvaGRhL2NvZGVjcy9LY29uZmlnXCYjMzQ7XG4gICA3Olx0c291cmNlIFwmIzM0O3NvdW5kL2hkYS9jb3JlL0tjb25maWdcJiMzNDtcbiAgIDg6XHRcbiAgIDk6XHRlbmRtZW51XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI4MTE1CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZToKCioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyBhbmQgS2NvbmZpZyBIaWVyYXJjaHkqKgoKQWxyaWdodCwgc28gdGhlIGZpcnN0IHRoaW5nIEkmIzM5O20gbm90aW5nIGlzIHRoZSByZWxhdGlvbnNoaXAgYmV0d2VlbiBgU05EX0hEQV9JTlRFTGAgYW5kIGBTTkRgLiBJdCYjMzk7cyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpZiBnZW5lcmFsIHNvdW5kIHN1cHBvcnQgKGBTTkRgKSBpcyBlbmFibGVkLCB0aGVuIHdlIGNhbiBsaWtlbHkgYWxzbyBlbmFibGUgSW50ZWwgSGlnaCBEZWZpbml0aW9uIEF1ZGlvIChgU05EX0hEQV9JTlRFTGApLiBTdGFuZGFyZCBkZXBlbmRlbmN5LgoKTm93LCBJIG5lZWQgdG8gcmV2aXNpdCBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYC4gSSYjMzk7bSBnb2luZyB0byBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSByZWxldmFudCBLY29uZmlnIGZpbGUsIGBzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ2AsIGlzIHByb3Blcmx5IHNvdXJjZWQgZnJvbSwgb3IgaW5jbHVkZWQgYnksIHRoZSBtYWluIFNvdW5kIFN1YnN5c3RlbSBLY29uZmlnIGZpbGUsIGBzb3VuZC9zb2MvS2NvbmZpZ2AuIFRoaXMgaXMgY3J1Y2lhbCB0byBlbnN1cmUgdGhhdCB0aGUgTG9vbmdzb24gSTJTIFBDSSBkcml2ZXIgZ2V0cyBjb3JyZWN0bHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBjb25maWd1cmF0aW9uIHByb2Nlc3MuIEdvdHRhIG1ha2Ugc3VyZSBpdCYjMzk7cyBsaW5rZWQgdXAgcmlnaHQsIG90aGVyd2lzZSBpdCYjMzk7bGwgbmV2ZXIgZXZlbiBiZSBjb25zaWRlcmVkIGR1cmluZyBidWlsZCB0aW1lLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtzb3VyY2UgXCYjMzQ7c291bmQvc29jL2xvb25nc29uL0tjb25maWdcJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c291bmQvc29jL0tjb25maWc9MTE3PXNvdXJjZSBcJiMzNDtzb3VuZC9zb2Mva2lya3dvb2QvS2NvbmZpZ1wmIzM0O1xuc291bmQvc29jL0tjb25maWc6MTE4OnNvdXJjZSBcJiMzNDtzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ1wmIzM0O1xuc291bmQvc29jL0tjb25maWctMTE5LXNvdXJjZSBcJiMzNDtzb3VuZC9zb2MvaW1nL0tjb25maWdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg1MTEKCQkJCQkJCW91dHB1dDogMjIKCQkJCQkJCXRob3VnaHRzOiAyMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIEF1ZGlvIENvbmZpZ3VyYXRpb24gT3B0aW9ucyoqCgpPa2F5LCB5ZXMsIEkmIzM5O20gd2l0aCB0aGlzLiBMZXQmIzM5O3Mgc2VlLiBUaGUgY3VycmVudCBhdWRpbyBjb25maWd1cmF0aW9ucyB3ZSYjMzk7cmUgbG9va2luZyBhdCBzZWVtIHRvIGludm9sdmUgUENJLWJhc2VkIHNvdW5kIGNhcmRzLCBhIGJ1bmNoIG9mIHNvdW5kIGRyaXZlcnMuIFdlJiMzOTtyZSBvYnZpb3VzbHkgY292ZXJpbmcgYSBicm9hZCByYW5nZSBvZiBoYXJkd2FyZS4gSSBzZWUgYFNORGAsIGBTTkRfUENJYCwgYW5kIHRoZW4gc3BlY2lmaWMgZHJpdmVycyBsaWtlIGBTTkRfSERBX0lOVEVMYCwgYFNORF9BRDE4ODlgLCBhbmQgb3RoZXJzIHdoaWNoIHJlcHJlc2VudCBsZWdhY3kgYW5kIGN1cnJlbnQgYXVkaW8gaW50ZXJmYWNlcy4gSXQgc2VlbXMgd2UmIzM5O3JlIGluY2x1ZGluZyBhIHN5c3RlbS1vbi1hLWNoaXAgKFNvQykgY29uZmlndXJhdGlvbiBvcHRpb246IGBTTkRfU09DYCBhbmQgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgYXMgd2VsbC4gQWxzbyBgQ09NUElMRV9URVNUYC4gQSBnb29kIHJhbmdlLgoKSG9sZCBvbi4uLiBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgYFNORF9DUzU1MzBgLi4uIHJpZ2h0LCBpdCAqZGVwZW5kcyogb24gYElTQV9ETUFfQVBJYC4gSXQmIzM5O3MgZXNzZW50aWFsIHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGlzIGNvcnJlY3RseSBoYW5kbGVkIGluIG91ciBidWlsZCBwcm9jZXNzLCBzbyBsZXQmIzM5O3MgY2hlY2sgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBTTkRfQ1M1NTMwJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnPTI3OT1jb25maWcgU05EX0NTNDZYWF9ORVdfRFNQXG4tLVxuc291bmQvcGNpL0tjb25maWctMjg3LVxuc291bmQvcGNpL0tjb25maWc6Mjg4OmNvbmZpZyBTTkRfQ1M1NTMwXG5zb3VuZC9wY2kvS2NvbmZpZy0yODktXHR0cmlzdGF0ZSBcJiMzNDtDUzU1MzAgQXVkaW9cJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjkwNjUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB3aGF0JiMzOTtzIGdvaW5nIHRocm91Z2ggbXkgbWluZCBhcyBJIGFwcHJvYWNoIHRoaXM6CgoqKkFuYWx5emluZyB0aGUgS2NvbmZpZyBmb3IgU05EX0NTNTUzMCoqCgpBbHJpZ2h0LCB0aW1lIHRvIGRpZyBpbnRvIHRoZSBgc291bmQvcGNpL0tjb25maWdgIGZpbGUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgYFNORF9DUzU1MzBgIHNvdW5kIGRyaXZlciBpcyBjb25maWd1cmVkIHdpdGhpbiB0aGUga2VybmVsIGJ1aWxkIHN5c3RlbS4gVGhpcyBpcyB3aGVyZSB0aGUgZGVjaXNpb25zIGFyZSBtYWRlOiBpcyBpdCBlbmFibGVkIGJ5IGRlZmF1bHQ/IElzIGl0IGEgbW9kdWxlLCBvciBidWlsdC1pbj8gV2hhdCBkZXBlbmRlbmNpZXMgZG9lcyBpdCBoYXZlIG9uIG90aGVyIG9wdGlvbnMgb3IgaGFyZHdhcmU/IEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGBjb25maWcgU05EX0NTNTUzMGAsIGl0cyBgZGVwZW5kcyBvbmAsIGBzZWxlY3RgLCBgaGVscGAgdGV4dCwgYW5kIHBvdGVudGlhbCBkZWZhdWx0cy4gSSYjMzk7bSBleHBlY3RpbmcgdGhpcyB3aWxsIHVzZSB0aGUgc3RhbmRhcmQgS2NvbmZpZyBmb3JtYXQsIHNvIGl0IHNob3VsZCBiZSByZWxhdGl2ZWx5IHN0cmFpZ2h0Zm9yd2FyZCB0byBwYXJzZS4gVGhlIGdvYWwgaXMgdG8gZ2V0IGEgY2xlYXIgcGljdHVyZSBvZiBob3cgdGhpcyBzcGVjaWZpYyBhdWRpbyBkcml2ZXIgZml0cyBpbnRvIHRoZSBsYXJnZXIgc291bmQgc3Vic3lzdGVtIGNvbmZpZ3VyYXRpb24gbGFuZHNjYXBlLCBhbmQgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueXRoaW5nIHVudXN1YWwgb3Igd29ydGggbm90aW5nIGluIGl0cyBzZXR1cC4gSSYjMzk7bSByZWFkeSB0byBkaXZlIGluIGFuZCBxdWlja2x5IHNwb3QgYW55IGdvdGNoYXMgb3IgYXJlYXMgb2YgcG90ZW50aWFsIGNvbmZsaWN0IQoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjg4LAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyODg6XHRjb25maWcgU05EX0NTNTUzMFxuIDI4OTpcdFx0dHJpc3RhdGUgXCYjMzQ7Q1M1NTMwIEF1ZGlvXCYjMzQ7XG4gMjkwOlx0XHRkZXBlbmRzIG9uIElTQV9ETUFfQVBJIFx1MDAyNlx1MDAyNiAoWDg2XzMyIHx8IENPTVBJTEVfVEVTVClcbiAyOTE6XHRcdGRlcGVuZHMgb24gIU02OEtcbiAyOTI6XHRcdHNlbGVjdCBTTkRfU0IxNl9EU1BcbiAyOTM6XHRcdGhlbHBcbiAyOTQ6XHRcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIGF1ZGlvIG9uIEN5cml4L05hdFNlbWkgQ1M1NTMwIGNoaXBzLlxuIDI5NTpcdFxuIDI5NjpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gMjk3Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1jczU1MzAuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDI5NTQzCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTEyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkNvbmRpdGlvbmFsIENvbXBpbGF0aW9uIENvbnNpZGVyYXRpb25zKioKCk9rYXksIHNvIHRoaXMgc2VjdGlvbiBvZiBjb2RlJiMzOTtzIGJlaGF2aW9yIGhpbmdlcyBvbiBgSVNBX0RNQV9BUElgIGJlaW5nIGRlZmluZWQsIGFuZCBzcGVjaWZpY2FsbHksIHdoZXRoZXIgd2UmIzM5O3JlIG9uIGFuIFg4Nl8zMiBhcmNoaXRlY3R1cmUgb3IgY29tcGlsaW5nIGEgdGVzdCBidWlsZC4gSSYjMzk7bSBzZWVpbmcgdGhhdCB3ZSAqZG8qIGhhdmUgYENPTVBJTEVfVEVTVGAgZW5hYmxlZCwgd2hpY2ggc3VnZ2VzdHMgdGhhdCB0aGUgY29uZGl0aW9ucyBzaG91bGQgYmUgbWV0LCBidXQgSSYjMzk7bSBzdGlsbCBhIGJpdCBoZXNpdGFudCwgYmVjYXVzZSBgSVNBX0RNQV9BUElgIG1pZ2h0IG5vdCBiZSB1bml2ZXJzYWxseSBzdXBwb3J0ZWQgYWNyb3NzIGFsbCBvdXIgdGFyZ2V0IGFyY2hpdGVjdHVyZXMuIEhvd2V2ZXIsIGNvbnNpZGVyaW5nIHRoYXQgd2Ugb25seSBuZWVkIHRvIGVuYWJsZSAqZW5vdWdoKiBvZiB0aGVzZSB0byB0cmlnZ2VyIHRoZSByZWxldmFudCBjb2RlIHBhdGhzLCB0aGF0IHNob3VsZG4mIzM5O3QgYmUgYSBodWdlIHByb2JsZW0uIFdlIGRvbiYjMzk7dCBuZWVkICpldmVyeSogcG9zc2libGUgZmVhdHVyZSBlbmFibGVkLCBqdXN0IGVub3VnaCB0byBnZXQgdGhlIHRlc3QgdG8gcnVuLiBgU05EX0hEQV9JTlRFTGAgaXMgYSBjb21tb24gYW5kIGVhc2lseSB0cmlnZ2VyZWQgY29uZGl0aW9uLiBMZXQmIzM5O3Mgc3RhcnQgd2l0aCBjaGVja2luZyBpZiBgU05EX0FEMTg4OWAgaXMgYSBzdWl0YWJsZSBvcHRpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDEzOlx0Y29uZmlnIFNORF9BRDE4ODlcbiAgMTQ6XHRcdHRyaXN0YXRlIFwmIzM0O0FuYWxvZyBEZXZpY2VzIEFEMTg4OVwmIzM0O1xuICAxNTpcdFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXG4gIDE2Olx0XHRoZWxwXG4gIDE3Olx0XHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgaW50ZWdyYXRlZCBBQzk3IHNvdW5kXG4gIDE4Olx0XHQgIGRldmljZSBmb3VuZCBpbiBwYXJ0aWN1bGFyIG9uIHRoZSBIZXdsZXR0LVBhY2thcmQgW0JDSl0teHh4MFxuICAxOTpcdFx0ICBjbGFzcyBQQS1SSVNDIHdvcmtzdGF0aW9ucywgdXNpbmcgdGhlIEFEMTgxOSBjb2RlYy5cbiAgMjA6XHRcbiAgMjE6XHRcdCAgVG8gY29tcGlsZSB0aGlzIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gIDIyOlx0XHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1hZDE4ODkuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMDYxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTcKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqQW5hbHl6aW5nIHRoZSBEZXBlbmRlbmN5IExhbmRzY2FwZSoqCgpBbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHBvc2l0aXZlIOKAkyB3ZSYjMzk7cmUgb3BlcmF0aW5nIHdpdGggbm8gaW1tZWRpYXRlbHkgYXBwYXJlbnQgc3BlY2lhbCBkZXBlbmRlbmNpZXMuIFRoYXQmIzM5O3MgYSBnb29kIHN0YXJ0aW5nIHBvaW50LCBhbHdheXMgYSByZWxpZWYgaW4gY29tcGxleCBwcm9qZWN0cy4gTm93LCBsZXQmIzM5O3MgZHJpbGwgZG93biB0byB0aGUgc3BlY2lmaWNzLiBNeSBuZXh0IHN0ZXAsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBpbW1lZGlhdGVseSBjaGVjayB0aGUgaW1wbGljYXRpb25zIGFuZCBzdGF0dXMgb2YgYFNORF9BVElJWFBgLiBUaGlzIGxpa2VseSByZXByZXNlbnRzIGEgY3JpdGljYWwgYXVkaW8gb3IgaGFyZHdhcmUgaW50ZXJmYWNlIGNvbXBvbmVudCwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLiBXZSBuZWVkIHRvIGFzY2VydGFpbiBpdHMgY3VycmVudCBjb25maWd1cmF0aW9uLCBwb3RlbnRpYWwgdmVyc2lvbiBjb25mbGljdHMsIGFuZCBhbnkga25vd24gaXNzdWVzIG9yIGxpbWl0YXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHN5c3RlbSBwZXJmb3JtYW5jZSBvciBjb21wYXRpYmlsaXR5IGRvd24gdGhlIGxpbmUuIEl0JiMzOTtzIHRoZSBseW5jaHBpbiBJIG5lZWQgdG8gaW52ZXN0aWdhdGUgZmlyc3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjE5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA3NywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDc3Olx0Y29uZmlnIFNORF9BVElJWFBcbiAgNzg6XHRcdHRyaXN0YXRlIFwmIzM0O0FUSSBJWFAgQUM5NyBDb250cm9sbGVyXCYjMzQ7XG4gIDc5Olx0XHRzZWxlY3QgU05EX0FDOTdfQ09ERUNcbiAgODA6XHRcdGhlbHBcbiAgODE6XHRcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBpbnRlZ3JhdGVkIEFDOTcgc291bmRcbiAgODI6XHRcdCAgZGV2aWNlIG9uIG1vdGhlcmJvYXJkcyB3aXRoIEFUSSBjaGlwc2V0cyAoQVRJIElYUCAxNTAvMjAwLzI1MC9cbiAgODM6XHRcdCAgMzAwLzQwMCkuXG4gIDg0Olx0XG4gIDg1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAgODY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWF0aWl4cC5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA0NDIKCQkJCQkJCW91dHB1dDogMzQKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duOgoKKipJbml0aWFsIEFzc2Vzc21lbnQ6IE1pbmltYWwgRXh0ZXJuYWwgRW50YW5nbGVtZW50cyoqCgpBbHJpZ2h0LCBzdHJhaWdodCB0byB0aGUgcG9pbnQuIFRoZSBmaXJzdCB0aGluZyBJJiMzOTttIHJlZ2lzdGVyaW5nIGlzIHRoZSBhYnNlbmNlIG9mIGFueSBzcGVjaWZpZWQgZGVwZW5kZW5jaWVzLiBUaGF0JiMzOTtzIGdvb2QsIGEgY2xlYW4gc2xhdGUgb2Z0ZW4gc2lnbmFscyBlaXRoZXIgc2ltcGxpY2l0eSBvciBhIGZvY3VzZWQgc2NvcGUuIEl0IHN1Z2dlc3RzIHdoYXRldmVyIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggKnNob3VsZG4mIzM5O3QqIHJlcXVpcmUgcHVsbGluZyBpbiBhIHdob2xlIGhvc3Qgb2YgZXh0ZXJuYWwgbGlicmFyaWVzIG9yIGZyYW1ld29ya3Mg4oCTIGF0IGxlYXN0LCBub3QgaW5pdGlhbGx5LiBBbHdheXMgYSBwbHVzIHRvIGtlZXAgdGhpbmdzIGxpZ2h0d2VpZ2h0IGFuZCBtYW5hZ2VhYmxlLgoKTm93LCB3aGVyZSBkbyB3ZSBnbyBmcm9tIGhlcmU/IExldCYjMzk7cyBkcmlsbCBkb3duIGFuZCBzZWUgYWJvdXQgYFNORF9BVTg4MTBgLiBUaGlzIGlzIHdoZXJlIHRoZSB3b3JrIGJlZ2lucyB0byB0YWtlIHNoYXBlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogOTgsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA5ODpcdGNvbmZpZyBTTkRfQVU4ODEwXG4gIDk5Olx0XHR0cmlzdGF0ZSBcJiMzNDtBdXJlYWwgQWR2YW50YWdlXCYjMzQ7XG4gMTAwOlx0XHRkZXBlbmRzIG9uIEhBU19JT1BPUlRcbiAxMDE6XHRcdHNlbGVjdCBTTkRfTVBVNDAxX1VBUlRcbiAxMDI6XHRcdHNlbGVjdCBTTkRfQUM5N19DT0RFQ1xuIDEwMzpcdFx0aGVscFxuIDEwNDpcdFx0ICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgQXVyZWFsIEFkdmFudGFnZSBzb3VuZGNhcmRzLlxuIDEwNTpcdFxuIDEwNjpcdFx0ICBTdXBwb3J0ZWQgZmVhdHVyZXM6IEhhcmR3YXJlIE1peGVyLCBTUkMsIEVRIGFuZCBTUERJRiBvdXRwdXQuXG4gMTA3Olx0XHQgIDNEIHN1cHBvcnQgY29kZSBpcyBpbiBwbGFjZSwgYnV0IG5vdCB5ZXQgdXNlYWJsZS4gRm9yIG1vcmUgaW5mbyxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzA4MjYKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAyMQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGxpa2UgeW91OgoKKipJbnZlc3RpZ2F0aW5nIGEgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KioKCk9rYXksIHNvIHRoZSBzaXR1YXRpb24gaGluZ2VzIG9uIGBIQVNfSU9QT1JUYC4gVGhhdCYjMzk7cyB0aGUga2V5IHZhcmlhYmxlIGhlcmUuIFdlJiMzOTt2ZSBnb3QgdG8gZGV0ZXJtaW5lIGlmIGl0JiMzOTtzIGRlZmluZWQgYW5kIHdoYXQgaXRzIGltcGxpY2F0aW9ucyBhcmUuIE15IGltbWVkaWF0ZSBjb25jZXJuIGlzIGhvdyB0aGlzIGluZmx1ZW5jZXMgdGhlIG92ZXJhbGwgc3lzdGVtIGJlaGF2aW9yLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc2NvcGUuIEkmIzM5O20gdGhpbmtpbmcsICYjMzQ7TGV0JiMzOTtzIGFzc3VtZSBpdCYjMzk7cyBzZXQuJiMzNDsgV2hhdCBoYXBwZW5zIGRvd25zdHJlYW0/CgpOb3csIGxldCYjMzk7cyBwaXZvdCBhbmQgY2hlY2sgYFNORF9BVzJgLiBUaGF0JiMzOTtzIGFub3RoZXIgY3JpdGljYWwgcGllY2Ugb2YgdGhlIHB1enpsZS4gSSBuZWVkIHRvIGtub3cgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBJL08gcG9ydCBjaGVjay4gQXJlIHdlIHRhbGtpbmcgYWJvdXQgYW4gYXVkaW8gY29tcG9uZW50IHRoYXQgZGVwZW5kcyBvbiBgSEFTX0lPUE9SVGA/IE9yIGlzIGBTTkRfQVcyYCBzb21laG93IGluZGVwZW5kZW50LCBidXQgYWZmZWN0ZWQgYnkgdGhlIG92ZXJhbGwgaGFyZHdhcmUgY29uZmlndXJhdGlvbj8gVGhpcyBjb25uZWN0aW9uIGRlbWFuZHMgaW1tZWRpYXRlIHNjcnV0aW55LiBVbmRlcnN0YW5kaW5nIHRoZWlyIGludGVycmVsYXRpb25zaGlwIGlzIGNydWNpYWwgZm9yIGEgY29tcGxldGUgcGljdHVyZS4gQXJlIHdlIHRyb3VibGVzaG9vdGluZyBhIGRlcGVuZGVuY3ksIG9yIGp1c3QgZXhwbG9yaW5nIHRoZSBmZWF0dXJlIHNldD8gSSBuZWVkIHRvIGNsYXJpZnkgdGhlIHN5c3RlbSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3NvdW5kL3BjaS9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMTQyLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAxNDI6XHRjb25maWcgU05EX0FXMlxuIDE0MzpcdFx0dHJpc3RhdGUgXCYjMzQ7RW1hZ2ljIEF1ZGlvd2VyayAyXCYjMzQ7XG4gMTQ0Olx0XHRoZWxwXG4gMTQ1Olx0XHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBFbWFnaWMgQXVkaW93ZXJrIDIgc291bmRjYXJkcy5cbiAxNDY6XHRcbiAxNDc6XHRcdCAgU3VwcG9ydGVkIGZlYXR1cmVzOiBBbmFsb2cgYW5kIFNQRElGIG91dHB1dC4gQW5hbG9nIG9yIFNQRElGIGlucHV0LlxuIDE0ODpcdFx0ICBOb3RlOiBTd2l0Y2ggYmV0d2VlbiBhbmFsb2cgYW5kIGRpZ2l0YWwgaW5wdXQgZG9lcyBub3QgYWx3YXlzIHdvcmsuXG4gMTQ5Olx0XHQgIEl0IGNhbiBwcm9kdWNlIGNvbnRpbnVvdXMgbm9pc2UuIFRoZSB3b3JrYXJvdW5kIGlzIHRvIHN3aXRjaCBhZ2FpblxuIDE1MDpcdFx0ICAoYW5kIGFnYWluKSBiZXR3ZWVuIGRpZ2l0YWwgYW5kIGFuYWxvZyBpbnB1dCB1bnRpbCBpdCB3b3Jrcy5cbiAxNTE6XHRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzEyNzkKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqUXVpY2sgSW5pdGlhbCBBc3Nlc3NtZW50KioKCkFscmlnaHQsIGxldCYjMzk7cyBzZWUuIExvb2tzIGxpa2UgdGhlcmUgYXJlbiYjMzk7dCBhbnkgaW1tZWRpYXRlLCBnbGFyaW5nIHNwZWNpYWwgZGVwZW5kZW5jaWVzIHRvIGNvbnNpZGVyLiBBbHdheXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IOKAkyBsZXNzIHRvIHdyYW5nbGUgbGF0ZXIuIE5vdywgbGV0JiMzOTtzIGp1bXAgcmlnaHQgaW50byB0aGUgbWVhdCBvZiBpdCBhbmQgdGFrZSBhIGNsb3NlciBsb29rIGF0IGBTTkRfQlQ4N1hgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW50YWwgbWFwIG9mIHRoYXQgbW9kdWxlIGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlbiYjMzk7dCBhbnkgZ290Y2hhcyBsdXJraW5nIHdpdGhpbi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MTk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9wY2kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDE3NywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMTc3Olx0Y29uZmlnIFNORF9CVDg3WFxuIDE3ODpcdFx0dHJpc3RhdGUgXCYjMzQ7QnQ4N3ggQXVkaW8gQ2FwdHVyZVwmIzM0O1xuIDE3OTpcdFx0c2VsZWN0IFNORF9QQ01cbiAxODA6XHRcdGhlbHBcbiAxODE6XHRcdCAgSWYgeW91IHdhbnQgdG8gcmVjb3JkIGF1ZGlvIGZyb20gVFYgY2FyZHMgYmFzZWQgb25cbiAxODI6XHRcdCAgQnJvb2t0cmVlIEJ0ODc4L0J0ODc5IGNoaXBzLCBzYXkgWSBoZXJlIGFuZCByZWFkXG4gMTgzOlx0XHQgIFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zb3VuZC9jYXJkcy9idDg3eC5yc3RcdTAwM2UuXG4gMTg0Olx0XG4gMTg1Olx0XHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcbiAxODY6XHRcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWJ0ODd4LlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToxOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMTYyNwoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBkZWxpdmVyZWQgYXMgaWYgdGhleSB3ZXJlIG15IG93bjoKCioqSW5pdGlhbCBBc3Nlc3NtZW50OiBNaW5pbWFsIENvbXBsZXhpdHkqKgoKQWxyaWdodCwgbm90aGluZyBpbW1lZGlhdGVseSBqdW1wcyBvdXQgYXQgbWUgYXMgcHJvYmxlbWF0aWMgaW4gdGhlIGRlcGVuZGVuY3kgZGVwYXJ0bWVudC4gU291bmRzIGxpa2Ugd2UmIzM5O3JlIGtlZXBpbmcgdGhpbmdzIHN0cmVhbWxpbmVkLCB3aGljaCBJIGFwcHJlY2lhdGUuIEFsd2F5cyBnb29kIHRvIGF2b2lkIHVubmVjZXNzYXJ5IGJsb2F0LCBlc3BlY2lhbGx5IGVhcmx5IG9uLiBJdCBzaW1wbGlmaWVzIHRyb3VibGVzaG9vdGluZyBhbmQgZGVwbG95bWVudC4KCk5vdywgbGV0JiMzOTtzIGRpdmUgaW50byB0aGUgY29yZSBvZiB0aGUgbWF0dGVyLiBJJiMzOTttIGdvaW5nIHRvIHN0YXJ0IGJ5IHB1bGxpbmcgdXAgZXZlcnl0aGluZyBJIGtub3cgYWJvdXQgYFNORF9DUzQyODFgLiBUaGlzIGlzIHdoZXJlIHRoZSBydWJiZXIgbWVldHMgdGhlIHJvYWQuIEkmIzM5O2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGxhc3QgdGltZSBJIHRvdWNoZWQgdGhhdCBvbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyNTQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDI1NDpcdGNvbmZpZyBTTkRfQ1M0MjgxXG4gMjU1Olx0XHR0cmlzdGF0ZSBcJiMzNDtDaXJydXMgTG9naWMgKFNvdW5kIEZ1c2lvbikgQ1M0MjgxXCYjMzQ7XG4gMjU2Olx0XHRkZXBlbmRzIG9uIEhBU19JT1BPUlRcbiAyNTc6XHRcdHNlbGVjdCBTTkRfT1BMM19MSUJcbiAyNTg6XHRcdHNlbGVjdCBTTkRfUkFXTUlESVxuIDI1OTpcdFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXG4gMjYwOlx0XHRoZWxwXG4gMjYxOlx0XHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBDaXJydXMgTG9naWMgQ1M0MjgxIGNoaXBzLlxuIDI2MjpcdFxuIDI2MzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxOTk1CgkJCQkJCQlvdXRwdXQ6IDM1CgkJCQkJCQl0aG91Z2h0czogMjEKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGhvdWdodCBwcm9jZXNzLCBzdW1tYXJpemVkIGFzIHlvdSByZXF1ZXN0ZWQ6CgoqKkFzc2Vzc2luZyB0aGUgTGFuZHNjYXBlKioKCk9rYXksIHNvIHRoZSBkaXJlY3Rpb24gdGhpcyBhbmFseXNpcyB0YWtlcyBkZXBlbmRzIGhlYXZpbHkgb24gd2hldGhlciBgSEFTX0lPUE9SVGAgaXMgZGVmaW5lZC4gVGhhdCYjMzk7cyB0aGUgY3JpdGljYWwgZmlyc3QgaHVyZGxlLiBCZWZvcmUgSSBjYW4gcHJvY2VlZCB3aXRoIGFueSBhc3N1bXB0aW9ucywgSSBuZWVkIHRvIGtub3cgaWYgdGhhdCBjb25kaXRpb24gaG9sZHMgdHJ1ZS4gSSBjYW4mIzM5O3QgbW92ZSBmb3J3YXJkIGJsaW5kbHkuCgpBZnRlciB0aGF0JiMzOTtzIGNsYXJpZmllZCwgdGhlIG5leHQgbG9naWNhbCBzdGVwIHRvIGludmVzdGlnYXRlIGlzIHRoZSBzdGF0ZSBvZiBgU05EX0xPTEFgLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgc3RhdHVzLCBhbmQgaG93IGl0IGludGVycmVsYXRlcyB3aXRoIGBIQVNfSU9QT1JUYC4gTXkgYXBwcm9hY2ggd2lsbCBzaGlmdCBhY2NvcmRpbmdseS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42Mi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtzb3VuZC9wY2kvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDcwNywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNzA3Olx0Y29uZmlnIFNORF9MT0xBXG4gNzA4Olx0XHR0cmlzdGF0ZSBcJiMzNDtEaWdpZ3JhbSBMb2xhXCYjMzQ7XG4gNzA5Olx0XHRzZWxlY3QgU05EX1BDTVxuIDcxMDpcdFx0aGVscFxuIDcxMTpcdFx0ICBTYXkgWSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIERpZ2lncmFtIExvbGEgYm9hcmRzLlxuIDcxMjpcdFxuIDcxMzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4gNzE0Olx0XHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1sb2xhLlxuIDcxNTpcdFxuIDcxNjpcdGNvbmZpZyBTTkRfTFg2NDY0RVNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzIzMjUKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqUXVpY2sgQXVkaXQ6IERlcGVuZGVuY2llcyAmYW1wOyBNb2R1bGUgQ2hlY2sqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGtlZXAgdGhpcyBjbGVhbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCAmIzM0O05vIHNwZWNpYWwgZGVwZW5kZW5jaWVzLiYjMzQ7IEFsd2F5cyBnb29kIHRvIHN0YXJ0IHdpdGggYSBtaW5pbWFsIGJhc2VsaW5lLiBUaGUgbGVzcyBleHRyYSBiYWdnYWdlLCB0aGUgYmV0dGVyIGZvciBwb3J0YWJpbGl0eSBhbmQgcG90ZW50aWFsIGNvbmZsaWN0cyBkb3duIHRoZSBsaW5lLgoKTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBzcGVjaWZpY3MuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSB0aGlua2luZyBvZiB0aGUgcmlnaHQgdGhpbmcuIE9rYXksICYjMzQ7TGV0JiMzOTtzIGNoZWNrIGBTTkRfSERTUE1gLiYjMzQ7IFRoYXQmIzM5O3MgdGhlIGtleSBtb2R1bGUuIE5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoYXQuIEkgd2FudCB0byBjb25maXJtIHdoYXQgSSYjMzk7bSBleHBlY3RpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7c291bmQvcGNpL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiA2MjQsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7IDYyNDpcdGNvbmZpZyBTTkRfSERTUE1cbiA2MjU6XHRcdHRyaXN0YXRlIFwmIzM0O1JNRSBIYW1tZXJmYWxsIERTUCBNQURJL1JheURBVC9BSU9cJiMzNDtcbiA2MjY6XHRcdHNlbGVjdCBTTkRfSFdERVBcbiA2Mjc6XHRcdHNlbGVjdCBTTkRfUkFXTUlESVxuIDYyODpcdFx0c2VsZWN0IFNORF9QQ01cbiA2Mjk6XHRcdGhlbHBcbiA2MzA6XHRcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIFJNRSBIYW1tZXJmYWxsIERTUCBNQURJLFxuIDYzMTpcdFx0ICBSYXlEQVQgYW5kIEFJTyBzb3VuZGNhcmRzLlxuIDYzMjpcdFxuIDYzMzpcdFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMyNjg1CgkJCQkJCQlvdXRwdXQ6IDI2MAoJCQkJCQkJdGhvdWdodHM6IDMwNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgQ2hhbmdlKioKCk9rYXksIGxldCYjMzk7cyBicmVhayB0aGlzIGRvd24uIE5vIHVudXN1YWwgZGVwZW5kZW5jaWVzIHRvIHdvcnJ5IGFib3V0LCB0aGF0JiMzOTtzIGdvb2QuIE15IGZvY3VzIGlzIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWZmZWN0ZWQ6IGBQQ0lgLCBgU05EYCwgYFNORF9QQ0lgLCBhbmQgYWxsIHRoZSBzb3VuZC1yZWxhdGVkIGRyaXZlcnMgSSBzZWUgbGlzdGVkIChgU05EX0hEQV9JTlRFTGAsIGBTTkRfQUQxODg5YCwgZXRjLiwgcmlnaHQgZG93biB0byBgQ09NUElMRV9URVNUYCkuIEl0JiMzOTtzIGEgcHJldHR5IGNvbXByZWhlbnNpdmUgbGlzdCwgaW5kaWNhdGluZyB0aGlzIGhhcyBhIHBvdGVudGlhbGx5IGJyb2FkIGltcGFjdC4KClRoZSBrZXkgY2hhbmdlLCB0aGUgdGhpbmcgSSBuZWVkIHRvIGludmVzdGlnYXRlIGluIGRldGFpbCwgaXMgdGhpcyBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgZnVuY3Rpb24uIEl0IHNlZW1zIHRoaXMgaXMgYSBuZXcgY29yZSBQQ0kgZnVuY3Rpb24gdGhhdCBpbnRlZ3JhdGVzIGBwY2lfaW9yZW1hcF9iYXJgIGFuZCBgcGNpX3JlcXVlc3RfcmVnaW9uYCB3aXRoIGRldmljZSByZXNvdXJjZXMgKGRldnJlcyksIGFuZCBlc3NlbnRpYWxseSBjaGFuZ2VzIGhvdyB0aGUgZHJpdmVyIHByb2JlcyBhbmQgZG9lcyB0aGUgaW9yZW1hcCBvZiB0aGUgcmVnaW9uLCB1c2luZyBtZW1vcnkgbWFwcGVkIHJlZ2lvbi4gVGhlIGNyaXRpY2FsIHBvaW50IGlzIHRoYXQgdGhpcyB3aWxsIGJlIHVzZWQgZm9yIHNvdW5kIGRyaXZlcnMsIGZvcmNpbmcgbWVtb3J5IG1hcHBpbmcgb3ZlciBJTyBtYXBwaW5nIGluIG1hbnkgY2FzZXMuIFNvIGl0JiMzOTtzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFBDSSBjb3JlIGFuZCBpbiBkcml2ZXIgcHJvYmluZyBsb2dpYyDigJMgYW5kIGl0JiMzOTtzIHJlYWNoYWJsZSB0aHJvdWdoIFBDSSBkZXZpY2UgcHJvYmUsIHdoaWNoIG1ha2VzIGl0IGZ1enphYmxlLCB3aGljaCBpcyBhIGdvb2QgdGhpbmcuCgpJJiMzOTttIG1ha2luZyBzdXJlIHRoYXQgdGhlIG5ldyBmdW5jdGlvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgaXMgZXhwb3J0ZWQgYmVjYXVzZSBpdCBpcyBhIGtleSBmdW5jdGlvbi4gSSBjYW4gY29uZmlybTogYEVYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7YCDigJMgcGVyZmVjdC4gQW5kIGl0JiMzOTtzIG5vdCBzdGF0aWMgb3IgaW5saW5lZCwgc28gaXQmIzM5O3MgZGlyZWN0bHkgYWNjZXNzaWJsZS4KCkkmIzM5O2xsIHByb2NlZWQgdXNpbmcgdGhlIHNldC1yZXN1bHRzIHRvb2wgZm9yIHRoaXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtQQ0kmIzM0OywKICAgICYjMzQ7U05EJiMzNDssCiAgICAmIzM0O1NORF9QQ0kmIzM0OywKICAgICYjMzQ7U05EX0hEQV9JTlRFTCYjMzQ7LAogICAgJiMzNDtTTkRfQUQxODg5JiMzNDssCiAgICAmIzM0O1NORF9BVElJWFAmIzM0OywKICAgICYjMzQ7U05EX0FUSUlYUF9NT0RFTSYjMzQ7LAogICAgJiMzNDtTTkRfQVcyJiMzNDssCiAgICAmIzM0O1NORF9CVDg3WCYjMzQ7LAogICAgJiMzNDtTTkRfTE9MQSYjMzQ7LAogICAgJiMzNDtTTkRfSERTUE0mIzM0OywKICAgICYjMzQ7U05EX1NPQyYjMzQ7LAogICAgJiMzNDtTTkRfU09DX0xPT05HU09OX0kyU19QQ0kmIzM0OywKICAgICYjMzQ7Q09NUElMRV9URVNUJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cGNpbV9pb3JlbWFwX3JlZ2lvbiYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCB3aGljaCB3cmFwcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZyZXMuIEl0IHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIHRoZW0gdG8gdXNlIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgdXNpbmcgSU8gbWFwcGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgUENJIGFuZCBkcml2ZXIgcHJvYmluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iZSBhbmQgc2hvdWxkIGJlIGZ1enplZC4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UENJJiMzNDssCiAgICAmIzM0O1NORCYjMzQ7LAogICAgJiMzNDtTTkRfUENJJiMzNDssCiAgICAmIzM0O1NORF9IREFfSU5URUwmIzM0OywKICAgICYjMzQ7U05EX0FEMTg4OSYjMzQ7LAogICAgJiMzNDtTTkRfQVRJSVhQJiMzNDssCiAgICAmIzM0O1NORF9BVElJWFBfTU9ERU0mIzM0OywKICAgICYjMzQ7U05EX0FXMiYjMzQ7LAogICAgJiMzNDtTTkRfQlQ4N1gmIzM0OywKICAgICYjMzQ7U05EX0xPTEEmIzM0OywKICAgICYjMzQ7U05EX0hEU1BNJiMzNDssCiAgICAmIzM0O1NORF9TT0MmIzM0OywKICAgICYjMzQ7U05EX1NPQ19MT09OR1NPTl9JMlNfUENJJiMzNDssCiAgICAmIzM0O0NPTVBJTEVfVEVTVCYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O3BjaW1faW9yZW1hcF9yZWdpb24mIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIFBDSSBmdW5jdGlvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgd2hpY2ggd3JhcHMgYHBjaV9pb3JlbWFwX2JhcmAgYW5kIGBwY2lfcmVxdWVzdF9yZWdpb25gIHdpdGggZGV2cmVzLiBJdCByZXBsYWNlcyBgcGNpbV9pb21hcF9yZWdpb25gIGluIHNldmVyYWwgc291bmQgZHJpdmVycywgZm9yY2luZyB0aGVtIHRvIHVzZSBtZW1vcnkgbWFwcGluZyBpbnN0ZWFkIG9mIHBvdGVudGlhbGx5IHVzaW5nIElPIG1hcHBpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFBDSSBhbmQgZHJpdmVyIHByb2JpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NjcvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzEyIDE1OjIwPC90ZD4KCQkJPHRkPmFjdGlvbjwvdGQ+CgkJCTx0ZD5JZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MjA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnkKZXJyb3IgZGV0ZWN0b3JzIChLQVNBTiBhbmQgS01TQU4pLiBZb3VyIGpvYiBpcyB0byByZXZpZXcgdGhlIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQKZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKQpmdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy4KCkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOgotIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGUKICBhIGNvbXByZWhlbnNpdmUgc3VpdGUgb2YgZGVidWdnaW5nIHRvb2xzIGFuZCBzYW5pdGl6ZXJzLCBpbmNsdWRpbmcgS0FTQU4KICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQCiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy4KLSBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKSBkZXRlY3RzIHJlYWRzIG9mIFVOSU5JVElBTElaRUQgbWVtb3J5IChzdGFjaywgaGVhcCwKICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuCgpSdWxlOiBUSEVSRSBJUyBOTyBTRU5TRSBJTiBSVU5OSU5HIEEgS01TQU4gU0VTU0lPTiBJRiBBIEJVRyBDQU4gQkUgQ0FVR0hUIEJZIEtBU0FOLApMT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLgpBIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZCnNldCBOZWVkc0tNU0FOPXRydWUgaWYgdGhlIGNvZGUgY2hhbmdlcyBpbnRyb2R1Y2Ugb3IgZXhwb3NlIFVOSU5JVElBTElaRUQgTUVNT1JZIHJpc2tzCnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uCgpMb29rIGhvbGlzdGljYWxseSBhdCB0aGUgcGF0Y2ggc2VyaWVzIGFuZCBzdXJyb3VuZGluZyBjb2RlLiBFdmVuIGlmIG5vIGRpcmVjdAp1bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZiwKYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzCnRoYXQgY2hhbmdlIGhvdyB0aGUgcmVzdCBvZiB0aGUgY29kZSBvcGVyYXRlcyBvbiBleGlzdGluZyBidWZmZXJzIChlLmcuIGFsbG93aW5nCnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbApmbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsCmNhbGxlZCBmdW5jdGlvbnMsIGFuZCBjYWxsZXJzLgoKU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOgoxLiBLZXJuZWwgc3RydWN0dXJlcyBzZW50IHRvIHVzZXIgc3BhY2UgKHZpYSBjb3B5X3RvX3VzZXIsIHB1dF91c2VyLCBuZXRsaW5rIHNrYgogICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkcwogICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLgoyLiBDb25kaXRpb25hbCBsb2dpYyBvciBicmFuY2hpbmcgdGhhdCBkZXBlbmRzIG9uIHBvdGVudGlhbGx5IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzCiAgIG9yIHN0cnVjdCBmaWVsZHMuCjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHMKICAgY291bGQgYmUgcmVhZCBsYXRlciBpbiByZWFjaGFibGUgY29kZSBwYXRocy4KNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3MKICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLgoKU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6Ci0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXIKICBkZXJlZmVyZW5jZXMsIGxvY2tpbmcgZGVhZGxvY2tzLCBvciB1c2UtYWZ0ZXItZnJlZSBidWdzICh0aGVzZSBhcmUgYWxyZWFkeSBjYXVnaHQKICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuCi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWQKICBvciBpbml0aWFsaXplZCAoZS5nLiB1c2luZyA9IHswfSwgbWVtc2V0LCBremFsbG9jKSBiZWZvcmUgYmVpbmcgcmVhZCBvciBjb3BpZWQuCi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLgoKVXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSBpZiBuZWNlc3NhcnksIHRoZW4gcHJvdmlkZQpkZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgZmE2ZjRjNjAyNGE5OWVhNjcyMzE3NmZkMjU0YzUyOTdmNjk1NWVkMApBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDEyIDE1OjE1OjI4IDIwMjYgJiM0MzswMDAwCgogICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3CgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wY2kvZGV2cmVzLmMgYi9kcml2ZXJzL3BjaS9kZXZyZXMuYwppbmRleCBmMDc1ZTc4ODFjM2E2Li5mYWE2NzhmZjViNTZmIDEwMDY0NAotLS0gYS9kcml2ZXJzL3BjaS9kZXZyZXMuYwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL3BjaS9kZXZyZXMuYwpAQCAtNjM5LDYgJiM0Mzs2MzksNTUgQEAgdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwKIH0KIEVYUE9SVF9TWU1CT0wocGNpbV9pb21hcF9yZWdpb24pOwogCiYjNDM7LyoqCiYjNDM7ICogcGNpbV9pb3JlbWFwX3JlZ2lvbiAtIFJlcXVlc3QgYW5kIGlvcmVtYXAgYSBQQ0kgQkFSCiYjNDM7ICogQHBkZXY6IFBDSSBkZXZpY2UgdG8gbWFwIElPIHJlc291cmNlcyBmb3IKJiM0MzsgKiBAYmFyOiBJbmRleCBvZiBhIEJBUiB0byBtYXAKJiM0MzsgKiBAbmFtZTogTmFtZSBvZiB0aGUgZHJpdmVyIHJlcXVlc3RpbmcgdGhlIHJlc291cmNlCiYjNDM7ICoKJiM0MzsgKiBSZXR1cm5zOiBfX2lvbWVtIHBvaW50ZXIgb24gc3VjY2VzcywgYW4gSU9NRU1fRVJSX1BUUiBvbiBmYWlsdXJlLgomIzQzOyAqCiYjNDM7ICogTWFwcGluZyBhbmQgcmVnaW9uIHdpbGwgZ2V0IGF1dG9tYXRpY2FsbHkgcmVsZWFzZWQgb24gZHJpdmVyIGRldGFjaC4gSWYKJiM0MzsgKiBkZXNpcmVkLCByZWxlYXNlIG1hbnVhbGx5IG9ubHkgd2l0aCBwY2ltX2lvdW5tYXBfcmVnaW9uKCkuCiYjNDM7ICovCiYjNDM7dm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLAomIzQzOwkJCQkgIGNvbnN0IGNoYXIgKm5hbWUpCiYjNDM7ewomIzQzOwlpbnQgcmV0OwomIzQzOwlzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcmVzOwomIzQzOwomIzQzOwlpZiAoIXBjaV9iYXJfaW5kZXhfaXNfdmFsaWQoYmFyKSkKJiM0MzsJCXJldHVybiBJT01FTV9FUlJfUFRSKC1FSU5WQUwpOwomIzQzOwomIzQzOwlyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpOwomIzQzOwlpZiAoIXJlcykKJiM0MzsJCXJldHVybiBJT01FTV9FUlJfUFRSKC1FTk9NRU0pOwomIzQzOwomIzQzOwlyZXMtJmd0O3R5cGUgPSBQQ0lNX0FERFJfREVWUkVTX1RZUEVfUkVHSU9OX01BUFBJTkc7CiYjNDM7CXJlcy0mZ3Q7YmFyID0gYmFyOwomIzQzOwomIzQzOwlyZXQgPSBwY2lfcmVxdWVzdF9yZWdpb24ocGRldiwgYmFyLCBuYW1lKTsKJiM0MzsJaWYgKHJldCAhPSAwKQomIzQzOwkJZ290byBlcnJfcmVnaW9uOwomIzQzOwomIzQzOwlyZXMtJmd0O2Jhc2VhZGRyID0gcGNpX2lvcmVtYXBfYmFyKHBkZXYsIGJhcik7CiYjNDM7CWlmICghcmVzLSZndDtiYXNlYWRkcikgewomIzQzOwkJcmV0ID0gLUVJTlZBTDsKJiM0MzsJCWdvdG8gZXJyX2lvbWFwOwomIzQzOwl9CiYjNDM7CiYjNDM7CWRldnJlc19hZGQoJmFtcDtwZGV2LSZndDtkZXYsIHJlcyk7CiYjNDM7CXJldHVybiByZXMtJmd0O2Jhc2VhZGRyOwomIzQzOwomIzQzO2Vycl9pb21hcDoKJiM0MzsJcGNpX3JlbGVhc2VfcmVnaW9uKHBkZXYsIGJhcik7CiYjNDM7ZXJyX3JlZ2lvbjoKJiM0MzsJcGNpbV9hZGRyX2RldnJlc19mcmVlKHJlcyk7CiYjNDM7CiYjNDM7CXJldHVybiBJT01FTV9FUlJfUFRSKHJldCk7CiYjNDM7fQomIzQzO0VYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7CiYjNDM7CiAvKioKICAqIHBjaW1faW91bm1hcF9yZWdpb24gLSBVbm1hcCBhbmQgcmVsZWFzZSBhIFBDSSBCQVIKICAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG9wZXJhdGUgb24KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGNpLmggYi9pbmNsdWRlL2xpbnV4L3BjaS5oCmluZGV4IDY0YjMwOGI2ZTYxYzEuLmU3YTJlY2UxMzhlYTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvcGNpLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9wY2kuaApAQCAtMjUwNiw2ICYjNDM7MjUwNiw4IEBAIGludCBwY2ltX3JlcXVlc3RfYWxsX3JlZ2lvbnMoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IGNoYXIgKm5hbWUpOwogdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLCB1bnNpZ25lZCBsb25nIG1heGxlbik7CiB2b2lkIF9faW9tZW0gKnBjaW1faW9tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLAogCQkJCWNvbnN0IGNoYXIgKm5hbWUpOwomIzQzO3ZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwKJiM0MzsJCQkJICBjb25zdCBjaGFyICpuYW1lKTsKIHZvaWQgcGNpbV9pb3VubWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcik7CiB2b2lkIHBjaW1faW91bm1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdm9pZCBfX2lvbWVtICphZGRyKTsKIHZvaWQgX19pb21lbSAqIGNvbnN0ICpwY2ltX2lvbWFwX3RhYmxlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTsKZGlmZiAtLWdpdCBhL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jIGIvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmMKaW5kZXggMjhjNTVjNWEyZDJlZi4uNWRhMGFjMWVkNDA3MSAxMDA2NDQKLS0tIGEvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmMKQEAgLTE5MjYsNyAmIzQzOzE5MjYsNyBAQCBzdGF0aWMgaW50IGF6eF9maXJzdF9pbml0KHN0cnVjdCBhenggKmNoaXApCiAJaWYgKGNoaXAtJmd0O2RyaXZlcl90eXBlID09IEFaWF9EUklWRVJfWkhBT1hJTkhETUkpCiAJCWJ1cy0mZ3Q7cG9sbGluZ19tb2RlID0gMTsKIAotCWJ1cy0mZ3Q7cmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtJQ0ggSEQgYXVkaW8mIzM0Oyk7CiYjNDM7CWJ1cy0mZ3Q7cmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0lDSCBIRCBhdWRpbyYjMzQ7KTsKIAlpZiAoSVNfRVJSKGJ1cy0mZ3Q7cmVtYXBfYWRkcikpCiAJCXJldHVybiBQVFJfRVJSKGJ1cy0mZ3Q7cmVtYXBfYWRkcik7CiAKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hZDE4ODkuYyBiL3NvdW5kL3BjaS9hZDE4ODkuYwppbmRleCBmNGVjNDA0YzBkMTVhLi5hMjU3MGExNDhmNjA2IDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYWQxODg5LmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2FkMTg4OS5jCkBAIC04MDQsNyAmIzQzOzgwNCw3IEBAIHNuZF9hZDE4ODlfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSkKIAljaGlwLSZndDtpcnEgPSAtMTsKIAogCS8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqLwotCWNoaXAtJmd0O2lvYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgY2FyZC0mZ3Q7ZHJpdmVyKTsKJiM0MzsJY2hpcC0mZ3Q7aW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtJmd0O2RyaXZlcik7CiAJaWYgKElTX0VSUihjaGlwLSZndDtpb2Jhc2UpKQogCQlyZXR1cm4gUFRSX0VSUihjaGlwLSZndDtpb2Jhc2UpOwogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXRpaXhwLmMgYi9zb3VuZC9wY2kvYXRpaXhwLmMKaW5kZXggYjczODI5NWI0MWU1ZC4uYjlmY2Q5MTNmYmM2ZiAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2F0aWl4cC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9hdGlpeHAuYwpAQCAtMTUzMSw3ICYjNDM7MTUzMSw3IEBAIHN0YXRpYyBpbnQgc25kX2F0aWl4cF9pbml0KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSkKIAljaGlwLSZndDtjYXJkID0gY2FyZDsKIAljaGlwLSZndDtwY2kgPSBwY2k7CiAJY2hpcC0mZ3Q7aXJxID0gLTE7Ci0JY2hpcC0mZ3Q7cmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtBVEkgSVhQIEFDOTcmIzM0Oyk7CiYjNDM7CWNoaXAtJmd0O3JlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtBVEkgSVhQIEFDOTcmIzM0Oyk7CiAJaWYgKElTX0VSUihjaGlwLSZndDtyZW1hcF9hZGRyKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2hpcC0mZ3Q7cmVtYXBfYWRkcik7CiAJY2hpcC0mZ3Q7YWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jIGIvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jCmluZGV4IDhhYWViMTk3Y2U0NTguLmY2NTQ4MDQ4Mzk5NjYgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMKQEAgLTExNjMsNyAmIzQzOzExNjMsNyBAQCBzdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpCiAJY2hpcC0mZ3Q7Y2FyZCA9IGNhcmQ7CiAJY2hpcC0mZ3Q7cGNpID0gcGNpOwogCWNoaXAtJmd0O2lycSA9IC0xOwotCWNoaXAtJmd0O3JlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QVRJIElYUCBNQzk3JiMzNDspOwomIzQzOwljaGlwLSZndDtyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7QVRJIElYUCBNQzk3JiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7cmVtYXBfYWRkcikpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O3JlbWFwX2FkZHIpOwogCWNoaXAtJmd0O2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmMgYi9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jCmluZGV4IGJiMDI5NDU3OTNmMGMuLmE3NzNlOGE1NmMwYzUgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYwpAQCAtMTYwLDcgJiM0MzsxNjAsNyBAQCBzbmRfdm9ydGV4X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpCiAJLy8gKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uCiAJLy8gR2V0IE1NSU8gYXJlYQogCS8vCi0JY2hpcC0mZ3Q7bW1pbyA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpOwomIzQzOwljaGlwLSZndDttbWlvID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIEtCVUlMRF9NT0ROQU1FKTsKIAlpZiAoSVNfRVJSKGNoaXAtJmd0O21taW8pKQogCQlyZXR1cm4gUFRSX0VSUihjaGlwLSZndDttbWlvKTsKIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jIGIvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jCmluZGV4IDYwYTg3MzIyZWFlNDkuLjI3ZmQ0NWQ2NDcwMTkgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMKQEAgLTIyNCw3ICYjNDM7MjI0LDcgQEAgc3RhdGljIGludCBzbmRfYXcyX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsCiAJY2hpcC0mZ3Q7aXJxID0gLTE7CiAKIAkvKiAoMSkgUENJIHJlc291cmNlIGFsbG9jYXRpb24gKi8KLQljaGlwLSZndDtpb2Jhc2VfdmlydCA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtBdWRpb3dlcmsyJiMzNDspOwomIzQzOwljaGlwLSZndDtpb2Jhc2VfdmlydCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0F1ZGlvd2VyazImIzM0Oyk7CiAJaWYgKElTX0VSUihjaGlwLSZndDtpb2Jhc2VfdmlydCkpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O2lvYmFzZV92aXJ0KTsKIAljaGlwLSZndDtpb2Jhc2VfcGh5cyA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2J0ODd4LmMgYi9zb3VuZC9wY2kvYnQ4N3guYwppbmRleCAzODNkZWYxZjJhZjc0Li41NWY2Yjc5YmQ5ZWFjIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvYnQ4N3guYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvYnQ4N3guYwpAQCAtNjkwLDcgJiM0Mzs2OTAsNyBAQCBzdGF0aWMgaW50IHNuZF9idDg3eF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLAogCWNoaXAtJmd0O2lycSA9IC0xOwogCXNwaW5fbG9ja19pbml0KCZhbXA7Y2hpcC0mZ3Q7cmVnX2xvY2spOwogCi0JY2hpcC0mZ3Q7bW1pbyA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtCdDg3eCBhdWRpbyYjMzQ7KTsKJiM0MzsJY2hpcC0mZ3Q7bW1pbyA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0J0ODd4IGF1ZGlvJiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7bW1pbykpCiAJCXJldHVybiBQVFJfRVJSKGNoaXAtJmd0O21taW8pOwogCmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3M0MjgxLmMgYi9zb3VuZC9wY2kvY3M0MjgxLmMKaW5kZXggZjUxZjRiYjYzNzY2NC4uZjAwMGRjYTk0ZTRmZCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL2NzNDI4MS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3BjaS9jczQyODEuYwpAQCAtMTI5OCwxMiAmIzQzOzEyOTgsMTIgQEAgc3RhdGljIGludCBzbmRfY3M0MjgxX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsCiAJfQogCWNoaXAtJmd0O2R1YWxfY29kZWMgPSBkdWFsX2NvZGVjOwogCi0JY2hpcC0mZ3Q7YmEwID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0NTNDI4MSYjMzQ7KTsKJiM0MzsJY2hpcC0mZ3Q7YmEwID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsICYjMzQ7Q1M0MjgxJiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7YmEwKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2hpcC0mZ3Q7YmEwKTsKIAljaGlwLSZndDtiYTBfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApOwogCi0JY2hpcC0mZ3Q7YmExID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAxLCAmIzM0O0NTNDI4MSYjMzQ7KTsKJiM0MzsJY2hpcC0mZ3Q7YmExID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDEsICYjMzQ7Q1M0MjgxJiMzNDspOwogCWlmIChJU19FUlIoY2hpcC0mZ3Q7YmExKSkKIAkJcmV0dXJuIFBUUl9FUlIoY2hpcC0mZ3Q7YmExKTsKIAljaGlwLSZndDtiYTFfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDEpOwpkaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNTUzMC5jIGIvc291bmQvcGNpL2NzNTUzMC5jCmluZGV4IDI5MmI2NWFhNzU4YTkuLjdjZjc0ZTc3OTcwY2QgMTAwNjQ0Ci0tLSBhL3NvdW5kL3BjaS9jczU1MzAuYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvY3M1NTMwLmMKQEAgLTkxLDcgJiM0Mzs5MSw3IEBAIHN0YXRpYyBpbnQgc25kX2NzNTUzMF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLAogCWNoaXAtJmd0O2NhcmQgPSBjYXJkOwogCWNoaXAtJmd0O3BjaSA9IHBjaTsKIAotCW1lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtDUzU1MzAmIzM0Oyk7CiYjNDM7CW1lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O0NTNTUzMCYjMzQ7KTsKIAlpZiAoSVNfRVJSKG1lbSkpCiAJCXJldHVybiBQVFJfRVJSKG1lbSk7CiAJY2hpcC0mZ3Q7cGNpX2Jhc2UgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuYyBiL3NvdW5kL3BjaS9sb2xhL2xvbGEuYwppbmRleCAzNGEzYmExN2RlYjRiLi5lYzI5MzhjNGI1MzIzIDEwMDY0NAotLS0gYS9zb3VuZC9wY2kvbG9sYS9sb2xhLmMKJiM0MzsmIzQzOyYjNDM7IGIvc291bmQvcGNpL2xvbGEvbG9sYS5jCkBAIC01NzksMTQgJiM0Mzs1NzksMTQgQEAgc3RhdGljIGludCBsb2xhX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2ksIGludCBkZXYpCiAJCWNoaXAtJmd0O3NhbXBsZV9yYXRlX21pbiA9IDE2MDAwOwogCX0KIAotCWlvbWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBEUlZOQU1FKTsKJiM0MzsJaW9tZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgRFJWTkFNRSk7CiAJaWYgKElTX0VSUihpb21lbSkpCiAJCXJldHVybiBQVFJfRVJSKGlvbWVtKTsKIAogCWNoaXAtJmd0O2JhclswXS5yZW1hcF9hZGRyID0gaW9tZW07CiAJY2hpcC0mZ3Q7YmFyWzBdLmFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTsKIAotCWlvbWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTsKJiM0MzsJaW9tZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMiwgRFJWTkFNRSk7CiAJaWYgKElTX0VSUihpb21lbSkpCiAJCXJldHVybiBQVFJfRVJSKGlvbWVtKTsKIApkaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmMKaW5kZXggZDhiYmVkYmM4ZmY2OC4uOWIzNzU4Y2ExZDAwNCAxMDA2NDQKLS0tIGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYwomIzQzOyYjNDM7JiM0MzsgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jCkBAIC02NTExLDcgJiM0Mzs2NTExLDcgQEAgc3RhdGljIGludCBzbmRfaGRzcG1fY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwKIAogCXBjaV9zZXRfbWFzdGVyKGhkc3BtLSZndDtwY2kpOwogCi0JaGRzcG0tJmd0O2lvYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgJiMzNDtoZHNwbSYjMzQ7KTsKJiM0MzsJaGRzcG0tJmd0O2lvYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCAmIzM0O2hkc3BtJiMzNDspOwogCWlmIChJU19FUlIoaGRzcG0tJmd0O2lvYmFzZSkpCiAJCXJldHVybiBQVFJfRVJSKGhkc3BtLSZndDtpb2Jhc2UpOwogCmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jIGIvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYwppbmRleCBmNWI1NjA0NjU3MDZmLi4zMmZjMGY1NDQ5MjgyIDEwMDY0NAotLS0gYS9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmMKQEAgLTQxLDcgJiM0Mzs0MSw3IEBAIHN0YXRpYyBpbnQgbG9vbmdzb25faTJzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldiwKIAlpMnMtJmd0O2RldiA9IGRldjsKIAlwY2lfc2V0X2RydmRhdGEocGRldiwgaTJzKTsKIAotCWkycy0mZ3Q7cmVnX2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7CiYjNDM7CWkycy0mZ3Q7cmVnX2Jhc2UgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBkZXYsIDAsIERSSVZFUl9OQU1FKTsKIAlpZiAoSVNfRVJSKGkycy0mZ3Q7cmVnX2Jhc2UpKSB7CiAJCWRldl9lcnIoZGV2LCAmIzM0O2lvbWFwX3JlZ2lvbiBmYWlsZWRcbiYjMzQ7KTsKIAkJcmV0dXJuIFBUUl9FUlIoaTJzLSZndDtyZWdfYmFzZSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjY5LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2MTY5CgkJCQkJCQlvdXRwdXQ6IDIzCgkJCQkJCQl0aG91Z2h0czogMjAzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQgbWUgYnJlYWsgdGhpcyBkb3duLgoKKipBbmFseXppbmcgdGhlIFBDSSBNTUlPIENoYW5nZSoqCgpBbHJpZ2h0LCBzbyB0aGlzIHBhdGNoIGlzIGludHJvZHVjaW5nIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBpbiBgZHJpdmVycy9wY2kvZGV2cmVzLmNgLCB3aGljaCBpcyBhIG5ldyBmdW5jdGlvbiwgYW5kIGl0JiMzOTtzIGFsc28gcmVwbGFjaW5nIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCB0aGlzIG5ldyBvbmUgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLiBIb2xkIG9uIGEgc2Vjb25kLCBJIG5lZWQgdG8gdGhpbmsgdGhpcyB0aHJvdWdoLiBgcGNpbV9pb21hcF9yZWdpb25gIHVzZXMgYHBjaV9pb21hcGAsIGFuZCB0aGF0IGNhbiBoYW5kbGUgYm90aCBQcm9ncmFtbWVkIEkvTyAoUElPKSAqb3IqIE1lbW9yeSBNYXBwZWQgSS9PIChNTUlPKSwgcmlnaHQ/IEJ1dCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmA/IFRoYXTigJlzIHVzaW5nIGBwY2lfaW9yZW1hcF9iYXJgLCB3aGljaCBpcyAqc3RyaWN0bHkqIE1NSU8uIE9rYXksIHRoYXQmIzM5O3MgdGhlIGRpZmZlcmVuY2UsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGNoYW5nZSBpcyBzYWZlLgoKTGV0JiMzOTtzIHNlZeKApiBpcyB0aGVyZSBhIHJpc2sgb2YgaW50cm9kdWNpbmcgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmUgaGVyZT8gVGhlIGNvcmUgb2YgdGhpcyBpcyB0aGUgbmV3IGZ1bmN0aW9uLCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAsIGFuZCBpdCYjMzk7cyBhbGxvY2F0aW5nIGEgYHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzYCB1c2luZyBgcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KWAuIEhtbSwgdGhhdCBgcGNpbV9hZGRyX2RldnJlc19hbGxvY2AgaXMgaW50ZXJuYWwgdG8gYGRyaXZlcnMvcGNpL2RldnJlcy5jYCwgc28gSSBuZWVkIHRvIGNoZWNrIGl0cyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaG93IGl0JiMzOTtzIGluaXRpYWxpemVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtwY2ltX2FkZHJfZGV2cmVzX2FsbG9jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvcGNpL2RldnJlcy5jPTczPXN0YXRpYyB2b2lkIHBjaW1fYWRkcl9yZXNvdXJjZV9yZWxlYXNlKHN0cnVjdCBkZXZpY2UgKmRldiwgdm9pZCAqcmVzb3VyY2VfcmF3KVxuLS1cbmRyaXZlcnMvcGNpL2RldnJlcy5jLTkzLVxuZHJpdmVycy9wY2kvZGV2cmVzLmM6OTQ6c3RhdGljIHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzICpwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHN0cnVjdCBwY2lfZGV2ICpwZGV2KVxuZHJpdmVycy9wY2kvZGV2cmVzLmMtOTUte1xuLS1cbmRyaXZlcnMvcGNpL2RldnJlcy5jPTUzNT12b2lkIF9faW9tZW0gKnBjaW1faW9tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsIHVuc2lnbmVkIGxvbmcgbWF4bGVuKVxuLS1cbmRyaXZlcnMvcGNpL2RldnJlcy5jLTU0Mi1cbmRyaXZlcnMvcGNpL2RldnJlcy5jOjU0MzpcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG5kcml2ZXJzL3BjaS9kZXZyZXMuYy01NDQtXHRpZiAoIXJlcylcbi0tXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz02MDQ9dm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbi0tXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02MTItXG5kcml2ZXJzL3BjaS9kZXZyZXMuYzo2MTM6XHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjE0LVx0aWYgKCFyZXMpXG4tLVxuZHJpdmVycy9wY2kvZGV2cmVzLmM9NjUzPXZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbi0tXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02NjEtXG5kcml2ZXJzL3BjaS9kZXZyZXMuYzo2NjI6XHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjYzLVx0aWYgKCFyZXMpXG4tLVxuZHJpdmVycy9wY2kvZGV2cmVzLmM9NzcwPWludCBwY2ltX3JlcXVlc3RfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLCBjb25zdCBjaGFyICpuYW1lKVxuLS1cbmRyaXZlcnMvcGNpL2RldnJlcy5jLTc3Ny1cbmRyaXZlcnMvcGNpL2RldnJlcy5jOjc3ODpcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG5kcml2ZXJzL3BjaS9kZXZyZXMuYy03NzktXHRpZiAoIXJlcylcbi0tXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz04ODA9dm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JhbmdlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxuLS1cbmRyaXZlcnMvcGNpL2RldnJlcy5jLTg4OC1cbmRyaXZlcnMvcGNpL2RldnJlcy5jOjg4OTpcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG5kcml2ZXJzL3BjaS9kZXZyZXMuYy04OTAtXHRpZiAoIXJlcylcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MjA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzM3NQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd24gbWVudGFsIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIGBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jYCoqCgpSaWdodCwgbGV0JiMzOTtzIGdldCBpbnRvIHRoZSBuaXR0eS1ncml0dHkgb2YgYHBjaW1fYWRkcl9kZXZyZXNfYWxsb2NgLiBJIG5lZWQgdG8gcmVmcmVzaCBteSBtZW1vcnkgb24gdGhlIHNwZWNpZmljcyBvZiB0aGlzIGZ1bmN0aW9uLCBhcyBpdCYjMzk7cyBhIGNyaXRpY2FsIGNvbXBvbmVudCBpbiBob3cgd2UgaGFuZGxlIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uIHdpdGhpbiB0aGUgZGV2aWNlIHJlc291cmNlIGZyYW1ld29yay4gSSBrbm93IGl0JiMzOTtzIGEga2V5IHBhcnQgb2YgZW5zdXJpbmcgcHJvcGVyIGNsZWFudXAgYW5kIHByZXZlbnRpbmcgbWVtb3J5IGxlYWtzIHdpdGggUENJIGRldmljZXMuIExldCYjMzk7cyBzdGFydCB3aXRoIGEgZGVlcCBkaXZlIGludG8gdGhlIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIEkgd2FudCB0byBzZWUgaG93IGl0IGludGVncmF0ZXMgd2l0aCB0aGUgZGV2aWNlIHJlc291cmNlIG1hbmFnZW1lbnQgc3lzdGVtIGFuZCBmaWd1cmUgb3V0IGFueSBwb3RlbnRpYWwgZWRnZSBjYXNlcyB0aGF0IEkgbmVlZCB0byBiZSBhd2FyZSBvZiBpbiBteSBjdXJyZW50IHByb2plY3QuIFNwZWNpZmljYWxseSwgaG93IGRvZXMgaXQgaGFuZGxlIHBvdGVudGlhbCBjb25mbGljdHMgZHVyaW5nIGFsbG9jYXRpb24sIGhvdyBpdCBkZWFscyB3aXRoIGZhaWx1cmVzLCBhbmQgaG93IGl04oCZcyBhZmZlY3RlZCBieSB0aGUgZGlmZmVyZW50IHJlc291cmNlIHR5cGVzIChtZW1vcnksIEkvTywgZXRjLikuIFRoZSBnb2FsIGlzIHRvIGZ1bGx5IHVuZGVyc3RhbmQgdGhpcyBjb2RlIHBhdGggc28gSSBjYW4gaW50ZWdyYXRlIHRoaXMgZnVuY3Rpb24gcHJvcGVybHkgd2l0aCBtaW5pbWFsIHJpc2sgdG8gbXkgb3duIGRyaXZlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMTIgMTU6MjA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL3BjaS9kZXZyZXMuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDkwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgOTA6XHRcdFx0YnJlYWs7XG4gIDkxOlx0XHR9XG4gIDkyOlx0fVxuICA5MzpcdFxuICA5NDpcdHN0YXRpYyBzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcGNpbV9hZGRyX2RldnJlc19hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcbiAgOTU6XHR7XG4gIDk2Olx0XHRzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcmVzO1xuICA5NzpcdFxuICA5ODpcdFx0cmVzID0gZGV2cmVzX2FsbG9jX25vZGUocGNpbV9hZGRyX3Jlc291cmNlX3JlbGVhc2UsIHNpemVvZigqcmVzKSxcbiAgOTk6XHRcdFx0XHRcdEdGUF9LRVJORUwsIGRldl90b19ub2RlKFx1MDAyNnBkZXYtXHUwMDNlZGV2KSk7XG4gMTAwOlx0XHRpZiAocmVzKVxuIDEwMTpcdFx0XHRwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKHJlcyk7XG4gMTAyOlx0XHRyZXR1cm4gcmVzO1xuIDEwMzpcdH1cbiAxMDQ6XHRcbiAxMDU6XHQvKiBKdXN0IGZvciBjb25zaXN0ZW5jeSBhbmQgcmVhZGFiaWxpdHkuICovXG4gMTA2Olx0c3RhdGljIGlubGluZSB2b2lkIHBjaW1fYWRkcl9kZXZyZXNfZnJlZShzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcmVzKVxuIDEwNzpcdHtcbiAxMDg6XHRcdGRldnJlc19mcmVlKHJlcyk7XG4gMTA5Olx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjczLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA3OTQ1CgkJCQkJCQlvdXRwdXQ6IDE4NwoJCQkJCQkJdGhvdWdodHM6IDE4MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWZhY3RvcmluZyBQQ0kgSU8gTWFwcGluZzogQSBDbGVhbiBhbmQgU2FmZSBDaGFuZ2UqKgoKT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZyBvZiB0aGUgUENJIElPIG1hcHBpbmcgQVBJLiBFc3NlbnRpYWxseSwgd2UmIzM5O3JlIGludHJvZHVjaW5nIGEgbmV3IGZ1bmN0aW9uLCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAsIHdoaWNoIGlzIHZlcnkgbXVjaCBsaWtlIHRoZSBleGlzdGluZyBgcGNpbV9pb21hcF9yZWdpb25gLCBidXQgdGhpcyBvbmUmIzM5O3MgdXNpbmcgYHBjaV9pb3JlbWFwX2JhcmAgaW5zdGVhZCBvZiBgcGNpX2lvbWFwYCBpbnRlcm5hbGx5LiBJJiMzOTttIHNlZWluZyB0aGF0IGl0JiMzOTtzIGp1c3QgYSBkaXJlY3QgcmVwbGFjZW1lbnQgaW4gc29tZSBzb3VuZCBkcml2ZXJzLgoKTXkgaW1tZWRpYXRlIGNvbmNlcm4sIGFzIGFsd2F5cywgaXMgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYW55IHN1YnRsZSBtZW1vcnkgcmlza3MsIHBhcnRpY3VsYXJseSB1bmluaXRpYWxpemVkIG1lbW9yeSBleHBvc3VyZXMuIEJ1dCBhZnRlciByZXZpZXdpbmcgdGhlIGNvZGUsIEkmIzM5O20gY29uZmlkZW50IHRoYXQmIzM5O3Mgbm90IHRoZSBjYXNlLiBUaGUgc3RydWN0dXJlIGlzIGNsZWFyZWQgdXNpbmcgYHBjaW1fYWRkcl9kZXZyZXNfY2xlYXJgIGJlZm9yZSB1c2UsIGFuZCB0aGUgcmV0dXJuZWQgcG9pbnRlciBpcyBleHBsaWNpdGx5IGFuIElPIG1lbW9yeSBwb2ludGVyLiBObyB1c2VyIHNwYWNlIGNvcHlpbmcgaXMgaGFwcGVuaW5nIGhlcmUsIGFuZCBJIGRvbiYjMzk7dCBzZWUgYW55IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGVzIGJlaW5nIHVzZWQuIFRoaXMgcmVhbGx5IGFwcGVhcnMgdG8gYmUgYSBzdGFuZGFyZCBkcml2ZXIgQVBJIGNoYW5nZS4gSSYjMzk7bGwgZmxhZyB0aGlzIGFzIHNhZmUuIEkgYW0gY29tZm9ydGFibGUgc2V0dGluZyBOZWVkc0tNU0FOIHRvIGZhbHNlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjc0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8xMiAxNToyMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBDSSBkZXZyZXMgQVBJIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBhbmQgcmVwbGFjZXMgYHBjaW1faW9tYXBfcmVnaW9uYCB3aXRoIGl0IGluIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhlIG5ldyBmdW5jdGlvbiBhbGxvY2F0ZXMgYSBgcGNpbV9hZGRyX2RldnJlc2Agc3RydWN0dXJlLCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCB2aWEgYHBjaW1fYWRkcl9kZXZyZXNfY2xlYXIoKWAsIGFuZCBtYXBzIFBDSSBCQVJzIHVzaW5nIGBwY2lfaW9yZW1hcF9iYXIoKWAuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIG9yIGNvbnRyb2wgZmxvdyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBtZW1vcnkgbWFwcGluZywgcmVzb3VyY2UgbGVha3MsIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMsIGFsbCBvZiB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTU6MzAuNjAzNjgwNTEzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzE3NTI2NTgyODUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlBDSVwiLFxuICAgIFwiU05EXCIsXG4gICAgXCJTTkRfUENJXCIsXG4gICAgXCJTTkRfSERBX0lOVEVMXCIsXG4gICAgXCJTTkRfQUQxODg5XCIsXG4gICAgXCJTTkRfQVRJSVhQXCIsXG4gICAgXCJTTkRfQVRJSVhQX01PREVNXCIsXG4gICAgXCJTTkRfQVcyXCIsXG4gICAgXCJTTkRfQlQ4N1hcIixcbiAgICBcIlNORF9MT0xBXCIsXG4gICAgXCJTTkRfSERTUE1cIixcbiAgICBcIlNORF9TT0NcIixcbiAgICBcIlNORF9TT0NfTE9PTkdTT05fSTJTX1BDSVwiLFxuICAgIFwiQ09NUElMRV9URVNUXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicGNpbV9pb3JlbWFwX3JlZ2lvblwiXG4gIF0sXG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCB3aGljaCB3cmFwcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZyZXMuIEl0IHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIHRoZW0gdG8gdXNlIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgdXNpbmcgSU8gbWFwcGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgUENJIGFuZCBkcml2ZXIgcHJvYmluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTU6MzAuNjAzNjg1NjEzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjUwODQ2MTg0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgZmE2ZjRjNjAyNGE5OWVhNjcyMzE3NmZkMjU0YzUyOTdmNjk1NWVkMFxcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNToxNToyOCAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9kZXZyZXMuYyBiL2RyaXZlcnMvcGNpL2RldnJlcy5jXFxuaW5kZXggZjA3NWU3ODgxYzNhNi4uZmFhNjc4ZmY1YjU2ZiAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL3BjaS9kZXZyZXMuY1xcbisrKyBiL2RyaXZlcnMvcGNpL2RldnJlcy5jXFxuQEAgLTYzOSw2ICs2MzksNTUgQEAgdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcXG4gfVxcbiBFWFBPUlRfU1lNQk9MKHBjaW1faW9tYXBfcmVnaW9uKTtcXG4gXFxuKy8qKlxcbisgKiBwY2ltX2lvcmVtYXBfcmVnaW9uIC0gUmVxdWVzdCBhbmQgaW9yZW1hcCBhIFBDSSBCQVJcXG4rICogQHBkZXY6IFBDSSBkZXZpY2UgdG8gbWFwIElPIHJlc291cmNlcyBmb3JcXG4rICogQGJhcjogSW5kZXggb2YgYSBCQVIgdG8gbWFwXFxuKyAqIEBuYW1lOiBOYW1lIG9mIHRoZSBkcml2ZXIgcmVxdWVzdGluZyB0aGUgcmVzb3VyY2VcXG4rICpcXG4rICogUmV0dXJuczogX19pb21lbSBwb2ludGVyIG9uIHN1Y2Nlc3MsIGFuIElPTUVNX0VSUl9QVFIgb24gZmFpbHVyZS5cXG4rICpcXG4rICogTWFwcGluZyBhbmQgcmVnaW9uIHdpbGwgZ2V0IGF1dG9tYXRpY2FsbHkgcmVsZWFzZWQgb24gZHJpdmVyIGRldGFjaC4gSWZcXG4rICogZGVzaXJlZCwgcmVsZWFzZSBtYW51YWxseSBvbmx5IHdpdGggcGNpbV9pb3VubWFwX3JlZ2lvbigpLlxcbisgKi9cXG4rdm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxcbitcXHRcXHRcXHRcXHQgIGNvbnN0IGNoYXIgKm5hbWUpXFxuK3tcXG4rXFx0aW50IHJldDtcXG4rXFx0c3RydWN0IHBjaW1fYWRkcl9kZXZyZXMgKnJlcztcXG4rXFxuK1xcdGlmICghcGNpX2Jhcl9pbmRleF9pc192YWxpZChiYXIpKVxcbitcXHRcXHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRUlOVkFMKTtcXG4rXFxuK1xcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XFxuK1xcdGlmICghcmVzKVxcbitcXHRcXHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRU5PTUVNKTtcXG4rXFxuK1xcdHJlcy1cXHUwMDNldHlwZSA9IFBDSU1fQUREUl9ERVZSRVNfVFlQRV9SRUdJT05fTUFQUElORztcXG4rXFx0cmVzLVxcdTAwM2ViYXIgPSBiYXI7XFxuK1xcbitcXHRyZXQgPSBwY2lfcmVxdWVzdF9yZWdpb24ocGRldiwgYmFyLCBuYW1lKTtcXG4rXFx0aWYgKHJldCAhPSAwKVxcbitcXHRcXHRnb3RvIGVycl9yZWdpb247XFxuK1xcbitcXHRyZXMtXFx1MDAzZWJhc2VhZGRyID0gcGNpX2lvcmVtYXBfYmFyKHBkZXYsIGJhcik7XFxuK1xcdGlmICghcmVzLVxcdTAwM2ViYXNlYWRkcikge1xcbitcXHRcXHRyZXQgPSAtRUlOVkFMO1xcbitcXHRcXHRnb3RvIGVycl9pb21hcDtcXG4rXFx0fVxcbitcXG4rXFx0ZGV2cmVzX2FkZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCByZXMpO1xcbitcXHRyZXR1cm4gcmVzLVxcdTAwM2ViYXNlYWRkcjtcXG4rXFxuK2Vycl9pb21hcDpcXG4rXFx0cGNpX3JlbGVhc2VfcmVnaW9uKHBkZXYsIGJhcik7XFxuK2Vycl9yZWdpb246XFxuK1xcdHBjaW1fYWRkcl9kZXZyZXNfZnJlZShyZXMpO1xcbitcXG4rXFx0cmV0dXJuIElPTUVNX0VSUl9QVFIocmV0KTtcXG4rfVxcbitFWFBPUlRfU1lNQk9MKHBjaW1faW9yZW1hcF9yZWdpb24pO1xcbitcXG4gLyoqXFxuICAqIHBjaW1faW91bm1hcF9yZWdpb24gLSBVbm1hcCBhbmQgcmVsZWFzZSBhIFBDSSBCQVJcXG4gICogQHBkZXY6IFBDSSBkZXZpY2UgdG8gb3BlcmF0ZSBvblxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS5oIGIvaW5jbHVkZS9saW51eC9wY2kuaFxcbmluZGV4IDY0YjMwOGI2ZTYxYzEuLmU3YTJlY2UxMzhlYTYgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9wY2kuaFxcbisrKyBiL2luY2x1ZGUvbGludXgvcGNpLmhcXG5AQCAtMjUwNiw2ICsyNTA2LDggQEAgaW50IHBjaW1fcmVxdWVzdF9hbGxfcmVnaW9ucyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3QgY2hhciAqbmFtZSk7XFxuIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwgdW5zaWduZWQgbG9uZyBtYXhsZW4pO1xcbiB2b2lkIF9faW9tZW0gKnBjaW1faW9tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxcbiBcXHRcXHRcXHRcXHRjb25zdCBjaGFyICpuYW1lKTtcXG4rdm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxcbitcXHRcXHRcXHRcXHQgIGNvbnN0IGNoYXIgKm5hbWUpO1xcbiB2b2lkIHBjaW1faW91bm1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIpO1xcbiB2b2lkIHBjaW1faW91bm1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdm9pZCBfX2lvbWVtICphZGRyKTtcXG4gdm9pZCBfX2lvbWVtICogY29uc3QgKnBjaW1faW9tYXBfdGFibGUoc3RydWN0IHBjaV9kZXYgKnBkZXYpO1xcbmRpZmYgLS1naXQgYS9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuYyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXFxuaW5kZXggMjhjNTVjNWEyZDJlZi4uNWRhMGFjMWVkNDA3MSAxMDA2NDRcXG4tLS0gYS9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuY1xcbisrKyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXFxuQEAgLTE5MjYsNyArMTkyNiw3IEBAIHN0YXRpYyBpbnQgYXp4X2ZpcnN0X2luaXQoc3RydWN0IGF6eCAqY2hpcClcXG4gXFx0aWYgKGNoaXAtXFx1MDAzZWRyaXZlcl90eXBlID09IEFaWF9EUklWRVJfWkhBT1hJTkhETUkpXFxuIFxcdFxcdGJ1cy1cXHUwMDNlcG9sbGluZ19tb2RlID0gMTtcXG4gXFxuLVxcdGJ1cy1cXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXFxcIklDSCBIRCBhdWRpb1xcXCIpO1xcbitcXHRidXMtXFx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIklDSCBIRCBhdWRpb1xcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGJ1cy1cXHUwMDNlcmVtYXBfYWRkcikpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKGJ1cy1cXHUwMDNlcmVtYXBfYWRkcik7XFxuIFxcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYWQxODg5LmMgYi9zb3VuZC9wY2kvYWQxODg5LmNcXG5pbmRleCBmNGVjNDA0YzBkMTVhLi5hMjU3MGExNDhmNjA2IDEwMDY0NFxcbi0tLSBhL3NvdW5kL3BjaS9hZDE4ODkuY1xcbisrKyBiL3NvdW5kL3BjaS9hZDE4ODkuY1xcbkBAIC04MDQsNyArODA0LDcgQEAgc25kX2FkMTg4OV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxcbiBcXHRjaGlwLVxcdTAwM2VpcnEgPSAtMTtcXG4gXFxuIFxcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xcbi1cXHRjaGlwLVxcdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtXFx1MDAzZWRyaXZlcik7XFxuK1xcdGNoaXAtXFx1MDAzZWlvYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBjYXJkLVxcdTAwM2Vkcml2ZXIpO1xcbiBcXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZWlvYmFzZSkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKGNoaXAtXFx1MDAzZWlvYmFzZSk7XFxuIFxcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXRpaXhwLmMgYi9zb3VuZC9wY2kvYXRpaXhwLmNcXG5pbmRleCBiNzM4Mjk1YjQxZTVkLi5iOWZjZDkxM2ZiYzZmIDEwMDY0NFxcbi0tLSBhL3NvdW5kL3BjaS9hdGlpeHAuY1xcbisrKyBiL3NvdW5kL3BjaS9hdGlpeHAuY1xcbkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBzdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXFxuIFxcdGNoaXAtXFx1MDAzZWNhcmQgPSBjYXJkO1xcbiBcXHRjaGlwLVxcdTAwM2VwY2kgPSBwY2k7XFxuIFxcdGNoaXAtXFx1MDAzZWlycSA9IC0xO1xcbi1cXHRjaGlwLVxcdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcXFwiQVRJIElYUCBBQzk3XFxcIik7XFxuK1xcdGNoaXAtXFx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkFUSSBJWFAgQUM5N1xcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZXJlbWFwX2FkZHIpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihjaGlwLVxcdTAwM2VyZW1hcF9hZGRyKTtcXG4gXFx0Y2hpcC1cXHUwMDNlYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMgYi9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmNcXG5pbmRleCA4YWFlYjE5N2NlNDU4Li5mNjU0ODA0ODM5OTY2IDEwMDY0NFxcbi0tLSBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xcbisrKyBiL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xcbkBAIC0xMTYzLDcgKzExNjMsNyBAQCBzdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXFxuIFxcdGNoaXAtXFx1MDAzZWNhcmQgPSBjYXJkO1xcbiBcXHRjaGlwLVxcdTAwM2VwY2kgPSBwY2k7XFxuIFxcdGNoaXAtXFx1MDAzZWlycSA9IC0xO1xcbi1cXHRjaGlwLVxcdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcXFwiQVRJIElYUCBNQzk3XFxcIik7XFxuK1xcdGNoaXAtXFx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkFUSSBJWFAgTUM5N1xcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZXJlbWFwX2FkZHIpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihjaGlwLVxcdTAwM2VyZW1hcF9hZGRyKTtcXG4gXFx0Y2hpcC1cXHUwMDNlYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuY1xcbmluZGV4IGJiMDI5NDU3OTNmMGMuLmE3NzNlOGE1NmMwYzUgMTAwNjQ0XFxuLS0tIGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuY1xcbisrKyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcXG5AQCAtMTYwLDcgKzE2MCw3IEBAIHNuZF92b3J0ZXhfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcXG4gXFx0Ly8gKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uXFxuIFxcdC8vIEdldCBNTUlPIGFyZWFcXG4gXFx0Ly9cXG4tXFx0Y2hpcC1cXHUwMDNlbW1pbyA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpO1xcbitcXHRjaGlwLVxcdTAwM2VtbWlvID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIEtCVUlMRF9NT0ROQU1FKTtcXG4gXFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2VtbWlvKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cXHUwMDNlbW1pbyk7XFxuIFxcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMgYi9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmNcXG5pbmRleCA2MGE4NzMyMmVhZTQ5Li4yN2ZkNDVkNjQ3MDE5IDEwMDY0NFxcbi0tLSBhL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuY1xcbisrKyBiL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuY1xcbkBAIC0yMjQsNyArMjI0LDcgQEAgc3RhdGljIGludCBzbmRfYXcyX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuIFxcdGNoaXAtXFx1MDAzZWlycSA9IC0xO1xcbiBcXG4gXFx0LyogKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uICovXFxuLVxcdGNoaXAtXFx1MDAzZWlvYmFzZV92aXJ0ID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcXFwiQXVkaW93ZXJrMlxcXCIpO1xcbitcXHRjaGlwLVxcdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcXFwiQXVkaW93ZXJrMlxcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZWlvYmFzZV92aXJ0KSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cXHUwMDNlaW9iYXNlX3ZpcnQpO1xcbiBcXHRjaGlwLVxcdTAwM2Vpb2Jhc2VfcGh5cyA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYnQ4N3guYyBiL3NvdW5kL3BjaS9idDg3eC5jXFxuaW5kZXggMzgzZGVmMWYyYWY3NC4uNTVmNmI3OWJkOWVhYyAxMDA2NDRcXG4tLS0gYS9zb3VuZC9wY2kvYnQ4N3guY1xcbisrKyBiL3NvdW5kL3BjaS9idDg3eC5jXFxuQEAgLTY5MCw3ICs2OTAsNyBAQCBzdGF0aWMgaW50IHNuZF9idDg3eF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxcbiBcXHRjaGlwLVxcdTAwM2VpcnEgPSAtMTtcXG4gXFx0c3Bpbl9sb2NrX2luaXQoXFx1MDAyNmNoaXAtXFx1MDAzZXJlZ19sb2NrKTtcXG4gXFxuLVxcdGNoaXAtXFx1MDAzZW1taW8gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJCdDg3eCBhdWRpb1xcXCIpO1xcbitcXHRjaGlwLVxcdTAwM2VtbWlvID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJCdDg3eCBhdWRpb1xcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZW1taW8pKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihjaGlwLVxcdTAwM2VtbWlvKTtcXG4gXFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczQyODEuYyBiL3NvdW5kL3BjaS9jczQyODEuY1xcbmluZGV4IGY1MWY0YmI2Mzc2NjQuLmYwMDBkY2E5NGU0ZmQgMTAwNjQ0XFxuLS0tIGEvc291bmQvcGNpL2NzNDI4MS5jXFxuKysrIGIvc291bmQvcGNpL2NzNDI4MS5jXFxuQEAgLTEyOTgsMTIgKzEyOTgsMTIgQEAgc3RhdGljIGludCBzbmRfY3M0MjgxX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuIFxcdH1cXG4gXFx0Y2hpcC1cXHUwMDNlZHVhbF9jb2RlYyA9IGR1YWxfY29kZWM7XFxuIFxcbi1cXHRjaGlwLVxcdTAwM2ViYTAgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJDUzQyODFcXFwiKTtcXG4rXFx0Y2hpcC1cXHUwMDNlYmEwID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJDUzQyODFcXFwiKTtcXG4gXFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2ViYTApKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihjaGlwLVxcdTAwM2ViYTApO1xcbiBcXHRjaGlwLVxcdTAwM2ViYTBfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xcbiBcXG4tXFx0Y2hpcC1cXHUwMDNlYmExID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAxLCBcXFwiQ1M0MjgxXFxcIik7XFxuK1xcdGNoaXAtXFx1MDAzZWJhMSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAxLCBcXFwiQ1M0MjgxXFxcIik7XFxuIFxcdGlmIChJU19FUlIoY2hpcC1cXHUwMDNlYmExKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cXHUwMDNlYmExKTtcXG4gXFx0Y2hpcC1cXHUwMDNlYmExX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAxKTtcXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNTUzMC5jIGIvc291bmQvcGNpL2NzNTUzMC5jXFxuaW5kZXggMjkyYjY1YWE3NThhOS4uN2NmNzRlNzc5NzBjZCAxMDA2NDRcXG4tLS0gYS9zb3VuZC9wY2kvY3M1NTMwLmNcXG4rKysgYi9zb3VuZC9wY2kvY3M1NTMwLmNcXG5AQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW50IHNuZF9jczU1MzBfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcXG4gXFx0Y2hpcC1cXHUwMDNlY2FyZCA9IGNhcmQ7XFxuIFxcdGNoaXAtXFx1MDAzZXBjaSA9IHBjaTtcXG4gXFxuLVxcdG1lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkNTNTUzMFxcXCIpO1xcbitcXHRtZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkNTNTUzMFxcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKG1lbSkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKG1lbSk7XFxuIFxcdGNoaXAtXFx1MDAzZXBjaV9iYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuYyBiL3NvdW5kL3BjaS9sb2xhL2xvbGEuY1xcbmluZGV4IDM0YTNiYTE3ZGViNGIuLmVjMjkzOGM0YjUzMjMgMTAwNjQ0XFxuLS0tIGEvc291bmQvcGNpL2xvbGEvbG9sYS5jXFxuKysrIGIvc291bmQvcGNpL2xvbGEvbG9sYS5jXFxuQEAgLTU3OSwxNCArNTc5LDE0IEBAIHN0YXRpYyBpbnQgbG9sYV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpLCBpbnQgZGV2KVxcbiBcXHRcXHRjaGlwLVxcdTAwM2VzYW1wbGVfcmF0ZV9taW4gPSAxNjAwMDtcXG4gXFx0fVxcbiBcXG4tXFx0aW9tZW0gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpO1xcbitcXHRpb21lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBEUlZOQU1FKTtcXG4gXFx0aWYgKElTX0VSUihpb21lbSkpXFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKGlvbWVtKTtcXG4gXFxuIFxcdGNoaXAtXFx1MDAzZWJhclswXS5yZW1hcF9hZGRyID0gaW9tZW07XFxuIFxcdGNoaXAtXFx1MDAzZWJhclswXS5hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XFxuIFxcbi1cXHRpb21lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMiwgRFJWTkFNRSk7XFxuK1xcdGlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDIsIERSVk5BTUUpO1xcbiBcXHRpZiAoSVNfRVJSKGlvbWVtKSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoaW9tZW0pO1xcbiBcXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcXG5pbmRleCBkOGJiZWRiYzhmZjY4Li45YjM3NThjYTFkMDA0IDEwMDY0NFxcbi0tLSBhL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcXG4rKysgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jXFxuQEAgLTY1MTEsNyArNjUxMSw3IEBAIHN0YXRpYyBpbnQgc25kX2hkc3BtX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuIFxcbiBcXHRwY2lfc2V0X21hc3RlcihoZHNwbS1cXHUwMDNlcGNpKTtcXG4gXFxuLVxcdGhkc3BtLVxcdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJoZHNwbVxcXCIpO1xcbitcXHRoZHNwbS1cXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJoZHNwbVxcXCIpO1xcbiBcXHRpZiAoSVNfRVJSKGhkc3BtLVxcdTAwM2Vpb2Jhc2UpKVxcbiBcXHRcXHRyZXR1cm4gUFRSX0VSUihoZHNwbS1cXHUwMDNlaW9iYXNlKTtcXG4gXFxuZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmMgYi9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jXFxuaW5kZXggZjViNTYwNDY1NzA2Zi4uMzJmYzBmNTQ0OTI4MiAxMDA2NDRcXG4tLS0gYS9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jXFxuKysrIGIvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuY1xcbkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBpbnQgbG9vbmdzb25faTJzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4gXFx0aTJzLVxcdTAwM2VkZXYgPSBkZXY7XFxuIFxcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBpMnMpO1xcbiBcXG4tXFx0aTJzLVxcdTAwM2VyZWdfYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBkZXYsIDAsIERSSVZFUl9OQU1FKTtcXG4rXFx0aTJzLVxcdTAwM2VyZWdfYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGRldiwgMCwgRFJJVkVSX05BTUUpO1xcbiBcXHRpZiAoSVNfRVJSKGkycy1cXHUwMDNlcmVnX2Jhc2UpKSB7XFxuIFxcdFxcdGRldl9lcnIoZGV2LCBcXFwiaW9tYXBfcmVnaW9uIGZhaWxlZFxcXFxuXFxcIik7XFxuIFxcdFxcdHJldHVybiBQVFJfRVJSKGkycy1cXHUwMDNlcmVnX2Jhc2UpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNTozMi4yNTU2MTU5MDdaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoyOTg5MzQ4Mzg3MzQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUENJXCIsXG4gICAgXCJTTkRcIixcbiAgICBcIlNORF9QQ0lcIixcbiAgICBcIlNORF9IREFfSU5URUxcIixcbiAgICBcIlNORF9BRDE4ODlcIixcbiAgICBcIlNORF9BVElJWFBcIixcbiAgICBcIlNORF9BVElJWFBfTU9ERU1cIixcbiAgICBcIlNORF9BVzJcIixcbiAgICBcIlNORF9CVDg3WFwiLFxuICAgIFwiU05EX0xPTEFcIixcbiAgICBcIlNORF9IRFNQTVwiLFxuICAgIFwiU05EX1NPQ1wiLFxuICAgIFwiU05EX1NPQ19MT09OR1NPTl9JMlNfUENJXCIsXG4gICAgXCJDT01QSUxFX1RFU1RcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJwY2ltX2lvcmVtYXBfcmVnaW9uXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBjb3JlIFBDSSBmdW5jdGlvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgd2hpY2ggd3JhcHMgYHBjaV9pb3JlbWFwX2JhcmAgYW5kIGBwY2lfcmVxdWVzdF9yZWdpb25gIHdpdGggZGV2cmVzLiBJdCByZXBsYWNlcyBgcGNpbV9pb21hcF9yZWdpb25gIGluIHNldmVyYWwgc291bmQgZHJpdmVycywgZm9yY2luZyB0aGVtIHRvIHVzZSBtZW1vcnkgbWFwcGluZyBpbnN0ZWFkIG9mIHBvdGVudGlhbGx5IHVzaW5nIElPIG1hcHBpbmcuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiBjb3JlIFBDSSBhbmQgZHJpdmVyIHByb2JpbmcgbG9naWMgdGhhdCBpcyByZWFjaGFibGUgdmlhIFBDSSBkZXZpY2UgcHJvYmUgYW5kIHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLlxuWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmVcbmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cblxuSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluXG55b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHlcbnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuXG5cblJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6XG4tIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuXG4tIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLlxuLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuXG4tIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSxcbiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLlxuLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCxcbiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuXG4tIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpXG4gIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy5cblxuSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaFxudG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuXG5cbldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOlxuMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy5cbiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLlxuICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zXG4gICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS5cbjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLlxuICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLlxuICAgQWxzbyBjaGVjayBcImRlcGVuZHMgb25cIiBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3NcbiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlnc1xuICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICdDT05GSUdfJyBwcmVmaXggKGUuZy4sIHJldHVybiBcIk5FVF9JUFY0XCIgaW5zdGVhZCBvZiBcIkNPTkZJR19ORVRfSVBWNFwiKS5cblByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLlxuXG5cblVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuXG5JdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS5cbklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC5cbiIsIlByb21wdCI6IkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOlxuY29tbWl0IGZhNmY0YzYwMjRhOTllYTY3MjMxNzZmZDI1NGM1Mjk3ZjY5NTVlZDBcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAxMiAxNToxNToyOCAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvcGNpL2RldnJlcy5jIGIvZHJpdmVycy9wY2kvZGV2cmVzLmNcbmluZGV4IGYwNzVlNzg4MWMzYTYuLmZhYTY3OGZmNWI1NmYgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL3BjaS9kZXZyZXMuY1xuKysrIGIvZHJpdmVycy9wY2kvZGV2cmVzLmNcbkBAIC02MzksNiArNjM5LDU1IEBAIHZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG4gfVxuIEVYUE9SVF9TWU1CT0wocGNpbV9pb21hcF9yZWdpb24pO1xuIFxuKy8qKlxuKyAqIHBjaW1faW9yZW1hcF9yZWdpb24gLSBSZXF1ZXN0IGFuZCBpb3JlbWFwIGEgUENJIEJBUlxuKyAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yXG4rICogQGJhcjogSW5kZXggb2YgYSBCQVIgdG8gbWFwXG4rICogQG5hbWU6IE5hbWUgb2YgdGhlIGRyaXZlciByZXF1ZXN0aW5nIHRoZSByZXNvdXJjZVxuKyAqXG4rICogUmV0dXJuczogX19pb21lbSBwb2ludGVyIG9uIHN1Y2Nlc3MsIGFuIElPTUVNX0VSUl9QVFIgb24gZmFpbHVyZS5cbisgKlxuKyAqIE1hcHBpbmcgYW5kIHJlZ2lvbiB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIElmXG4rICogZGVzaXJlZCwgcmVsZWFzZSBtYW51YWxseSBvbmx5IHdpdGggcGNpbV9pb3VubWFwX3JlZ2lvbigpLlxuKyAqL1xuK3ZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbitcdFx0XHRcdCAgY29uc3QgY2hhciAqbmFtZSlcbit7XG4rXHRpbnQgcmV0O1xuK1x0c3RydWN0IHBjaW1fYWRkcl9kZXZyZXMgKnJlcztcbitcbitcdGlmICghcGNpX2Jhcl9pbmRleF9pc192YWxpZChiYXIpKVxuK1x0XHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRUlOVkFMKTtcbitcbitcdHJlcyA9IHBjaW1fYWRkcl9kZXZyZXNfYWxsb2MocGRldik7XG4rXHRpZiAoIXJlcylcbitcdFx0cmV0dXJuIElPTUVNX0VSUl9QVFIoLUVOT01FTSk7XG4rXG4rXHRyZXMtXHUwMDNldHlwZSA9IFBDSU1fQUREUl9ERVZSRVNfVFlQRV9SRUdJT05fTUFQUElORztcbitcdHJlcy1cdTAwM2ViYXIgPSBiYXI7XG4rXG4rXHRyZXQgPSBwY2lfcmVxdWVzdF9yZWdpb24ocGRldiwgYmFyLCBuYW1lKTtcbitcdGlmIChyZXQgIT0gMClcbitcdFx0Z290byBlcnJfcmVnaW9uO1xuK1xuK1x0cmVzLVx1MDAzZWJhc2VhZGRyID0gcGNpX2lvcmVtYXBfYmFyKHBkZXYsIGJhcik7XG4rXHRpZiAoIXJlcy1cdTAwM2ViYXNlYWRkcikge1xuK1x0XHRyZXQgPSAtRUlOVkFMO1xuK1x0XHRnb3RvIGVycl9pb21hcDtcbitcdH1cbitcbitcdGRldnJlc19hZGQoXHUwMDI2cGRldi1cdTAwM2VkZXYsIHJlcyk7XG4rXHRyZXR1cm4gcmVzLVx1MDAzZWJhc2VhZGRyO1xuK1xuK2Vycl9pb21hcDpcbitcdHBjaV9yZWxlYXNlX3JlZ2lvbihwZGV2LCBiYXIpO1xuK2Vycl9yZWdpb246XG4rXHRwY2ltX2FkZHJfZGV2cmVzX2ZyZWUocmVzKTtcbitcbitcdHJldHVybiBJT01FTV9FUlJfUFRSKHJldCk7XG4rfVxuK0VYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7XG4rXG4gLyoqXG4gICogcGNpbV9pb3VubWFwX3JlZ2lvbiAtIFVubWFwIGFuZCByZWxlYXNlIGEgUENJIEJBUlxuICAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG9wZXJhdGUgb25cbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L3BjaS5oIGIvaW5jbHVkZS9saW51eC9wY2kuaFxuaW5kZXggNjRiMzA4YjZlNjFjMS4uZTdhMmVjZTEzOGVhNiAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvcGNpLmhcbisrKyBiL2luY2x1ZGUvbGludXgvcGNpLmhcbkBAIC0yNTA2LDYgKzI1MDYsOCBAQCBpbnQgcGNpbV9yZXF1ZXN0X2FsbF9yZWdpb25zKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBjaGFyICpuYW1lKTtcbiB2b2lkIF9faW9tZW0gKnBjaW1faW9tYXAoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsIHVuc2lnbmVkIGxvbmcgbWF4bGVuKTtcbiB2b2lkIF9faW9tZW0gKnBjaW1faW9tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxuIFx0XHRcdFx0Y29uc3QgY2hhciAqbmFtZSk7XG4rdm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxuK1x0XHRcdFx0ICBjb25zdCBjaGFyICpuYW1lKTtcbiB2b2lkIHBjaW1faW91bm1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIpO1xuIHZvaWQgcGNpbV9pb3VubWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCB2b2lkIF9faW9tZW0gKmFkZHIpO1xuIHZvaWQgX19pb21lbSAqIGNvbnN0ICpwY2ltX2lvbWFwX3RhYmxlKHN0cnVjdCBwY2lfZGV2ICpwZGV2KTtcbmRpZmYgLS1naXQgYS9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuYyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXG5pbmRleCAyOGM1NWM1YTJkMmVmLi41ZGEwYWMxZWQ0MDcxIDEwMDY0NFxuLS0tIGEvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmNcbisrKyBiL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXG5AQCAtMTkyNiw3ICsxOTI2LDcgQEAgc3RhdGljIGludCBhenhfZmlyc3RfaW5pdChzdHJ1Y3QgYXp4ICpjaGlwKVxuIFx0aWYgKGNoaXAtXHUwMDNlZHJpdmVyX3R5cGUgPT0gQVpYX0RSSVZFUl9aSEFPWElOSERNSSlcbiBcdFx0YnVzLVx1MDAzZXBvbGxpbmdfbW9kZSA9IDE7XG4gXG4tXHRidXMtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJJQ0ggSEQgYXVkaW9cIik7XG4rXHRidXMtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcIklDSCBIRCBhdWRpb1wiKTtcbiBcdGlmIChJU19FUlIoYnVzLVx1MDAzZXJlbWFwX2FkZHIpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihidXMtXHUwMDNlcmVtYXBfYWRkcik7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2FkMTg4OS5jIGIvc291bmQvcGNpL2FkMTg4OS5jXG5pbmRleCBmNGVjNDA0YzBkMTVhLi5hMjU3MGExNDhmNjA2IDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2FkMTg4OS5jXG4rKysgYi9zb3VuZC9wY2kvYWQxODg5LmNcbkBAIC04MDQsNyArODA0LDcgQEAgc25kX2FkMTg4OV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbiBcbiBcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xuLVx0Y2hpcC1cdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtXHUwMDNlZHJpdmVyKTtcbitcdGNoaXAtXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtXHUwMDNlZHJpdmVyKTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2Vpb2Jhc2UpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZWlvYmFzZSk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F0aWl4cC5jIGIvc291bmQvcGNpL2F0aWl4cC5jXG5pbmRleCBiNzM4Mjk1YjQxZTVkLi5iOWZjZDkxM2ZiYzZmIDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2F0aWl4cC5jXG4rKysgYi9zb3VuZC9wY2kvYXRpaXhwLmNcbkBAIC0xNTMxLDcgKzE1MzEsNyBAQCBzdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXG4gXHRjaGlwLVx1MDAzZWNhcmQgPSBjYXJkO1xuIFx0Y2hpcC1cdTAwM2VwY2kgPSBwY2k7XG4gXHRjaGlwLVx1MDAzZWlycSA9IC0xO1xuLVx0Y2hpcC1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcIkFUSSBJWFAgQUM5N1wiKTtcbitcdGNoaXAtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcIkFUSSBJWFAgQUM5N1wiKTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2VyZW1hcF9hZGRyKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2VyZW1hcF9hZGRyKTtcbiBcdGNoaXAtXHUwMDNlYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uYyBiL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xuaW5kZXggOGFhZWIxOTdjZTQ1OC4uZjY1NDgwNDgzOTk2NiAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xuKysrIGIvc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jXG5AQCAtMTE2Myw3ICsxMTYzLDcgQEAgc3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuIFx0Y2hpcC1cdTAwM2VjYXJkID0gY2FyZDtcbiBcdGNoaXAtXHUwMDNlcGNpID0gcGNpO1xuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbi1cdGNoaXAtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJBVEkgSVhQIE1DOTdcIik7XG4rXHRjaGlwLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJBVEkgSVhQIE1DOTdcIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcikpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcik7XG4gXHRjaGlwLVx1MDAzZWFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jIGIvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuY1xuaW5kZXggYmIwMjk0NTc5M2YwYy4uYTc3M2U4YTU2YzBjNSAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcbisrKyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcbkBAIC0xNjAsNyArMTYwLDcgQEAgc25kX3ZvcnRleF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuIFx0Ly8gKDEpIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uXG4gXHQvLyBHZXQgTU1JTyBhcmVhXG4gXHQvL1xuLVx0Y2hpcC1cdTAwM2VtbWlvID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBLQlVJTERfTU9ETkFNRSk7XG4rXHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZW1taW8pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZW1taW8pO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYyBiL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuY1xuaW5kZXggNjBhODczMjJlYWU0OS4uMjdmZDQ1ZDY0NzAxOSAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuY1xuKysrIGIvc291bmQvcGNpL2F3Mi9hdzItYWxzYS5jXG5AQCAtMjI0LDcgKzIyNCw3IEBAIHN0YXRpYyBpbnQgc25kX2F3Ml9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbiBcbiBcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xuLVx0Y2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJBdWRpb3dlcmsyXCIpO1xuK1x0Y2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcIkF1ZGlvd2VyazJcIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlaW9iYXNlX3ZpcnQpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZWlvYmFzZV92aXJ0KTtcbiBcdGNoaXAtXHUwMDNlaW9iYXNlX3BoeXMgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYnQ4N3guYyBiL3NvdW5kL3BjaS9idDg3eC5jXG5pbmRleCAzODNkZWYxZjJhZjc0Li41NWY2Yjc5YmQ5ZWFjIDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2J0ODd4LmNcbisrKyBiL3NvdW5kL3BjaS9idDg3eC5jXG5AQCAtNjkwLDcgKzY5MCw3IEBAIHN0YXRpYyBpbnQgc25kX2J0ODd4X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXHRjaGlwLVx1MDAzZWlycSA9IC0xO1xuIFx0c3Bpbl9sb2NrX2luaXQoXHUwMDI2Y2hpcC1cdTAwM2VyZWdfbG9jayk7XG4gXG4tXHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiQnQ4N3ggYXVkaW9cIik7XG4rXHRjaGlwLVx1MDAzZW1taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJCdDg3eCBhdWRpb1wiKTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2VtbWlvKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2VtbWlvKTtcbiBcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3M0MjgxLmMgYi9zb3VuZC9wY2kvY3M0MjgxLmNcbmluZGV4IGY1MWY0YmI2Mzc2NjQuLmYwMDBkY2E5NGU0ZmQgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvY3M0MjgxLmNcbisrKyBiL3NvdW5kL3BjaS9jczQyODEuY1xuQEAgLTEyOTgsMTIgKzEyOTgsMTIgQEAgc3RhdGljIGludCBzbmRfY3M0MjgxX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXHR9XG4gXHRjaGlwLVx1MDAzZWR1YWxfY29kZWMgPSBkdWFsX2NvZGVjO1xuIFxuLVx0Y2hpcC1cdTAwM2ViYTAgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiQ1M0MjgxXCIpO1xuK1x0Y2hpcC1cdTAwM2ViYTAgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJDUzQyODFcIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlYmEwKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2ViYTApO1xuIFx0Y2hpcC1cdTAwM2ViYTBfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuIFxuLVx0Y2hpcC1cdTAwM2ViYTEgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDEsIFwiQ1M0MjgxXCIpO1xuK1x0Y2hpcC1cdTAwM2ViYTEgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMSwgXCJDUzQyODFcIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlYmExKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2ViYTEpO1xuIFx0Y2hpcC1cdTAwM2ViYTFfYWRkciA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDEpO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9jczU1MzAuYyBiL3NvdW5kL3BjaS9jczU1MzAuY1xuaW5kZXggMjkyYjY1YWE3NThhOS4uN2NmNzRlNzc5NzBjZCAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9jczU1MzAuY1xuKysrIGIvc291bmQvcGNpL2NzNTUzMC5jXG5AQCAtOTEsNyArOTEsNyBAQCBzdGF0aWMgaW50IHNuZF9jczU1MzBfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcbiBcdGNoaXAtXHUwMDNlY2FyZCA9IGNhcmQ7XG4gXHRjaGlwLVx1MDAzZXBjaSA9IHBjaTtcbiBcbi1cdG1lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJDUzU1MzBcIik7XG4rXHRtZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJDUzU1MzBcIik7XG4gXHRpZiAoSVNfRVJSKG1lbSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKG1lbSk7XG4gXHRjaGlwLVx1MDAzZXBjaV9iYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2xvbGEvbG9sYS5jIGIvc291bmQvcGNpL2xvbGEvbG9sYS5jXG5pbmRleCAzNGEzYmExN2RlYjRiLi5lYzI5MzhjNGI1MzIzIDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2xvbGEvbG9sYS5jXG4rKysgYi9zb3VuZC9wY2kvbG9sYS9sb2xhLmNcbkBAIC01NzksMTQgKzU3OSwxNCBAQCBzdGF0aWMgaW50IGxvbGFfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSwgaW50IGRldilcbiBcdFx0Y2hpcC1cdTAwM2VzYW1wbGVfcmF0ZV9taW4gPSAxNjAwMDtcbiBcdH1cbiBcbi1cdGlvbWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBEUlZOQU1FKTtcbitcdGlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIERSVk5BTUUpO1xuIFx0aWYgKElTX0VSUihpb21lbSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGlvbWVtKTtcbiBcbiBcdGNoaXAtXHUwMDNlYmFyWzBdLnJlbWFwX2FkZHIgPSBpb21lbTtcbiBcdGNoaXAtXHUwMDNlYmFyWzBdLmFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbiBcbi1cdGlvbWVtID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTtcbitcdGlvbWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDIsIERSVk5BTUUpO1xuIFx0aWYgKElTX0VSUihpb21lbSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGlvbWVtKTtcbiBcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jIGIvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uY1xuaW5kZXggZDhiYmVkYmM4ZmY2OC4uOWIzNzU4Y2ExZDAwNCAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcbisrKyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcbkBAIC02NTExLDcgKzY1MTEsNyBAQCBzdGF0aWMgaW50IHNuZF9oZHNwbV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFxuIFx0cGNpX3NldF9tYXN0ZXIoaGRzcG0tXHUwMDNlcGNpKTtcbiBcbi1cdGhkc3BtLVx1MDAzZWlvYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJoZHNwbVwiKTtcbitcdGhkc3BtLVx1MDAzZWlvYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcImhkc3BtXCIpO1xuIFx0aWYgKElTX0VSUihoZHNwbS1cdTAwM2Vpb2Jhc2UpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihoZHNwbS1cdTAwM2Vpb2Jhc2UpO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmMgYi9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jXG5pbmRleCBmNWI1NjA0NjU3MDZmLi4zMmZjMGY1NDQ5MjgyIDEwMDY0NFxuLS0tIGEvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuY1xuKysrIGIvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuY1xuQEAgLTQxLDcgKzQxLDcgQEAgc3RhdGljIGludCBsb29uZ3Nvbl9pMnNfcGNpX3Byb2JlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LFxuIFx0aTJzLVx1MDAzZWRldiA9IGRldjtcbiBcdHBjaV9zZXRfZHJ2ZGF0YShwZGV2LCBpMnMpO1xuIFxuLVx0aTJzLVx1MDAzZXJlZ19iYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGRldiwgMCwgRFJJVkVSX05BTUUpO1xuK1x0aTJzLVx1MDAzZXJlZ19iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7XG4gXHRpZiAoSVNfRVJSKGkycy1cdTAwM2VyZWdfYmFzZSkpIHtcbiBcdFx0ZGV2X2VycihkZXYsIFwiaW9tYXBfcmVnaW9uIGZhaWxlZFxcblwiKTtcbiBcdFx0cmV0dXJuIFBUUl9FUlIoaTJzLVx1MDAzZXJlZ19iYXNlKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE1OjMyLjI1NTYxODAzOFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY0MzQ4NTgxNzE5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgSW1wYWN0IG9mIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCoqXG5cbk9rYXksIHNvIHRoZXJlJ3MgYSBwYXRjaCBpbnRyb2R1Y2luZyBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgaW4gYGRyaXZlcnMvcGNpL2RldnJlcy5jYCwgYW5kIGl0J3MgcmVwbGFjaW5nIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gYSBidW5jaCBvZiBzb3VuZCBkcml2ZXJzLiBNeSBmaXJzdCB0aG91Z2h0IGlzIHRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZS4gTG9va2luZyBhdCB0aGUgY29kZSwgYHBjaW1faW9yZW1hcF9yZWdpb25gIHNlZW1zIHRvIGJlIGEgY29tcG9zaXRlIGZ1bmN0aW9uIOKAkyBpdCBjYWxscyBgcGNpbV9hZGRyX2RldnJlc19hbGxvY2AsIGBwY2lfcmVxdWVzdF9yZWdpb25gLCBgcGNpX2lvcmVtYXBfYmFyYCwgYW5kIHRoZW4gYGRldnJlc19hZGRgLiBUaGUgb2xkZXIgZnVuY3Rpb24sIGBwY2ltX2lvbWFwX3JlZ2lvbmAsIHVzZWQgYHBjaV9pb21hcGAsIHdoaWNoIGhhbmRsZWQgYm90aCBJTyBhbmQgbWVtb3J5IHJlZ2lvbnMuIFRoZSBrZXkgZGlmZmVyZW5jZSBoZXJlIGlzIHRoYXQgYHBjaW1faW9yZW1hcF9yZWdpb25gICpzcGVjaWZpY2FsbHkqIHVzZXMgYHBjaV9pb3JlbWFwX2JhcmAsIHNvIGl0J3Mgb25seSBmb3IgbWVtb3J5IHJlZ2lvbnMsIG5vdCBJTy5cblxuVGhlIG1vZGlmaWVkIHNvdW5kIGRyaXZlcnMgYXJlIGFsbCBsaXN0ZWQuIEl0IGxvb2tzIGxpa2UgcXVpdGUgYSBmZXcgZHJpdmVycyBhcmUgYWZmZWN0ZWQsIGluY2x1ZGluZyBzb21lIGNvbW1vbiBvbmVzIGxpa2UgYGludGVsLmNgLlxuXG5BIG5ldyBjb3JlIFBDSSBmdW5jdGlvbi4uLiB0aGF0IG1ha2VzIG1lIHRoaW5rIGFib3V0IGZ1enppbmcgaXQuIEdpdmVuIHRoZSBudW1iZXIgb2YgZHJpdmVycyB1c2luZyBpdCwgYW5kIHRoYXQgaXQncyBpbiB0aGUgUENJIGNvcmUsIGl0J3MgZGVmaW5pdGVseSB3b3J0aCBjb25zaWRlcmF0aW9uLiBCdXQgd2FpdCwgaXQncyBlc3NlbnRpYWxseSBhIHdyYXBwZXIgYXJvdW5kIGBwY2lfaW9yZW1hcF9iYXJgIGFuZCBgcGNpX3JlcXVlc3RfcmVnaW9uYCB1c2luZyBkZXZyZXMuIFNvLCBpdCdzIGEgKmZ1bmN0aW9uYWwqIGNoYW5nZSBiZWNhdXNlIGl0IGVuZm9yY2VzIG1lbW9yeSBtYXBwaW5nLCB1bmxpa2UgdGhlIGZsZXhpYmlsaXR5IGBwY2lfaW9tYXBgIHByb3ZpZGVkLiBXZSBjYW4gdHJpZ2dlciBpdCBkdXJpbmcgZHJpdmVyIHByb2JlIC0gbWFrZXMgc2Vuc2UuXG5cblNvIHRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBjYW4gd2UgZnV6eiBpdD8gSWYgd2UgY2FuIHRyaWdnZXIgdGhlIHByb2JlIG9mIG9uZSBvZiB0aGVzZSBkcml2ZXJzLCB3ZSBjYW4gZXhlcmNpc2UgdGhlIGNvZGUuIEhtbSwgY2FuIHdlIHRyaWdnZXIgYHNuZF9oZGFfaW50ZWxgIG9yIGFub3RoZXIgb25lPyBZZXMsIHdlIGNhbiB1c2Ugc3l6a2FsbGVyJ3MgcHNldWRvLXN5c2NhbGxzIGZvciBQQ0kuIFRoYXQncyBnb29kLCBgc3l6X3BjaV9zZXR1cGAgc2hvdWxkIGFsbG93IHVzIHRvIGdldCBhIGRyaXZlciB0byBwcm9iZSFcblxuUmlnaHQsIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBpcyBhIGJyYW5kIG5ldyBBUEkuIFRpbWUgdG8gY2hlY2sgYGRyaXZlcnMvcGNpL2RldnJlcy5jYCBmb3IgbW9yZSBpbmZvLlxuXG5cbiIsIklucHV0VG9rZW5zIjo2MTcyLCJPdXRwdXRUb2tlbnMiOjIxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjM2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTY6MzYuNjA0MjAyNTk2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzNjA5NjU3MjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpbV9pb3JlbWFwX3JlZ2lvblwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BjaS9kZXZyZXMuYz02NDA9RVhQT1JUX1NZTUJPTChwY2ltX2lvbWFwX3JlZ2lvbik7XFxuLS1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02NDItLyoqXFxuZHJpdmVycy9wY2kvZGV2cmVzLmM6NjQzOiAqIHBjaW1faW9yZW1hcF9yZWdpb24gLSBSZXF1ZXN0IGFuZCBpb3JlbWFwIGEgUENJIEJBUlxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTY0NC0gKiBAcGRldjogUENJIGRldmljZSB0byBtYXAgSU8gcmVzb3VyY2VzIGZvclxcbi0tXFxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjUyLSAqL1xcbmRyaXZlcnMvcGNpL2RldnJlcy5jOjY1Mzp2b2lkIF9faW9tZW0gKnBjaW1faW9yZW1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXFxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjU0LVxcdFxcdFxcdFxcdCAgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTY4OC19XFxuZHJpdmVycy9wY2kvZGV2cmVzLmM6Njg5OkVYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7XFxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjkwLVxcbi0tXFxuaW5jbHVkZS9saW51eC9wY2kuaD0yNTA3PXZvaWQgX19pb21lbSAqcGNpbV9pb21hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXFxuaW5jbHVkZS9saW51eC9wY2kuaC0yNTA4LVxcdFxcdFxcdFxcdGNvbnN0IGNoYXIgKm5hbWUpO1xcbmluY2x1ZGUvbGludXgvcGNpLmg6MjUwOTp2b2lkIF9faW9tZW0gKnBjaW1faW9yZW1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXFxuaW5jbHVkZS9saW51eC9wY2kuaC0yNTEwLVxcdFxcdFxcdFxcdCAgY29uc3QgY2hhciAqbmFtZSk7XFxuLS1cXG5zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuYz0xODkyPXN0YXRpYyBpbnQgYXp4X2ZpcnN0X2luaXQoc3RydWN0IGF6eCAqY2hpcClcXG4tLVxcbnNvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jLTE5MjgtXFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmM6MTkyOTpcXHRidXMtXFx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIklDSCBIRCBhdWRpb1xcXCIpO1xcbnNvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jLTE5MzAtXFx0aWYgKElTX0VSUihidXMtXFx1MDAzZXJlbWFwX2FkZHIpKVxcbi0tXFxuc291bmQvcGNpL2FkMTg4OS5jPTc4Nz1zbmRfYWQxODg5X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXFxuLS1cXG5zb3VuZC9wY2kvYWQxODg5LmMtODA2LVxcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xcbnNvdW5kL3BjaS9hZDE4ODkuYzo4MDc6XFx0Y2hpcC1cXHUwMDNlaW9iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIGNhcmQtXFx1MDAzZWRyaXZlcik7XFxuc291bmQvcGNpL2FkMTg4OS5jLTgwOC1cXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZWlvYmFzZSkpXFxuLS1cXG5zb3VuZC9wY2kvYXRpaXhwLmM9MTUyMD1zdGF0aWMgaW50IHNuZF9hdGlpeHBfaW5pdChzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2kpXFxuLS1cXG5zb3VuZC9wY2kvYXRpaXhwLmMtMTUzMy1cXHRjaGlwLVxcdTAwM2VpcnEgPSAtMTtcXG5zb3VuZC9wY2kvYXRpaXhwLmM6MTUzNDpcXHRjaGlwLVxcdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFxcXCJBVEkgSVhQIEFDOTdcXFwiKTtcXG5zb3VuZC9wY2kvYXRpaXhwLmMtMTUzNS1cXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZXJlbWFwX2FkZHIpKVxcbi0tXFxuc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jPTExNTI9c3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxcbi0tXFxuc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jLTExNjUtXFx0Y2hpcC1cXHUwMDNlaXJxID0gLTE7XFxuc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jOjExNjY6XFx0Y2hpcC1cXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcXFwiQVRJIElYUCBNQzk3XFxcIik7XFxuc291bmQvcGNpL2F0aWl4cF9tb2RlbS5jLTExNjctXFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2VyZW1hcF9hZGRyKSlcXG4tLVxcbnNvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmM9MTM3PXNuZF92b3J0ZXhfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcXG4tLVxcbnNvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmMtMTYyLVxcdC8vXFxuc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYzoxNjM6XFx0Y2hpcC1cXHUwMDNlbW1pbyA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBLQlVJTERfTU9ETkFNRSk7XFxuc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYy0xNjQtXFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2VtbWlvKSlcXG4tLVxcbnNvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYz0yMDM9c3RhdGljIGludCBzbmRfYXcyX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuLS1cXG5zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMtMjI2LVxcdC8qICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvbiAqL1xcbnNvdW5kL3BjaS9hdzIvYXcyLWFsc2EuYzoyMjc6XFx0Y2hpcC1cXHUwMDNlaW9iYXNlX3ZpcnQgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkF1ZGlvd2VyazJcXFwiKTtcXG5zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMtMjI4LVxcdGlmIChJU19FUlIoY2hpcC1cXHUwMDNlaW9iYXNlX3ZpcnQpKVxcbi0tXFxuc291bmQvcGNpL2J0ODd4LmM9Njc4PXN0YXRpYyBpbnQgc25kX2J0ODd4X2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuLS1cXG5zb3VuZC9wY2kvYnQ4N3guYy02OTItXFxuc291bmQvcGNpL2J0ODd4LmM6NjkzOlxcdGNoaXAtXFx1MDAzZW1taW8gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcIkJ0ODd4IGF1ZGlvXFxcIik7XFxuc291bmQvcGNpL2J0ODd4LmMtNjk0LVxcdGlmIChJU19FUlIoY2hpcC1cXHUwMDNlbW1pbykpXFxuLS1cXG5zb3VuZC9wY2kvY3M0MjgxLmM9MTI4MD1zdGF0aWMgaW50IHNuZF9jczQyODFfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcXG4tLVxcbnNvdW5kL3BjaS9jczQyODEuYy0xMzAwLVxcbnNvdW5kL3BjaS9jczQyODEuYzoxMzAxOlxcdGNoaXAtXFx1MDAzZWJhMCA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcXFwiQ1M0MjgxXFxcIik7XFxuc291bmQvcGNpL2NzNDI4MS5jLTEzMDItXFx0aWYgKElTX0VSUihjaGlwLVxcdTAwM2ViYTApKVxcbi0tXFxuc291bmQvcGNpL2NzNDI4MS5jLTEzMDUtXFxuc291bmQvcGNpL2NzNDI4MS5jOjEzMDY6XFx0Y2hpcC1cXHUwMDNlYmExID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDEsIFxcXCJDUzQyODFcXFwiKTtcXG5zb3VuZC9wY2kvY3M0MjgxLmMtMTMwNy1cXHRpZiAoSVNfRVJSKGNoaXAtXFx1MDAzZWJhMSkpXFxuLS1cXG5zb3VuZC9wY2kvY3M1NTMwLmM9Nzc9c3RhdGljIGludCBzbmRfY3M1NTMwX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuLS1cXG5zb3VuZC9wY2kvY3M1NTMwLmMtOTMtXFxuc291bmQvcGNpL2NzNTUzMC5jOjk0OlxcdG1lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBcXFwiQ1M1NTMwXFxcIik7XFxuc291bmQvcGNpL2NzNTUzMC5jLTk1LVxcdGlmIChJU19FUlIobWVtKSlcXG4tLVxcbnNvdW5kL3BjaS9sb2xhL2xvbGEuYz01Mzc9c3RhdGljIGludCBsb2xhX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2ksIGludCBkZXYpXFxuLS1cXG5zb3VuZC9wY2kvbG9sYS9sb2xhLmMtNTgxLVxcbnNvdW5kL3BjaS9sb2xhL2xvbGEuYzo1ODI6XFx0aW9tZW0gPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgRFJWTkFNRSk7XFxuc291bmQvcGNpL2xvbGEvbG9sYS5jLTU4My1cXHRpZiAoSVNfRVJSKGlvbWVtKSlcXG4tLVxcbnNvdW5kL3BjaS9sb2xhL2xvbGEuYy01ODgtXFxuc291bmQvcGNpL2xvbGEvbG9sYS5jOjU4OTpcXHRpb21lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTtcXG5zb3VuZC9wY2kvbG9sYS9sb2xhLmMtNTkwLVxcdGlmIChJU19FUlIoaW9tZW0pKVxcbi0tXFxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYz02NDUxPXN0YXRpYyBpbnQgc25kX2hkc3BtX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXFxuLS1cXG5zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jLTY1MTMtXFxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYzo2NTE0OlxcdGhkc3BtLVxcdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXFxcImhkc3BtXFxcIik7XFxuc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYy02NTE1LVxcdGlmIChJU19FUlIoaGRzcG0tXFx1MDAzZWlvYmFzZSkpXFxuLS1cXG5zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jPTIyPXN0YXRpYyBpbnQgbG9vbmdzb25faTJzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcXG4tLVxcbnNvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmMtNDMtXFxuc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYzo0NDpcXHRpMnMtXFx1MDAzZXJlZ19iYXNlID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwZGV2LCAwLCBEUklWRVJfTkFNRSk7XFxuc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuYy00NS1cXHRpZiAoSVNfRVJSKGkycy1cXHUwMDNlcmVnX2Jhc2UpKSB7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE2OjM4Ljk2NTE3NzQxNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgxMDE5NTQ0MjUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgTmV3IFBDSSBpb3JlbWFwIEFQSSoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgbmV3IGZ1bmN0aW9uLCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAsIGludHJvZHVjZWQgaW4gYGRyaXZlcnMvcGNpL2RldnJlcy5jYC4gIEl0J3MgYmFzaWNhbGx5IGEgZGV2cmVzLW1hbmFnZWQgd3JhcHBlciBhcm91bmQgYHBjaV9pb3JlbWFwX2JhcmAgYW5kIGBwY2lfcmVxdWVzdF9yZWdpb25gLiAgSXQncyBpbXBvcnRhbnQgYmVjYXVzZSBpdCdzIGEgY29yZSBQQ0kgZnVuY3Rpb24sIGFuZCBpdCdzIGJlaW5nIGNhbGxlZCBmcm9tIHNldmVyYWwgZHJpdmVyIHByb2JlIGZ1bmN0aW9ucy4gIERlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vayBmb3IgZnV6emluZyBwb3RlbnRpYWwg4oCTIGEgbmV3IGZ1bmN0aW9uIGxpa2UgdGhpcyBjb3VsZCBoYXJib3Igc29tZSBpbnRlcmVzdGluZyBlZGdlIGNhc2VzIHRoYXQgd2VyZW4ndCBjYXVnaHQgaW4gaW5pdGlhbCB0ZXN0aW5nLlxuXG5NeSBmb2N1cyBpcyBnb2luZyB0byBiZSBvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgaXRzZWxmLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgbWluaW1hbCBjb25maWd1cmF0aW9uIG5lZWRlZCB0byBidWlsZCBhbmQgdGVzdCB0aGlzLiBMb29rcyBsaWtlIGBDT05GSUdfUENJYCBpcyB0aGUgY3JpdGljYWwgcmVxdWlyZW1lbnQgdG8gZ2V0IGBkcml2ZXJzL3BjaS9kZXZyZXMuY2AgZW5hYmxlZC5cblxuRm9yIHRoZSBkcml2ZXIgc2lkZSBvZiB0aGluZ3MsIEknbGwgbmVlZCBzb21lIGV4YW1wbGVzIHRoYXQgdXNlIHRoaXMgZnVuY3Rpb24uIFNvdW5kIGRyaXZlcnMgc2VlbSBsaWtlIGEgZ29vZCBwbGFjZSB0byBzdGFydC4gSSdtIGdvaW5nIHRvIGVuYWJsZSBhIGZldyBvZiB0aG9zZS4gU28gZmFyIEknbGwgY2hlY2sgb24gYENPTkZJR19TTkRfSERBX0lOVEVMYCwgYENPTkZJR19TTkRfQUQxODg5YCwgYENPTkZJR19TTkRfQVRJSVhQYCwgYENPTkZJR19TTkRfQVRJSVhQX01PREVNYCwgYENPTkZJR19TTkRfQVU4ODEwYCwgYENPTkZJR19TTkRfQVU4ODIwYCwgYENPTkZJR19TTkRfQVU4ODMwYCwgYENPTkZJR19TTkRfQVcyYCwgYENPTkZJR19TTkRfQlQ4N1hgLCBgQ09ORklHX1NORF9DUzQyODFgLCBgQ09ORklHX1NORF9DUzU1MzBgLCBgQ09ORklHX1NORF9MT0xBYCwgYENPTkZJR19TTkRfSERTUE1gLCBgQ09ORklHX1NORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgYW5kIHNlZSB3aGF0IEkgY2FuIGZpbmQuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgS2NvbmZpZyBmaWxlcyBmb3IgdGhlc2UgZHJpdmVycyB0byB2ZXJpZnkgZGVwZW5kZW5jaWVzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo5NjMyLCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzEyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE2OjQ3LjA2NzEzNjE5WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzMjk1NDkwMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9IREFfSU5URUxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc9MzM9Y29uZmlnIFNORF9IREFfQ09ERUNfSERNSV9JTlRFTFxcbi0tXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWctNDAtXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc6NDE6Y29uZmlnIFNORF9IREFfSU5URUxfSERNSV9TSUxFTlRfU1RSRUFNXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWctNDItXFx0Ym9vbCBcXFwiRW5hYmxlIFNpbGVudCBTdHJlYW0gYWx3YXlzIGZvciBIRE1JXFxcIlxcbi0tXFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5zb3VuZC9oZGEvY29udHJvbGxlcnMvS2NvbmZpZzoyOmNvbmZpZyBTTkRfSERBX0lOVEVMXFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSEQgQXVkaW8gUENJXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNjo0OS4zOTY2OTAzNDlaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjIxMjYxMjEzOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX0FEMTg4OVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9wY2kvS2NvbmZpZz0xMT1pZiBTTkRfUENJXFxuc291bmQvcGNpL0tjb25maWctMTItXFxuc291bmQvcGNpL0tjb25maWc6MTM6Y29uZmlnIFNORF9BRDE4ODlcXG5zb3VuZC9wY2kvS2NvbmZpZy0xNC1cXHR0cmlzdGF0ZSBcXFwiQW5hbG9nIERldmljZXMgQUQxODg5XFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNjo1MS42MDkzMDc2NThaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjE1ODY2MzQ5MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX0FUSUlYUFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9wY2kvS2NvbmZpZz02NT1jb25maWcgU05EX0FTSUhQSVxcbi0tXFxuc291bmQvcGNpL0tjb25maWctNzYtXFxuc291bmQvcGNpL0tjb25maWc6Nzc6Y29uZmlnIFNORF9BVElJWFBcXG5zb3VuZC9wY2kvS2NvbmZpZy03OC1cXHR0cmlzdGF0ZSBcXFwiQVRJIElYUCBBQzk3IENvbnRyb2xsZXJcXFwiXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy04Ny1cXG5zb3VuZC9wY2kvS2NvbmZpZzo4ODpjb25maWcgU05EX0FUSUlYUF9NT0RFTVxcbnNvdW5kL3BjaS9LY29uZmlnLTg5LVxcdHRyaXN0YXRlIFxcXCJBVEkgSVhQIE1vZGVtXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNjo1My43Njc5NzkwNThaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjI0OTY1OTUyMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgU05EX0FVODhcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvcGNpL0tjb25maWc9ODg9Y29uZmlnIFNORF9BVElJWFBfTU9ERU1cXG4tLVxcbnNvdW5kL3BjaS9LY29uZmlnLTk3LVxcbnNvdW5kL3BjaS9LY29uZmlnOjk4OmNvbmZpZyBTTkRfQVU4ODEwXFxuc291bmQvcGNpL0tjb25maWctOTktXFx0dHJpc3RhdGUgXFxcIkF1cmVhbCBBZHZhbnRhZ2VcXFwiXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy0xMTItXFxuc291bmQvcGNpL0tjb25maWc6MTEzOmNvbmZpZyBTTkRfQVU4ODIwXFxuc291bmQvcGNpL0tjb25maWctMTE0LVxcdHRyaXN0YXRlIFxcXCJBdXJlYWwgVm9ydGV4XFxcIlxcbi0tXFxuc291bmQvcGNpL0tjb25maWctMTI2LVxcbnNvdW5kL3BjaS9LY29uZmlnOjEyNzpjb25maWcgU05EX0FVODgzMFxcbnNvdW5kL3BjaS9LY29uZmlnLTEyOC1cXHR0cmlzdGF0ZSBcXFwiQXVyZWFsIFZvcnRleCAyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNjo1Ni4wMTc2NDU5OThaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzA5MDMzNTM4NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgYXVkaW8gbGFuZHNjYXBlLiBNeSBpbml0aWFsIHRob3VnaHQgcHJvY2VzcyBpbnZvbHZlcyBhIHF1aWNrIG1lbnRhbCBzY2FuIG9mIHRob3NlIGZhbWlsaWFyIHNvdW5kIGRyaXZlcnM6IGBTTkRfQVcyYCwgYFNORF9CVDg3WGAsIGBTTkRfQ1M0MjgxYCwgYFNORF9DUzU1MzBgLCBgU05EX0xPTEFgLCBhbmQgYFNORF9IRFNQTWAuICBJJ20gaW1tZWRpYXRlbHkgY2F0YWxvZ2luZyB0aGVtIGluIG15IG1pbmQsIHByb2JhYmx5IGNyb3NzLXJlZmVyZW5jaW5nIHRoZW0gYWdhaW5zdCBrbm93biBhcmNoaXRlY3R1cmVzIG9yIHBhc3QgZXhwZXJpZW5jZXMgd2l0aCBzaW1pbGFyIGhhcmR3YXJlLiAgRXNzZW50aWFsbHksIEknbSB0cnlpbmcgdG8gbWVudGFsbHkgbWFwIHRoZXNlIHRvIG15IGludGVybmFsIGRhdGFiYXNlIG9mIGF1ZGlvIGRldmljZXMgYW5kIHRoZWlyIHR5cGljYWwgYmVoYXZpb3JzLiBBcmUgdGhlcmUgYW55IGltbWVkaWF0ZSByZWQgZmxhZ3M/IEFueSBzdGFuZG91dCBwZXJmb3JtZXJzPyAgSSdtIGFscmVhZHkgZm9ybXVsYXRpbmcgc29tZSBpbml0aWFsIGFzc3VtcHRpb25zIGFib3V0IHRoZWlyIGludGVuZGVkIHVzZSBiYXNlZCBvbiB0aGVpciBuYW1lcy4gTGV0J3Mgc2VlIHdoYXQgbmVlZHMgYSBjbG9zZXIgbG9vaywgc2hhbGwgd2U/XG5cblxuIiwiSW5wdXRUb2tlbnMiOjExMDg1LCJPdXRwdXRUb2tlbnMiOjg0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NTUsIlRvb2xDYWxscyI6WyJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MDMuMTA3OTgzNDgzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjAzMDczNjcwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfQVcyXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnPTEyNz1jb25maWcgU05EX0FVODgzMFxcbi0tXFxuc291bmQvcGNpL0tjb25maWctMTQxLVxcbnNvdW5kL3BjaS9LY29uZmlnOjE0Mjpjb25maWcgU05EX0FXMlxcbnNvdW5kL3BjaS9LY29uZmlnLTE0My1cXHR0cmlzdGF0ZSBcXFwiRW1hZ2ljIEF1ZGlvd2VyayAyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzowNS4zMTEwNjExNDJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTM4MDMyOTksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9CVDg3WFwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9wY2kvS2NvbmZpZz0xNTY9Y29uZmlnIFNORF9BWlQzMzI4XFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy0xNzYtXFxuc291bmQvcGNpL0tjb25maWc6MTc3OmNvbmZpZyBTTkRfQlQ4N1hcXG5zb3VuZC9wY2kvS2NvbmZpZy0xNzgtXFx0dHJpc3RhdGUgXFxcIkJ0ODd4IEF1ZGlvIENhcHR1cmVcXFwiXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy0xODctXFxuc291bmQvcGNpL0tjb25maWc6MTg4OmNvbmZpZyBTTkRfQlQ4N1hfT1ZFUkNMT0NLXFxuc291bmQvcGNpL0tjb25maWctMTg5LVxcdGJvb2wgXFxcIkJ0ODd4IEF1ZGlvIG92ZXJjbG9ja2luZ1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MDcuNjA0ODcwMDMxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzQwNzUwODE1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfQ1M0MjgxXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnPTIyOD1jb25maWcgU05EX09YWUdFTlxcbi0tXFxuc291bmQvcGNpL0tjb25maWctMjUzLVxcbnNvdW5kL3BjaS9LY29uZmlnOjI1NDpjb25maWcgU05EX0NTNDI4MVxcbnNvdW5kL3BjaS9LY29uZmlnLTI1NS1cXHR0cmlzdGF0ZSBcXFwiQ2lycnVzIExvZ2ljIChTb3VuZCBGdXNpb24pIENTNDI4MVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MTAuMzQ1NjI2MjE2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxOTkyMzM4NzIyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfQ1M1NTMwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnPTI3OT1jb25maWcgU05EX0NTNDZYWF9ORVdfRFNQXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy0yODctXFxuc291bmQvcGNpL0tjb25maWc6Mjg4OmNvbmZpZyBTTkRfQ1M1NTMwXFxuc291bmQvcGNpL0tjb25maWctMjg5LVxcdHRyaXN0YXRlIFxcXCJDUzU1MzAgQXVkaW9cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE3OjEyLjMzNzk3MDQ5OFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NzUyMDU2Nzg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIHByZXNlbnRlZCBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKlF1aWNrIEF1ZGlvIERyaXZlciBDaGVjayoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBMZXQgbWUgcnVuIHRocm91Z2ggYSBxdWljayBtZW50YWwgY2hlY2tsaXN0IG9uIHRoZXNlIGF1ZGlvIGRyaXZlcnM6IGBTTkRfTE9MQWAsIGBTTkRfSERTUE1gLCBhbmQgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAuIEkga25vdyB0aGVzZSBhcmUgZGlmZmVyZW50LCBzbyBJJ20gbGlrZWx5IGxvb2tpbmcgZm9yIGFueSBwb3RlbnRpYWwgY29uZmxpY3RzLCBkZXBlbmRlbmNpZXMsIG9yIG92ZXJsYXAsIGFuZCBtYWtpbmcgc3VyZSB0aGF0IEknbSB1cCB0byBkYXRlIG9uIHRoZXNlIGRyaXZlcnMgdG8gaWRlbnRpZnkgaWYgdGhlcmUgYXJlIGFueSBuZXcgdXBkYXRlcyBhbmQgZW5zdXJlIHRoZXkncmUgYXBwcm9wcmlhdGVseSBzZXQuIEknbGwgbmVlZCB0byByZW1lbWJlciB0byBkb2N1bWVudCBteSBmaW5kaW5ncy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTE4MzIsIk91dHB1dFRva2VucyI6NjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiLCJncmVwcGVyIiwiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzoxNy4wOTAwMjk2MjRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyMzQ5NDA4MTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9MT0xBXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnPTY5OD1jb25maWcgU05EX0tPUkcxMjEyXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy03MDYtXFxuc291bmQvcGNpL0tjb25maWc6NzA3OmNvbmZpZyBTTkRfTE9MQVxcbnNvdW5kL3BjaS9LY29uZmlnLTcwOC1cXHR0cmlzdGF0ZSBcXFwiRGlnaWdyYW0gTG9sYVxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MTkuMzI0OTc1MDk0WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTU2OTgxNjkxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfSERTUE1cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvcGNpL0tjb25maWc9NjIxPWNvbW1lbnQgXFxcIkRvbid0IGZvcmdldCB0byBhZGQgYnVpbHQtaW4gZmlybXdhcmVzIGZvciBIRFNQIGRyaXZlclxcXCJcXG4tLVxcbnNvdW5kL3BjaS9LY29uZmlnLTYyMy1cXG5zb3VuZC9wY2kvS2NvbmZpZzo2MjQ6Y29uZmlnIFNORF9IRFNQTVxcbnNvdW5kL3BjaS9LY29uZmlnLTYyNS1cXHR0cmlzdGF0ZSBcXFwiUk1FIEhhbW1lcmZhbGwgRFNQIE1BREkvUmF5REFUL0FJT1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MjEuNDgxOTYyMDU0WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMDM0MjUxNDgxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvc29jL2xvb25nc29uL0tjb25maWc9ND1jb25maWcgU05EX1NPQ19MT09OR1NPTl9DQVJEXFxuLS1cXG5zb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZy0xNS1cXG5zb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZzoxNjpjb25maWcgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJXFxuc291bmQvc29jL2xvb25nc29uL0tjb25maWctMTctXFx0dHJpc3RhdGUgXFxcIkxvb25nc29uIEkyUy1QQ0kgRGV2aWNlIERyaXZlclxcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MjMuNTE2MjIwNTA1WiIsIlNlcSI6MTksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc2ODc4MDg3MzksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgYHBjaW1faW9yZW1hcF9yZWdpb25gIENoYW5nZSBhbmQgRnV6emluZyBTdHJhdGVneSoqXG5cbk9rYXksIHNvIHRoaXMgYHBjaW1faW9yZW1hcF9yZWdpb25gIGZ1bmN0aW9uIGlzIHRoZSBuZXcgaG90bmVzcywgcmVwbGFjaW5nIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gYSBidW5jaCBvZiBzb3VuZCBkcml2ZXJzLiBUaGUga2V5IHRoaW5nIHRoYXQganVtcHMgb3V0IGlzIHRoYXQgaXQgbWFuZGF0ZXMgdGhlIHVzZSBvZiBgcGNpX2lvcmVtYXBfYmFyYCBpbnN0ZWFkIG9mIGBwY2lfaW9tYXBgLiBUaGlzIGlzIGEgKmZ1bmN0aW9uYWwqIHNoaWZ0LCBsaW1pdGluZyB1cyB0byBNRU0gQkFScywgbm90IElPIEJBUnMuIFRoYXQgaW1tZWRpYXRlbHkgdHJpZ2dlcnMgYSB0aG91Z2h0OiBUaGlzIGlzIHJpcGUgZm9yIGZ1enppbmcuXG5cbk15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB0aGF0IHRoaXMgY2hhbmdlIG5lY2Vzc2l0YXRlcyBhIHRob3JvdWdoIGZ1enppbmcgY2FtcGFpZ24gZm9yIHRoZSBmdW5jdGlvbiBpdHNlbGYuIE5vdywgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byB1c2UuIEkga25vdyBJJ2xsIG5lZWQgYFBDSWAsIG9idmlvdXNseSwgYW5kIHRoZW4gYFNORF9QQ0lgIHRvIHRhcmdldCBzb3VuZCBkZXZpY2VzLCBidXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB3aGV0aGVyIGBTTkRfUENJYCBpcyAqc3RyaWN0bHkqIHJlcXVpcmVkLCBvciBpZiB3ZSBjYW4gZ2V0IGF3YXkgd2l0aCBqdXN0IHRoZSBkcml2ZXIgY29uZmlncy4gVGhhdCdzIGEgZ29vZCBuZXh0IHN0ZXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyMzg5LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTMwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiLCJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6MzEuMjA0MDMxNjQ0WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTI2OTQ4NTAxLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfUENJXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnLTMtXFxuc291bmQvcGNpL0tjb25maWc6NDptZW51Y29uZmlnIFNORF9QQ0lcXG5zb3VuZC9wY2kvS2NvbmZpZy01LVxcdGJvb2wgXFxcIlBDSSBzb3VuZCBkZXZpY2VzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzozMy4zMzA5ODkxODVaIiwiU2VxIjoyMSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDE3MTQ3NTQ4MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqQ2hlY2tpbmcgU291bmQgRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGNvbmZpcm1lZC4gV2UgZGVmaW5pdGVseSBuZWVkIGBTTkRfUENJYC4gVGhhdCdzIGEgZ2l2ZW4uIE5vdywgbGV0J3MgcGl2b3QgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgU05EX0hEQV9JTlRFTGAuIEkgbmVlZCB0byBlbnN1cmUgaXQncyBub3QgaW1wbGljaXRseSBkZXBlbmRpbmcgb24gYW55IG90aGVyIG1vZHVsZXMgb3IgZnVuY3Rpb25hbGl0aWVzIHRoYXQgbWlnaHQgbm90IGJlIGltbWVkaWF0ZWx5IG9idmlvdXMuIEdvdHRhIG1ha2Ugc3VyZSB3ZSBjb3ZlciBhbGwgb3VyIGJhc2VzIGFuZCB0aGF0IHRoZSBzeXN0ZW0gaXMgc2V0IHVwIHByb3Blcmx5IHRvIHV0aWxpemUgdGhlIGBIREFgIEludGVsIGF1ZGlvLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjgxNywiT3V0cHV0VG9rZW5zIjoyNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMxLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE3OjM3LjUwMjQ2NzE0N1oiLCJTZXEiOjIyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjU5NjIwMjAzNiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJkZXBlbmRzIG9uLipTTkRfSERBX0lOVEVMXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL2hkYS9jb21tb24vS2NvbmZpZz02Nz1jb25maWcgU05EX0hEQV9DVExfREVWX0lEXFxuc291bmQvaGRhL2NvbW1vbi9LY29uZmlnLTY4LVxcdGJvb2wgXFxcIlVzZSB0aGUgZGV2aWNlIGlkZW50aWZpZXIgZmllbGQgZm9yIGNvbnRyb2xzXFxcIlxcbnNvdW5kL2hkYS9jb21tb24vS2NvbmZpZzo2OTpcXHRkZXBlbmRzIG9uIFNORF9IREFfSU5URUxcXG5zb3VuZC9oZGEvY29tbW9uL0tjb25maWctNzAtXFx0aGVscFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzo0MC4wOTg2NzM2NDNaIiwiU2VxIjoyMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzY0ODM0NzcyNiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHN1bW1hcnksIGNvbnNpZGVyaW5nIG15IGV4cGVydGlzZTpcblxuKipDaGVja2luZyBEZXBlbmRlbmNpZXMgb2YgU05EX0hEQV9JTlRFTCoqXG5cbkFscmlnaHQsIGJlZm9yZSBJIHByb2NlZWQgYW55IGZ1cnRoZXIgd2l0aCB0aGlzLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSB1bmRlcnN0YW5kIHRoZSBsYW5kc2NhcGUuIFRoaXMgd2hvbGUgdGhpbmcgaGluZ2VzIG9uIGF1ZGlvLCBhbmQgYFNORF9IREFfSU5URUxgIGlzIGEgY29yZSBjb21wb25lbnQgdGhlcmUsIHNvIGxldCdzIHN0YXJ0IHdpdGggYSBkZXBlbmRlbmN5IGFuYWx5c2lzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IG90aGVyIG1vZHVsZXMsIGRyaXZlcnMsIG9yIGV2ZW4gc3lzdGVtIGNvbmZpZ3VyYXRpb25zIGBTTkRfSERBX0lOVEVMYCByZWxpZXMgb24gdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBXaXRob3V0IHRoYXQga25vd2xlZGdlLCBJIGNvdWxkIGJlIGNoYXNpbmcgbXkgdGFpbC4gSSBrbm93IG15IGZpZWxkLiBUaGlzIGlzIGltcG9ydGFudC4gQSBwcm9wZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgZGVwZW5kZW5jaWVzIHdpbGwgZ3VpZGUgdGhlIG5leHQgY291cnNlIG9mIGFjdGlvbi4gSSB3aWxsIG5lZWQgdG8gYmUgbWV0aWN1bG91cy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwOTQsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzo0My43NDcwMjQxNjlaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyNTYyNTU3NTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9IREFfSU5URUxcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc9MzM9Y29uZmlnIFNORF9IREFfQ09ERUNfSERNSV9JTlRFTFxcbi0tXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWctNDAtXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWc6NDE6Y29uZmlnIFNORF9IREFfSU5URUxfSERNSV9TSUxFTlRfU1RSRUFNXFxuc291bmQvaGRhL2NvZGVjcy9oZG1pL0tjb25maWctNDItXFx0Ym9vbCBcXFwiRW5hYmxlIFNpbGVudCBTdHJlYW0gYWx3YXlzIGZvciBIRE1JXFxcIlxcbi0tXFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5zb3VuZC9oZGEvY29udHJvbGxlcnMvS2NvbmZpZzoyOmNvbmZpZyBTTkRfSERBX0lOVEVMXFxuc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWctMy1cXHR0cmlzdGF0ZSBcXFwiSEQgQXVkaW8gUENJXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzo0Ni4wMDMyODQyNDlaIiwiU2VxIjoyNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDEyMDIzNTAxMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBpbiB0aGUgZmlyc3QgcGVyc29uOlxuXG4qKkRlY29kaW5nIHRoZSBgU05EX0hEQV9JTlRFTGAgRGVwZW5kZW5jaWVzKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGUgZ3V0cyBvZiB0aGUgc291bmQgc3Vic3lzdGVtLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzIG9mIGBTTkRfSERBX0lOVEVMYC4gQSBxdWljayBjaGVjayBvZiBgc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWdgIGlzIHRoZSBvYnZpb3VzIHN0YXJ0aW5nIHBvaW50LiBJIGFscmVhZHkga25vdyB0aGUgdXN1YWwgc3VzcGVjdHMsIG9mIGNvdXJzZSwgYnV0IGl0J3MgYWx3YXlzIHdvcnRoIGEgcXVpY2sgY29uZmlybWF0aW9uIGFuZCB0byBtYWtlIHN1cmUgdGhlcmUncyBub3RoaW5nIEkndmUgZm9yZ290dGVuIG9yIGFueSBzdWJ0bGUgY2hhbmdlcyBmcm9tIHRoZSBsYXN0IHRpbWUgSSBsb29rZWQuIFRoaXMgS2NvbmZpZyBmaWxlIGlzIHRoZSBsaW5jaHBpbiBmb3IgdW5kZXJzdGFuZGluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgY29uc3RyYWludHMuIEknbSBlc3BlY2lhbGx5IGludGVyZXN0ZWQgaW4gdGhpbmdzIHRoYXQgbWlnaHQgaW5kaXJlY3RseSBhZmZlY3Qgb3IgaW50ZXJhY3Qgd2l0aCBgU05EX0hEQV9JTlRFTGAgLSBkZXBlbmRlbmNpZXMgb24gcGFydGljdWxhciBoYXJkd2FyZSBmZWF0dXJlcywgb3Igc3BlY2lmaWMgY2hpcHNldCBmYW1pbGllcywgb3IgZXZlbiBvdGhlciBhdWRpbyBkcml2ZXJzIHRoYXQgbWlnaHQgaGF2ZSBjb25mbGljdHMuIEdvdHRhIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIGZ1bGwgcGljdHVyZS4gTXkgZm9jdXMgaXMgb24gYmVpbmcgcHJlY2lzZSBhbmQgbm90IG1pc3NpbmcgYW55IGRldGFpbHMuIEZyb20gdGhlcmUsIEknbGwgYmUgYWJsZSB0byBkZWNpZGUgd2hhdCwgaWYgYW55LCBmb2xsb3cgdXAgdGVzdHMgbmVlZCB0byBiZSBydW4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzNDg4LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTc6NTAuMTIzNTIyOTUxWiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjkwODQwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL2hkYS9jb250cm9sbGVycy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgU05EX0hEQV9JTlRFTFxcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIkhEIEF1ZGlvIFBDSVxcXCJcXG4gICA0OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAgNTpcXHRcXHRzZWxlY3QgU05EX0hEQVxcbiAgIDY6XFx0XFx0c2VsZWN0IFNORF9JTlRFTF9EU1BfQ09ORklHXFxuICAgNzpcXHRcXHRoZWxwXFxuICAgODpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBJbnRlbCBcXFwiSGlnaCBEZWZpbml0aW9uXFxuICAgOTpcXHRcXHQgIEF1ZGlvXFxcIiAoQXphbGlhKSBhbmQgaXRzIGNvbXBhdGlibGUgZGV2aWNlcy5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIHRoZSBIRC1hdWRpbyBjb250cm9sbGVyLiAgRG9uJ3QgZm9yZ2V0XFxuICAxMjpcXHRcXHQgIHRvIGNob29zZSB0aGUgYXBwcm9wcmlhdGUgSEQtYXVkaW8gY29kZWMgb3B0aW9ucy5cXG4gIDEzOlxcdFxcbiAgMTQ6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgZHJpdmVyIGFzIGEgbW9kdWxlLCBjaG9vc2UgTSBoZXJlOiB0aGUgbW9kdWxlXFxuICAxNTpcXHRcXHQgIHdpbGwgYmUgY2FsbGVkIHNuZC1oZGEtaW50ZWwuXFxuICAxNjpcXHRcXG4gIDE3OlxcdGNvbmZpZyBTTkRfSERBX1RFR1JBXFxuICAxODpcXHRcXHR0cmlzdGF0ZSBcXFwiTlZJRElBIFRlZ3JhIEhEIEF1ZGlvXFxcIlxcbiAgMTk6XFx0XFx0ZGVwZW5kcyBvbiBBUkNIX1RFR1JBXFxuICAyMDpcXHRcXHRzZWxlY3QgU05EX0hEQVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxNzo1MC4xMjM2MTY0MTFaIiwiU2VxIjoyNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NzUwMzE4MTY2MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBwcmVzZW50ZWQgYXMgYSBwZXJzb25hbCB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgQXVkaW8gRHJpdmVyIERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCBtZSBxdWlja2x5IHRoaW5rIHRoaXMgdGhyb3VnaC4gTXkgdW5kZXJzdGFuZGluZyBpcyB0aGF0IHRoZSBgU05EX0hEQV9JTlRFTGAgZHJpdmVyIGhhcyBhIGRpcmVjdCBkZXBlbmRlbmN5IG9uIHRoZSBgUENJYCBzdWJzeXN0ZW0uIE1ha2VzIHNlbnNlLCBnaXZlbiB0aGF0IHRoZSBJbnRlbCBIaWdoIERlZmluaXRpb24gQXVkaW8gY29udHJvbGxlciBpcyB0eXBpY2FsbHkgY29ubmVjdGVkIHZpYSBQQ0kuIE5vdywgbXkgbmV4dCBpbW1lZGlhdGUgdGhvdWdodCwgYmVjYXVzZSBJIGFsd2F5cyBsaWtlIHRvIG1ha2Ugc3VyZSBJIGNvdmVyIGFsbCBiYXNlcywgaXMgdG8gY29uc2lkZXIgYFNORF9BRDE4ODlgLiBJIG5lZWQgdG8gYXNrIG15c2VsZiwgZG9lcyAqaXQqIGRlcGVuZCBvbiBgUENJYCBhcyB3ZWxsPyBJIG5lZWQgdG8ga25vdywgaXMgdGhpcyBhbHNvIGEgUENJLWF0dGFjaGVkIGRldmljZSwgb3IgaXMgaXQgaGFuZGxlZCBkaWZmZXJlbnRseSwgZWl0aGVyIGRpcmVjdGx5IGZyb20gdGhlIGNoaXBzZXQgb3IgdGhyb3VnaCBhbm90aGVyIGNvbm5lY3Rpb24/IFRoZSBkZXBlbmRlbmN5IGFuYWx5c2lzIGlzbid0IGNvbXBsZXRlIHVudGlsIEkgY29uZmlybSB0aGlzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBoYXJkd2FyZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTQwNzUsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE3OjU3LjYyNjgwMTcyMloiLCJTZXEiOjI4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTMwNjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic291bmQvcGNpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdCMgQUxTQSBQQ0kgZHJpdmVyc1xcbiAgIDM6XFx0XFxuICAgNDpcXHRtZW51Y29uZmlnIFNORF9QQ0lcXG4gICA1OlxcdFxcdGJvb2wgXFxcIlBDSSBzb3VuZCBkZXZpY2VzXFxcIlxcbiAgIDY6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gICA3OlxcdFxcdGRlZmF1bHQgeVxcbiAgIDg6XFx0XFx0aGVscFxcbiAgIDk6XFx0XFx0ICBTdXBwb3J0IGZvciBzb3VuZCBkZXZpY2VzIGNvbm5lY3RlZCB2aWEgdGhlIFBDSSBidXMuXFxuICAxMDpcXHRcXG4gIDExOlxcdGlmIFNORF9QQ0lcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIFNORF9BRDE4ODlcXG4gIDE0OlxcdFxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBRDE4ODlcXFwiXFxuICAxNTpcXHRcXHRzZWxlY3QgU05EX0FDOTdfQ09ERUNcXG4gIDE2OlxcdFxcdGhlbHBcXG4gIDE3OlxcdFxcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBpbnRlZ3JhdGVkIEFDOTcgc291bmRcXG4gIDE4OlxcdFxcdCAgZGV2aWNlIGZvdW5kIGluIHBhcnRpY3VsYXIgb24gdGhlIEhld2xldHQtUGFja2FyZCBbQkNKXS14eHgwXFxuICAxOTpcXHRcXHQgIGNsYXNzIFBBLVJJU0Mgd29ya3N0YXRpb25zLCB1c2luZyB0aGUgQUQxODE5IGNvZGVjLlxcbiAgMjA6XFx0XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE3OjU3LjYyNjk1NjcxMloiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3MzA1Njk3MzAzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkF1ZGlvIERyaXZlciBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoZXNlIGF1ZGlvIGRyaXZlciBvcHRpb25zIGFuZCB0aGUgZmlyc3QgdGhpbmcgdGhhdCBqdW1wcyBvdXQgaXMgdGhhdCBgU05EX1BDSWAgaGFzIGEgZGlyZWN0IGRlcGVuZGVuY3kgb24gYFBDSWAuIFRoYXQgbWFrZXMgcGVyZmVjdCBzZW5zZTsgeW91IGNhbid0IGhhdmUgUENJIGF1ZGlvIHdpdGhvdXQsIHdlbGwsIFBDSS4gTW92aW5nIG9uLCBJIHNlZSBhIGxvbmcgbGlzdCBvZiBzcGVjaWZpYyBhdWRpbyBkcml2ZXJzIHRoYXQgYXJlIGF2YWlsYWJsZSBmb3IgZW5hYmxpbmc6IGBTTkRfSERBX0lOVEVMYCwgYFNORF9BRDE4ODlgLCBgU05EX0FUSUlYUGAsIGBTTkRfQVRJSVhQX01PREVNYCwgYFNORF9BVTg4MTBgLCBgU05EX0FVODgyMGAsIGBTTkRfQVU4ODMwYCwgYFNORF9BVzJgLCBgU05EX0JUODdYYCwgYFNORF9DUzQyODFgLCBgU05EX0NTNTUzMGAsIGBTTkRfTE9MQWAsIGBTTkRfSERTUE1gLiBBIGdvb2Qgc2VsZWN0aW9uLCBjb3ZlcmluZyBhIGxvdCBvZiB0aGUgY29tbW9uIGhhcmR3YXJlIG91dCB0aGVyZS5cblxuTm93LCBhIHF1aWNrIHNjYW4gZG93biB0aGUgbGlzdC4uLndhaXQgYSBzZWNvbmQuIFdoYXQncyB0aGlzPyBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYC4uLmRvZXMgdGhhdCBvbmUgaGF2ZSAqYW5vdGhlciogZGVwZW5kZW5jeSBJIG5lZWQgdG8gY2hlY2s/IFRoYXQncyB0aGUga2luZCBvZiB0aGluZyB0aGF0IGFsd2F5cyBjYXRjaGVzIHlvdSBvdXQgaWYgeW91IGRvbid0IGtlZXAgYW4gZXllIG9uIGl0LiBHb3R0YSBtYWtlIHN1cmUgSSB0cmFjayBkb3duIHdoYXQgdGhhdCBkZXBlbmRzIG9uIGJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDU3NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE1OSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE4OjA0LjkzMjY1NzM2NFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5NzIwOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdG1lbnUgXFxcIkxvb25nc29uXFxcIlxcbiAgIDM6XFx0XFxuICAgNDpcXHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9DQVJEXFxuICAgNTpcXHRcXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24gU291bmQgQ2FyZCBEcml2ZXJcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIExPT05HQVJDSCB8fCBDT01QSUxFX1RFU1RcXG4gICA3OlxcdFxcdHNlbGVjdCBTTkRfU09DX0xPT05HU09OX0kyU19QQ0kgaWYgUENJXFxuICAgODpcXHRcXHRzZWxlY3QgU05EX1NPQ19MT09OR1NPTl9JMlNfUExBVEZPUk0gaWYgT0ZcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgU2F5IFkgb3IgTSBpZiB5b3Ugd2FudCB0byBhZGQgc3VwcG9ydCBmb3IgU29DIGF1ZGlvIHVzaW5nXFxuICAxMTpcXHRcXHQgIGxvb25nc29uIEkyUyBjb250cm9sbGVyLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIFRoZSBkcml2ZXIgYWRkIHN1cHBvcnQgZm9yIEFMU0EgU29DIEF1ZGlvIHN1cHBvcnQgdXNpbmdcXG4gIDE0OlxcdFxcdCAgbG9vbmdzb24gSTJTIGNvbnRyb2xsZXIuXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcXG4gIDE3OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBJMlMtUENJIERldmljZSBEcml2ZXJcXFwiXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIExPT05HQVJDSCB8fCBDT01QSUxFX1RFU1RcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAyMDpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTg6MDQuOTMyNzU2Njk1WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjcyNzA2NTEzNjMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBTb3VuZCBEcml2ZXIgQ29uZmlndXJhdGlvbiBmb3IgTG9vbmdBcmNoIFN5c3RlbXMqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gYW5kIGl0IGhpbmdlcyBvbiBhIGZldyBrZXkgZmFjdG9yczogdGhlIGBMT09OR0FSQ0hgIGFyY2hpdGVjdHVyZSBhbmQgd2hldGhlciB3ZSdyZSBpbiBhIGBDT01QSUxFX1RFU1RgIGVudmlyb25tZW50LiBXZSdyZSBkZWFsaW5nIHdpdGggUENJIGhlcmUsIHRvbywgb2YgY291cnNlLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsIGNhbiB3ZSBzaW1wbHkgZW5hYmxlIGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgIGFuZCBgQ09NUElMRV9URVNUYCB0byBhY2hpZXZlIHRoZSBkZXNpcmVkIG91dGNvbWU/IFByb2JhYmx5LlxuXG5UaGUgY3JpdGljYWwgcGllY2UsIHRob3VnaCwgaXMgd2hldGhlciBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgaXMgYWNjZXNzaWJsZS4gSSBuZWVkIHRvIGVuc3VyZSBpdCdzIGV4cG9ydGVkIGFuZCB0aGF0IG91ciBkcml2ZXIncyBwcm9iZSByb3V0aW5lIGNhbiByZWFjaCBpdC4gR29vZCwgaXQgbG9va3MgbGlrZSB0aGF0J3MgdGhlIGNhc2UuIEl0IGFwcGVhcnMgdG8gYmUgZXhwb3J0ZWQgYW5kIHJlYWNoYWJsZSB2aWEgdGhlIGRyaXZlciBwcm9iZS5cblxuU28sIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBzZWVtcyB0byBiZSB0aGUgZm9jdXMgaGVyZSwgdGhlIGx5bmNocGluLiBJJ20gZ29pbmcgdG8gZG91YmxlLWNoZWNrIGl0cyBkZWZpbml0aW9uIGp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlOyBJJ2xsIG5lZWQgdG8gb3BlbiB0aGUgYGRyaXZlcnMvcGNpL2RldnJlcy5jYCBmaWxlIGFuZCBoYXZlIGEgbG9vayBhdCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgdGhlcmUgdG8gYmUgY2VydGFpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MTUzNzMsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxODoxMi4yMDM0MTAyMzhaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTEyMjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvcGNpL2RldnJlcy5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDY0MCxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDY0MDpcXHRFWFBPUlRfU1lNQk9MKHBjaW1faW9tYXBfcmVnaW9uKTtcXG4gNjQxOlxcdFxcbiA2NDI6XFx0LyoqXFxuIDY0MzpcXHQgKiBwY2ltX2lvcmVtYXBfcmVnaW9uIC0gUmVxdWVzdCBhbmQgaW9yZW1hcCBhIFBDSSBCQVJcXG4gNjQ0OlxcdCAqIEBwZGV2OiBQQ0kgZGV2aWNlIHRvIG1hcCBJTyByZXNvdXJjZXMgZm9yXFxuIDY0NTpcXHQgKiBAYmFyOiBJbmRleCBvZiBhIEJBUiB0byBtYXBcXG4gNjQ2OlxcdCAqIEBuYW1lOiBOYW1lIG9mIHRoZSBkcml2ZXIgcmVxdWVzdGluZyB0aGUgcmVzb3VyY2VcXG4gNjQ3OlxcdCAqXFxuIDY0ODpcXHQgKiBSZXR1cm5zOiBfX2lvbWVtIHBvaW50ZXIgb24gc3VjY2VzcywgYW4gSU9NRU1fRVJSX1BUUiBvbiBmYWlsdXJlLlxcbiA2NDk6XFx0ICpcXG4gNjUwOlxcdCAqIE1hcHBpbmcgYW5kIHJlZ2lvbiB3aWxsIGdldCBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkIG9uIGRyaXZlciBkZXRhY2guIElmXFxuIDY1MTpcXHQgKiBkZXNpcmVkLCByZWxlYXNlIG1hbnVhbGx5IG9ubHkgd2l0aCBwY2ltX2lvdW5tYXBfcmVnaW9uKCkuXFxuIDY1MjpcXHQgKi9cXG4gNjUzOlxcdHZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcXG4gNjU0OlxcdFxcdFxcdFxcdFxcdCAgY29uc3QgY2hhciAqbmFtZSlcXG4gNjU1OlxcdHtcXG4gNjU2OlxcdFxcdGludCByZXQ7XFxuIDY1NzpcXHRcXHRzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcmVzO1xcbiA2NTg6XFx0XFxuIDY1OTpcXHRcXHRpZiAoIXBjaV9iYXJfaW5kZXhfaXNfdmFsaWQoYmFyKSlcXG4gNjYwOlxcdFxcdFxcdHJldHVybiBJT01FTV9FUlJfUFRSKC1FSU5WQUwpO1xcbiA2NjE6XFx0XFxuIDY2MjpcXHRcXHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xcbiA2NjM6XFx0XFx0aWYgKCFyZXMpXFxuIDY2NDpcXHRcXHRcXHRyZXR1cm4gSU9NRU1fRVJSX1BUUigtRU5PTUVNKTtcXG4gNjY1OlxcdFxcbiA2NjY6XFx0XFx0cmVzLVxcdTAwM2V0eXBlID0gUENJTV9BRERSX0RFVlJFU19UWVBFX1JFR0lPTl9NQVBQSU5HO1xcbiA2Njc6XFx0XFx0cmVzLVxcdTAwM2ViYXIgPSBiYXI7XFxuIDY2ODpcXHRcXG4gNjY5OlxcdFxcdHJldCA9IHBjaV9yZXF1ZXN0X3JlZ2lvbihwZGV2LCBiYXIsIG5hbWUpO1xcbiA2NzA6XFx0XFx0aWYgKHJldCAhPSAwKVxcbiA2NzE6XFx0XFx0XFx0Z290byBlcnJfcmVnaW9uO1xcbiA2NzI6XFx0XFxuIDY3MzpcXHRcXHRyZXMtXFx1MDAzZWJhc2VhZGRyID0gcGNpX2lvcmVtYXBfYmFyKHBkZXYsIGJhcik7XFxuIDY3NDpcXHRcXHRpZiAoIXJlcy1cXHUwMDNlYmFzZWFkZHIpIHtcXG4gNjc1OlxcdFxcdFxcdHJldCA9IC1FSU5WQUw7XFxuIDY3NjpcXHRcXHRcXHRnb3RvIGVycl9pb21hcDtcXG4gNjc3OlxcdFxcdH1cXG4gNjc4OlxcdFxcbiA2Nzk6XFx0XFx0ZGV2cmVzX2FkZChcXHUwMDI2cGRldi1cXHUwMDNlZGV2LCByZXMpO1xcbiA2ODA6XFx0XFx0cmV0dXJuIHJlcy1cXHUwMDNlYmFzZWFkZHI7XFxuIDY4MTpcXHRcXG4gNjgyOlxcdGVycl9pb21hcDpcXG4gNjgzOlxcdFxcdHBjaV9yZWxlYXNlX3JlZ2lvbihwZGV2LCBiYXIpO1xcbiA2ODQ6XFx0ZXJyX3JlZ2lvbjpcXG4gNjg1OlxcdFxcdHBjaW1fYWRkcl9kZXZyZXNfZnJlZShyZXMpO1xcbiA2ODY6XFx0XFxuIDY4NzpcXHRcXHRyZXR1cm4gSU9NRU1fRVJSX1BUUihyZXQpO1xcbiA2ODg6XFx0fVxcbiA2ODk6XFx0RVhQT1JUX1NZTUJPTChwY2ltX2lvcmVtYXBfcmVnaW9uKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTg6MTIuMjAzNTIzODA4WiIsIlNlcSI6MzMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1MDgyMTUxNDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyB0aGUgYHBjaW1faW9yZW1hcF9yZWdpb25gIEZ1bmN0aW9uKipcblxuT2theSwgc28gSSd2ZSBpZGVudGlmaWVkIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBhcyBhIG5ldyBjb3JlIEFQSSB0aGF0J3MgYmVpbmcgdXNlZCBhY3Jvc3MgYSBidW5jaCBvZiBzb3VuZCBkcml2ZXJzLiBUaGF0IG1ha2VzIGl0IGEgcHJpbWUgY2FuZGlkYXRlIGZvciBmdXp6aW5nLiBUaGUgZm9jdXMgaGVyZSBpcyBkZWZpbml0ZWx5IHRoYXQgc3ltYm9sLCBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHRoZSBjb25maWdzIG5lZWRlZCB0byBlbmFibGUgaXQuIEkndmUgZ290IGEgZ29vZCBzdGFydGluZyBzZXQ6IGBQQ0lgLCBgU05EX1BDSWAsIGBTTkRfSERBX0lOVEVMYCwgYFNORF9BRDE4ODlgLCBgU05EX0FUSUlYUGAsIGBTTkRfQVRJSVhQX01PREVNYCwgYFNORF9BVTg4MTBgLCBgU05EX0FVODgyMGAsIGBTTkRfQVU4ODMwYCwgYFNORF9BVzJgLCBgU05EX0JUODdYYCwgYFNORF9DUzQyODFgLCBgU05EX0NTNTUzMGAsIGBTTkRfTE9MQWAsIGBTTkRfSERTUE1gLCBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYCwgYW5kIGBDT01QSUxFX1RFU1RgLiBHb3R0YSBiZSB0aG9yb3VnaCwgc28gSSdsbCBkb3VibGUgY2hlY2sgdG8gc2VlIGlmIHRob3NlIGNvdmVyIGV2ZXJ5dGhpbmcuXG5cbkkga25vdyBgU05EYCBpcyBhIGRlcGVuZGVuY3kgZm9yIGBTTkRfUENJYCDigJMgc3RhbmRhcmQgc3R1ZmYuIEFuZCwgb2YgY291cnNlLCBgU05EX1NPQ2AgaXMgYSBwcmVyZXF1aXNpdGUgZm9yIGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgLiBMZXQncyBqdXN0IG1ha2Ugc3VyZSB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGdvdGNoYXMgSSdtIG1pc3NpbmcuIFRpbWUgdG8gZGl2ZSBkZWVwZXIgYW5kIHNlZSBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGtleSBjb25maWd1cmF0aW9ucyBJJ20gbWlzc2luZyFcblxuXG4iLCJJbnB1dFRva2VucyI6MTY1MzMsIk91dHB1dFRva2VucyI6MTgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNTQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxODoxOC43MTE3NDE2MDhaIiwiU2VxIjozNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIyOTkzMjY0NjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9TT0NcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiXFxuRnVsbCBvdXRwdXQgaXMgdG9vIGxvbmcsIHNob3dpbmcgNTAwIG91dCBvZiAzNTc0IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5zb3VuZC9zb2MvS2NvbmZpZy01LVxcbnNvdW5kL3NvYy9LY29uZmlnOjY6bWVudWNvbmZpZyBTTkRfU09DXFxuc291bmQvc29jL0tjb25maWctNy1cXHR0cmlzdGF0ZSBcXFwiQUxTQSBmb3IgU29DIGF1ZGlvIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvS2NvbmZpZz0yND1pZiBTTkRfU09DXFxuc291bmQvc29jL0tjb25maWctMjUtXFxuc291bmQvc29jL0tjb25maWc6MjY6Y29uZmlnIFNORF9TT0NfQUM5N19CVVNcXG5zb3VuZC9zb2MvS2NvbmZpZy0yNy1cXHRib29sXFxuc291bmQvc29jL0tjb25maWctMjgtXFxuc291bmQvc29jL0tjb25maWc6Mjk6Y29uZmlnIFNORF9TT0NfR0VORVJJQ19ETUFFTkdJTkVfUENNXFxuc291bmQvc29jL0tjb25maWctMzAtXFx0Ym9vbFxcbi0tXFxuc291bmQvc29jL0tjb25maWctMzItXFxuc291bmQvc29jL0tjb25maWc6MzM6Y29uZmlnIFNORF9TT0NfQ09NUFJFU1NcXG5zb3VuZC9zb2MvS2NvbmZpZy0zNC1cXHRib29sXFxuLS1cXG5zb3VuZC9zb2MvS2NvbmZpZy0zNi1cXG5zb3VuZC9zb2MvS2NvbmZpZzozNzpjb25maWcgU05EX1NPQ19UT1BPTE9HWVxcbnNvdW5kL3NvYy9LY29uZmlnLTM4LVxcdGJvb2xcXG4tLVxcbnNvdW5kL3NvYy9LY29uZmlnLTQwLVxcbnNvdW5kL3NvYy9LY29uZmlnOjQxOmNvbmZpZyBTTkRfU09DX1RPUE9MT0dZX0JVSUxEXFxuc291bmQvc29jL0tjb25maWctNDItXFx0Ym9vbCBcXFwiQnVpbGQgdG9wb2xvZ3kgY29yZVxcXCJcXG4tLVxcbnNvdW5kL3NvYy9LY29uZmlnLTUxLVxcbnNvdW5kL3NvYy9LY29uZmlnOjUyOmNvbmZpZyBTTkRfU09DX1RPUE9MT0dZX0tVTklUX1RFU1RcXG5zb3VuZC9zb2MvS2NvbmZpZy01My1cXHR0cmlzdGF0ZSBcXFwiS1VuaXQgdGVzdHMgZm9yIFNvQyB0b3BvbG9neVxcXCJcXG4tLVxcbnNvdW5kL3NvYy9LY29uZmlnLTY4LVxcbnNvdW5kL3NvYy9LY29uZmlnOjY5OmNvbmZpZyBTTkRfU09DX0NBUkRfS1VOSVRfVEVTVFxcbnNvdW5kL3NvYy9LY29uZmlnLTcwLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgU29DIGNhcmRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvS2NvbmZpZy03Ni1cXG5zb3VuZC9zb2MvS2NvbmZpZzo3Nzpjb25maWcgU05EX1NPQ19VVElMU19LVU5JVF9URVNUXFxuc291bmQvc29jL0tjb25maWctNzgtXFx0dHJpc3RhdGUgXFxcIktVbml0IHRlc3RzIGZvciBTb0MgdXRpbHNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvS2NvbmZpZy04My1cXG5zb3VuZC9zb2MvS2NvbmZpZzo4NDpjb25maWcgU05EX1NPQ19PUFNfS1VOSVRfVEVTVFxcbnNvdW5kL3NvYy9LY29uZmlnLTg1LVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgU29DIG9wc1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9LY29uZmlnLTkwLVxcbnNvdW5kL3NvYy9LY29uZmlnOjkxOmNvbmZpZyBTTkRfU09DX0FDUElcXG5zb3VuZC9zb2MvS2NvbmZpZy05Mi1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9LY29uZmlnLTkzLVxcbnNvdW5kL3NvYy9LY29uZmlnOjk0OmNvbmZpZyBTTkRfU09DX1VTQlxcbnNvdW5kL3NvYy9LY29uZmlnLTk1LVxcdHRyaXN0YXRlIFxcXCJTb0MgYmFzZWQgVVNCIGF1ZGlvIG9mZmxvYWRpbmdcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYWRpL0tjb25maWc9Mj1tZW51IFxcXCJBbmFsb2cgRGV2aWNlc1xcXCJcXG5zb3VuZC9zb2MvYWRpL0tjb25maWctMy1cXG5zb3VuZC9zb2MvYWRpL0tjb25maWc6NDpjb25maWcgU05EX1NPQ19BRElfQVhJX0kyU1xcbnNvdW5kL3NvYy9hZGkvS2NvbmZpZy01LVxcdHRyaXN0YXRlIFxcXCJBWEktSTJTIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYWRpL0tjb25maWctMTAtXFxuc291bmQvc29jL2FkaS9LY29uZmlnOjExOmNvbmZpZyBTTkRfU09DX0FESV9BWElfU1BESUZcXG5zb3VuZC9zb2MvYWRpL0tjb25maWctMTItXFx0dHJpc3RhdGUgXFxcIkFYSS1TUERJRiBzdXBwb3J0XFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnPTI9bWVudSBcXFwiQU1EXFxcIlxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0zLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo0OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BcXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiQU1EIEF1ZGlvIENvcHJvY2Vzc29yIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctOC1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6OTpjb25maWcgU05EX1NPQ19BTURfQ1pfREE3MjE5TVg5ODM1N19NQUNIXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEwLVxcdHRyaXN0YXRlIFxcXCJBTUQgQ1ogc3VwcG9ydCBmb3IgREE3MjE5LCBSVDU2ODIgYW5kIE1BWDk4MzVcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTktXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjIwOmNvbmZpZyBTTkRfU09DX0FNRF9DWl9SVDU2NDVfTUFDSFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiQU1EIENaIHN1cHBvcnQgZm9yIFJUNTY0NVxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0yNi1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6Mjc6Y29uZmlnIFNORF9TT0NfQU1EX1NUX0VTODMzNl9NQUNIXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTI4LVxcdHRyaXN0YXRlIFxcXCJBTUQgU1Qgc3VwcG9ydCBmb3IgRVM4MzM2XFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTM4LVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzozOTpjb25maWcgU05EX1NPQ19BTURfQUNQM3hcXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNDAtXFx0dHJpc3RhdGUgXFxcIkFNRCBBdWRpbyBDb3Byb2Nlc3Nvci12My54IHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNDQtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjQ1OmNvbmZpZyBTTkRfU09DX0FNRF9SVl9SVDU2ODJfTUFDSFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy00Ni1cXHR0cmlzdGF0ZSBcXFwiQU1EIFJWIHN1cHBvcnQgZm9yIFJUNTY4MlxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy01Ni1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6NTc6Y29uZmlnIFNORF9TT0NfQU1EX1JFTk9JUlxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy01OC1cXHR0cmlzdGF0ZSBcXFwiQU1EIEF1ZGlvIENvcHJvY2Vzc29yIC0gUmVub2lyIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNjMtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjY0OmNvbmZpZyBTTkRfU09DX0FNRF9SRU5PSVJfTUFDSFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy02NS1cXHR0cmlzdGF0ZSBcXFwiQU1EIFJlbm9pciBzdXBwb3J0IGZvciBETUlDXFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTcwLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo3MTpjb25maWcgU05EX1NPQ19BTURfQUNQNXhcXG5zb3VuZC9zb2MvYW1kL0tjb25maWctNzItXFx0dHJpc3RhdGUgXFxcIkFNRCBBdWRpbyBDb3Byb2Nlc3Nvci12NS54IEkyUyBzdXBwb3J0XFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTgwLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzo4MTpjb25maWcgU05EX1NPQ19BTURfVkFOR09HSF9NQUNIXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTgyLVxcdHRyaXN0YXRlIFxcXCJBTUQgVmFuZ29naCBzdXBwb3J0IGZvciBOQVU4ODIxL0NTMzVMNDEvTUFYOTgzODhcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctOTMtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjk0OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1A2eFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy05NS1cXHR0cmlzdGF0ZSBcXFwiQU1EIEF1ZGlvIENvcHJvY2Vzc29yLXY2LnggWWVsbG93IENhcnAgc3VwcG9ydFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xMDQtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjEwNTpjb25maWcgU05EX1NPQ19BTURfWUNfTUFDSFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xMDYtXFx0dHJpc3RhdGUgXFxcIkFNRCBZQyBzdXBwb3J0IGZvciBETUlDXFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnPTEyMz1zb3VyY2UgXFxcInNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWdcXFwiXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEyNC1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6MTI1OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1A2M19UT1BMRVZFTFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xMjYtXFx0dHJpc3RhdGUgXFxcInN1cHBvcnQgZm9yIEFNRCBwbGF0Zm9ybXMgd2l0aCBBQ1AgdmVyc2lvbiBcXHUwMDNlPSA2LjNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc9MTM2PWlmIFNORF9TT0NfQU1EX0FDUDYzX1RPUExFVkVMXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTEzNy1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6MTM4OmNvbmZpZyBTTkRfU09DX0FNRF9TT1VORFdJUkVfTElOS19CQVNFTElORVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xMzktXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNDEtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjE0Mjpjb25maWcgU05EX1NPQ19BTURfU09VTkRXSVJFXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTE0My1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgU291bmRXaXJlIGJhc2VkIEFNRCBwbGF0Zm9ybXNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWctMTUyLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZzoxNTM6Y29uZmlnIFNORF9TT0NfQU1EX1BTXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTE1NC0gICAgICAgIHRyaXN0YXRlIFxcXCJBTUQgQXVkaW8gQ29wcm9jZXNzb3ItdjYuMy92Ny4wL3Y3LjEgc3VwcG9ydFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNjUtXFxuc291bmQvc29jL2FtZC9LY29uZmlnOjE2Njpjb25maWcgU05EX1NPQ19BTURfUFNfTUFDSFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNjctICAgICAgICB0cmlzdGF0ZSBcXFwiQU1EIFBJTksgU0FSRElORSBzdXBwb3J0IGZvciBETUlDXFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9LY29uZmlnLTE3Ni1cXG5zb3VuZC9zb2MvYW1kL0tjb25maWc6MTc3OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1A3WFxcbnNvdW5kL3NvYy9hbWQvS2NvbmZpZy0xNzgtICAgICAgICB0cmlzdGF0ZSBcXFwiQU1EIEF1ZGlvIENvcHJvY2Vzc29yLXY3Lnggc3VwcG9ydFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNy1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjg6Y29uZmlnIFNORF9TT0NfQU1EX0FDUF9DT01NT05cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTktXFx0dHJpc3RhdGUgXFxcIkFNRCBBdWRpbyBBQ1AgQ29tbW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE1LVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTY6Y29uZmlnIFNORF9TT0NfQUNQSV9BTURfTUFUQ0hcXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE3LVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE5LVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MjA6Y29uZmlnIFNORF9TT0NfQUNQSV9BTURfU0RDQV9RVUlSS1NcXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTIxLVxcdGJvb2wgXFxcIkFNRCBBQ1BJIFNEQ0EgcXVpcmtzXFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZz0zMD1pZiBTTkRfU09DX0FNRF9BQ1BfQ09NTU9OXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zMS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjMyOmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BfUERNXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zMy1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMzQtXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzozNTpjb25maWcgU05EX1NPQ19BTURfQUNQX0xFR0FDWV9DT01NT05cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTM2LVxcdHRyaXN0YXRlXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zNy1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjM4OmNvbmZpZyBTTkRfU09DX0FNRF9BQ1BfSTJTXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0zOS1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDAtXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzo0MTpjb25maWcgU05EX1NPQ19BTURfQUNQSV9NQUNIXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy00Mi1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDMtXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzo0NDpjb25maWcgU05EX1NPQ19BTURfQUNQX1BDTVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDUtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDctXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzo0ODpjb25maWcgU05EX1NPQ19BTURfQUNQX1BDSVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctNDktXFx0dHJpc3RhdGUgXFxcIkFNRCBBQ1AgUENJIERyaXZlciBTdXBwb3J0XFxcIlxcbi0tXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZz05OT1jb25maWcgU05EX0FNRF9BU09DX0FDUDcwXFxuLS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTExMy1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjExNDpjb25maWcgU05EX1NPQ19BTURfTUFDSF9DT01NT05cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTExNS1cXHR0cmlzdGF0ZVxcbi0tXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xMjctXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZzoxMjg6Y29uZmlnIFNORF9TT0NfQU1EX0xFR0FDWV9NQUNIXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xMjktXFx0dHJpc3RhdGUgXFxcIkFNRCBMZWdhY3kgTWFjaGluZSBEcml2ZXIgU3VwcG9ydFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTM0LVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTM1OmNvbmZpZyBTTkRfU09DX0FNRF9TT0ZfTUFDSFxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTM2LVxcdHRyaXN0YXRlIFxcXCJBTUQgU09GIE1hY2hpbmUgRHJpdmVyIFN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE0MS1cXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnOjE0Mjpjb25maWcgU05EX1NPQ19BTURfU0RXX01BQ0hfQ09NTU9OXFxuc291bmQvc29jL2FtZC9hY3AvS2NvbmZpZy0xNDMtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTQ3LVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTQ4OmNvbmZpZyBTTkRfU09DX0FNRF9TT0ZfU0RXX01BQ0hcXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE0OS1cXHR0cmlzdGF0ZSBcXFwiQU1EIFNPRiBTb3VuZHdpcmUgTWFjaGluZSBEcml2ZXIgU3VwcG9ydFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWctMTY3LVxcbnNvdW5kL3NvYy9hbWQvYWNwL0tjb25maWc6MTY4OmNvbmZpZyBTTkRfU09DX0FNRF9MRUdBQ1lfU0RXX01BQ0hcXG5zb3VuZC9zb2MvYW1kL2FjcC9LY29uZmlnLTE2OS1cXHR0cmlzdGF0ZSBcXFwiQU1EIExlZ2FjeShObyBEU1ApIFNvdW5kd2lyZSBNYWNoaW5lIERyaXZlciBTdXBwb3J0XFxcIlxcbi0tXFxuc291bmQvc29jL2FwcGxlL0tjb25maWc9Mj1tZW51IFxcXCJBcHBsZVxcXCJcXG5zb3VuZC9zb2MvYXBwbGUvS2NvbmZpZy0zLVxcbnNvdW5kL3NvYy9hcHBsZS9LY29uZmlnOjQ6Y29uZmlnIFNORF9TT0NfQVBQTEVfTUNBXFxuc291bmQvc29jL2FwcGxlL0tjb25maWctNS1cXHR0cmlzdGF0ZSBcXFwiQXBwbGUgU2lsaWNvbiBNQ0EgZHJpdmVyXFxcIlxcbi0tXFxuc291bmQvc29jL2F0bWVsL0tjb25maWc9OTM9Y29uZmlnIFNORF9BVE1FTF9TT0NfSTJTXFxuLS1cXG5zb3VuZC9zb2MvYXRtZWwvS2NvbmZpZy0xMDEtXFxuc291bmQvc29jL2F0bWVsL0tjb25maWc6MTAyOmNvbmZpZyBTTkRfU09DX01JS1JPRV9QUk9UT1xcbnNvdW5kL3NvYy9hdG1lbC9LY29uZmlnLTEwMy1cXHR0cmlzdGF0ZSBcXFwiU3VwcG9ydCBmb3IgTWlrcm9lLVBST1RPIGJvYXJkXFxcIlxcbi0tXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZz01PW1lbnUgXFxcIkF1MXhcXFwiXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy02LVxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWc6Nzpjb25maWcgU05EX1NPQ19BVTFYUFNDXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy04LVxcdHRyaXN0YXRlIFxcXCJTb0MgQXVkaW8gZm9yIEF1MTJ4eC9BdTEzeHgvQXUxNTUwXFxcIlxcbi0tXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy0xNC1cXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjE1OmNvbmZpZyBTTkRfU09DX0FVMVhQU0NfSTJTXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy0xNi1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMTctXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZzoxODpjb25maWcgU05EX1NPQ19BVTFYUFNDX0FDOTdcXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTE5LVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTI2LSMjXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZzoyNzpjb25maWcgU05EX1NPQ19BVTFYQVVESU9cXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnLTI4LVxcdHRyaXN0YXRlIFxcXCJTb0MgQXVkaW8gZm9yIEF1MTAwMC9BdTE1MDAvQXUxMTAwXFxcIlxcbi0tXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy0zMy1cXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjM0OmNvbmZpZyBTTkRfU09DX0FVMVhBQzk3Q1xcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMzUtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctMzktXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZzo0MDpjb25maWcgU05EX1NPQ19BVTFYSTJTQ1xcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctNDEtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctNDYtIyNcXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjQ3OmNvbmZpZyBTTkRfU09DX0RCMTAwMFxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctNDgtXFx0dHJpc3RhdGUgXFxcIkRCMTAwMCBBdWRpbyBzdXBwb3J0XFxcIlxcbi0tXFxuc291bmQvc29jL2F1MXgvS2NvbmZpZy01NS1cXG5zb3VuZC9zb2MvYXUxeC9LY29uZmlnOjU2OmNvbmZpZyBTTkRfU09DX0RCMTIwMFxcbnNvdW5kL3NvYy9hdTF4L0tjb25maWctNTctXFx0dHJpc3RhdGUgXFxcIkRCMTIwMC9EQjEzMDAvREIxNTUwIEF1ZGlvIHN1cHBvcnRcXFwiXFxuLS1cXG5zb3VuZC9zb2MvYmNtL0tjb25maWc9ND1jb25maWcgU05EX0JDTTI4MzVfU09DX0kyU1xcbi0tXFxuc291bmQvc29jL2JjbS9LY29uZmlnLTEzLVxcbnNvdW5kL3NvYy9iY20vS2NvbmZpZzoxNDpjb25maWcgU05EX1NPQ19DWUdOVVNcXG5zb3VuZC9zb2MvYmNtL0tjb25maWctMTUtXFx0dHJpc3RhdGUgXFxcIlNvQyBwbGF0Zm9ybSBhdWRpbyBmb3IgQnJvYWRjb20gQ3lnbnVzIGNoaXBzXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUtIyBzZXR0aW5nIC0gU1BJIGNhbid0IGJlIG1vZHVsYXIgc28gdGhhdCBjYXNlIGRvZXNuJ3QgbmVlZCB0byBiZSBjb3ZlcmVkLlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2OmNvbmZpZyBTTkRfU09DX0kyQ19BTkRfU1BJXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTctXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZz0xMj1tZW51IFxcXCJDT0RFQyBkcml2ZXJzXFxcIlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0xMy1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6MTQ6Y29uZmlnIFNORF9TT0NfQUxMX0NPREVDU1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0xNS1cXHR0cmlzdGF0ZSBcXFwiQnVpbGQgYWxsIEFTb0MgQ09ERUMgZHJpdmVyc1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0zODEtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjM4Mjpjb25maWcgU05EX1NPQ184OFBNODYwWFxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0zODMtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy0zODUtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjM4Njpjb25maWcgU05EX1NPQ19BUklaT05BXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM4Ny1cXHR0cmlzdGF0ZVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTM5OC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6Mzk5OmNvbmZpZyBTTkRfU09DX1dNX0hVQlNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDAwLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDAzLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MDQ6Y29uZmlnIFNORF9TT0NfV01fQURTUFxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MDUtXFx0dHJpc3RhdGUgXFxcIkNpcnJ1cyBMb2dpYyB3bV9hZHNwIGRyaXZlclxcXCIgaWYgS1VOSVRcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MDgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQwOTpjb25maWcgU05EX1NPQ19XTV9BRFNQX1RFU1RcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDEwLVxcdHRyaXN0YXRlIFxcXCJLVW5pdCB0ZXN0cyBmb3IgQ2lycnVzIExvZ2ljIHdtX2Fkc3BcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MjAtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQyMTpjb25maWcgU05EX1NPQ19BQjg1MDBfQ09ERUNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDIyLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDI0LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MjU6Y29uZmlnIFNORF9TT0NfQUM5N19DT0RFQ1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MjYtXFx0dHJpc3RhdGUgXFxcIkJ1aWxkIGdlbmVyaWMgQVNvQyBBQzk3IENPREVDIGRyaXZlclxcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MjktXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQzMDpjb25maWcgU05EX1NPQ19BRDE4MzZcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDMxLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDMzLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0MzQ6Y29uZmlnIFNORF9TT0NfQUQxOTNYXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQzNS1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00MzYtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQzNzpjb25maWcgU05EX1NPQ19BRDE5M1hfU1BJXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQzOC1cXHR0cmlzdGF0ZVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ0MS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDQyOmNvbmZpZyBTTkRfU09DX0FEMTkzWF9JMkNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDQzLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDQ2LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0NDc6Y29uZmlnIFNORF9TT0NfQUQxOTgwXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ0OC1cXHR0cmlzdGF0ZVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ1MS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDUyOmNvbmZpZyBTTkRfU09DX0FENzMzMTFcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDUzLVxcdHRyaXN0YXRlXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ1NC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDU1OmNvbmZpZyBTTkRfU09DX0FEQVVfVVRJTFNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDU2LVxcdHRyaXN0YXRlXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ1Ny1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDU4OmNvbmZpZyBTTkRfU09DX0FEQVUxMzcyXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ1OS1cXHR0cmlzdGF0ZVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ2MS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDYyOmNvbmZpZyBTTkRfU09DX0FEQVUxMzcyX0kyQ1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NjMtXFx0dHJpc3RhdGUgXFxcIkFuYWxvZyBEZXZpY2VzIEFEQVUxMzcyIENPREVDIChJMkMpXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ2Ny1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDY4OmNvbmZpZyBTTkRfU09DX0FEQVUxMzcyX1NQSVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00NjktXFx0dHJpc3RhdGUgXFxcIkFuYWxvZyBEZXZpY2VzIEFEQVUxMzcyIENPREVDIChTUEkpXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ3My1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NDc0OmNvbmZpZyBTTkRfU09DX0FEQVUxMzczXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTQ3NS1cXHR0cmlzdGF0ZSBcXFwiQW5hbG9nIERldmljZXMgQURBVTEzNzMgQ09ERUNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDc4LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0Nzk6Y29uZmlnIFNORF9TT0NfQURBVTE3MDFcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDgwLVxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBREFVMTcwMSBDT0RFQ1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00ODMtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ4NDpjb25maWcgU05EX1NPQ19BREFVMTdYMVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00ODUtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00ODgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ4OTpjb25maWcgU05EX1NPQ19BREFVMTc2MVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00OTAtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy00OTItXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjQ5Mzpjb25maWcgU05EX1NPQ19BREFVMTc2MV9JMkNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDk0LVxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBVTE3NjEgQ09ERUMgLSBJMkNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNDk4LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo0OTk6Y29uZmlnIFNORF9TT0NfQURBVTE3NjFfU1BJXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUwMC1cXHR0cmlzdGF0ZSBcXFwiQW5hbG9nIERldmljZXMgQVUxNzYxIENPREVDIC0gU1BJXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUwNC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTA1OmNvbmZpZyBTTkRfU09DX0FEQVUxNzgxXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUwNi1cXHRzZWxlY3QgU05EX1NPQ19BREFVMTdYMVxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUwOC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTA5OmNvbmZpZyBTTkRfU09DX0FEQVUxNzgxX0kyQ1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MTAtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MTQtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUxNTpjb25maWcgU05EX1NPQ19BREFVMTc4MV9TUElcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTE2LVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTIwLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1MjE6Y29uZmlnIFNORF9TT0NfQURBVTE5NzdcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTIyLVxcdHRyaXN0YXRlXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTUyMy1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTI0OmNvbmZpZyBTTkRfU09DX0FEQVUxOTc3X1NQSVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MjUtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MjktXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUzMDpjb25maWcgU05EX1NPQ19BREFVMTk3N19JMkNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTMxLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTM1LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1MzY6Y29uZmlnIFNORF9TT0NfQURBVTcwMDJcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTM3LVxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBREFVNzAwMiBTdGVyZW8gUERNLXRvLUkyUy9URE0gQ29udmVydGVyXFxcIlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01MzgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjUzOTpjb25maWcgU05EX1NPQ19BREFVNzExOFxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NDAtXFx0dHJpc3RhdGVcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTQxLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1NDI6Y29uZmlnIFNORF9TT0NfQURBVTcxMThfSFdcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTQzLVxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBREFVNzExOCA4IENoYW5uZWwgUERNLXRvLUkyUy9URE0gQ29udmVydGVyIC0gSFcgTW9kZVxcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NTMtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjU1NDpjb25maWcgU05EX1NPQ19BREFVNzExOF9JMkNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTU1LVxcdHRyaXN0YXRlIFxcXCJBbmFsb2cgRGV2aWNlcyBBREFVNzExOCA4IENoYW5uZWwgUERNLXRvLUkyUy9URE0gQ29udmVydGVyIC0gSTJDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU2NS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTY2OmNvbmZpZyBTTkRfU09DX0FEQVY4MFhcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTY3LVxcdHRyaXN0YXRlXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU2OC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTY5OmNvbmZpZyBTTkRfU09DX0FEQVY4MDFcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTcwLVxcdHRyaXN0YXRlXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTczLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1NzQ6Y29uZmlnIFNORF9TT0NfQURBVjgwM1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NzUtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01NzgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjU3OTpjb25maWcgU05EX1NPQ19BRFMxMTdYXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU4MC1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01ODEtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjU4Mjpjb25maWcgU05EX1NPQ19BSzQxMDRcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTgzLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs0MTA0IENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU4NS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NTg2OmNvbmZpZyBTTkRfU09DX0FLNDExOFxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy01ODctXFx0dHJpc3RhdGUgXFxcIkFLTSBBSzQxMTggQ09ERUNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNTkwLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo1OTE6Y29uZmlnIFNORF9TT0NfQUs0Mzc1XFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTU5Mi1cXHR0cmlzdGF0ZSBcXFwiQUtNIEFLNDM3NSBDT0RFQ1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MDAtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYwMTpjb25maWcgU05EX1NPQ19BSzQ0NThcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjAyLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs0NDU4IENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYwNS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjA2OmNvbmZpZyBTTkRfU09DX0FLNDUzNVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MDctXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MDktXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYxMDpjb25maWcgU05EX1NPQ19BSzQ1NTRcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjExLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs0NTU0IENPREVDXFxcIlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MTItXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYxMzpjb25maWcgU05EX1NPQ19BSzQ2MTNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjE0LVxcdHRyaXN0YXRlIFxcXCJBS00gQUs0NjEzIENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYxNi1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjE3OmNvbmZpZyBTTkRfU09DX0FLNDYxOVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MTgtICAgICAgICB0cmlzdGF0ZSBcXFwiQUtNIEFLNDYxOSBDT0RFQ1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjAtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYyMTpjb25maWcgU05EX1NPQ19BSzQ2NDJcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjIyLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs0NjQyIENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYyNC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjI1OmNvbmZpZyBTTkRfU09DX0FLNDY3MVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjYtXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MjgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYyOTpjb25maWcgU05EX1NPQ19BSzUzODZcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjMwLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs1NjM4IENPREVDXFxcIlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02MzEtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjYzMjpjb25maWcgU05EX1NPQ19BSzU1NThcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjMzLVxcdHRyaXN0YXRlIFxcXCJBS00gQUs1NTU4IENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTYzNi1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NjM3OmNvbmZpZyBTTkRfU09DX0FMQzU2MjNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjM4LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIEFMQzU2MjMgQ09ERUNcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjQwLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NDE6Y29uZmlnIFNORF9TT0NfQUxDNTYzMlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02NDItXFx0dHJpc3RhdGVcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02NDQtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjY0NTpjb25maWcgU05EX1NPQ19BVURJT19JSU9fQVVYXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY0Ni1cXHR0cmlzdGF0ZSBcXFwiQXVkaW8gSUlPIEF1eGlsaWFyeSBkZXZpY2VcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjU1LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NTY6Y29uZmlnIFNORF9TT0NfQVc4NzM4XFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTY1Ny1cXHR0cmlzdGF0ZSBcXFwiQXdpbmljIEFXODczOCBBdWRpbyBBbXBsaWZpZXJcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjY0LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2NjU6Y29uZmlnIFNORF9TT0NfQVc4ODM5NV9MSUJcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjY2LVxcdHNlbGVjdCBDUkM4XFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjY4LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2Njk6Y29uZmlnIFNORF9TT0NfQVc4ODM5NVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02NzAtXFx0dHJpc3RhdGUgXFxcIlNvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgzOTVcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjgxLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2ODI6Y29uZmlnIFNORF9TT0NfQVc4ODE2NlxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02ODMtXFx0dHJpc3RhdGUgXFxcIlNvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgxNjZcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNjkzLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo2OTQ6Y29uZmlnIFNORF9TT0NfQVc4ODI2MVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy02OTUtXFx0dHJpc3RhdGUgXFxcIlNvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgyNjFcXFwiXFxuLS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzA2LVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZzo3MDc6Y29uZmlnIFNORF9TT0NfQVc4ODA4MVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03MDgtXFx0dHJpc3RhdGUgXFxcIlNvYyBBdWRpbyBmb3IgYXdpbmljIGF3ODgwODEvYXc4ODA4M1xcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03MTctXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjcxODpjb25maWcgU05EX1NPQ19BVzg3MzkwXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTcxOS1cXHR0cmlzdGF0ZSBcXFwiU29jIEF1ZGlvIGZvciBhd2luaWMgYXc4NzM5MFxcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03MjgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjcyOTpjb25maWcgU05EX1NPQ19BVzg4Mzk5XFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTczMC1cXHR0cmlzdGF0ZSBcXFwiU29jIEF1ZGlvIGZvciBhd2luaWMgYXc4ODM5OVxcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NDEtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjc0Mjpjb25maWcgU05EX1NPQ19CRDI4NjIzXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc0My1cXHR0cmlzdGF0ZSBcXFwiUk9ITSBCRDI4NjIzIENPREVDXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc0OC1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzQ5OmNvbmZpZyBTTkRfU09DX0JUX1NDT1xcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NTAtXFx0dHJpc3RhdGUgXFxcIkR1bW15IEJUIFNDTyBjb2RlYyBkcml2ZXJcXFwiXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc1MS1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzUyOmNvbmZpZyBTTkRfU09DX0NIVjNfQ09ERUNcXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWctNzUzLVxcdHRyaXN0YXRlIFxcXCJHb29nbGUgQ2hhbWVsZW9uIHYzIGNvZGVjIGRyaXZlclxcXCJcXG4tLVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NTgtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjc1OTpjb25maWcgU05EX1NPQ19DUENBUFxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjAtXFx0dHJpc3RhdGUgXFxcIk1vdG9yb2xhIENQQ0FQIGNvZGVjXFxcIlxcbi0tXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc2Mi1cXG5zb3VuZC9zb2MvY29kZWNzL0tjb25maWc6NzYzOmNvbmZpZyBTTkRfU09DX0NRMDA5M1ZDXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc2NC1cXHR0cmlzdGF0ZVxcbnNvdW5kL3NvYy9jb2RlY3MvS2NvbmZpZy03NjUtXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnOjc2Njpjb25maWcgU05EX1NPQ19DUk9TX0VDX0NPREVDXFxuc291bmQvc29jL2NvZGVjcy9LY29uZmlnLTc2Ny1cXHR0cmlzdGF0ZSBcXFwiY29kZWMgZHJpdmVyIGZvciBDaHJvbWVPUyBFQ1xcXCJcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxODoyMS4wMTEwNzQ2OTdaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6ODg3MTgyODQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipFeGFtaW5pbmcgdGhlIEtlcm5lbCBTb3VuZCBDb25maWd1cmF0aW9uKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBzb3VuZCBjb25maWd1cmF0aW9uIGFuZCB0cnlpbmcgdG8gdW5kZXJzdGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBNeSBpbml0aWFsIHRob3VnaHQgd2FzLCBcIkhleSwgaWYgYFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSWAgYXV0b21hdGljYWxseSBlbmFibGVzIGBTTkRfU09DYCB0aHJvdWdoIGl0cyBjb25maWd1cmF0aW9uLCB0aGVuIEkgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBtYW51YWxseSBzZXR0aW5nIGBTTkRfU09DYC5cIiBJdCBqdXN0IG1ha2VzIHRoaW5ncyBlYXNpZXIsIHJpZ2h0P1xuXG5UaGVuIEkgcmVtZW1iZXJlZCB0aGF0IGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgIGlzIGZvdW5kIHNwZWNpZmljYWxseSBpbiBgc291bmQvc29jL2xvb25nc29uL0tjb25maWdgLiBSaWdodCwgdGhhdCdzIHdoZXJlIHRoZSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBMb29uZ3NvbiBzb3VuZCBzdXBwb3J0IHJlc2lkZXMuIE5vdywgbGV0J3MganVzdCBjb25maXJtIG15IGluaXRpYWwgdW5kZXJzdGFuZGluZyBieSBjaGVja2luZyBpZiBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYCBkb2VzLCBpbiBmYWN0LCBoYXZlIGBTTkRfU09DYCBhcyBhIGRlcGVuZGVuY3kuIEl0J3MgYmVzdCB0byBiZSBjb21wbGV0ZWx5IGNsZWFyIG9uIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiBJIGFtIHByZXR0eSBzdXJlIGl0IGRvZXMsIGl0J3MganVzdCBnb29kIHByYWN0aWNlIHRvIHZlcmlmeS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjYwMDEsIk91dHB1dFRva2VucyI6MjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxODoyOS44ODI5MDY0OTVaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjI1MDAwNDcyMTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNORF9TT0NfTE9PTkdTT05fSTJTX1BDSVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZz00PWNvbmZpZyBTTkRfU09DX0xPT05HU09OX0NBUkRcXG4tLVxcbnNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnLTE1LVxcbnNvdW5kL3NvYy9sb29uZ3Nvbi9LY29uZmlnOjE2OmNvbmZpZyBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcXG5zb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZy0xNy1cXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24gSTJTLVBDSSBEZXZpY2UgRHJpdmVyXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxODozMi4zODI5NTk4NDJaIiwiU2VxIjozNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4ODMyOTI4OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3MgZGl2ZSBpbnRvIGl0LlxuXG4qKlJlZm9jdXNpbmcgb24gdGhlIEtjb25maWcgRmlsZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gcmV2aXNpdCBgc291bmQvc29jL2xvb25nc29uL0tjb25maWdgLiBJJ3ZlIGJlZW4gd29ya2luZyBvbiB0aGlzIGF1ZGlvIHN1YnN5c3RlbSBpbnRlZ3JhdGlvbiBhbmQgdGhlcmUncyBzb21ldGhpbmcgbmFnZ2luZyBhdCBtZS4gSSd2ZSBwcm9iYWJseSBnbGFuY2VkIGF0IHRoaXMgZmlsZSBhIGRvemVuIHRpbWVzIGFscmVhZHksIGJ1dCBleHBlcmllbmNlIHRlbGxzIG1lIGl0J3MgYWx3YXlzIHdvcnRoIGFub3RoZXIgY2FyZWZ1bCBsb29rLiBLZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcywgZXNwZWNpYWxseSB0aG9zZSBkZWZpbmluZyB0aGUgYnVpbGQgb3B0aW9ucyBhbmQgZGVwZW5kZW5jaWVzIG9mIGEgY29tcGxleCBzdWJzeXN0ZW0sIGFyZSBub3RvcmlvdXMgZm9yIGhpZGluZyBzdWJ0bGUgZGV0YWlscy4gU29tZXRoaW5nIGluIHRoZXJlIG1pZ2h0IGhvbGQgdGhlIGtleSB0byByZXNvbHZpbmcgdGhlIGN1cnJlbnQgaXNzdWUgb3IgdW5jb3ZlciBhbiB1bmZvcmVzZWVuIG9wcG9ydHVuaXR5IGZvciBpbXByb3ZlbWVudC4gTGV0J3Mgc2VlIGlmIGFub3RoZXIgcGFzcyByZXZlYWxzIGFueXRoaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNjQ0NiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE4OjM2Ljg3MTI5MTczMVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo5OTI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdG1lbnUgXFxcIkxvb25nc29uXFxcIlxcbiAgIDM6XFx0XFxuICAgNDpcXHRjb25maWcgU05EX1NPQ19MT09OR1NPTl9DQVJEXFxuICAgNTpcXHRcXHR0cmlzdGF0ZSBcXFwiTG9vbmdzb24gU291bmQgQ2FyZCBEcml2ZXJcXFwiXFxuICAgNjpcXHRcXHRkZXBlbmRzIG9uIExPT05HQVJDSCB8fCBDT01QSUxFX1RFU1RcXG4gICA3OlxcdFxcdHNlbGVjdCBTTkRfU09DX0xPT05HU09OX0kyU19QQ0kgaWYgUENJXFxuICAgODpcXHRcXHRzZWxlY3QgU05EX1NPQ19MT09OR1NPTl9JMlNfUExBVEZPUk0gaWYgT0ZcXG4gICA5OlxcdFxcdGhlbHBcXG4gIDEwOlxcdFxcdCAgU2F5IFkgb3IgTSBpZiB5b3Ugd2FudCB0byBhZGQgc3VwcG9ydCBmb3IgU29DIGF1ZGlvIHVzaW5nXFxuICAxMTpcXHRcXHQgIGxvb25nc29uIEkyUyBjb250cm9sbGVyLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRcXHQgIFRoZSBkcml2ZXIgYWRkIHN1cHBvcnQgZm9yIEFMU0EgU29DIEF1ZGlvIHN1cHBvcnQgdXNpbmdcXG4gIDE0OlxcdFxcdCAgbG9vbmdzb24gSTJTIGNvbnRyb2xsZXIuXFxuICAxNTpcXHRcXG4gIDE2OlxcdGNvbmZpZyBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcXG4gIDE3OlxcdFxcdHRyaXN0YXRlIFxcXCJMb29uZ3NvbiBJMlMtUENJIERldmljZSBEcml2ZXJcXFwiXFxuICAxODpcXHRcXHRkZXBlbmRzIG9uIExPT05HQVJDSCB8fCBDT01QSUxFX1RFU1RcXG4gIDE5OlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICAyMDpcXHRcXHRzZWxlY3QgUkVHTUFQX01NSU9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTg6MzYuODcxMzkyNzgxWiIsIlNlcSI6MzksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjIzNDk1Mzk2MDI0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBTb3VuZCBDb25maWd1cmF0aW9uIERlcGVuZGVuY2llcyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgbW9kdWxlIGFuZCBpdCBkb2Vzbid0ICpkaXJlY3RseSogcmVseSBvbiBgU05EX1NPQ2AsIHdoaWNoIGlzIGdvb2QuIEhvd2V2ZXIsIGl0J3MgbG9jYXRlZCB3aXRoaW4gdGhlIGBzb3VuZC9zb2MvYCBkaXJlY3RvcnksIGFuZCB0aGF0IGRpcmVjdG9yeSBpcyBvbmx5IGluY29ycG9yYXRlZCBpZiBgU05EX1NPQ2AgaXMgZW5hYmxlZCBpbiB0aGUgY29uZmlndXJhdGlvbi4gVGhhdCBtYWtlcyB0aGUgZGVjaXNpb24gcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCDigJMgd2UgbmVlZCB0byBlbmFibGUgYFNORF9TT0NgIGFzIGEgcHJlcmVxdWlzaXRlLCBldmVuIHRob3VnaCBpdCdzIG5vdCBhIGhhcmQgZGVwZW5kZW5jeS5cblxuQWxyaWdodCwgbGV0J3MgbGlzdCBvdXQgd2hhdCB3ZSBoYXZlIHRvIGRlYWwgd2l0aCBpbiB0ZXJtcyBvZiB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zLiBSaWdodCBub3csIEknbSB0cmFja2luZzpcblxuKiAgIGBQQ0lgXG4qICAgYFNORGBcbiogICBgU05EX1BDSWBcbiogICBgU05EX0hEQV9JTlRFTGBcbiogICBgU05EX0FEMTg4OWBcbiogICBgU05EX0FUSUlYUGBcbiogICBgU05EX0FUSUlYUF9NT0RFTWBcbiogICBgU05EX0FVODgxMGBcbiogICBgU05EX0FVODgyMGBcbiogICBgU05EX0FVODgzMGBcbiogICBgU05EX0FXMmBcbiogICBgU05EX0JUODdYYFxuKiAgIGBTTkRfQ1M0MjgxYFxuKiAgIGBTTkRfQ1M1NTMwYFxuKiAgIGBTTkRfTE9MQWBcbiogICBgU05EX0hEU1BNYFxuKiAgIGBTTkRfU09DYFxuKiAgIGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgXG4qICAgYENPTVBJTEVfVEVTVGBcblxuSG9sZCBvbiBhIHNlY29uZC4uLiBteSBzcGlkZXktc2Vuc2UgaXMgdGluZ2xpbmcuIEkgbmVlZCB0byBkb3VibGUtY2hlY2sgc29tZXRoaW5nLiBJIHRob3VnaHQgYFNORF9IREFfSU5URUxgIHdhcyBpbiBgc291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWdgLiBBbmQsIGlmIEknbSByZW1lbWJlcmluZyBjb3JyZWN0bHksIHRoYXQncyBwb3RlbnRpYWxseSB0aWVkIHRvIGBTTkRfUENJYC4gU28sIGlzIGBTTkRfSERBX0lOVEVMYCBwdWxsZWQgaW4gYXV0b21hdGljYWxseSBpZiBgU05EX1BDSWAgaXMgYWN0aXZlPyBMZXQncyBxdWlja2x5IHBlZWsgYXQgYHNvdW5kL3BjaS9LY29uZmlnYCB0byBjb25maXJtIHRoZSBjb250cm9sIGZsb3cuIEdvdHRhIG1ha2Ugc3VyZSB3ZSdyZSBub3QgZHVwbGljYXRpbmcgb3IgbWlzc2luZyBhbnl0aGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY5MzksIk91dHB1dFRva2VucyI6MjQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyODgsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTowMC4zNjY3OTI0MjVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxMDg1NjQzMzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlIFxcXCJzb3VuZC9oZGEvS2NvbmZpZ1xcXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvS2NvbmZpZz01OD1zb3VyY2UgXFxcInNvdW5kL3BjaS9LY29uZmlnXFxcIlxcbnNvdW5kL0tjb25maWctNTktXFxuc291bmQvS2NvbmZpZzo2MDpzb3VyY2UgXFxcInNvdW5kL2hkYS9LY29uZmlnXFxcIlxcbnNvdW5kL0tjb25maWctNjEtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjAyLjQ3NTM2MzM2NloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3Mjc4NjI2MjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBIREEgS2NvbmZpZyBSZWxhdGlvbnNoaXAqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYHNvdW5kL2hkYS9LY29uZmlnYCBmaWxlIGdldHMgaXRzIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcyBkaXJlY3RseSBmcm9tIGBzb3VuZC9LY29uZmlnYC4gVGhpcyBpcyBhIHByZXR0eSBzdGFuZGFyZCBzZXR1cCwgYW5kIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBzcGVjaWZpY3Mgb2YgaG93IHRoZSBkZXBlbmRlbmNpZXMgYW5kIG9wdGlvbnMgYXJlIHN0cnVjdHVyZWQuIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBkaXZlIHJpZ2h0IGludG8gYHNvdW5kL2hkYS9LY29uZmlnYCBhbmQgc2VlIHdoYXQncyBiZWluZyBkZWZpbmVkIHRoZXJlLCBhbmQgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSBicm9hZGVyIGF1ZGlvIHN1YnN5c3RlbSBjb25maWd1cmF0aW9uLiBJIHdhbnQgdG8gc2VlIGhvdyBtdWNoIGN1c3RvbWl6YXRpb24gaXMgb2ZmZXJlZCBhdCB0aGlzIGxldmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzc5NiwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjA5Ljc1Mzk5NTIxOVoiLCJTZXEiOjQyLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMjY5NzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic291bmQvaGRhL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG1lbnUgXFxcIkhELUF1ZGlvXFxcIlxcbiAgIDM6XFx0XFxuICAgNDpcXHRzb3VyY2UgXFxcInNvdW5kL2hkYS9jb21tb24vS2NvbmZpZ1xcXCJcXG4gICA1OlxcdHNvdXJjZSBcXFwic291bmQvaGRhL2NvbnRyb2xsZXJzL0tjb25maWdcXFwiXFxuICAgNjpcXHRzb3VyY2UgXFxcInNvdW5kL2hkYS9jb2RlY3MvS2NvbmZpZ1xcXCJcXG4gICA3OlxcdHNvdXJjZSBcXFwic291bmQvaGRhL2NvcmUvS2NvbmZpZ1xcXCJcXG4gICA4OlxcdFxcbiAgIDk6XFx0ZW5kbWVudVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTowOS43NTQxMjY0ODlaIiwiU2VxIjo0MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQwMDA1MTA2OSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCBjb25zaWRlcmluZyBteSBleHBlcnRpc2U6XG5cbioqQ2hlY2tpbmcgdGhlIERlcGVuZGVuY2llcyBhbmQgS2NvbmZpZyBIaWVyYXJjaHkqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgZmlyc3QgdGhpbmcgSSdtIG5vdGluZyBpcyB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4gYFNORF9IREFfSU5URUxgIGFuZCBgU05EYC4gSXQncyBwcmV0dHkgc3RyYWlnaHRmb3J3YXJkOiBpZiBnZW5lcmFsIHNvdW5kIHN1cHBvcnQgKGBTTkRgKSBpcyBlbmFibGVkLCB0aGVuIHdlIGNhbiBsaWtlbHkgYWxzbyBlbmFibGUgSW50ZWwgSGlnaCBEZWZpbml0aW9uIEF1ZGlvIChgU05EX0hEQV9JTlRFTGApLiBTdGFuZGFyZCBkZXBlbmRlbmN5LlxuXG5Ob3csIEkgbmVlZCB0byByZXZpc2l0IGBTTkRfU09DX0xPT05HU09OX0kyU19QQ0lgLiBJJ20gZ29pbmcgdG8gcXVpY2tseSB2ZXJpZnkgdGhhdCB0aGUgcmVsZXZhbnQgS2NvbmZpZyBmaWxlLCBgc291bmQvc29jL2xvb25nc29uL0tjb25maWdgLCBpcyBwcm9wZXJseSBzb3VyY2VkIGZyb20sIG9yIGluY2x1ZGVkIGJ5LCB0aGUgbWFpbiBTb3VuZCBTdWJzeXN0ZW0gS2NvbmZpZyBmaWxlLCBgc291bmQvc29jL0tjb25maWdgLiBUaGlzIGlzIGNydWNpYWwgdG8gZW5zdXJlIHRoYXQgdGhlIExvb25nc29uIEkyUyBQQ0kgZHJpdmVyIGdldHMgY29ycmVjdGx5IGludGVncmF0ZWQgaW50byB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzLiBHb3R0YSBtYWtlIHN1cmUgaXQncyBsaW5rZWQgdXAgcmlnaHQsIG90aGVyd2lzZSBpdCdsbCBuZXZlciBldmVuIGJlIGNvbnNpZGVyZWQgZHVyaW5nIGJ1aWxkIHRpbWUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4MTE1LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOToxNC4xNTQxODE0NThaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTI3OTgwNzEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic291cmNlIFxcXCJzb3VuZC9zb2MvbG9vbmdzb24vS2NvbmZpZ1xcXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic291bmQvc29jL0tjb25maWc9MTE3PXNvdXJjZSBcXFwic291bmQvc29jL2tpcmt3b29kL0tjb25maWdcXFwiXFxuc291bmQvc29jL0tjb25maWc6MTE4OnNvdXJjZSBcXFwic291bmQvc29jL2xvb25nc29uL0tjb25maWdcXFwiXFxuc291bmQvc29jL0tjb25maWctMTE5LXNvdXJjZSBcXFwic291bmQvc29jL2ltZy9LY29uZmlnXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOToxNi4yNDY5ODcyOTlaIiwiU2VxIjo0NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjAwMzYxNDgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgQXVkaW8gQ29uZmlndXJhdGlvbiBPcHRpb25zKipcblxuT2theSwgeWVzLCBJJ20gd2l0aCB0aGlzLiBMZXQncyBzZWUuIFRoZSBjdXJyZW50IGF1ZGlvIGNvbmZpZ3VyYXRpb25zIHdlJ3JlIGxvb2tpbmcgYXQgc2VlbSB0byBpbnZvbHZlIFBDSS1iYXNlZCBzb3VuZCBjYXJkcywgYSBidW5jaCBvZiBzb3VuZCBkcml2ZXJzLiBXZSdyZSBvYnZpb3VzbHkgY292ZXJpbmcgYSBicm9hZCByYW5nZSBvZiBoYXJkd2FyZS4gSSBzZWUgYFNORGAsIGBTTkRfUENJYCwgYW5kIHRoZW4gc3BlY2lmaWMgZHJpdmVycyBsaWtlIGBTTkRfSERBX0lOVEVMYCwgYFNORF9BRDE4ODlgLCBhbmQgb3RoZXJzIHdoaWNoIHJlcHJlc2VudCBsZWdhY3kgYW5kIGN1cnJlbnQgYXVkaW8gaW50ZXJmYWNlcy4gSXQgc2VlbXMgd2UncmUgaW5jbHVkaW5nIGEgc3lzdGVtLW9uLWEtY2hpcCAoU29DKSBjb25maWd1cmF0aW9uIG9wdGlvbjogYFNORF9TT0NgIGFuZCBgU05EX1NPQ19MT09OR1NPTl9JMlNfUENJYCBhcyB3ZWxsLiBBbHNvIGBDT01QSUxFX1RFU1RgLiBBIGdvb2QgcmFuZ2UuXG5cbkhvbGQgb24uLi4gSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IGBTTkRfQ1M1NTMwYC4uLiByaWdodCwgaXQgKmRlcGVuZHMqIG9uIGBJU0FfRE1BX0FQSWAuIEl0J3MgZXNzZW50aWFsIHRvIGNvbmZpcm0gdGhhdCBkZXBlbmRlbmN5IGlzIGNvcnJlY3RseSBoYW5kbGVkIGluIG91ciBidWlsZCBwcm9jZXNzLCBzbyBsZXQncyBjaGVjayBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjg1MTEsIk91dHB1dFRva2VucyI6MjIsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTk6MjIuMjUwNjA2NDA0WiIsIlNlcSI6NDYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMTY2NjYwNTIwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBTTkRfQ1M1NTMwXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNvdW5kL3BjaS9LY29uZmlnPTI3OT1jb25maWcgU05EX0NTNDZYWF9ORVdfRFNQXFxuLS1cXG5zb3VuZC9wY2kvS2NvbmZpZy0yODctXFxuc291bmQvcGNpL0tjb25maWc6Mjg4OmNvbmZpZyBTTkRfQ1M1NTMwXFxuc291bmQvcGNpL0tjb25maWctMjg5LVxcdHRyaXN0YXRlIFxcXCJDUzU1MzAgQXVkaW9cXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjI0LjQxNzI3MDk0NFoiLCJTZXEiOjQ3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Njg5MDUyNDQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2Ygd2hhdCdzIGdvaW5nIHRocm91Z2ggbXkgbWluZCBhcyBJIGFwcHJvYWNoIHRoaXM6XG5cbioqQW5hbHl6aW5nIHRoZSBLY29uZmlnIGZvciBTTkRfQ1M1NTMwKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW50byB0aGUgYHNvdW5kL3BjaS9LY29uZmlnYCBmaWxlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhlIGBTTkRfQ1M1NTMwYCBzb3VuZCBkcml2ZXIgaXMgY29uZmlndXJlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBzeXN0ZW0uIFRoaXMgaXMgd2hlcmUgdGhlIGRlY2lzaW9ucyBhcmUgbWFkZTogaXMgaXQgZW5hYmxlZCBieSBkZWZhdWx0PyBJcyBpdCBhIG1vZHVsZSwgb3IgYnVpbHQtaW4/IFdoYXQgZGVwZW5kZW5jaWVzIGRvZXMgaXQgaGF2ZSBvbiBvdGhlciBvcHRpb25zIG9yIGhhcmR3YXJlPyBJJ2xsIGJlIGxvb2tpbmcgZm9yIHRoaW5ncyBsaWtlIGBjb25maWcgU05EX0NTNTUzMGAsIGl0cyBgZGVwZW5kcyBvbmAsIGBzZWxlY3RgLCBgaGVscGAgdGV4dCwgYW5kIHBvdGVudGlhbCBkZWZhdWx0cy4gSSdtIGV4cGVjdGluZyB0aGlzIHdpbGwgdXNlIHRoZSBzdGFuZGFyZCBLY29uZmlnIGZvcm1hdCwgc28gaXQgc2hvdWxkIGJlIHJlbGF0aXZlbHkgc3RyYWlnaHRmb3J3YXJkIHRvIHBhcnNlLiBUaGUgZ29hbCBpcyB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGhvdyB0aGlzIHNwZWNpZmljIGF1ZGlvIGRyaXZlciBmaXRzIGludG8gdGhlIGxhcmdlciBzb3VuZCBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbiBsYW5kc2NhcGUsIGFuZCB0byBzZWUgaWYgdGhlcmUncyBhbnl0aGluZyB1bnVzdWFsIG9yIHdvcnRoIG5vdGluZyBpbiBpdHMgc2V0dXAuIEknbSByZWFkeSB0byBkaXZlIGluIGFuZCBxdWlja2x5IHNwb3QgYW55IGdvdGNoYXMgb3IgYXJlYXMgb2YgcG90ZW50aWFsIGNvbmZsaWN0IVxuXG5cbiIsIklucHV0VG9rZW5zIjoyOTA2NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjMwLjEwNjMyNTUwMloiLCJTZXEiOjQ4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NjUxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9wY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAyODgsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAyODg6XFx0Y29uZmlnIFNORF9DUzU1MzBcXG4gMjg5OlxcdFxcdHRyaXN0YXRlIFxcXCJDUzU1MzAgQXVkaW9cXFwiXFxuIDI5MDpcXHRcXHRkZXBlbmRzIG9uIElTQV9ETUFfQVBJIFxcdTAwMjZcXHUwMDI2IChYODZfMzIgfHwgQ09NUElMRV9URVNUKVxcbiAyOTE6XFx0XFx0ZGVwZW5kcyBvbiAhTTY4S1xcbiAyOTI6XFx0XFx0c2VsZWN0IFNORF9TQjE2X0RTUFxcbiAyOTM6XFx0XFx0aGVscFxcbiAyOTQ6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgYXVkaW8gb24gQ3lyaXgvTmF0U2VtaSBDUzU1MzAgY2hpcHMuXFxuIDI5NTpcXHRcXG4gMjk2OlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiAyOTc6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtY3M1NTMwLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTozMC4xMDY0MTI5ODJaIiwiU2VxIjo0OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NTQ2MDIxODk1MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipDb25kaXRpb25hbCBDb21waWxhdGlvbiBDb25zaWRlcmF0aW9ucyoqXG5cbk9rYXksIHNvIHRoaXMgc2VjdGlvbiBvZiBjb2RlJ3MgYmVoYXZpb3IgaGluZ2VzIG9uIGBJU0FfRE1BX0FQSWAgYmVpbmcgZGVmaW5lZCwgYW5kIHNwZWNpZmljYWxseSwgd2hldGhlciB3ZSdyZSBvbiBhbiBYODZfMzIgYXJjaGl0ZWN0dXJlIG9yIGNvbXBpbGluZyBhIHRlc3QgYnVpbGQuIEknbSBzZWVpbmcgdGhhdCB3ZSAqZG8qIGhhdmUgYENPTVBJTEVfVEVTVGAgZW5hYmxlZCwgd2hpY2ggc3VnZ2VzdHMgdGhhdCB0aGUgY29uZGl0aW9ucyBzaG91bGQgYmUgbWV0LCBidXQgSSdtIHN0aWxsIGEgYml0IGhlc2l0YW50LCBiZWNhdXNlIGBJU0FfRE1BX0FQSWAgbWlnaHQgbm90IGJlIHVuaXZlcnNhbGx5IHN1cHBvcnRlZCBhY3Jvc3MgYWxsIG91ciB0YXJnZXQgYXJjaGl0ZWN0dXJlcy4gSG93ZXZlciwgY29uc2lkZXJpbmcgdGhhdCB3ZSBvbmx5IG5lZWQgdG8gZW5hYmxlICplbm91Z2gqIG9mIHRoZXNlIHRvIHRyaWdnZXIgdGhlIHJlbGV2YW50IGNvZGUgcGF0aHMsIHRoYXQgc2hvdWxkbid0IGJlIGEgaHVnZSBwcm9ibGVtLiBXZSBkb24ndCBuZWVkICpldmVyeSogcG9zc2libGUgZmVhdHVyZSBlbmFibGVkLCBqdXN0IGVub3VnaCB0byBnZXQgdGhlIHRlc3QgdG8gcnVuLiBgU05EX0hEQV9JTlRFTGAgaXMgYSBjb21tb24gYW5kIGVhc2lseSB0cmlnZ2VyZWQgY29uZGl0aW9uLiBMZXQncyBzdGFydCB3aXRoIGNoZWNraW5nIGlmIGBTTkRfQUQxODg5YCBpcyBhIHN1aXRhYmxlIG9wdGlvbi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk1NDMsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTozNS41NjY2MzQ3NzJaIiwiU2VxIjo1MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTIxMTAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEzLFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDEzOlxcdGNvbmZpZyBTTkRfQUQxODg5XFxuICAxNDpcXHRcXHR0cmlzdGF0ZSBcXFwiQW5hbG9nIERldmljZXMgQUQxODg5XFxcIlxcbiAgMTU6XFx0XFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXFxuICAxNjpcXHRcXHRoZWxwXFxuICAxNzpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgaW50ZWdyYXRlZCBBQzk3IHNvdW5kXFxuICAxODpcXHRcXHQgIGRldmljZSBmb3VuZCBpbiBwYXJ0aWN1bGFyIG9uIHRoZSBIZXdsZXR0LVBhY2thcmQgW0JDSl0teHh4MFxcbiAgMTk6XFx0XFx0ICBjbGFzcyBQQS1SSVNDIHdvcmtzdGF0aW9ucywgdXNpbmcgdGhlIEFEMTgxOSBjb2RlYy5cXG4gIDIwOlxcdFxcbiAgMjE6XFx0XFx0ICBUbyBjb21waWxlIHRoaXMgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDIyOlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWFkMTg4OS5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTk6MzUuNTY2NzU3NzYyWiIsIlNlcSI6NTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU2MDQ1ODQ5MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkFuYWx5emluZyB0aGUgRGVwZW5kZW5jeSBMYW5kc2NhcGUqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgaW5pdGlhbCBhc3Nlc3NtZW50IGlzIHBvc2l0aXZlIOKAkyB3ZSdyZSBvcGVyYXRpbmcgd2l0aCBubyBpbW1lZGlhdGVseSBhcHBhcmVudCBzcGVjaWFsIGRlcGVuZGVuY2llcy4gVGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludCwgYWx3YXlzIGEgcmVsaWVmIGluIGNvbXBsZXggcHJvamVjdHMuIE5vdywgbGV0J3MgZHJpbGwgZG93biB0byB0aGUgc3BlY2lmaWNzLiBNeSBuZXh0IHN0ZXAsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBpbW1lZGlhdGVseSBjaGVjayB0aGUgaW1wbGljYXRpb25zIGFuZCBzdGF0dXMgb2YgYFNORF9BVElJWFBgLiBUaGlzIGxpa2VseSByZXByZXNlbnRzIGEgY3JpdGljYWwgYXVkaW8gb3IgaGFyZHdhcmUgaW50ZXJmYWNlIGNvbXBvbmVudCwgZ2l2ZW4gdGhlIG5hbWluZyBjb252ZW50aW9uLiBXZSBuZWVkIHRvIGFzY2VydGFpbiBpdHMgY3VycmVudCBjb25maWd1cmF0aW9uLCBwb3RlbnRpYWwgdmVyc2lvbiBjb25mbGljdHMsIGFuZCBhbnkga25vd24gaXNzdWVzIG9yIGxpbWl0YXRpb25zIHRoYXQgY291bGQgaW1wYWN0IHN5c3RlbSBwZXJmb3JtYW5jZSBvciBjb21wYXRpYmlsaXR5IGRvd24gdGhlIGxpbmUuIEl0J3MgdGhlIGx5bmNocGluIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBmaXJzdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwNjEsIk91dHB1dFRva2VucyI6MzQsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjQxLjE3MTM0Nzk4WiIsIlNlcSI6NTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NDkxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9wY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3NyxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICA3NzpcXHRjb25maWcgU05EX0FUSUlYUFxcbiAgNzg6XFx0XFx0dHJpc3RhdGUgXFxcIkFUSSBJWFAgQUM5NyBDb250cm9sbGVyXFxcIlxcbiAgNzk6XFx0XFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXFxuICA4MDpcXHRcXHRoZWxwXFxuICA4MTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgaW50ZWdyYXRlZCBBQzk3IHNvdW5kXFxuICA4MjpcXHRcXHQgIGRldmljZSBvbiBtb3RoZXJib2FyZHMgd2l0aCBBVEkgY2hpcHNldHMgKEFUSSBJWFAgMTUwLzIwMC8yNTAvXFxuICA4MzpcXHRcXHQgIDMwMC80MDApLlxcbiAgODQ6XFx0XFxuICA4NTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gIDg2OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWF0aWl4cC5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTk6NDEuMTcxNDk0NjZaIiwiU2VxIjo1MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIzNjM5MzcyMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBNaW5pbWFsIEV4dGVybmFsIEVudGFuZ2xlbWVudHMqKlxuXG5BbHJpZ2h0LCBzdHJhaWdodCB0byB0aGUgcG9pbnQuIFRoZSBmaXJzdCB0aGluZyBJJ20gcmVnaXN0ZXJpbmcgaXMgdGhlIGFic2VuY2Ugb2YgYW55IHNwZWNpZmllZCBkZXBlbmRlbmNpZXMuIFRoYXQncyBnb29kLCBhIGNsZWFuIHNsYXRlIG9mdGVuIHNpZ25hbHMgZWl0aGVyIHNpbXBsaWNpdHkgb3IgYSBmb2N1c2VkIHNjb3BlLiBJdCBzdWdnZXN0cyB3aGF0ZXZlciB3ZSdyZSBkZWFsaW5nIHdpdGggKnNob3VsZG4ndCogcmVxdWlyZSBwdWxsaW5nIGluIGEgd2hvbGUgaG9zdCBvZiBleHRlcm5hbCBsaWJyYXJpZXMgb3IgZnJhbWV3b3JrcyDigJMgYXQgbGVhc3QsIG5vdCBpbml0aWFsbHkuIEFsd2F5cyBhIHBsdXMgdG8ga2VlcCB0aGluZ3MgbGlnaHR3ZWlnaHQgYW5kIG1hbmFnZWFibGUuXG5cbk5vdywgd2hlcmUgZG8gd2UgZ28gZnJvbSBoZXJlPyBMZXQncyBkcmlsbCBkb3duIGFuZCBzZWUgYWJvdXQgYFNORF9BVTg4MTBgLiBUaGlzIGlzIHdoZXJlIHRoZSB3b3JrIGJlZ2lucyB0byB0YWtlIHNoYXBlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDQ0MiwiT3V0cHV0VG9rZW5zIjozNCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE5LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTk6NDUuNDA3ODkxMjYxWiIsIlNlcSI6NTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk3NDUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDk4LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDk4OlxcdGNvbmZpZyBTTkRfQVU4ODEwXFxuICA5OTpcXHRcXHR0cmlzdGF0ZSBcXFwiQXVyZWFsIEFkdmFudGFnZVxcXCJcXG4gMTAwOlxcdFxcdGRlcGVuZHMgb24gSEFTX0lPUE9SVFxcbiAxMDE6XFx0XFx0c2VsZWN0IFNORF9NUFU0MDFfVUFSVFxcbiAxMDI6XFx0XFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXFxuIDEwMzpcXHRcXHRoZWxwXFxuIDEwNDpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBBdXJlYWwgQWR2YW50YWdlIHNvdW5kY2FyZHMuXFxuIDEwNTpcXHRcXG4gMTA2OlxcdFxcdCAgU3VwcG9ydGVkIGZlYXR1cmVzOiBIYXJkd2FyZSBNaXhlciwgU1JDLCBFUSBhbmQgU1BESUYgb3V0cHV0LlxcbiAxMDc6XFx0XFx0ICAzRCBzdXBwb3J0IGNvZGUgaXMgaW4gcGxhY2UsIGJ1dCBub3QgeWV0IHVzZWFibGUuIEZvciBtb3JlIGluZm8sXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjQ1LjQwNzk5MDM0MVoiLCJTZXEiOjU1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNjk0OTYyMjA2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBsaWtlIHlvdTpcblxuKipJbnZlc3RpZ2F0aW5nIGEgQ29uZmlndXJhdGlvbiBEZXBlbmRlbmN5KipcblxuT2theSwgc28gdGhlIHNpdHVhdGlvbiBoaW5nZXMgb24gYEhBU19JT1BPUlRgLiBUaGF0J3MgdGhlIGtleSB2YXJpYWJsZSBoZXJlLiBXZSd2ZSBnb3QgdG8gZGV0ZXJtaW5lIGlmIGl0J3MgZGVmaW5lZCBhbmQgd2hhdCBpdHMgaW1wbGljYXRpb25zIGFyZS4gTXkgaW1tZWRpYXRlIGNvbmNlcm4gaXMgaG93IHRoaXMgaW5mbHVlbmNlcyB0aGUgb3ZlcmFsbCBzeXN0ZW0gYmVoYXZpb3IuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzY29wZS4gSSdtIHRoaW5raW5nLCBcIkxldCdzIGFzc3VtZSBpdCdzIHNldC5cIiBXaGF0IGhhcHBlbnMgZG93bnN0cmVhbT9cblxuTm93LCBsZXQncyBwaXZvdCBhbmQgY2hlY2sgYFNORF9BVzJgLiBUaGF0J3MgYW5vdGhlciBjcml0aWNhbCBwaWVjZSBvZiB0aGUgcHV6emxlLiBJIG5lZWQgdG8ga25vdyBob3cgaXQgaW50ZXJhY3RzIHdpdGggdGhlIEkvTyBwb3J0IGNoZWNrLiBBcmUgd2UgdGFsa2luZyBhYm91dCBhbiBhdWRpbyBjb21wb25lbnQgdGhhdCBkZXBlbmRzIG9uIGBIQVNfSU9QT1JUYD8gT3IgaXMgYFNORF9BVzJgIHNvbWVob3cgaW5kZXBlbmRlbnQsIGJ1dCBhZmZlY3RlZCBieSB0aGUgb3ZlcmFsbCBoYXJkd2FyZSBjb25maWd1cmF0aW9uPyBUaGlzIGNvbm5lY3Rpb24gZGVtYW5kcyBpbW1lZGlhdGUgc2NydXRpbnkuIFVuZGVyc3RhbmRpbmcgdGhlaXIgaW50ZXJyZWxhdGlvbnNoaXAgaXMgY3J1Y2lhbCBmb3IgYSBjb21wbGV0ZSBwaWN0dXJlLiBBcmUgd2UgdHJvdWJsZXNob290aW5nIGEgZGVwZW5kZW5jeSwgb3IganVzdCBleHBsb3JpbmcgdGhlIGZlYXR1cmUgc2V0PyBJIG5lZWQgdG8gY2xhcmlmeSB0aGUgc3lzdGVtIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMwODI2LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTo0OS4xMDI5NTUzNzdaIiwiU2VxIjo1NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDE0MixcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDE0MjpcXHRjb25maWcgU05EX0FXMlxcbiAxNDM6XFx0XFx0dHJpc3RhdGUgXFxcIkVtYWdpYyBBdWRpb3dlcmsgMlxcXCJcXG4gMTQ0OlxcdFxcdGhlbHBcXG4gMTQ1OlxcdFxcdCAgU2F5IFkgaGVyZSB0byBpbmNsdWRlIHN1cHBvcnQgZm9yIEVtYWdpYyBBdWRpb3dlcmsgMiBzb3VuZGNhcmRzLlxcbiAxNDY6XFx0XFxuIDE0NzpcXHRcXHQgIFN1cHBvcnRlZCBmZWF0dXJlczogQW5hbG9nIGFuZCBTUERJRiBvdXRwdXQuIEFuYWxvZyBvciBTUERJRiBpbnB1dC5cXG4gMTQ4OlxcdFxcdCAgTm90ZTogU3dpdGNoIGJldHdlZW4gYW5hbG9nIGFuZCBkaWdpdGFsIGlucHV0IGRvZXMgbm90IGFsd2F5cyB3b3JrLlxcbiAxNDk6XFx0XFx0ICBJdCBjYW4gcHJvZHVjZSBjb250aW51b3VzIG5vaXNlLiBUaGUgd29ya2Fyb3VuZCBpcyB0byBzd2l0Y2ggYWdhaW5cXG4gMTUwOlxcdFxcdCAgKGFuZCBhZ2FpbikgYmV0d2VlbiBkaWdpdGFsIGFuZCBhbmFsb2cgaW5wdXQgdW50aWwgaXQgd29ya3MuXFxuIDE1MTpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MTk6NDkuMTAzMDU5Njc3WiIsIlNlcSI6NTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU0OTI4OTkyNTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipRdWljayBJbml0aWFsIEFzc2Vzc21lbnQqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIExvb2tzIGxpa2UgdGhlcmUgYXJlbid0IGFueSBpbW1lZGlhdGUsIGdsYXJpbmcgc3BlY2lhbCBkZXBlbmRlbmNpZXMgdG8gY29uc2lkZXIuIEFsd2F5cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQg4oCTIGxlc3MgdG8gd3JhbmdsZSBsYXRlci4gTm93LCBsZXQncyBqdW1wIHJpZ2h0IGludG8gdGhlIG1lYXQgb2YgaXQgYW5kIHRha2UgYSBjbG9zZXIgbG9vayBhdCBgU05EX0JUODdYYC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVudGFsIG1hcCBvZiB0aGF0IG1vZHVsZSBhbmQgbWFrZSBzdXJlIHRoZXJlIGFyZW4ndCBhbnkgZ290Y2hhcyBsdXJraW5nIHdpdGhpbi5cblxuXG4iLCJJbnB1dFRva2VucyI6MzEyNzksIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjE5OjU0LjU5NTk2MTQ0N1oiLCJTZXEiOjU4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NzcxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9wY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiAxNzcsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAxNzc6XFx0Y29uZmlnIFNORF9CVDg3WFxcbiAxNzg6XFx0XFx0dHJpc3RhdGUgXFxcIkJ0ODd4IEF1ZGlvIENhcHR1cmVcXFwiXFxuIDE3OTpcXHRcXHRzZWxlY3QgU05EX1BDTVxcbiAxODA6XFx0XFx0aGVscFxcbiAxODE6XFx0XFx0ICBJZiB5b3Ugd2FudCB0byByZWNvcmQgYXVkaW8gZnJvbSBUViBjYXJkcyBiYXNlZCBvblxcbiAxODI6XFx0XFx0ICBCcm9va3RyZWUgQnQ4NzgvQnQ4NzkgY2hpcHMsIHNheSBZIGhlcmUgYW5kIHJlYWRcXG4gMTgzOlxcdFxcdCAgXFx1MDAzY2ZpbGU6RG9jdW1lbnRhdGlvbi9zb3VuZC9jYXJkcy9idDg3eC5yc3RcXHUwMDNlLlxcbiAxODQ6XFx0XFxuIDE4NTpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG4gMTg2OlxcdFxcdCAgd2lsbCBiZSBjYWxsZWQgc25kLWJ0ODd4LlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToxOTo1NC41OTYwNTA1MTdaIiwiU2VxIjo1OSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTA3NTc3NjM3OTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgZGVsaXZlcmVkIGFzIGlmIHRoZXkgd2VyZSBteSBvd246XG5cbioqSW5pdGlhbCBBc3Nlc3NtZW50OiBNaW5pbWFsIENvbXBsZXhpdHkqKlxuXG5BbHJpZ2h0LCBub3RoaW5nIGltbWVkaWF0ZWx5IGp1bXBzIG91dCBhdCBtZSBhcyBwcm9ibGVtYXRpYyBpbiB0aGUgZGVwZW5kZW5jeSBkZXBhcnRtZW50LiBTb3VuZHMgbGlrZSB3ZSdyZSBrZWVwaW5nIHRoaW5ncyBzdHJlYW1saW5lZCwgd2hpY2ggSSBhcHByZWNpYXRlLiBBbHdheXMgZ29vZCB0byBhdm9pZCB1bm5lY2Vzc2FyeSBibG9hdCwgZXNwZWNpYWxseSBlYXJseSBvbi4gSXQgc2ltcGxpZmllcyB0cm91Ymxlc2hvb3RpbmcgYW5kIGRlcGxveW1lbnQuXG5cbk5vdywgbGV0J3MgZGl2ZSBpbnRvIHRoZSBjb3JlIG9mIHRoZSBtYXR0ZXIuIEknbSBnb2luZyB0byBzdGFydCBieSBwdWxsaW5nIHVwIGV2ZXJ5dGhpbmcgSSBrbm93IGFib3V0IGBTTkRfQ1M0MjgxYC4gVGhpcyBpcyB3aGVyZSB0aGUgcnViYmVyIG1lZXRzIHRoZSByb2FkLiBJJ2xsIG5lZWQgdG8gcmVtZW1iZXIgdGhlIGxhc3QgdGltZSBJIHRvdWNoZWQgdGhhdCBvbmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMxNjI3LCJPdXRwdXRUb2tlbnMiOjM1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDowNS4zNTM4MTg2MThaIiwiU2VxIjo2MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1NjEwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInNvdW5kL3BjaS9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDI1NCxcbiAgXCJMaW5lQ291bnRcIjogMTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDI1NDpcXHRjb25maWcgU05EX0NTNDI4MVxcbiAyNTU6XFx0XFx0dHJpc3RhdGUgXFxcIkNpcnJ1cyBMb2dpYyAoU291bmQgRnVzaW9uKSBDUzQyODFcXFwiXFxuIDI1NjpcXHRcXHRkZXBlbmRzIG9uIEhBU19JT1BPUlRcXG4gMjU3OlxcdFxcdHNlbGVjdCBTTkRfT1BMM19MSUJcXG4gMjU4OlxcdFxcdHNlbGVjdCBTTkRfUkFXTUlESVxcbiAyNTk6XFx0XFx0c2VsZWN0IFNORF9BQzk3X0NPREVDXFxuIDI2MDpcXHRcXHRoZWxwXFxuIDI2MTpcXHRcXHQgIFNheSBZIGhlcmUgdG8gaW5jbHVkZSBzdXBwb3J0IGZvciBDaXJydXMgTG9naWMgQ1M0MjgxIGNoaXBzLlxcbiAyNjI6XFx0XFxuIDI2MzpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBkcml2ZXIgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmU6IHRoZSBtb2R1bGVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6MDUuMzUzOTk2MDI4WiIsIlNlcSI6NjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5MTI2NTQ2OTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0aG91Z2h0IHByb2Nlc3MsIHN1bW1hcml6ZWQgYXMgeW91IHJlcXVlc3RlZDpcblxuKipBc3Nlc3NpbmcgdGhlIExhbmRzY2FwZSoqXG5cbk9rYXksIHNvIHRoZSBkaXJlY3Rpb24gdGhpcyBhbmFseXNpcyB0YWtlcyBkZXBlbmRzIGhlYXZpbHkgb24gd2hldGhlciBgSEFTX0lPUE9SVGAgaXMgZGVmaW5lZC4gVGhhdCdzIHRoZSBjcml0aWNhbCBmaXJzdCBodXJkbGUuIEJlZm9yZSBJIGNhbiBwcm9jZWVkIHdpdGggYW55IGFzc3VtcHRpb25zLCBJIG5lZWQgdG8ga25vdyBpZiB0aGF0IGNvbmRpdGlvbiBob2xkcyB0cnVlLiBJIGNhbid0IG1vdmUgZm9yd2FyZCBibGluZGx5LlxuXG5BZnRlciB0aGF0J3MgY2xhcmlmaWVkLCB0aGUgbmV4dCBsb2dpY2FsIHN0ZXAgdG8gaW52ZXN0aWdhdGUgaXMgdGhlIHN0YXRlIG9mIGBTTkRfTE9MQWAuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBzdGF0dXMsIGFuZCBob3cgaXQgaW50ZXJyZWxhdGVzIHdpdGggYEhBU19JT1BPUlRgLiBNeSBhcHByb2FjaCB3aWxsIHNoaWZ0IGFjY29yZGluZ2x5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTk5NSwiT3V0cHV0VG9rZW5zIjozNSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6MDkuMjY2NjU0NjcyWiIsIlNlcSI6NjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0NTIxMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJzb3VuZC9wY2kvS2NvbmZpZ1wiLFxuICBcIkZpcnN0TGluZVwiOiA3MDcsXG4gIFwiTGluZUNvdW50XCI6IDEwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA3MDc6XFx0Y29uZmlnIFNORF9MT0xBXFxuIDcwODpcXHRcXHR0cmlzdGF0ZSBcXFwiRGlnaWdyYW0gTG9sYVxcXCJcXG4gNzA5OlxcdFxcdHNlbGVjdCBTTkRfUENNXFxuIDcxMDpcXHRcXHRoZWxwXFxuIDcxMTpcXHRcXHQgIFNheSBZIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgRGlnaWdyYW0gTG9sYSBib2FyZHMuXFxuIDcxMjpcXHRcXG4gNzEzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcbiA3MTQ6XFx0XFx0ICB3aWxsIGJlIGNhbGxlZCBzbmQtbG9sYS5cXG4gNzE1OlxcdFxcbiA3MTY6XFx0Y29uZmlnIFNORF9MWDY0NjRFU1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDowOS4yNjY4MDE3NDJaIiwiU2VxIjo2MywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MTUxNjY0NzU1OTUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlIGFuZCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipRdWljayBBdWRpdDogRGVwZW5kZW5jaWVzIFx1MDAyNiBNb2R1bGUgQ2hlY2sqKlxuXG5BbHJpZ2h0LCBsZXQncyBrZWVwIHRoaXMgY2xlYW4uIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJObyBzcGVjaWFsIGRlcGVuZGVuY2llcy5cIiBBbHdheXMgZ29vZCB0byBzdGFydCB3aXRoIGEgbWluaW1hbCBiYXNlbGluZS4gVGhlIGxlc3MgZXh0cmEgYmFnZ2FnZSwgdGhlIGJldHRlciBmb3IgcG9ydGFiaWxpdHkgYW5kIHBvdGVudGlhbCBjb25mbGljdHMgZG93biB0aGUgbGluZS5cblxuTm93LCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIHRoZSBzcGVjaWZpY3MuIEkgbmVlZCB0byBtYWtlIHN1cmUgSSdtIHRoaW5raW5nIG9mIHRoZSByaWdodCB0aGluZy4gT2theSwgXCJMZXQncyBjaGVjayBgU05EX0hEU1BNYC5cIiBUaGF0J3MgdGhlIGtleSBtb2R1bGUuIE5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHRoYXQuIEkgd2FudCB0byBjb25maXJtIHdoYXQgSSdtIGV4cGVjdGluZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzIzMjUsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjIwOjI0LjQzMzI4MDYzN1oiLCJTZXEiOjY0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMzgyMjksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwic291bmQvcGNpL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNjI0LFxuICBcIkxpbmVDb3VudFwiOiAxMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgNjI0OlxcdGNvbmZpZyBTTkRfSERTUE1cXG4gNjI1OlxcdFxcdHRyaXN0YXRlIFxcXCJSTUUgSGFtbWVyZmFsbCBEU1AgTUFESS9SYXlEQVQvQUlPXFxcIlxcbiA2MjY6XFx0XFx0c2VsZWN0IFNORF9IV0RFUFxcbiA2Mjc6XFx0XFx0c2VsZWN0IFNORF9SQVdNSURJXFxuIDYyODpcXHRcXHRzZWxlY3QgU05EX1BDTVxcbiA2Mjk6XFx0XFx0aGVscFxcbiA2MzA6XFx0XFx0ICBTYXkgWSBoZXJlIHRvIGluY2x1ZGUgc3VwcG9ydCBmb3IgUk1FIEhhbW1lcmZhbGwgRFNQIE1BREksXFxuIDYzMTpcXHRcXHQgIFJheURBVCBhbmQgQUlPIHNvdW5kY2FyZHMuXFxuIDYzMjpcXHRcXG4gNjMzOlxcdFxcdCAgVG8gY29tcGlsZSB0aGlzIGRyaXZlciBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDoyNC40MzM0MjA3ODhaIiwiU2VxIjo2NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NjY0MTc3MTMyNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBBc3Nlc3NtZW50IG9mIHRoZSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgQ2hhbmdlKipcblxuT2theSwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBObyB1bnVzdWFsIGRlcGVuZGVuY2llcyB0byB3b3JyeSBhYm91dCwgdGhhdCdzIGdvb2QuIE15IGZvY3VzIGlzIG9uIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgYWZmZWN0ZWQ6IGBQQ0lgLCBgU05EYCwgYFNORF9QQ0lgLCBhbmQgYWxsIHRoZSBzb3VuZC1yZWxhdGVkIGRyaXZlcnMgSSBzZWUgbGlzdGVkIChgU05EX0hEQV9JTlRFTGAsIGBTTkRfQUQxODg5YCwgZXRjLiwgcmlnaHQgZG93biB0byBgQ09NUElMRV9URVNUYCkuIEl0J3MgYSBwcmV0dHkgY29tcHJlaGVuc2l2ZSBsaXN0LCBpbmRpY2F0aW5nIHRoaXMgaGFzIGEgcG90ZW50aWFsbHkgYnJvYWQgaW1wYWN0LlxuXG5UaGUga2V5IGNoYW5nZSwgdGhlIHRoaW5nIEkgbmVlZCB0byBpbnZlc3RpZ2F0ZSBpbiBkZXRhaWwsIGlzIHRoaXMgYHBjaW1faW9yZW1hcF9yZWdpb25gIGZ1bmN0aW9uLiBJdCBzZWVtcyB0aGlzIGlzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIHRoYXQgaW50ZWdyYXRlcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZpY2UgcmVzb3VyY2VzIChkZXZyZXMpLCBhbmQgZXNzZW50aWFsbHkgY2hhbmdlcyBob3cgdGhlIGRyaXZlciBwcm9iZXMgYW5kIGRvZXMgdGhlIGlvcmVtYXAgb2YgdGhlIHJlZ2lvbiwgdXNpbmcgbWVtb3J5IG1hcHBlZCByZWdpb24uIFRoZSBjcml0aWNhbCBwb2ludCBpcyB0aGF0IHRoaXMgd2lsbCBiZSB1c2VkIGZvciBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIG1lbW9yeSBtYXBwaW5nIG92ZXIgSU8gbWFwcGluZyBpbiBtYW55IGNhc2VzLiBTbyBpdCdzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIFBDSSBjb3JlIGFuZCBpbiBkcml2ZXIgcHJvYmluZyBsb2dpYyDigJMgYW5kIGl0J3MgcmVhY2hhYmxlIHRocm91Z2ggUENJIGRldmljZSBwcm9iZSwgd2hpY2ggbWFrZXMgaXQgZnV6emFibGUsIHdoaWNoIGlzIGEgZ29vZCB0aGluZy5cblxuSSdtIG1ha2luZyBzdXJlIHRoYXQgdGhlIG5ldyBmdW5jdGlvbiBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgaXMgZXhwb3J0ZWQgYmVjYXVzZSBpdCBpcyBhIGtleSBmdW5jdGlvbi4gSSBjYW4gY29uZmlybTogYEVYUE9SVF9TWU1CT0wocGNpbV9pb3JlbWFwX3JlZ2lvbik7YCDigJMgcGVyZmVjdC4gQW5kIGl0J3Mgbm90IHN0YXRpYyBvciBpbmxpbmVkLCBzbyBpdCdzIGRpcmVjdGx5IGFjY2Vzc2libGUuXG5cbkknbGwgcHJvY2VlZCB1c2luZyB0aGUgc2V0LXJlc3VsdHMgdG9vbCBmb3IgdGhpcy5cblxuXG4iLCJJbnB1dFRva2VucyI6MzI2ODUsIk91dHB1dFRva2VucyI6MjYwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzA2LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6MzEuMDc1MTk1NDkyWiIsIlNlcSI6NjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTE1MjU2MTI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQ0lcIixcbiAgICBcIlNORFwiLFxuICAgIFwiU05EX1BDSVwiLFxuICAgIFwiU05EX0hEQV9JTlRFTFwiLFxuICAgIFwiU05EX0FEMTg4OVwiLFxuICAgIFwiU05EX0FUSUlYUFwiLFxuICAgIFwiU05EX0FUSUlYUF9NT0RFTVwiLFxuICAgIFwiU05EX0FXMlwiLFxuICAgIFwiU05EX0JUODdYXCIsXG4gICAgXCJTTkRfTE9MQVwiLFxuICAgIFwiU05EX0hEU1BNXCIsXG4gICAgXCJTTkRfU09DXCIsXG4gICAgXCJTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcIixcbiAgICBcIkNPTVBJTEVfVEVTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBjaW1faW9yZW1hcF9yZWdpb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCB3aGljaCB3cmFwcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZyZXMuIEl0IHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIHRoZW0gdG8gdXNlIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgdXNpbmcgSU8gbWFwcGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgUENJIGFuZCBkcml2ZXIgcHJvYmluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJQQ0lcIixcbiAgICBcIlNORFwiLFxuICAgIFwiU05EX1BDSVwiLFxuICAgIFwiU05EX0hEQV9JTlRFTFwiLFxuICAgIFwiU05EX0FEMTg4OVwiLFxuICAgIFwiU05EX0FUSUlYUFwiLFxuICAgIFwiU05EX0FUSUlYUF9NT0RFTVwiLFxuICAgIFwiU05EX0FXMlwiLFxuICAgIFwiU05EX0JUODdYXCIsXG4gICAgXCJTTkRfTE9MQVwiLFxuICAgIFwiU05EX0hEU1BNXCIsXG4gICAgXCJTTkRfU09DXCIsXG4gICAgXCJTTkRfU09DX0xPT05HU09OX0kyU19QQ0lcIixcbiAgICBcIkNPTVBJTEVfVEVTVFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInBjaW1faW9yZW1hcF9yZWdpb25cIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGNvcmUgUENJIGZ1bmN0aW9uIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCB3aGljaCB3cmFwcyBgcGNpX2lvcmVtYXBfYmFyYCBhbmQgYHBjaV9yZXF1ZXN0X3JlZ2lvbmAgd2l0aCBkZXZyZXMuIEl0IHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgaW4gc2V2ZXJhbCBzb3VuZCBkcml2ZXJzLCBmb3JjaW5nIHRoZW0gdG8gdXNlIG1lbW9yeSBtYXBwaW5nIGluc3RlYWQgb2YgcG90ZW50aWFsbHkgdXNpbmcgSU8gbWFwcGluZy4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIGNvcmUgUENJIGFuZCBkcml2ZXIgcHJvYmluZyBsb2dpYyB0aGF0IGlzIHJlYWNoYWJsZSB2aWEgUENJIGRldmljZSBwcm9iZSBhbmQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6MzEuMTkwNDU4NjExWiIsIlNlcSI6NjcsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoiSWYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjkzOTc5MTc2MywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjIwOjMxLjE5MTA1MjIxMVoiLCJTZXEiOjY4LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNjkzOTE5MjYwMywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgc2VjdXJpdHkgZW5naW5lZXIgc3BlY2lhbGl6aW5nIGluIGtlcm5lbCBtZW1vcnlcbmVycm9yIGRldGVjdG9ycyAoS0FTQU4gYW5kIEtNU0FOKS4gWW91ciBqb2IgaXMgdG8gcmV2aWV3IHRoZSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kXG5kZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpXG5mdXp6aW5nIHNlc3Npb24gaW4gYWRkaXRpb24gdG8gc3RhbmRhcmQgS0FTQU4gZnV6emluZy5cblxuQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46XG4tIFN0YW5kYXJkIEtBU0FOIGtlcm5lbCBidWlsZHMgKHVwc3RyZWFtLWFwcGFybW9yLWthc2FuLmNvbmZpZykgYWxyZWFkeSBlbmFibGVcbiAgYSBjb21wcmVoZW5zaXZlIHN1aXRlIG9mIGRlYnVnZ2luZyB0b29scyBhbmQgc2FuaXRpemVycywgaW5jbHVkaW5nIEtBU0FOXG4gIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVBcbiAgKGxvY2tpbmcgYnVncyBhbmQgZGVhZGxvY2tzKSwgVUItc2FuaXRpemVycywgYW5kIG1lbW9yeSBjb3JydXB0aW9uIGNoZWNrcy5cbi0gS01TQU4gKEtlcm5lbE1lbW9yeVNhbml0aXplcikgZGV0ZWN0cyByZWFkcyBvZiBVTklOSVRJQUxJWkVEIG1lbW9yeSAoc3RhY2ssIGhlYXAsXG4gIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy5cblxuUnVsZTogVEhFUkUgSVMgTk8gU0VOU0UgSU4gUlVOTklORyBBIEtNU0FOIFNFU1NJT04gSUYgQSBCVUcgQ0FOIEJFIENBVUdIVCBCWSBLQVNBTixcbkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuXG5BIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaW5jdXJzIHNpZ25pZmljYW50IHJlc291cmNlIGNvc3RzLiBZb3UgbXVzdCBPTkxZXG5zZXQgTmVlZHNLTVNBTj10cnVlIGlmIHRoZSBjb2RlIGNoYW5nZXMgaW50cm9kdWNlIG9yIGV4cG9zZSBVTklOSVRJQUxJWkVEIE1FTU9SWSByaXNrc1xudGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi5cblxuTG9vayBob2xpc3RpY2FsbHkgYXQgdGhlIHBhdGNoIHNlcmllcyBhbmQgc3Vycm91bmRpbmcgY29kZS4gRXZlbiBpZiBubyBkaXJlY3RcbnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLFxuYSBwYXRjaCBtYXkgYWx0ZXIgY29udHJvbCBmbG93LCBib3VuZHMgY2hlY2tpbmcsIG9yIGRhdGEgbGVuZ3RoIGNhbGN1bGF0aW9ucyBpbiB3YXlzXG50aGF0IGNoYW5nZSBob3cgdGhlIHJlc3Qgb2YgdGhlIGNvZGUgb3BlcmF0ZXMgb24gZXhpc3RpbmcgYnVmZmVycyAoZS5nLiBhbGxvd2luZ1xudW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sXG5mbG93KS4gRG8gbm90IGhlc2l0YXRlIHRvIHVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUsXG5jYWxsZWQgZnVuY3Rpb25zLCBhbmQgY2FsbGVycy5cblxuU2V0IE5lZWRzS01TQU49dHJ1ZSBPTkxZIElGIHRoZSBwYXRjaCBpbnRyb2R1Y2VzIG9yIG1vZGlmaWVzOlxuMS4gS2VybmVsIHN0cnVjdHVyZXMgc2VudCB0byB1c2VyIHNwYWNlICh2aWEgY29weV90b191c2VyLCBwdXRfdXNlciwgbmV0bGluayBza2JcbiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzXG4gICBvciBzdHJ1Y3R1cmUgcGFkZGluZyBtaWdodCBub3QgYmUgZnVsbHkgaW5pdGlhbGl6ZWQvemVyb2VkLlxuMi4gQ29uZGl0aW9uYWwgbG9naWMgb3IgYnJhbmNoaW5nIHRoYXQgZGVwZW5kcyBvbiBwb3RlbnRpYWxseSB1bmluaXRpYWxpemVkIHZhcmlhYmxlc1xuICAgb3Igc3RydWN0IGZpZWxkcy5cbjMuIEFsbG9jYXRpb24gb3IgaW5pdGlhbGl6YXRpb24gb2YgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2hlcmUgdW5pbml0aWFsaXplZCBmaWVsZHNcbiAgIGNvdWxkIGJlIHJlYWQgbGF0ZXIgaW4gcmVhY2hhYmxlIGNvZGUgcGF0aHMuXG40LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2Vzc1xuICAgdW5pbml0aWFsaXplZCBieXRlcyBvZiBleGlzdGluZyBidWZmZXJzLlxuXG5TZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjpcbi0gVGhlIGNvZGUgY2hhbmdlcyBwcmltYXJpbHkgcmlzayBvdXQtb2YtYm91bmRzIGFjY2VzcywgYXJyYXkgb3ZlcmZsb3dzLCBOVUxMIHBvaW50ZXJcbiAgZGVyZWZlcmVuY2VzLCBsb2NraW5nIGRlYWRsb2Nrcywgb3IgdXNlLWFmdGVyLWZyZWUgYnVncyAodGhlc2UgYXJlIGFscmVhZHkgY2F1Z2h0XG4gIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS5cbi0gQWxsIHN0YWNrL2hlYXAgc3RydWN0dXJlcyB0b3VjaGVkIG9yIGludHJvZHVjZWQgYnkgdGhlIHBhdGNoIGFyZSBmdWxseSB6ZXJvZWRcbiAgb3IgaW5pdGlhbGl6ZWQgKGUuZy4gdXNpbmcgPSB7MH0sIG1lbXNldCwga3phbGxvYykgYmVmb3JlIGJlaW5nIHJlYWQgb3IgY29waWVkLlxuLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuXG5cblVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGluc3BlY3QgdGhlIHN1cnJvdW5kaW5nIGNvZGUgaWYgbmVjZXNzYXJ5LCB0aGVuIHByb3ZpZGVcbmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmYTZmNGM2MDI0YTk5ZWE2NzIzMTc2ZmQyNTRjNTI5N2Y2OTU1ZWQwXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgMTIgMTU6MTU6MjggMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL3BjaS9kZXZyZXMuYyBiL2RyaXZlcnMvcGNpL2RldnJlcy5jXG5pbmRleCBmMDc1ZTc4ODFjM2E2Li5mYWE2NzhmZjViNTZmIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9wY2kvZGV2cmVzLmNcbisrKyBiL2RyaXZlcnMvcGNpL2RldnJlcy5jXG5AQCAtNjM5LDYgKzYzOSw1NSBAQCB2b2lkIF9faW9tZW0gKnBjaW1faW9tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxuIH1cbiBFWFBPUlRfU1lNQk9MKHBjaW1faW9tYXBfcmVnaW9uKTtcbiBcbisvKipcbisgKiBwY2ltX2lvcmVtYXBfcmVnaW9uIC0gUmVxdWVzdCBhbmQgaW9yZW1hcCBhIFBDSSBCQVJcbisgKiBAcGRldjogUENJIGRldmljZSB0byBtYXAgSU8gcmVzb3VyY2VzIGZvclxuKyAqIEBiYXI6IEluZGV4IG9mIGEgQkFSIHRvIG1hcFxuKyAqIEBuYW1lOiBOYW1lIG9mIHRoZSBkcml2ZXIgcmVxdWVzdGluZyB0aGUgcmVzb3VyY2VcbisgKlxuKyAqIFJldHVybnM6IF9faW9tZW0gcG9pbnRlciBvbiBzdWNjZXNzLCBhbiBJT01FTV9FUlJfUFRSIG9uIGZhaWx1cmUuXG4rICpcbisgKiBNYXBwaW5nIGFuZCByZWdpb24gd2lsbCBnZXQgYXV0b21hdGljYWxseSByZWxlYXNlZCBvbiBkcml2ZXIgZGV0YWNoLiBJZlxuKyAqIGRlc2lyZWQsIHJlbGVhc2UgbWFudWFsbHkgb25seSB3aXRoIHBjaW1faW91bm1hcF9yZWdpb24oKS5cbisgKi9cbit2b2lkIF9faW9tZW0gKnBjaW1faW9yZW1hcF9yZWdpb24oc3RydWN0IHBjaV9kZXYgKnBkZXYsIGludCBiYXIsXG4rXHRcdFx0XHQgIGNvbnN0IGNoYXIgKm5hbWUpXG4re1xuK1x0aW50IHJldDtcbitcdHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzICpyZXM7XG4rXG4rXHRpZiAoIXBjaV9iYXJfaW5kZXhfaXNfdmFsaWQoYmFyKSlcbitcdFx0cmV0dXJuIElPTUVNX0VSUl9QVFIoLUVJTlZBTCk7XG4rXG4rXHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xuK1x0aWYgKCFyZXMpXG4rXHRcdHJldHVybiBJT01FTV9FUlJfUFRSKC1FTk9NRU0pO1xuK1xuK1x0cmVzLVx1MDAzZXR5cGUgPSBQQ0lNX0FERFJfREVWUkVTX1RZUEVfUkVHSU9OX01BUFBJTkc7XG4rXHRyZXMtXHUwMDNlYmFyID0gYmFyO1xuK1xuK1x0cmV0ID0gcGNpX3JlcXVlc3RfcmVnaW9uKHBkZXYsIGJhciwgbmFtZSk7XG4rXHRpZiAocmV0ICE9IDApXG4rXHRcdGdvdG8gZXJyX3JlZ2lvbjtcbitcbitcdHJlcy1cdTAwM2ViYXNlYWRkciA9IHBjaV9pb3JlbWFwX2JhcihwZGV2LCBiYXIpO1xuK1x0aWYgKCFyZXMtXHUwMDNlYmFzZWFkZHIpIHtcbitcdFx0cmV0ID0gLUVJTlZBTDtcbitcdFx0Z290byBlcnJfaW9tYXA7XG4rXHR9XG4rXG4rXHRkZXZyZXNfYWRkKFx1MDAyNnBkZXYtXHUwMDNlZGV2LCByZXMpO1xuK1x0cmV0dXJuIHJlcy1cdTAwM2ViYXNlYWRkcjtcbitcbitlcnJfaW9tYXA6XG4rXHRwY2lfcmVsZWFzZV9yZWdpb24ocGRldiwgYmFyKTtcbitlcnJfcmVnaW9uOlxuK1x0cGNpbV9hZGRyX2RldnJlc19mcmVlKHJlcyk7XG4rXG4rXHRyZXR1cm4gSU9NRU1fRVJSX1BUUihyZXQpO1xuK31cbitFWFBPUlRfU1lNQk9MKHBjaW1faW9yZW1hcF9yZWdpb24pO1xuK1xuIC8qKlxuICAqIHBjaW1faW91bm1hcF9yZWdpb24gLSBVbm1hcCBhbmQgcmVsZWFzZSBhIFBDSSBCQVJcbiAgKiBAcGRldjogUENJIGRldmljZSB0byBvcGVyYXRlIG9uXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9wY2kuaCBiL2luY2x1ZGUvbGludXgvcGNpLmhcbmluZGV4IDY0YjMwOGI2ZTYxYzEuLmU3YTJlY2UxMzhlYTYgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L3BjaS5oXG4rKysgYi9pbmNsdWRlL2xpbnV4L3BjaS5oXG5AQCAtMjUwNiw2ICsyNTA2LDggQEAgaW50IHBjaW1fcmVxdWVzdF9hbGxfcmVnaW9ucyhzdHJ1Y3QgcGNpX2RldiAqcGRldiwgY29uc3QgY2hhciAqbmFtZSk7XG4gdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLCB1bnNpZ25lZCBsb25nIG1heGxlbik7XG4gdm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbiBcdFx0XHRcdGNvbnN0IGNoYXIgKm5hbWUpO1xuK3ZvaWQgX19pb21lbSAqcGNpbV9pb3JlbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcbitcdFx0XHRcdCAgY29uc3QgY2hhciAqbmFtZSk7XG4gdm9pZCBwY2ltX2lvdW5tYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyKTtcbiB2b2lkIHBjaW1faW91bm1hcChzdHJ1Y3QgcGNpX2RldiAqcGRldiwgdm9pZCBfX2lvbWVtICphZGRyKTtcbiB2b2lkIF9faW9tZW0gKiBjb25zdCAqcGNpbV9pb21hcF90YWJsZShzdHJ1Y3QgcGNpX2RldiAqcGRldik7XG5kaWZmIC0tZ2l0IGEvc291bmQvaGRhL2NvbnRyb2xsZXJzL2ludGVsLmMgYi9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuY1xuaW5kZXggMjhjNTVjNWEyZDJlZi4uNWRhMGFjMWVkNDA3MSAxMDA2NDRcbi0tLSBhL3NvdW5kL2hkYS9jb250cm9sbGVycy9pbnRlbC5jXG4rKysgYi9zb3VuZC9oZGEvY29udHJvbGxlcnMvaW50ZWwuY1xuQEAgLTE5MjYsNyArMTkyNiw3IEBAIHN0YXRpYyBpbnQgYXp4X2ZpcnN0X2luaXQoc3RydWN0IGF6eCAqY2hpcClcbiBcdGlmIChjaGlwLVx1MDAzZWRyaXZlcl90eXBlID09IEFaWF9EUklWRVJfWkhBT1hJTkhETUkpXG4gXHRcdGJ1cy1cdTAwM2Vwb2xsaW5nX21vZGUgPSAxO1xuIFxuLVx0YnVzLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiSUNIIEhEIGF1ZGlvXCIpO1xuK1x0YnVzLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJJQ0ggSEQgYXVkaW9cIik7XG4gXHRpZiAoSVNfRVJSKGJ1cy1cdTAwM2VyZW1hcF9hZGRyKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoYnVzLVx1MDAzZXJlbWFwX2FkZHIpO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hZDE4ODkuYyBiL3NvdW5kL3BjaS9hZDE4ODkuY1xuaW5kZXggZjRlYzQwNGMwZDE1YS4uYTI1NzBhMTQ4ZjYwNiAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hZDE4ODkuY1xuKysrIGIvc291bmQvcGNpL2FkMTg4OS5jXG5AQCAtODA0LDcgKzgwNCw3IEBAIHNuZF9hZDE4ODlfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbiBcdGNoaXAtXHUwMDNlaXJxID0gLTE7XG4gXG4gXHQvKiAoMSkgUENJIHJlc291cmNlIGFsbG9jYXRpb24gKi9cbi1cdGNoaXAtXHUwMDNlaW9iYXNlID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBjYXJkLVx1MDAzZWRyaXZlcik7XG4rXHRjaGlwLVx1MDAzZWlvYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBjYXJkLVx1MDAzZWRyaXZlcik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlaW9iYXNlKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2Vpb2Jhc2UpO1xuIFxuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9hdGlpeHAuYyBiL3NvdW5kL3BjaS9hdGlpeHAuY1xuaW5kZXggYjczODI5NWI0MWU1ZC4uYjlmY2Q5MTNmYmM2ZiAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9hdGlpeHAuY1xuKysrIGIvc291bmQvcGNpL2F0aWl4cC5jXG5AQCAtMTUzMSw3ICsxNTMxLDcgQEAgc3RhdGljIGludCBzbmRfYXRpaXhwX2luaXQoc3RydWN0IHNuZF9jYXJkICpjYXJkLCBzdHJ1Y3QgcGNpX2RldiAqcGNpKVxuIFx0Y2hpcC1cdTAwM2VjYXJkID0gY2FyZDtcbiBcdGNoaXAtXHUwMDNlcGNpID0gcGNpO1xuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbi1cdGNoaXAtXHUwMDNlcmVtYXBfYWRkciA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgXCJBVEkgSVhQIEFDOTdcIik7XG4rXHRjaGlwLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJBVEkgSVhQIEFDOTdcIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcikpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlcmVtYXBfYWRkcik7XG4gXHRjaGlwLVx1MDAzZWFkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmMgYi9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmNcbmluZGV4IDhhYWViMTk3Y2U0NTguLmY2NTQ4MDQ4Mzk5NjYgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvYXRpaXhwX21vZGVtLmNcbisrKyBiL3NvdW5kL3BjaS9hdGlpeHBfbW9kZW0uY1xuQEAgLTExNjMsNyArMTE2Myw3IEBAIHN0YXRpYyBpbnQgc25kX2F0aWl4cF9pbml0KHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbiBcdGNoaXAtXHUwMDNlY2FyZCA9IGNhcmQ7XG4gXHRjaGlwLVx1MDAzZXBjaSA9IHBjaTtcbiBcdGNoaXAtXHUwMDNlaXJxID0gLTE7XG4tXHRjaGlwLVx1MDAzZXJlbWFwX2FkZHIgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiQVRJIElYUCBNQzk3XCIpO1xuK1x0Y2hpcC1cdTAwM2VyZW1hcF9hZGRyID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwiQVRJIElYUCBNQzk3XCIpO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZXJlbWFwX2FkZHIpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihjaGlwLVx1MDAzZXJlbWFwX2FkZHIpO1xuIFx0Y2hpcC1cdTAwM2VhZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2F1ODh4MC9hdTg4eDAuYyBiL3NvdW5kL3BjaS9hdTg4eDAvYXU4OHgwLmNcbmluZGV4IGJiMDI5NDU3OTNmMGMuLmE3NzNlOGE1NmMwYzUgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jXG4rKysgYi9zb3VuZC9wY2kvYXU4OHgwL2F1ODh4MC5jXG5AQCAtMTYwLDcgKzE2MCw3IEBAIHNuZF92b3J0ZXhfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCwgc3RydWN0IHBjaV9kZXYgKnBjaSlcbiBcdC8vICgxKSBQQ0kgcmVzb3VyY2UgYWxsb2NhdGlvblxuIFx0Ly8gR2V0IE1NSU8gYXJlYVxuIFx0Ly9cbi1cdGNoaXAtXHUwMDNlbW1pbyA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgS0JVSUxEX01PRE5BTUUpO1xuK1x0Y2hpcC1cdTAwM2VtbWlvID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIEtCVUlMRF9NT0ROQU1FKTtcbiBcdGlmIChJU19FUlIoY2hpcC1cdTAwM2VtbWlvKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2VtbWlvKTtcbiBcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmMgYi9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmNcbmluZGV4IDYwYTg3MzIyZWFlNDkuLjI3ZmQ0NWQ2NDcwMTkgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvYXcyL2F3Mi1hbHNhLmNcbisrKyBiL3NvdW5kL3BjaS9hdzIvYXcyLWFsc2EuY1xuQEAgLTIyNCw3ICsyMjQsNyBAQCBzdGF0aWMgaW50IHNuZF9hdzJfY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcbiBcdGNoaXAtXHUwMDNlaXJxID0gLTE7XG4gXG4gXHQvKiAoMSkgUENJIHJlc291cmNlIGFsbG9jYXRpb24gKi9cbi1cdGNoaXAtXHUwMDNlaW9iYXNlX3ZpcnQgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiQXVkaW93ZXJrMlwiKTtcbitcdGNoaXAtXHUwMDNlaW9iYXNlX3ZpcnQgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJBdWRpb3dlcmsyXCIpO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZWlvYmFzZV92aXJ0KSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoY2hpcC1cdTAwM2Vpb2Jhc2VfdmlydCk7XG4gXHRjaGlwLVx1MDAzZWlvYmFzZV9waHlzID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2J0ODd4LmMgYi9zb3VuZC9wY2kvYnQ4N3guY1xuaW5kZXggMzgzZGVmMWYyYWY3NC4uNTVmNmI3OWJkOWVhYyAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9idDg3eC5jXG4rKysgYi9zb3VuZC9wY2kvYnQ4N3guY1xuQEAgLTY5MCw3ICs2OTAsNyBAQCBzdGF0aWMgaW50IHNuZF9idDg3eF9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFx0Y2hpcC1cdTAwM2VpcnEgPSAtMTtcbiBcdHNwaW5fbG9ja19pbml0KFx1MDAyNmNoaXAtXHUwMDNlcmVnX2xvY2spO1xuIFxuLVx0Y2hpcC1cdTAwM2VtbWlvID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcIkJ0ODd4IGF1ZGlvXCIpO1xuK1x0Y2hpcC1cdTAwM2VtbWlvID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwiQnQ4N3ggYXVkaW9cIik7XG4gXHRpZiAoSVNfRVJSKGNoaXAtXHUwMDNlbW1pbykpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlbW1pbyk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL2NzNDI4MS5jIGIvc291bmQvcGNpL2NzNDI4MS5jXG5pbmRleCBmNTFmNGJiNjM3NjY0Li5mMDAwZGNhOTRlNGZkIDEwMDY0NFxuLS0tIGEvc291bmQvcGNpL2NzNDI4MS5jXG4rKysgYi9zb3VuZC9wY2kvY3M0MjgxLmNcbkBAIC0xMjk4LDEyICsxMjk4LDEyIEBAIHN0YXRpYyBpbnQgc25kX2NzNDI4MV9jcmVhdGUoc3RydWN0IHNuZF9jYXJkICpjYXJkLFxuIFx0fVxuIFx0Y2hpcC1cdTAwM2VkdWFsX2NvZGVjID0gZHVhbF9jb2RlYztcbiBcbi1cdGNoaXAtXHUwMDNlYmEwID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAwLCBcIkNTNDI4MVwiKTtcbitcdGNoaXAtXHUwMDNlYmEwID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwiQ1M0MjgxXCIpO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZWJhMCkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlYmEwKTtcbiBcdGNoaXAtXHUwMDNlYmEwX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAwKTtcbiBcbi1cdGNoaXAtXHUwMDNlYmExID0gcGNpbV9pb21hcF9yZWdpb24ocGNpLCAxLCBcIkNTNDI4MVwiKTtcbitcdGNoaXAtXHUwMDNlYmExID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDEsIFwiQ1M0MjgxXCIpO1xuIFx0aWYgKElTX0VSUihjaGlwLVx1MDAzZWJhMSkpXG4gXHRcdHJldHVybiBQVFJfRVJSKGNoaXAtXHUwMDNlYmExKTtcbiBcdGNoaXAtXHUwMDNlYmExX2FkZHIgPSBwY2lfcmVzb3VyY2Vfc3RhcnQocGNpLCAxKTtcbmRpZmYgLS1naXQgYS9zb3VuZC9wY2kvY3M1NTMwLmMgYi9zb3VuZC9wY2kvY3M1NTMwLmNcbmluZGV4IDI5MmI2NWFhNzU4YTkuLjdjZjc0ZTc3OTcwY2QgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvY3M1NTMwLmNcbisrKyBiL3NvdW5kL3BjaS9jczU1MzAuY1xuQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIGludCBzbmRfY3M1NTMwX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsXG4gXHRjaGlwLVx1MDAzZWNhcmQgPSBjYXJkO1xuIFx0Y2hpcC1cdTAwM2VwY2kgPSBwY2k7XG4gXG4tXHRtZW0gPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiQ1M1NTMwXCIpO1xuK1x0bWVtID0gcGNpbV9pb3JlbWFwX3JlZ2lvbihwY2ksIDAsIFwiQ1M1NTMwXCIpO1xuIFx0aWYgKElTX0VSUihtZW0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihtZW0pO1xuIFx0Y2hpcC1cdTAwM2VwY2lfYmFzZSA9IHBjaV9yZXNvdXJjZV9zdGFydChwY2ksIDApO1xuZGlmZiAtLWdpdCBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuYyBiL3NvdW5kL3BjaS9sb2xhL2xvbGEuY1xuaW5kZXggMzRhM2JhMTdkZWI0Yi4uZWMyOTM4YzRiNTMyMyAxMDA2NDRcbi0tLSBhL3NvdW5kL3BjaS9sb2xhL2xvbGEuY1xuKysrIGIvc291bmQvcGNpL2xvbGEvbG9sYS5jXG5AQCAtNTc5LDE0ICs1NzksMTQgQEAgc3RhdGljIGludCBsb2xhX2NyZWF0ZShzdHJ1Y3Qgc25kX2NhcmQgKmNhcmQsIHN0cnVjdCBwY2lfZGV2ICpwY2ksIGludCBkZXYpXG4gXHRcdGNoaXAtXHUwMDNlc2FtcGxlX3JhdGVfbWluID0gMTYwMDA7XG4gXHR9XG4gXG4tXHRpb21lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMCwgRFJWTkFNRSk7XG4rXHRpb21lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAwLCBEUlZOQU1FKTtcbiBcdGlmIChJU19FUlIoaW9tZW0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihpb21lbSk7XG4gXG4gXHRjaGlwLVx1MDAzZWJhclswXS5yZW1hcF9hZGRyID0gaW9tZW07XG4gXHRjaGlwLVx1MDAzZWJhclswXS5hZGRyID0gcGNpX3Jlc291cmNlX3N0YXJ0KHBjaSwgMCk7XG4gXG4tXHRpb21lbSA9IHBjaW1faW9tYXBfcmVnaW9uKHBjaSwgMiwgRFJWTkFNRSk7XG4rXHRpb21lbSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGNpLCAyLCBEUlZOQU1FKTtcbiBcdGlmIChJU19FUlIoaW9tZW0pKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihpb21lbSk7XG4gXG5kaWZmIC0tZ2l0IGEvc291bmQvcGNpL3JtZTk2NTIvaGRzcG0uYyBiL3NvdW5kL3BjaS9ybWU5NjUyL2hkc3BtLmNcbmluZGV4IGQ4YmJlZGJjOGZmNjguLjliMzc1OGNhMWQwMDQgMTAwNjQ0XG4tLS0gYS9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jXG4rKysgYi9zb3VuZC9wY2kvcm1lOTY1Mi9oZHNwbS5jXG5AQCAtNjUxMSw3ICs2NTExLDcgQEAgc3RhdGljIGludCBzbmRfaGRzcG1fY3JlYXRlKHN0cnVjdCBzbmRfY2FyZCAqY2FyZCxcbiBcbiBcdHBjaV9zZXRfbWFzdGVyKGhkc3BtLVx1MDAzZXBjaSk7XG4gXG4tXHRoZHNwbS1cdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvbWFwX3JlZ2lvbihwY2ksIDAsIFwiaGRzcG1cIik7XG4rXHRoZHNwbS1cdTAwM2Vpb2Jhc2UgPSBwY2ltX2lvcmVtYXBfcmVnaW9uKHBjaSwgMCwgXCJoZHNwbVwiKTtcbiBcdGlmIChJU19FUlIoaGRzcG0tXHUwMDNlaW9iYXNlKSlcbiBcdFx0cmV0dXJuIFBUUl9FUlIoaGRzcG0tXHUwMDNlaW9iYXNlKTtcbiBcbmRpZmYgLS1naXQgYS9zb3VuZC9zb2MvbG9vbmdzb24vbG9vbmdzb25faTJzX3BjaS5jIGIvc291bmQvc29jL2xvb25nc29uL2xvb25nc29uX2kyc19wY2kuY1xuaW5kZXggZjViNTYwNDY1NzA2Zi4uMzJmYzBmNTQ0OTI4MiAxMDA2NDRcbi0tLSBhL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmNcbisrKyBiL3NvdW5kL3NvYy9sb29uZ3Nvbi9sb29uZ3Nvbl9pMnNfcGNpLmNcbkBAIC00MSw3ICs0MSw3IEBAIHN0YXRpYyBpbnQgbG9vbmdzb25faTJzX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAqcGRldixcbiBcdGkycy1cdTAwM2VkZXYgPSBkZXY7XG4gXHRwY2lfc2V0X2RydmRhdGEocGRldiwgaTJzKTtcbiBcbi1cdGkycy1cdTAwM2VyZWdfYmFzZSA9IHBjaW1faW9tYXBfcmVnaW9uKHBkZXYsIDAsIERSSVZFUl9OQU1FKTtcbitcdGkycy1cdTAwM2VyZWdfYmFzZSA9IHBjaW1faW9yZW1hcF9yZWdpb24ocGRldiwgMCwgRFJJVkVSX05BTUUpO1xuIFx0aWYgKElTX0VSUihpMnMtXHUwMDNlcmVnX2Jhc2UpKSB7XG4gXHRcdGRldl9lcnIoZGV2LCBcImlvbWFwX3JlZ2lvbiBmYWlsZWRcXG5cIik7XG4gXHRcdHJldHVybiBQVFJfRVJSKGkycy1cdTAwM2VyZWdfYmFzZSk7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDozMS4xOTEwNTMzNTFaIiwiU2VxIjo2OSwiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDU3MzExOTgwNSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0IG1lIGJyZWFrIHRoaXMgZG93bi5cblxuKipBbmFseXppbmcgdGhlIFBDSSBNTUlPIENoYW5nZSoqXG5cbkFscmlnaHQsIHNvIHRoaXMgcGF0Y2ggaXMgaW50cm9kdWNpbmcgYHBjaW1faW9yZW1hcF9yZWdpb25gIGluIGBkcml2ZXJzL3BjaS9kZXZyZXMuY2AsIHdoaWNoIGlzIGEgbmV3IGZ1bmN0aW9uLCBhbmQgaXQncyBhbHNvIHJlcGxhY2luZyBgcGNpbV9pb21hcF9yZWdpb25gIHdpdGggdGhpcyBuZXcgb25lIGluIHNldmVyYWwgc291bmQgZHJpdmVycy4gSG9sZCBvbiBhIHNlY29uZCwgSSBuZWVkIHRvIHRoaW5rIHRoaXMgdGhyb3VnaC4gYHBjaW1faW9tYXBfcmVnaW9uYCB1c2VzIGBwY2lfaW9tYXBgLCBhbmQgdGhhdCBjYW4gaGFuZGxlIGJvdGggUHJvZ3JhbW1lZCBJL08gKFBJTykgKm9yKiBNZW1vcnkgTWFwcGVkIEkvTyAoTU1JTyksIHJpZ2h0PyBCdXQgYHBjaW1faW9yZW1hcF9yZWdpb25gPyBUaGF04oCZcyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyYCwgd2hpY2ggaXMgKnN0cmljdGx5KiBNTUlPLiBPa2F5LCB0aGF0J3MgdGhlIGRpZmZlcmVuY2UsIGJ1dCBJIG5lZWQgdG8gYmUgc3VyZSB0aGlzIGNoYW5nZSBpcyBzYWZlLlxuXG5MZXQncyBzZWXigKYgaXMgdGhlcmUgYSByaXNrIG9mIGludHJvZHVjaW5nIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGV4cG9zdXJlIGhlcmU/IFRoZSBjb3JlIG9mIHRoaXMgaXMgdGhlIG5ldyBmdW5jdGlvbiwgYHBjaW1faW9yZW1hcF9yZWdpb25gLCBhbmQgaXQncyBhbGxvY2F0aW5nIGEgYHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzYCB1c2luZyBgcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KWAuIEhtbSwgdGhhdCBgcGNpbV9hZGRyX2RldnJlc19hbGxvY2AgaXMgaW50ZXJuYWwgdG8gYGRyaXZlcnMvcGNpL2RldnJlcy5jYCwgc28gSSBuZWVkIHRvIGNoZWNrIGl0cyBpbXBsZW1lbnRhdGlvbiB0byBzZWUgaG93IGl0J3MgaW5pdGlhbGl6ZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjYxNjksIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMDMsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDozNS43NjQxNzc0OTZaIiwiU2VxIjo3MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIxNDEyMDYyMDksIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwicGNpbV9hZGRyX2RldnJlc19hbGxvY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL3BjaS9kZXZyZXMuYz03Mz1zdGF0aWMgdm9pZCBwY2ltX2FkZHJfcmVzb3VyY2VfcmVsZWFzZShzdHJ1Y3QgZGV2aWNlICpkZXYsIHZvaWQgKnJlc291cmNlX3JhdylcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTkzLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jOjk0OnN0YXRpYyBzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcGNpbV9hZGRyX2RldnJlc19hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy05NS17XFxuLS1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz01MzU9dm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLCB1bnNpZ25lZCBsb25nIG1heGxlbilcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTU0Mi1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYzo1NDM6XFx0cmVzID0gcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KTtcXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy01NDQtXFx0aWYgKCFyZXMpXFxuLS1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz02MDQ9dm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhcixcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTYxMi1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYzo2MTM6XFx0cmVzID0gcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KTtcXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy02MTQtXFx0aWYgKCFyZXMpXFxuLS1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz02NTM9dm9pZCBfX2lvbWVtICpwY2ltX2lvcmVtYXBfcmVnaW9uKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxcbi0tXFxuZHJpdmVycy9wY2kvZGV2cmVzLmMtNjYxLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jOjY2MjpcXHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTY2My1cXHRpZiAoIXJlcylcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jPTc3MD1pbnQgcGNpbV9yZXF1ZXN0X3JlZ2lvbihzdHJ1Y3QgcGNpX2RldiAqcGRldiwgaW50IGJhciwgY29uc3QgY2hhciAqbmFtZSlcXG4tLVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTc3Ny1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYzo3Nzg6XFx0cmVzID0gcGNpbV9hZGRyX2RldnJlc19hbGxvYyhwZGV2KTtcXG5kcml2ZXJzL3BjaS9kZXZyZXMuYy03NzktXFx0aWYgKCFyZXMpXFxuLS1cXG5kcml2ZXJzL3BjaS9kZXZyZXMuYz04ODA9dm9pZCBfX2lvbWVtICpwY2ltX2lvbWFwX3JhbmdlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBpbnQgYmFyLFxcbi0tXFxuZHJpdmVycy9wY2kvZGV2cmVzLmMtODg4LVxcbmRyaXZlcnMvcGNpL2RldnJlcy5jOjg4OTpcXHRyZXMgPSBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jKHBkZXYpO1xcbmRyaXZlcnMvcGNpL2RldnJlcy5jLTg5MC1cXHRpZiAoIXJlcylcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6MzcuOTA1Mzg4Mjk1WiIsIlNlcSI6NzEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODI3NTczNDgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBhbmQgd3JpdHRlbiBhcyBpZiB0aGV5IHdlcmUgbXkgb3duIG1lbnRhbCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIGBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jYCoqXG5cblJpZ2h0LCBsZXQncyBnZXQgaW50byB0aGUgbml0dHktZ3JpdHR5IG9mIGBwY2ltX2FkZHJfZGV2cmVzX2FsbG9jYC4gSSBuZWVkIHRvIHJlZnJlc2ggbXkgbWVtb3J5IG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhpcyBmdW5jdGlvbiwgYXMgaXQncyBhIGNyaXRpY2FsIGNvbXBvbmVudCBpbiBob3cgd2UgaGFuZGxlIFBDSSByZXNvdXJjZSBhbGxvY2F0aW9uIHdpdGhpbiB0aGUgZGV2aWNlIHJlc291cmNlIGZyYW1ld29yay4gSSBrbm93IGl0J3MgYSBrZXkgcGFydCBvZiBlbnN1cmluZyBwcm9wZXIgY2xlYW51cCBhbmQgcHJldmVudGluZyBtZW1vcnkgbGVha3Mgd2l0aCBQQ0kgZGV2aWNlcy4gTGV0J3Mgc3RhcnQgd2l0aCBhIGRlZXAgZGl2ZSBpbnRvIHRoZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLiBJIHdhbnQgdG8gc2VlIGhvdyBpdCBpbnRlZ3JhdGVzIHdpdGggdGhlIGRldmljZSByZXNvdXJjZSBtYW5hZ2VtZW50IHN5c3RlbSBhbmQgZmlndXJlIG91dCBhbnkgcG90ZW50aWFsIGVkZ2UgY2FzZXMgdGhhdCBJIG5lZWQgdG8gYmUgYXdhcmUgb2YgaW4gbXkgY3VycmVudCBwcm9qZWN0LiBTcGVjaWZpY2FsbHksIGhvdyBkb2VzIGl0IGhhbmRsZSBwb3RlbnRpYWwgY29uZmxpY3RzIGR1cmluZyBhbGxvY2F0aW9uLCBob3cgaXQgZGVhbHMgd2l0aCBmYWlsdXJlcywgYW5kIGhvdyBpdOKAmXMgYWZmZWN0ZWQgYnkgdGhlIGRpZmZlcmVudCByZXNvdXJjZSB0eXBlcyAobWVtb3J5LCBJL08sIGV0Yy4pLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIHRoaXMgY29kZSBwYXRoIHNvIEkgY2FuIGludGVncmF0ZSB0aGlzIGZ1bmN0aW9uIHByb3Blcmx5IHdpdGggbWluaW1hbCByaXNrIHRvIG15IG93biBkcml2ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjczNzUsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0xMlQxNToyMDo0Mi4xODgxNDc4ODNaIiwiU2VxIjo3MiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODIxNzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9wY2kvZGV2cmVzLmNcIixcbiAgXCJGaXJzdExpbmVcIjogOTAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgOTA6XFx0XFx0XFx0YnJlYWs7XFxuICA5MTpcXHRcXHR9XFxuICA5MjpcXHR9XFxuICA5MzpcXHRcXG4gIDk0OlxcdHN0YXRpYyBzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcGNpbV9hZGRyX2RldnJlc19hbGxvYyhzdHJ1Y3QgcGNpX2RldiAqcGRldilcXG4gIDk1OlxcdHtcXG4gIDk2OlxcdFxcdHN0cnVjdCBwY2ltX2FkZHJfZGV2cmVzICpyZXM7XFxuICA5NzpcXHRcXG4gIDk4OlxcdFxcdHJlcyA9IGRldnJlc19hbGxvY19ub2RlKHBjaW1fYWRkcl9yZXNvdXJjZV9yZWxlYXNlLCBzaXplb2YoKnJlcyksXFxuICA5OTpcXHRcXHRcXHRcXHRcXHRHRlBfS0VSTkVMLCBkZXZfdG9fbm9kZShcXHUwMDI2cGRldi1cXHUwMDNlZGV2KSk7XFxuIDEwMDpcXHRcXHRpZiAocmVzKVxcbiAxMDE6XFx0XFx0XFx0cGNpbV9hZGRyX2RldnJlc19jbGVhcihyZXMpO1xcbiAxMDI6XFx0XFx0cmV0dXJuIHJlcztcXG4gMTAzOlxcdH1cXG4gMTA0OlxcdFxcbiAxMDU6XFx0LyogSnVzdCBmb3IgY29uc2lzdGVuY3kgYW5kIHJlYWRhYmlsaXR5LiAqL1xcbiAxMDY6XFx0c3RhdGljIGlubGluZSB2b2lkIHBjaW1fYWRkcl9kZXZyZXNfZnJlZShzdHJ1Y3QgcGNpbV9hZGRyX2RldnJlcyAqcmVzKVxcbiAxMDc6XFx0e1xcbiAxMDg6XFx0XFx0ZGV2cmVzX2ZyZWUocmVzKTtcXG4gMTA5OlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMTJUMTU6MjA6NDIuMTg4MjMxNTMzWiIsIlNlcSI6NzMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5NDE5ODQ3NTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqUmVmYWN0b3JpbmcgUENJIElPIE1hcHBpbmc6IEEgQ2xlYW4gYW5kIFNhZmUgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyBhIHN0cmFpZ2h0Zm9yd2FyZCByZWZhY3RvcmluZyBvZiB0aGUgUENJIElPIG1hcHBpbmcgQVBJLiBFc3NlbnRpYWxseSwgd2UncmUgaW50cm9kdWNpbmcgYSBuZXcgZnVuY3Rpb24sIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCwgd2hpY2ggaXMgdmVyeSBtdWNoIGxpa2UgdGhlIGV4aXN0aW5nIGBwY2ltX2lvbWFwX3JlZ2lvbmAsIGJ1dCB0aGlzIG9uZSdzIHVzaW5nIGBwY2lfaW9yZW1hcF9iYXJgIGluc3RlYWQgb2YgYHBjaV9pb21hcGAgaW50ZXJuYWxseS4gSSdtIHNlZWluZyB0aGF0IGl0J3MganVzdCBhIGRpcmVjdCByZXBsYWNlbWVudCBpbiBzb21lIHNvdW5kIGRyaXZlcnMuXG5cbk15IGltbWVkaWF0ZSBjb25jZXJuLCBhcyBhbHdheXMsIGlzIHdoZXRoZXIgdGhpcyBpbnRyb2R1Y2VzIGFueSBzdWJ0bGUgbWVtb3J5IHJpc2tzLCBwYXJ0aWN1bGFybHkgdW5pbml0aWFsaXplZCBtZW1vcnkgZXhwb3N1cmVzLiBCdXQgYWZ0ZXIgcmV2aWV3aW5nIHRoZSBjb2RlLCBJJ20gY29uZmlkZW50IHRoYXQncyBub3QgdGhlIGNhc2UuIFRoZSBzdHJ1Y3R1cmUgaXMgY2xlYXJlZCB1c2luZyBgcGNpbV9hZGRyX2RldnJlc19jbGVhcmAgYmVmb3JlIHVzZSwgYW5kIHRoZSByZXR1cm5lZCBwb2ludGVyIGlzIGV4cGxpY2l0bHkgYW4gSU8gbWVtb3J5IHBvaW50ZXIuIE5vIHVzZXIgc3BhY2UgY29weWluZyBpcyBoYXBwZW5pbmcgaGVyZSwgYW5kIEkgZG9uJ3Qgc2VlIGFueSB1bmluaXRpYWxpemVkIHZhcmlhYmxlcyBiZWluZyB1c2VkLiBUaGlzIHJlYWxseSBhcHBlYXJzIHRvIGJlIGEgc3RhbmRhcmQgZHJpdmVyIEFQSSBjaGFuZ2UuIEknbGwgZmxhZyB0aGlzIGFzIHNhZmUuIEkgYW0gY29tZm9ydGFibGUgc2V0dGluZyBOZWVkc0tNU0FOIHRvIGZhbHNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3OTQ1LCJPdXRwdXRUb2tlbnMiOjE4NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE4MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTEyVDE1OjIwOjQ4LjEzMDIxOTYxNVoiLCJTZXEiOjc0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIzODExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBQQ0kgZGV2cmVzIEFQSSBgcGNpbV9pb3JlbWFwX3JlZ2lvbmAgYW5kIHJlcGxhY2VzIGBwY2ltX2lvbWFwX3JlZ2lvbmAgd2l0aCBpdCBpbiBzZXZlcmFsIHNvdW5kIGRyaXZlcnMuIFRoZSBuZXcgZnVuY3Rpb24gYWxsb2NhdGVzIGEgYHBjaW1fYWRkcl9kZXZyZXNgIHN0cnVjdHVyZSwgd2hpY2ggaXMgZnVsbHkgaW5pdGlhbGl6ZWQgdmlhIGBwY2ltX2FkZHJfZGV2cmVzX2NsZWFyKClgLCBhbmQgbWFwcyBQQ0kgQkFScyB1c2luZyBgcGNpX2lvcmVtYXBfYmFyKClgLiBUaGVyZSBhcmUgbm8gbmV3IHN0cnVjdHVyZXMgY29waWVkIHRvIHVzZXIgc3BhY2UsIG5vIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdpdGggdW5pbml0aWFsaXplZCBmaWVsZHMsIGFuZCBubyBjaGFuZ2VzIHRvIGJvdW5kcyBjaGVja2luZyBvciBjb250cm9sIGZsb3cgdGhhdCBjb3VsZCBleHBvc2UgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFueSBwb3RlbnRpYWwgYnVncyBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggd291bGQgYmUgcmVsYXRlZCB0byBpbmNvcnJlY3QgbWVtb3J5IG1hcHBpbmcsIHJlc291cmNlIGxlYWtzLCBvciBpbnZhbGlkIHBvaW50ZXIgZGVyZWZlcmVuY2VzLCBhbGwgb2Ygd2hpY2ggYXJlIGFkZXF1YXRlbHkgY292ZXJlZCBieSBzdGFuZGFyZCBLQVNBTiBhbmQgb3RoZXIgYnVnIGRldGVjdG9ycy5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFBDSSBkZXZyZXMgQVBJIGBwY2ltX2lvcmVtYXBfcmVnaW9uYCBhbmQgcmVwbGFjZXMgYHBjaW1faW9tYXBfcmVnaW9uYCB3aXRoIGl0IGluIHNldmVyYWwgc291bmQgZHJpdmVycy4gVGhlIG5ldyBmdW5jdGlvbiBhbGxvY2F0ZXMgYSBgcGNpbV9hZGRyX2RldnJlc2Agc3RydWN0dXJlLCB3aGljaCBpcyBmdWxseSBpbml0aWFsaXplZCB2aWEgYHBjaW1fYWRkcl9kZXZyZXNfY2xlYXIoKWAsIGFuZCBtYXBzIFBDSSBCQVJzIHVzaW5nIGBwY2lfaW9yZW1hcF9iYXIoKWAuIFRoZXJlIGFyZSBubyBuZXcgc3RydWN0dXJlcyBjb3BpZWQgdG8gdXNlciBzcGFjZSwgbm8gY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgd2l0aCB1bmluaXRpYWxpemVkIGZpZWxkcywgYW5kIG5vIGNoYW5nZXMgdG8gYm91bmRzIGNoZWNraW5nIG9yIGNvbnRyb2wgZmxvdyB0aGF0IGNvdWxkIGV4cG9zZSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQW55IHBvdGVudGlhbCBidWdzIGludHJvZHVjZWQgYnkgdGhpcyBwYXRjaCB3b3VsZCBiZSByZWxhdGVkIHRvIGluY29ycmVjdCBtZW1vcnkgbWFwcGluZywgcmVzb3VyY2UgbGVha3MsIG9yIGludmFsaWQgcG9pbnRlciBkZXJlZmVyZW5jZXMsIGFsbCBvZiB3aGljaCBhcmUgYWRlcXVhdGVseSBjb3ZlcmVkIGJ5IHN0YW5kYXJkIEtBU0FOIGFuZCBvdGhlciBidWcgZGV0ZWN0b3JzLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowf4czp[1] Phase: Succeeded StartedAt: 2026-08-12 15:21:00 +0000 UTC FinishedAt: 2026-08-12 15:21:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf4czp[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-12 15:21:00 +0000 UTC FinishedAt: 2026-08-12 15:21:00 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf4czp[2] Phase: Succeeded StartedAt: 2026-08-12 15:21:00 +0000 UTC FinishedAt: 2026-08-12 15:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf4czp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pcim_ioremap_region"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"cf4c92da-e7cd-4738-a9b7-46dae2926016","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-12 15:21:00 +0000 UTC FinishedAt: 2026-08-12 15:36:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pcim_ioremap_region"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"cf4c92da-e7cd-4738-a9b7-46dae2926016","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowf4czp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pcim_ioremap_region"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"cf4c92da-e7cd-4738-a9b7-46dae2926016","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-12 15:21:00 +0000 UTC FinishedAt: 2026-08-12 15:21:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf4czp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pcim_ioremap_region"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"cf4c92da-e7cd-4738-a9b7-46dae2926016","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-12 15:21:00 +0000 UTC FinishedAt: 2026-08-12 15:21:05 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf4czp/series-workflowf4czp-convert-artifact-4110125767/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf4czp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pcim_ioremap_region"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"cf4c92da-e7cd-4738-a9b7-46dae2926016","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-12 15:21:10 +0000 UTC FinishedAt: 2026-08-12 15:36:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf4czp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pcim_ioremap_region"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"cf4c92da-e7cd-4738-a9b7-46dae2926016","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-12 15:21:10 +0000 UTC FinishedAt: 2026-08-12 15:36:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a434830e-4caf-4372-a909-5d1ea3e08420,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf4czp/series-workflowf4czp-convert-artifact-4110125767/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "92e401ac-462c-474d-bcc3-b8a5434908c1", "success": false },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf4czp/series-workflowf4czp-build-action-3299251037/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf4czp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pcim_ioremap_region"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"cf4c92da-e7cd-4738-a9b7-46dae2926016","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-12 15:21:10 +0000 UTC FinishedAt: 2026-08-12 15:35:46 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*a434830e-4caf-4372-a909-5d1ea3e08420,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:request,Path:/tmp/request.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf4czp/series-workflowf4czp-convert-artifact-4110125767/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "build_id": "92e401ac-462c-474d-bcc3-b8a5434908c1", "success": false },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:*,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/output,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowf4czp/series-workflowf4czp-build-action-3299251037/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowf4czp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pcim_ioremap_region"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"cf4c92da-e7cd-4738-a9b7-46dae2926016","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2] Phase: Failed StartedAt: 2026-08-12 15:36:07 +0000 UTC FinishedAt: 2026-08-12 15:36:17 +0000 UTC Input: nil Output: nil --------- Name: series-workflowf4czp[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["pcim_ioremap_region"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"db2ddb87143519e20a95aa36c60b36107b736a58","config_name":"upstream-apparmor-kasan.config","enable_configs":["PCI","SND","SND_PCI","SND_HDA_INTEL","SND_AD1889","SND_ATIIXP","SND_ATIIXP_MODEM","SND_AW2","SND_BT87X","SND_LOLA","SND_HDSPM","SND_SOC","SND_SOC_LOONGSON_I2S_PCI","COMPILE_TEST"],"series_id":"cf4c92da-e7cd-4738-a9b7-46dae2926016","tree_name":"drm-next","tree_url":"https://gitlab.freedesktop.org/drm/kernel.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Failed StartedAt: 2026-08-12 15:36:07 +0000 UTC FinishedAt: 2026-08-12 15:36:12 +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,}