Name: series-workflowhzp4h Phase: Succeeded StartedAt: 2026-08-26 03:30:02 +0000 UTC FinishedAt: 2026-08-26 04:30:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[0] Phase: Succeeded StartedAt: 2026-08-26 03:30:02 +0000 UTC FinishedAt: 2026-08-26 03:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[0].run-triage Phase: Succeeded StartedAt: 2026-08-26 03:30:02 +0000 UTC FinishedAt: 2026-08-26 03:50:09 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89_8851BU", "RTW89_8852AU", "RTW89_8852BU", "RTW89_8852CU", "RTW89_8922AU", "RTW89_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89_8851BU", "RTW89_8852AU", "RTW89_8852BU", "RTW89_8852CU", "RTW89_8922AU", "RTW89_USB" ], "series_id": "99657667-de12-40ed-aa6e-95c2c3865fbf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw89_btc_ntfy_init", "rtw89_core_start" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfYnRjX250ZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYF9md19zZXRfZ3Bpb2Agd2hlcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgIHdhcyBpbmNvcnJlY3RseSBjaGVja2VkIGFnYWluc3QgYDB4ZmZgIGluc3RlYWQgb2YgYFx1MDAzZT0gQlRDX0RCR19OVU1gLiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgIHJldHVybnMgYEJUQ19EQkdfTlVNYCAod2hpY2ggaXMgMzIpIG9uIGVycm9yLiBCZWNhdXNlIG9mIHRoZSBpbmNvcnJlY3QgY2hlY2ssIHRoZSBlcnJvciB2YWx1ZSB3YXMgbm90IGNhdWdodCBhbmQgd2FzIHNlbnQgdG8gdGhlIGZpcm13YXJlIGFzIGEgdmFsaWQgc2lnbmFsIElELiBUaGlzIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbGwgZmllbGRzIG9mIHRoZSBgZ3Bpby1cdTAwM2VtdXguZGF0YWAgc3RydWN0dXJlIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBjb3BpZWQgdG8gdGhlIGJ1ZmZlciBhbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoZXJlZm9yZSwgdGhpcyBidWcgY2Fubm90IGJlIGRldGVjdGVkIGJ5IEtNU0FOLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGBfZndfc2V0X2dwaW9gIHdpdGhpbiB0aGUgUmVhbHRlayBydHc4OSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBmdXp6aW5nIChkdW1teV9oY2QpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKGBydHc4OV9idGNfbnRmeV9pbml0YCAtXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVx1MDAzZSBgX3NldF9leHRfaW50ZXJmYWNlYCAtXHUwMDNlIGBfZndfc2V0X2dwaW9gKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDlmYjI4OWE2M2UxOGU1YWUyYWEyNDE5ZTljMDZiNWRiOTRjMWNkMmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwMzo0NjowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXG5pbmRleCA1YTlkYzRkOGEwMGJhLi4xMmJkNTUzOWU4YzZkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXG5AQCAtMzM2NSw3ICYjNDM7MzM2NSw3IEBAIHN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG4gXHRcdGdwaW8tXHUwMDNlbXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xuIFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLnNpZyA9IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldixcbiBcdFx0XHRcdFx0XHRcdCAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCkpO1xuLVx0XHRpZiAoZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPT0gMHhmZilcbiYjNDM7XHRcdGlmIChncGlvLVx1MDAzZW11eC5kYXRhLnNpZyBcdTAwM2U9IEJUQ19EQkdfTlVNKVxuIFx0XHRcdHJldHVybjtcbiBcdFx0Z3Bpby1cdTAwM2VtdXguZGF0YS5ncGlvID0gRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCB2YWwpO1xuIFx0XHRsMl9oMmMgPSBncGlvLVx1MDAzZW11eC5mbXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfYnRjX250ZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGBfZndfc2V0X2dwaW9gIHdpdGhpbiB0aGUgUmVhbHRlayBydHc4OSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBmdXp6aW5nIChkdW1teV9oY2QpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKGBydHc4OV9idGNfbnRmeV9pbml0YCAtXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVx1MDAzZSBgX3NldF9leHRfaW50ZXJmYWNlYCAtXHUwMDNlIGBfZndfc2V0X2dwaW9gKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDlmYjI4OWE2M2UxOGU1YWUyYWEyNDE5ZTljMDZiNWRiOTRjMWNkMmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAwMzo0NjowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKaW5kZXggNWE5ZGM0ZDhhMDBiYS4uMTJiZDU1MzllOGM2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKQEAgLTMzNjUsNyAmIzQzOzMzNjUsNyBAQCBzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKQogCQlncGlvLSZndDttdXguZGF0YS5kbGVuID0gQ1hER1BJT19TRVRfTDI7CiAJCWdwaW8tJmd0O211eC5kYXRhLnNpZyA9IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldiwKIAkJCQkJCQkgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpKTsKLQkJaWYgKGdwaW8tJmd0O211eC5kYXRhLnNpZyA9PSAweGZmKQomIzQzOwkJaWYgKGdwaW8tJmd0O211eC5kYXRhLnNpZyAmZ3Q7PSBCVENfREJHX05VTSkKIAkJCXJldHVybjsKIAkJZ3Bpby0mZ3Q7bXV4LmRhdGEuZ3BpbyA9IEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgdmFsKTsKIAkJbDJfaDJjID0gZ3Bpby0mZ3Q7bXV4LmZtdDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5NgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jYC4gVGhlIGNoYW5nZSBpcyBpbiB0aGUgYF9md19zZXRfZ3Bpb2AgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB0aGlzIGxpbmU6CgpgYGBjCi0JCWlmIChncGlvLSZndDttdXguZGF0YS5zaWcgPT0gMHhmZikKJiM0MzsJCWlmIChncGlvLSZndDttdXguZGF0YS5zaWcgJmd0Oz0gQlRDX0RCR19OVU0pCmBgYAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmaXggcmVsYXRlZCB0byBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzcywgc29tZSBraW5kIG9mIGxvZ2ljIGVycm9yLCBvciBtYXliZSBqdXN0IGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIGltcHJvdmVtZW50LiBUaGUgZmFjdCB0aGF0IHRoZSBkcml2ZXIgaXMgYHJ0dzg5YCB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIGlzIGdvb2QgdG8ga25vdyBmb3IgY29udGV4dC4KCk5vdywgYSBxdWljayBndXQgY2hlY2suIEdpdmVuIHRoZSBoYXJkd2FyZSwgaXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJdCYjMzk7cyB0eXBpY2FsbHkgYSBQQ0llIG9yIFVTQiB3aXJlbGVzcyBkcml2ZXIsIGFuZCBJIGtub3cgdGhhdCBzdGFuZGFyZCBlbXVsYXRpb24gdG9vbHMgbGlrZSBgbWFjODAyMTFfaHdzaW1gIGFyZSBnZW5lcmFsbHkgdXNlZCBmb3IgZW11bGF0aW5nIFdpRmkuIFRoZXNlIHR5cGljYWxseSBkb24mIzM5O3QgaW5jbHVkZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIGxpa2UgcnR3ODkgdW5sZXNzIHRoZXkgaGF2ZSBhIFVTQiBpbnRlcmZhY2UgYW5kIHdlIGNhbiBsZXZlcmFnZSBVU0IgZnV6emluZyB1c2luZyBkdW1teV9oY2QuIEl0JiMzOTtzIHJhcmUgdG8gZW11bGF0ZSB0aGlzIGxldmVsIG9mIGRldGFpbC4gSSBzaG91bGQgZG91YmxlIGNoZWNrIGlmIHRoZSBkcml2ZXIgZXhwb3NlcyBhIFVTQiBpbnRlcmZhY2UuIFRoYXQmIzM5O3MgdGhlIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OS4qdXNiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgyNyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZT0xMDY9cnR3ODlfcGNpLXkgOj0gcGNpLm8gcGNpX2JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgJiM0Mzs9IHJ0dzg5X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwOTpydHc4OV91c2IteSA6PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MjA9c3RydWN0IHJ0dzg5X3BjaV9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MjE6c3RydWN0IHJ0dzg5X3VzYl9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjItc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTU4NzI9dW5pb24gcnR3ODlfYnVzX2luZm8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3My1cdGNvbnN0IHN0cnVjdCBydHc4OV9wY2lfaW5mbyAqcGNpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NTg3NDpcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3NS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYz00Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MWJfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUxYl9oZmNfY2hjZmdfdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtNTUtXHR7MTgsIDIxMCwgZ3JwXzB9LCAvKiBBQ0ggMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYy02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYzo3MDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg4NTFiX2hmY19wdWJjZmdfdXNiID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTcxLVx0MjEwLCAvKiBHcm91cCAwICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjc3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3ByZWNfY2ZnIHJ0dzg4NTFiX2hmY19wcmVjY2ZnX3VzYiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYy03OC1cdDksIC8qIENIIDAtMTEgcHJlLWNvc3QgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTFiX2hmY19wYXJhbV9pbmlfdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtODktXHRbUlRXODlfUVRBX1NDQ10gPSB7cnR3ODg1MWJfaGZjX2NoY2ZnX3VzYiwgXHUwMDI2cnR3ODg1MWJfaGZjX3B1YmNmZ191c2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jPTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUxYl9kbGVfbWVtX3BjaWVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtMTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjExMzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MWJfZGxlX21lbV91c2IyW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtMTE0LVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMzAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTEyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYzoxMjY6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTFiX2RsZV9tZW1fdXNiM1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTEyNy1cdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTMwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MWJfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM9NjI9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjQtXHQuaWRfdGFibGUgPSBydHdfODg1MWJ1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2NTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjY6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02Ny19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYz00Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MmFfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUyYV9oZmNfY2hjZmdfdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtNTItXHR7MjIsIDQwMiwgZ3JwXzB9LCAvKiBBQ0ggMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYy02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYzo2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg4NTJhX2hmY19wdWJjZmdfdXNiID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTY4LVx0NTEyLCAvKiBHcm91cCAwICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjc0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3ByZWNfY2ZnIHJ0dzg4NTJhX2hmY19wcmVjY2ZnX3VzYiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYy03NS1cdDExLCAvKiBDSCAwLTExIHByZS1jb3N0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4ODUyYV9oZmNfcGFyYW1faW5pX3VzYltdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTg2LVx0W1JUVzg5X1FUQV9TQ0NdID0ge3J0dzg4NTJhX2hmY19jaGNmZ191c2IsIFx1MDAyNnJ0dzg4NTJhX2hmY19wdWJjZmdfdXNiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYz05Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmFfZGxlX21lbV9wY2llW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTEwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYzoxMTA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTJhX2RsZV9tZW1fdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtMTExLVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYzoxMTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg4NTJhX3VzYl9pbmZvID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy0xMi1cdC51c2JfaG9zdF9yZXF1ZXN0XzJcdFx0PSBSX0FYX1VTQl9IT1NUX1JFUVVFU1RfMixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTc4LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTJhdV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjgwOlx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtODEtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmM9NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTJiX2hmY19wYXJhbV9pbmlfcGNpZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy01MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYzo1MjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19jaF9jZmcgcnR3ODg1MmJfaGZjX2NoY2ZnX3VzYltdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTUzLVx0ezE4LCAyMTAsIGdycF8wfSwgLyogQUNIIDAgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMtNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmM6Njg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcHViX2NmZyBydHc4ODUyYl9oZmNfcHViY2ZnX3VzYiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy02OS1cdDIxMCwgLyogR3JvdXAgMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy03NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYzo3NTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wcmVjX2NmZyBydHc4ODUyYl9oZmNfcHJlY2NmZ191c2IgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMtNzYtXHQ5LCAvKiBDSCAwLTExIHByZS1jb3N0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jOjg2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4ODUyYl9oZmNfcGFyYW1faW5pX3VzYltdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTg3LVx0W1JUVzg5X1FUQV9TQ0NdID0ge3J0dzg4NTJiX2hmY19jaGNmZ191c2IsIFx1MDAyNnJ0dzg4NTJiX2hmY19wdWJjZmdfdXNiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYz05ND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmJfZGxlX21lbV9wY2llW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTExMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYzoxMTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTJiX2RsZV9tZW1fdXNiM1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTExMi1cdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTMwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmJfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYnVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtNzgtXHQuaWRfdGFibGUgPSBydHdfODg1MmJ1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo3OTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6ODA6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy04MS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYz00Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MmNfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUyY19oZmNfY2hjZmdfdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtNTUtXHR7MTgsIDM0NCwgZ3JwXzB9LCAvKiBBQ0ggMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYy02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYzo3MDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg4NTJjX2hmY19wdWJjZmdfdXNiID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTcxLVx0MzQ0LCAvKiBHcm91cCAwICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjc3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3ByZWNfY2ZnIHJ0dzg4NTJjX2hmY19wcmVjY2ZnX3VzYiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYy03OC1cdDksIC8qIENIIDAtMTEgcHJlLWNvc3QgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTJjX2hmY19wYXJhbV9pbmlfdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtODktXHRbUlRXODlfUVRBX1NDQ10gPSB7cnR3ODg1MmNfaGZjX2NoY2ZnX3VzYiwgXHUwMDI2cnR3ODg1MmNfaGZjX3B1YmNmZ191c2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jPTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUyY19kbGVfbWVtX3BjaWVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtMTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjEwOTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmNfZGxlX21lbV91c2IyW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtMTEwLVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMzEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTEyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYzoxMjI6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTJjX2RsZV9tZW1fdXNiM1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTEyMy1cdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTE3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmNfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yX1YxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM9MTM2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmN1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEzOC1cdC5pZF90YWJsZSA9IHJ0d184ODUyY3VfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjEzOTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6MTQwOlx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTQxLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jPTEwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg5MjJhX2hmY19wdWJjZmdfcDggPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTEwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzoxMTA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg5MjJhX2hmY19wYXJhbV9pbmlfdXNiMltdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTExMS1cdFtSVFc4OV9RVEFfU0NDXSA9IHtydHc4OTIyYV9oZmNfY2hjZmdfY2g3LCBcdTAwMjZydHc4OTIyYV9oZmNfcHViY2ZnX3A3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYz0xNjM9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcHViX2NmZyBydHc4OTIyYV9oZmNfcHViY2ZnX3A1ID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0xNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6MTcwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4OTIyYV9oZmNfcGFyYW1faW5pX3VzYjNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0xNzEtXHRbUlRXODlfUVRBX1NDQ10gPSB7cnR3ODkyMmFfaGZjX2NoY2ZnX2NoNCwgXHUwMDI2cnR3ODkyMmFfaGZjX3B1YmNmZ19wNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM9MTgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4OTIyYV9kbGVfbWVtX3BjaWVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjIwMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODkyMmFfZGxlX21lbV91c2IyW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMjAxLVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplN192MSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjIyMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODkyMmFfZGxlX21lbV91c2IzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMjIxLVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplNF92MSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM9ODQyPXN0YXRpYyBpbnQgcnR3ODkyMmFfcmVhZF9lZnVzZV9wY2lfc2RpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy04NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6ODU0OnN0YXRpYyBpbnQgcnR3ODkyMmFfcmVhZF9lZnVzZV91c2Ioc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy04NTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYz04NzY9c3RhdGljIGludCBydHc4OTIyYV9yZWFkX2VmdXNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTg4Ni1cdGNhc2UgUlRXODlfRUZVU0VfQkxPQ0tfSENJX0RJR19VU0I6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6ODg3Olx0XHRyZXQgPSBydHc4OTIyYV9yZWFkX2VmdXNlX3VzYihydHdkZXYsIGxvZ19tYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTg4OC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jPTMyMDE9Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4OTIyYV9jaGlwX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTMyMjctXHRcdC5oZmNfcGFyYW1faW5pXHQ9IHtydHc4OTIyYV9oZmNfcGFyYW1faW5pX3BjaWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6MzIyODpcdFx0XHRcdCAgIHJ0dzg5MjJhX2hmY19wYXJhbV9pbmlfdXNiMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzozMjI5Olx0XHRcdFx0ICAgcnR3ODkyMmFfaGZjX3BhcmFtX2luaV91c2IzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTMyMzAtXHRcdFx0XHQgICBOVUxMfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0zMjMxLVx0XHQuZGxlX21lbVx0PSB7cnR3ODkyMmFfZGxlX21lbV9wY2llLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjMyMzI6XHRcdFx0XHQgICBydHc4OTIyYV9kbGVfbWVtX3VzYjIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6MzIzMzpcdFx0XHRcdCAgIHJ0dzg5MjJhX2RsZV9tZW1fdXNiMyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0zMjM0LVx0XHRcdFx0ICAgTlVMTH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzoxMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg5MjJhX3VzYl9pbmZvID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy0xMS1cdC51c2JfaG9zdF9yZXF1ZXN0XzJcdFx0PSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kcml2ZXJfaW5mbyBydHc4OV84OTIyYXVfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTM3LVx0LmJ1cyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6Mzg6XHRcdC51c2IgPSBcdTAwMjZydHc4OTIyYV91c2JfaW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtMzktXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9Nzc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184OTIyYXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtNzktXHQuaWRfdGFibGUgPSBydHdfODkyMmF1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzo4MDpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6ODE6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04Mi19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYz04NTk9c3RhdGljIGludCBydHc4OTIyZF9yZWFkX2VmdXNlX3BjaV9zZGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4NzE6c3RhdGljIGludCBydHc4OTIyZF9yZWFkX2VmdXNlX3VzYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg3Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTkxOT1zdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfZWZ1c2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtOTI1LVx0Y2FzZSBSVFc4OV9FRlVTRV9CTE9DS19IQ0lfRElHX1VTQjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo5MjY6XHRcdHJldHVybiBydHc4OTIyZF9yZWFkX2VmdXNlX3VzYihydHdkZXYsIGxvZ19tYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTkyNy1cdGNhc2UgUlRXODlfRUZVU0VfQkxPQ0tfUkY6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTQ6c3RhdGljIHZvaWQgX19ydHc4OV91c2JfdmVuZG9ycmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1LVx0XHRcdFx0ICB2b2lkICpkYXRhLCB1MTYgbGVuLCB1OCByZXF0eXBlLCBib29sIHdhcm4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTc6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOC1cdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gcnR3dXNiLVx1MDAzZXVkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzI6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3ZlbmRvcnJlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03My1cdFx0XHRcdHZvaWQgKmRhdGEsIHUxNiBsZW4sIHU4IHJlcXR5cGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzU6XHRfX3J0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBkYXRhLCBsZW4sIHJlcXR5cGUsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3ODpzdGF0aWMgdTMyIHJ0dzg5X3VzYl9yZWFkX2NtYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODctXHRmb3IgKGNvdW50ID0gMDsgOyBjb3VudCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODg6XHRcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyMzIsIFx1MDAyNmRhdGEsIDQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg5LVx0XHRcdFx0ICAgIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA4OnN0YXRpYyB1OCBydHc4OV91c2Jfb3BzX3JlYWQ4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTItXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExMzpcdFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTU6XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgMSwgUlRXODlfVVNCX1ZFTlFUX1JFQUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyMDpzdGF0aWMgdTE2IHJ0dzg5X3VzYl9vcHNfcmVhZDE2KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjQtXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyNTpcdFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjc6XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgMiwgUlRXODlfVVNCX1ZFTlFUX1JFQUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEzMjpzdGF0aWMgdTMyIHJ0dzg5X3VzYl9vcHNfcmVhZDMyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzYtXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEzNzpcdFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMzk6XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgNCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTQwLVx0XHRcdCAgICBSVFc4OV9VU0JfVkVOUVRfUkVBRCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE0NTpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3dyaXRlOChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1OCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE0OTpcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBcdTAwMjZkYXRhLCAxLCBSVFc4OV9VU0JfVkVOUVRfV1JJVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3dyaXRlMTYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTU2Olx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDIsIFJUVzg5X1VTQl9WRU5RVF9XUklURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTU5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfd3JpdGUzMihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNjM6XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgNCwgUlRXODlfVVNCX1ZFTlFUX1dSSVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNjY6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3dyaXRlMzJfcXVpZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTcwOlx0X19ydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgNCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTcxLVx0XHRcdCAgICAgIFJUVzg5X1VTQl9WRU5RVF9XUklURSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM9MTc0PXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTc1OnJ0dzg5X3VzYl9vcHNfY2hlY2tfYW5kX3JlY2xhaW1fdHhfcmVzb3VyY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNzYtXHRcdFx0XHRcdCAgICB1OCB0eGNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNzcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNzg6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNzktXHRpbnQgaW5mbGlnaHQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE5MTpzdGF0aWMgdm9pZCBydHc4OV91c2Jfd3JpdGVfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE5MzpcdHN0cnVjdCBydHc4OV91c2JfdHhfY3RybF9ibG9jayAqdHhjYiA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOTQtXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSB0eGNiLVx1MDAzZXJ0d2RldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTk1Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTk2LVx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoyNTk6c3RhdGljIGludCBydHc4OV91c2Jfd3JpdGVfcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGNoX2RtYSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjYwLVx0XHRcdFx0dm9pZCAqZGF0YSwgaW50IGxlbiwgdm9pZCAqY29udGV4dClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjYyOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjYzOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvICppbmZvID0gcnR3dXNiLVx1MDAzZWluZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI2NC1cdHN0cnVjdCB1c2JfZGV2aWNlICp1c2JkID0gcnR3dXNiLVx1MDAzZXVkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNzktXHR1c2JfZmlsbF9idWxrX3VyYih1cmIsIHVzYmQsIHBpcGUsIGRhdGEsIGxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjgwOlx0XHRcdCAgcnR3ODlfdXNiX3dyaXRlX3BvcnRfY29tcGxldGUsIGNvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yODEtXHR1cmItXHUwMDNldHJhbnNmZXJfZmxhZ3MgfD0gVVJCX1pFUk9fUEFDS0VUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMDA6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3R4X2ZyZWVfc2tiKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHhjaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzAxLVx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMDk6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc190eF9raWNrX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR4Y2gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMxMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMxMTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMxMjpcdHN0cnVjdCBydHc4OV91c2JfdHhfY3RybF9ibG9jayAqdHhjYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzEzLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMyMi1cdFx0aWYgKCF0eGNiKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMyMzpcdFx0XHRydHc4OV91c2JfdHhfZnJlZV9za2IocnR3ZGV2LCB0eGNoLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMjQtXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMzNTpcdFx0cmV0ID0gcnR3ODlfdXNiX3dyaXRlX3BvcnQocnR3ZGV2LCB0eGNoLCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzM2LVx0XHRcdFx0XHQgICB0eGNiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM0NS1cdFx0XHRrZnJlZSh0eGNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzQ2Olx0XHRcdHJ0dzg5X3VzYl90eF9mcmVlX3NrYihydHdkZXYsIHR4Y2gsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM0Ny1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozNTE6c3RhdGljIGludCBydHc4OV91c2JfdHhfd3JpdGVfZndjbWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNTItXHRcdFx0XHQgICAgc3RydWN0IHJ0dzg5X2NvcmVfdHhfcmVxdWVzdCAqdHhfcmVxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzU0LVx0c3RydWN0IHJ0dzg5X3R4X2Rlc2NfaW5mbyAqZGVzY19pbmZvID0gXHUwMDI2dHhfcmVxLVx1MDAzZWRlc2NfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzU1Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzU2LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHR4X3JlcS1cdTAwM2Vza2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM5MzpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfdHhfd3JpdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTQtXHRcdFx0XHQgIHN0cnVjdCBydHc4OV9jb3JlX3R4X3JlcXVlc3QgKnR4X3JlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM5Ni1cdHN0cnVjdCBydHc4OV90eF9kZXNjX2luZm8gKmRlc2NfaW5mbyA9IFx1MDAyNnR4X3JlcS1cdTAwM2VkZXNjX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM5NzpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM5OC1cdHN0cnVjdCBydHc4OV90eF9za2JfZGF0YSAqc2tiX2RhdGE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00MTItXHRpZiAoZGVzY19pbmZvLVx1MDAzZWNoX2RtYSA9PSBSVFc4OV9UWENIX0NIMTIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQxMzpcdFx0cmV0dXJuIHJ0dzg5X3VzYl90eF93cml0ZV9md2NtZChydHdkZXYsIHR4X3JlcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQxNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM2OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDM3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM4Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHc4OV91c2IsIHJ4X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo0Mzk6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gKmluZm8gPSBydHd1c2ItXHUwMDNlaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDQwOlx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gcnR3dXNiLVx1MDAzZXJ0d2RldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDQxLVx0c3RydWN0IHJ0dzg5X3J4X2Rlc2NfaW5mbyBkZXNjX2luZm87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjUwNzpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfcmVzdWJtaXQoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1MDg6XHRcdFx0XHQgIHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTA5LVx0XHRcdFx0ICBnZnBfdCBnZnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUxMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjUxMTpcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHJ0d3VzYi1cdTAwM2VydHdkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUxMi1cdHN0cnVjdCBza19idWZmICpyeF9za2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MjktXHRcdFx0ICByeGNiLVx1MDAzZXJ4X3NrYi1cdTAwM2VkYXRhLCBSVFc4OV9VU0JfUkVDVkJVRl9TWixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTMwOlx0XHRcdCAgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZSwgcnhjYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTUyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTU0Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHc4OV91c2IsIHJ4X3VyYl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTU1Olx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NTYtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2MS1cdFx0aWYgKCFyeGNiLVx1MDAzZXJ4X3NrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTYyOlx0XHRcdHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdChydHd1c2IsIHJ4Y2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU2NjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcmVhZF9wb3J0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTY3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTY4Olx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2OS1cdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHJ4Y2ItXHUwMDNlcnR3ZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NzA6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NzEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcnhjYi1cdTAwM2VyeF9za2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU4NTpcdFx0cnR3ODlfdXNiX3J4X3Jlc3VibWl0KHJ0d3VzYiwgcnhjYiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU4Ni1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjYxNzpzdGF0aWMgdm9pZCBydHc4OV91c2JfY2FuY2VsX3J4X2J1ZnMoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MTk6XHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYyMC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Mjg6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2NhbmNlbF90eF9idWZzKHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjI5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjMzOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9mcmVlX3J4X2J1ZnMoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MzQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MzU6XHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzNi1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NDQ6c3RhdGljIGludCBydHc4OV91c2JfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY0NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY0NjpcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQ3LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NTQtXHRcdGlmICghcnhjYi1cdTAwM2VyeF91cmIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjU1Olx0XHRcdHJ0dzg5X3VzYl9mcmVlX3J4X2J1ZnMocnR3dXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjU2LVx0XHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NjM6c3RhdGljIGludCBydHc4OV91c2JfaW5pdF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY2NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2NTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY2Ni1cdHN0cnVjdCBza19idWZmICpyeF9za2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2OTpcdHJ0d3VzYi1cdTAwM2VyeHdxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0O3J0dzg5X3VzYjogcnggd3FcJiMzNDssIFdRX0JIIHwgV1FfUEVSQ1BVLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjcwLVx0aWYgKCFydHd1c2ItXHUwMDNlcnh3cSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Nzg6XHRJTklUX1dPUksoXHUwMDI2cnR3dXNiLVx1MDAzZXJ4X3dvcmssIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Njc5Olx0SU5JVF9XT1JLKFx1MDAyNnJ0d3VzYi1cdTAwM2VyeF91cmJfd29yaywgcnR3ODlfdXNiX3J4X3Jlc3VibWl0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02ODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY5MDpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjkyOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDE6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3N0YXJ0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzAzOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzA0LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9VU0JfUlhDQl9OVU07IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDc6XHRcdHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdChydHd1c2IsIFx1MDAyNnJ0d3VzYi1cdTAwM2VyeF9jYltpXSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwOC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9pbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEyOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzEzLVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyMTpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzIyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzIzOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzI0LVx0aW50IGk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2MzAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgYHJ0dzg5YCBhbmQgVVNCIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHRoZSBgcnR3ODlgIGRyaXZlciwgcmlnaHQ/IEkgc2VlIGl0IGhhcyBVU0Igc3VwcG9ydCBiYWtlZCBpbiAoYHJ0dzg5X3VzYi15IDo9IHVzYi5vYCkuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSBwb3RlbnRpYWwgdGFyZ2V0IGZvciBVU0IgZnV6emluZy4gVGhlIGR1bW15IEhDRCBzZXR1cCBvcGVucyB0aGUgZG9vciBmb3IgdGhhdC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHNwZWNpZmljYWxseSBlbmFibGVzIHRoaXMgVVNCIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyBzdGFydCB3aXRoIGBDT05GSUdfUlRXODlfVVNCYC4gQnV0IGhvbGQgb24sIGJlZm9yZSBJIGdldCB0b28gZmFyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB1bmRlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIHRvIGdldCB0aGUgZGVmaW5pdGl2ZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBjb25maWcgb3B0aW9ucy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg5X1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTc9Y29uZmlnIFJUVzg5X1BDSVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDpjb25maWcgUlRXODlfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDUzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBgcnR3ODlgIHNlY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLCBhbmQgYEtjb25maWdgIGZpbGVzIGFyZSB0aGUgYnJlYWQgYW5kIGJ1dHRlciBmb3IgdGhpcyBraW5kIG9mIGludmVzdGlnYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYXJvdW5kIGxpbmUgMjAsIGFzIHRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZ3Jhc3AgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCB0aGUgaW5pdGlhbCBkZWZpbml0aW9ucyB0aGF0IHNldCB0aGUgc3RhZ2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gdW5jb3ZlciEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuICAgMjpcdG1lbnVjb25maWcgUlRXODlcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OS5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OVxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OV9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg5X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODlfVVNCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFxuICAyMzpcdGNvbmZpZyBSVFc4OV84ODUxQlxuICAyNDpcdFx0dHJpc3RhdGVcbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgUlRXODlfODg1MkFcbiAgMjc6XHRcdHRyaXN0YXRlXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFJUVzg5Xzg4NTJCX0NPTU1PTlxuICAzMDpcdFx0dHJpc3RhdGVcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgUlRXODlfODg1MkJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIFJUVzg5Xzg4NTJCVFxuICAzNjpcdFx0dHJpc3RhdGVcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgUlRXODlfODg1MkNcbiAgMzk6XHRcdHRyaXN0YXRlXG4gIDQwOlx0XG4gIDQxOlx0Y29uZmlnIFJUVzg5Xzg5MjJBXG4gIDQyOlx0XHR0cmlzdGF0ZVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBSVFc4OV84OTIyRFxuICA0NTpcdFx0dHJpc3RhdGVcbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgUlRXODlfODg1MUJFXG4gIDQ4Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNTA6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDUxOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDUyOlx0XHRzZWxlY3QgUlRXODlfODg1MUJcbiAgNTM6XHRcdGhlbHBcbiAgNTQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTFCRSBjaGlwc2V0XG4gIDU1Olx0XG4gIDU2Olx0XHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA1NzpcdFxuICA1ODpcdGNvbmZpZyBSVFc4OV84ODUxQlVcbiAgNTk6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDYwOlx0XHRkZXBlbmRzIG9uIFVTQlxuICA2MTpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNjI6XHRcdHNlbGVjdCBSVFc4OV9VU0JcbiAgNjM6XHRcdHNlbGVjdCBSVFc4OV84ODUxQlxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJVIGNoaXBzZXRcbiAgNjY6XHRcbiAgNjc6XHRcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgUlRXODlfODg1MkFFXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNzI6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDczOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDc0Olx0XHRzZWxlY3QgUlRXODlfODg1MkFcbiAgNzU6XHRcdGhlbHBcbiAgNzY6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJBRSBjaGlwc2V0XG4gIDc3Olx0XG4gIDc4Olx0XHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA3OTpcdFxuICA4MDpcdGNvbmZpZyBSVFc4OV84ODUyQVVcbiAgODE6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDgyOlx0XHRkZXBlbmRzIG9uIFVTQlxuICA4MzpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgODQ6XHRcdHNlbGVjdCBSVFc4OV9VU0JcbiAgODU6XHRcdHNlbGVjdCBSVFc4OV84ODUyQVxuICA4NjpcdFx0aGVscFxuICA4NzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFVIGNoaXBzZXRcbiAgODg6XHRcbiAgODk6XHRcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcbiAgOTA6XHRcbiAgOTE6XHRjb25maWcgUlRXODlfODg1MkJFXG4gIDkyOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuICA5MzpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgOTQ6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDk1Olx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDk2Olx0XHRzZWxlY3QgUlRXODlfODg1MkJcbiAgOTc6XHRcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cbiAgOTg6XHRcdGhlbHBcbiAgOTk6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJCRSBjaGlwc2V0XG4gMTAwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2MzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBEcml2ZXIgZm9yIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGludGVyYWN0IHdpdGggdGhpcyBkcml2ZXIgdmlhIFVTQi4gSXQgbG9va3MgbGlrZSB0aGUgZHJpdmVyIGZvciB0aGlzIGhhcmR3YXJlIGlzIHJlYWNoYWJsZSB0aHJvdWdoIFVTQiDigJMgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgVVNCIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlbGV2YW50IGhlcmUuIEkgc2VlIGEgbGlzdCBvZiBsaWtlbHkgY2FuZGlkYXRlczogYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYC4gSSYjMzk7bGwgd2FudCB0byBrZWVwIHRob3NlIG5hbWVzIGluIG1pbmQgYXMgSSBkaWcgZGVlcGVyLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRldGVybWluZSBpZiB0aGUgYF9md19zZXRfZ3Bpb2AgZnVuY3Rpb24gb3Igc2ltaWxhciBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUga2V5IHRvIGNvbnRyb2xsaW5nIGhhcmR3YXJlLWxldmVsIGZlYXR1cmVzLCBzbyBJIG5lZWQgdG8gY29uZmlybSBpdHMgYWNjZXNzaWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X2Z3X3NldF9ncGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMxMj1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfZnJvbV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzMzOnN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNDI1PXN0YXRpYyB2b2lkIF9zZXRfZXh0X2ludGVyZmFjZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0My1cdFx0aWYgKGJ0MV9zd190eXBlIFx1MDAzZSBCVENfU1dJVENIX0lOVEVSTkFMKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDQ0Olx0XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRU5fTUFQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0NS1cdFx0XHRcdCAgICAgQklUKEJUQ19EQkdfR05UX0JUMSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NDctXHRcdFx0dmFsID0gKGJ0MV9zd190eXBlIFx1MDAzY1x1MDAzYyA4KSAmIzQzOyBCVENfREJHX0dOVF9CVDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDQ4Olx0XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fTVVYX01BUCwgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NDktXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDUzLVx0aWYgKGN4LVx1MDAzZWJ0X2V4dC5od19jb2V4IFx1MDAyNiBCVENfRVhUU09DX0lOVEZfUFRBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ1NDpcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfSFBUQSwgY3gtXHUwMDNlYnRfZXh0LmhwdGFfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1Ny1cdGlmIChjeC1cdTAwM2VidF9leHQuaHdfY29leCBcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX01CWClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NTg6XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX0hNQlgsIGN4LVx1MDAzZWJ0X2V4dC5obWJ4X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NjEtXHRpZiAoY3gtXHUwMDNlYnRfZXh0Lmh3X2NvZXggXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9TV0lPKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDYyOlx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9TV09VVCwgY3gtXHUwMDNlYnRfZXh0LnN3b3V0X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDYzOlx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9TV0lOLCBjeC1cdTAwM2VidF9leHQuc3dpbl9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ2NC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE4OTcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBlbWJlZGRlZCBzeXN0ZW1zIGV4cGVydDoKCioqVHJhY2luZyB0aGUgUGluIENvbmZpZ3VyYXRpb24gTG9naWMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgZXh0ZXJuYWwgaW50ZXJmYWNlcyBhcmUgYmVpbmcgc2V0IHVwLiBJIHNlZSB0aGF0IGBfc2V0X2V4dF9pbnRlcmZhY2VgIGlzIHJlc3BvbnNpYmxlIGZvciBjb25maWd1cmluZyB0aGVzZSB0aGluZ3MuIFRoYXQgbWFrZXMgc2Vuc2UsIGEgdG9wLWxldmVsIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGUgaGlnaC1sZXZlbCBzZXR1cC4gQnV0IHRoZW4gSSBzcG90IGl0OiBgX2Z3X3NldF9ncGlvYCBpcyAqY2FsbGVkKiBieSBgX3NldF9leHRfaW50ZXJmYWNlYC4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBTbywgaXQgbG9va3MgbGlrZSBgX2Z3X3NldF9ncGlvYCBpcyB0aGUgbG93LWxldmVsIHdvcmtob3JzZSwgdGhlIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgaW50ZXJhY3RzIHdpdGggdGhlIEdQSU8gKEdlbmVyYWwgUHVycG9zZSBJbnB1dC9PdXRwdXQpIHJlZ2lzdGVycyBvbiB0aGUgaGFyZHdhcmUuIGBfc2V0X2V4dF9pbnRlcmZhY2VgIGlzIHByb2JhYmx5IGNhbGxpbmcgYF9md19zZXRfZ3Bpb2AgaW4gb3JkZXIgdG8gc2V0IHVwIHRoZSBwaW5zIHByb3Blcmx5IGZvciB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4sIHdpdGggYSBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gbWFuYWdpbmcgdGhlIGJyb2FkZXIgY29uZmlndXJhdGlvbiBhbmQgdGhlbiBkZWxlZ2F0aW5nIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBkZXRhaWxzIHRvIGEgbG93ZXItbGV2ZWwgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgX2Z3X3NldF9ncGlvYCBhbmQgaG93IGl0JiMzOTtzIHVzZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhlIHBpbiBjb25maWd1cmF0aW9uIGlzIHJlYWxseSB3b3JraW5nLiBUaGlzIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfc2V0X2V4dF9pbnRlcmZhY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzMzPXN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0MjU6c3RhdGljIHZvaWQgX3NldF9leHRfaW50ZXJmYWNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0MjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg2OTA9c3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3MTgtXHRidGNfZndfc2V0X21vbnJlZyhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODcxOTpcdF9zZXRfZXh0X2ludGVyZmFjZShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyMC1cdF9zZXRfd2xfdHhfcG93ZXIocnR3ZGV2LCBSVFc4OV9CVENfV0xfREVGX1RYX1BXUiwgUlRXODlfUEhZXzApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjU4OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXAgaW4gdGhlIHdlZWRzIG9mIHRoaXMgY29kZSwgYW5kIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGlzIHVuZm9sZGluZy4gSXQgbG9va3MgbGlrZSB0aGUgYF9zZXRfZXh0X2ludGVyZmFjZWAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkICpkaXJlY3RseSogYnkgYF9zZXRfaW5pdF9pbmZvYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEl0JiMzOTtzIG5vdCBzb21lIGluZGlyZWN0IGNhbGwgdGhyb3VnaCBhbm90aGVyIGxheWVyLiBUaGlzIG1lYW5zIHRoYXQgc2V0dGluZyB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGlzIGEgKmRpcmVjdCogY29uc2VxdWVuY2UsIG9yIHBhcnQsIG9mIHNldHRpbmcgdXAgdGhlIGluaXRpYWxpemF0aW9uIGluZm9ybWF0aW9uLiBJIGNhbiBwcm9iYWJseSBpbmZlciBmcm9tIHRoaXMgdGhhdCBob3cgd2Ugc2V0IHVwIHRoZSBleHRlcm5hbCBpbnRlcmZhY2UgaXMgcHJldHR5IGNlbnRyYWwgdG8gdGhlIGVhcmx5IHNldHVwIGFuZCBwcm9iYWJseSBjcml0aWNhbCB0byBjb3JlIGZ1bmN0aW9uYWxpdHkgbGF0ZXIgb24sIG9yIGl0IHdvdWxkbiYjMzk7dCBiZSBkaXJlY3RseSBhdHRhY2hlZCB0byBpbml0IGluZm8uIE5lZWQgdG8ga2VlcCB0aGlzIGNvbm5lY3Rpb24gaW4gbWluZCB3aGVuIEkgZGVidWcgbGF0ZXIgb24uIEdvdCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X3NldF9pbml0X2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NjcxPXZvaWQgcnR3ODlfYnRjX250ZnlfcG93ZXJvZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg2ODktI2RlZmluZSBCVENfUExBVEZPUk1fTElUVExFX0VORElBTiAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NjkwOnN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg2OTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg3MjM9dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODc3NDpcdF9zZXRfaW5pdF9pbmZvKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04Nzc1LVx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSLCBSVFc4OV9QSFlfMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTg3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyB3aXRoIHdpcmVsZXNzIGRyaXZlciBpbnRlcm5hbHM6CgoqKkFuYWx5emluZyB0aGUgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UgaW4gcnR3ODlfYnRjX250ZnlfaW5pdCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHJ0dzg5X2J0Y19udGZ5X2luaXRgLCBhbmQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgX3NldF9pbml0X2luZm9gLiBUaGUgY29kZSBhcmNoaXRlY3R1cmUgaXMgZGVzaWduZWQgdG8gaW5pdGlhbGl6ZSB0aGUgQlQgY28tZXhpc3RlbmNlIGZ1bmN0aW9uYWxpdHkuIEZyb20gbXkgZXhwZXJpZW5jZSB3aXRoIHdpcmVsZXNzIGRyaXZlcnMsIHRoZSBmYWN0IHRoYXQgYF9zZXRfaW5pdF9pbmZvYCBpcyBiZWluZyBjYWxsZWQgKmJ5KiBgcnR3ODlfYnRjX250ZnlfaW5pdGAgaXMgY3J1Y2lhbC4gSXQgdGVsbHMgbWUgdGhhdCBgX3NldF9pbml0X2luZm9gIGlzIGxpa2VseSBhIGNvcmUsIGZvdW5kYXRpb25hbCBmdW5jdGlvbiB3aXRoaW4gdGhlIEJUIGNvZXhpc3RlbmNlIHNldHVwLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbmx5IHRoZSByb3V0aW5lIHRoYXQgcG9wdWxhdGVzIG9yIHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBuZWVkZWQgZm9yIHByb3BlciBCbHVldG9vdGggYW5kIFdpLUZpIGhhcm1vbnkuIEnigJltIGJldHRpbmcgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcHJlLXByb2Nlc3NpbmcgdGhlIGluaXRpYWwgc2V0dGluZ3MgdG8gY29uZmlndXJlIG9yIHByZXBhcmUgdGhlIHN5c3RlbSBmb3IgdGhlIHJlc3Qgb2YgdGhlIEJUL1dpLUZpIGNvbGxhYm9yYXRpb24gbG9naWMgdG8gZm9sbG93LiBJIHNob3VsZCBjYXJlZnVsbHkgcmV2aWV3IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBpbml0aWFsaXphdGlvbiBkYXRhIGlzIGhhbmRsZWQgYW5kIHdoZXJlIGl0IGNvbWVzIGZyb20uIFRoaXMgaXMgYSBwb3RlbnRpYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGRlYnVnZ2luZyBhbnkgaXNzdWVzIHdpdGggQmx1ZXRvb3RoIGNvZXhpc3RlbmNlLCBhcyB0aGlzIGluaXRpYWxpemF0aW9uIHN0ZXAgaXMgY2xlYXJseSBjcml0aWNhbCBmb3IgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfYnRjX250ZnlfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg2OTA9c3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NzIzOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaD0zMjA9dm9pZCBydHc4OV9idGNfbnRmeV9wb3dlcm9mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4Lmg6MzIxOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmgtMzIyLXZvaWQgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9pZHgsIHU4IGJhbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY2NTg9aW50IHJ0dzg5X2NvcmVfc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo2Njk1Olx0cnR3ODlfYnRjX250ZnlfaW5pdChydHdkZXYsIEJUQ19NT0RFX05PUk1BTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02Njk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDAwNgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW5pdGlhbGlzaW5nIHRoZSBCaXRjb2luIE5vdGlmaWNhdGlvbiBTeXN0ZW0qKgoKUmlnaHQsIHNvIEkgc2VlIHRoYXQgYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGlzIGludm9rZWQgYnkgYHJ0dzg5X2NvcmVfc3RhcnRgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBpdCBnaXZlcyBtZSBhIGNsZWFyIHBvaW50IG9mIGVudHJ5LiBJdCBtZWFucyB0aGF0IHRoZSBCaXRjb2luIG5vdGlmaWNhdGlvbiBzeXN0ZW0sIHdoYXRldmVyIGl0JiMzOTtzIGRvaW5nLCBpcyBpbml0aWFsaXplZCB3aGVuIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGBydHc4OWAgbW9kdWxlIGlzIHN0YXJ0ZWQuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHRoaXMgbm90aWZpY2F0aW9uIHN5c3RlbSBpcyBpbnRlZ3JhbCB0byB0aGUgb3ZlcmFsbCBvcGVyYXRpb24gb2YgdGhlIG1vZHVsZSBhbmQgdGhhdCBzdGFydGluZyB0aGUgY29yZSBlZmZlY3RpdmVseSBiZWdpbnMgdGhlIG1vbml0b3Jpbmcgb3Igbm90aWZpY2F0aW9uIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYHJ0dzg5X2NvcmVfc3RhcnRgIGFuZCBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgQml0Y29pbiBzeXN0ZW0gdG8gYWN0dWFsbHkgc3RhcnQgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMsIHdoYXQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcmUgbG9hZGVkLCBhbmQgd2hhdCBldmVudHMgaXTigJlzIHdhdGNoaW5nIGZvciwgYnV0IHRoaXMgY29uZmlybXMgdGhhdCB0aGUgY29yZSBzdGFydGluZyBwb2ludCBpcyBhbHNvIHRoZSBlbnRyeSBwb2ludCBmb3IgQml0Y29pbiBub3RpZmljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9jb3JlX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NjY1Nj1FWFBPUlRfU1lNQk9MKHJ0dzg5X2NoZWNrX3F1aXJrcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02NjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NjY1ODppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02NjU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD05MzYyPXZvaWQgcnR3ODlfY29tcGxldGVfY29uZChzdHJ1Y3QgcnR3ODlfd2FpdF9pbmZvICp3YWl0LCB1bnNpZ25lZCBpbnQgY29uZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTkzNjMtXHRcdFx0IGNvbnN0IHN0cnVjdCBydHc4OV9jb21wbGV0aW9uX2RhdGEgKmRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6OTM2NDppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtOTM2NS12b2lkIHJ0dzg5X2NvcmVfc3RvcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz01Nz1zdGF0aWMgaW50IHJ0dzg5X29wc19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NjM6XHRyZXR1cm4gcnR3ODlfY29yZV9zdGFydChydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmM9MjU3PXZvaWQgcnR3ODlfbGVhdmVfaXBzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmMtMjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wcy5jOjI2NzpcdHJldCA9IHJ0dzg5X2NvcmVfc3RhcnQocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcHMuYy0yNjgtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg4OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJ1ZyBGaXgqKgoKT2theSwgc28gYHJ0dzg5X2NvcmVfc3RhcnRgIGdldHMgdHJpZ2dlcmVkIHdoZW4gdGhlIGludGVyZmFjZSBjb21lcyBvbmxpbmUsIHRoYW5rcyB0byBgcnR3ODlfb3BzX3N0YXJ0YCBiZWluZyBhIG1hYzgwMjExIGNhbGxiYWNrLiBUaGUgY2hhbmdlIG9mIGNvbmNlcm4gaXMgaW4gYF9md19zZXRfZ3Bpb2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpczogaXMgdGhpcyB3b3J0aCB0aGUgZWZmb3J0IG9mIGEgZGVkaWNhdGVkIGZ1enppbmcgY2FtcGFpZ24/IEl0JiMzOTtzIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBzZXR1cCBwaGFzZS4gQ29uc2lkZXJpbmcgdGhlIGRyaXZlciAqaXMqIGFjY2Vzc2libGUgdGhyb3VnaCBVU0IgZHVtbXlfaGNkIGZ1enppbmcsIHRoZSB2dWxuZXJhYmlsaXR5IHNlZW1zIHBsYXVzaWJsZSwgYW5kIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGBfZndfc2V0X2dwaW9gIGFuZCBleGFtaW5lIHRoZSB1c2FnZSBvZiBgQlRDX0RCR19OVU1gLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlRDX0RCR19OVU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjYxPXN0YXRpYyB1OCBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHNpZ192OClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjc1LVx0XHRcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNzY6XHRcdHJldHVybiBCVENfREJHX05VTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNzc6XHR9IGVsc2UgaWYgKHNpZ192OCBcdTAwM2U9IEJUQ19EQkdfTlVNKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjc4LVx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI4MC1cdFx0XHQgICAgX19mdW5jX18sIHNpZ192OCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjgxOlx0XHRyZXR1cm4gQlRDX0RCR19OVU07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjgyLVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjg3PXN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF90b192ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwX3Y4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMDMtXHQvKiBiaXQgNC0zMTogc2hpZnQgcmlnaHQgYnkgMiBwb3NpdGlvbnMgKGJlY29tZSBiaXQgMi0yOSBpbiB2NykgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMDQ6XHRmb3IgKGJpdCA9IEJUQ19EQkdfQkNOX0VBUkxZOyBiaXQgXHUwMDNjIEJUQ19EQkdfTlVNOyBiaXQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzA1LVx0XHRpZiAoZW5fbWFwX3Y4IFx1MDAyNiBCSVQoYml0KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzEyPXN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF9mcm9tX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMyNC1cdC8qIGJpdCAyLTI5OiBzaGlmdCBsZWZ0IGJ5IDIgcG9zaXRpb25zIChiZWNvbWUgYml0IDQtMzEgaW4gdjgpICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzI1Olx0Zm9yIChiaXQgPSBCVENfREJHX0dOVF9CVDE7IGJpdCBcdTAwM2MgQlRDX0RCR19OVU0gLSAyOyBiaXQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzI2LVx0XHRpZiAoZW5fbWFwIFx1MDAyNiBCSVQoYml0KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzMzPXN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzM2Ny1cdFx0XHRcdFx0XHRcdCAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzM2ODpcdFx0aWYgKGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzY5LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xMTk4Mj1zdGF0aWMgaW50IF9zaG93X2dwaW9fZGJnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMjAxNjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJUQ19EQkdfTlVNOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMTctXHRcdGlmICghKGVuX21hcCBcdTAwMjYgQklUKGkpKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAyMC1cdFx0c2lnID0gdmVyLVx1MDAzZWZjeGdwaW9kYmcgXHUwMDNlPSA4ID8gaSA6IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldiwgaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMjAyMTpcdFx0aWYgKHNpZyBcdTAwM2U9IEJUQ19EQkdfTlVNKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMjItXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzExOT1lbnVtIGJ0Y193bF9ncGlvX2RlYnVnIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzE1ODpcdEJUQ19EQkdfTlVNLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE1OS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTMxNjE9c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2dwaW9fZGJnX3YxIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTY2LVx0X19sZTMyIHByZV9zdGF0ZTsgLyogdGhlIGRlYnVnIHNpZ25hbCBpcyAxIG9yIDAgICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMTY3Olx0dTggZ3Bpb19tYXBbQlRDX0RCR19OVU1dOyAvKnRoZSBkZWJ1ZyBzaWduYWxzIHRvIEdQSU8tUG9zaXRpb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNjgtfSBfX3BhY2tlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTcwPXN0cnVjdCBydHc4OV9idGNfZmJ0Y19ncGlvX2RiZ192NyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMxNzY6XHR1OCBncGlvX21hcFtCVENfREJHX05VTV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTc3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjg1NgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDQyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGaXhpbmcgdGhlIFJlYWx0ZWsgV2lyZWxlc3MgRHJpdmVyIE91dC1vZi1Cb3VuZHMgQWNjZXNzKioKCk9rYXksIHNvIHRoZSBpc3N1ZSBzZWVtcyB0byBiZSBpbiBgX2Z3X3NldF9ncGlvYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNgLiBJIGNhbiBzZWUgdGhlIGNvZGUgbm93LCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBwcmV2ZW50aW5nIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBFc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlc2lnbmVkIHRvIG1ha2UgdGhlIGRyaXZlciBtb3JlIHJvYnVzdC4gSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGR1bW15X2hjZCBmdXp6aW5nLCB3aGljaCBtZWFucyB0aGUgYXR0YWNrIHZlY3RvciBpcyBwcmV0dHkgd2VsbCBkZWZpbmVkLgoKVG8gcmVwcm9kdWNlIGFuZCB2ZXJpZnkgdGhpcyBmaXgsIEkgbmVlZCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbi4gTG9va2luZyBhdCBpdCwgSSYjMzk7bGwgbmVlZCBgUlRXODlfVVNCYCBhbmQgb25lIG9mIHRoZSBzdXBwb3J0ZWQgVVNCIGRyaXZlcnMgbGlrZSBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTJCVWAsIGBSVFc4OV84ODUyQ1VgLCBgUlRXODlfODkyMkFVYCwgb3IgYFJUVzg5Xzg4NTFCVWAuIExldCBtZSBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKT2theSwgbGV0JiMzOTtzIHNlZS4gYFJUVzg5Xzg4NTJBVWAgc2VsZWN0cyBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgLCBhbmQgYFJUVzg5Xzg4NTJBYC4gU28ganVzdCBlbmFibGluZyBgUlRXODlfODg1MkFVYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgdmVyaWZpY2F0aW9uLiBIb3dldmVyLCBJIHNob3VsZCBhbHNvIGVuYWJsZSB0aGUgb3RoZXIgVVNCIGRyaXZlcnMsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYFJUVzg5Xzg5MjJBVWAsIGFuZCBgUlRXODlfODg1MUJVYCwganVzdCB0byBiZSBjb21wbGV0ZS4gSHVoLCBpcyBgUlRXODlfODkyMkFVYCBtaXNzaW5nIGZyb20gdGhlIEtjb25maWcgc25pcHBldD8gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IEtjb25maWcgZmlsZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODlfODkyMkFVJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xNDk9Y29uZmlnIFJUVzg5Xzg5MjJBRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYzOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzg5MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFbmFibGluZyBXaXJlbGVzcyBEcml2ZXJzICZhbXA7IERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlc2Ugc3BlY2lmaWMgUmVhbHRlayB3aXJlbGVzcyBjaGlwc2V0czogYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYFJUVzg5Xzg5MjJBVWAsIGFuZCBgUlRXODlfODg1MUJVYC4gQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgc2hvdWxkIHZlcmlmeSBkZXBlbmRlbmNpZXMuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBgTUFDODAyMTFgIGFuZCBgVVNCYCBwb3BwaW5nIHVwIGFzIHJlcXVpcmVtZW50cy4gTm93LCBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCB1bmRlcnN0YW5kIHRoZSBpbnRlcm5hbCByZWxhdGlvbnNoaXBzLgoKSSBuZWVkIHRvIHF1aWNrbHkgemVybyBpbiBvbiB0aGUga2V5IHN5bWJvbHMsIHRoZSBoZWFydCBvZiB0aGVzZSBkcml2ZXJzLiBHb2luZyB0aHJvdWdoIHRoZSBzeW1ib2xzIGxpc3QsIEkgc2VlIHRoYXQgZnVuY3Rpb25zIGxpa2UgYF9md19zZXRfZ3Bpb2AsIGBfc2V0X2V4dF9pbnRlcmZhY2VgLCBhbmQgYF9zZXRfaW5pdF9pbmZvYCBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQgbGlrZWx5IG1lYW5zIHRoZXkmIzM5O3JlIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMsIG5vdCBkaXJlY3RseSBleHBvc2VkIHRvIG90aGVyIG1vZHVsZXMuIE9uIHRoZSBvdGhlciBoYW5kLCBgcnR3ODlfYnRjX250ZnlfaW5pdGAgYW5kIGBydHc4OV9jb3JlX3N0YXJ0YCBhcmUgbm9uLXN0YXRpYzsgdGhpcyBwb2ludHMgdG8gdGhlbSBwbGF5aW5nIGEgbW9yZSBzaWduaWZpY2FudCByb2xlIGluIHRoZSBvdmVyYWxsIGRyaXZlciBhcmNoaXRlY3R1cmUsIHBlcmhhcHMgYXMgaW5pdGlhbGl6YXRpb24gb3IgY29yZSBmdW5jdGlvbmFsaXR5LiBUaGUgZnVuY3Rpb24gYHJ0dzg5X29wc19zdGFydGAgaXMgc3RhdGljLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBkaWcgaW50byBgcnR3ODlfYnRjX250ZnlfaW5pdGAgYW5kIGBydHc4OV9jb3JlX3N0YXJ0YCB0byB1bmRlcnN0YW5kIHRoZSBmbG93LiBUaG9zZSBhcmUgdGhlIG9uZXMgSSBuZWVkIHRvIGV4YW1pbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2J0Y19udGZ5X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NjkwPXN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODcyMzp2b2lkIHJ0dzg5X2J0Y19udGZ5X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4Lmg9MzIwPXZvaWQgcnR3ODlfYnRjX250ZnlfcG93ZXJvZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oOjMyMTp2b2lkIHJ0dzg5X2J0Y19udGZ5X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oLTMyMi12b2lkIHJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfaWR4LCB1OCBiYW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz02NjU4PWludCBydHc4OV9jb3JlX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02Njk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NjY5NTpcdHJ0dzg5X2J0Y19udGZ5X2luaXQocnR3ZGV2LCBCVENfTU9ERV9OT1JNQUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjY5Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5NjgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkZvY3VzaW5nIEluIG9uIHRoZSBHUElPIEFzc2lnbm1lbnQqKgoKQWxyaWdodCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGZlZWxzIGxpa2UgYSBzdHJvbmcgbGVhZC4gVGhhdCYjMzk7cyBhIHNvbGlkIGZ1bmN0aW9uIHRvIHplcm8gaW4gb24uIE5vdywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIEdQSU8gbWFuaXB1bGF0aW9uLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgYWx0ZXJuYXRpdmUgZW50cnkgcG9pbnRzIHRvIHRoZSBgX2Z3X3NldF9ncGlvYCBmdW5jdGlvbi4gSSBhbSBmYW1pbGlhciB3aXRoIHRoZSBjb21tb24gY29kZS1iYXNlcyBhbmQgd291bGQgZXhwZWN0IGEgZmV3IHBvc3NpYmlsaXRpZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGFyZSByZWFjaGluZyBvdXQgYW5kIHRvdWNoaW5nIGl0IGFzIHdlbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19md19zZXRfZ3BpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzMzpzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMzNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzQyNT1zdGF0aWMgdm9pZCBfc2V0X2V4dF9pbnRlcmZhY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NDMtXHRcdGlmIChidDFfc3dfdHlwZSBcdTAwM2UgQlRDX1NXSVRDSF9JTlRFUk5BTCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0NDpcdFx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VOX01BUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NDUtXHRcdFx0XHQgICAgIEJJVChCVENfREJHX0dOVF9CVDEpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ3LVx0XHRcdHZhbCA9IChidDFfc3dfdHlwZSBcdTAwM2NcdTAwM2MgOCkgJiM0MzsgQlRDX0RCR19HTlRfQlQxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0ODpcdFx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX01VWF9NQVAsIHZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ5LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1My1cdGlmIChjeC1cdTAwM2VidF9leHQuaHdfY29leCBcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX1BUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NTQ6XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX0hQVEEsIGN4LVx1MDAzZWJ0X2V4dC5ocHRhX2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTctXHRpZiAoY3gtXHUwMDNlYnRfZXh0Lmh3X2NvZXggXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9NQlgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDU4Olx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9ITUJYLCBjeC1cdTAwM2VidF9leHQuaG1ieF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDYxLVx0aWYgKGN4LVx1MDAzZWJ0X2V4dC5od19jb2V4IFx1MDAyNiBCVENfRVhUU09DX0lOVEZfU1dJTykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ2MjpcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfU1dPVVQsIGN4LVx1MDAzZWJ0X2V4dC5zd291dF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ2MzpcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfU1dJTiwgY3gtXHUwMDNlYnRfZXh0LnN3aW5fY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NjQtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTM0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipUcmFjaW5nIHRoZSBEZXBlbmRlbmN5IENoYWluKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQsIHRoZSBrZXlzdG9uZSBvZiB0aGUgbG9naWMuIE15IGltbWVkaWF0ZSBodW5jaCBpcyB0aGF0IEkgbmVlZCB0byB6b29tIGluIG9uIGBydHc4OV9idGNfbnRmeV9pbml0YC4gVGhlIGxvZ2ljIGdvZXMgbGlrZSB0aGlzOiBgX3NldF9leHRfaW50ZXJmYWNlYCBpcyBvbmx5IGV2ZXIgY2FsbGVkIGJ5IGBfZndfc2V0X2dwaW9gLiBBbmQgYF9zZXRfZXh0X2ludGVyZmFjZWAgaXRzZWxmIGlzIG9ubHkgY2FsbGVkIGZyb20gYF9zZXRfaW5pdF9pbmZvYC4gQW5kIGBfc2V0X2luaXRfaW5mb2AgaXMgb25seSBjYWxsZWQgYnkgdGhhdCBgcnR3ODlfYnRjX250ZnlfaW5pdGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgbGlrZSBhIHByZXR0eSBjbGVhciBkZXBlbmRlbmN5IGNoYWluLCBsZWFkaW5nIG1lIHJpZ2h0IHRvIGBydHc4OV9idGNfbnRmeV9pbml0YCBhcyB0aGUgcHJpbWFyeSBmdW5jdGlvbiBvZiBpbnRlcmVzdCwgdGhlIG9uZSBkcml2aW5nIHRoaXMgaW5pdGlhbGl6YXRpb24uIEJ1dCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpc24mIzM5O3QgZ2V0dGluZyBjYWxsZWQgYXMgc29tZSBzb3J0IG9mIGhlbHBlciBmdW5jdGlvbiB3aXRoaW4gYW5vdGhlciBiaWdnZXIgc2NvcGUuIEkgc2hvdWxkIGNoZWNrIHdoZXJlIGBydHc4OV9idGNfbnRmeV9pbml0YCBpdHNlbGYgaXMgY2FsbGVkLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBPa2F5LCBzbyBub3cgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBmdW5jdGlvbiBpdHNlbGYgaXMgY2FsbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9idGNfbnRmeV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODY5MD1zdGF0aWMgdm9pZCBfc2V0X2luaXRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3MjM6dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3MjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oPTMyMD12b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaDozMjE6dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaC0zMjItdm9pZCBydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NjY1OD1pbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjY5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjY2OTU6XHRydHc4OV9idGNfbnRmeV9pbml0KHJ0d2RldiwgQlRDX01PREVfTk9STUFMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2OTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDI3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgSW5xdWlyeTogRm9jdXNpbmcgb24gcnR3ODlfY29yZV9zdGFydCBhbmQgYnRjX250ZnlfaW5pdCoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGUgaW5pdGlhbCBzdGFydHVwIHByb2Nlc3MsIHNwZWNpZmljYWxseSBgcnR3ODlfY29yZV9zdGFydGAuIFRoYXQgc2VlbXMgbGlrZSB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludC4gQW5kIGFsb25nc2lkZSB0aGF0LCBgcnR3ODlfYnRjX250ZnlfaW5pdGAgaXMgYWxzbyBhIGtleSBzeW1ib2wgZm9yIHRoZSBCbHVldG9vdGggY28tZXhpc3RlbmNlIG5vdGlmaWNhdGlvbiBpbml0aWFsaXphdGlvbi4gSSBzaG91bGQgdXNlIGJvdGggb2YgdGhvc2UgYXMgbXkgcHJpbWFyeSBmb2N1cyBwb2ludHMgZm9yIG5vdy4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLiBJJiMzOTttIHNlZWluZyBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTJCVWAsIGBSVFc4OV84ODUyQ1VgLCBgUlRXODlfODkyMkFVYCwgYW5kIGBSVFc4OV84ODUxQlVgLiBJIG5lZWQgdG8gdmVyaWZ5IGBSVFc4OV84OTIyQVVgIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLiBRdWljayBjaGVjay4uLiBZZXAsIGl0JiMzOTtzIHRoZXJlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYzYC4gR29vZC4gTm93LCBsZXQmIzM5O3Mgc2VlIHdoYXQgb3RoZXIgVVNCLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGV4aXN0IGFuZCBzZWUgaG93IHRoZXkgYXJlIG9yZ2FuaXplZCByZWxhdGl2ZSB0byB0aGVzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg5Xy4qVSQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTQ3PWNvbmZpZyBSVFc4OV84ODUxQkVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NTg6Y29uZmlnIFJUVzg5Xzg4NTFCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU5LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9Njk9Y29uZmlnIFJUVzg5Xzg4NTJBRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4MDpjb25maWcgUlRXODlfODg1MkFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODEtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz05MT1jb25maWcgUlRXODlfODg1MkJFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDM6Y29uZmlnIFJUVzg5Xzg4NTJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwNC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTEyNz1jb25maWcgUlRXODlfODg1MkNFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMzg6Y29uZmlnIFJUVzg5Xzg4NTJDVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzOS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xNDk9Y29uZmlnIFJUVzg5Xzg5MjJBRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYzOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjIzNAoJCQkJCQkJb3V0cHV0OiAyMjkKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneTogQWRkcmVzc2luZyB0aGUgT3V0LW9mLUJvdW5kcyBJc3N1ZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBJIG5lZWQgdG8gZ2V0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGluIHBsYWNlOiBgUlRXODlfODg1MUJVYCwgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYW5kIGBSVFc4OV84OTIyQVVgLiBUaGV5IGFsbCBuZWVkIHRvIGJlIGFkZGVkIHRvIEVuYWJsZUNvbmZpZ3MuIEFuZCBkb24mIzM5O3QgZm9yZ2V0IGBSVFc4OV9VU0JgIOKAkyBpdCYjMzk7cyBjcnVjaWFsIGhlcmUuIFRoaXMgaXMgYWxsIGFib3V0IGEgZml4IGZvciB0aGF0IG5hc3R5IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGlzc3VlIEkgZm91bmQgaW4gYF9md19zZXRfZ3Bpb2AuIE5vdywgYmVjYXVzZSB0aGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiwgdGhlIHBsYW4mIzM5O3MgY2xlYXI6IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIEdvdHRhIGdldCB0aG9zZSBmdXp6ZXJzIHJ1bm5pbmcgdG8gcmVhbGx5IGRpZyBpbnRvIHRoaXMgdnVsbmVyYWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfYnRjX250ZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGBfZndfc2V0X2dwaW9gIHdpdGhpbiB0aGUgUmVhbHRlayBydHc4OSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBmdXp6aW5nIChkdW1teV9oY2QpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKGBydHc4OV9idGNfbnRmeV9pbml0YCAtXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVx1MDAzZSBgX3NldF9leHRfaW50ZXJmYWNlYCAtXHUwMDNlIGBfZndfc2V0X2dwaW9gKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRXODlfODg1MUJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQlUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkNVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg5MjJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9idGNfbnRmeV9pbml0JiMzNDssCiAgICAmIzM0O3J0dzg5X2NvcmVfc3RhcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gYF9md19zZXRfZ3Bpb2Agd2l0aGluIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGZ1enppbmcgKGR1bW15X2hjZCkuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiAoYHJ0dzg5X2J0Y19udGZ5X2luaXRgIC1cdTAwM2UgYF9zZXRfaW5pdF9pbmZvYCAtXHUwMDNlIGBfc2V0X2V4dF9pbnRlcmZhY2VgIC1cdTAwM2UgYF9md19zZXRfZ3Bpb2ApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBfZndfc2V0X2dwaW9gIHdoZXJlIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCB3YXMgaW5jb3JyZWN0bHkgY2hlY2tlZCBhZ2FpbnN0IGAweGZmYCBpbnN0ZWFkIG9mIGBcdTAwM2U9IEJUQ19EQkdfTlVNYC4gYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCByZXR1cm5zIGBCVENfREJHX05VTWAgKHdoaWNoIGlzIDMyKSBvbiBlcnJvci4gQmVjYXVzZSBvZiB0aGUgaW5jb3JyZWN0IGNoZWNrLCB0aGUgZXJyb3IgdmFsdWUgd2FzIG5vdCBjYXVnaHQgYW5kIHdhcyBzZW50IHRvIHRoZSBmaXJtd2FyZSBhcyBhIHZhbGlkIHNpZ25hbCBJRC4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQWxsIGZpZWxkcyBvZiB0aGUgYGdwaW8tXHUwMDNlbXV4LmRhdGFgIHN0cnVjdHVyZSBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgY29waWVkIHRvIHRoZSBidWZmZXIgYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGVyZWZvcmUsIHRoaXMgYnVnIGNhbm5vdCBiZSBkZXRlY3RlZCBieSBLTVNBTiwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZmIyODlhNjNlMThlNWFlMmFhMjQxOWU5YzA2YjVkYjk0YzFjZDJlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMjYgMDM6NDY6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jCmluZGV4IDVhOWRjNGQ4YTAwYmEuLjEyYmQ1NTM5ZThjNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jCkBAIC0zMzY1LDcgJiM0MzszMzY1LDcgQEAgc3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbCkKIAkJZ3Bpby0mZ3Q7bXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyOwogCQlncGlvLSZndDttdXguZGF0YS5zaWcgPSBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsCiAJCQkJCQkJICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7Ci0JCWlmIChncGlvLSZndDttdXguZGF0YS5zaWcgPT0gMHhmZikKJiM0MzsJCWlmIChncGlvLSZndDttdXguZGF0YS5zaWcgJmd0Oz0gQlRDX0RCR19OVU0pCiAJCQlyZXR1cm47CiAJCWdwaW8tJmd0O211eC5kYXRhLmdwaW8gPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7CiAJCWwyX2gyYyA9IGdwaW8tJmd0O211eC5mbXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlYWx0ZWsgV2ktRmkgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgY29leC5jYCBwYXRjaC4gSSBzZWUgYSBjb25kaXRpb24gY2hhbmdlIHJpZ2h0IGF3YXk6IGEgY29tcGFyaXNvbiB0aGF0JiMzOTtzIGdvbmUgZnJvbSBjaGVja2luZyBmb3IgYW4gZXhhY3QgdmFsdWUgb2YgYDB4ZmZgIHRvIGEgZ3JlYXRlci10aGFuLW9yLWVxdWFsLXRvIGNoZWNrIGFnYWluc3QgYEJUQ19EQkdfTlVNYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzICpoYXMqIHRvIGJlIHNvbWUga2luZCBvZiBib3VuZHMgY2hlY2sgb3IgdmFsaWRhdGlvbiBsb2dpYy4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIGxpa2VseSB0cnlpbmcgdG8gZmlsdGVyIG91dCBhIHNwZWNpZmljLCBsaWtlbHkgaW52YWxpZCwgc2lnbmFsIHZhbHVlLCBhbmQgbm93IGl0JiMzOTtzIGdlbmVyYWxpemluZyB0aGF0IHRvIGEgcmFuZ2UuIEl0IG1ha2VzIG1lIHdvbmRlciB3aGF0IHRoZSBwdXJwb3NlIG9mIHRoZSBvcmlnaW5hbCBzcGVjaWZpYyBjaGVjayB3YXMuCgpUbyB1bmRlcnN0YW5kIHRoZSBjaGFuZ2UmIzM5O3MgaW1wbGljYXRpb25zIGZ1bGx5LCBJIG5lZWQgdG8gc2VlIGhvdyBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnYCBpcyBiZWluZyB1c2VkIGFuZCB3aGF0IHRoZSBjb250ZXh0IG9mIHRoYXQgYDB4ZmZgIHZhbHVlIHdhcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBCVENfREJHX05VTWAgcmVwcmVzZW50cywgYW5kIHdoYXQgdGhlIHJhbmdlIGNvbXBhcmlzb24gaXMgaW50ZW5kZWQgdG8gZG8uCgpTbywgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSwgZm9jdXNpbmcgb24gdGhlIGZ1bmN0aW9ucyBgX2Z3X3NldF9ncGlvYCBhbmQgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYC4gVGhvc2UgYXJlIG15IG5leHQgc3RlcHMuIFRoZXkgc2hvdWxkIHJldmVhbCB0aGUgZGF0YSBmbG93IGFuZCB0aGUgbWVhbmluZyBvZiB0aG9zZSBHUElPIHNpZ25hbHMuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBpZiB0aGUgY2hhbmdlIGlzIGEgYnVnIGZpeCwgYW4gb3B0aW1pemF0aW9uLCBvciwgcG90ZW50aWFsbHksIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvZXhpc3RlbmNlIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfZndfc2V0X2dwaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzEyPXN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF9mcm9tX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMzM6c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM0MjU9c3RhdGljIHZvaWQgX3NldF9leHRfaW50ZXJmYWNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQzLVx0XHRpZiAoYnQxX3N3X3R5cGUgXHUwMDNlIEJUQ19TV0lUQ0hfSU5URVJOQUwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NDQ6XHRcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FTl9NQVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ1LVx0XHRcdFx0ICAgICBCSVQoQlRDX0RCR19HTlRfQlQxKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0Ny1cdFx0XHR2YWwgPSAoYnQxX3N3X3R5cGUgXHUwMDNjXHUwMDNjIDgpICYjNDM7IEJUQ19EQkdfR05UX0JUMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NDg6XHRcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19NVVhfTUFQLCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0OS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTMtXHRpZiAoY3gtXHUwMDNlYnRfZXh0Lmh3X2NvZXggXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9QVEEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDU0Olx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9IUFRBLCBjeC1cdTAwM2VidF9leHQuaHB0YV9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU3LVx0aWYgKGN4LVx1MDAzZWJ0X2V4dC5od19jb2V4IFx1MDAyNiBCVENfRVhUU09DX0lOVEZfTUJYKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ1ODpcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfSE1CWCwgY3gtXHUwMDNlYnRfZXh0LmhtYnhfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ2MS1cdGlmIChjeC1cdTAwM2VidF9leHQuaHdfY29leCBcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX1NXSU8pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NjI6XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX1NXT1VULCBjeC1cdTAwM2VidF9leHQuc3dvdXRfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NjM6XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX1NXSU4sIGN4LVx1MDAzZWJ0X2V4dC5zd2luX2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDY0LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDkzCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBfZndfc2V0X2dwaW9gKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBtaW5kIGltbWVkaWF0ZWx5IHdlbnQgdG8gdGhhdCBgX2Z3X3NldF9ncGlvYCBmdW5jdGlvbi4gSXQmIzM5O3MgdXN1YWxseSBhIGdvb2QgYmV0LCBnaXZlbiB0aGUgbGluZSBudW1iZXIgcmVmZXJlbmNlICgzMzY1KSwgdGhhdCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggc29tZSBsb3ctbGV2ZWwgaGFyZHdhcmUgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgdGhhdCBpdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBmb3IgY29uZmlndXJpbmcgb3IgY29udHJvbGxpbmcgYSBHUElPIChHZW5lcmFsIFB1cnBvc2UgSW5wdXQvT3V0cHV0KSBwaW4g4oCTIGl0JiMzOTtzIHByYWN0aWNhbGx5IGluIHRoZSBuYW1lLCBhZnRlciBhbGwhIEtub3dpbmcgdGhhdCBHUElPcyBhcmUgZnVuZGFtZW50YWwgZm9yIGludGVyZmFjaW5nIHdpdGggZXh0ZXJuYWwgY29tcG9uZW50cywgc2Vuc29ycywgb3Igb3RoZXIgaGFyZHdhcmUsIEkgZXhwZWN0IHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjcml0aWNhbCB0byB0aGUgb3ZlcmFsbCBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IgYW5kIGNvdWxkIGJlIGNlbnRyYWwgdG8gbXkgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UsIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBjb2RlIGNvbnRleHQsIGFuZCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCBtaWdodCBtYW5pcHVsYXRlLiBGcm9tIHRoZSBsaW5lIG51bWJlciwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBpcyBhIGNvcmUgZnVuY3Rpb24sIHByb2JhYmx5IHVzZWQgbWFueSBwbGFjZXMsIG1ha2luZyBpdCBhbiBpZGVhbCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwIGRpdmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzMzMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzMzOlx0c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbjMzMzQ6XHR7XG4zMzM1Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuMzMzNjpcdFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvICpncGlvID0gXHUwMDI2YnRjLVx1MDAzZWdwaW87XG4zMzM3Olx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbjMzMzg6XHRcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiBsMl9oMmM7XG4zMzM5Olx0XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fNGIgbDRfaDJjO1xuMzM0MDpcdFx0dTggZ3Bpb192ZXIgPSB2ZXItXHUwMDNlZmN4Z3Bpb2RiZztcbjMzNDE6XHRcdHU4IGJ1ZltzaXplb2YobDRfaDJjKV07XG4zMzQyOlx0XHR1OCBsZW47XG4zMzQzOlx0XG4zMzQ0Olx0XHRpZiAoZ3Bpb192ZXIgXHUwMDNjIDggXHUwMDI2XHUwMDI2IHR5cGUgXHUwMDNlIENYREdQSU9fTVVYX01BUClcbjMzNDU6XHRcdFx0cmV0dXJuO1xuMzM0NjpcdFxuMzM0NzpcdFx0aWYgKHR5cGUgXHUwMDNlPSBDWERHUElPX01BWClcbjMzNDg6XHRcdFx0cmV0dXJuO1xuMzM0OTpcdFxuMzM1MDpcdFx0c3dpdGNoICh0eXBlKSB7XG4zMzUxOlx0XHRjYXNlIENYREdQSU9fRU5fTUFQOiAvKiBHUElPIGRlYnVnIHNpZ25hbCBlbi1tYXAgMH4zMSAqL1xuMzM1MjpcdFx0XHR2YWwgPSBfY29udmVydF9ncGlvX2VubWFwX3RvX3ZlcihydHdkZXYsIHZhbCk7XG4zMzUzOlx0XHRcdGdwaW8tXHUwMDNlZW5fbWFwLmRhdGEudHlwZSA9IENYREdQSU9fRU5fTUFQO1xuMzM1NDpcdFx0XHRncGlvLVx1MDAzZWVuX21hcC5kYXRhLmZ2ZXIgPSBncGlvX3ZlcjtcbjMzNTU6XHRcdFx0Z3Bpby1cdTAwM2Vlbl9tYXAuZGF0YS5kbGVuID0gQ1hER1BJT19TRVRfTDQ7XG4zMzU2Olx0XHRcdGdwaW8tXHUwMDNlZW5fbWFwLmRhdGEuZW5fbWFwID0gdmFsO1xuMzM1NzpcdFx0XHRsNF9oMmMgPSBncGlvLVx1MDAzZWVuX21hcC5mbXQ7XG4zMzU4Olx0XHRcdHB1dF91bmFsaWduZWRfbGUzMih2YWwsICh1MzIgKilsNF9oMmMuZGF0YSk7XG4zMzU5Olx0XHRcdG1lbWNweShidWYsIFx1MDAyNmw0X2gyYywgc2l6ZW9mKGw0X2gyYykpO1xuMzM2MDpcdFx0XHRsZW4gPSBzaXplb2YobDRfaDJjKTtcbjMzNjE6XHRcdFx0YnJlYWs7XG4zMzYyOlx0XHRjYXNlIENYREdQSU9fTVVYX01BUDogLyogR1BJTyBkYmc6IFNpZ25hbCB0byBHUElPIE11eCAqL1xuMzM2MzpcdFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLnR5cGUgPSBDWERHUElPX01VWF9NQVA7XG4zMzY0Olx0XHRcdGdwaW8tXHUwMDNlbXV4LmRhdGEuZnZlciA9IGdwaW9fdmVyO1xuMzM2NTpcdFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcbjMzNjY6XHRcdFx0Z3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPSBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsXG4zMzY3Olx0XHRcdFx0XHRcdFx0XHQgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpKTtcbjMzNjg6XHRcdFx0aWYgKGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG4zMzY5Olx0XHRcdFx0cmV0dXJuO1xuMzM3MDpcdFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLmdwaW8gPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XG4zMzcxOlx0XHRcdGwyX2gyYyA9IGdwaW8tXHUwMDNlbXV4LmZtdDtcbjMzNzI6XHRcdFx0bWVtY3B5KGJ1ZiwgXHUwMDI2bDJfaDJjLCBzaXplb2YobDJfaDJjKSk7XG4zMzczOlx0XHRcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xuMzM3NDpcdFx0XHRicmVhaztcbjMzNzU6XHRcdGNhc2UgQ1hER1BJT19FWFRfSFBUQTogLyogR1BJTyBjb25maWcgZm9yIEV4dCBIVy1QVEEgKi9cbjMzNzY6XHRcdFx0Z3Bpby1cdTAwM2VleHRfcHRhLmRhdGEudHlwZSA9IENYREdQSU9fRVhUX0hQVEE7XG4zMzc3Olx0XHRcdGdwaW8tXHUwMDNlZXh0X3B0YS5kYXRhLmZ2ZXIgPSBncGlvX3ZlcjtcbjMzNzg6XHRcdFx0Z3Bpby1cdTAwM2VleHRfcHRhLmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xuMzM3OTpcdFx0XHRncGlvLVx1MDAzZWV4dF9wdGEuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XG4zMzgwOlx0XHRcdGdwaW8tXHUwMDNlZXh0X3B0YS5kYXRhLm1hcF9oaWdoID0gRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCB2YWwpO1xuMzM4MTpcdFx0XHRsMl9oMmMgPSBncGlvLVx1MDAzZWV4dF9wdGEuZm10O1xuMzM4MjpcdFx0XHRtZW1jcHkoYnVmLCBcdTAwMjZsMl9oMmMsIHNpemVvZihsMl9oMmMpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkyMQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgY2hhbmdlIGFuZCBpbW1lZGlhdGVseSByZWNvZ25pemUgaXQgYXMgYSBib3VuZHMgY2hlY2suIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwcmV0dHkgc2xvcHB5LCBvbmx5IGNoZWNraW5nIGZvciBhIHNwZWNpZmljIHZhbHVlICgweGZmKSBpbiBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnYC4gTXkgZmllbGQgZXhwZXJpZW5jZSBpcyB0aGF0IHRoaXMgaXMgdXN1YWxseSBhIHN5bXB0b20gb2YgYSBsYXJnZXIgcHJvYmxlbS4gVGhlIGNoYW5nZSBpcyByZXBsYWNpbmcgaXQgd2l0aCBhIG1vcmUgcm9idXN0IGNoZWNrOiBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnICZndDs9IEJUQ19EQkdfTlVNYC4gVGhhdCBgQlRDX0RCR19OVU1gIGNvbnN0YW50IGlzIHRoZSBrZXkgaGVyZS4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBkZWZpbmluZyBhbiB1cHBlciBib3VuZCBvbiB3aGF0JiMzOTtzIGNvbnNpZGVyZWQgYSB2YWxpZCBzaWduYXR1cmUgdmFsdWUuIEdvb2QsIHRoYXQmIzM5O3Mgd2hhdCBJIHdhbnQgdG8gc2VlIOKAkyBwcm9wZXIgdmFsaWRhdGlvbi4KCk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMuIFdoYXQgZGlkIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJuPyBJIHdvdWxkIHN1c3BlY3QgYSByYW5nZSB0byBlbnN1cmUgc2FmZXR5LiBUaGlzIGlzIGFuIGltcHJvdmVtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfZ2V0X2dwaW9zaWdfZm9yX3ZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyMTA9c3RhdGljIHZvaWQgX2Z3X3NldF9wb2xpY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNjE6c3RhdGljIHU4IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggc2lnX3Y4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI2Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMzMz1zdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjUtXHRcdGdwaW8tXHUwMDNlbXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzM2NjpcdFx0Z3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPSBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzY3LVx0XHRcdFx0XHRcdFx0ICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTE5ODI9c3RhdGljIGludCBfc2hvd19ncGlvX2RiZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIwMjA6XHRcdHNpZyA9IHZlci1cdTAwM2VmY3hncGlvZGJnIFx1MDAzZT0gOCA/IGkgOiBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMjEtXHRcdGlmIChzaWcgXHUwMDNlPSBCVENfREJHX05VTSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5MAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXBseSBmYW1pbGlhciB3aXRoIGNvZGUgYW5kIEdQSU8gc2lnbmFsczoKCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbjogYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgZnVuY3Rpb246IGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAuIFRoZSBuYW1lIGl0c2VsZiBpcyBmYWlybHkgZGVzY3JpcHRpdmUsIHN1Z2dlc3RpbmcgaXQmIzM5O3MgZGVzaWduZWQgdG8gcmV0cmlldmUgYSBHUElPIChHZW5lcmFsIFB1cnBvc2UgSW5wdXQvT3V0cHV0KSBzaWduYWwgc3BlY2lmaWMgdG8gYSAmIzM0O3ZlciYjMzQ7IC0gcHJlc3VtYWJseSBhIHZlcnNpb24sIHZlcmlmaWNhdGlvbiwgb3IgdmFsaWRhdGlvbiBjb250ZXh0LiBHaXZlbiBteSBleHBlcmllbmNlLCBJJiMzOTtkIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGhvdyBHUElPcyBhcmUgdXRpbGl6ZWQgaW4gdGhpcyBzeXN0ZW0g4oCTIGlzIGl0IGZvciBoYXJkd2FyZSBoYW5kc2hha2VzLCBzaWduYWxpbmcgc3RhdGUgY2hhbmdlcywgb3IgcGVyaGFwcyBldmVuIHRyaWdnZXJpbmcgc3BlY2lmaWMgdGVzdCByb3V0aW5lcyBiYXNlZCBvbiBhIGRldGVjdGVkIHZlcnNpb24/IEkga25vdyBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IEdQSU9zIGFyZSB1c2VkIGlzIGNydWNpYWwgd2hlbiBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIGVtYmVkZGVkIHN5c3RlbXMuIFRoZSB1c2Ugb2YgJiMzNDt1bmRlcnNjb3JlJiMzNDsgYXMgYSBsZWFkaW5nIGNoYXJhY3RlciBhbHNvIHN1Z2dlc3RzIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZSwgbm90IGRpcmVjdCBleHRlcm5hbCBhY2Nlc3MuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCBvcGVyYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyNjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzI2MTpcdHN0YXRpYyB1OCBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHNpZ192OClcbjMyNjI6XHR7XG4zMjYzOlx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVx1MDAzZWJ0Yy52ZXI7XG4zMjY0Olx0XG4zMjY1Olx0XHQvKiB2ODogZ3Bpb192ZXIgXHUwMDNlPSA4LCBkaXJlY3RseSB1c2Ugdjggc2lnbmFsIElEICovXG4zMjY2Olx0XHRpZiAodmVyLVx1MDAzZWZjeGdwaW9kYmcgXHUwMDNlPSA4KVxuMzI2NzpcdFx0XHRyZXR1cm4gc2lnX3Y4O1xuMzI2ODpcdFxuMzI2OTpcdFx0Lyogdjc6IGdwaW9fdmVyIFx1MDAzYyA4LCBjb252ZXJ0IHY4IHNpZ25hbCBJRCB0byB2NyBzaWduYWwgSUQgKi9cbjMyNzA6XHRcdGlmIChzaWdfdjggXHUwMDNjPSBCVENfREJHX0dOVF9XTCkge1xuMzI3MTpcdFx0XHRyZXR1cm4gc2lnX3Y4O1xuMzI3MjpcdFx0fSBlbHNlIGlmIChzaWdfdjggXHUwMDNjPSBCVENfREJHX0dOVF9XTDEpIHtcbjMyNzM6XHRcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuMzI3NDpcdFx0XHRcdCAgICBcJiMzNDtbQlRDXSwgJXMoKTogc2lnICVkIG5vdCBzdXBwb3J0ZWQgaW4gdjdcXG5cJiMzNDssXG4zMjc1Olx0XHRcdFx0ICAgIF9fZnVuY19fLCBzaWdfdjgpO1xuMzI3NjpcdFx0XHRyZXR1cm4gQlRDX0RCR19OVU07XG4zMjc3Olx0XHR9IGVsc2UgaWYgKHNpZ192OCBcdTAwM2U9IEJUQ19EQkdfTlVNKSB7XG4zMjc4Olx0XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbjMyNzk6XHRcdFx0XHQgICAgXCYjMzQ7W0JUQ10sICVzKCk6IHNpZyAlZCBub3QgYXZhaWxhYmxlXFxuXCYjMzQ7LFxuMzI4MDpcdFx0XHRcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcbjMyODE6XHRcdFx0cmV0dXJuIEJUQ19EQkdfTlVNO1xuMzI4MjpcdFx0fSBlbHNlIHtcbjMyODM6XHRcdFx0cmV0dXJuIHNpZ192OCAtIDI7XG4zMjg0Olx0XHR9XG4zMjg1Olx0fVxuMzI4NjpcdFxuMzI4NzpcdHN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF90b192ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwX3Y4KVxuMzI4ODpcdHtcbjMyODk6XHRcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBydHdkZXYtXHUwMDNlYnRjLnZlcjtcbjMyOTA6XHRcdHUzMiBlbl9tYXBfdjcgPSAwO1xuMzI5MTpcdFx0dTMyIGJpdDtcbjMyOTI6XHRcbjMyOTM6XHRcdC8qIHY4OiBncGlvX3ZlciBcdTAwM2U9IDgsIGRpcmVjdGx5IHVzZSB2OCBlbl9tYXAgKi9cbjMyOTQ6XHRcdGlmICh2ZXItXHUwMDNlZmN4Z3Bpb2RiZyBcdTAwM2U9IDgpXG4zMjk1Olx0XHRcdHJldHVybiBlbl9tYXBfdjg7XG4zMjk2Olx0XG4zMjk3Olx0XHQvKiB2NzogZ3Bpb192ZXIgXHUwMDNjIDgsIGNvbnZlcnQgdjggZW5fbWFwIGJpdG1hcCB0byB2NyBlbl9tYXAgYml0bWFwICovXG4zMjk4Olx0XHQvKiBiaXQgMC0xOiBHTlRfQlQsIEdOVF9XTCAtIHNhbWUgcG9zaXRpb24gaW4gYm90aCB2ZXJzaW9ucyAqL1xuMzI5OTpcdFx0ZW5fbWFwX3Y3IHw9IGVuX21hcF92OCBcdTAwMjYgR0VOTUFTSygxLCAwKTtcbjMzMDA6XHRcbjMzMDE6XHRcdC8qIGJpdCAyLTM6IEdOVF9CVDEsIEdOVF9XTDEgLSBub3Qgc3VwcG9ydGVkIGluIHY3LCBza2lwIHRoZXNlIGJpdHMgKi9cbjMzMDI6XHRcbjMzMDM6XHRcdC8qIGJpdCA0LTMxOiBzaGlmdCByaWdodCBieSAyIHBvc2l0aW9ucyAoYmVjb21lIGJpdCAyLTI5IGluIHY3KSAqL1xuMzMwNDpcdFx0Zm9yIChiaXQgPSBCVENfREJHX0JDTl9FQVJMWTsgYml0IFx1MDAzYyBCVENfREJHX05VTTsgYml0JiM0MzsmIzQzOykge1xuMzMwNTpcdFx0XHRpZiAoZW5fbWFwX3Y4IFx1MDAyNiBCSVQoYml0KSlcbjMzMDY6XHRcdFx0XHRlbl9tYXBfdjcgfD0gQklUKGJpdCAtIDIpO1xuMzMwNzpcdFx0fVxuMzMwODpcdFxuMzMwOTpcdFx0cmV0dXJuIGVuX21hcF92NztcbjMzMTA6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMjYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEdQSU8gU2lnbmFsIEVycm9yKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIHJldHVybmluZyBgQlRDX0RCR19OVU1gIHdoZW4gaXQgZW5jb3VudGVycyBhbiBlcnJvci4gVGhhdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8gbm90aWNlLiBOb3csIHRoZSBjb2RlJiMzOTtzIHByZXZpb3VzIGVycm9yIGNoZWNrIHdhcyBsb29raW5nIGZvciBhIHNpZ25hbCB2YWx1ZSBvZiBgMHhmZmAuIEl0IHVzZWQgdG8gYmU6CgpgYGBjCgkJaWYgKGdwaW8tJmd0O211eC5kYXRhLnNpZyA9PSAweGZmKQoJCQlyZXR1cm47CmBgYAoKQnV0IG5vdywgd2l0aCB0aGlzIG5ldyBhcHByb2FjaCwgYSByZXR1cm4gdmFsdWUgb2YgYEJUQ19EQkdfTlVNYCBvbiBlcnJvciBzdWdnZXN0cyB0aGF0IHRoZSBvbGQgY2hlY2sgd2lsbCBubyBsb25nZXIgd29yayBjb3JyZWN0bHkuIFRoaXMgZnVuY3Rpb24gaXMgb2J2aW91c2x5IHRyeWluZyB0byBzaWduYWwgc29tZXRoaW5nIGRpZmZlcmVudCB0aGFuIGJlZm9yZSwgb3IgaXQgY291bGQgYmUgcmV0dXJuaW5nIGEgdmFsdWUgY29tcGxldGVseSBkaWZmZXJlbnQgZnJvbSBgMHhmZmAuIExldCBtZSBjaGVjayB3aGF0IGV4YWN0bHkgYEJUQ19EQkdfTlVNYCBpcyBkZWZpbmVkIGFzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgbmV3IGVycm9yIGNvZGUgbWVhbnMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBzeXN0ZW0uIElzIGl0IGFuIGV4aXN0aW5nIGVycm9yIGNvZGUsIGEgbmV3IG9uZSB0aGF0IG5lZWRzIGRvY3VtZW50YXRpb24sIG9yIGRvZXMgdGhpcyByZXF1aXJlIGRlZXBlciB0cm91Ymxlc2hvb3Rpbmc/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JUQ19EQkdfTlVNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI2MT1zdGF0aWMgdTggX2dldF9ncGlvc2lnX2Zvcl92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBzaWdfdjgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI3NS1cdFx0XHQgICAgX19mdW5jX18sIHNpZ192OCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjc2Olx0XHRyZXR1cm4gQlRDX0RCR19OVU07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjc3Olx0fSBlbHNlIGlmIChzaWdfdjggXHUwMDNlPSBCVENfREJHX05VTSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI3OC1cdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyODAtXHRcdFx0ICAgIF9fZnVuY19fLCBzaWdfdjgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI4MTpcdFx0cmV0dXJuIEJUQ19EQkdfTlVNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI4Mi1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI4Nz1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfdG9fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcF92OClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzAzLVx0LyogYml0IDQtMzE6IHNoaWZ0IHJpZ2h0IGJ5IDIgcG9zaXRpb25zIChiZWNvbWUgYml0IDItMjkgaW4gdjcpICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzA0Olx0Zm9yIChiaXQgPSBCVENfREJHX0JDTl9FQVJMWTsgYml0IFx1MDAzYyBCVENfREJHX05VTTsgYml0JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMwNS1cdFx0aWYgKGVuX21hcF92OCBcdTAwMjYgQklUKGJpdCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMxMj1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfZnJvbV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMjQtXHQvKiBiaXQgMi0yOTogc2hpZnQgbGVmdCBieSAyIHBvc2l0aW9ucyAoYmVjb21lIGJpdCA0LTMxIGluIHY4KSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMyNTpcdGZvciAoYml0ID0gQlRDX0RCR19HTlRfQlQxOyBiaXQgXHUwMDNjIEJUQ19EQkdfTlVNIC0gMjsgYml0JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMyNi1cdFx0aWYgKGVuX21hcCBcdTAwMjYgQklUKGJpdCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMzMz1zdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjctXHRcdFx0XHRcdFx0XHQgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzNjg6XHRcdGlmIChncGlvLVx1MDAzZW11eC5kYXRhLnNpZyBcdTAwM2U9IEJUQ19EQkdfTlVNKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzM2OS1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTE5ODI9c3RhdGljIGludCBfc2hvd19ncGlvX2RiZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIwMTY6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCVENfREJHX05VTTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDE3LVx0XHRpZiAoIShlbl9tYXAgXHUwMDI2IEJJVChpKSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMjAtXHRcdHNpZyA9IHZlci1cdTAwM2VmY3hncGlvZGJnIFx1MDAzZT0gOCA/IGkgOiBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIwMjE6XHRcdGlmIChzaWcgXHUwMDNlPSBCVENfREJHX05VTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDIyLVx0XHRcdGNvbnRpbnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjExCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEZWZpbml0aW9uIG9mIGBCVENfREJHX05VTWAqKgoKT2theSwgc28gSSBzZWUgYEJUQ19EQkdfTlVNYC4uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0JiMzOTtzIHJlZmVycmluZyB0by4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBhIG1hY3JvIG9yIGEgY29uc3RhbnQgZGVmaW5lZCBzb21ld2hlcmUgd2l0aGluIHRoZSBjb2RlYmFzZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQgdG8gZGVidWdnaW5nLCBnaXZlbiB0aGUgJiMzNDtEQkcmIzM0OyBpbiB0aGUgbmFtZS4gSXQgY291bGQgYmUgYSBzcGVjaWZpYyBkZWJ1ZyBmbGFnLCBhIG51bWVyaWNhbCBpZGVudGlmaWVyIGZvciBhIHBhcnRpY3VsYXIgZGVidWcgbWVzc2FnZSwgb3IgcG9zc2libHkgYSBjb3VudGVyLiBJdCYjMzk7cyBnb2luZyB0byBkZXBlbmQgb24gdGhlIHN5c3RlbS4KCkkmIzM5O2Qgc3RhcnQgYnkgdXNpbmcgbXkgc3RhbmRhcmQgdG9vbHMgLSBgZ3JlcGAsIGBmaW5kYCwgb3IgbXkgSURFJiMzOTtzIHNlYXJjaCBmdW5jdGlvbiAtIHRvIGxvY2F0ZSBpdHMgZGVmaW5pdGlvbi4gSSYjMzk7ZCBsb29rIGZvciBgI2RlZmluZSBCVENfREJHX05VTWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBJJiMzOTtkIGV4cGFuZCBteSBzZWFyY2ggdGVybXMgdG8gY2FwdHVyZSBhbnkgaW5zdGFuY2VzIGluIHNvdXJjZSBmaWxlcywgaW5jbHVkZSBmaWxlcywgYnVpbGQgc2NyaXB0cywgb3IgZG9jdW1lbnRhdGlvbi4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLgoKT25jZSBJIGZpbmQgdGhlIGRlZmluaXRpb24sIHRoZSBjb250ZXh0IHdpbGwgZ2l2ZSBtZSB0aGUgbW9zdCBjcml0aWNhbCBpbmZvcm1hdGlvbiwgZnJvbSB0aGUgc3Vycm91bmRpbmcgY29tbWVudHMsIHZhcmlhYmxlIHVzYWdlLCBldGMuIEkmIzM5O2QgdGhlbiBxdWlja2x5IGFzc2VzcyB3aGVyZSBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgY29kZS4gQXJlIHRoZXJlIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgdXNpbmcgaXQ/IEZ1bmN0aW9uIGNhbGxzIHRoYXQgcmVseSBvbiBpdD8gSWYgaXQmIzM5O3MgdXNlZCBpbiBsb2dnaW5nLCBJJiMzOTtkIHdhbnQgdG8gZGV0ZXJtaW5lIHRoZSBpbXBvcnRhbmNlIG9mIHRoZSBtZXNzYWdlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBudW1iZXIsIGFuZCBpZiB0aGVyZSBpcyBhIG1hcHBpbmcgZmlsZS4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBJJiMzOTttIGxvb2tpbmcgZm9yIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgc3lzdGVtJiMzOTtzIGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgZHVyaW5nIGRlYnVnZ2luZyBhbmQgaWYgaXQgZW5hYmxlcyBvciBkaXNhYmxlcyBjZXJ0YWluIGNvZGUgYmxvY2tzLiBGaW5hbGx5LCBJJiMzOTtkIHdhbnQgdG8gYmUgc3VyZSB0byBkb2N1bWVudCBpdC4gSSBtaWdodCBuZWVkIHRoaXMga25vd2xlZGdlIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCVENfREJHX05VTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyNjE9c3RhdGljIHU4IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggc2lnX3Y4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyNzUtXHRcdFx0ICAgIF9fZnVuY19fLCBzaWdfdjgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI3NjpcdFx0cmV0dXJuIEJUQ19EQkdfTlVNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI3NzpcdH0gZWxzZSBpZiAoc2lnX3Y4IFx1MDAzZT0gQlRDX0RCR19OVU0pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyNzgtXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjgwLVx0XHRcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyODE6XHRcdHJldHVybiBCVENfREJHX05VTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyODItXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyODc9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX3RvX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXBfdjgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMwMy1cdC8qIGJpdCA0LTMxOiBzaGlmdCByaWdodCBieSAyIHBvc2l0aW9ucyAoYmVjb21lIGJpdCAyLTI5IGluIHY3KSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMwNDpcdGZvciAoYml0ID0gQlRDX0RCR19CQ05fRUFSTFk7IGJpdCBcdTAwM2MgQlRDX0RCR19OVU07IGJpdCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMDUtXHRcdGlmIChlbl9tYXBfdjggXHUwMDI2IEJJVChiaXQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzI0LVx0LyogYml0IDItMjk6IHNoaWZ0IGxlZnQgYnkgMiBwb3NpdGlvbnMgKGJlY29tZSBiaXQgNC0zMSBpbiB2OCkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMjU6XHRmb3IgKGJpdCA9IEJUQ19EQkdfR05UX0JUMTsgYml0IFx1MDAzYyBCVENfREJHX05VTSAtIDI7IGJpdCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMjYtXHRcdGlmIChlbl9tYXAgXHUwMDI2IEJJVChiaXQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzY3LVx0XHRcdFx0XHRcdFx0ICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzY4Olx0XHRpZiAoZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgXHUwMDNlPSBCVENfREJHX05VTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjktXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTExOTgyPXN0YXRpYyBpbnQgX3Nob3dfZ3Bpb19kYmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMDE2Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRDX0RCR19OVU07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAxNy1cdFx0aWYgKCEoZW5fbWFwIFx1MDAyNiBCSVQoaSkpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDIwLVx0XHRzaWcgPSB2ZXItXHUwMDNlZmN4Z3Bpb2RiZyBcdTAwM2U9IDggPyBpIDogX2dldF9ncGlvc2lnX2Zvcl92ZXIocnR3ZGV2LCBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMDIxOlx0XHRpZiAoc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAyMi1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTE5PWVudW0gYnRjX3dsX2dwaW9fZGVidWcge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMTU4Olx0QlRDX0RCR19OVU0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTU5LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzE2MT1zdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfZ3Bpb19kYmdfdjEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNjYtXHRfX2xlMzIgcHJlX3N0YXRlOyAvKiB0aGUgZGVidWcgc2lnbmFsIGlzIDEgb3IgMCAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMxNjc6XHR1OCBncGlvX21hcFtCVENfREJHX05VTV07IC8qdGhlIGRlYnVnIHNpZ25hbHMgdG8gR1BJTy1Qb3NpdGlvbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE2OC19IF9fcGFja2VkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTMxNzA9c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2dwaW9fZGJnX3Y3IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzE3NjpcdHU4IGdwaW9fbWFwW0JUQ19EQkdfTlVNXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjQxCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBCdWcgaW4gR1BJTyBTaWduYWwgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgcG90ZW50aWFsIGlzc3VlLiBJdCBsb29rcyBsaWtlIGBCVENfREJHX05VTWAgaXMgYW4gZW51bSB2YWx1ZSwgd2hpY2ggcmFpc2VzIGEgcmVkIGZsYWcuIFRoZSBmdW5jdGlvbiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgIHJldHVybnMgYEJUQ19EQkdfTlVNYCB0byBpbmRpY2F0ZSBhbiBlcnJvciwgd2hpY2ggaXMgcGVyZmVjdGx5IHJlYXNvbmFibGUuIEJ1dCBoZXJlJiMzOTtzIHdoZXJlIHRoZSBwcm9ibGVtIGFyaXNlczogYGdwaW8tJmd0O211eC5kYXRhLnNpZ2AgaXMgZGVmaW5lZCBhcyBhIGB1OGAuIFRoaXMgaXMgd2hlcmUgbXkgY29uY2VybiBoaXRzIGNyaXRpY2FsIG1hc3MuCgpJZiBgQlRDX0RCR19OVU1gIGlzIGEgdmFsdWUgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgd2l0aGluIHRoZSBgdThgIHJhbmdlIChsZXNzIHRoYW4gMjU1KSwgdGhlbiB0aGUgY29tcGFyaXNvbiBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnID09IDB4ZmZgIHdpbGwgKmZhaWwqIHRvIGFjY3VyYXRlbHkgZGV0ZWN0IHRoZSBlcnJvciEgSW4gb3RoZXIgd29yZHMsIGlmIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBzaWduYWwgcmV0cmlldmFsLCBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnYCBtaWdodCBpbmFkdmVydGVudGx5IGNvbnRhaW4gYSB2YWxpZCAoYnV0IGluY29ycmVjdCkgYHU4YCB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIGFuIGVudW0gdmFsdWUgLSBvbmUgdGhhdCBtaWdodCBub3QgYmUgMHhmZiwgYW5kIHRoZSBlcnJvciB3b24mIzM5O3QgYmUgY2F1Z2h0LiBFc3NlbnRpYWxseSwgaWYgYEJUQ19EQkdfTlVNYCBpcyBzbWFsbCBlbm91Z2gsIGl0IHdvbiYjMzk7dCBiZSB0cmFwcGVkLgoKVGltZSB0byBsb29rIGludG8gdGhlIHZhbHVlIG9mIGBCVENfREJHX05VTWAgYW5kIHNlZSB3aGF0IHdlJiMzOTtyZSBhY3R1YWxseSBkZWFsaW5nIHdpdGgsIGFuZCBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYSByZWFsIGJ1Zy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMxMTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzExOTpcdGVudW0gYnRjX3dsX2dwaW9fZGVidWcge1xuMzEyMDpcdFx0QlRDX0RCR19HTlRfQlQgPSAwLFxuMzEyMTpcdFx0QlRDX0RCR19HTlRfV0wgPSAxLFxuMzEyMjpcdFx0QlRDX0RCR19HTlRfQlQxID0gMixcbjMxMjM6XHRcdEJUQ19EQkdfR05UX1dMMSA9IDMsXG4zMTI0Olx0XHQvKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgc2hvdWxkIDAtMSB0aWdnbGUgYnkgZWFjaCBmdW5jdGlvbi1jYWxsICovXG4zMTI1Olx0XHRCVENfREJHX0JDTl9FQVJMWSA9IDQsXG4zMTI2Olx0XHRCVENfREJHX1dMX05VTEwwID0gNSxcbjMxMjc6XHRcdEJUQ19EQkdfV0xfTlVMTDEgPSA2LFxuMzEyODpcdFx0QlRDX0RCR19XTF9SWElTUiA9IDcsXG4zMTI5Olx0XHRCVENfREJHX1RETUFfRU5UUlkgPSA4LFxuMzEzMDpcdFx0QlRDX0RCR19BMkRQX0VNUFRZID0gOSxcbjMxMzE6XHRcdEJUQ19EQkdfQlRfUkVUUlkgPSAxMCxcbjMxMzI6XHRcdC8qIFRoZSBmb2xsb3dpbmcgc2lnbmFscyBzaG91bGQgMC0xIHRpZ2dsZSBieSBzdGF0ZSBML0ggKi9cbjMxMzM6XHRcdEJUQ19EQkdfQlRfUkVMSU5LID0gMTEsXG4zMTM0Olx0XHRCVENfREJHX1NMT1RfV0wgPSAxMixcbjMxMzU6XHRcdEJUQ19EQkdfU0xPVF9CVCA9IDEzLFxuMzEzNjpcdFx0LyogVGhlIGZvbGxvd2luZyBzaWduYWxzIHNob3VsZCAwLTEgdGlnZ2xlIGJ5IGV4dGVybmFsKi9cbjMxMzc6XHRcdEJUQ19EQkdfV0xfRVJSID0gMTQsXG4zMTM4Olx0XHRCVENfREJHX1dMX09LID0gMTUsXG4zMTM5Olx0XHQvKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgYXBwZWFyIG9ubHkgMS1hY3RpdmUgYXQgc2FtZSB0aW1lKi9cbjMxNDA6XHRcdEJUQ19EQkdfU0xPVF9CMlcgPSAxNixcbjMxNDE6XHRcdEJUQ19EQkdfU0xPVF9XMSA9IDE3LFxuMzE0MjpcdFx0QlRDX0RCR19TTE9UX1cyID0gMTgsXG4zMTQzOlx0XHRCVENfREJHX1NMT1RfVzJCID0gMTksXG4zMTQ0Olx0XHRCVENfREJHX1NMT1RfQjEgPSAyMCxcbjMxNDU6XHRcdEJUQ19EQkdfU0xPVF9CMiA9IDIxLFxuMzE0NjpcdFx0QlRDX0RCR19TTE9UX0IzID0gMjIsXG4zMTQ3Olx0XHRCVENfREJHX1NMT1RfQjQgPSAyMyxcbjMxNDg6XHRcdEJUQ19EQkdfU0xPVF9MSyA9IDI0LFxuMzE0OTpcdFx0QlRDX0RCR19TTE9UX0UyRyA9IDI1LFxuMzE1MDpcdFx0QlRDX0RCR19TTE9UX0U1RyA9IDI2LFxuMzE1MTpcdFx0QlRDX0RCR19TTE9UX0VCVCA9IDI3LFxuMzE1MjpcdFx0QlRDX0RCR19TTE9UX1dMSyA9IDI4LFxuMzE1MzpcdFx0QlRDX0RCR19TTE9UX0IxRkREID0gMjksXG4zMTU0Olx0XHRCVENfREJHX0JUX0NIQU5HRSA9IDMwLFxuMzE1NTpcdFx0LyogVGhlIGZvbGxvd2luZyBzaWduYWxzIHNob3VsZCAwLTEgdGlnZ2xlIGJ5IGV4dGVybmFsKi9cbjMxNTY6XHRcdEJUQ19EQkdfV0xfQ0NBID0gMzEsXG4zMTU3Olx0XG4zMTU4Olx0XHRCVENfREJHX05VTSxcbjMxNTk6XHR9O1xuMzE2MDpcdFxuMzE2MTpcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19ncGlvX2RiZ192MSB7XG4zMTYyOlx0XHR1OCBmdmVyOyAvKiBidGNfdmVyOjpmY3hncGlvZGJnICovXG4zMTYzOlx0XHR1OCByc3ZkO1xuMzE2NDpcdFx0X19sZTE2IHJzdmQyO1xuMzE2NTpcdFx0X19sZTMyIGVuX21hcDsgLyogd2hpY2ggZGVidWcgc2lnbmFsIChzZWUgYnRjX3dsX2dwaW9fZGVidWcpIGlzIGVuYWJsZSAqL1xuMzE2NjpcdFx0X19sZTMyIHByZV9zdGF0ZTsgLyogdGhlIGRlYnVnIHNpZ25hbCBpcyAxIG9yIDAgICovXG4zMTY3Olx0XHR1OCBncGlvX21hcFtCVENfREJHX05VTV07IC8qdGhlIGRlYnVnIHNpZ25hbHMgdG8gR1BJTy1Qb3NpdGlvbiAqL1xuMzE2ODpcdH0gX19wYWNrZWQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDk1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgRmlybXdhcmUgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzbmlwcGV0IG9mIGNvZGUsIGFuZCBpdCBzZWVtcyBsaWtlIGBCVENfREJHX05VTWAgaXMgZGVmaW5lZCBhcyAzMi4gVGhlIG9yaWdpbmFsIGNvZGUgaGFzIHRoaXMgc2VjdGlvbiB3aGVyZSBpdCByZXRyaWV2ZXMgYSBzaWduYWwgdmFsdWUgdXNpbmcgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCwgYW5kIGlmIHRoYXQgcmV0dXJucyBhbiBlcnJvciBpbmRpY2F0ZWQgYnkgMHhmZiwgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4uIEhvd2V2ZXIsIGl0IHNlZW1zIGxpa2UgdGhlIGVycm9yIGNoZWNraW5nIGlzIGZsYXdlZC4gVGhlIGZ1bmN0aW9uIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyAzMiBvbiBlcnJvci4gVGhhdCB2YWx1ZSwgMzIsIGlzIHVzZWQgc3Vic2VxdWVudGx5IHdpdGhvdXQgYmVpbmcgcHJvcGVybHkgdmFsaWRhdGVkLgoKVGhlIGNvbmRpdGlvbiBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnID09IDB4ZmZgIGlzIGV2YWx1YXRlZCBidXQgZmFpbHMsIGNhdXNpbmcgdGhlIGNvZGUgdG8gcHJvY2VlZCwgdHJlYXRpbmcgMzIgYXMgYSB2YWxpZCBzaWduYWwuIEl0IHRoZW4gZXh0cmFjdHMgYGdwaW9gIGFuZCBwZXJmb3JtcyBhIGBtZW1jcHlgIGludG8gYGJ1ZmAuIFRoZSBgYnVmYCBpcyB0aGVuIHN1YnNlcXVlbnRseSBzZW50IHRvIHRoZSBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyBnb2luZyB0byB0cmlnZ2VyIHNvbWUgc29ydCBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkPyYjMzQ7CgpXYWl0LCBubywgdXBvbiBmdXJ0aGVyIGFuYWx5c2lzLCB0aGUgZGF0YSBiZWluZyBzZW50IGlzIHNpbXBseSBhIGtub3duLCBhbGJlaXQgaW52YWxpZCwgdmFsdWUsIDMyLiBJdCYjMzk7cyBub3QgdW5pbml0aWFsaXplZCBkYXRhIGJlaW5nIHJlYWQuIEl0JiMzOTtzIHNlbmRpbmcgYSBzcGVjaWZpYywgaW5jb3JyZWN0IHZhbHVlIHRvIHRoZSBmaXJtd2FyZS4gTGV0IG1lIHRha2UgYSBzZWNvbmQgbG9vayBhdCBob3cgYGJ1ZmAgYW5kIGBsZW5gIGFyZSB1dGlsaXplZCBkb3duc3RyZWFtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzc1Olx0XHRjYXNlIENYREdQSU9fRVhUX0hQVEE6IC8qIEdQSU8gY29uZmlnIGZvciBFeHQgSFctUFRBICovXG4zMzc2Olx0XHRcdGdwaW8tXHUwMDNlZXh0X3B0YS5kYXRhLnR5cGUgPSBDWERHUElPX0VYVF9IUFRBO1xuMzM3NzpcdFx0XHRncGlvLVx1MDAzZWV4dF9wdGEuZGF0YS5mdmVyID0gZ3Bpb192ZXI7XG4zMzc4Olx0XHRcdGdwaW8tXHUwMDNlZXh0X3B0YS5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcbjMzNzk6XHRcdFx0Z3Bpby1cdTAwM2VleHRfcHRhLmRhdGEubWFwX2xvdyA9IEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpO1xuMzM4MDpcdFx0XHRncGlvLVx1MDAzZWV4dF9wdGEuZGF0YS5tYXBfaGlnaCA9IEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgdmFsKTtcbjMzODE6XHRcdFx0bDJfaDJjID0gZ3Bpby1cdTAwM2VleHRfcHRhLmZtdDtcbjMzODI6XHRcdFx0bWVtY3B5KGJ1ZiwgXHUwMDI2bDJfaDJjLCBzaXplb2YobDJfaDJjKSk7XG4zMzgzOlx0XHRcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xuMzM4NDpcdFx0XHRicmVhaztcbjMzODU6XHRcdGNhc2UgQ1hER1BJT19FWFRfSE1CWDogLyogR1BJTyBjb25maWcgZm9yIEV4dCBIVy1tYWlsYm94ICovXG4zMzg2Olx0XHRcdGdwaW8tXHUwMDNlZXh0X21iLmRhdGEudHlwZSA9IENYREdQSU9fRVhUX0hNQlg7XG4zMzg3Olx0XHRcdGdwaW8tXHUwMDNlZXh0X21iLmRhdGEuZnZlciA9IGdwaW9fdmVyO1xuMzM4ODpcdFx0XHRncGlvLVx1MDAzZWV4dF9tYi5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcbjMzODk6XHRcdFx0Z3Bpby1cdTAwM2VleHRfbWIuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XG4zMzkwOlx0XHRcdGdwaW8tXHUwMDNlZXh0X21iLmRhdGEubWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XG4zMzkxOlx0XHRcdGwyX2gyYyA9IGdwaW8tXHUwMDNlZXh0X21iLmZtdDtcbjMzOTI6XHRcdFx0bWVtY3B5KGJ1ZiwgXHUwMDI2bDJfaDJjLCBzaXplb2YobDJfaDJjKSk7XG4zMzkzOlx0XHRcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xuMzM5NDpcdFx0XHRicmVhaztcbjMzOTU6XHRcdGNhc2UgQ1hER1BJT19FWFRfU1dPVVQ6IC8qIEdQSU8gY29uZmlnIGZvciBFeHQgU1cgb3V0cHV0ICh3bGFuX2FjdCkgKi9cbjMzOTY6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dvdXQuZGF0YS50eXBlID0gQ1hER1BJT19FWFRfU1dPVVQ7XG4zMzk3Olx0XHRcdGdwaW8tXHUwMDNlZXh0X3N3b3V0LmRhdGEuZnZlciA9IGdwaW9fdmVyO1xuMzM5ODpcdFx0XHRncGlvLVx1MDAzZWV4dF9zd291dC5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcbjMzOTk6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dvdXQuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XG4zNDAwOlx0XHRcdGdwaW8tXHUwMDNlZXh0X3N3b3V0LmRhdGEubWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XG4zNDAxOlx0XHRcdGwyX2gyYyA9IGdwaW8tXHUwMDNlZXh0X3N3b3V0LmZtdDtcbjM0MDI6XHRcdFx0bWVtY3B5KGJ1ZiwgXHUwMDI2bDJfaDJjLCBzaXplb2YobDJfaDJjKSk7XG4zNDAzOlx0XHRcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xuMzQwNDpcdFx0XHRicmVhaztcbjM0MDU6XHRcdGNhc2UgQ1hER1BJT19FWFRfU1dJTjogLyogR1BJTyBjb25maWcgZm9yIEV4dCBTVyBpbnB1dCBjb250cm9sICovXG4zNDA2Olx0XHRcdGdwaW8tXHUwMDNlZXh0X3N3aW4uZGF0YS50eXBlID0gQ1hER1BJT19FWFRfU1dJTjtcbjM0MDc6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dpbi5kYXRhLmZ2ZXIgPSBncGlvX3ZlcjtcbjM0MDg6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dpbi5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MNDtcbjM0MDk6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dpbi5kYXRhLmluX21hcF9sb3cgPSBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKTtcbjM0MTA6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dpbi5kYXRhLmluX21hcF9oaWdoID0gRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCB2YWwpO1xuMzQxMTpcdFx0XHRncGlvLVx1MDAzZWV4dF9zd2luLmRhdGEuaW50X21hcF9sb3cgPSBGSUVMRF9HRVQoR0VOTUFTSygyMywgMTYpLCB2YWwpO1xuMzQxMjpcdFx0XHRncGlvLVx1MDAzZWV4dF9zd2luLmRhdGEuaW50X21hcF9oaWdoID0gRklFTERfR0VUKEdFTk1BU0soMzEsIDI0KSwgdmFsKTtcbjM0MTM6XHRcdFx0bDRfaDJjID0gZ3Bpby1cdTAwM2VleHRfc3dpbi5mbXQ7XG4zNDE0Olx0XHRcdHB1dF91bmFsaWduZWRfbGUzMih2YWwsICh1MzIgKilsNF9oMmMuZGF0YSk7XG4zNDE1Olx0XHRcdG1lbWNweShidWYsIFx1MDAyNmw0X2gyYywgc2l6ZW9mKGw0X2gyYykpO1xuMzQxNjpcdFx0XHRsZW4gPSBzaXplb2YobDRfaDJjKTtcbjM0MTc6XHRcdFx0YnJlYWs7XG4zNDE4Olx0XHRkZWZhdWx0OlxuMzQxOTpcdFx0XHRyZXR1cm47XG4zNDIwOlx0XHR9XG4zNDIxOlx0XG4zNDIyOlx0XHRfc2VuZF9md19jbWQocnR3ZGV2LCBCVEZDX1NFVCwgU0VUX0dQSU9fREJHLCBidWYsIGxlbik7XG4zNDIzOlx0fVxuMzQyNDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzkzNgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgRGF0YSBUcmFuc21pc3Npb24gUGF0aCoqCgpPa2F5LCBzbyB0aGUgYGJ1ZmAgaXMgYmVpbmcgcGFzc2VkIGRvd24gdG8gdGhlIGZpcm13YXJlIHRocm91Z2ggdGhlIGBfc2VuZF9md19jbWRgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBwb2ludCBvZiBpbnRlcmFjdGlvbiwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyYjMzk7cyBrb3NoZXIuIFRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyBhbHdheXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIEhvd2V2ZXIsIGxvb2tpbmcgYXQgdGhpcyBzcGVjaWZpYyBwYXRoLCBJIGRvbiYjMzk7dCBzZWUgYW55IG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzIGhlcmUuIFRoZSBgbDJfaDJjYCBzdHJ1Y3R1cmUgKG9yIHVuaW9uLCBuZWVkIHRvIGNvbmZpcm0gdGhhdCkgaXMgYmVpbmcgcG9wdWxhdGVkLCBhbmQgY3J1Y2lhbGx5LCBpdCBsb29rcyBsaWtlIGl0IGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGBncGlvLSZndDttdXguZm10YC4gVGhpcyBzZWVtcyBsaWtlIGEgZGlyZWN0IGNvcHkgb3IgYXNzaWdubWVudCwgd2hpY2ggc2hvdWxkIHByZXZlbnQgYW55IHVuaW5pdGlhbGl6ZWQgZGF0YSBmcm9tIGxlYWtpbmcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYGdwaW8tJmd0O211eC5mbXRgIGRlZmluaXRpb24gdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgaXQmIzM5O3MgYSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlLiBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQgcXVpY2tseSwgc2luY2UgdGhhdCYjMzk7cyB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgZGF0YSBiZWluZyBzZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9mYnRjX2gyY19zZXRfZ3BpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM1LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMzY6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW8gKmdwaW8gPSBcdTAwMjZidGMtXHUwMDNlZ3BpbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzctXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMzg6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIgbDJfaDJjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzOTpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb180YiBsNF9oMmM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzQwLVx0dTggZ3Bpb192ZXIgPSB2ZXItXHUwMDNlZmN4Z3Bpb2RiZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTgyPXVuaW9uIHJ0dzg5X2J0Y19mYnRjX2dwaW9fZGJnIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjA4LSNkZWZpbmUgQ1hER1BJT19TRVRfTDIgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzIwOTpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZW5fbWFwIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMTAtXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzIxNjpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMTctXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzIyNDpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjI1LVx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzIzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyMzI6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9tYiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjMzLVx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNDA6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9zd291dCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjQxLVx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNDg6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9zd2luIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyNDktXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI1ODpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI1OS1cdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjY1OnN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb180YiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjY2LVx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNzI6dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZW5fbWFwX3Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI3MzpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb180YiBmbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjc0Olx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2VuX21hcCBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI3NS19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNzc6dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4X3Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI3ODpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiBmbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjc5Olx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eCBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI4MC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODI6dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YV91IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODM6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIgZm10O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI4NDpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfcHRhIGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjg1LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI4Nzp1bmlvbiBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfc3dpbl91IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODg6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fNGIgZm10O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI4OTpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfc3dpbiBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI5MC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTI6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTM6XHR1bmlvbiBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19lbl9tYXBfdSBlbl9tYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjk0Olx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4X3UgbXV4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI5NTpcdHVuaW9uIHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9wdGFfdSBleHRfcHRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI5NjpcdHVuaW9uIHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9wdGFfdSBleHRfbWI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjk3Olx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YV91IGV4dF9zd291dDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTg6XHR1bmlvbiBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfc3dpbl91IGV4dF9zd2luO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI5OS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTQzOTQ9c3RydWN0IHJ0dzg5X2J0YyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNDQwMi1cdHN0cnVjdCBydHc4OV9idGNfZGJnIGRiZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjQ0MDM6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW8gZ3BpbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTQ0MDQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2Nzg0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZGlzdGlsbGVkOgoKKipEZWNvZGluZyB0aGUgR1BJTyBNdXggU3RydWN0dXJlIGluIHRoZSBydHc4OSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGdwaW9gIHZhcmlhYmxlLCBhbmQgaXQmIzM5O3MgYSBwb2ludGVyIHRvIGBidGMtJmd0O2dwaW9gLCB3aGljaCBpbiB0dXJuIGlzIGEgcG9pbnRlciwgSSBiZWxpZXZlIHRvIHRoZSBhY3R1YWwgR1BJTyBzdHJ1Y3R1cmUuIFRoZSBgYnRjYCB2YXJpYWJsZSBpdHNlbGYgaXMgYW5vdGhlciBwb2ludGVyLCBzcGVjaWZpY2FsbHkgdG8gYHJ0d2Rldi0mZ3Q7YnRjYC4gUmlnaHQsIHNvIHdlJiMzOTtyZSBuYXZpZ2F0aW5nIGEgY2hhaW4gb2YgcG9pbnRlcnMgdG8gZ2V0IHRvIHRoZSBHUElPIGNvbnRyb2wuCgpOb3csIGBncGlvLSZndDttdXguZGF0YWAgYW5kIGBncGlvLSZndDttdXguZm10YCBhcmUgYXBwYXJlbnRseSB1bmlvbnMuIFRoZXkgYXJlIGJvdGggc3RydWN0cywgYW5kIG9mIGVxdWFsIHNpemUuIE1lYW5pbmcgdGhhdCB0aGV5IG9jY3VweSB0aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24sIGJ1dCBhcmUgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoaWNoIGZpZWxkIHdlJiMzOTtyZSBhY2Nlc3NpbmcuIE1ha2VzIHNlbnNlLCBzcGFjZS1zYXZpbmcgdGVjaG5pcXVlLCB0aGF0JiMzOTtzIGZpbmUuCgpUaGUgY3JpdGljYWwgc3RydWN0IGlzIHRoZSBgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4YCBvbmUuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGF0IGl0IGlzLCBpbiBmYWN0LCBwYWNrZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb21waWxhdGlvbiBmbGFncyB0byBjb25maXJtIHRoZSBgX19wYWNrZWRgIGF0dHJpYnV0ZSBpcyBjb3JyZWN0bHkgZW5mb3JjZWQsIGFzIHRoZSBjb3JyZWN0IGJ5dGUtbGV2ZWwgbGF5b3V0IGlzIGNyaXRpY2FsIGZvciB0aGUgaGFyZHdhcmUgY29tbXVuaWNhdGlvbiB0aGlzIGlzIGRlc2lnbmVkIGZvci4gV2UmIzM5O3ZlIGdvdCBgdHlwZWAsIGBmdmVyYCwgYGRsZW5gLCBgc2lnYCwgYW5kIGBncGlvYCBmaWVsZHMuIFRob3NlIGFyZSBwcm9iYWJseSBzb21lIHNvcnQgb2YgY29udHJvbCBhbmQgdmVyc2lvbiBiaXRzLCBkYXRhIGxlbmd0aCBhbmQgc2lnbmFsIHZhbHVlcyBmb3IgdGhlIEdQSU8gbXV4LiBXZSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpY3Mgb2YgdGhvc2UgZmllbGRzIHRvIHVzZSB0aGVtLiBMZXQmIzM5O3Mgc2VlIGlmIHRob3NlIGZpZWxkcyBhcmUgZGVmaW5lZCBzb21ld2hlcmUgaW4gdGhlIHNvdXJjZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzIxNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMjE2Olx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eCB7XG4zMjE3Olx0XHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cbjMyMTg6XHRcdHU4IGZ2ZXI7IC8qIEZDWF9WRVJfR1BJT0RCRyAqL1xuMzIxOTpcdFx0dTggZGxlbjtcbjMyMjA6XHRcdHU4IHNpZztcbjMyMjE6XHRcdHU4IGdwaW87XG4zMjIyOlx0fTtcbjMyMjM6XHRcbjMyMjQ6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YSB7XG4zMjI1Olx0XHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cbjMyMjY6XHRcdHU4IGZ2ZXI7IC8qIEZDWF9WRVJfR1BJT0RCRyAqL1xuMzIyNzpcdFx0dTggZGxlbjtcbjMyMjg6XHRcdHU4IG1hcF9sb3c7XG4zMjI5Olx0XHR1OCBtYXBfaGlnaDtcbjMyMzA6XHR9O1xuMzIzMTpcdFxuMzIzMjpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfbWIge1xuMzIzMzpcdFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4zMjM0Olx0XHR1OCBmdmVyOyAvKiBGQ1hfVkVSX0dQSU9EQkcgKi9cbjMyMzU6XHRcdHU4IGRsZW47XG4zMjM2Olx0XHR1OCBtYXBfbG93O1xuMzIzNzpcdFx0dTggbWFwX2hpZ2g7XG4zMjM4Olx0fTtcbjMyMzk6XHRcbjMyNDA6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3N3b3V0IHtcbjMyNDE6XHRcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xuMzI0MjpcdFx0dTggZnZlcjsgLyogRkNYX1ZFUl9HUElPREJHICovXG4zMjQzOlx0XHR1OCBkbGVuO1xuMzI0NDpcdFx0dTggbWFwX2xvdztcbjMyNDU6XHRcdHU4IG1hcF9oaWdoO1xuMzI0NjpcdH07XG4zMjQ3Olx0XG4zMjQ4Olx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9zd2luIHtcbjMyNDk6XHRcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xuMzI1MDpcdFx0dTggZnZlcjsgLyogRkNYX1ZFUl9HUElPREJHICovXG4zMjUxOlx0XHR1OCBkbGVuO1xuMzI1MjpcdFx0dTggaW5fbWFwX2xvdztcbjMyNTM6XHRcdHU4IGluX21hcF9oaWdoO1xuMzI1NDpcdFx0dTggaW50X21hcF9sb3c7XG4zMjU1Olx0XHR1OCBpbnRfbWFwX2hpZ2g7XG4zMjU2Olx0fTtcbjMyNTc6XHRcbjMyNTg6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIge1xuMzI1OTpcdFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4zMjYwOlx0XHR1OCBmdmVyOyAvKiBGQ1hfVkVSX0dQSU9EQkcgKi9cbjMyNjE6XHRcdHU4IGRsZW47XG4zMjYyOlx0XHR1OCBkYXRhW0NYREdQSU9fU0VUX0wyXTtcbjMyNjM6XHR9IF9fcGFja2VkO1xuMzI2NDpcdFxuMzI2NTpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb180YiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDgyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEdQSU8gTXV4IElzc3VlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhlIHByb2JsZW0uIEZpcnN0LCBJIHNlZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eGAgc3RydWN0IOKAkyBpdCYjMzk7cyA1IGJ5dGVzIGluIHNpemUsIHdoaWNoIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuIEkgcXVpY2tseSBjYWxjdWxhdGUgdGhhdCB0aGUgYHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXzJiYCBzdHJ1Y3QsIHBhcnQgb2YgdGhlIHVuaW9uLCBhbHNvIHRha2VzIHVwIHRob3NlIDUgYnl0ZXMuCgpJJiMzOTt2ZSBnb3QgdGhlIHN0cnVjdHVyZXMgaGVyZSwgbm8gcGFkZGluZyBjb25jZXJucywgYWxsIGB1OGAgbWVtYmVycy4gVGhlIGZpeCBpcyB0YXJnZXRpbmcgYSBidWcgd2hlcmUgYSBmdW5jdGlvbiwgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCwgbWlnaHQgcmV0dXJuIGBCVENfREJHX05VTWAgKHdoaWNoIGlzIDMyLCBJIHJlbWVtYmVyKSBvbiBlcnJvciwgYnV0IHRoZSBleGlzdGluZyBjaGVjayBpbiB0aGUgY29kZSB3YXMgZXJyb25lb3VzbHkgbG9va2luZyBmb3IgYD09IDB4ZmZgLiBUaGF0IG1lYW5zIHRoZSBlcnJvciBjYXNlIHdhc24mIzM5O3QgYmVpbmcgY2F1Z2h0LiBUaGUgbG9naWMgYWxsb3dlZCBgQlRDX0RCR19OVU1gIHRvIGJlIHVzZWQgd2hlbiBpdCBzaG91bGRuJiMzOTt0LCBtZWFuaW5nIGl0IHdhcyB1c2VkIGFzIGBzaWdgIHdoZW4gYW4gZXJyb3IgaGFwcGVuZWQsIHRoYXQgaXMgdGhlIGZsYXcuIFRoZSBwYXRjaCBqdXN0IGNoYW5nZXMgdGhlIGNoZWNrIHRvIGAmZ3Q7PSBCVENfREJHX05VTWAsIHNvIHRoYXQgYW4gZXJyb3IgaXMgY2F1Z2h0LgoKVGhlIHJlYWwgcXVlc3Rpb24gaGVyZSwgYXMgd2l0aCBhbnkgbWVtb3J5LXJlbGF0ZWQgaXNzdWUsIGlzIHdoZXRoZXIgdGhlcmUmIzM5O3MgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gcGxheS4gSSBoYXZlIHRvIHZlcmlmeSB0aGF0LiBMb29raW5nIGF0IHRoZSBjb2RlIHNuaXBwZXQsIEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCB0aGF0IHRoZSBgYnVmYCB0aGF0IGVuZHMgdXAgYmVpbmcgY29waWVkIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGUgYGdwaW8tJmd0O211eC5kYXRhYCBtZW1iZXIsIHdoaWNoIGlzIG9mIHR5cGUgYHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eGAsIGlzIHNldCB1cCwgYWxsIDUgYnl0ZXMsIGJlZm9yZSB0aGUgYG1lbWNweWAuIEVhY2ggbWVtYmVyIOKAkyBgdHlwZWAsIGBmdmVyYCwgYGRsZW5gLCBgc2lnYCwgYGdwaW9gIOKAkyBpcyBleHBsaWNpdGx5IGFzc2lnbmVkIGEgdmFsdWUuIFRoZSB1bmlvbiBgbDJfaDJjYCBpcyB0aGVuIHByb3Blcmx5IGluaXRpYWxpemVkLCBhbmQgZmluYWxseSBjb3BpZWQgdG8gYGJ1ZmAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGV2ZXIgcmVhZCBvciBzZW50IG91dC4KClNvLCB0aGlzIGlzbiYjMzk7dCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gSXQmIzM5O3MgYSBsb2dpYyBidWcuIEEgYmFkIHZhbHVlLCBgQlRDX0RCR19OVU1gLCBpcyBiZWluZyBzZW50IHRvIHRoZSBmaXJtd2FyZS4gSSBrbm93IEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgd2hlcmUgdGhhdCBgc2lnYCB2YWx1ZSBpcyB1c2VkLiBJcyBpdCBiZWluZyB1c2VkIGFzIGFuIGFycmF5IGluZGV4IHNvbWV3aGVyZT8gSXQmIzM5O3Mgc2VudCB0byB0aGUgZmlybXdhcmUgaW4gYF9md19zZXRfZ3Bpb2AsIGJ1dCB0aGF0JiMzOTtzIG91dCBvZiBLTVNBTiYjMzk7cyBzY29wZS4gQW5kIEkgdGhpbmsgdGhhdCBpcyB0aGUgY3J1eCBvZiB0aGUgcHJvYmxlbSwgaXMgYHNpZ2AgYmVpbmcgdXNlZCBhcyBhbiBpbmRleCBpbnRvIGFuIGFycmF5IGluc2lkZSB0aGUgZmlybXdhcmU/IEluIHRoZSBrZXJuZWwsIGl0IGlzIHN0b3JlZCBpbiBgYnRjLSZndDtncGlvLm11eC5kYXRhLnNpZ2AuIEkgaGF2ZSB0byBzZWUgd2hldGhlciBhbmQgd2hlcmUgYGJ0Yy0mZ3Q7Z3Bpb2AgaXMgcmVhZCB3aXRoaW4gdGhlIGtlcm5lbCwgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSB3YXkgdGhpcyBjb3VsZCBjYXVzZSBwcm9ibGVtcy4gVGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGMtXHUwMDNlZ3BpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM1LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMzY6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW8gKmdwaW8gPSBcdTAwMjZidGMtXHUwMDNlZ3BpbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzctXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4MjQKCQkJCQkJCW91dHB1dDogMTg4CgkJCQkJCQl0aG91Z2h0czogMzY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IHNlZW1zIGxpa2UgYGJ0Yy0mZ3Q7Z3Bpb2AgaXMganVzdCBhIHRlbXBvcmFyeSBzdHJ1Y3R1cmUgdXNlZCB0byBmb3JtYXQgdGhlIEgyQyBjb21tYW5kLiBBaCwgcmlnaHQsIHRoYXQmIzM5O3MgcGFydCBvZiB0aGUgYHJ0dzg5X2J0Y2Agc3RydWN0IOKAkyBnb3QgaXQuIEkgd2FzIHdvcnJpZWQgZm9yIGEgc2Vjb25kIGFib3V0IHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIGJ1dCBpdCBzZWVtcyB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZS4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgbG9naWMgYnVnLgoKRXNzZW50aWFsbHksIHRoZSBidWcgYm9pbHMgZG93biB0byBhbiBpbmNvcnJlY3QgYm91bmRzIGNoZWNrIGluIHRoZSBgX2Z3X3NldF9ncGlvYCBmdW5jdGlvbi4gVGhlIGNvZGUgd2FzIHVzaW5nIGA9PSAweGZmYCAoMjU1KSB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAsIGJ1dCBpdCBzaG91bGQgaGF2ZSBiZWVuIGNoZWNraW5nIGFnYWluc3QgYCZndDs9IEJUQ19EQkdfTlVNYC4gVGhlIGNydWNpYWwgZGV0YWlsIGlzIHRoYXQgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCByZXR1cm5zIGBCVENfREJHX05VTWAsIHdoaWNoIGlzIDMyLCB1cG9uIGFuIGVycm9yLiBTbywgdGhlIG9yaWdpbmFsIGNoZWNrIHdhcyBsZXR0aW5nIGFuIGludmFsaWQgc2lnbmFsIElEICgzMikgc2xpcCB0aHJvdWdoLCB0cmVhdGluZyBpdCBhcyBhIHZhbGlkIHNpZ25hbC4KClRoaXMgaXMgYSBjbGVhbiwgc2ltcGxlIGxvZ2ljIGVycm9yLiBUaGUgZ29vZCBuZXdzIGlzLCB0aGVyZSYjMzk7cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnZvbHZlZCBoZXJlLiBUaGUgZGF0YSBiZWluZyBzZW50IHRvIHRoZSBmaXJtd2FyZSBpcyBhbGwgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgY29waWVkIGludG8gdGhlIGBncGlvLSZndDttdXguZGF0YWAgc3RydWN0dXJlLiBUaGF0IG1ha2VzIHRoZSBwb3RlbnRpYWwgZm9yIGEgS01TQU4gaXNzdWUgbmVnbGlnaWJsZS4gVGhlcmVmb3JlLCBJIGRvbuKAmXQgdGhpbmsgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIHdhcnJhbnRlZC4gVGhlIGZpeCBpdHNlbGYgaXMgcHJldHR5IGNsZWFyOiBpbXByb3ZlIHRoYXQgYm91bmRzIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgX2Z3X3NldF9ncGlvYCB3aGVyZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgd2FzIGluY29ycmVjdGx5IGNoZWNrZWQgYWdhaW5zdCBgMHhmZmAgaW5zdGVhZCBvZiBgXHUwMDNlPSBCVENfREJHX05VTWAuIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyBgQlRDX0RCR19OVU1gICh3aGljaCBpcyAzMikgb24gZXJyb3IuIEJlY2F1c2Ugb2YgdGhlIGluY29ycmVjdCBjaGVjaywgdGhlIGVycm9yIHZhbHVlIHdhcyBub3QgY2F1Z2h0IGFuZCB3YXMgc2VudCB0byB0aGUgZmlybXdhcmUgYXMgYSB2YWxpZCBzaWduYWwgSUQuIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFsbCBmaWVsZHMgb2YgdGhlIGBncGlvLVx1MDAzZW11eC5kYXRhYCBzdHJ1Y3R1cmUgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIGNvcGllZCB0byB0aGUgYnVmZmVyIGFuZCBzZW50IHRvIHRoZSBmaXJtd2FyZS4gVGhlcmVmb3JlLCB0aGlzIGJ1ZyBjYW5ub3QgYmUgZGV0ZWN0ZWQgYnkgS01TQU4sIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBfZndfc2V0X2dwaW9gIHdoZXJlIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCB3YXMgaW5jb3JyZWN0bHkgY2hlY2tlZCBhZ2FpbnN0IGAweGZmYCBpbnN0ZWFkIG9mIGBcdTAwM2U9IEJUQ19EQkdfTlVNYC4gYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCByZXR1cm5zIGBCVENfREJHX05VTWAgKHdoaWNoIGlzIDMyKSBvbiBlcnJvci4gQmVjYXVzZSBvZiB0aGUgaW5jb3JyZWN0IGNoZWNrLCB0aGUgZXJyb3IgdmFsdWUgd2FzIG5vdCBjYXVnaHQgYW5kIHdhcyBzZW50IHRvIHRoZSBmaXJtd2FyZSBhcyBhIHZhbGlkIHNpZ25hbCBJRC4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQWxsIGZpZWxkcyBvZiB0aGUgYGdwaW8tXHUwMDNlbXV4LmRhdGFgIHN0cnVjdHVyZSBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgY29waWVkIHRvIHRoZSBidWZmZXIgYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGVyZWZvcmUsIHRoaXMgYnVnIGNhbm5vdCBiZSBkZXRlY3RlZCBieSBLTVNBTiwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjowOC40OTMzOTQ2NDlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg0NjcyMjgxMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODlfODg1MUJVXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5Xzg4NTJCVVwiLFxuICAgIFwiUlRXODlfODg1MkNVXCIsXG4gICAgXCJSVFc4OV84OTIyQVVcIixcbiAgICBcIlJUVzg5X1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2J0Y19udGZ5X2luaXRcIixcbiAgICBcInJ0dzg5X2NvcmVfc3RhcnRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBfZndfc2V0X2dwaW9gIHdoZXJlIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCB3YXMgaW5jb3JyZWN0bHkgY2hlY2tlZCBhZ2FpbnN0IGAweGZmYCBpbnN0ZWFkIG9mIGBcXHUwMDNlPSBCVENfREJHX05VTWAuIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyBgQlRDX0RCR19OVU1gICh3aGljaCBpcyAzMikgb24gZXJyb3IuIEJlY2F1c2Ugb2YgdGhlIGluY29ycmVjdCBjaGVjaywgdGhlIGVycm9yIHZhbHVlIHdhcyBub3QgY2F1Z2h0IGFuZCB3YXMgc2VudCB0byB0aGUgZmlybXdhcmUgYXMgYSB2YWxpZCBzaWduYWwgSUQuIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFsbCBmaWVsZHMgb2YgdGhlIGBncGlvLVxcdTAwM2VtdXguZGF0YWAgc3RydWN0dXJlIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBjb3BpZWQgdG8gdGhlIGJ1ZmZlciBhbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoZXJlZm9yZSwgdGhpcyBidWcgY2Fubm90IGJlIGRldGVjdGVkIGJ5IEtNU0FOLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gYF9md19zZXRfZ3Bpb2Agd2l0aGluIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGZ1enppbmcgKGR1bW15X2hjZCkuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiAoYHJ0dzg5X2J0Y19udGZ5X2luaXRgIC1cXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVxcdTAwM2UgYF9zZXRfZXh0X2ludGVyZmFjZWAgLVxcdTAwM2UgYF9md19zZXRfZ3Bpb2ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjowOC40OTMzOTk3MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODM0NTI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlmYjI4OWE2M2UxOGU1YWUyYWEyNDE5ZTljMDZiNWRiOTRjMWNkMmVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMjYgMDM6NDY6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xcbmluZGV4IDVhOWRjNGQ4YTAwYmEuLjEyYmQ1NTM5ZThjNmQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xcbkBAIC0zMzY1LDcgKzMzNjUsNyBAQCBzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbiBcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5kbGVuID0gQ1hER1BJT19TRVRfTDI7XFxuIFxcdFxcdGdwaW8tXFx1MDAzZW11eC5kYXRhLnNpZyA9IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7XFxuLVxcdFxcdGlmIChncGlvLVxcdTAwM2VtdXguZGF0YS5zaWcgPT0gMHhmZilcXG4rXFx0XFx0aWYgKGdwaW8tXFx1MDAzZW11eC5kYXRhLnNpZyBcXHUwMDNlPSBCVENfREJHX05VTSlcXG4gXFx0XFx0XFx0cmV0dXJuO1xcbiBcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5ncGlvID0gRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCB2YWwpO1xcbiBcXHRcXHRsMl9oMmMgPSBncGlvLVxcdTAwM2VtdXguZm10O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjowOC44NzI0NjUzNzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NjI4Nzk5ODMxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OV84ODUxQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiUlRXODlfODg1MkJVXCIsXG4gICAgXCJSVFc4OV84ODUyQ1VcIixcbiAgICBcIlJUVzg5Xzg5MjJBVVwiLFxuICAgIFwiUlRXODlfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODlfYnRjX250ZnlfaW5pdFwiLFxuICAgIFwicnR3ODlfY29yZV9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGBfZndfc2V0X2dwaW9gIHdpdGhpbiB0aGUgUmVhbHRlayBydHc4OSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBmdXp6aW5nIChkdW1teV9oY2QpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKGBydHc4OV9idGNfbnRmeV9pbml0YCAtXFx1MDAzZSBgX3NldF9pbml0X2luZm9gIC1cXHUwMDNlIGBfc2V0X2V4dF9pbnRlcmZhY2VgIC1cXHUwMDNlIGBfZndfc2V0X2dwaW9gKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWZiMjg5YTYzZTE4ZTVhZTJhYTI0MTllOWMwNmI1ZGI5NGMxY2QyZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDAzOjQ2OjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuaW5kZXggNWE5ZGM0ZDhhMDBiYS4uMTJiZDU1MzllOGM2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuQEAgLTMzNjUsNyArMzM2NSw3IEBAIHN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG4gXHRcdGdwaW8tXHUwMDNlbXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xuIFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLnNpZyA9IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldixcbiBcdFx0XHRcdFx0XHRcdCAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCkpO1xuLVx0XHRpZiAoZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPT0gMHhmZilcbitcdFx0aWYgKGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG4gXHRcdFx0cmV0dXJuO1xuIFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLmdwaW8gPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XG4gXHRcdGwyX2gyYyA9IGdwaW8tXHUwMDNlbXV4LmZtdDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjA4Ljg3MjQ2NzExM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxOTg2MTU3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNgLiBUaGUgY2hhbmdlIGlzIGluIHRoZSBgX2Z3X3NldF9ncGlvYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHRoaXMgbGluZTpcblxuYGBgY1xuLVx0XHRpZiAoZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPT0gMHhmZilcbitcdFx0aWYgKGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG5gYGBcblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmaXggcmVsYXRlZCB0byBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzcywgc29tZSBraW5kIG9mIGxvZ2ljIGVycm9yLCBvciBtYXliZSBqdXN0IGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIGltcHJvdmVtZW50LiBUaGUgZmFjdCB0aGF0IHRoZSBkcml2ZXIgaXMgYHJ0dzg5YCB0ZWxscyBtZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSBSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LlxuXG5Ob3csIGEgcXVpY2sgZ3V0IGNoZWNrLiBHaXZlbiB0aGUgaGFyZHdhcmUsIGlzIHRoaXMgZHJpdmVyIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXQncyB0eXBpY2FsbHkgYSBQQ0llIG9yIFVTQiB3aXJlbGVzcyBkcml2ZXIsIGFuZCBJIGtub3cgdGhhdCBzdGFuZGFyZCBlbXVsYXRpb24gdG9vbHMgbGlrZSBgbWFjODAyMTFfaHdzaW1gIGFyZSBnZW5lcmFsbHkgdXNlZCBmb3IgZW11bGF0aW5nIFdpRmkuIFRoZXNlIHR5cGljYWxseSBkb24ndCBpbmNsdWRlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgbGlrZSBydHc4OSB1bmxlc3MgdGhleSBoYXZlIGEgVVNCIGludGVyZmFjZSBhbmQgd2UgY2FuIGxldmVyYWdlIFVTQiBmdXp6aW5nIHVzaW5nIGR1bW15X2hjZC4gSXQncyByYXJlIHRvIGVtdWxhdGUgdGhpcyBsZXZlbCBvZiBkZXRhaWwuIEkgc2hvdWxkIGRvdWJsZSBjaGVjayBpZiB0aGUgZHJpdmVyIGV4cG9zZXMgYSBVU0IgaW50ZXJmYWNlLiBUaGF0J3MgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjE0LjA3MTA4OTQ0MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzg2MjkxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OS4qdXNiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODI3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlPTEwNj1ydHc4OV9wY2kteSA6PSBwY2kubyBwY2lfYmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTA4Om9iai0kKENPTkZJR19SVFc4OV9VU0IpICs9IHJ0dzg5X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDk6cnR3ODlfdXNiLXkgOj0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTExMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTIwPXN0cnVjdCBydHc4OV9wY2lfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDoyMTpzdHJ1Y3QgcnR3ODlfdXNiX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjItc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9NTg3Mj11bmlvbiBydHc4OV9idXNfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3My1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcGNpX2luZm8gKnBjaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo1ODc0OlxcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTU4NzUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYz00Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MWJfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUxYl9oZmNfY2hjZmdfdXNiW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTU1LVxcdHsxOCwgMjEwLCBncnBfMH0sIC8qIEFDSCAwICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjcwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3B1Yl9jZmcgcnR3ODg1MWJfaGZjX3B1YmNmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTcxLVxcdDIxMCwgLyogR3JvdXAgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYzo3NzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wcmVjX2NmZyBydHc4ODUxYl9oZmNfcHJlY2NmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTc4LVxcdDksIC8qIENIIDAtMTEgcHJlLWNvc3QgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTFiX2hmY19wYXJhbV9pbmlfdXNiW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTg5LVxcdFtSVFc4OV9RVEFfU0NDXSA9IHtydHc4ODUxYl9oZmNfY2hjZmdfdXNiLCBcXHUwMDI2cnR3ODg1MWJfaGZjX3B1YmNmZ191c2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmM9OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTFiX2RsZV9tZW1fcGNpZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTExMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmM6MTEzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUxYl9kbGVfbWVtX3VzYjJbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtMTE0LVxcdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcXHUwMDI2cnR3ODlfbWFjX3NpemUud2RlX3NpemUzMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYy0xMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjEyNjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MWJfZGxlX21lbV91c2IzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTEyNy1cXHRbUlRXODlfUVRBX1NDQ10gPSB7UlRXODlfUVRBX1NDQywgXFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMzAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6MTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyBydHc4ODUxYl91c2JfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTEyLVxcdC51c2JfaG9zdF9yZXF1ZXN0XzJcXHRcXHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYz02Mj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTFidV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY0LVxcdC5pZF90YWJsZSA9IHJ0d184ODUxYnVfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2NTpcXHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2NjpcXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYz00Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MmFfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUyYV9oZmNfY2hjZmdfdXNiW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTUyLVxcdHsyMiwgNDAyLCBncnBfMH0sIC8qIEFDSCAwICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3B1Yl9jZmcgcnR3ODg1MmFfaGZjX3B1YmNmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTY4LVxcdDUxMiwgLyogR3JvdXAgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYzo3NDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wcmVjX2NmZyBydHc4ODUyYV9oZmNfcHJlY2NmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTc1LVxcdDExLCAvKiBDSCAwLTExIHByZS1jb3N0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4ODUyYV9oZmNfcGFyYW1faW5pX3VzYltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYy04Ni1cXHRbUlRXODlfUVRBX1NDQ10gPSB7cnR3ODg1MmFfaGZjX2NoY2ZnX3VzYiwgXFx1MDAyNnJ0dzg4NTJhX2hmY19wdWJjZmdfdXNiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jPTkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUyYV9kbGVfbWVtX3BjaWVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjExMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmFfZGxlX21lbV91c2JbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtMTExLVxcdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcXHUwMDI2cnR3ODlfbWFjX3NpemUud2RlX3NpemUxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmFfdXNiX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy0xMi1cXHQudXNiX2hvc3RfcmVxdWVzdF8yXFx0XFx0PSBSX0FYX1VTQl9IT1NUX1JFUVVFU1RfMixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03OC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmF1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6ODA6XFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgxLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmM9NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTJiX2hmY19wYXJhbV9pbmlfcGNpZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYzo1MjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19jaF9jZmcgcnR3ODg1MmJfaGZjX2NoY2ZnX3VzYltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy01My1cXHR7MTgsIDIxMCwgZ3JwXzB9LCAvKiBBQ0ggMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYzo2ODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg4NTJiX2hmY19wdWJjZmdfdXNiID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy02OS1cXHQyMTAsIC8qIEdyb3VwIDAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy03NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmM6NzU6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcHJlY19jZmcgcnR3ODg1MmJfaGZjX3ByZWNjZmdfdXNiID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy03Ni1cXHQ5LCAvKiBDSCAwLTExIHByZS1jb3N0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMtODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jOjg2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4ODUyYl9oZmNfcGFyYW1faW5pX3VzYltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy04Ny1cXHRbUlRXODlfUVRBX1NDQ10gPSB7cnR3ODg1MmJfaGZjX2NoY2ZnX3VzYiwgXFx1MDAyNnJ0dzg4NTJiX2hmY19wdWJjZmdfdXNiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jPTk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUyYl9kbGVfbWVtX3BjaWVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy0xMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jOjExMTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmJfZGxlX21lbV91c2IzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTExMi1cXHRbUlRXODlfUVRBX1NDQ10gPSB7UlRXODlfUVRBX1NDQywgXFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMzAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6MTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyBydHc4ODUyYl91c2JfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEyLVxcdC51c2JfaG9zdF9yZXF1ZXN0XzJcXHRcXHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYz03Nj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJidV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTc4LVxcdC5pZF90YWJsZSA9IHJ0d184ODUyYnVfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo3OTpcXHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo4MDpcXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtODEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYz00Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MmNfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUyY19oZmNfY2hjZmdfdXNiW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTU1LVxcdHsxOCwgMzQ0LCBncnBfMH0sIC8qIEFDSCAwICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjcwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3B1Yl9jZmcgcnR3ODg1MmNfaGZjX3B1YmNmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTcxLVxcdDM0NCwgLyogR3JvdXAgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYzo3NzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wcmVjX2NmZyBydHc4ODUyY19oZmNfcHJlY2NmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTc4LVxcdDksIC8qIENIIDAtMTEgcHJlLWNvc3QgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTJjX2hmY19wYXJhbV9pbmlfdXNiW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTg5LVxcdFtSVFc4OV9RVEFfU0NDXSA9IHtydHc4ODUyY19oZmNfY2hjZmdfdXNiLCBcXHUwMDI2cnR3ODg1MmNfaGZjX3B1YmNmZ191c2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmM9OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTJjX2RsZV9tZW1fcGNpZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTEwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmM6MTA5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUyY19kbGVfbWVtX3VzYjJbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtMTEwLVxcdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcXHUwMDI2cnR3ODlfbWFjX3NpemUud2RlX3NpemUzMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYy0xMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjEyMjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmNfZGxlX21lbV91c2IzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTEyMy1cXHRbUlRXODlfUVRBX1NDQ10gPSB7UlRXODlfUVRBX1NDQywgXFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMTcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6MTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyBydHc4ODUyY191c2JfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEyLVxcdC51c2JfaG9zdF9yZXF1ZXN0XzJcXHRcXHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yX1YxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYz0xMzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyY3VfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy0xMzgtXFx0LmlkX3RhYmxlID0gcnR3Xzg4NTJjdV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjEzOTpcXHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzoxNDA6XFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTE0MS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jPTEwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg5MjJhX2hmY19wdWJjZmdfcDggPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzoxMTA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg5MjJhX2hmY19wYXJhbV9pbmlfdXNiMltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0xMTEtXFx0W1JUVzg5X1FUQV9TQ0NdID0ge3J0dzg5MjJhX2hmY19jaGNmZ19jaDcsIFxcdTAwMjZydHc4OTIyYV9oZmNfcHViY2ZnX3A3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jPTE2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg5MjJhX2hmY19wdWJjZmdfcDUgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzoxNzA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg5MjJhX2hmY19wYXJhbV9pbmlfdXNiM1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0xNzEtXFx0W1JUVzg5X1FUQV9TQ0NdID0ge3J0dzg5MjJhX2hmY19jaGNmZ19jaDQsIFxcdTAwMjZydHc4OTIyYV9oZmNfcHViY2ZnX3A0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jPTE4MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODkyMmFfZGxlX21lbV9wY2llW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzoyMDA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg5MjJhX2RsZV9tZW1fdXNiMltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0yMDEtXFx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFxcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTdfdjEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzoyMjA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg5MjJhX2RsZV9tZW1fdXNiM1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0yMjEtXFx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFxcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTRfdjEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM9ODQyPXN0YXRpYyBpbnQgcnR3ODkyMmFfcmVhZF9lZnVzZV9wY2lfc2RpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTg1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6ODU0OnN0YXRpYyBpbnQgcnR3ODkyMmFfcmVhZF9lZnVzZV91c2Ioc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtODU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYz04NzY9c3RhdGljIGludCBydHc4OTIyYV9yZWFkX2VmdXNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtODg2LVxcdGNhc2UgUlRXODlfRUZVU0VfQkxPQ0tfSENJX0RJR19VU0I6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjg4NzpcXHRcXHRyZXQgPSBydHc4OTIyYV9yZWFkX2VmdXNlX3VzYihydHdkZXYsIGxvZ19tYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy04ODgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM9MzIwMT1jb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJhX2NoaXBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0zMjI3LVxcdFxcdC5oZmNfcGFyYW1faW5pXFx0PSB7cnR3ODkyMmFfaGZjX3BhcmFtX2luaV9wY2llLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzozMjI4OlxcdFxcdFxcdFxcdCAgIHJ0dzg5MjJhX2hmY19wYXJhbV9pbmlfdXNiMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6MzIyOTpcXHRcXHRcXHRcXHQgICBydHc4OTIyYV9oZmNfcGFyYW1faW5pX3VzYjMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTMyMzAtXFx0XFx0XFx0XFx0ICAgTlVMTH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTMyMzEtXFx0XFx0LmRsZV9tZW1cXHQ9IHtydHc4OTIyYV9kbGVfbWVtX3BjaWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjMyMzI6XFx0XFx0XFx0XFx0ICAgcnR3ODkyMmFfZGxlX21lbV91c2IyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzozMjMzOlxcdFxcdFxcdFxcdCAgIHJ0dzg5MjJhX2RsZV9tZW1fdXNiMyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMzIzNC1cXHRcXHRcXHRcXHQgICBOVUxMfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjEwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODkyMmFfdXNiX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy0xMS1cXHQudXNiX2hvc3RfcmVxdWVzdF8yXFx0XFx0PSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYz0zMT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RyaXZlcl9pbmZvIHJ0dzg5Xzg5MjJhdV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy0zNy1cXHQuYnVzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6Mzg6XFx0XFx0LnVzYiA9IFxcdTAwMjZydHc4OTIyYV91c2JfaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTM5LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jPTc3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODkyMmF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtNzktXFx0LmlkX3RhYmxlID0gcnR3Xzg5MjJhdV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgwOlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgxOlxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04Mi19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTg1OT1zdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfZWZ1c2VfcGNpX3NkaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04NzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjg3MTpzdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfZWZ1c2VfdXNiKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM9OTE5PXN0YXRpYyBpbnQgcnR3ODkyMmRfcmVhZF9lZnVzZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTkyNS1cXHRjYXNlIFJUVzg5X0VGVVNFX0JMT0NLX0hDSV9ESUdfVVNCOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo5MjY6XFx0XFx0cmV0dXJuIHJ0dzg5MjJkX3JlYWRfZWZ1c2VfdXNiKHJ0d2RldiwgbG9nX21hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTkyNy1cXHRjYXNlIFJUVzg5X0VGVVNFX0JMT0NLX1JGOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yZWFkX3BvcnRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTQ6c3RhdGljIHZvaWQgX19ydHc4OV91c2JfdmVuZG9ycmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNS1cXHRcXHRcXHRcXHQgIHZvaWQgKmRhdGEsIHUxNiBsZW4sIHU4IHJlcXR5cGUsIGJvb2wgd2FybilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOC1cXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHJ0d3VzYi1cXHUwMDNldWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MjpzdGF0aWMgdm9pZCBydHc4OV91c2JfdmVuZG9ycmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03My1cXHRcXHRcXHRcXHR2b2lkICpkYXRhLCB1MTYgbGVuLCB1OCByZXF0eXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzU6XFx0X19ydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgZGF0YSwgbGVuLCByZXF0eXBlLCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc2LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Nzg6c3RhdGljIHUzMiBydHc4OV91c2JfcmVhZF9jbWFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg3LVxcdGZvciAoY291bnQgPSAwOyA7IGNvdW50KyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg4OlxcdFxcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyMzIsIFxcdTAwMjZkYXRhLCA0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODktXFx0XFx0XFx0XFx0ICAgIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA4OnN0YXRpYyB1OCBydHc4OV91c2Jfb3BzX3JlYWQ4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTItXFx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTEzOlxcdFxcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTU6XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCAxLCBSVFc4OV9VU0JfVkVOUVRfUkVBRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyMDpzdGF0aWMgdTE2IHJ0dzg5X3VzYl9vcHNfcmVhZDE2KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjQtXFx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI1OlxcdFxcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjc6XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCAyLCBSVFc4OV9VU0JfVkVOUVRfUkVBRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEzMjpzdGF0aWMgdTMyIHJ0dzg5X3VzYl9vcHNfcmVhZDMyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzYtXFx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTM3OlxcdFxcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMzk6XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCA0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTQwLVxcdFxcdFxcdCAgICBSVFc4OV9VU0JfVkVOUVRfUkVBRCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE0NTpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3dyaXRlOChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1OCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNDk6XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCAxLCBSVFc4OV9VU0JfVkVOUVRfV1JJVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3dyaXRlMTYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTE2IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE1NjpcXHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXFx1MDAyNmRhdGEsIDIsIFJUVzg5X1VTQl9WRU5RVF9XUklURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTU5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfd3JpdGUzMihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTYzOlxcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBcXHUwMDI2ZGF0YSwgNCwgUlRXODlfVVNCX1ZFTlFUX1dSSVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNjY6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3dyaXRlMzJfcXVpZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3MDpcXHRfX3J0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBcXHUwMDI2ZGF0YSwgNCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE3MS1cXHRcXHRcXHQgICAgICBSVFc4OV9VU0JfVkVOUVRfV1JJVEUsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM9MTc0PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3NTpydHc4OV91c2Jfb3BzX2NoZWNrX2FuZF9yZWNsYWltX3R4X3Jlc291cmNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE3Ni1cXHRcXHRcXHRcXHRcXHQgICAgdTggdHhjaClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE3Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNzg6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE3OS1cXHRpbnQgaW5mbGlnaHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE5MTpzdGF0aWMgdm9pZCBydHc4OV91c2Jfd3JpdGVfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTkzOlxcdHN0cnVjdCBydHc4OV91c2JfdHhfY3RybF9ibG9jayAqdHhjYiA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5NC1cXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSB0eGNiLVxcdTAwM2VydHdkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxOTU6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5Ni1cXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI1OTpzdGF0aWMgaW50IHJ0dzg5X3VzYl93cml0ZV9wb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggY2hfZG1hLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjYwLVxcdFxcdFxcdFxcdHZvaWQgKmRhdGEsIGludCBsZW4sIHZvaWQgKmNvbnRleHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjYyOlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoyNjM6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvICppbmZvID0gcnR3dXNiLVxcdTAwM2VpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjY0LVxcdHN0cnVjdCB1c2JfZGV2aWNlICp1c2JkID0gcnR3dXNiLVxcdTAwM2V1ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNzktXFx0dXNiX2ZpbGxfYnVsa191cmIodXJiLCB1c2JkLCBwaXBlLCBkYXRhLCBsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoyODA6XFx0XFx0XFx0ICBydHc4OV91c2Jfd3JpdGVfcG9ydF9jb21wbGV0ZSwgY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yODEtXFx0dXJiLVxcdTAwM2V0cmFuc2Zlcl9mbGFncyB8PSBVUkJfWkVST19QQUNLRVQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMwMDpzdGF0aWMgdm9pZCBydHc4OV91c2JfdHhfZnJlZV9za2Ioc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eGNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzAxLVxcdFxcdFxcdFxcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzA5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfdHhfa2lja19vZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eGNoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzEwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMxMTpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzEyOlxcdHN0cnVjdCBydHc4OV91c2JfdHhfY3RybF9ibG9jayAqdHhjYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMxMy1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMjItXFx0XFx0aWYgKCF0eGNiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMjM6XFx0XFx0XFx0cnR3ODlfdXNiX3R4X2ZyZWVfc2tiKHJ0d2RldiwgdHhjaCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMyNC1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzM1OlxcdFxcdHJldCA9IHJ0dzg5X3VzYl93cml0ZV9wb3J0KHJ0d2RldiwgdHhjaCwgc2tiLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMzNi1cXHRcXHRcXHRcXHRcXHQgICB0eGNiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzQ1LVxcdFxcdFxcdGtmcmVlKHR4Y2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzQ2OlxcdFxcdFxcdHJ0dzg5X3VzYl90eF9mcmVlX3NrYihydHdkZXYsIHR4Y2gsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNDctXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozNTE6c3RhdGljIGludCBydHc4OV91c2JfdHhfd3JpdGVfZndjbWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzUyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODlfY29yZV90eF9yZXF1ZXN0ICp0eF9yZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1NC1cXHRzdHJ1Y3QgcnR3ODlfdHhfZGVzY19pbmZvICpkZXNjX2luZm8gPSBcXHUwMDI2dHhfcmVxLVxcdTAwM2VkZXNjX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozNTU6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1Ni1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gdHhfcmVxLVxcdTAwM2Vza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM5MzpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfdHhfd3JpdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzk0LVxcdFxcdFxcdFxcdCAgc3RydWN0IHJ0dzg5X2NvcmVfdHhfcmVxdWVzdCAqdHhfcmVxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTYtXFx0c3RydWN0IHJ0dzg5X3R4X2Rlc2NfaW5mbyAqZGVzY19pbmZvID0gXFx1MDAyNnR4X3JlcS1cXHUwMDNlZGVzY19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Mzk3OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTgtXFx0c3RydWN0IHJ0dzg5X3R4X3NrYl9kYXRhICpza2JfZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDEyLVxcdGlmIChkZXNjX2luZm8tXFx1MDAzZWNoX2RtYSA9PSBSVFc4OV9UWENIX0NIMTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo0MTM6XFx0XFx0cmV0dXJuIHJ0dzg5X3VzYl90eF93cml0ZV9md2NtZChydHdkZXYsIHR4X3JlcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00MTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQzNjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00Mzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM4OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3ODlfdXNiLCByeF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQzOTpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gKmluZm8gPSBydHd1c2ItXFx1MDAzZWluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo0NDA6XFx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gcnR3dXNiLVxcdTAwM2VydHdkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00NDEtXFx0c3RydWN0IHJ0dzg5X3J4X2Rlc2NfaW5mbyBkZXNjX2luZm87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjUwNzpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfcmVzdWJtaXQoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTA4OlxcdFxcdFxcdFxcdCAgc3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTA5LVxcdFxcdFxcdFxcdCAgZ2ZwX3QgZ2ZwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTEwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjUxMTpcXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSBydHd1c2ItXFx1MDAzZXJ0d2RldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUxMi1cXHRzdHJ1Y3Qgc2tfYnVmZiAqcnhfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MjktXFx0XFx0XFx0ICByeGNiLVxcdTAwM2VyeF9za2ItXFx1MDAzZWRhdGEsIFJUVzg5X1VTQl9SRUNWQlVGX1NaLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTMwOlxcdFxcdFxcdCAgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZSwgcnhjYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU1MjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfcmVzdWJtaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTU0OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3ODlfdXNiLCByeF91cmJfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NTU6XFx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTU2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjEtXFx0XFx0aWYgKCFyeGNiLVxcdTAwM2VyeF9za2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NjI6XFx0XFx0XFx0cnR3ODlfdXNiX3J4X3Jlc3VibWl0KHJ0d3VzYiwgcnhjYiwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NjY6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01Njcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTY4OlxcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYiA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2OS1cXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSByeGNiLVxcdTAwM2VydHdkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NzA6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU3MS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcnhjYi1cXHUwMDNlcnhfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1ODU6XFx0XFx0cnR3ODlfdXNiX3J4X3Jlc3VibWl0KHJ0d3VzYiwgcnhjYiwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01ODYtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjE3OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9jYW5jZWxfcnhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjE5OlxcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYyMC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjI4OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9jYW5jZWxfdHhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MzM6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2ZyZWVfcnhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MzQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjM1OlxcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzNi1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjQ0OnN0YXRpYyBpbnQgcnR3ODlfdXNiX2FsbG9jX3J4X2J1ZnMoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQ1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY0NjpcXHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NDctXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY1NC1cXHRcXHRpZiAoIXJ4Y2ItXFx1MDAzZXJ4X3VyYikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjU1OlxcdFxcdFxcdHJ0dzg5X3VzYl9mcmVlX3J4X2J1ZnMocnR3dXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY1Ni1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjYzOnN0YXRpYyBpbnQgcnR3ODlfdXNiX2luaXRfcngoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjY0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2NTpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjY2LVxcdHN0cnVjdCBza19idWZmICpyeF9za2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2OTpcXHRydHd1c2ItXFx1MDAzZXJ4d3EgPSBhbGxvY193b3JrcXVldWUoXFxcInJ0dzg5X3VzYjogcnggd3FcXFwiLCBXUV9CSCB8IFdRX1BFUkNQVSwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NzAtXFx0aWYgKCFydHd1c2ItXFx1MDAzZXJ4d3EpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Njc4OlxcdElOSVRfV09SSyhcXHUwMDI2cnR3dXNiLVxcdTAwM2VyeF93b3JrLCBydHc4OV91c2JfcnhfaGFuZGxlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Nzk6XFx0SU5JVF9XT1JLKFxcdTAwMjZydHd1c2ItXFx1MDAzZXJ4X3VyYl93b3JrLCBydHc4OV91c2JfcnhfcmVzdWJtaXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02ODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY5MDpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY5MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2OTI6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzAxOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9zdGFydF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzAzOlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDQtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwNi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUlRXODlfVVNCX1JYQ0JfTlVNOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDc6XFx0XFx0cnR3ODlfdXNiX3J4X3Jlc3VibWl0KHJ0d3VzYiwgXFx1MDAyNnJ0d3VzYi1cXHUwMDNlcnhfY2JbaV0sIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzA4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcxMDpzdGF0aWMgdm9pZCBydHc4OV91c2JfaW5pdF90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEyOlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MTMtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyMTpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcyMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MjM6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcyNC1cXHRpbnQgaTtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjoxNC4xMjg5NjAzNDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzg3ODkzOTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBgcnR3ODlgIGFuZCBVU0IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyB0aGUgYHJ0dzg5YCBkcml2ZXIsIHJpZ2h0PyBJIHNlZSBpdCBoYXMgVVNCIHN1cHBvcnQgYmFrZWQgaW4gKGBydHc4OV91c2IteSA6PSB1c2Iub2ApLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGEgcG90ZW50aWFsIHRhcmdldCBmb3IgVVNCIGZ1enppbmcuIFRoZSBkdW1teSBIQ0Qgc2V0dXAgb3BlbnMgdGhlIGRvb3IgZm9yIHRoYXQuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBzcGVjaWZpY2FsbHkgZW5hYmxlcyB0aGlzIFVTQiBmdW5jdGlvbmFsaXR5LiBMZXQncyBzdGFydCB3aXRoIGBDT05GSUdfUlRXODlfVVNCYC4gQnV0IGhvbGQgb24sIGJlZm9yZSBJIGdldCB0b28gZmFyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB1bmRlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIHRvIGdldCB0aGUgZGVmaW5pdGl2ZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBjb25maWcgb3B0aW9ucy4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjMwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6MTkuNTE2ODU2ODlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI3NzU5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg5X1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTE3PWNvbmZpZyBSVFc4OV9QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjoxOS41Njk2Mzg4NjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTc3Mjg3Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIg4oCTIHNwZWNpZmljYWxseSwgdGhlIGBydHc4OWAgc2VjdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQsIGFuZCBgS2NvbmZpZ2AgZmlsZXMgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIGZvciB0aGlzIGtpbmQgb2YgaW52ZXN0aWdhdGlvbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IGFyb3VuZCBsaW5lIDIwLCBhcyB0aGF0J3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZ3Jhc3AgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCB0aGUgaW5pdGlhbCBkZWZpbml0aW9ucyB0aGF0IHNldCB0aGUgc3RhZ2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIExldCdzIHNlZSB3aGF0IHdlIGNhbiB1bmNvdmVyIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTA1MywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjI3LjE0NjkyODQ0NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG4gICAyOlxcdG1lbnVjb25maWcgUlRXODlcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgbWFjODAyMTEtYmFzZWQgd2lyZWxlc3MgZHJpdmVycyB0aGF0XFxuICAgNzpcXHRcXHQgIGVuYWJsZXMgUmVhbHRlayBJRUVFIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBydHc4OS5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0aWYgUlRXODlcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIFJUVzg5X0NPUkVcXG4gIDE0OlxcdFxcdHRyaXN0YXRlXFxuICAxNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFJUVzg5X1BDSVxcbiAgMTg6XFx0XFx0dHJpc3RhdGVcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFJUVzg5X1VTQlxcbiAgMjE6XFx0XFx0dHJpc3RhdGVcXG4gIDIyOlxcdFxcbiAgMjM6XFx0Y29uZmlnIFJUVzg5Xzg4NTFCXFxuICAyNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25maWcgUlRXODlfODg1MkFcXG4gIDI3OlxcdFxcdHRyaXN0YXRlXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cXG4gIDMwOlxcdFxcdHRyaXN0YXRlXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBSVFc4OV84ODUyQlxcbiAgMzM6XFx0XFx0dHJpc3RhdGVcXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCVFxcbiAgMzY6XFx0XFx0dHJpc3RhdGVcXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIFJUVzg5Xzg4NTJDXFxuICAzOTpcXHRcXHR0cmlzdGF0ZVxcbiAgNDA6XFx0XFxuICA0MTpcXHRjb25maWcgUlRXODlfODkyMkFcXG4gIDQyOlxcdFxcdHRyaXN0YXRlXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBSVFc4OV84OTIyRFxcbiAgNDU6XFx0XFx0dHJpc3RhdGVcXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIFJUVzg5Xzg4NTFCRVxcbiAgNDg6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDUwOlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuICA1MTpcXHRcXHRzZWxlY3QgUlRXODlfUENJXFxuICA1MjpcXHRcXHRzZWxlY3QgUlRXODlfODg1MUJcXG4gIDUzOlxcdFxcdGhlbHBcXG4gIDU0OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTFCRSBjaGlwc2V0XFxuICA1NTpcXHRcXG4gIDU2OlxcdFxcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxuICA1NzpcXHRcXG4gIDU4OlxcdGNvbmZpZyBSVFc4OV84ODUxQlVcXG4gIDU5OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICA2MTpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAgNjI6XFx0XFx0c2VsZWN0IFJUVzg5X1VTQlxcbiAgNjM6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTFCXFxuICA2NDpcXHRcXHRoZWxwXFxuICA2NTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQlUgY2hpcHNldFxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQgIDgwMi4xMWF4IFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxuICA2ODpcXHRcXG4gIDY5OlxcdGNvbmZpZyBSVFc4OV84ODUyQUVcXG4gIDcwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA3MjpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAgNzM6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAgNzQ6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJBXFxuICA3NTpcXHRcXHRoZWxwXFxuICA3NjpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUyQUUgY2hpcHNldFxcbiAgNzc6XFx0XFxuICA3ODpcXHRcXHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNzk6XFx0XFxuICA4MDpcXHRjb25maWcgUlRXODlfODg1MkFVXFxuICA4MTpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA4MjpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgODM6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDg0OlxcdFxcdHNlbGVjdCBSVFc4OV9VU0JcXG4gIDg1OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbiAgODY6XFx0XFx0aGVscFxcbiAgODc6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFVIGNoaXBzZXRcXG4gIDg4OlxcdFxcbiAgODk6XFx0XFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgOTA6XFx0XFxuICA5MTpcXHRjb25maWcgUlRXODlfODg1MkJFXFxuICA5MjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA5MzpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgOTQ6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDk1OlxcdFxcdHNlbGVjdCBSVFc4OV9QQ0lcXG4gIDk2OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQlxcbiAgOTc6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxcbiAgOTg6XFx0XFx0aGVscFxcbiAgOTk6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJFIGNoaXBzZXRcXG4gMTAwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjoyNy4xNDcwMzQ0MjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ0OTg2MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIERyaXZlciBmb3IgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZHJpdmVyIHZpYSBVU0IuIEl0IGxvb2tzIGxpa2UgdGhlIGRyaXZlciBmb3IgdGhpcyBoYXJkd2FyZSBpcyByZWFjaGFibGUgdGhyb3VnaCBVU0Ig4oCTIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgVVNCIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlbGV2YW50IGhlcmUuIEkgc2VlIGEgbGlzdCBvZiBsaWtlbHkgY2FuZGlkYXRlczogYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYC4gSSdsbCB3YW50IHRvIGtlZXAgdGhvc2UgbmFtZXMgaW4gbWluZCBhcyBJIGRpZyBkZWVwZXIuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgX2Z3X3NldF9ncGlvYCBmdW5jdGlvbiBvciBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgaXMgZXhwb3NlZC4gVGhhdCdzIHVzdWFsbHkgdGhlIGtleSB0byBjb250cm9sbGluZyBoYXJkd2FyZS1sZXZlbCBmZWF0dXJlcywgc28gSSBuZWVkIHRvIGNvbmZpcm0gaXRzIGFjY2Vzc2liaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjMzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjozMS4xOTIwMjI3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0ODM4MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX2Z3X3NldF9ncGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzMzpzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzQyNT1zdGF0aWMgdm9pZCBfc2V0X2V4dF9pbnRlcmZhY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0My1cXHRcXHRpZiAoYnQxX3N3X3R5cGUgXFx1MDAzZSBCVENfU1dJVENIX0lOVEVSTkFMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0NDpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VOX01BUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ1LVxcdFxcdFxcdFxcdCAgICAgQklUKEJUQ19EQkdfR05UX0JUMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0Ny1cXHRcXHRcXHR2YWwgPSAoYnQxX3N3X3R5cGUgXFx1MDAzY1xcdTAwM2MgOCkgKyBCVENfREJHX0dOVF9CVDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0ODpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX01VWF9NQVAsIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDUzLVxcdGlmIChjeC1cXHUwMDNlYnRfZXh0Lmh3X2NvZXggXFx1MDAyNiBCVENfRVhUU09DX0lOVEZfUFRBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NTQ6XFx0XFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfSFBUQSwgY3gtXFx1MDAzZWJ0X2V4dC5ocHRhX2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTctXFx0aWYgKGN4LVxcdTAwM2VidF9leHQuaHdfY29leCBcXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9NQlgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ1ODpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9ITUJYLCBjeC1cXHUwMDNlYnRfZXh0LmhtYnhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ2MS1cXHRpZiAoY3gtXFx1MDAzZWJ0X2V4dC5od19jb2V4IFxcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX1NXSU8pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDYyOlxcdFxcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX1NXT1VULCBjeC1cXHUwMDNlYnRfZXh0LnN3b3V0X2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ2MzpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9TV0lOLCBjeC1cXHUwMDNlYnRfZXh0LnN3aW5fY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDY0LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6MzEuMjQ4NTEyNzY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODcxMDEzODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGVtYmVkZGVkIHN5c3RlbXMgZXhwZXJ0OlxuXG4qKlRyYWNpbmcgdGhlIFBpbiBDb25maWd1cmF0aW9uIExvZ2ljKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBleHRlcm5hbCBpbnRlcmZhY2VzIGFyZSBiZWluZyBzZXQgdXAuIEkgc2VlIHRoYXQgYF9zZXRfZXh0X2ludGVyZmFjZWAgaXMgcmVzcG9uc2libGUgZm9yIGNvbmZpZ3VyaW5nIHRoZXNlIHRoaW5ncy4gVGhhdCBtYWtlcyBzZW5zZSwgYSB0b3AtbGV2ZWwgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBoaWdoLWxldmVsIHNldHVwLiBCdXQgdGhlbiBJIHNwb3QgaXQ6IGBfZndfc2V0X2dwaW9gIGlzICpjYWxsZWQqIGJ5IGBfc2V0X2V4dF9pbnRlcmZhY2VgLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gU28sIGl0IGxvb2tzIGxpa2UgYF9md19zZXRfZ3Bpb2AgaXMgdGhlIGxvdy1sZXZlbCB3b3JraG9yc2UsIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IGludGVyYWN0cyB3aXRoIHRoZSBHUElPIChHZW5lcmFsIFB1cnBvc2UgSW5wdXQvT3V0cHV0KSByZWdpc3RlcnMgb24gdGhlIGhhcmR3YXJlLiBgX3NldF9leHRfaW50ZXJmYWNlYCBpcyBwcm9iYWJseSBjYWxsaW5nIGBfZndfc2V0X2dwaW9gIGluIG9yZGVyIHRvIHNldCB1cCB0aGUgcGlucyBwcm9wZXJseSBmb3IgdGhlIGV4dGVybmFsIGludGVyZmFjZS4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuLCB3aXRoIGEgaGlnaGVyLWxldmVsIGZ1bmN0aW9uIG1hbmFnaW5nIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gYW5kIHRoZW4gZGVsZWdhdGluZyB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgZGV0YWlscyB0byBhIGxvd2VyLWxldmVsIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgX2Z3X3NldF9ncGlvYCBhbmQgaG93IGl0J3MgdXNlZCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGUgcGluIGNvbmZpZ3VyYXRpb24gaXMgcmVhbGx5IHdvcmtpbmcuIFRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB0cmFjaW5nIHRoZSBleHRlcm5hbCBpbnRlcmZhY2Ugc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODk3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6MzUuMjM1NjE3MTM4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTA4ODAwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfc2V0X2V4dF9pbnRlcmZhY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMzMz1zdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDI1OnN0YXRpYyB2b2lkIF9zZXRfZXh0X2ludGVyZmFjZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQyNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NjkwPXN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3MTgtXFx0YnRjX2Z3X3NldF9tb25yZWcocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NzE5OlxcdF9zZXRfZXh0X2ludGVyZmFjZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3MjAtXFx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSLCBSVFc4OV9QSFlfMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjM1LjI4NjcxMDY4NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM5Mjk4NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiB0aGlzIGNvZGUsIGFuZCBwcmVzZW50ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBpcyB1bmZvbGRpbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGBfc2V0X2V4dF9pbnRlcmZhY2VgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCAqZGlyZWN0bHkqIGJ5IGBfc2V0X2luaXRfaW5mb2AuIFRoYXQncyBpbXBvcnRhbnQuIEl0J3Mgbm90IHNvbWUgaW5kaXJlY3QgY2FsbCB0aHJvdWdoIGFub3RoZXIgbGF5ZXIuIFRoaXMgbWVhbnMgdGhhdCBzZXR0aW5nIHRoZSBleHRlcm5hbCBpbnRlcmZhY2UgaXMgYSAqZGlyZWN0KiBjb25zZXF1ZW5jZSwgb3IgcGFydCwgb2Ygc2V0dGluZyB1cCB0aGUgaW5pdGlhbGl6YXRpb24gaW5mb3JtYXRpb24uIEkgY2FuIHByb2JhYmx5IGluZmVyIGZyb20gdGhpcyB0aGF0IGhvdyB3ZSBzZXQgdXAgdGhlIGV4dGVybmFsIGludGVyZmFjZSBpcyBwcmV0dHkgY2VudHJhbCB0byB0aGUgZWFybHkgc2V0dXAgYW5kIHByb2JhYmx5IGNyaXRpY2FsIHRvIGNvcmUgZnVuY3Rpb25hbGl0eSBsYXRlciBvbiwgb3IgaXQgd291bGRuJ3QgYmUgZGlyZWN0bHkgYXR0YWNoZWQgdG8gaW5pdCBpbmZvLiBOZWVkIHRvIGtlZXAgdGhpcyBjb25uZWN0aW9uIGluIG1pbmQgd2hlbiBJIGRlYnVnIGxhdGVyIG9uLiBHb3QgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTg4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6MzkuMDI2MDEyMDc2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQ2MDQzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfc2V0X2luaXRfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NjcxPXZvaWQgcnR3ODlfYnRjX250ZnlfcG93ZXJvZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY4OS0jZGVmaW5lIEJUQ19QTEFURk9STV9MSVRUTEVfRU5ESUFOIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NjkwOnN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg3MjM9dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODc3NDpcXHRfc2V0X2luaXRfaW5mbyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3NzUtXFx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSLCBSVFc4OV9QSFlfMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjM5LjA3NjQ3NjM5NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzY3NDM2MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IGRlZXAgaW4gdGhlIHdlZWRzIHdpdGggd2lyZWxlc3MgZHJpdmVyIGludGVybmFsczpcblxuKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlIGluIHJ0dzg5X2J0Y19udGZ5X2luaXQqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgcnR3ODlfYnRjX250ZnlfaW5pdGAsIGFuZCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBfc2V0X2luaXRfaW5mb2AuIFRoZSBjb2RlIGFyY2hpdGVjdHVyZSBpcyBkZXNpZ25lZCB0byBpbml0aWFsaXplIHRoZSBCVCBjby1leGlzdGVuY2UgZnVuY3Rpb25hbGl0eS4gRnJvbSBteSBleHBlcmllbmNlIHdpdGggd2lyZWxlc3MgZHJpdmVycywgdGhlIGZhY3QgdGhhdCBgX3NldF9pbml0X2luZm9gIGlzIGJlaW5nIGNhbGxlZCAqYnkqIGBydHc4OV9idGNfbnRmeV9pbml0YCBpcyBjcnVjaWFsLiBJdCB0ZWxscyBtZSB0aGF0IGBfc2V0X2luaXRfaW5mb2AgaXMgbGlrZWx5IGEgY29yZSwgZm91bmRhdGlvbmFsIGZ1bmN0aW9uIHdpdGhpbiB0aGUgQlQgY29leGlzdGVuY2Ugc2V0dXAuIEl0J3MgYWxtb3N0IGNlcnRhaW5seSB0aGUgcm91dGluZSB0aGF0IHBvcHVsYXRlcyBvciBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgbmVlZGVkIGZvciBwcm9wZXIgQmx1ZXRvb3RoIGFuZCBXaS1GaSBoYXJtb255LiBJ4oCZbSBiZXR0aW5nIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHByZS1wcm9jZXNzaW5nIHRoZSBpbml0aWFsIHNldHRpbmdzIHRvIGNvbmZpZ3VyZSBvciBwcmVwYXJlIHRoZSBzeXN0ZW0gZm9yIHRoZSByZXN0IG9mIHRoZSBCVC9XaS1GaSBjb2xsYWJvcmF0aW9uIGxvZ2ljIHRvIGZvbGxvdy4gSSBzaG91bGQgY2FyZWZ1bGx5IHJldmlldyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaW5pdGlhbGl6YXRpb24gZGF0YSBpcyBoYW5kbGVkIGFuZCB3aGVyZSBpdCBjb21lcyBmcm9tLiBUaGlzIGlzIGEgcG90ZW50aWFsIHN0YXJ0aW5nIHBvaW50IGZvciBkZWJ1Z2dpbmcgYW55IGlzc3VlcyB3aXRoIEJsdWV0b290aCBjb2V4aXN0ZW5jZSwgYXMgdGhpcyBpbml0aWFsaXphdGlvbiBzdGVwIGlzIGNsZWFybHkgY3JpdGljYWwgZm9yIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTg3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6NDIuODQzOTE2MTczWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjM0ODMwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9idGNfbnRmeV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg2OTA9c3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NzIzOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaD0zMjA9dm9pZCBydHc4OV9idGNfbnRmeV9wb3dlcm9mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oOjMyMTp2b2lkIHJ0dzg5X2J0Y19udGZ5X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaC0zMjItdm9pZCBydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz02NjU4PWludCBydHc4OV9jb3JlX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2OTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NjY5NTpcXHRydHc4OV9idGNfbnRmeV9pbml0KHJ0d2RldiwgQlRDX01PREVfTk9STUFMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02Njk2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0Njo0Mi44OTYyNzE2MjFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzNjQ5NzA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbml0aWFsaXNpbmcgdGhlIEJpdGNvaW4gTm90aWZpY2F0aW9uIFN5c3RlbSoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGF0IGBydHc4OV9idGNfbnRmeV9pbml0YCBpcyBpbnZva2VkIGJ5IGBydHc4OV9jb3JlX3N0YXJ0YC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgaXQgZ2l2ZXMgbWUgYSBjbGVhciBwb2ludCBvZiBlbnRyeS4gSXQgbWVhbnMgdGhhdCB0aGUgQml0Y29pbiBub3RpZmljYXRpb24gc3lzdGVtLCB3aGF0ZXZlciBpdCdzIGRvaW5nLCBpcyBpbml0aWFsaXplZCB3aGVuIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGBydHc4OWAgbW9kdWxlIGlzIHN0YXJ0ZWQuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHRoaXMgbm90aWZpY2F0aW9uIHN5c3RlbSBpcyBpbnRlZ3JhbCB0byB0aGUgb3ZlcmFsbCBvcGVyYXRpb24gb2YgdGhlIG1vZHVsZSBhbmQgdGhhdCBzdGFydGluZyB0aGUgY29yZSBlZmZlY3RpdmVseSBiZWdpbnMgdGhlIG1vbml0b3Jpbmcgb3Igbm90aWZpY2F0aW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byBkaWcgaW50byBgcnR3ODlfY29yZV9zdGFydGAgYW5kIHNlZSB3aGF0IHRyaWdnZXJzIHRoZSBCaXRjb2luIHN5c3RlbSB0byBhY3R1YWxseSBzdGFydCByZWNlaXZpbmcgbm90aWZpY2F0aW9ucywgd2hhdCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSBsb2FkZWQsIGFuZCB3aGF0IGV2ZW50cyBpdOKAmXMgd2F0Y2hpbmcgZm9yLCBidXQgdGhpcyBjb25maXJtcyB0aGF0IHRoZSBjb3JlIHN0YXJ0aW5nIHBvaW50IGlzIGFsc28gdGhlIGVudHJ5IHBvaW50IGZvciBCaXRjb2luIG5vdGlmaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDA2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6NDYuOTMyNzcwODQ5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA1NTQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9jb3JlX3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY2NTY9RVhQT1JUX1NZTUJPTChydHc4OV9jaGVja19xdWlya3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NjY1ODppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjY1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD05MzYyPXZvaWQgcnR3ODlfY29tcGxldGVfY29uZChzdHJ1Y3QgcnR3ODlfd2FpdF9pbmZvICp3YWl0LCB1bnNpZ25lZCBpbnQgY29uZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC05MzYzLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcnR3ODlfY29tcGxldGlvbl9kYXRhICpkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo5MzY0OmludCBydHc4OV9jb3JlX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtOTM2NS12b2lkIHJ0dzg5X2NvcmVfc3RvcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTU3PXN0YXRpYyBpbnQgcnR3ODlfb3BzX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2MzpcXHRyZXR1cm4gcnR3ODlfY29yZV9zdGFydChydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02NC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmM9MjU3PXZvaWQgcnR3ODlfbGVhdmVfaXBzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcHMuYy0yNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wcy5jOjI2NzpcXHRyZXQgPSBydHc4OV9jb3JlX3N0YXJ0KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wcy5jLTI2OC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0Njo0Ni45ODE4MzQyMDdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MzIyODE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBgcnR3ODlfY29yZV9zdGFydGAgZ2V0cyB0cmlnZ2VyZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGNvbWVzIG9ubGluZSwgdGhhbmtzIHRvIGBydHc4OV9vcHNfc3RhcnRgIGJlaW5nIGEgbWFjODAyMTEgY2FsbGJhY2suIFRoZSBjaGFuZ2Ugb2YgY29uY2VybiBpcyBpbiBgX2Z3X3NldF9ncGlvYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQgb2YgYSBkZWRpY2F0ZWQgZnV6emluZyBjYW1wYWlnbj8gSXQncyBmaXhpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2l0aGluIHRoZSBkcml2ZXIncyBzZXR1cCBwaGFzZS4gQ29uc2lkZXJpbmcgdGhlIGRyaXZlciAqaXMqIGFjY2Vzc2libGUgdGhyb3VnaCBVU0IgZHVtbXlfaGNkIGZ1enppbmcsIHRoZSB2dWxuZXJhYmlsaXR5IHNlZW1zIHBsYXVzaWJsZSwgYW5kIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgYF9md19zZXRfZ3Bpb2AgYW5kIGV4YW1pbmUgdGhlIHVzYWdlIG9mIGBCVENfREJHX05VTWAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0ODg4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjUxLjQ2NTA2NDk0NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE4MDQ4MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlRDX0RCR19OVU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI2MT1zdGF0aWMgdTggX2dldF9ncGlvc2lnX2Zvcl92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBzaWdfdjgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjc1LVxcdFxcdFxcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjc2OlxcdFxcdHJldHVybiBCVENfREJHX05VTTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjc3OlxcdH0gZWxzZSBpZiAoc2lnX3Y4IFxcdTAwM2U9IEJUQ19EQkdfTlVNKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI3OC1cXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjgwLVxcdFxcdFxcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjgxOlxcdFxcdHJldHVybiBCVENfREJHX05VTTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjgyLVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjg3PXN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF90b192ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwX3Y4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMwMy1cXHQvKiBiaXQgNC0zMTogc2hpZnQgcmlnaHQgYnkgMiBwb3NpdGlvbnMgKGJlY29tZSBiaXQgMi0yOSBpbiB2NykgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzA0OlxcdGZvciAoYml0ID0gQlRDX0RCR19CQ05fRUFSTFk7IGJpdCBcXHUwMDNjIEJUQ19EQkdfTlVNOyBiaXQrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMDUtXFx0XFx0aWYgKGVuX21hcF92OCBcXHUwMDI2IEJJVChiaXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMxMj1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfZnJvbV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMyNC1cXHQvKiBiaXQgMi0yOTogc2hpZnQgbGVmdCBieSAyIHBvc2l0aW9ucyAoYmVjb21lIGJpdCA0LTMxIGluIHY4KSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMjU6XFx0Zm9yIChiaXQgPSBCVENfREJHX0dOVF9CVDE7IGJpdCBcXHUwMDNjIEJUQ19EQkdfTlVNIC0gMjsgYml0KyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzI2LVxcdFxcdGlmIChlbl9tYXAgXFx1MDAyNiBCSVQoYml0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzM2ODpcXHRcXHRpZiAoZ3Bpby1cXHUwMDNlbXV4LmRhdGEuc2lnIFxcdTAwM2U9IEJUQ19EQkdfTlVNKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjktXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTE5ODI9c3RhdGljIGludCBfc2hvd19ncGlvX2RiZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIwMTY6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJUQ19EQkdfTlVNOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAxNy1cXHRcXHRpZiAoIShlbl9tYXAgXFx1MDAyNiBCSVQoaSkpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMjAtXFx0XFx0c2lnID0gdmVyLVxcdTAwM2VmY3hncGlvZGJnIFxcdTAwM2U9IDggPyBpIDogX2dldF9ncGlvc2lnX2Zvcl92ZXIocnR3ZGV2LCBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMjAyMTpcXHRcXHRpZiAoc2lnIFxcdTAwM2U9IEJUQ19EQkdfTlVNKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDIyLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzExOT1lbnVtIGJ0Y193bF9ncGlvX2RlYnVnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzE1ODpcXHRCVENfREJHX05VTSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTU5LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTYxPXN0cnVjdCBydHc4OV9idGNfZmJ0Y19ncGlvX2RiZ192MSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTY2LVxcdF9fbGUzMiBwcmVfc3RhdGU7IC8qIHRoZSBkZWJ1ZyBzaWduYWwgaXMgMSBvciAwICAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMxNjc6XFx0dTggZ3Bpb19tYXBbQlRDX0RCR19OVU1dOyAvKnRoZSBkZWJ1ZyBzaWduYWxzIHRvIEdQSU8tUG9zaXRpb24gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTY4LX0gX19wYWNrZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTcwPXN0cnVjdCBydHc4OV9idGNfZmJ0Y19ncGlvX2RiZ192NyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMxNzY6XFx0dTggZ3Bpb19tYXBbQlRDX0RCR19OVU1dO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjUxLjUxNjg3NDU4MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzU3NTY1NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZpeGluZyB0aGUgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgT3V0LW9mLUJvdW5kcyBBY2Nlc3MqKlxuXG5Pa2F5LCBzbyB0aGUgaXNzdWUgc2VlbXMgdG8gYmUgaW4gYF9md19zZXRfZ3Bpb2AsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jYC4gSSBjYW4gc2VlIHRoZSBjb2RlIG5vdywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBwcmV2ZW50aW5nIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBFc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlc2lnbmVkIHRvIG1ha2UgdGhlIGRyaXZlciBtb3JlIHJvYnVzdC4gSSdtIHRoaW5raW5nIHRoaXMgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZHVtbXlfaGNkIGZ1enppbmcsIHdoaWNoIG1lYW5zIHRoZSBhdHRhY2sgdmVjdG9yIGlzIHByZXR0eSB3ZWxsIGRlZmluZWQuXG5cblRvIHJlcHJvZHVjZSBhbmQgdmVyaWZ5IHRoaXMgZml4LCBJIG5lZWQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24uIExvb2tpbmcgYXQgaXQsIEknbGwgbmVlZCBgUlRXODlfVVNCYCBhbmQgb25lIG9mIHRoZSBzdXBwb3J0ZWQgVVNCIGRyaXZlcnMgbGlrZSBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTJCVWAsIGBSVFc4OV84ODUyQ1VgLCBgUlRXODlfODkyMkFVYCwgb3IgYFJUVzg5Xzg4NTFCVWAuIExldCBtZSBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG5Pa2F5LCBsZXQncyBzZWUuIGBSVFc4OV84ODUyQVVgIHNlbGVjdHMgYFJUVzg5X0NPUkVgLCBgUlRXODlfVVNCYCwgYW5kIGBSVFc4OV84ODUyQWAuIFNvIGp1c3QgZW5hYmxpbmcgYFJUVzg5Xzg4NTJBVWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIHZlcmlmaWNhdGlvbi4gSG93ZXZlciwgSSBzaG91bGQgYWxzbyBlbmFibGUgdGhlIG90aGVyIFVTQiBkcml2ZXJzLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGBSVFc4OV84OTIyQVVgLCBhbmQgYFJUVzg5Xzg4NTFCVWAsIGp1c3QgdG8gYmUgY29tcGxldGUuIEh1aCwgaXMgYFJUVzg5Xzg5MjJBVWAgbWlzc2luZyBmcm9tIHRoZSBLY29uZmlnIHNuaXBwZXQ/IExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBLY29uZmlnIGZpbGUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY4NTYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6MDAuMjc0NDQyNzI4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjA5OTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlRXODlfODkyMkFVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTQ5PWNvbmZpZyBSVFc4OV84OTIyQUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2Mzpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjAwLjMyNjU0OTgxNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjE3ODM2NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkVuYWJsaW5nIFdpcmVsZXNzIERyaXZlcnMgXHUwMDI2IERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZXNlIHNwZWNpZmljIFJlYWx0ZWsgd2lyZWxlc3MgY2hpcHNldHM6IGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGBSVFc4OV84OTIyQVVgLCBhbmQgYFJUVzg5Xzg4NTFCVWAuIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgZGVwZW5kZW5jaWVzLiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBJJ20gZXhwZWN0aW5nIHRvIHNlZSBgTUFDODAyMTFgIGFuZCBgVVNCYCBwb3BwaW5nIHVwIGFzIHJlcXVpcmVtZW50cy4gTm93LCBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCB1bmRlcnN0YW5kIHRoZSBpbnRlcm5hbCByZWxhdGlvbnNoaXBzLlxuXG5JIG5lZWQgdG8gcXVpY2tseSB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scywgdGhlIGhlYXJ0IG9mIHRoZXNlIGRyaXZlcnMuIEdvaW5nIHRocm91Z2ggdGhlIHN5bWJvbHMgbGlzdCwgSSBzZWUgdGhhdCBmdW5jdGlvbnMgbGlrZSBgX2Z3X3NldF9ncGlvYCwgYF9zZXRfZXh0X2ludGVyZmFjZWAsIGFuZCBgX3NldF9pbml0X2luZm9gIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCBsaWtlbHkgbWVhbnMgdGhleSdyZSBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zLCBub3QgZGlyZWN0bHkgZXhwb3NlZCB0byBvdGhlciBtb2R1bGVzLiBPbiB0aGUgb3RoZXIgaGFuZCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGFuZCBgcnR3ODlfY29yZV9zdGFydGAgYXJlIG5vbi1zdGF0aWM7IHRoaXMgcG9pbnRzIHRvIHRoZW0gcGxheWluZyBhIG1vcmUgc2lnbmlmaWNhbnQgcm9sZSBpbiB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLCBwZXJoYXBzIGFzIGluaXRpYWxpemF0aW9uIG9yIGNvcmUgZnVuY3Rpb25hbGl0eS4gVGhlIGZ1bmN0aW9uIGBydHc4OV9vcHNfc3RhcnRgIGlzIHN0YXRpYy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZGlnIGludG8gYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGFuZCBgcnR3ODlfY29yZV9zdGFydGAgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gVGhvc2UgYXJlIHRoZSBvbmVzIEkgbmVlZCB0byBleGFtaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg5MywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NzowNS45NDQzODg2OTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNDIyODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2J0Y19udGZ5X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODY5MD1zdGF0aWMgdm9pZCBfc2V0X2luaXRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3MjM6dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oPTMyMD12b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4Lmg6MzIxOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oLTMyMi12b2lkIHJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfaWR4LCB1OCBiYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY2NTg9aW50IHJ0dzg5X2NvcmVfc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjY5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo2Njk1OlxcdHJ0dzg5X2J0Y19udGZ5X2luaXQocnR3ZGV2LCBCVENfTU9ERV9OT1JNQUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjA1Ljk5NTgxNzYwM1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMxNjc2NDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkZvY3VzaW5nIEluIG9uIHRoZSBHUElPIEFzc2lnbm1lbnQqKlxuXG5BbHJpZ2h0LCBgcnR3ODlfYnRjX250ZnlfaW5pdGAgZmVlbHMgbGlrZSBhIHN0cm9uZyBsZWFkLiBUaGF0J3MgYSBzb2xpZCBmdW5jdGlvbiB0byB6ZXJvIGluIG9uLiBOb3csIG15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGRldGVybWluZSB0aGUgc2NvcGUgb2YgdGhpcyBHUElPIG1hbmlwdWxhdGlvbi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IGFsdGVybmF0aXZlIGVudHJ5IHBvaW50cyB0byB0aGUgYF9md19zZXRfZ3Bpb2AgZnVuY3Rpb24uIEkgYW0gZmFtaWxpYXIgd2l0aCB0aGUgY29tbW9uIGNvZGUtYmFzZXMgYW5kIHdvdWxkIGV4cGVjdCBhIGZldyBwb3NzaWJpbGl0aWVzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGFyZSByZWFjaGluZyBvdXQgYW5kIHRvdWNoaW5nIGl0IGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTY4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6MDkuMjI3NDk2NDY1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTg4MzY4MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX2Z3X3NldF9ncGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzMzpzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzQyNT1zdGF0aWMgdm9pZCBfc2V0X2V4dF9pbnRlcmZhY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0My1cXHRcXHRpZiAoYnQxX3N3X3R5cGUgXFx1MDAzZSBCVENfU1dJVENIX0lOVEVSTkFMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0NDpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VOX01BUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ1LVxcdFxcdFxcdFxcdCAgICAgQklUKEJUQ19EQkdfR05UX0JUMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0Ny1cXHRcXHRcXHR2YWwgPSAoYnQxX3N3X3R5cGUgXFx1MDAzY1xcdTAwM2MgOCkgKyBCVENfREJHX0dOVF9CVDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0ODpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX01VWF9NQVAsIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDUzLVxcdGlmIChjeC1cXHUwMDNlYnRfZXh0Lmh3X2NvZXggXFx1MDAyNiBCVENfRVhUU09DX0lOVEZfUFRBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NTQ6XFx0XFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfSFBUQSwgY3gtXFx1MDAzZWJ0X2V4dC5ocHRhX2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTctXFx0aWYgKGN4LVxcdTAwM2VidF9leHQuaHdfY29leCBcXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9NQlgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ1ODpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9ITUJYLCBjeC1cXHUwMDNlYnRfZXh0LmhtYnhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ2MS1cXHRpZiAoY3gtXFx1MDAzZWJ0X2V4dC5od19jb2V4IFxcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX1NXSU8pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDYyOlxcdFxcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX1NXT1VULCBjeC1cXHUwMDNlYnRfZXh0LnN3b3V0X2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ2MzpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9TV0lOLCBjeC1cXHUwMDNlYnRfZXh0LnN3aW5fY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDY0LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6MDkuNjI2MzM5NzI4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjE5OTc4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhpcy5cblxuKipUcmFjaW5nIHRoZSBEZXBlbmRlbmN5IENoYWluKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50LCB0aGUga2V5c3RvbmUgb2YgdGhlIGxvZ2ljLiBNeSBpbW1lZGlhdGUgaHVuY2ggaXMgdGhhdCBJIG5lZWQgdG8gem9vbSBpbiBvbiBgcnR3ODlfYnRjX250ZnlfaW5pdGAuIFRoZSBsb2dpYyBnb2VzIGxpa2UgdGhpczogYF9zZXRfZXh0X2ludGVyZmFjZWAgaXMgb25seSBldmVyIGNhbGxlZCBieSBgX2Z3X3NldF9ncGlvYC4gQW5kIGBfc2V0X2V4dF9pbnRlcmZhY2VgIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBmcm9tIGBfc2V0X2luaXRfaW5mb2AuIEFuZCBgX3NldF9pbml0X2luZm9gIGlzIG9ubHkgY2FsbGVkIGJ5IHRoYXQgYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGxpa2UgYSBwcmV0dHkgY2xlYXIgZGVwZW5kZW5jeSBjaGFpbiwgbGVhZGluZyBtZSByaWdodCB0byBgcnR3ODlfYnRjX250ZnlfaW5pdGAgYXMgdGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgaW50ZXJlc3QsIHRoZSBvbmUgZHJpdmluZyB0aGlzIGluaXRpYWxpemF0aW9uLiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXNuJ3QgZ2V0dGluZyBjYWxsZWQgYXMgc29tZSBzb3J0IG9mIGhlbHBlciBmdW5jdGlvbiB3aXRoaW4gYW5vdGhlciBiaWdnZXIgc2NvcGUuIEkgc2hvdWxkIGNoZWNrIHdoZXJlIGBydHc4OV9idGNfbnRmeV9pbml0YCBpdHNlbGYgaXMgY2FsbGVkLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBPa2F5LCBzbyBub3cgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBmdW5jdGlvbiBpdHNlbGYgaXMgY2FsbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDEzNCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NzoxNC40ODgzNDAzOTFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MDIyNTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2J0Y19udGZ5X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODY5MD1zdGF0aWMgdm9pZCBfc2V0X2luaXRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3MjM6dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oPTMyMD12b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4Lmg6MzIxOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oLTMyMi12b2lkIHJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfaWR4LCB1OCBiYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY2NTg9aW50IHJ0dzg5X2NvcmVfc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjY5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo2Njk1OlxcdHJ0dzg5X2J0Y19udGZ5X2luaXQocnR3ZGV2LCBCVENfTU9ERV9OT1JNQUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjE0LjU0MzM2NzM0OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQ5ODAyMTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgSW5xdWlyeTogRm9jdXNpbmcgb24gcnR3ODlfY29yZV9zdGFydCBhbmQgYnRjX250ZnlfaW5pdCoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIGluaXRpYWwgc3RhcnR1cCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgYHJ0dzg5X2NvcmVfc3RhcnRgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGNydWNpYWwgZW50cnkgcG9pbnQuIEFuZCBhbG9uZ3NpZGUgdGhhdCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGlzIGFsc28gYSBrZXkgc3ltYm9sIGZvciB0aGUgQmx1ZXRvb3RoIGNvLWV4aXN0ZW5jZSBub3RpZmljYXRpb24gaW5pdGlhbGl6YXRpb24uIEkgc2hvdWxkIHVzZSBib3RoIG9mIHRob3NlIGFzIG15IHByaW1hcnkgZm9jdXMgcG9pbnRzIGZvciBub3cuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQuIEknbSBzZWVpbmcgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYFJUVzg5Xzg5MjJBVWAsIGFuZCBgUlRXODlfODg1MUJVYC4gSSBuZWVkIHRvIHZlcmlmeSBgUlRXODlfODkyMkFVYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gUXVpY2sgY2hlY2suLi4gWWVwLCBpdCdzIHRoZXJlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYzYC4gR29vZC4gTm93LCBsZXQncyBzZWUgd2hhdCBvdGhlciBVU0Itc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZXhpc3QgYW5kIHNlZSBob3cgdGhleSBhcmUgb3JnYW5pemVkIHJlbGF0aXZlIHRvIHRoZXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAyNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NzoxOS4zOTMxNzE5OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3MDM1NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg5Xy4qVSRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz00Nz1jb25maWcgUlRXODlfODg1MUJFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjU4OmNvbmZpZyBSVFc4OV84ODUxQlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTY5PWNvbmZpZyBSVFc4OV84ODUyQUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6ODA6Y29uZmlnIFJUVzg5Xzg4NTJBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04MS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9OTE9Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTAzOmNvbmZpZyBSVFc4OV84ODUyQlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xMjc9Y29uZmlnIFJUVzg5Xzg4NTJDRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM4OmNvbmZpZyBSVFc4OV84ODUyQ1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTQ5PWNvbmZpZyBSVFc4OV84OTIyQUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2Mzpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjE5LjQ0MTg4NDM2OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjM3MDQ3NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3k6IEFkZHJlc3NpbmcgdGhlIE91dC1vZi1Cb3VuZHMgSXNzdWUqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEkgbmVlZCB0byBnZXQgdGhlc2UgY29uZmlndXJhdGlvbnMgaW4gcGxhY2U6IGBSVFc4OV84ODUxQlVgLCBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTJCVWAsIGBSVFc4OV84ODUyQ1VgLCBhbmQgYFJUVzg5Xzg5MjJBVWAuIFRoZXkgYWxsIG5lZWQgdG8gYmUgYWRkZWQgdG8gRW5hYmxlQ29uZmlncy4gQW5kIGRvbid0IGZvcmdldCBgUlRXODlfVVNCYCDigJMgaXQncyBjcnVjaWFsIGhlcmUuIFRoaXMgaXMgYWxsIGFib3V0IGEgZml4IGZvciB0aGF0IG5hc3R5IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGlzc3VlIEkgZm91bmQgaW4gYF9md19zZXRfZ3Bpb2AuIE5vdywgYmVjYXVzZSB0aGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiwgdGhlIHBsYW4ncyBjbGVhcjogYFdvcnRoRnV6emluZz10cnVlYC4gR290dGEgZ2V0IHRob3NlIGZ1enplcnMgcnVubmluZyB0byByZWFsbHkgZGlnIGludG8gdGhpcyB2dWxuZXJhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjIzNCwiT3V0cHV0VG9rZW5zIjoyMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6MjUuMDc4OTM1MjM4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE1MjU2ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84ODUyQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJDVVwiLFxuICAgIFwiUlRXODlfODkyMkFVXCIsXG4gICAgXCJSVFc4OV9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9idGNfbnRmeV9pbml0XCIsXG4gICAgXCJydHc4OV9jb3JlX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gYF9md19zZXRfZ3Bpb2Agd2l0aGluIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGZ1enppbmcgKGR1bW15X2hjZCkuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiAoYHJ0dzg5X2J0Y19udGZ5X2luaXRgIC1cXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVxcdTAwM2UgYF9zZXRfZXh0X2ludGVyZmFjZWAgLVxcdTAwM2UgYF9md19zZXRfZ3Bpb2ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84ODUyQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJDVVwiLFxuICAgIFwiUlRXODlfODkyMkFVXCIsXG4gICAgXCJSVFc4OV9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9idGNfbnRmeV9pbml0XCIsXG4gICAgXCJydHc4OV9jb3JlX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gYF9md19zZXRfZ3Bpb2Agd2l0aGluIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGZ1enppbmcgKGR1bW15X2hjZCkuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiAoYHJ0dzg5X2J0Y19udGZ5X2luaXRgIC1cXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVxcdTAwM2UgYF9zZXRfZXh0X2ludGVyZmFjZWAgLVxcdTAwM2UgYF9md19zZXRfZ3Bpb2ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NzoyNS4xNjA0NjgyOTVaIiwiU2VxIjozMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTgwMDE0NDY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjI1LjE2MTA0NTIxNVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNTE3OTk1NjM4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBfZndfc2V0X2dwaW9gIHdoZXJlIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCB3YXMgaW5jb3JyZWN0bHkgY2hlY2tlZCBhZ2FpbnN0IGAweGZmYCBpbnN0ZWFkIG9mIGBcXHUwMDNlPSBCVENfREJHX05VTWAuIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyBgQlRDX0RCR19OVU1gICh3aGljaCBpcyAzMikgb24gZXJyb3IuIEJlY2F1c2Ugb2YgdGhlIGluY29ycmVjdCBjaGVjaywgdGhlIGVycm9yIHZhbHVlIHdhcyBub3QgY2F1Z2h0IGFuZCB3YXMgc2VudCB0byB0aGUgZmlybXdhcmUgYXMgYSB2YWxpZCBzaWduYWwgSUQuIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFsbCBmaWVsZHMgb2YgdGhlIGBncGlvLVxcdTAwM2VtdXguZGF0YWAgc3RydWN0dXJlIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBjb3BpZWQgdG8gdGhlIGJ1ZmZlciBhbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoZXJlZm9yZSwgdGhpcyBidWcgY2Fubm90IGJlIGRldGVjdGVkIGJ5IEtNU0FOLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWZiMjg5YTYzZTE4ZTVhZTJhYTI0MTllOWMwNmI1ZGI5NGMxY2QyZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDAzOjQ2OjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuaW5kZXggNWE5ZGM0ZDhhMDBiYS4uMTJiZDU1MzllOGM2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuQEAgLTMzNjUsNyArMzM2NSw3IEBAIHN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG4gXHRcdGdwaW8tXHUwMDNlbXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xuIFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLnNpZyA9IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldixcbiBcdFx0XHRcdFx0XHRcdCAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCkpO1xuLVx0XHRpZiAoZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPT0gMHhmZilcbitcdFx0aWYgKGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG4gXHRcdFx0cmV0dXJuO1xuIFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLmdwaW8gPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XG4gXHRcdGwyX2gyYyA9IGdwaW8tXHUwMDNlbXV4LmZtdDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjI1LjE2MTA0NjI3NVoiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjQ3MDIwODM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWFsdGVrIFdpLUZpIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBjb2V4LmNgIHBhdGNoLiBJIHNlZSBhIGNvbmRpdGlvbiBjaGFuZ2UgcmlnaHQgYXdheTogYSBjb21wYXJpc29uIHRoYXQncyBnb25lIGZyb20gY2hlY2tpbmcgZm9yIGFuIGV4YWN0IHZhbHVlIG9mIGAweGZmYCB0byBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbC10byBjaGVjayBhZ2FpbnN0IGBCVENfREJHX05VTWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyAqaGFzKiB0byBiZSBzb21lIGtpbmQgb2YgYm91bmRzIGNoZWNrIG9yIHZhbGlkYXRpb24gbG9naWMuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBsaWtlbHkgdHJ5aW5nIHRvIGZpbHRlciBvdXQgYSBzcGVjaWZpYywgbGlrZWx5IGludmFsaWQsIHNpZ25hbCB2YWx1ZSwgYW5kIG5vdyBpdCdzIGdlbmVyYWxpemluZyB0aGF0IHRvIGEgcmFuZ2UuIEl0IG1ha2VzIG1lIHdvbmRlciB3aGF0IHRoZSBwdXJwb3NlIG9mIHRoZSBvcmlnaW5hbCBzcGVjaWZpYyBjaGVjayB3YXMuXG5cblRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZSdzIGltcGxpY2F0aW9ucyBmdWxseSwgSSBuZWVkIHRvIHNlZSBob3cgYGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnYCBpcyBiZWluZyB1c2VkIGFuZCB3aGF0IHRoZSBjb250ZXh0IG9mIHRoYXQgYDB4ZmZgIHZhbHVlIHdhcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBCVENfREJHX05VTWAgcmVwcmVzZW50cywgYW5kIHdoYXQgdGhlIHJhbmdlIGNvbXBhcmlzb24gaXMgaW50ZW5kZWQgdG8gZG8uXG5cblNvLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgYF9md19zZXRfZ3Bpb2AgYW5kIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAuIFRob3NlIGFyZSBteSBuZXh0IHN0ZXBzLiBUaGV5IHNob3VsZCByZXZlYWwgdGhlIGRhdGEgZmxvdyBhbmQgdGhlIG1lYW5pbmcgb2YgdGhvc2UgR1BJTyBzaWduYWxzLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgaWYgdGhlIGNoYW5nZSBpcyBhIGJ1ZyBmaXgsIGFuIG9wdGltaXphdGlvbiwgb3IsIHBvdGVudGlhbGx5LCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb2V4aXN0ZW5jZSBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjM3LjYzMTI1Njg4MVoiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzNTE3NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX2Z3X3NldF9ncGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzMzpzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzQyNT1zdGF0aWMgdm9pZCBfc2V0X2V4dF9pbnRlcmZhY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0My1cXHRcXHRpZiAoYnQxX3N3X3R5cGUgXFx1MDAzZSBCVENfU1dJVENIX0lOVEVSTkFMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0NDpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VOX01BUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ1LVxcdFxcdFxcdFxcdCAgICAgQklUKEJUQ19EQkdfR05UX0JUMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0Ny1cXHRcXHRcXHR2YWwgPSAoYnQxX3N3X3R5cGUgXFx1MDAzY1xcdTAwM2MgOCkgKyBCVENfREJHX0dOVF9CVDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0ODpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX01VWF9NQVAsIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDUzLVxcdGlmIChjeC1cXHUwMDNlYnRfZXh0Lmh3X2NvZXggXFx1MDAyNiBCVENfRVhUU09DX0lOVEZfUFRBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NTQ6XFx0XFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfSFBUQSwgY3gtXFx1MDAzZWJ0X2V4dC5ocHRhX2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTctXFx0aWYgKGN4LVxcdTAwM2VidF9leHQuaHdfY29leCBcXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9NQlgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ1ODpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9ITUJYLCBjeC1cXHUwMDNlYnRfZXh0LmhtYnhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ2MS1cXHRpZiAoY3gtXFx1MDAzZWJ0X2V4dC5od19jb2V4IFxcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX1NXSU8pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDYyOlxcdFxcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX1NXT1VULCBjeC1cXHUwMDNlYnRfZXh0LnN3b3V0X2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ2MzpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9TV0lOLCBjeC1cXHUwMDNlYnRfZXh0LnN3aW5fY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDY0LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6MzcuNjg0NjE3NDA5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1MjY0ODAwODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgX2Z3X3NldF9ncGlvYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IG1pbmQgaW1tZWRpYXRlbHkgd2VudCB0byB0aGF0IGBfZndfc2V0X2dwaW9gIGZ1bmN0aW9uLiBJdCdzIHVzdWFsbHkgYSBnb29kIGJldCwgZ2l2ZW4gdGhlIGxpbmUgbnVtYmVyIHJlZmVyZW5jZSAoMzM2NSksIHRoYXQgaXQncyBkZWFsaW5nIHdpdGggc29tZSBsb3ctbGV2ZWwgaGFyZHdhcmUgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgdGhhdCBpdCdzIGEga2V5IGZ1bmN0aW9uIGZvciBjb25maWd1cmluZyBvciBjb250cm9sbGluZyBhIEdQSU8gKEdlbmVyYWwgUHVycG9zZSBJbnB1dC9PdXRwdXQpIHBpbiDigJMgaXQncyBwcmFjdGljYWxseSBpbiB0aGUgbmFtZSwgYWZ0ZXIgYWxsISBLbm93aW5nIHRoYXQgR1BJT3MgYXJlIGZ1bmRhbWVudGFsIGZvciBpbnRlcmZhY2luZyB3aXRoIGV4dGVybmFsIGNvbXBvbmVudHMsIHNlbnNvcnMsIG9yIG90aGVyIGhhcmR3YXJlLCBJIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY3JpdGljYWwgdG8gdGhlIG92ZXJhbGwgc3lzdGVtJ3MgYmVoYXZpb3IgYW5kIGNvdWxkIGJlIGNlbnRyYWwgdG8gbXkgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UsIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIGNvZGUgY29udGV4dCwgYW5kIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1pZ2h0IG1hbmlwdWxhdGUuIEZyb20gdGhlIGxpbmUgbnVtYmVyLCBJJ20gZXhwZWN0aW5nIHRoaXMgaXMgYSBjb3JlIGZ1bmN0aW9uLCBwcm9iYWJseSB1c2VkIG1hbnkgcGxhY2VzLCBtYWtpbmcgaXQgYW4gaWRlYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcCBkaXZlLiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0OTMsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0Nzo0Ny4yMTExMDAyMDNaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAxNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzMzMsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMzMzM6XFx0c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcXG4zMzM0OlxcdHtcXG4zMzM1OlxcdFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4zMzM2OlxcdFxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3BpbyAqZ3BpbyA9IFxcdTAwMjZidGMtXFx1MDAzZWdwaW87XFxuMzMzNzpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuMzMzODpcXHRcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIgbDJfaDJjO1xcbjMzMzk6XFx0XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXzRiIGw0X2gyYztcXG4zMzQwOlxcdFxcdHU4IGdwaW9fdmVyID0gdmVyLVxcdTAwM2VmY3hncGlvZGJnO1xcbjMzNDE6XFx0XFx0dTggYnVmW3NpemVvZihsNF9oMmMpXTtcXG4zMzQyOlxcdFxcdHU4IGxlbjtcXG4zMzQzOlxcdFxcbjMzNDQ6XFx0XFx0aWYgKGdwaW9fdmVyIFxcdTAwM2MgOCBcXHUwMDI2XFx1MDAyNiB0eXBlIFxcdTAwM2UgQ1hER1BJT19NVVhfTUFQKVxcbjMzNDU6XFx0XFx0XFx0cmV0dXJuO1xcbjMzNDY6XFx0XFxuMzM0NzpcXHRcXHRpZiAodHlwZSBcXHUwMDNlPSBDWERHUElPX01BWClcXG4zMzQ4OlxcdFxcdFxcdHJldHVybjtcXG4zMzQ5OlxcdFxcbjMzNTA6XFx0XFx0c3dpdGNoICh0eXBlKSB7XFxuMzM1MTpcXHRcXHRjYXNlIENYREdQSU9fRU5fTUFQOiAvKiBHUElPIGRlYnVnIHNpZ25hbCBlbi1tYXAgMH4zMSAqL1xcbjMzNTI6XFx0XFx0XFx0dmFsID0gX2NvbnZlcnRfZ3Bpb19lbm1hcF90b192ZXIocnR3ZGV2LCB2YWwpO1xcbjMzNTM6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZW5fbWFwLmRhdGEudHlwZSA9IENYREdQSU9fRU5fTUFQO1xcbjMzNTQ6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZW5fbWFwLmRhdGEuZnZlciA9IGdwaW9fdmVyO1xcbjMzNTU6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZW5fbWFwLmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0w0O1xcbjMzNTY6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZW5fbWFwLmRhdGEuZW5fbWFwID0gdmFsO1xcbjMzNTc6XFx0XFx0XFx0bDRfaDJjID0gZ3Bpby1cXHUwMDNlZW5fbWFwLmZtdDtcXG4zMzU4OlxcdFxcdFxcdHB1dF91bmFsaWduZWRfbGUzMih2YWwsICh1MzIgKilsNF9oMmMuZGF0YSk7XFxuMzM1OTpcXHRcXHRcXHRtZW1jcHkoYnVmLCBcXHUwMDI2bDRfaDJjLCBzaXplb2YobDRfaDJjKSk7XFxuMzM2MDpcXHRcXHRcXHRsZW4gPSBzaXplb2YobDRfaDJjKTtcXG4zMzYxOlxcdFxcdFxcdGJyZWFrO1xcbjMzNjI6XFx0XFx0Y2FzZSBDWERHUElPX01VWF9NQVA6IC8qIEdQSU8gZGJnOiBTaWduYWwgdG8gR1BJTyBNdXggKi9cXG4zMzYzOlxcdFxcdFxcdGdwaW8tXFx1MDAzZW11eC5kYXRhLnR5cGUgPSBDWERHUElPX01VWF9NQVA7XFxuMzM2NDpcXHRcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5mdmVyID0gZ3Bpb192ZXI7XFxuMzM2NTpcXHRcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5kbGVuID0gQ1hER1BJT19TRVRfTDI7XFxuMzM2NjpcXHRcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5zaWcgPSBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsXFxuMzM2NzpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpKTtcXG4zMzY4OlxcdFxcdFxcdGlmIChncGlvLVxcdTAwM2VtdXguZGF0YS5zaWcgXFx1MDAzZT0gQlRDX0RCR19OVU0pXFxuMzM2OTpcXHRcXHRcXHRcXHRyZXR1cm47XFxuMzM3MDpcXHRcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5ncGlvID0gRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCB2YWwpO1xcbjMzNzE6XFx0XFx0XFx0bDJfaDJjID0gZ3Bpby1cXHUwMDNlbXV4LmZtdDtcXG4zMzcyOlxcdFxcdFxcdG1lbWNweShidWYsIFxcdTAwMjZsMl9oMmMsIHNpemVvZihsMl9oMmMpKTtcXG4zMzczOlxcdFxcdFxcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xcbjMzNzQ6XFx0XFx0XFx0YnJlYWs7XFxuMzM3NTpcXHRcXHRjYXNlIENYREdQSU9fRVhUX0hQVEE6IC8qIEdQSU8gY29uZmlnIGZvciBFeHQgSFctUFRBICovXFxuMzM3NjpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEudHlwZSA9IENYREdQSU9fRVhUX0hQVEE7XFxuMzM3NzpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEuZnZlciA9IGdwaW9fdmVyO1xcbjMzNzg6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3B0YS5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcXG4zMzc5OlxcdFxcdFxcdGdwaW8tXFx1MDAzZWV4dF9wdGEuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XFxuMzM4MDpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEubWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XFxuMzM4MTpcXHRcXHRcXHRsMl9oMmMgPSBncGlvLVxcdTAwM2VleHRfcHRhLmZtdDtcXG4zMzgyOlxcdFxcdFxcdG1lbWNweShidWYsIFxcdTAwMjZsMl9oMmMsIHNpemVvZihsMl9oMmMpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6NDcuMjExNTA0MTMzWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTQ0MjA3MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGNoYW5nZSBhbmQgaW1tZWRpYXRlbHkgcmVjb2duaXplIGl0IGFzIGEgYm91bmRzIGNoZWNrLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgcHJldHR5IHNsb3BweSwgb25seSBjaGVja2luZyBmb3IgYSBzcGVjaWZpYyB2YWx1ZSAoMHhmZikgaW4gYGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnYC4gTXkgZmllbGQgZXhwZXJpZW5jZSBpcyB0aGF0IHRoaXMgaXMgdXN1YWxseSBhIHN5bXB0b20gb2YgYSBsYXJnZXIgcHJvYmxlbS4gVGhlIGNoYW5nZSBpcyByZXBsYWNpbmcgaXQgd2l0aCBhIG1vcmUgcm9idXN0IGNoZWNrOiBgZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgXHUwMDNlPSBCVENfREJHX05VTWAuIFRoYXQgYEJUQ19EQkdfTlVNYCBjb25zdGFudCBpcyB0aGUga2V5IGhlcmUuIEl0J3MgYWxtb3N0IGNlcnRhaW5seSBkZWZpbmluZyBhbiB1cHBlciBib3VuZCBvbiB3aGF0J3MgY29uc2lkZXJlZCBhIHZhbGlkIHNpZ25hdHVyZSB2YWx1ZS4gR29vZCwgdGhhdCdzIHdoYXQgSSB3YW50IHRvIHNlZSDigJMgcHJvcGVyIHZhbGlkYXRpb24uXG5cbk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMuIFdoYXQgZGlkIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJuPyBJIHdvdWxkIHN1c3BlY3QgYSByYW5nZSB0byBlbnN1cmUgc2FmZXR5LiBUaGlzIGlzIGFuIGltcHJvdmVtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTIxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0ODoxNy4xNTU3MTQwMjVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1Mzg3Mzg1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfZ2V0X2dwaW9zaWdfZm9yX3ZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjEwPXN0YXRpYyB2b2lkIF9md19zZXRfcG9saWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjYxOnN0YXRpYyB1OCBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHNpZ192OClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjUtXFx0XFx0Z3Bpby1cXHUwMDNlbXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzNjY6XFx0XFx0Z3Bpby1cXHUwMDNlbXV4LmRhdGEuc2lnID0gX2dldF9ncGlvc2lnX2Zvcl92ZXIocnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xMTk4Mj1zdGF0aWMgaW50IF9zaG93X2dwaW9fZGJnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMjAyMDpcXHRcXHRzaWcgPSB2ZXItXFx1MDAzZWZjeGdwaW9kYmcgXFx1MDAzZT0gOCA/IGkgOiBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDIxLVxcdFxcdGlmIChzaWcgXFx1MDAzZT0gQlRDX0RCR19OVU0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ4OjE3LjUwOTU5MzE0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3ODk4NjMxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXBseSBmYW1pbGlhciB3aXRoIGNvZGUgYW5kIEdQSU8gc2lnbmFsczpcblxuKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uOiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgZnVuY3Rpb246IGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAuIFRoZSBuYW1lIGl0c2VsZiBpcyBmYWlybHkgZGVzY3JpcHRpdmUsIHN1Z2dlc3RpbmcgaXQncyBkZXNpZ25lZCB0byByZXRyaWV2ZSBhIEdQSU8gKEdlbmVyYWwgUHVycG9zZSBJbnB1dC9PdXRwdXQpIHNpZ25hbCBzcGVjaWZpYyB0byBhIFwidmVyXCIgLSBwcmVzdW1hYmx5IGEgdmVyc2lvbiwgdmVyaWZpY2F0aW9uLCBvciB2YWxpZGF0aW9uIGNvbnRleHQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknZCBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBob3cgR1BJT3MgYXJlIHV0aWxpemVkIGluIHRoaXMgc3lzdGVtIOKAkyBpcyBpdCBmb3IgaGFyZHdhcmUgaGFuZHNoYWtlcywgc2lnbmFsaW5nIHN0YXRlIGNoYW5nZXMsIG9yIHBlcmhhcHMgZXZlbiB0cmlnZ2VyaW5nIHNwZWNpZmljIHRlc3Qgcm91dGluZXMgYmFzZWQgb24gYSBkZXRlY3RlZCB2ZXJzaW9uPyBJIGtub3cgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBHUElPcyBhcmUgdXNlZCBpcyBjcnVjaWFsIHdoZW4gZGVidWdnaW5nIG9yIG1vZGlmeWluZyBlbWJlZGRlZCBzeXN0ZW1zLiBUaGUgdXNlIG9mIFwidW5kZXJzY29yZVwiIGFzIGEgbGVhZGluZyBjaGFyYWN0ZXIgYWxzbyBzdWdnZXN0cyB0aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2UsIG5vdCBkaXJlY3QgZXh0ZXJuYWwgYWNjZXNzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludC4gTGV0J3Mgc2VlIGhvdyBpdCBvcGVyYXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc5MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ4OjI1LjI5OTQ1ODM2N1oiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTIwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzI2MSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzI2MTpcXHRzdGF0aWMgdTggX2dldF9ncGlvc2lnX2Zvcl92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBzaWdfdjgpXFxuMzI2MjpcXHR7XFxuMzI2MzpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVxcdTAwM2VidGMudmVyO1xcbjMyNjQ6XFx0XFxuMzI2NTpcXHRcXHQvKiB2ODogZ3Bpb192ZXIgXFx1MDAzZT0gOCwgZGlyZWN0bHkgdXNlIHY4IHNpZ25hbCBJRCAqL1xcbjMyNjY6XFx0XFx0aWYgKHZlci1cXHUwMDNlZmN4Z3Bpb2RiZyBcXHUwMDNlPSA4KVxcbjMyNjc6XFx0XFx0XFx0cmV0dXJuIHNpZ192ODtcXG4zMjY4OlxcdFxcbjMyNjk6XFx0XFx0Lyogdjc6IGdwaW9fdmVyIFxcdTAwM2MgOCwgY29udmVydCB2OCBzaWduYWwgSUQgdG8gdjcgc2lnbmFsIElEICovXFxuMzI3MDpcXHRcXHRpZiAoc2lnX3Y4IFxcdTAwM2M9IEJUQ19EQkdfR05UX1dMKSB7XFxuMzI3MTpcXHRcXHRcXHRyZXR1cm4gc2lnX3Y4O1xcbjMyNzI6XFx0XFx0fSBlbHNlIGlmIChzaWdfdjggXFx1MDAzYz0gQlRDX0RCR19HTlRfV0wxKSB7XFxuMzI3MzpcXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuMzI3NDpcXHRcXHRcXHRcXHQgICAgXFxcIltCVENdLCAlcygpOiBzaWcgJWQgbm90IHN1cHBvcnRlZCBpbiB2N1xcXFxuXFxcIixcXG4zMjc1OlxcdFxcdFxcdFxcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcXG4zMjc2OlxcdFxcdFxcdHJldHVybiBCVENfREJHX05VTTtcXG4zMjc3OlxcdFxcdH0gZWxzZSBpZiAoc2lnX3Y4IFxcdTAwM2U9IEJUQ19EQkdfTlVNKSB7XFxuMzI3ODpcXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuMzI3OTpcXHRcXHRcXHRcXHQgICAgXFxcIltCVENdLCAlcygpOiBzaWcgJWQgbm90IGF2YWlsYWJsZVxcXFxuXFxcIixcXG4zMjgwOlxcdFxcdFxcdFxcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcXG4zMjgxOlxcdFxcdFxcdHJldHVybiBCVENfREJHX05VTTtcXG4zMjgyOlxcdFxcdH0gZWxzZSB7XFxuMzI4MzpcXHRcXHRcXHRyZXR1cm4gc2lnX3Y4IC0gMjtcXG4zMjg0OlxcdFxcdH1cXG4zMjg1OlxcdH1cXG4zMjg2OlxcdFxcbjMyODc6XFx0c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX3RvX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXBfdjgpXFxuMzI4ODpcXHR7XFxuMzI4OTpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVxcdTAwM2VidGMudmVyO1xcbjMyOTA6XFx0XFx0dTMyIGVuX21hcF92NyA9IDA7XFxuMzI5MTpcXHRcXHR1MzIgYml0O1xcbjMyOTI6XFx0XFxuMzI5MzpcXHRcXHQvKiB2ODogZ3Bpb192ZXIgXFx1MDAzZT0gOCwgZGlyZWN0bHkgdXNlIHY4IGVuX21hcCAqL1xcbjMyOTQ6XFx0XFx0aWYgKHZlci1cXHUwMDNlZmN4Z3Bpb2RiZyBcXHUwMDNlPSA4KVxcbjMyOTU6XFx0XFx0XFx0cmV0dXJuIGVuX21hcF92ODtcXG4zMjk2OlxcdFxcbjMyOTc6XFx0XFx0Lyogdjc6IGdwaW9fdmVyIFxcdTAwM2MgOCwgY29udmVydCB2OCBlbl9tYXAgYml0bWFwIHRvIHY3IGVuX21hcCBiaXRtYXAgKi9cXG4zMjk4OlxcdFxcdC8qIGJpdCAwLTE6IEdOVF9CVCwgR05UX1dMIC0gc2FtZSBwb3NpdGlvbiBpbiBib3RoIHZlcnNpb25zICovXFxuMzI5OTpcXHRcXHRlbl9tYXBfdjcgfD0gZW5fbWFwX3Y4IFxcdTAwMjYgR0VOTUFTSygxLCAwKTtcXG4zMzAwOlxcdFxcbjMzMDE6XFx0XFx0LyogYml0IDItMzogR05UX0JUMSwgR05UX1dMMSAtIG5vdCBzdXBwb3J0ZWQgaW4gdjcsIHNraXAgdGhlc2UgYml0cyAqL1xcbjMzMDI6XFx0XFxuMzMwMzpcXHRcXHQvKiBiaXQgNC0zMTogc2hpZnQgcmlnaHQgYnkgMiBwb3NpdGlvbnMgKGJlY29tZSBiaXQgMi0yOSBpbiB2NykgKi9cXG4zMzA0OlxcdFxcdGZvciAoYml0ID0gQlRDX0RCR19CQ05fRUFSTFk7IGJpdCBcXHUwMDNjIEJUQ19EQkdfTlVNOyBiaXQrKykge1xcbjMzMDU6XFx0XFx0XFx0aWYgKGVuX21hcF92OCBcXHUwMDI2IEJJVChiaXQpKVxcbjMzMDY6XFx0XFx0XFx0XFx0ZW5fbWFwX3Y3IHw9IEJJVChiaXQgLSAyKTtcXG4zMzA3OlxcdFxcdH1cXG4zMzA4OlxcdFxcbjMzMDk6XFx0XFx0cmV0dXJuIGVuX21hcF92NztcXG4zMzEwOlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDg6MjUuMjk5ODczMjk3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NDIyMTc0MDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBHUElPIFNpZ25hbCBFcnJvcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgaXQncyByZXR1cm5pbmcgYEJUQ19EQkdfTlVNYCB3aGVuIGl0IGVuY291bnRlcnMgYW4gZXJyb3IuIFRoYXQncyBhIGtleSBkZXRhaWwgdG8gbm90aWNlLiBOb3csIHRoZSBjb2RlJ3MgcHJldmlvdXMgZXJyb3IgY2hlY2sgd2FzIGxvb2tpbmcgZm9yIGEgc2lnbmFsIHZhbHVlIG9mIGAweGZmYC4gSXQgdXNlZCB0byBiZTpcblxuYGBgY1xuXHRcdGlmIChncGlvLVx1MDAzZW11eC5kYXRhLnNpZyA9PSAweGZmKVxuXHRcdFx0cmV0dXJuO1xuYGBgXG5cbkJ1dCBub3csIHdpdGggdGhpcyBuZXcgYXBwcm9hY2gsIGEgcmV0dXJuIHZhbHVlIG9mIGBCVENfREJHX05VTWAgb24gZXJyb3Igc3VnZ2VzdHMgdGhhdCB0aGUgb2xkIGNoZWNrIHdpbGwgbm8gbG9uZ2VyIHdvcmsgY29ycmVjdGx5LiBUaGlzIGZ1bmN0aW9uIGlzIG9idmlvdXNseSB0cnlpbmcgdG8gc2lnbmFsIHNvbWV0aGluZyBkaWZmZXJlbnQgdGhhbiBiZWZvcmUsIG9yIGl0IGNvdWxkIGJlIHJldHVybmluZyBhIHZhbHVlIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZyb20gYDB4ZmZgLiBMZXQgbWUgY2hlY2sgd2hhdCBleGFjdGx5IGBCVENfREJHX05VTWAgaXMgZGVmaW5lZCBhcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG5ldyBlcnJvciBjb2RlIG1lYW5zIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgc3lzdGVtLiBJcyBpdCBhbiBleGlzdGluZyBlcnJvciBjb2RlLCBhIG5ldyBvbmUgdGhhdCBuZWVkcyBkb2N1bWVudGF0aW9uLCBvciBkb2VzIHRoaXMgcmVxdWlyZSBkZWVwZXIgdHJvdWJsZXNob290aW5nP1xuXG5cbiIsIklucHV0VG9rZW5zIjo3MDI2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDg6NDQuNzIyMDQ5OTU2WiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTI4MzQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCVENfREJHX05VTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjYxPXN0YXRpYyB1OCBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHNpZ192OClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyNzUtXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBzaWdfdjgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNzY6XFx0XFx0cmV0dXJuIEJUQ19EQkdfTlVNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNzc6XFx0fSBlbHNlIGlmIChzaWdfdjggXFx1MDAzZT0gQlRDX0RCR19OVU0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjc4LVxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyODAtXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBzaWdfdjgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyODE6XFx0XFx0cmV0dXJuIEJUQ19EQkdfTlVNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyODItXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyODc9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX3RvX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXBfdjgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzAzLVxcdC8qIGJpdCA0LTMxOiBzaGlmdCByaWdodCBieSAyIHBvc2l0aW9ucyAoYmVjb21lIGJpdCAyLTI5IGluIHY3KSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMDQ6XFx0Zm9yIChiaXQgPSBCVENfREJHX0JDTl9FQVJMWTsgYml0IFxcdTAwM2MgQlRDX0RCR19OVU07IGJpdCsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMwNS1cXHRcXHRpZiAoZW5fbWFwX3Y4IFxcdTAwMjYgQklUKGJpdCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzEyPXN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF9mcm9tX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzI0LVxcdC8qIGJpdCAyLTI5OiBzaGlmdCBsZWZ0IGJ5IDIgcG9zaXRpb25zIChiZWNvbWUgYml0IDQtMzEgaW4gdjgpICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMyNTpcXHRmb3IgKGJpdCA9IEJUQ19EQkdfR05UX0JUMTsgYml0IFxcdTAwM2MgQlRDX0RCR19OVU0gLSAyOyBiaXQrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMjYtXFx0XFx0aWYgKGVuX21hcCBcXHUwMDI2IEJJVChiaXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMzMz1zdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzM2Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzY4OlxcdFxcdGlmIChncGlvLVxcdTAwM2VtdXguZGF0YS5zaWcgXFx1MDAzZT0gQlRDX0RCR19OVU0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzM2OS1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xMTk4Mj1zdGF0aWMgaW50IF9zaG93X2dwaW9fZGJnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMjAxNjpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQlRDX0RCR19OVU07IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDE3LVxcdFxcdGlmICghKGVuX21hcCBcXHUwMDI2IEJJVChpKSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAyMC1cXHRcXHRzaWcgPSB2ZXItXFx1MDAzZWZjeGdwaW9kYmcgXFx1MDAzZT0gOCA/IGkgOiBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMDIxOlxcdFxcdGlmIChzaWcgXFx1MDAzZT0gQlRDX0RCR19OVU0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMjItXFx0XFx0XFx0Y29udGludWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ4OjQ0Ljc3NzMzODgwNFoiLCJTZXEiOjQ1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM2Nzc3ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERlZmluaXRpb24gb2YgYEJUQ19EQkdfTlVNYCoqXG5cbk9rYXksIHNvIEkgc2VlIGBCVENfREJHX05VTWAuLi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBpdCdzIHJlZmVycmluZyB0by4gSXQncyBhbG1vc3QgY2VydGFpbmx5IGEgbWFjcm8gb3IgYSBjb25zdGFudCBkZWZpbmVkIHNvbWV3aGVyZSB3aXRoaW4gdGhlIGNvZGViYXNlLiBHaXZlbiBteSBleHBlcmllbmNlLCBpdCdzIGxpa2VseSByZWxhdGVkIHRvIGRlYnVnZ2luZywgZ2l2ZW4gdGhlIFwiREJHXCIgaW4gdGhlIG5hbWUuIEl0IGNvdWxkIGJlIGEgc3BlY2lmaWMgZGVidWcgZmxhZywgYSBudW1lcmljYWwgaWRlbnRpZmllciBmb3IgYSBwYXJ0aWN1bGFyIGRlYnVnIG1lc3NhZ2UsIG9yIHBvc3NpYmx5IGEgY291bnRlci4gSXQncyBnb2luZyB0byBkZXBlbmQgb24gdGhlIHN5c3RlbS5cblxuSSdkIHN0YXJ0IGJ5IHVzaW5nIG15IHN0YW5kYXJkIHRvb2xzIC0gYGdyZXBgLCBgZmluZGAsIG9yIG15IElERSdzIHNlYXJjaCBmdW5jdGlvbiAtIHRvIGxvY2F0ZSBpdHMgZGVmaW5pdGlvbi4gSSdkIGxvb2sgZm9yIGAjZGVmaW5lIEJUQ19EQkdfTlVNYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIEknZCBleHBhbmQgbXkgc2VhcmNoIHRlcm1zIHRvIGNhcHR1cmUgYW55IGluc3RhbmNlcyBpbiBzb3VyY2UgZmlsZXMsIGluY2x1ZGUgZmlsZXMsIGJ1aWxkIHNjcmlwdHMsIG9yIGRvY3VtZW50YXRpb24uIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuT25jZSBJIGZpbmQgdGhlIGRlZmluaXRpb24sIHRoZSBjb250ZXh0IHdpbGwgZ2l2ZSBtZSB0aGUgbW9zdCBjcml0aWNhbCBpbmZvcm1hdGlvbiwgZnJvbSB0aGUgc3Vycm91bmRpbmcgY29tbWVudHMsIHZhcmlhYmxlIHVzYWdlLCBldGMuIEknZCB0aGVuIHF1aWNrbHkgYXNzZXNzIHdoZXJlIGl0J3MgdXNlZCB3aXRoaW4gdGhlIGNvZGUuIEFyZSB0aGVyZSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIHVzaW5nIGl0PyBGdW5jdGlvbiBjYWxscyB0aGF0IHJlbHkgb24gaXQ/IElmIGl0J3MgdXNlZCBpbiBsb2dnaW5nLCBJJ2Qgd2FudCB0byBkZXRlcm1pbmUgdGhlIGltcG9ydGFuY2Ugb2YgdGhlIG1lc3NhZ2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG51bWJlciwgYW5kIGlmIHRoZXJlIGlzIGEgbWFwcGluZyBmaWxlLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMuIEknbSBsb29raW5nIGZvciBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGltcGFjdHMgdGhlIHN5c3RlbSdzIGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgZHVyaW5nIGRlYnVnZ2luZyBhbmQgaWYgaXQgZW5hYmxlcyBvciBkaXNhYmxlcyBjZXJ0YWluIGNvZGUgYmxvY2tzLiBGaW5hbGx5LCBJJ2Qgd2FudCB0byBiZSBzdXJlIHRvIGRvY3VtZW50IGl0LiBJIG1pZ2h0IG5lZWQgdGhpcyBrbm93bGVkZ2UgbGF0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MTEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0ODo0OS4yMTQxMTk2NDRaIiwiU2VxIjo0NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjEzOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJUQ19EQkdfTlVNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyNjE9c3RhdGljIHU4IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggc2lnX3Y4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI3NS1cXHRcXHRcXHQgICAgX19mdW5jX18sIHNpZ192OCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI3NjpcXHRcXHRyZXR1cm4gQlRDX0RCR19OVU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI3NzpcXHR9IGVsc2UgaWYgKHNpZ192OCBcXHUwMDNlPSBCVENfREJHX05VTSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyNzgtXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI4MC1cXHRcXHRcXHQgICAgX19mdW5jX18sIHNpZ192OCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI4MTpcXHRcXHRyZXR1cm4gQlRDX0RCR19OVU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI4Mi1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI4Nz1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfdG9fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcF92OClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMDMtXFx0LyogYml0IDQtMzE6IHNoaWZ0IHJpZ2h0IGJ5IDIgcG9zaXRpb25zIChiZWNvbWUgYml0IDItMjkgaW4gdjcpICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMwNDpcXHRmb3IgKGJpdCA9IEJUQ19EQkdfQkNOX0VBUkxZOyBiaXQgXFx1MDAzYyBCVENfREJHX05VTTsgYml0KyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzA1LVxcdFxcdGlmIChlbl9tYXBfdjggXFx1MDAyNiBCSVQoYml0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMjQtXFx0LyogYml0IDItMjk6IHNoaWZ0IGxlZnQgYnkgMiBwb3NpdGlvbnMgKGJlY29tZSBiaXQgNC0zMSBpbiB2OCkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzI1OlxcdGZvciAoYml0ID0gQlRDX0RCR19HTlRfQlQxOyBiaXQgXFx1MDAzYyBCVENfREJHX05VTSAtIDI7IGJpdCsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMyNi1cXHRcXHRpZiAoZW5fbWFwIFxcdTAwMjYgQklUKGJpdCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzMzPXN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzY3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzNjg6XFx0XFx0aWYgKGdwaW8tXFx1MDAzZW11eC5kYXRhLnNpZyBcXHUwMDNlPSBCVENfREJHX05VTSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzY5LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTExOTgyPXN0YXRpYyBpbnQgX3Nob3dfZ3Bpb19kYmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMDE2OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBCVENfREJHX05VTTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMTctXFx0XFx0aWYgKCEoZW5fbWFwIFxcdTAwMjYgQklUKGkpKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDIwLVxcdFxcdHNpZyA9IHZlci1cXHUwMDNlZmN4Z3Bpb2RiZyBcXHUwMDNlPSA4ID8gaSA6IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldiwgaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIwMjE6XFx0XFx0aWYgKHNpZyBcXHUwMDNlPSBCVENfREJHX05VTSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAyMi1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTMxMTk9ZW51bSBidGNfd2xfZ3Bpb19kZWJ1ZyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMxNTg6XFx0QlRDX0RCR19OVU0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE1OS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzE2MT1zdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfZ3Bpb19kYmdfdjEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE2Ni1cXHRfX2xlMzIgcHJlX3N0YXRlOyAvKiB0aGUgZGVidWcgc2lnbmFsIGlzIDEgb3IgMCAgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMTY3OlxcdHU4IGdwaW9fbWFwW0JUQ19EQkdfTlVNXTsgLyp0aGUgZGVidWcgc2lnbmFscyB0byBHUElPLVBvc2l0aW9uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE2OC19IF9fcGFja2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzE3MD1zdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfZ3Bpb19kYmdfdjcge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMTc2OlxcdHU4IGdwaW9fbWFwW0JUQ19EQkdfTlVNXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTc3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0ODo0OS4yNjE3Mzk0ODJaIiwiU2VxIjo0NywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTczMTIzMjc5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgQnVnIGluIEdQSU8gU2lnbmFsIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBwb3RlbnRpYWwgaXNzdWUuIEl0IGxvb2tzIGxpa2UgYEJUQ19EQkdfTlVNYCBpcyBhbiBlbnVtIHZhbHVlLCB3aGljaCByYWlzZXMgYSByZWQgZmxhZy4gVGhlIGZ1bmN0aW9uIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyBgQlRDX0RCR19OVU1gIHRvIGluZGljYXRlIGFuIGVycm9yLCB3aGljaCBpcyBwZXJmZWN0bHkgcmVhc29uYWJsZS4gQnV0IGhlcmUncyB3aGVyZSB0aGUgcHJvYmxlbSBhcmlzZXM6IGBncGlvLVx1MDAzZW11eC5kYXRhLnNpZ2AgaXMgZGVmaW5lZCBhcyBhIGB1OGAuIFRoaXMgaXMgd2hlcmUgbXkgY29uY2VybiBoaXRzIGNyaXRpY2FsIG1hc3MuXG5cbklmIGBCVENfREJHX05VTWAgaXMgYSB2YWx1ZSB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCB3aXRoaW4gdGhlIGB1OGAgcmFuZ2UgKGxlc3MgdGhhbiAyNTUpLCB0aGVuIHRoZSBjb21wYXJpc29uIGBncGlvLVx1MDAzZW11eC5kYXRhLnNpZyA9PSAweGZmYCB3aWxsICpmYWlsKiB0byBhY2N1cmF0ZWx5IGRldGVjdCB0aGUgZXJyb3IhIEluIG90aGVyIHdvcmRzLCBpZiBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc2lnbmFsIHJldHJpZXZhbCwgYGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnYCBtaWdodCBpbmFkdmVydGVudGx5IGNvbnRhaW4gYSB2YWxpZCAoYnV0IGluY29ycmVjdCkgYHU4YCB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIGFuIGVudW0gdmFsdWUgLSBvbmUgdGhhdCBtaWdodCBub3QgYmUgMHhmZiwgYW5kIHRoZSBlcnJvciB3b24ndCBiZSBjYXVnaHQuIEVzc2VudGlhbGx5LCBpZiBgQlRDX0RCR19OVU1gIGlzIHNtYWxsIGVub3VnaCwgaXQgd29uJ3QgYmUgdHJhcHBlZC5cblxuVGltZSB0byBsb29rIGludG8gdGhlIHZhbHVlIG9mIGBCVENfREJHX05VTWAgYW5kIHNlZSB3aGF0IHdlJ3JlIGFjdHVhbGx5IGRlYWxpbmcgd2l0aCwgYW5kIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhIHJlYWwgYnVnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY0MSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0ODo1OC45OTI5NzUwMDZaIiwiU2VxIjo0OCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk5NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMxMTksXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMxMTk6XFx0ZW51bSBidGNfd2xfZ3Bpb19kZWJ1ZyB7XFxuMzEyMDpcXHRcXHRCVENfREJHX0dOVF9CVCA9IDAsXFxuMzEyMTpcXHRcXHRCVENfREJHX0dOVF9XTCA9IDEsXFxuMzEyMjpcXHRcXHRCVENfREJHX0dOVF9CVDEgPSAyLFxcbjMxMjM6XFx0XFx0QlRDX0RCR19HTlRfV0wxID0gMyxcXG4zMTI0OlxcdFxcdC8qIFRoZSBmb2xsb3dpbmcgc2lnbmFscyBzaG91bGQgMC0xIHRpZ2dsZSBieSBlYWNoIGZ1bmN0aW9uLWNhbGwgKi9cXG4zMTI1OlxcdFxcdEJUQ19EQkdfQkNOX0VBUkxZID0gNCxcXG4zMTI2OlxcdFxcdEJUQ19EQkdfV0xfTlVMTDAgPSA1LFxcbjMxMjc6XFx0XFx0QlRDX0RCR19XTF9OVUxMMSA9IDYsXFxuMzEyODpcXHRcXHRCVENfREJHX1dMX1JYSVNSID0gNyxcXG4zMTI5OlxcdFxcdEJUQ19EQkdfVERNQV9FTlRSWSA9IDgsXFxuMzEzMDpcXHRcXHRCVENfREJHX0EyRFBfRU1QVFkgPSA5LFxcbjMxMzE6XFx0XFx0QlRDX0RCR19CVF9SRVRSWSA9IDEwLFxcbjMxMzI6XFx0XFx0LyogVGhlIGZvbGxvd2luZyBzaWduYWxzIHNob3VsZCAwLTEgdGlnZ2xlIGJ5IHN0YXRlIEwvSCAqL1xcbjMxMzM6XFx0XFx0QlRDX0RCR19CVF9SRUxJTksgPSAxMSxcXG4zMTM0OlxcdFxcdEJUQ19EQkdfU0xPVF9XTCA9IDEyLFxcbjMxMzU6XFx0XFx0QlRDX0RCR19TTE9UX0JUID0gMTMsXFxuMzEzNjpcXHRcXHQvKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgc2hvdWxkIDAtMSB0aWdnbGUgYnkgZXh0ZXJuYWwqL1xcbjMxMzc6XFx0XFx0QlRDX0RCR19XTF9FUlIgPSAxNCxcXG4zMTM4OlxcdFxcdEJUQ19EQkdfV0xfT0sgPSAxNSxcXG4zMTM5OlxcdFxcdC8qIFRoZSBmb2xsb3dpbmcgc2lnbmFscyBhcHBlYXIgb25seSAxLWFjdGl2ZSBhdCBzYW1lIHRpbWUqL1xcbjMxNDA6XFx0XFx0QlRDX0RCR19TTE9UX0IyVyA9IDE2LFxcbjMxNDE6XFx0XFx0QlRDX0RCR19TTE9UX1cxID0gMTcsXFxuMzE0MjpcXHRcXHRCVENfREJHX1NMT1RfVzIgPSAxOCxcXG4zMTQzOlxcdFxcdEJUQ19EQkdfU0xPVF9XMkIgPSAxOSxcXG4zMTQ0OlxcdFxcdEJUQ19EQkdfU0xPVF9CMSA9IDIwLFxcbjMxNDU6XFx0XFx0QlRDX0RCR19TTE9UX0IyID0gMjEsXFxuMzE0NjpcXHRcXHRCVENfREJHX1NMT1RfQjMgPSAyMixcXG4zMTQ3OlxcdFxcdEJUQ19EQkdfU0xPVF9CNCA9IDIzLFxcbjMxNDg6XFx0XFx0QlRDX0RCR19TTE9UX0xLID0gMjQsXFxuMzE0OTpcXHRcXHRCVENfREJHX1NMT1RfRTJHID0gMjUsXFxuMzE1MDpcXHRcXHRCVENfREJHX1NMT1RfRTVHID0gMjYsXFxuMzE1MTpcXHRcXHRCVENfREJHX1NMT1RfRUJUID0gMjcsXFxuMzE1MjpcXHRcXHRCVENfREJHX1NMT1RfV0xLID0gMjgsXFxuMzE1MzpcXHRcXHRCVENfREJHX1NMT1RfQjFGREQgPSAyOSxcXG4zMTU0OlxcdFxcdEJUQ19EQkdfQlRfQ0hBTkdFID0gMzAsXFxuMzE1NTpcXHRcXHQvKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgc2hvdWxkIDAtMSB0aWdnbGUgYnkgZXh0ZXJuYWwqL1xcbjMxNTY6XFx0XFx0QlRDX0RCR19XTF9DQ0EgPSAzMSxcXG4zMTU3OlxcdFxcbjMxNTg6XFx0XFx0QlRDX0RCR19OVU0sXFxuMzE1OTpcXHR9O1xcbjMxNjA6XFx0XFxuMzE2MTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfZ3Bpb19kYmdfdjEge1xcbjMxNjI6XFx0XFx0dTggZnZlcjsgLyogYnRjX3Zlcjo6ZmN4Z3Bpb2RiZyAqL1xcbjMxNjM6XFx0XFx0dTggcnN2ZDtcXG4zMTY0OlxcdFxcdF9fbGUxNiByc3ZkMjtcXG4zMTY1OlxcdFxcdF9fbGUzMiBlbl9tYXA7IC8qIHdoaWNoIGRlYnVnIHNpZ25hbCAoc2VlIGJ0Y193bF9ncGlvX2RlYnVnKSBpcyBlbmFibGUgKi9cXG4zMTY2OlxcdFxcdF9fbGUzMiBwcmVfc3RhdGU7IC8qIHRoZSBkZWJ1ZyBzaWduYWwgaXMgMSBvciAwICAqL1xcbjMxNjc6XFx0XFx0dTggZ3Bpb19tYXBbQlRDX0RCR19OVU1dOyAvKnRoZSBkZWJ1ZyBzaWduYWxzIHRvIEdQSU8tUG9zaXRpb24gKi9cXG4zMTY4OlxcdH0gX19wYWNrZWQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ4OjU4Ljk5MzI3NTc4NloiLCJTZXEiOjQ5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzg1NzE2ODUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZpcm13YXJlIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHNuaXBwZXQgb2YgY29kZSwgYW5kIGl0IHNlZW1zIGxpa2UgYEJUQ19EQkdfTlVNYCBpcyBkZWZpbmVkIGFzIDMyLiBUaGUgb3JpZ2luYWwgY29kZSBoYXMgdGhpcyBzZWN0aW9uIHdoZXJlIGl0IHJldHJpZXZlcyBhIHNpZ25hbCB2YWx1ZSB1c2luZyBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgLCBhbmQgaWYgdGhhdCByZXR1cm5zIGFuIGVycm9yIGluZGljYXRlZCBieSAweGZmLCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybi4gSG93ZXZlciwgaXQgc2VlbXMgbGlrZSB0aGUgZXJyb3IgY2hlY2tpbmcgaXMgZmxhd2VkLiBUaGUgZnVuY3Rpb24gYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCByZXR1cm5zIDMyIG9uIGVycm9yLiBUaGF0IHZhbHVlLCAzMiwgaXMgdXNlZCBzdWJzZXF1ZW50bHkgd2l0aG91dCBiZWluZyBwcm9wZXJseSB2YWxpZGF0ZWQuXG5cblRoZSBjb25kaXRpb24gYGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnID09IDB4ZmZgIGlzIGV2YWx1YXRlZCBidXQgZmFpbHMsIGNhdXNpbmcgdGhlIGNvZGUgdG8gcHJvY2VlZCwgdHJlYXRpbmcgMzIgYXMgYSB2YWxpZCBzaWduYWwuIEl0IHRoZW4gZXh0cmFjdHMgYGdwaW9gIGFuZCBwZXJmb3JtcyBhIGBtZW1jcHlgIGludG8gYGJ1ZmAuIFRoZSBgYnVmYCBpcyB0aGVuIHN1YnNlcXVlbnRseSBzZW50IHRvIHRoZSBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBnb2luZyB0byB0cmlnZ2VyIHNvbWUgc29ydCBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkP1wiXG5cbldhaXQsIG5vLCB1cG9uIGZ1cnRoZXIgYW5hbHlzaXMsIHRoZSBkYXRhIGJlaW5nIHNlbnQgaXMgc2ltcGx5IGEga25vd24sIGFsYmVpdCBpbnZhbGlkLCB2YWx1ZSwgMzIuIEl0J3Mgbm90IHVuaW5pdGlhbGl6ZWQgZGF0YSBiZWluZyByZWFkLiBJdCdzIHNlbmRpbmcgYSBzcGVjaWZpYywgaW5jb3JyZWN0IHZhbHVlIHRvIHRoZSBmaXJtd2FyZS4gTGV0IG1lIHRha2UgYSBzZWNvbmQgbG9vayBhdCBob3cgYGJ1ZmAgYW5kIGBsZW5gIGFyZSB1dGlsaXplZCBkb3duc3RyZWFtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA5NSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ5OjE2Ljg1MDQ0ODYxM1oiLCJTZXEiOjUwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjY1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM3NSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM3NTpcXHRcXHRjYXNlIENYREdQSU9fRVhUX0hQVEE6IC8qIEdQSU8gY29uZmlnIGZvciBFeHQgSFctUFRBICovXFxuMzM3NjpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEudHlwZSA9IENYREdQSU9fRVhUX0hQVEE7XFxuMzM3NzpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEuZnZlciA9IGdwaW9fdmVyO1xcbjMzNzg6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3B0YS5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcXG4zMzc5OlxcdFxcdFxcdGdwaW8tXFx1MDAzZWV4dF9wdGEuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XFxuMzM4MDpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEubWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XFxuMzM4MTpcXHRcXHRcXHRsMl9oMmMgPSBncGlvLVxcdTAwM2VleHRfcHRhLmZtdDtcXG4zMzgyOlxcdFxcdFxcdG1lbWNweShidWYsIFxcdTAwMjZsMl9oMmMsIHNpemVvZihsMl9oMmMpKTtcXG4zMzgzOlxcdFxcdFxcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xcbjMzODQ6XFx0XFx0XFx0YnJlYWs7XFxuMzM4NTpcXHRcXHRjYXNlIENYREdQSU9fRVhUX0hNQlg6IC8qIEdQSU8gY29uZmlnIGZvciBFeHQgSFctbWFpbGJveCAqL1xcbjMzODY6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X21iLmRhdGEudHlwZSA9IENYREdQSU9fRVhUX0hNQlg7XFxuMzM4NzpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfbWIuZGF0YS5mdmVyID0gZ3Bpb192ZXI7XFxuMzM4ODpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfbWIuZGF0YS5kbGVuID0gQ1hER1BJT19TRVRfTDI7XFxuMzM4OTpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfbWIuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XFxuMzM5MDpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfbWIuZGF0YS5tYXBfaGlnaCA9IEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgdmFsKTtcXG4zMzkxOlxcdFxcdFxcdGwyX2gyYyA9IGdwaW8tXFx1MDAzZWV4dF9tYi5mbXQ7XFxuMzM5MjpcXHRcXHRcXHRtZW1jcHkoYnVmLCBcXHUwMDI2bDJfaDJjLCBzaXplb2YobDJfaDJjKSk7XFxuMzM5MzpcXHRcXHRcXHRsZW4gPSBzaXplb2YobDJfaDJjKTtcXG4zMzk0OlxcdFxcdFxcdGJyZWFrO1xcbjMzOTU6XFx0XFx0Y2FzZSBDWERHUElPX0VYVF9TV09VVDogLyogR1BJTyBjb25maWcgZm9yIEV4dCBTVyBvdXRwdXQgKHdsYW5fYWN0KSAqL1xcbjMzOTY6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3b3V0LmRhdGEudHlwZSA9IENYREdQSU9fRVhUX1NXT1VUO1xcbjMzOTc6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3b3V0LmRhdGEuZnZlciA9IGdwaW9fdmVyO1xcbjMzOTg6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3b3V0LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xcbjMzOTk6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3b3V0LmRhdGEubWFwX2xvdyA9IEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpO1xcbjM0MDA6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3b3V0LmRhdGEubWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XFxuMzQwMTpcXHRcXHRcXHRsMl9oMmMgPSBncGlvLVxcdTAwM2VleHRfc3dvdXQuZm10O1xcbjM0MDI6XFx0XFx0XFx0bWVtY3B5KGJ1ZiwgXFx1MDAyNmwyX2gyYywgc2l6ZW9mKGwyX2gyYykpO1xcbjM0MDM6XFx0XFx0XFx0bGVuID0gc2l6ZW9mKGwyX2gyYyk7XFxuMzQwNDpcXHRcXHRcXHRicmVhaztcXG4zNDA1OlxcdFxcdGNhc2UgQ1hER1BJT19FWFRfU1dJTjogLyogR1BJTyBjb25maWcgZm9yIEV4dCBTVyBpbnB1dCBjb250cm9sICovXFxuMzQwNjpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfc3dpbi5kYXRhLnR5cGUgPSBDWERHUElPX0VYVF9TV0lOO1xcbjM0MDc6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3aW4uZGF0YS5mdmVyID0gZ3Bpb192ZXI7XFxuMzQwODpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfc3dpbi5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MNDtcXG4zNDA5OlxcdFxcdFxcdGdwaW8tXFx1MDAzZWV4dF9zd2luLmRhdGEuaW5fbWFwX2xvdyA9IEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpO1xcbjM0MTA6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3aW4uZGF0YS5pbl9tYXBfaGlnaCA9IEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgdmFsKTtcXG4zNDExOlxcdFxcdFxcdGdwaW8tXFx1MDAzZWV4dF9zd2luLmRhdGEuaW50X21hcF9sb3cgPSBGSUVMRF9HRVQoR0VOTUFTSygyMywgMTYpLCB2YWwpO1xcbjM0MTI6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3aW4uZGF0YS5pbnRfbWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygzMSwgMjQpLCB2YWwpO1xcbjM0MTM6XFx0XFx0XFx0bDRfaDJjID0gZ3Bpby1cXHUwMDNlZXh0X3N3aW4uZm10O1xcbjM0MTQ6XFx0XFx0XFx0cHV0X3VuYWxpZ25lZF9sZTMyKHZhbCwgKHUzMiAqKWw0X2gyYy5kYXRhKTtcXG4zNDE1OlxcdFxcdFxcdG1lbWNweShidWYsIFxcdTAwMjZsNF9oMmMsIHNpemVvZihsNF9oMmMpKTtcXG4zNDE2OlxcdFxcdFxcdGxlbiA9IHNpemVvZihsNF9oMmMpO1xcbjM0MTc6XFx0XFx0XFx0YnJlYWs7XFxuMzQxODpcXHRcXHRkZWZhdWx0OlxcbjM0MTk6XFx0XFx0XFx0cmV0dXJuO1xcbjM0MjA6XFx0XFx0fVxcbjM0MjE6XFx0XFxuMzQyMjpcXHRcXHRfc2VuZF9md19jbWQocnR3ZGV2LCBCVEZDX1NFVCwgU0VUX0dQSU9fREJHLCBidWYsIGxlbik7XFxuMzQyMzpcXHR9XFxuMzQyNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDk6MTYuODUxMjc4NDYzWiIsIlNlcSI6NTEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMzU1MjY3NjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIERhdGEgVHJhbnNtaXNzaW9uIFBhdGgqKlxuXG5Pa2F5LCBzbyB0aGUgYGJ1ZmAgaXMgYmVpbmcgcGFzc2VkIGRvd24gdG8gdGhlIGZpcm13YXJlIHRocm91Z2ggdGhlIGBfc2VuZF9md19jbWRgIGZ1bmN0aW9uLiBUaGF0J3MgdGhlIGNyaXRpY2FsIHBvaW50IG9mIGludGVyYWN0aW9uLCBhbmQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mga29zaGVyLiBUaGUgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBIb3dldmVyLCBsb29raW5nIGF0IHRoaXMgc3BlY2lmaWMgcGF0aCwgSSBkb24ndCBzZWUgYW55IG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzIGhlcmUuIFRoZSBgbDJfaDJjYCBzdHJ1Y3R1cmUgKG9yIHVuaW9uLCBuZWVkIHRvIGNvbmZpcm0gdGhhdCkgaXMgYmVpbmcgcG9wdWxhdGVkLCBhbmQgY3J1Y2lhbGx5LCBpdCBsb29rcyBsaWtlIGl0IGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGBncGlvLVx1MDAzZW11eC5mbXRgLiBUaGlzIHNlZW1zIGxpa2UgYSBkaXJlY3QgY29weSBvciBhc3NpZ25tZW50LCB3aGljaCBzaG91bGQgcHJldmVudCBhbnkgdW5pbml0aWFsaXplZCBkYXRhIGZyb20gbGVha2luZy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgZ3Bpby1cdTAwM2VtdXguZm10YCBkZWZpbml0aW9uIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIGl0J3MgYSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlLiBMZXQncyB2ZXJpZnkgdGhhdCBxdWlja2x5LCBzaW5jZSB0aGF0J3MgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGRhdGEgYmVpbmcgc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5MzYsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ5OjI4LjIwNjU0OTU5N1oiLCJTZXEiOjUyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYyMDIwMzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzUtXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMzY6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvICpncGlvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZ3BpbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM3LVxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzM4OlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiBsMl9oMmM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzOTpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fNGIgbDRfaDJjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNDAtXFx0dTggZ3Bpb192ZXIgPSB2ZXItXFx1MDAzZWZjeGdwaW9kYmc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTgyPXVuaW9uIHJ0dzg5X2J0Y19mYnRjX2dwaW9fZGJnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMDgtI2RlZmluZSBDWERHUElPX1NFVF9MMiAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzIwOTpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZW5fbWFwIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjEwLVxcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzIxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjE2OnN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19tdXgge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMTctXFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyMjQ6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9wdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMjUtXFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyMzI6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9tYiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzIzMy1cXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI0MDpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3N3b3V0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjQxLVxcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjQ4OnN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfc3dpbiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI0OS1cXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI1ODpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyNTktXFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNjU6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXzRiIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjY2LVxcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjcyOnVuaW9uIHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2VuX21hcF91IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjczOlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb180YiBmbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI3NDpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZW5fbWFwIGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI3NS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI3Nzp1bmlvbiBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19tdXhfdSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI3ODpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIgZm10O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNzk6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eCBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyODAtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODI6dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YV91IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjgzOlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiBmbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI4NDpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyODUtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODc6dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3N3aW5fdSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI4ODpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fNGIgZm10O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODk6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9zd2luIGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI5MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI5MjpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTM6XFx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZW5fbWFwX3UgZW5fbWFwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTQ6XFx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4X3UgbXV4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTU6XFx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YV91IGV4dF9wdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI5NjpcXHR1bmlvbiBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfcHRhX3UgZXh0X21iO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTc6XFx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YV91IGV4dF9zd291dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjk4OlxcdHVuaW9uIHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9zd2luX3UgZXh0X3N3aW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI5OS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9NDM5ND1zdHJ1Y3QgcnR3ODlfYnRjIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTQ0MDItXFx0c3RydWN0IHJ0dzg5X2J0Y19kYmcgZGJnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjQ0MDM6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvIGdwaW87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNDQwNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDk6MjguNTY4NTc1NjMxWiIsIlNlcSI6NTMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NDcyOTE0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGRpc3RpbGxlZDpcblxuKipEZWNvZGluZyB0aGUgR1BJTyBNdXggU3RydWN0dXJlIGluIHRoZSBydHc4OSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBncGlvYCB2YXJpYWJsZSwgYW5kIGl0J3MgYSBwb2ludGVyIHRvIGBidGMtXHUwMDNlZ3Bpb2AsIHdoaWNoIGluIHR1cm4gaXMgYSBwb2ludGVyLCBJIGJlbGlldmUgdG8gdGhlIGFjdHVhbCBHUElPIHN0cnVjdHVyZS4gVGhlIGBidGNgIHZhcmlhYmxlIGl0c2VsZiBpcyBhbm90aGVyIHBvaW50ZXIsIHNwZWNpZmljYWxseSB0byBgcnR3ZGV2LVx1MDAzZWJ0Y2AuIFJpZ2h0LCBzbyB3ZSdyZSBuYXZpZ2F0aW5nIGEgY2hhaW4gb2YgcG9pbnRlcnMgdG8gZ2V0IHRvIHRoZSBHUElPIGNvbnRyb2wuXG5cbk5vdywgYGdwaW8tXHUwMDNlbXV4LmRhdGFgIGFuZCBgZ3Bpby1cdTAwM2VtdXguZm10YCBhcmUgYXBwYXJlbnRseSB1bmlvbnMuIFRoZXkgYXJlIGJvdGggc3RydWN0cywgYW5kIG9mIGVxdWFsIHNpemUuIE1lYW5pbmcgdGhhdCB0aGV5IG9jY3VweSB0aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24sIGJ1dCBhcmUgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoaWNoIGZpZWxkIHdlJ3JlIGFjY2Vzc2luZy4gTWFrZXMgc2Vuc2UsIHNwYWNlLXNhdmluZyB0ZWNobmlxdWUsIHRoYXQncyBmaW5lLlxuXG5UaGUgY3JpdGljYWwgc3RydWN0IGlzIHRoZSBgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4YCBvbmUuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGF0IGl0IGlzLCBpbiBmYWN0LCBwYWNrZWQuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbXBpbGF0aW9uIGZsYWdzIHRvIGNvbmZpcm0gdGhlIGBfX3BhY2tlZGAgYXR0cmlidXRlIGlzIGNvcnJlY3RseSBlbmZvcmNlZCwgYXMgdGhlIGNvcnJlY3QgYnl0ZS1sZXZlbCBsYXlvdXQgaXMgY3JpdGljYWwgZm9yIHRoZSBoYXJkd2FyZSBjb21tdW5pY2F0aW9uIHRoaXMgaXMgZGVzaWduZWQgZm9yLiBXZSd2ZSBnb3QgYHR5cGVgLCBgZnZlcmAsIGBkbGVuYCwgYHNpZ2AsIGFuZCBgZ3Bpb2AgZmllbGRzLiBUaG9zZSBhcmUgcHJvYmFibHkgc29tZSBzb3J0IG9mIGNvbnRyb2wgYW5kIHZlcnNpb24gYml0cywgZGF0YSBsZW5ndGggYW5kIHNpZ25hbCB2YWx1ZXMgZm9yIHRoZSBHUElPIG11eC4gV2UnbGwgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpY3Mgb2YgdGhvc2UgZmllbGRzIHRvIHVzZSB0aGVtLiBMZXQncyBzZWUgaWYgdGhvc2UgZmllbGRzIGFyZSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGUgc291cmNlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2Nzg0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ5OjM1LjUxNTg2OTcxNFoiLCJTZXEiOjU0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzUxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMzIxNixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzIxNjpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4IHtcXG4zMjE3OlxcdFxcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xcbjMyMTg6XFx0XFx0dTggZnZlcjsgLyogRkNYX1ZFUl9HUElPREJHICovXFxuMzIxOTpcXHRcXHR1OCBkbGVuO1xcbjMyMjA6XFx0XFx0dTggc2lnO1xcbjMyMjE6XFx0XFx0dTggZ3BpbztcXG4zMjIyOlxcdH07XFxuMzIyMzpcXHRcXG4zMjI0OlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfcHRhIHtcXG4zMjI1OlxcdFxcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xcbjMyMjY6XFx0XFx0dTggZnZlcjsgLyogRkNYX1ZFUl9HUElPREJHICovXFxuMzIyNzpcXHRcXHR1OCBkbGVuO1xcbjMyMjg6XFx0XFx0dTggbWFwX2xvdztcXG4zMjI5OlxcdFxcdHU4IG1hcF9oaWdoO1xcbjMyMzA6XFx0fTtcXG4zMjMxOlxcdFxcbjMyMzI6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9tYiB7XFxuMzIzMzpcXHRcXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cXG4zMjM0OlxcdFxcdHU4IGZ2ZXI7IC8qIEZDWF9WRVJfR1BJT0RCRyAqL1xcbjMyMzU6XFx0XFx0dTggZGxlbjtcXG4zMjM2OlxcdFxcdHU4IG1hcF9sb3c7XFxuMzIzNzpcXHRcXHR1OCBtYXBfaGlnaDtcXG4zMjM4OlxcdH07XFxuMzIzOTpcXHRcXG4zMjQwOlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfc3dvdXQge1xcbjMyNDE6XFx0XFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXFxuMzI0MjpcXHRcXHR1OCBmdmVyOyAvKiBGQ1hfVkVSX0dQSU9EQkcgKi9cXG4zMjQzOlxcdFxcdHU4IGRsZW47XFxuMzI0NDpcXHRcXHR1OCBtYXBfbG93O1xcbjMyNDU6XFx0XFx0dTggbWFwX2hpZ2g7XFxuMzI0NjpcXHR9O1xcbjMyNDc6XFx0XFxuMzI0ODpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3N3aW4ge1xcbjMyNDk6XFx0XFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXFxuMzI1MDpcXHRcXHR1OCBmdmVyOyAvKiBGQ1hfVkVSX0dQSU9EQkcgKi9cXG4zMjUxOlxcdFxcdHU4IGRsZW47XFxuMzI1MjpcXHRcXHR1OCBpbl9tYXBfbG93O1xcbjMyNTM6XFx0XFx0dTggaW5fbWFwX2hpZ2g7XFxuMzI1NDpcXHRcXHR1OCBpbnRfbWFwX2xvdztcXG4zMjU1OlxcdFxcdHU4IGludF9tYXBfaGlnaDtcXG4zMjU2OlxcdH07XFxuMzI1NzpcXHRcXG4zMjU4OlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiB7XFxuMzI1OTpcXHRcXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cXG4zMjYwOlxcdFxcdHU4IGZ2ZXI7IC8qIEZDWF9WRVJfR1BJT0RCRyAqL1xcbjMyNjE6XFx0XFx0dTggZGxlbjtcXG4zMjYyOlxcdFxcdHU4IGRhdGFbQ1hER1BJT19TRVRfTDJdO1xcbjMyNjM6XFx0fSBfX3BhY2tlZDtcXG4zMjY0OlxcdFxcbjMyNjU6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXzRiIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDk6MzUuNTE2MTQ3MDI0WiIsIlNlcSI6NTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzgxMjkxMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEdQSU8gTXV4IElzc3VlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoZSBwcm9ibGVtLiBGaXJzdCwgSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIGEgYHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eGAgc3RydWN0IOKAkyBpdCdzIDUgYnl0ZXMgaW4gc2l6ZSwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZC4gSSBxdWlja2x5IGNhbGN1bGF0ZSB0aGF0IHRoZSBgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmJgIHN0cnVjdCwgcGFydCBvZiB0aGUgdW5pb24sIGFsc28gdGFrZXMgdXAgdGhvc2UgNSBieXRlcy5cblxuSSd2ZSBnb3QgdGhlIHN0cnVjdHVyZXMgaGVyZSwgbm8gcGFkZGluZyBjb25jZXJucywgYWxsIGB1OGAgbWVtYmVycy4gVGhlIGZpeCBpcyB0YXJnZXRpbmcgYSBidWcgd2hlcmUgYSBmdW5jdGlvbiwgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCwgbWlnaHQgcmV0dXJuIGBCVENfREJHX05VTWAgKHdoaWNoIGlzIDMyLCBJIHJlbWVtYmVyKSBvbiBlcnJvciwgYnV0IHRoZSBleGlzdGluZyBjaGVjayBpbiB0aGUgY29kZSB3YXMgZXJyb25lb3VzbHkgbG9va2luZyBmb3IgYD09IDB4ZmZgLiBUaGF0IG1lYW5zIHRoZSBlcnJvciBjYXNlIHdhc24ndCBiZWluZyBjYXVnaHQuIFRoZSBsb2dpYyBhbGxvd2VkIGBCVENfREJHX05VTWAgdG8gYmUgdXNlZCB3aGVuIGl0IHNob3VsZG4ndCwgbWVhbmluZyBpdCB3YXMgdXNlZCBhcyBgc2lnYCB3aGVuIGFuIGVycm9yIGhhcHBlbmVkLCB0aGF0IGlzIHRoZSBmbGF3LiBUaGUgcGF0Y2gganVzdCBjaGFuZ2VzIHRoZSBjaGVjayB0byBgXHUwMDNlPSBCVENfREJHX05VTWAsIHNvIHRoYXQgYW4gZXJyb3IgaXMgY2F1Z2h0LlxuXG5UaGUgcmVhbCBxdWVzdGlvbiBoZXJlLCBhcyB3aXRoIGFueSBtZW1vcnktcmVsYXRlZCBpc3N1ZSwgaXMgd2hldGhlciB0aGVyZSdzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIHBsYXkuIEkgaGF2ZSB0byB2ZXJpZnkgdGhhdC4gTG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0LCBJJ20gcHJldHR5IGNvbmZpZGVudCB0aGF0IHRoZSBgYnVmYCB0aGF0IGVuZHMgdXAgYmVpbmcgY29waWVkIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGUgYGdwaW8tXHUwMDNlbXV4LmRhdGFgIG1lbWJlciwgd2hpY2ggaXMgb2YgdHlwZSBgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4YCwgaXMgc2V0IHVwLCBhbGwgNSBieXRlcywgYmVmb3JlIHRoZSBgbWVtY3B5YC4gRWFjaCBtZW1iZXIg4oCTIGB0eXBlYCwgYGZ2ZXJgLCBgZGxlbmAsIGBzaWdgLCBgZ3Bpb2Ag4oCTIGlzIGV4cGxpY2l0bHkgYXNzaWduZWQgYSB2YWx1ZS4gVGhlIHVuaW9uIGBsMl9oMmNgIGlzIHRoZW4gcHJvcGVybHkgaW5pdGlhbGl6ZWQsIGFuZCBmaW5hbGx5IGNvcGllZCB0byBgYnVmYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXZlciByZWFkIG9yIHNlbnQgb3V0LlxuXG5TbywgdGhpcyBpc24ndCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gSXQncyBhIGxvZ2ljIGJ1Zy4gQSBiYWQgdmFsdWUsIGBCVENfREJHX05VTWAsIGlzIGJlaW5nIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBJIGtub3cgSSBzaG91bGQgYmUgbG9va2luZyBhdCB3aGVyZSB0aGF0IGBzaWdgIHZhbHVlIGlzIHVzZWQuIElzIGl0IGJlaW5nIHVzZWQgYXMgYW4gYXJyYXkgaW5kZXggc29tZXdoZXJlPyBJdCdzIHNlbnQgdG8gdGhlIGZpcm13YXJlIGluIGBfZndfc2V0X2dwaW9gLCBidXQgdGhhdCdzIG91dCBvZiBLTVNBTidzIHNjb3BlLiBBbmQgSSB0aGluayB0aGF0IGlzIHRoZSBjcnV4IG9mIHRoZSBwcm9ibGVtLCBpcyBgc2lnYCBiZWluZyB1c2VkIGFzIGFuIGluZGV4IGludG8gYW4gYXJyYXkgaW5zaWRlIHRoZSBmaXJtd2FyZT8gSW4gdGhlIGtlcm5lbCwgaXQgaXMgc3RvcmVkIGluIGBidGMtXHUwMDNlZ3Bpby5tdXguZGF0YS5zaWdgLiBJIGhhdmUgdG8gc2VlIHdoZXRoZXIgYW5kIHdoZXJlIGBidGMtXHUwMDNlZ3Bpb2AgaXMgcmVhZCB3aXRoaW4gdGhlIGtlcm5lbCwgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHdheSB0aGlzIGNvdWxkIGNhdXNlIHByb2JsZW1zLiBUaGF0J3MgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwODIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0OTo0Ny44OTc0NDA1NDNaIiwiU2VxIjo1NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NTAyMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0Yy1cXHUwMDNlZ3Bpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzMzPXN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM1LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzM2OlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3BpbyAqZ3BpbyA9IFxcdTAwMjZidGMtXFx1MDAzZWdwaW87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMzNy1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ5OjQ3Ljk1NDk0ODAzWiIsIlNlcSI6NTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwMDU2Mzk0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IHNlZW1zIGxpa2UgYGJ0Yy1cdTAwM2VncGlvYCBpcyBqdXN0IGEgdGVtcG9yYXJ5IHN0cnVjdHVyZSB1c2VkIHRvIGZvcm1hdCB0aGUgSDJDIGNvbW1hbmQuIEFoLCByaWdodCwgdGhhdCdzIHBhcnQgb2YgdGhlIGBydHc4OV9idGNgIHN0cnVjdCDigJMgZ290IGl0LiBJIHdhcyB3b3JyaWVkIGZvciBhIHNlY29uZCBhYm91dCBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBidXQgaXQgc2VlbXMgdGhhdCdzIG5vdCB0aGUgY2FzZS4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgbG9naWMgYnVnLlxuXG5Fc3NlbnRpYWxseSwgdGhlIGJ1ZyBib2lscyBkb3duIHRvIGFuIGluY29ycmVjdCBib3VuZHMgY2hlY2sgaW4gdGhlIGBfZndfc2V0X2dwaW9gIGZ1bmN0aW9uLiBUaGUgY29kZSB3YXMgdXNpbmcgYD09IDB4ZmZgICgyNTUpIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCwgYnV0IGl0IHNob3VsZCBoYXZlIGJlZW4gY2hlY2tpbmcgYWdhaW5zdCBgXHUwMDNlPSBCVENfREJHX05VTWAuIFRoZSBjcnVjaWFsIGRldGFpbCBpcyB0aGF0IGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyBgQlRDX0RCR19OVU1gLCB3aGljaCBpcyAzMiwgdXBvbiBhbiBlcnJvci4gU28sIHRoZSBvcmlnaW5hbCBjaGVjayB3YXMgbGV0dGluZyBhbiBpbnZhbGlkIHNpZ25hbCBJRCAoMzIpIHNsaXAgdGhyb3VnaCwgdHJlYXRpbmcgaXQgYXMgYSB2YWxpZCBzaWduYWwuXG5cblRoaXMgaXMgYSBjbGVhbiwgc2ltcGxlIGxvZ2ljIGVycm9yLiBUaGUgZ29vZCBuZXdzIGlzLCB0aGVyZSdzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludm9sdmVkIGhlcmUuIFRoZSBkYXRhIGJlaW5nIHNlbnQgdG8gdGhlIGZpcm13YXJlIGlzIGFsbCBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBjb3BpZWQgaW50byB0aGUgYGdwaW8tXHUwMDNlbXV4LmRhdGFgIHN0cnVjdHVyZS4gVGhhdCBtYWtlcyB0aGUgcG90ZW50aWFsIGZvciBhIEtNU0FOIGlzc3VlIG5lZ2xpZ2libGUuIFRoZXJlZm9yZSwgSSBkb27igJl0IHRoaW5rIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyB3YXJyYW50ZWQuIFRoZSBmaXggaXRzZWxmIGlzIHByZXR0eSBjbGVhcjogaW1wcm92ZSB0aGF0IGJvdW5kcyBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk4MjQsIk91dHB1dFRva2VucyI6MTg4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ5OjU2Ljk2MDU5MDk0NVoiLCJTZXEiOjU4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYF9md19zZXRfZ3Bpb2Agd2hlcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgIHdhcyBpbmNvcnJlY3RseSBjaGVja2VkIGFnYWluc3QgYDB4ZmZgIGluc3RlYWQgb2YgYFxcdTAwM2U9IEJUQ19EQkdfTlVNYC4gYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCByZXR1cm5zIGBCVENfREJHX05VTWAgKHdoaWNoIGlzIDMyKSBvbiBlcnJvci4gQmVjYXVzZSBvZiB0aGUgaW5jb3JyZWN0IGNoZWNrLCB0aGUgZXJyb3IgdmFsdWUgd2FzIG5vdCBjYXVnaHQgYW5kIHdhcyBzZW50IHRvIHRoZSBmaXJtd2FyZSBhcyBhIHZhbGlkIHNpZ25hbCBJRC4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQWxsIGZpZWxkcyBvZiB0aGUgYGdwaW8tXFx1MDAzZW11eC5kYXRhYCBzdHJ1Y3R1cmUgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIGNvcGllZCB0byB0aGUgYnVmZmVyIGFuZCBzZW50IHRvIHRoZSBmaXJtd2FyZS4gVGhlcmVmb3JlLCB0aGlzIGJ1ZyBjYW5ub3QgYmUgZGV0ZWN0ZWQgYnkgS01TQU4sIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgX2Z3X3NldF9ncGlvYCB3aGVyZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgd2FzIGluY29ycmVjdGx5IGNoZWNrZWQgYWdhaW5zdCBgMHhmZmAgaW5zdGVhZCBvZiBgXFx1MDAzZT0gQlRDX0RCR19OVU1gLiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgIHJldHVybnMgYEJUQ19EQkdfTlVNYCAod2hpY2ggaXMgMzIpIG9uIGVycm9yLiBCZWNhdXNlIG9mIHRoZSBpbmNvcnJlY3QgY2hlY2ssIHRoZSBlcnJvciB2YWx1ZSB3YXMgbm90IGNhdWdodCBhbmQgd2FzIHNlbnQgdG8gdGhlIGZpcm13YXJlIGFzIGEgdmFsaWQgc2lnbmFsIElELiBUaGlzIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbGwgZmllbGRzIG9mIHRoZSBgZ3Bpby1cXHUwMDNlbXV4LmRhdGFgIHN0cnVjdHVyZSBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgY29waWVkIHRvIHRoZSBidWZmZXIgYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGVyZWZvcmUsIHRoaXMgYnVnIGNhbm5vdCBiZSBkZXRlY3RlZCBieSBLTVNBTiwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowhzp4h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-26 03:30:02 +0000 UTC FinishedAt: 2026-08-26 03:49:59 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89_8851BU", "RTW89_8852AU", "RTW89_8852BU", "RTW89_8852CU", "RTW89_8922AU", "RTW89_USB" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "torvalds", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux", "commit_hash": "66498c75b4f8017f62d720d9b59675bdf3abce91", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "RTW89_8851BU", "RTW89_8852AU", "RTW89_8852BU", "RTW89_8852CU", "RTW89_8922AU", "RTW89_USB" ], "series_id": "99657667-de12-40ed-aa6e-95c2c3865fbf" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "rtw89_btc_ntfy_init", "rtw89_core_start" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ2PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+M208L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfYnRjX250ZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7S01TQU5SZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYF9md19zZXRfZ3Bpb2Agd2hlcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgIHdhcyBpbmNvcnJlY3RseSBjaGVja2VkIGFnYWluc3QgYDB4ZmZgIGluc3RlYWQgb2YgYFx1MDAzZT0gQlRDX0RCR19OVU1gLiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgIHJldHVybnMgYEJUQ19EQkdfTlVNYCAod2hpY2ggaXMgMzIpIG9uIGVycm9yLiBCZWNhdXNlIG9mIHRoZSBpbmNvcnJlY3QgY2hlY2ssIHRoZSBlcnJvciB2YWx1ZSB3YXMgbm90IGNhdWdodCBhbmQgd2FzIHNlbnQgdG8gdGhlIGZpcm13YXJlIGFzIGEgdmFsaWQgc2lnbmFsIElELiBUaGlzIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbGwgZmllbGRzIG9mIHRoZSBgZ3Bpby1cdTAwM2VtdXguZGF0YWAgc3RydWN0dXJlIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBjb3BpZWQgdG8gdGhlIGJ1ZmZlciBhbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoZXJlZm9yZSwgdGhpcyBidWcgY2Fubm90IGJlIGRldGVjdGVkIGJ5IEtNU0FOLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuJiMzNDssCiAgJiMzNDtOZWVkc0tNU0FOJiMzNDs6IGZhbHNlLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGBfZndfc2V0X2dwaW9gIHdpdGhpbiB0aGUgUmVhbHRlayBydHc4OSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBmdXp6aW5nIChkdW1teV9oY2QpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKGBydHc4OV9idGNfbnRmeV9pbml0YCAtXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVx1MDAzZSBgX3NldF9leHRfaW50ZXJmYWNlYCAtXHUwMDNlIGBfZndfc2V0X2dwaW9gKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDlmYjI4OWE2M2UxOGU1YWUyYWEyNDE5ZTljMDZiNWRiOTRjMWNkMmVcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyAyNiAwMzo0NjowNyAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXG5pbmRleCA1YTlkYzRkOGEwMGJhLi4xMmJkNTUzOWU4YzZkIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXG5AQCAtMzM2NSw3ICYjNDM7MzM2NSw3IEBAIHN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG4gXHRcdGdwaW8tXHUwMDNlbXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xuIFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLnNpZyA9IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldixcbiBcdFx0XHRcdFx0XHRcdCAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCkpO1xuLVx0XHRpZiAoZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPT0gMHhmZilcbiYjNDM7XHRcdGlmIChncGlvLVx1MDAzZW11eC5kYXRhLnNpZyBcdTAwM2U9IEJUQ19EQkdfTlVNKVxuIFx0XHRcdHJldHVybjtcbiBcdFx0Z3Bpby1cdTAwM2VtdXguZGF0YS5ncGlvID0gRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCB2YWwpO1xuIFx0XHRsMl9oMmMgPSBncGlvLVx1MDAzZW11eC5mbXQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfYnRjX250ZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGBfZndfc2V0X2dwaW9gIHdpdGhpbiB0aGUgUmVhbHRlayBydHc4OSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBmdXp6aW5nIChkdW1teV9oY2QpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKGBydHc4OV9idGNfbnRmeV9pbml0YCAtXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVx1MDAzZSBgX3NldF9leHRfaW50ZXJmYWNlYCAtXHUwMDNlIGBfZndfc2V0X2dwaW9gKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkluc3RydWN0aW9uOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+WW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuCllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lCmlmIGl0IG1ha2VzIGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUga2VybmVsIHRoYXQgc2hvdWxkIGJlIGZ1enplZC4KCklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpbgp5b3VyIHdvcmtzcGFjZS4gRG8gTk9UIHJlbHkgb24geW91ciBpbnRlcm5hbCBrbm93bGVkZ2Ugb2YgdGhlIGtlcm5lbC4gWW91IG11c3QgYWN0aXZlbHkKdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy4KClJldHVybiBXb3J0aEZ1enppbmc9ZmFsc2UgaWYgdGhlIHBhdGNoIG9ubHkgY29udGFpbnM6Ci0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy4KLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy4KLSBDaGFuZ2VzIHRvIG51bWVyaWMgY29uc3RhbnRzIG9yIG1hY3JvcyB0aGF0IGRvIG5vdCBmdW5jdGlvbmFsbHkgYWx0ZXIgZXhlY3V0aW9uIGZsb3cuCi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLAogIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS4KLSBDb2RlIGluIHZlbmRvci1zcGVjaWZpYyBQQ0llIHN3aXRjaCwgU21hcnROSUMsIG9yIEdQVSBkcml2ZXJzIChlLmcuLCBtbHhzdywgcGRzX2NvcmUsIHFlZCwKICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS4KLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKQogIHRoYXQgYXJlIGV4ZWN1dGVkIG9ubHkgZHVyaW5nIFBDSSBob3QtdW5wbHVnIG9yIHN5c2ZzIGRyaXZlciB1bmJpbmQgb3BlcmF0aW9ucy4KCklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2gKdG9vbHMgdG8gdmVyaWZ5IHRoZSBjb2RlIGNhbiBiZSBleGVjdXRlZCwgdGhlbiByZXR1cm4gV29ydGhGdXp6aW5nPXRydWUuCgpXaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzoKMS4gRXh0cmFjdCBhbnkgc3BlY2lmaWMga2VybmVsIGZ1bmN0aW9ucyB0aGF0IHNob3VsZCBiZSBoZWF2aWx5IGZ1enplZCBpbnRvIEZvY3VzU3ltYm9scy4KICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuCiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9ucwogICAod2hpY2ggYXJlIGlubGluZWQgYnkgdGhlIGNvbXBpbGVyIGFuZCBkbyBub3QgaGF2ZSBkaXN0aW5jdCBzeW1ib2wgYWRkcmVzc2VzKS4KMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuCiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy4KICAgQWxzbyBjaGVjayAmIzM0O2RlcGVuZHMgb24mIzM0OyBsaW5lcyBpbiBLY29uZmlnIHRvIGluY2x1ZGUgYW55IG5vbi1zdGFuZGFyZCBwYXJlbnQgc3Vic3lzdGVtIGNvbmZpZ3MKICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzCiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAmIzM5O0NPTkZJR18mIzM5OyBwcmVmaXggKGUuZy4sIHJldHVybiAmIzM0O05FVF9JUFY0JiMzNDsgaW5zdGVhZCBvZiAmIzM0O0NPTkZJR19ORVRfSVBWNCYjMzQ7KS4KUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuCgoKVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy4KSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuCklnbm9yZSByZXN1bHRzIG9mIHRoaXMgdG9vbC4KPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Qcm9tcHQ6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Gb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczoKY29tbWl0IDlmYjI4OWE2M2UxOGU1YWUyYWEyNDE5ZTljMDZiNWRiOTRjMWNkMmUKQXV0aG9yOiBzeXotY2x1c3RlciAmbHQ7dHJpYWdlQHN5emthbGxlci5jb20mZ3Q7CkRhdGU6ICAgV2VkIEF1ZyAyNiAwMzo0NjowNyAyMDI2ICYjNDM7MDAwMAoKICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlldwoKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jIGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKaW5kZXggNWE5ZGM0ZDhhMDBiYS4uMTJiZDU1MzllOGM2ZCAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMKQEAgLTMzNjUsNyAmIzQzOzMzNjUsNyBAQCBzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKQogCQlncGlvLSZndDttdXguZGF0YS5kbGVuID0gQ1hER1BJT19TRVRfTDI7CiAJCWdwaW8tJmd0O211eC5kYXRhLnNpZyA9IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldiwKIAkJCQkJCQkgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpKTsKLQkJaWYgKGdwaW8tJmd0O211eC5kYXRhLnNpZyA9PSAweGZmKQomIzQzOwkJaWYgKGdwaW8tJmd0O211eC5kYXRhLnNpZyAmZ3Q7PSBCVENfREJHX05VTSkKIAkJCXJldHVybjsKIAkJZ3Bpby0mZ3Q7bXV4LmRhdGEuZ3BpbyA9IEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgdmFsKTsKIAkJbDJfaDJjID0gZ3Bpby0mZ3Q7bXV4LmZtdDsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA5NgoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDIyMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlciBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCBmb3IgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jYC4gVGhlIGNoYW5nZSBpcyBpbiB0aGUgYF9md19zZXRfZ3Bpb2AgZnVuY3Rpb24sIHNwZWNpZmljYWxseSB0aGlzIGxpbmU6CgpgYGBjCi0JCWlmIChncGlvLSZndDttdXguZGF0YS5zaWcgPT0gMHhmZikKJiM0MzsJCWlmIChncGlvLSZndDttdXguZGF0YS5zaWcgJmd0Oz0gQlRDX0RCR19OVU0pCmBgYAoKTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmaXggcmVsYXRlZCB0byBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzcywgc29tZSBraW5kIG9mIGxvZ2ljIGVycm9yLCBvciBtYXliZSBqdXN0IGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIGltcHJvdmVtZW50LiBUaGUgZmFjdCB0aGF0IHRoZSBkcml2ZXIgaXMgYHJ0dzg5YCB0ZWxscyBtZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgUmVhbHRlayA4MDIuMTFheCB3aXJlbGVzcyBkcml2ZXIsIHdoaWNoIGlzIGdvb2QgdG8ga25vdyBmb3IgY29udGV4dC4KCk5vdywgYSBxdWljayBndXQgY2hlY2suIEdpdmVuIHRoZSBoYXJkd2FyZSwgaXMgdGhpcyBkcml2ZXIgZXZlbiAqcmVhY2hhYmxlKiBpbiBhIHZpcnR1YWxpemVkIGVudmlyb25tZW50PyBJdCYjMzk7cyB0eXBpY2FsbHkgYSBQQ0llIG9yIFVTQiB3aXJlbGVzcyBkcml2ZXIsIGFuZCBJIGtub3cgdGhhdCBzdGFuZGFyZCBlbXVsYXRpb24gdG9vbHMgbGlrZSBgbWFjODAyMTFfaHdzaW1gIGFyZSBnZW5lcmFsbHkgdXNlZCBmb3IgZW11bGF0aW5nIFdpRmkuIFRoZXNlIHR5cGljYWxseSBkb24mIzM5O3QgaW5jbHVkZSBoYXJkd2FyZS1zcGVjaWZpYyBkcml2ZXJzIGxpa2UgcnR3ODkgdW5sZXNzIHRoZXkgaGF2ZSBhIFVTQiBpbnRlcmZhY2UgYW5kIHdlIGNhbiBsZXZlcmFnZSBVU0IgZnV6emluZyB1c2luZyBkdW1teV9oY2QuIEl0JiMzOTtzIHJhcmUgdG8gZW11bGF0ZSB0aGlzIGxldmVsIG9mIGRldGFpbC4gSSBzaG91bGQgZG91YmxlIGNoZWNrIGlmIHRoZSBkcml2ZXIgZXhwb3NlcyBhIFVTQiBpbnRlcmZhY2UuIFRoYXQmIzM5O3MgdGhlIGtleS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OS4qdXNiJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7XG5GdWxsIG91dHB1dCBpcyB0b28gbG9uZywgc2hvd2luZyA1MDAgb3V0IG9mIDgyNyBsaW5lcy5cblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cblxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZT0xMDY9cnR3ODlfcGNpLXkgOj0gcGNpLm8gcGNpX2JlLm9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDg6b2JqLSQoQ09ORklHX1JUVzg5X1VTQikgJiM0Mzs9IHJ0dzg5X3VzYi5vXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlOjEwOTpydHc4OV91c2IteSA6PSB1c2Iub1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZS0xMTAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MjA9c3RydWN0IHJ0dzg5X3BjaV9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MjE6c3RydWN0IHJ0dzg5X3VzYl9pbmZvO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjItc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTU4NzI9dW5pb24gcnR3ODlfYnVzX2luZm8ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3My1cdGNvbnN0IHN0cnVjdCBydHc4OV9wY2lfaW5mbyAqcGNpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6NTg3NDpcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqdXNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3NS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYz00Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MWJfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUxYl9oZmNfY2hjZmdfdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtNTUtXHR7MTgsIDIxMCwgZ3JwXzB9LCAvKiBBQ0ggMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYy02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYzo3MDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg4NTFiX2hmY19wdWJjZmdfdXNiID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTcxLVx0MjEwLCAvKiBHcm91cCAwICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjc3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3ByZWNfY2ZnIHJ0dzg4NTFiX2hmY19wcmVjY2ZnX3VzYiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYy03OC1cdDksIC8qIENIIDAtMTEgcHJlLWNvc3QgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTFiX2hmY19wYXJhbV9pbmlfdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtODktXHRbUlRXODlfUVRBX1NDQ10gPSB7cnR3ODg1MWJfaGZjX2NoY2ZnX3VzYiwgXHUwMDI2cnR3ODg1MWJfaGZjX3B1YmNmZ191c2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jPTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUxYl9kbGVfbWVtX3BjaWVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtMTEyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjExMzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MWJfZGxlX21lbV91c2IyW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtMTE0LVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMzAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTEyNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYzoxMjY6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTFiX2RsZV9tZW1fdXNiM1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTEyNy1cdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTMwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MWJfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM9NjI9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUxYnVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjQtXHQuaWRfdGFibGUgPSBydHdfODg1MWJ1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2NTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6NjY6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYy02Ny19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYz00Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MmFfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUyYV9oZmNfY2hjZmdfdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtNTItXHR7MjIsIDQwMiwgZ3JwXzB9LCAvKiBBQ0ggMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYy02Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYzo2NzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg4NTJhX2hmY19wdWJjZmdfdXNiID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTY4LVx0NTEyLCAvKiBHcm91cCAwICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjc0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3ByZWNfY2ZnIHJ0dzg4NTJhX2hmY19wcmVjY2ZnX3VzYiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYy03NS1cdDExLCAvKiBDSCAwLTExIHByZS1jb3N0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTg0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4ODUyYV9oZmNfcGFyYW1faW5pX3VzYltdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTg2LVx0W1JUVzg5X1FUQV9TQ0NdID0ge3J0dzg4NTJhX2hmY19jaGNmZ191c2IsIFx1MDAyNnJ0dzg4NTJhX2hmY19wdWJjZmdfdXNiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYz05Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmFfZGxlX21lbV9wY2llW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTEwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYzoxMTA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTJhX2RsZV9tZW1fdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtMTExLVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTEwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYzoxMTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg4NTJhX3VzYl9pbmZvID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy0xMi1cdC51c2JfaG9zdF9yZXF1ZXN0XzJcdFx0PSBSX0FYX1VTQl9IT1NUX1JFUVVFU1RfMixcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jPTc2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmF1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTc4LVx0LmlkX3RhYmxlID0gcnR3Xzg4NTJhdV9pZF90YWJsZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjgwOlx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmMtODEtfTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmM9NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTJiX2hmY19wYXJhbV9pbmlfcGNpZVtdID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy01MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYzo1MjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19jaF9jZmcgcnR3ODg1MmJfaGZjX2NoY2ZnX3VzYltdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTUzLVx0ezE4LCAyMTAsIGdycF8wfSwgLyogQUNIIDAgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMtNjctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmM6Njg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcHViX2NmZyBydHc4ODUyYl9oZmNfcHViY2ZnX3VzYiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy02OS1cdDIxMCwgLyogR3JvdXAgMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy03NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYzo3NTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wcmVjX2NmZyBydHc4ODUyYl9oZmNfcHJlY2NmZ191c2IgPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMtNzYtXHQ5LCAvKiBDSCAwLTExIHByZS1jb3N0ICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTg1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jOjg2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4ODUyYl9oZmNfcGFyYW1faW5pX3VzYltdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTg3LVx0W1JUVzg5X1FUQV9TQ0NdID0ge3J0dzg4NTJiX2hmY19jaGNmZ191c2IsIFx1MDAyNnJ0dzg4NTJiX2hmY19wdWJjZmdfdXNiLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYz05ND1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmJfZGxlX21lbV9wY2llW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTExMC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYzoxMTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTJiX2RsZV9tZW1fdXNiM1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTExMi1cdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTMwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmJfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYnVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtNzgtXHQuaWRfdGFibGUgPSBydHdfODg1MmJ1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo3OTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6ODA6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYy04MS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYz00Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MmNfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTUzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUyY19oZmNfY2hjZmdfdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtNTUtXHR7MTgsIDM0NCwgZ3JwXzB9LCAvKiBBQ0ggMCAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYy02OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYzo3MDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg4NTJjX2hmY19wdWJjZmdfdXNiID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTcxLVx0MzQ0LCAvKiBHcm91cCAwICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTc2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjc3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3ByZWNfY2ZnIHJ0dzg4NTJjX2hmY19wcmVjY2ZnX3VzYiA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYy03OC1cdDksIC8qIENIIDAtMTEgcHJlLWNvc3QgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtODctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTJjX2hmY19wYXJhbV9pbmlfdXNiW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtODktXHRbUlRXODlfUVRBX1NDQ10gPSB7cnR3ODg1MmNfaGZjX2NoY2ZnX3VzYiwgXHUwMDI2cnR3ODg1MmNfaGZjX3B1YmNmZ191c2IsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jPTk2PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUyY19kbGVfbWVtX3BjaWVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtMTA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjEwOTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmNfZGxlX21lbV91c2IyW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtMTEwLVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMzEsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTEyMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYzoxMjI6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTJjX2RsZV9tZW1fdXNiM1tdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTEyMy1cdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTE3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmNfdXNiX2luZm8gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEyLVx0LnVzYl9ob3N0X3JlcXVlc3RfMlx0XHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yX1YxLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM9MTM2PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODg1MmN1X2RyaXZlciA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEzOC1cdC5pZF90YWJsZSA9IHJ0d184ODUyY3VfaWRfdGFibGUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjEzOTpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6MTQwOlx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmMtMTQxLX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jPTEwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg5MjJhX2hmY19wdWJjZmdfcDggPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTEwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzoxMTA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg5MjJhX2hmY19wYXJhbV9pbmlfdXNiMltdID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTExMS1cdFtSVFc4OV9RVEFfU0NDXSA9IHtydHc4OTIyYV9oZmNfY2hjZmdfY2g3LCBcdTAwMjZydHc4OTIyYV9oZmNfcHViY2ZnX3A3LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYz0xNjM9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcHViX2NmZyBydHc4OTIyYV9oZmNfcHViY2ZnX3A1ID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0xNjktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6MTcwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4OTIyYV9oZmNfcGFyYW1faW5pX3VzYjNbXSA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0xNzEtXHRbUlRXODlfUVRBX1NDQ10gPSB7cnR3ODkyMmFfaGZjX2NoY2ZnX2NoNCwgXHUwMDI2cnR3ODkyMmFfaGZjX3B1YmNmZ19wNCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM9MTgwPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4OTIyYV9kbGVfbWVtX3BjaWVbXSA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMTk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjIwMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODkyMmFfZGxlX21lbV91c2IyW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMjAxLVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplN192MSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMjE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjIyMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODkyMmFfZGxlX21lbV91c2IzW10gPSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMjIxLVx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplNF92MSxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM9ODQyPXN0YXRpYyBpbnQgcnR3ODkyMmFfcmVhZF9lZnVzZV9wY2lfc2RpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy04NTMtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6ODU0OnN0YXRpYyBpbnQgcnR3ODkyMmFfcmVhZF9lZnVzZV91c2Ioc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy04NTUte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYz04NzY9c3RhdGljIGludCBydHc4OTIyYV9yZWFkX2VmdXNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXAsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTg4Ni1cdGNhc2UgUlRXODlfRUZVU0VfQkxPQ0tfSENJX0RJR19VU0I6XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6ODg3Olx0XHRyZXQgPSBydHc4OTIyYV9yZWFkX2VmdXNlX3VzYihydHdkZXYsIGxvZ19tYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTg4OC1cdFx0YnJlYWs7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jPTMyMDE9Y29uc3Qgc3RydWN0IHJ0dzg5X2NoaXBfaW5mbyBydHc4OTIyYV9jaGlwX2luZm8gPSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTMyMjctXHRcdC5oZmNfcGFyYW1faW5pXHQ9IHtydHc4OTIyYV9oZmNfcGFyYW1faW5pX3BjaWUsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6MzIyODpcdFx0XHRcdCAgIHJ0dzg5MjJhX2hmY19wYXJhbV9pbmlfdXNiMixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzozMjI5Olx0XHRcdFx0ICAgcnR3ODkyMmFfaGZjX3BhcmFtX2luaV91c2IzLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTMyMzAtXHRcdFx0XHQgICBOVUxMfSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0zMjMxLVx0XHQuZGxlX21lbVx0PSB7cnR3ODkyMmFfZGxlX21lbV9wY2llLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjMyMzI6XHRcdFx0XHQgICBydHc4OTIyYV9kbGVfbWVtX3VzYjIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6MzIzMzpcdFx0XHRcdCAgIHJ0dzg5MjJhX2RsZV9tZW1fdXNiMyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0zMjM0LVx0XHRcdFx0ICAgTlVMTH0sXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy05LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzoxMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvIHJ0dzg5MjJhX3VzYl9pbmZvID0ge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy0xMS1cdC51c2JfaG9zdF9yZXF1ZXN0XzJcdFx0PSAwLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9MzE9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kcml2ZXJfaW5mbyBydHc4OV84OTIyYXVfaW5mbyA9IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTM3LVx0LmJ1cyA9IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6Mzg6XHRcdC51c2IgPSBcdTAwMjZydHc4OTIyYV91c2JfaW5mbyxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtMzktXHR9LFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM9Nzc9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184OTIyYXVfZHJpdmVyID0ge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtNzktXHQuaWRfdGFibGUgPSBydHdfODkyMmF1X2lkX3RhYmxlLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYzo4MDpcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6ODE6XHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04Mi19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYz04NTk9c3RhdGljIGludCBydHc4OTIyZF9yZWFkX2VmdXNlX3BjaV9zZGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg3MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo4NzE6c3RhdGljIGludCBydHc4OTIyZF9yZWFkX2VmdXNlX3VzYihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg3Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTkxOT1zdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfZWZ1c2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcCxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmMtOTI1LVx0Y2FzZSBSVFc4OV9FRlVTRV9CTE9DS19IQ0lfRElHX1VTQjpcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo5MjY6XHRcdHJldHVybiBydHc4OTIyZF9yZWFkX2VmdXNlX3VzYihydHdkZXYsIGxvZ19tYXApO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTkyNy1cdGNhc2UgUlRXODlfRUZVU0VfQkxPQ0tfUkY6XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTQ6c3RhdGljIHZvaWQgX19ydHc4OV91c2JfdmVuZG9ycmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1LVx0XHRcdFx0ICB2b2lkICpkYXRhLCB1MTYgbGVuLCB1OCByZXF0eXBlLCBib29sIHdhcm4pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTc6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOC1cdHN0cnVjdCB1c2JfZGV2aWNlICp1ZGV2ID0gcnR3dXNiLVx1MDAzZXVkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzI6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3ZlbmRvcnJlcShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03My1cdFx0XHRcdHZvaWQgKmRhdGEsIHUxNiBsZW4sIHU4IHJlcXR5cGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc0LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzU6XHRfX3J0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBkYXRhLCBsZW4sIHJlcXR5cGUsIHRydWUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03Ni19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3ODpzdGF0aWMgdTMyIHJ0dzg5X3VzYl9yZWFkX2NtYWMoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkcilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzkte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODctXHRmb3IgKGNvdW50ID0gMDsgOyBjb3VudCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6ODg6XHRcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyMzIsIFx1MDAyNmRhdGEsIDQsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg5LVx0XHRcdFx0ICAgIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA4OnN0YXRpYyB1OCBydHc4OV91c2Jfb3BzX3JlYWQ4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEwOS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTItXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjExMzpcdFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTE0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTU6XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgMSwgUlRXODlfVVNCX1ZFTlFUX1JFQUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTYtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyMDpzdGF0aWMgdTE2IHJ0dzg5X3VzYl9vcHNfcmVhZDE2KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEyMS17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjQtXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyNTpcdFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTI2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjc6XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgMiwgUlRXODlfVVNCX1ZFTlFUX1JFQUQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjgtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEzMjpzdGF0aWMgdTMyIHJ0dzg5X3VzYl9vcHNfcmVhZDMyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzMy17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzYtXHRpZiAoQUNDRVNTX0NNQUMoYWRkcikpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEzNzpcdFx0cmV0dXJuIHJ0dzg5X3VzYl9yZWFkX2NtYWMocnR3ZGV2LCBhZGRyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTM4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMzk6XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgNCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTQwLVx0XHRcdCAgICBSVFc4OV9VU0JfVkVOUVRfUkVBRCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE0NTpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3dyaXRlOChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1OCB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE0Ni17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE0OTpcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBcdTAwMjZkYXRhLCAxLCBSVFc4OV9VU0JfVkVOUVRfV1JJVEUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTAtfVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTEtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3dyaXRlMTYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTE2IHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUzLXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTU2Olx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFx1MDAyNmRhdGEsIDIsIFJUVzg5X1VTQl9WRU5RVF9XUklURSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1Ny19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1OC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTU5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfd3JpdGUzMihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNjAte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNjM6XHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgNCwgUlRXODlfVVNCX1ZFTlFUX1dSSVRFKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY0LX1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNjY6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3dyaXRlMzJfcXVpZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTY3LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTcwOlx0X19ydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXHUwMDI2ZGF0YSwgNCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTcxLVx0XHRcdCAgICAgIFJUVzg5X1VTQl9WRU5RVF9XUklURSwgZmFsc2UpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM9MTc0PXN0YXRpYyB1MzJcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTc1OnJ0dzg5X3VzYl9vcHNfY2hlY2tfYW5kX3JlY2xhaW1fdHhfcmVzb3VyY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNzYtXHRcdFx0XHRcdCAgICB1OCB0eGNoKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNzcte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNzg6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNzktXHRpbnQgaW5mbGlnaHQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOTAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE5MTpzdGF0aWMgdm9pZCBydHc4OV91c2Jfd3JpdGVfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5Mi17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE5MzpcdHN0cnVjdCBydHc4OV91c2JfdHhfY3RybF9ibG9jayAqdHhjYiA9IHVyYi1cdTAwM2Vjb250ZXh0O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOTQtXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSB0eGNiLVx1MDAzZXJ0d2RldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTk1Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTk2LVx0c3RydWN0IGllZWU4MDIxMV90eF9pbmZvICppbmZvO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjU4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoyNTk6c3RhdGljIGludCBydHc4OV91c2Jfd3JpdGVfcG9ydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IGNoX2RtYSxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjYwLVx0XHRcdFx0dm9pZCAqZGF0YSwgaW50IGxlbiwgdm9pZCAqY29udGV4dClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjYxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjYyOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjYzOlx0Y29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvICppbmZvID0gcnR3dXNiLVx1MDAzZWluZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI2NC1cdHN0cnVjdCB1c2JfZGV2aWNlICp1c2JkID0gcnR3dXNiLVx1MDAzZXVkZXY7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNzktXHR1c2JfZmlsbF9idWxrX3VyYih1cmIsIHVzYmQsIHBpcGUsIGRhdGEsIGxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjgwOlx0XHRcdCAgcnR3ODlfdXNiX3dyaXRlX3BvcnRfY29tcGxldGUsIGNvbnRleHQpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yODEtXHR1cmItXHUwMDNldHJhbnNmZXJfZmxhZ3MgfD0gVVJCX1pFUk9fUEFDS0VUO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjk5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMDA6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3R4X2ZyZWVfc2tiKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHhjaCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzAxLVx0XHRcdFx0ICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzA4LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMDk6c3RhdGljIHZvaWQgcnR3ODlfdXNiX29wc190eF9raWNrX29mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR4Y2gpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMxMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMxMTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMxMjpcdHN0cnVjdCBydHc4OV91c2JfdHhfY3RybF9ibG9jayAqdHhjYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzEzLVx0c3RydWN0IHNrX2J1ZmYgKnNrYjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMyMi1cdFx0aWYgKCF0eGNiKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMyMzpcdFx0XHRydHc4OV91c2JfdHhfZnJlZV9za2IocnR3ZGV2LCB0eGNoLCBza2IpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMjQtXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMzQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMzNTpcdFx0cmV0ID0gcnR3ODlfdXNiX3dyaXRlX3BvcnQocnR3ZGV2LCB0eGNoLCBza2ItXHUwMDNlZGF0YSwgc2tiLVx1MDAzZWxlbixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzM2LVx0XHRcdFx0XHQgICB0eGNiKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM0NS1cdFx0XHRrZnJlZSh0eGNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzQ2Olx0XHRcdHJ0dzg5X3VzYl90eF9mcmVlX3NrYihydHdkZXYsIHR4Y2gsIHNrYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM0Ny1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzUwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozNTE6c3RhdGljIGludCBydHc4OV91c2JfdHhfd3JpdGVfZndjbWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNTItXHRcdFx0XHQgICAgc3RydWN0IHJ0dzg5X2NvcmVfdHhfcmVxdWVzdCAqdHhfcmVxKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzU0LVx0c3RydWN0IHJ0dzg5X3R4X2Rlc2NfaW5mbyAqZGVzY19pbmZvID0gXHUwMDI2dHhfcmVxLVx1MDAzZWRlc2NfaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzU1Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzU2LVx0c3RydWN0IHNrX2J1ZmYgKnNrYiA9IHR4X3JlcS1cdTAwM2Vza2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM5MzpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfdHhfd3JpdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTQtXHRcdFx0XHQgIHN0cnVjdCBydHc4OV9jb3JlX3R4X3JlcXVlc3QgKnR4X3JlcSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM5Ni1cdHN0cnVjdCBydHc4OV90eF9kZXNjX2luZm8gKmRlc2NfaW5mbyA9IFx1MDAyNnR4X3JlcS1cdTAwM2VkZXNjX2luZm87XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM5NzpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM5OC1cdHN0cnVjdCBydHc4OV90eF9za2JfZGF0YSAqc2tiX2RhdGE7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00MTItXHRpZiAoZGVzY19pbmZvLVx1MDAzZWNoX2RtYSA9PSBSVFc4OV9UWENIX0NIMTIpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQxMzpcdFx0cmV0dXJuIHJ0dzg5X3VzYl90eF93cml0ZV9md2NtZChydHdkZXYsIHR4X3JlcSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQxNC1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQzNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM2OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDM3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM4Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHc4OV91c2IsIHJ4X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo0Mzk6XHRjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gKmluZm8gPSBydHd1c2ItXHUwMDNlaW5mbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDQwOlx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gcnR3dXNiLVx1MDAzZXJ0d2RldjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDQxLVx0c3RydWN0IHJ0dzg5X3J4X2Rlc2NfaW5mbyBkZXNjX2luZm87XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MDYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjUwNzpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfcmVzdWJtaXQoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1MDg6XHRcdFx0XHQgIHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTA5LVx0XHRcdFx0ICBnZnBfdCBnZnApXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUxMC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjUxMTpcdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHJ0d3VzYi1cdTAwM2VydHdkZXY7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUxMi1cdHN0cnVjdCBza19idWZmICpyeF9za2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MjktXHRcdFx0ICByeGNiLVx1MDAzZXJ4X3NrYi1cdTAwM2VkYXRhLCBSVFc4OV9VU0JfUkVDVkJVRl9TWixcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTMwOlx0XHRcdCAgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZSwgcnhjYik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUzMS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU1MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTUyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdF93b3JrKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaylcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTUzLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTU0Olx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gY29udGFpbmVyX29mKHdvcmssIHN0cnVjdCBydHc4OV91c2IsIHJ4X3VyYl93b3JrKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTU1Olx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NTYtXHRpbnQgaTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2MS1cdFx0aWYgKCFyeGNiLVx1MDAzZXJ4X3NrYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTYyOlx0XHRcdHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdChydHd1c2IsIHJ4Y2IsIEdGUF9BVE9NSUMpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjMtXHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU2NjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcmVhZF9wb3J0X2NvbXBsZXRlKHN0cnVjdCB1cmIgKnVyYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTY3LXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTY4Olx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiID0gdXJiLVx1MDAzZWNvbnRleHQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2OS1cdHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiA9IHJ4Y2ItXHUwMDNlcnR3ZGV2O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NzA6XHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NzEtXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcnhjYi1cdTAwM2VyeF9za2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01ODQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU4NTpcdFx0cnR3ODlfdXNiX3J4X3Jlc3VibWl0KHJ0d3VzYiwgcnhjYiwgR0ZQX0FUT01JQyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU4Ni1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTYtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjYxNzpzdGF0aWMgdm9pZCBydHc4OV91c2JfY2FuY2VsX3J4X2J1ZnMoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTgte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MTk6XHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYyMC1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjI3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Mjg6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2NhbmNlbF90eF9idWZzKHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjI5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjMzOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9mcmVlX3J4X2J1ZnMoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MzQte1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MzU6XHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzNi1cdGludCBpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NDQ6c3RhdGljIGludCBydHc4OV91c2JfYWxsb2NfcnhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY0NS17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY0NjpcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQ3LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NTQtXHRcdGlmICghcnhjYi1cdTAwM2VyeF91cmIpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjU1Olx0XHRcdHJ0dzg5X3VzYl9mcmVlX3J4X2J1ZnMocnR3dXNiKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjU2LVx0XHRcdHJldHVybiAtRU5PTUVNO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjYyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2NjM6c3RhdGljIGludCBydHc4OV91c2JfaW5pdF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY2NC17XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2NTpcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY2Ni1cdHN0cnVjdCBza19idWZmICpyeF9za2I7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NjgtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2OTpcdHJ0d3VzYi1cdTAwM2VyeHdxID0gYWxsb2Nfd29ya3F1ZXVlKFwmIzM0O3J0dzg5X3VzYjogcnggd3FcJiMzNDssIFdRX0JIIHwgV1FfUEVSQ1BVLCAwKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjcwLVx0aWYgKCFydHd1c2ItXHUwMDNlcnh3cSkge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjc3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Nzg6XHRJTklUX1dPUksoXHUwMDI2cnR3dXNiLVx1MDAzZXJ4X3dvcmssIHJ0dzg5X3VzYl9yeF9oYW5kbGVyKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Njc5Olx0SU5JVF9XT1JLKFx1MDAyNnJ0d3VzYi1cdTAwM2VyeF91cmJfd29yaywgcnR3ODlfdXNiX3J4X3Jlc3VibWl0X3dvcmspO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02ODAtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02ODktXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY5MDpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkxLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjkyOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjkzLVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzAwLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDE6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3N0YXJ0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzAyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzAzOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzA0LVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDYtXHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBSVFc4OV9VU0JfUlhDQl9OVU07IGkmIzQzOyYjNDM7KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDc6XHRcdHJ0dzg5X3VzYl9yeF9yZXN1Ym1pdChydHd1c2IsIFx1MDAyNnJ0d3VzYi1cdTAwM2VyeF9jYltpXSwgR0ZQX0tFUk5FTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwOC19XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEwOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9pbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzExLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEyOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzEzLVx0aW50IGk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MjAtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyMTpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzIyLXtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzIzOlx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzI0LVx0aW50IGk7XG4tLVxuXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg2MzAKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiA5MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgYHJ0dzg5YCBhbmQgVVNCIEZ1enppbmcgUG90ZW50aWFsKioKCk9rYXksIHNvIHRoZSBgcnR3ODlgIGRyaXZlciwgcmlnaHQ/IEkgc2VlIGl0IGhhcyBVU0Igc3VwcG9ydCBiYWtlZCBpbiAoYHJ0dzg5X3VzYi15IDo9IHVzYi5vYCkuIFRoYXQgaW1tZWRpYXRlbHkgZmxhZ3MgaXQgYXMgYSBwb3RlbnRpYWwgdGFyZ2V0IGZvciBVU0IgZnV6emluZy4gVGhlIGR1bW15IEhDRCBzZXR1cCBvcGVucyB0aGUgZG9vciBmb3IgdGhhdC4gTXkgZmlyc3QgdGhvdWdodCBpcyB0byBkaWcgaW50byB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIHRvIGdldCBhIGhhbmRsZSBvbiB3aGF0IHNwZWNpZmljYWxseSBlbmFibGVzIHRoaXMgVVNCIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyBzdGFydCB3aXRoIGBDT05GSUdfUlRXODlfVVNCYC4gQnV0IGhvbGQgb24sIGJlZm9yZSBJIGdldCB0b28gZmFyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB1bmRlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIHRvIGdldCB0aGUgZGVmaW5pdGl2ZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBjb25maWcgb3B0aW9ucy4gR290dGEgYmUgdGhvcm91Z2guCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg5X1VTQiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTc9Y29uZmlnIFJUVzg5X1BDSVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoyMDpjb25maWcgUlRXODlfVVNCXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMjEtXHR0cmlzdGF0ZVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE5MDUzCgkJCQkJCQlvdXRwdXQ6IDQzCgkJCQkJCQl0aG91Z2h0czogMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEkmIzM5O20gdGhpbmtpbmcgdGhyb3VnaCB0aGlzIHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBSZWFsdGVrIFdpcmVsZXNzIERyaXZlciBDb25maWd1cmF0aW9uKioKCk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJiMzOTttIGdvaW5nIHRvIGp1bXAgc3RyYWlnaHQgaW50byB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIFJlYWx0ZWsgd2lyZWxlc3MgZHJpdmVyIOKAkyBzcGVjaWZpY2FsbHksIHRoZSBgcnR3ODlgIHNlY3Rpb24uIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGlzIGRyaXZlciBpcyBjb25maWd1cmVkLCBhbmQgYEtjb25maWdgIGZpbGVzIGFyZSB0aGUgYnJlYWQgYW5kIGJ1dHRlciBmb3IgdGhpcyBraW5kIG9mIGludmVzdGlnYXRpb24uIEkmIzM5O20gZ29pbmcgdG8gc3RhcnQgYXJvdW5kIGxpbmUgMjAsIGFzIHRoYXQmIzM5O3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZ3Jhc3AgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCB0aGUgaW5pdGlhbCBkZWZpbml0aW9ucyB0aGF0IHNldCB0aGUgc3RhZ2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIExldCYjMzk7cyBzZWUgd2hhdCB3ZSBjYW4gdW5jb3ZlciEKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIE9SIEJTRC0zLUNsYXVzZVxuICAgMjpcdG1lbnVjb25maWcgUlRXODlcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODAyLjExYXggd2lyZWxlc3MgY2hpcHMgc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0ZGVwZW5kcyBvbiBNQUM4MDIxMVxuICAgNTpcdFx0aGVscFxuICAgNjpcdFx0ICBUaGlzIG1vZHVsZSBhZGRzIHN1cHBvcnQgZm9yIG1hYzgwMjExLWJhc2VkIHdpcmVsZXNzIGRyaXZlcnMgdGhhdFxuICAgNzpcdFx0ICBlbmFibGVzIFJlYWx0ZWsgSUVFRSA4MDIuMTFheCB3aXJlbGVzcyBjaGlwc2V0cy5cbiAgIDg6XHRcbiAgIDk6XHRcdCAgSWYgeW91IGNob29zZSB0byBidWlsZCBhIG1vZHVsZSwgaXQmIzM5O2xsIGJlIGNhbGxlZCBydHc4OS5cbiAgMTA6XHRcbiAgMTE6XHRpZiBSVFc4OVxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBSVFc4OV9DT1JFXG4gIDE0Olx0XHR0cmlzdGF0ZVxuICAxNTpcdFx0c2VsZWN0IFdBTlRfREVWX0NPUkVEVU1QXG4gIDE2Olx0XG4gIDE3Olx0Y29uZmlnIFJUVzg5X1BDSVxuICAxODpcdFx0dHJpc3RhdGVcbiAgMTk6XHRcbiAgMjA6XHRjb25maWcgUlRXODlfVVNCXG4gIDIxOlx0XHR0cmlzdGF0ZVxuICAyMjpcdFxuICAyMzpcdGNvbmZpZyBSVFc4OV84ODUxQlxuICAyNDpcdFx0dHJpc3RhdGVcbiAgMjU6XHRcbiAgMjY6XHRjb25maWcgUlRXODlfODg1MkFcbiAgMjc6XHRcdHRyaXN0YXRlXG4gIDI4Olx0XG4gIDI5Olx0Y29uZmlnIFJUVzg5Xzg4NTJCX0NPTU1PTlxuICAzMDpcdFx0dHJpc3RhdGVcbiAgMzE6XHRcbiAgMzI6XHRjb25maWcgUlRXODlfODg1MkJcbiAgMzM6XHRcdHRyaXN0YXRlXG4gIDM0Olx0XG4gIDM1Olx0Y29uZmlnIFJUVzg5Xzg4NTJCVFxuICAzNjpcdFx0dHJpc3RhdGVcbiAgMzc6XHRcbiAgMzg6XHRjb25maWcgUlRXODlfODg1MkNcbiAgMzk6XHRcdHRyaXN0YXRlXG4gIDQwOlx0XG4gIDQxOlx0Y29uZmlnIFJUVzg5Xzg5MjJBXG4gIDQyOlx0XHR0cmlzdGF0ZVxuICA0MzpcdFxuICA0NDpcdGNvbmZpZyBSVFc4OV84OTIyRFxuICA0NTpcdFx0dHJpc3RhdGVcbiAgNDY6XHRcbiAgNDc6XHRjb25maWcgUlRXODlfODg1MUJFXG4gIDQ4Olx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTFCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuICA0OTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNTA6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDUxOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDUyOlx0XHRzZWxlY3QgUlRXODlfODg1MUJcbiAgNTM6XHRcdGhlbHBcbiAgNTQ6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTFCRSBjaGlwc2V0XG4gIDU1Olx0XG4gIDU2Olx0XHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA1NzpcdFxuICA1ODpcdGNvbmZpZyBSVFc4OV84ODUxQlVcbiAgNTk6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDYwOlx0XHRkZXBlbmRzIG9uIFVTQlxuICA2MTpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgNjI6XHRcdHNlbGVjdCBSVFc4OV9VU0JcbiAgNjM6XHRcdHNlbGVjdCBSVFc4OV84ODUxQlxuICA2NDpcdFx0aGVscFxuICA2NTpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MUJVIGNoaXBzZXRcbiAgNjY6XHRcbiAgNjc6XHRcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcbiAgNjg6XHRcbiAgNjk6XHRjb25maWcgUlRXODlfODg1MkFFXG4gIDcwOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuICA3MTpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgNzI6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDczOlx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDc0Olx0XHRzZWxlY3QgUlRXODlfODg1MkFcbiAgNzU6XHRcdGhlbHBcbiAgNzY6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJBRSBjaGlwc2V0XG4gIDc3Olx0XG4gIDc4Olx0XHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxuICA3OTpcdFxuICA4MDpcdGNvbmZpZyBSVFc4OV84ODUyQVVcbiAgODE6XHRcdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkFVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4gIDgyOlx0XHRkZXBlbmRzIG9uIFVTQlxuICA4MzpcdFx0c2VsZWN0IFJUVzg5X0NPUkVcbiAgODQ6XHRcdHNlbGVjdCBSVFc4OV9VU0JcbiAgODU6XHRcdHNlbGVjdCBSVFc4OV84ODUyQVxuICA4NjpcdFx0aGVscFxuICA4NzpcdFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFVIGNoaXBzZXRcbiAgODg6XHRcbiAgODk6XHRcdCAgODAyLjExYXggVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcbiAgOTA6XHRcbiAgOTE6XHRjb25maWcgUlRXODlfODg1MkJFXG4gIDkyOlx0XHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJCRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuICA5MzpcdFx0ZGVwZW5kcyBvbiBQQ0lcbiAgOTQ6XHRcdHNlbGVjdCBSVFc4OV9DT1JFXG4gIDk1Olx0XHRzZWxlY3QgUlRXODlfUENJXG4gIDk2Olx0XHRzZWxlY3QgUlRXODlfODg1MkJcbiAgOTc6XHRcdHNlbGVjdCBSVFc4OV84ODUyQl9DT01NT05cbiAgOTg6XHRcdGhlbHBcbiAgOTk6XHRcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTJCRSBjaGlwc2V0XG4gMTAwOlx0XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjA2MzMKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiA5MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFVTQiBEcml2ZXIgZm9yIENvbXBhdGliaWxpdHkqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRvIGludGVyYWN0IHdpdGggdGhpcyBkcml2ZXIgdmlhIFVTQi4gSXQgbG9va3MgbGlrZSB0aGUgZHJpdmVyIGZvciB0aGlzIGhhcmR3YXJlIGlzIHJlYWNoYWJsZSB0aHJvdWdoIFVTQiDigJMgdGhhdCYjMzk7cyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgVVNCIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlbGV2YW50IGhlcmUuIEkgc2VlIGEgbGlzdCBvZiBsaWtlbHkgY2FuZGlkYXRlczogYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYC4gSSYjMzk7bGwgd2FudCB0byBrZWVwIHRob3NlIG5hbWVzIGluIG1pbmQgYXMgSSBkaWcgZGVlcGVyLiBNeSBpbW1lZGlhdGUgbmV4dCBzdGVwIGlzIHRvIGRldGVybWluZSBpZiB0aGUgYF9md19zZXRfZ3Bpb2AgZnVuY3Rpb24gb3Igc2ltaWxhciBmdW5jdGlvbmFsaXR5IGlzIGV4cG9zZWQuIFRoYXQmIzM5O3MgdXN1YWxseSB0aGUga2V5IHRvIGNvbnRyb2xsaW5nIGhhcmR3YXJlLWxldmVsIGZlYXR1cmVzLCBzbyBJIG5lZWQgdG8gY29uZmlybSBpdHMgYWNjZXNzaWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X2Z3X3NldF9ncGlvJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMxMj1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfZnJvbV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzMzOnN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zNDI1PXN0YXRpYyB2b2lkIF9zZXRfZXh0X2ludGVyZmFjZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0My1cdFx0aWYgKGJ0MV9zd190eXBlIFx1MDAzZSBCVENfU1dJVENIX0lOVEVSTkFMKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDQ0Olx0XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRU5fTUFQLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0NS1cdFx0XHRcdCAgICAgQklUKEJUQ19EQkdfR05UX0JUMSkpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NDctXHRcdFx0dmFsID0gKGJ0MV9zd190eXBlIFx1MDAzY1x1MDAzYyA4KSAmIzQzOyBCVENfREJHX0dOVF9CVDE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDQ4Olx0XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fTVVYX01BUCwgdmFsKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NDktXHRcdH1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDUzLVx0aWYgKGN4LVx1MDAzZWJ0X2V4dC5od19jb2V4IFx1MDAyNiBCVENfRVhUU09DX0lOVEZfUFRBKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ1NDpcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfSFBUQSwgY3gtXHUwMDNlYnRfZXh0LmhwdGFfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTUtXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1Ny1cdGlmIChjeC1cdTAwM2VidF9leHQuaHdfY29leCBcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX01CWClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NTg6XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX0hNQlgsIGN4LVx1MDAzZWJ0X2V4dC5obWJ4X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU5LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NjEtXHRpZiAoY3gtXHUwMDNlYnRfZXh0Lmh3X2NvZXggXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9TV0lPKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDYyOlx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9TV09VVCwgY3gtXHUwMDNlYnRfZXh0LnN3b3V0X2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDYzOlx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9TV0lOLCBjeC1cdTAwM2VidF9leHQuc3dpbl9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ2NC1cdH1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjE4OTcKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSYjMzk7bSBhbiBlbWJlZGRlZCBzeXN0ZW1zIGV4cGVydDoKCioqVHJhY2luZyB0aGUgUGluIENvbmZpZ3VyYXRpb24gTG9naWMqKgoKQWxyaWdodCwgc28gSSYjMzk7bSBkaWdnaW5nIGludG8gdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCBob3cgdGhlc2UgZXh0ZXJuYWwgaW50ZXJmYWNlcyBhcmUgYmVpbmcgc2V0IHVwLiBJIHNlZSB0aGF0IGBfc2V0X2V4dF9pbnRlcmZhY2VgIGlzIHJlc3BvbnNpYmxlIGZvciBjb25maWd1cmluZyB0aGVzZSB0aGluZ3MuIFRoYXQgbWFrZXMgc2Vuc2UsIGEgdG9wLWxldmVsIGZ1bmN0aW9uIHRoYXQgaGFuZGxlcyB0aGUgaGlnaC1sZXZlbCBzZXR1cC4gQnV0IHRoZW4gSSBzcG90IGl0OiBgX2Z3X3NldF9ncGlvYCBpcyAqY2FsbGVkKiBieSBgX3NldF9leHRfaW50ZXJmYWNlYC4gSG1tLCB0aGF0JiMzOTtzIGludGVyZXN0aW5nLiBTbywgaXQgbG9va3MgbGlrZSBgX2Z3X3NldF9ncGlvYCBpcyB0aGUgbG93LWxldmVsIHdvcmtob3JzZSwgdGhlIGZ1bmN0aW9uIHRoYXQgYWN0dWFsbHkgaW50ZXJhY3RzIHdpdGggdGhlIEdQSU8gKEdlbmVyYWwgUHVycG9zZSBJbnB1dC9PdXRwdXQpIHJlZ2lzdGVycyBvbiB0aGUgaGFyZHdhcmUuIGBfc2V0X2V4dF9pbnRlcmZhY2VgIGlzIHByb2JhYmx5IGNhbGxpbmcgYF9md19zZXRfZ3Bpb2AgaW4gb3JkZXIgdG8gc2V0IHVwIHRoZSBwaW5zIHByb3Blcmx5IGZvciB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlLiBUaGlzIGlzIGEgY29tbW9uIHBhdHRlcm4sIHdpdGggYSBoaWdoZXItbGV2ZWwgZnVuY3Rpb24gbWFuYWdpbmcgdGhlIGJyb2FkZXIgY29uZmlndXJhdGlvbiBhbmQgdGhlbiBkZWxlZ2F0aW5nIHRoZSBoYXJkd2FyZS1zcGVjaWZpYyBkZXRhaWxzIHRvIGEgbG93ZXItbGV2ZWwgZnVuY3Rpb24uIEkmIzM5O2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgX2Z3X3NldF9ncGlvYCBhbmQgaG93IGl0JiMzOTtzIHVzZWQgdG8gZnVsbHkgdW5kZXJzdGFuZCBob3cgdGhlIHBpbiBjb25maWd1cmF0aW9uIGlzIHJlYWxseSB3b3JraW5nLiBUaGlzIGlzIGEgZ29vZCBzdGFydGluZyBwb2ludCBmb3IgdHJhY2luZyB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIHNldHVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfc2V0X2V4dF9pbnRlcmZhY2UmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzMzPXN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQyNC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0MjU6c3RhdGljIHZvaWQgX3NldF9leHRfaW50ZXJmYWNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0MjYte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg2OTA9c3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3MTgtXHRidGNfZndfc2V0X21vbnJlZyhydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODcxOTpcdF9zZXRfZXh0X2ludGVyZmFjZShydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyMC1cdF9zZXRfd2xfdHhfcG93ZXIocnR3ZGV2LCBSVFc4OV9CVENfV0xfREVGX1RYX1BXUiwgUlRXODlfUEhZXzApO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMjU4OAoJCQkJCQkJb3V0cHV0OiA0MAoJCQkJCQkJdGhvdWdodHM6IDE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXAgaW4gdGhlIHdlZWRzIG9mIHRoaXMgY29kZSwgYW5kIHByZXNlbnRlZCBmcm9tIG15IHBlcnNwZWN0aXZlIGFzIGFuIGV4cGVydDoKCioqVW5kZXJzdGFuZGluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIHRoaW5raW5nIGFib3V0IGhvdyB0aGlzIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGlzIHVuZm9sZGluZy4gSXQgbG9va3MgbGlrZSB0aGUgYF9zZXRfZXh0X2ludGVyZmFjZWAgZnVuY3Rpb24gaXMgYmVpbmcgY2FsbGVkICpkaXJlY3RseSogYnkgYF9zZXRfaW5pdF9pbmZvYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEl0JiMzOTtzIG5vdCBzb21lIGluZGlyZWN0IGNhbGwgdGhyb3VnaCBhbm90aGVyIGxheWVyLiBUaGlzIG1lYW5zIHRoYXQgc2V0dGluZyB0aGUgZXh0ZXJuYWwgaW50ZXJmYWNlIGlzIGEgKmRpcmVjdCogY29uc2VxdWVuY2UsIG9yIHBhcnQsIG9mIHNldHRpbmcgdXAgdGhlIGluaXRpYWxpemF0aW9uIGluZm9ybWF0aW9uLiBJIGNhbiBwcm9iYWJseSBpbmZlciBmcm9tIHRoaXMgdGhhdCBob3cgd2Ugc2V0IHVwIHRoZSBleHRlcm5hbCBpbnRlcmZhY2UgaXMgcHJldHR5IGNlbnRyYWwgdG8gdGhlIGVhcmx5IHNldHVwIGFuZCBwcm9iYWJseSBjcml0aWNhbCB0byBjb3JlIGZ1bmN0aW9uYWxpdHkgbGF0ZXIgb24sIG9yIGl0IHdvdWxkbiYjMzk7dCBiZSBkaXJlY3RseSBhdHRhY2hlZCB0byBpbml0IGluZm8uIE5lZWQgdG8ga2VlcCB0aGlzIGNvbm5lY3Rpb24gaW4gbWluZCB3aGVuIEkgZGVidWcgbGF0ZXIgb24uIEdvdCBpdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7X3NldF9pbml0X2luZm8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NjcxPXZvaWQgcnR3ODlfYnRjX250ZnlfcG93ZXJvZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg2ODktI2RlZmluZSBCVENfUExBVEZPUk1fTElUVExFX0VORElBTiAwXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NjkwOnN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg2OTEte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg3MjM9dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzczLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODc3NDpcdF9zZXRfaW5pdF9pbmZvKHJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04Nzc1LVx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSLCBSVFc4OV9QSFlfMCk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ2PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIzMTg3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEkmIzM5O20gYWxyZWFkeSBkZWVwIGluIHRoZSB3ZWVkcyB3aXRoIHdpcmVsZXNzIGRyaXZlciBpbnRlcm5hbHM6CgoqKkFuYWx5emluZyB0aGUgSW5pdGlhbGl6YXRpb24gU2VxdWVuY2UgaW4gcnR3ODlfYnRjX250ZnlfaW5pdCoqCgpBbHJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYHJ0dzg5X2J0Y19udGZ5X2luaXRgLCBhbmQgbXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byBgX3NldF9pbml0X2luZm9gLiBUaGUgY29kZSBhcmNoaXRlY3R1cmUgaXMgZGVzaWduZWQgdG8gaW5pdGlhbGl6ZSB0aGUgQlQgY28tZXhpc3RlbmNlIGZ1bmN0aW9uYWxpdHkuIEZyb20gbXkgZXhwZXJpZW5jZSB3aXRoIHdpcmVsZXNzIGRyaXZlcnMsIHRoZSBmYWN0IHRoYXQgYF9zZXRfaW5pdF9pbmZvYCBpcyBiZWluZyBjYWxsZWQgKmJ5KiBgcnR3ODlfYnRjX250ZnlfaW5pdGAgaXMgY3J1Y2lhbC4gSXQgdGVsbHMgbWUgdGhhdCBgX3NldF9pbml0X2luZm9gIGlzIGxpa2VseSBhIGNvcmUsIGZvdW5kYXRpb25hbCBmdW5jdGlvbiB3aXRoaW4gdGhlIEJUIGNvZXhpc3RlbmNlIHNldHVwLiBJdCYjMzk7cyBhbG1vc3QgY2VydGFpbmx5IHRoZSByb3V0aW5lIHRoYXQgcG9wdWxhdGVzIG9yIHNldHMgdXAgdGhlIG5lY2Vzc2FyeSBkYXRhIHN0cnVjdHVyZXMgYW5kIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyBuZWVkZWQgZm9yIHByb3BlciBCbHVldG9vdGggYW5kIFdpLUZpIGhhcm1vbnkuIEnigJltIGJldHRpbmcgdGhpcyBmdW5jdGlvbiBpcyByZXNwb25zaWJsZSBmb3IgcHJlLXByb2Nlc3NpbmcgdGhlIGluaXRpYWwgc2V0dGluZ3MgdG8gY29uZmlndXJlIG9yIHByZXBhcmUgdGhlIHN5c3RlbSBmb3IgdGhlIHJlc3Qgb2YgdGhlIEJUL1dpLUZpIGNvbGxhYm9yYXRpb24gbG9naWMgdG8gZm9sbG93LiBJIHNob3VsZCBjYXJlZnVsbHkgcmV2aWV3IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IGZ1bmN0aW9uIHRvIHVuZGVyc3RhbmQgaG93IHRoZSBpbml0aWFsaXphdGlvbiBkYXRhIGlzIGhhbmRsZWQgYW5kIHdoZXJlIGl0IGNvbWVzIGZyb20uIFRoaXMgaXMgYSBwb3RlbnRpYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGRlYnVnZ2luZyBhbnkgaXNzdWVzIHdpdGggQmx1ZXRvb3RoIGNvZXhpc3RlbmNlLCBhcyB0aGlzIGluaXRpYWxpemF0aW9uIHN0ZXAgaXMgY2xlYXJseSBjcml0aWNhbCBmb3IgdGhlIHN5c3RlbS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cnR3ODlfYnRjX250ZnlfaW5pdCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg2OTA9c3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3MjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NzIzOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzI0LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaD0zMjA9dm9pZCBydHc4OV9idGNfbnRmeV9wb3dlcm9mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4Lmg6MzIxOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmgtMzIyLXZvaWQgcnR3ODlfYnRjX250Znlfc2Nhbl9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHBoeV9pZHgsIHU4IGJhbmQpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY2NTg9aW50IHJ0dzg5X2NvcmVfc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2OTQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo2Njk1Olx0cnR3ODlfYnRjX250ZnlfaW5pdChydHdkZXYsIEJUQ19NT0RFX05PUk1BTCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02Njk2LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDAwNgoJCQkJCQkJb3V0cHV0OiA0MgoJCQkJCQkJdGhvdWdodHM6IDI2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjoKCioqSW5pdGlhbGlzaW5nIHRoZSBCaXRjb2luIE5vdGlmaWNhdGlvbiBTeXN0ZW0qKgoKUmlnaHQsIHNvIEkgc2VlIHRoYXQgYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGlzIGludm9rZWQgYnkgYHJ0dzg5X2NvcmVfc3RhcnRgLiBUaGlzIGlzIGludGVyZXN0aW5nOyBpdCBnaXZlcyBtZSBhIGNsZWFyIHBvaW50IG9mIGVudHJ5LiBJdCBtZWFucyB0aGF0IHRoZSBCaXRjb2luIG5vdGlmaWNhdGlvbiBzeXN0ZW0sIHdoYXRldmVyIGl0JiMzOTtzIGRvaW5nLCBpcyBpbml0aWFsaXplZCB3aGVuIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGBydHc4OWAgbW9kdWxlIGlzIHN0YXJ0ZWQuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHRoaXMgbm90aWZpY2F0aW9uIHN5c3RlbSBpcyBpbnRlZ3JhbCB0byB0aGUgb3ZlcmFsbCBvcGVyYXRpb24gb2YgdGhlIG1vZHVsZSBhbmQgdGhhdCBzdGFydGluZyB0aGUgY29yZSBlZmZlY3RpdmVseSBiZWdpbnMgdGhlIG1vbml0b3Jpbmcgb3Igbm90aWZpY2F0aW9uIHByb2Nlc3MuIEkmIzM5O2xsIG5lZWQgdG8gZGlnIGludG8gYHJ0dzg5X2NvcmVfc3RhcnRgIGFuZCBzZWUgd2hhdCB0cmlnZ2VycyB0aGUgQml0Y29pbiBzeXN0ZW0gdG8gYWN0dWFsbHkgc3RhcnQgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbnMsIHdoYXQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhcmUgbG9hZGVkLCBhbmQgd2hhdCBldmVudHMgaXTigJlzIHdhdGNoaW5nIGZvciwgYnV0IHRoaXMgY29uZmlybXMgdGhhdCB0aGUgY29yZSBzdGFydGluZyBwb2ludCBpcyBhbHNvIHRoZSBlbnRyeSBwb2ludCBmb3IgQml0Y29pbiBub3RpZmljYXRpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9jb3JlX3N0YXJ0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NjY1Nj1FWFBPUlRfU1lNQk9MKHJ0dzg5X2NoZWNrX3F1aXJrcyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02NjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NjY1ODppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02NjU5LXtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD05MzYyPXZvaWQgcnR3ODlfY29tcGxldGVfY29uZChzdHJ1Y3QgcnR3ODlfd2FpdF9pbmZvICp3YWl0LCB1bnNpZ25lZCBpbnQgY29uZCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTkzNjMtXHRcdFx0IGNvbnN0IHN0cnVjdCBydHc4OV9jb21wbGV0aW9uX2RhdGEgKmRhdGEpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6OTM2NDppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtOTM2NS12b2lkIHJ0dzg5X2NvcmVfc3RvcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYz01Nz1zdGF0aWMgaW50IHJ0dzg5X29wc19zdGFydChzdHJ1Y3QgaWVlZTgwMjExX2h3ICpodylcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmMtNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L21hYzgwMjExLmM6NjM6XHRyZXR1cm4gcnR3ODlfY29yZV9zdGFydChydHdkZXYpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTY0LX1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmM9MjU3PXZvaWQgcnR3ODlfbGVhdmVfaXBzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmMtMjY2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wcy5jOjI2NzpcdHJldCA9IHJ0dzg5X2NvcmVfc3RhcnQocnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcHMuYy0yNjgtXHRpZiAocmV0KVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNDg4OAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDEyOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJ1ZyBGaXgqKgoKT2theSwgc28gYHJ0dzg5X2NvcmVfc3RhcnRgIGdldHMgdHJpZ2dlcmVkIHdoZW4gdGhlIGludGVyZmFjZSBjb21lcyBvbmxpbmUsIHRoYW5rcyB0byBgcnR3ODlfb3BzX3N0YXJ0YCBiZWluZyBhIG1hYzgwMjExIGNhbGxiYWNrLiBUaGUgY2hhbmdlIG9mIGNvbmNlcm4gaXMgaW4gYF9md19zZXRfZ3Bpb2AsIHdoaWNoIGlzIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIE15IGluaXRpYWwgdGhvdWdodCBpczogaXMgdGhpcyB3b3J0aCB0aGUgZWZmb3J0IG9mIGEgZGVkaWNhdGVkIGZ1enppbmcgY2FtcGFpZ24/IEl0JiMzOTtzIGZpeGluZyBhIHBvdGVudGlhbCBvdXQtb2YtYm91bmRzIGFjY2VzcyB3aXRoaW4gdGhlIGRyaXZlciYjMzk7cyBzZXR1cCBwaGFzZS4gQ29uc2lkZXJpbmcgdGhlIGRyaXZlciAqaXMqIGFjY2Vzc2libGUgdGhyb3VnaCBVU0IgZHVtbXlfaGNkIGZ1enppbmcsIHRoZSB2dWxuZXJhYmlsaXR5IHNlZW1zIHBsYXVzaWJsZSwgYW5kIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBMZXQmIzM5O3MgZGVsdmUgaW50byB0aGUgc3BlY2lmaWNzIG9mIGBfZndfc2V0X2dwaW9gIGFuZCBleGFtaW5lIHRoZSB1c2FnZSBvZiBgQlRDX0RCR19OVU1gLiBUaGF0JiMzOTtzIHdoZXJlIEkgbmVlZCB0byBzdGFydC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDY8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7QlRDX0RCR19OVU0mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjYxPXN0YXRpYyB1OCBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHNpZ192OClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjc1LVx0XHRcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNzY6XHRcdHJldHVybiBCVENfREJHX05VTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNzc6XHR9IGVsc2UgaWYgKHNpZ192OCBcdTAwM2U9IEJUQ19EQkdfTlVNKSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjc4LVx0XHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI4MC1cdFx0XHQgICAgX19mdW5jX18sIHNpZ192OCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjgxOlx0XHRyZXR1cm4gQlRDX0RCR19OVU07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjgyLVx0fSBlbHNlIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjg3PXN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF90b192ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwX3Y4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMDMtXHQvKiBiaXQgNC0zMTogc2hpZnQgcmlnaHQgYnkgMiBwb3NpdGlvbnMgKGJlY29tZSBiaXQgMi0yOSBpbiB2NykgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMDQ6XHRmb3IgKGJpdCA9IEJUQ19EQkdfQkNOX0VBUkxZOyBiaXQgXHUwMDNjIEJUQ19EQkdfTlVNOyBiaXQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzA1LVx0XHRpZiAoZW5fbWFwX3Y4IFx1MDAyNiBCSVQoYml0KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzEyPXN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF9mcm9tX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMyNC1cdC8qIGJpdCAyLTI5OiBzaGlmdCBsZWZ0IGJ5IDIgcG9zaXRpb25zIChiZWNvbWUgYml0IDQtMzEgaW4gdjgpICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzI1Olx0Zm9yIChiaXQgPSBCVENfREJHX0dOVF9CVDE7IGJpdCBcdTAwM2MgQlRDX0RCR19OVU0gLSAyOyBiaXQmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzI2LVx0XHRpZiAoZW5fbWFwIFx1MDAyNiBCSVQoYml0KSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzMzPXN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzM2Ny1cdFx0XHRcdFx0XHRcdCAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzM2ODpcdFx0aWYgKGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzY5LVx0XHRcdHJldHVybjtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xMTk4Mj1zdGF0aWMgaW50IF9zaG93X2dwaW9fZGJnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMTUtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMjAxNjpcdGZvciAoaSA9IDA7IGkgXHUwMDNjIEJUQ19EQkdfTlVNOyBpJiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMTctXHRcdGlmICghKGVuX21hcCBcdTAwMjYgQklUKGkpKSlcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAyMC1cdFx0c2lnID0gdmVyLVx1MDAzZWZjeGdwaW9kYmcgXHUwMDNlPSA4ID8gaSA6IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldiwgaSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMjAyMTpcdFx0aWYgKHNpZyBcdTAwM2U9IEJUQ19EQkdfTlVNKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMjItXHRcdFx0Y29udGludWU7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzExOT1lbnVtIGJ0Y193bF9ncGlvX2RlYnVnIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzE1ODpcdEJUQ19EQkdfTlVNLFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE1OS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTMxNjE9c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2dwaW9fZGJnX3YxIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTY2LVx0X19sZTMyIHByZV9zdGF0ZTsgLyogdGhlIGRlYnVnIHNpZ25hbCBpcyAxIG9yIDAgICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMTY3Olx0dTggZ3Bpb19tYXBbQlRDX0RCR19OVU1dOyAvKnRoZSBkZWJ1ZyBzaWduYWxzIHRvIEdQSU8tUG9zaXRpb24gKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNjgtfSBfX3BhY2tlZDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTcwPXN0cnVjdCBydHc4OV9idGNfZmJ0Y19ncGlvX2RiZ192NyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE3NS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMxNzY6XHR1OCBncGlvX21hcFtCVENfREJHX05VTV07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTc3LVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NjwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNjg1NgoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDQyNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGaXhpbmcgdGhlIFJlYWx0ZWsgV2lyZWxlc3MgRHJpdmVyIE91dC1vZi1Cb3VuZHMgQWNjZXNzKioKCk9rYXksIHNvIHRoZSBpc3N1ZSBzZWVtcyB0byBiZSBpbiBgX2Z3X3NldF9ncGlvYCwgc3BlY2lmaWNhbGx5IHdpdGhpbiBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNgLiBJIGNhbiBzZWUgdGhlIGNvZGUgbm93LCBhbmQgaXQgbG9va3MgbGlrZSBpdCYjMzk7cyBwcmV2ZW50aW5nIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBFc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlc2lnbmVkIHRvIG1ha2UgdGhlIGRyaXZlciBtb3JlIHJvYnVzdC4gSSYjMzk7bSB0aGlua2luZyB0aGlzIGlzIHJlYWNoYWJsZSB2aWEgVVNCIGR1bW15X2hjZCBmdXp6aW5nLCB3aGljaCBtZWFucyB0aGUgYXR0YWNrIHZlY3RvciBpcyBwcmV0dHkgd2VsbCBkZWZpbmVkLgoKVG8gcmVwcm9kdWNlIGFuZCB2ZXJpZnkgdGhpcyBmaXgsIEkgbmVlZCB0aGUgcmlnaHQgY29uZmlndXJhdGlvbi4gTG9va2luZyBhdCBpdCwgSSYjMzk7bGwgbmVlZCBgUlRXODlfVVNCYCBhbmQgb25lIG9mIHRoZSBzdXBwb3J0ZWQgVVNCIGRyaXZlcnMgbGlrZSBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTJCVWAsIGBSVFc4OV84ODUyQ1VgLCBgUlRXODlfODkyMkFVYCwgb3IgYFJUVzg5Xzg4NTFCVWAuIExldCBtZSBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlLgoKT2theSwgbGV0JiMzOTtzIHNlZS4gYFJUVzg5Xzg4NTJBVWAgc2VsZWN0cyBgUlRXODlfQ09SRWAsIGBSVFc4OV9VU0JgLCBhbmQgYFJUVzg5Xzg4NTJBYC4gU28ganVzdCBlbmFibGluZyBgUlRXODlfODg1MkFVYCBzaG91bGQgYmUgc3VmZmljaWVudCBmb3IgdmVyaWZpY2F0aW9uLiBIb3dldmVyLCBJIHNob3VsZCBhbHNvIGVuYWJsZSB0aGUgb3RoZXIgVVNCIGRyaXZlcnMsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYFJUVzg5Xzg5MjJBVWAsIGFuZCBgUlRXODlfODg1MUJVYCwganVzdCB0byBiZSBjb21wbGV0ZS4gSHVoLCBpcyBgUlRXODlfODkyMkFVYCBtaXNzaW5nIGZyb20gdGhlIEtjb25maWcgc25pcHBldD8gTGV0IG1lIGRvdWJsZS1jaGVjayB0aGF0IEtjb25maWcgZmlsZS4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgUlRXODlfODkyMkFVJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xNDk9Y29uZmlnIFJUVzg5Xzg5MjJBRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYzOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyNzg5MwoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDIxMgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipFbmFibGluZyBXaXJlbGVzcyBEcml2ZXJzICZhbXA7IERlcGVuZGVuY2llcyoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZ2V0IGRvd24gdG8gYnJhc3MgdGFja3MuIEkgbmVlZCB0byBlbmFibGUgc3VwcG9ydCBmb3IgdGhlc2Ugc3BlY2lmaWMgUmVhbHRlayB3aXJlbGVzcyBjaGlwc2V0czogYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYFJUVzg5Xzg5MjJBVWAsIGFuZCBgUlRXODlfODg1MUJVYC4gQmVmb3JlIEkgZ28gYW55IGZ1cnRoZXIsIEkgc2hvdWxkIHZlcmlmeSBkZXBlbmRlbmNpZXMuIEJhc2VkIG9uIG15IGV4cGVyaWVuY2UsIEkmIzM5O20gZXhwZWN0aW5nIHRvIHNlZSBgTUFDODAyMTFgIGFuZCBgVVNCYCBwb3BwaW5nIHVwIGFzIHJlcXVpcmVtZW50cy4gTm93LCBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCB1bmRlcnN0YW5kIHRoZSBpbnRlcm5hbCByZWxhdGlvbnNoaXBzLgoKSSBuZWVkIHRvIHF1aWNrbHkgemVybyBpbiBvbiB0aGUga2V5IHN5bWJvbHMsIHRoZSBoZWFydCBvZiB0aGVzZSBkcml2ZXJzLiBHb2luZyB0aHJvdWdoIHRoZSBzeW1ib2xzIGxpc3QsIEkgc2VlIHRoYXQgZnVuY3Rpb25zIGxpa2UgYF9md19zZXRfZ3Bpb2AsIGBfc2V0X2V4dF9pbnRlcmZhY2VgLCBhbmQgYF9zZXRfaW5pdF9pbmZvYCBhcmUgZGVjbGFyZWQgYXMgYHN0YXRpY2AuIFRoYXQgbGlrZWx5IG1lYW5zIHRoZXkmIzM5O3JlIGludGVybmFsIGhlbHBlciBmdW5jdGlvbnMsIG5vdCBkaXJlY3RseSBleHBvc2VkIHRvIG90aGVyIG1vZHVsZXMuIE9uIHRoZSBvdGhlciBoYW5kLCBgcnR3ODlfYnRjX250ZnlfaW5pdGAgYW5kIGBydHc4OV9jb3JlX3N0YXJ0YCBhcmUgbm9uLXN0YXRpYzsgdGhpcyBwb2ludHMgdG8gdGhlbSBwbGF5aW5nIGEgbW9yZSBzaWduaWZpY2FudCByb2xlIGluIHRoZSBvdmVyYWxsIGRyaXZlciBhcmNoaXRlY3R1cmUsIHBlcmhhcHMgYXMgaW5pdGlhbGl6YXRpb24gb3IgY29yZSBmdW5jdGlvbmFsaXR5LiBUaGUgZnVuY3Rpb24gYHJ0dzg5X29wc19zdGFydGAgaXMgc3RhdGljLiBUaGF0IG1lYW5zIEkgbmVlZCB0byBkaWcgaW50byBgcnR3ODlfYnRjX250ZnlfaW5pdGAgYW5kIGBydHc4OV9jb3JlX3N0YXJ0YCB0byB1bmRlcnN0YW5kIHRoZSBmbG93LiBUaG9zZSBhcmUgdGhlIG9uZXMgSSBuZWVkIHRvIGV4YW1pbmUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3J0dzg5X2J0Y19udGZ5X2luaXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5LyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NjkwPXN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzIyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODcyMzp2b2lkIHJ0dzg5X2J0Y19udGZ5X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4Lmg9MzIwPXZvaWQgcnR3ODlfYnRjX250ZnlfcG93ZXJvZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oOjMyMTp2b2lkIHJ0dzg5X2J0Y19udGZ5X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oLTMyMi12b2lkIHJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfaWR4LCB1OCBiYW5kKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz02NjU4PWludCBydHc4OV9jb3JlX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02Njk0LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NjY5NTpcdHJ0dzg5X2J0Y19udGZ5X2luaXQocnR3ZGV2LCBCVENfTU9ERV9OT1JNQUwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjY5Ni1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjg5NjgKCQkJCQkJCW91dHB1dDogNDAKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSBzdW1tYXJpemVkIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgSSB3ZXJlIHRoZSBvbmUgdGhpbmtpbmcgaXQ6CgoqKkZvY3VzaW5nIEluIG9uIHRoZSBHUElPIEFzc2lnbm1lbnQqKgoKQWxyaWdodCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGZlZWxzIGxpa2UgYSBzdHJvbmcgbGVhZC4gVGhhdCYjMzk7cyBhIHNvbGlkIGZ1bmN0aW9uIHRvIHplcm8gaW4gb24uIE5vdywgbXkgbmV4dCBzdGVwIGlzIGNsZWFyOiBJIG5lZWQgdG8gZGV0ZXJtaW5lIHRoZSBzY29wZSBvZiB0aGlzIEdQSU8gbWFuaXB1bGF0aW9uLiBJIG5lZWQgdG8gcXVpY2tseSBpZGVudGlmeSBhbnkgYWx0ZXJuYXRpdmUgZW50cnkgcG9pbnRzIHRvIHRoZSBgX2Z3X3NldF9ncGlvYCBmdW5jdGlvbi4gSSBhbSBmYW1pbGlhciB3aXRoIHRoZSBjb21tb24gY29kZS1iYXNlcyBhbmQgd291bGQgZXhwZWN0IGEgZmV3IHBvc3NpYmlsaXRpZXMuIEkmIzM5O2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGFyZSByZWFjaGluZyBvdXQgYW5kIHRvdWNoaW5nIGl0IGFzIHdlbGwuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ3PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19md19zZXRfZ3BpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzMyLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzMzpzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMzNC17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzQyNT1zdGF0aWMgdm9pZCBfc2V0X2V4dF9pbnRlcmZhY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NDMtXHRcdGlmIChidDFfc3dfdHlwZSBcdTAwM2UgQlRDX1NXSVRDSF9JTlRFUk5BTCkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0NDpcdFx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VOX01BUCxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NDUtXHRcdFx0XHQgICAgIEJJVChCVENfREJHX0dOVF9CVDEpKTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ3LVx0XHRcdHZhbCA9IChidDFfc3dfdHlwZSBcdTAwM2NcdTAwM2MgOCkgJiM0MzsgQlRDX0RCR19HTlRfQlQxO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0ODpcdFx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX01VWF9NQVAsIHZhbCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ5LVx0XHR9XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1My1cdGlmIChjeC1cdTAwM2VidF9leHQuaHdfY29leCBcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX1BUQSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NTQ6XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX0hQVEEsIGN4LVx1MDAzZWJ0X2V4dC5ocHRhX2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU1LVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTctXHRpZiAoY3gtXHUwMDNlYnRfZXh0Lmh3X2NvZXggXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9NQlgpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDU4Olx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9ITUJYLCBjeC1cdTAwM2VidF9leHQuaG1ieF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1OS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDYxLVx0aWYgKGN4LVx1MDAzZWJ0X2V4dC5od19jb2V4IFx1MDAyNiBCVENfRVhUU09DX0lOVEZfU1dJTykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ2MjpcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfU1dPVVQsIGN4LVx1MDAzZWJ0X2V4dC5zd291dF9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ2MzpcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfU1dJTiwgY3gtXHUwMDNlYnRfZXh0LnN3aW5fY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NjQtXHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMwMTM0CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMTE5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGJyZWFrZG93biBvZiB0aGlzLgoKKipUcmFjaW5nIHRoZSBEZXBlbmRlbmN5IENoYWluKioKClJpZ2h0LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCB0cnlpbmcgdG8gZmlndXJlIG91dCB0aGUgY3JpdGljYWwgZW50cnkgcG9pbnQsIHRoZSBrZXlzdG9uZSBvZiB0aGUgbG9naWMuIE15IGltbWVkaWF0ZSBodW5jaCBpcyB0aGF0IEkgbmVlZCB0byB6b29tIGluIG9uIGBydHc4OV9idGNfbnRmeV9pbml0YC4gVGhlIGxvZ2ljIGdvZXMgbGlrZSB0aGlzOiBgX3NldF9leHRfaW50ZXJmYWNlYCBpcyBvbmx5IGV2ZXIgY2FsbGVkIGJ5IGBfZndfc2V0X2dwaW9gLiBBbmQgYF9zZXRfZXh0X2ludGVyZmFjZWAgaXRzZWxmIGlzIG9ubHkgY2FsbGVkIGZyb20gYF9zZXRfaW5pdF9pbmZvYC4gQW5kIGBfc2V0X2luaXRfaW5mb2AgaXMgb25seSBjYWxsZWQgYnkgdGhhdCBgcnR3ODlfYnRjX250ZnlfaW5pdGAgZnVuY3Rpb24uIFRoYXQgc2VlbXMgbGlrZSBhIHByZXR0eSBjbGVhciBkZXBlbmRlbmN5IGNoYWluLCBsZWFkaW5nIG1lIHJpZ2h0IHRvIGBydHc4OV9idGNfbnRmeV9pbml0YCBhcyB0aGUgcHJpbWFyeSBmdW5jdGlvbiBvZiBpbnRlcmVzdCwgdGhlIG9uZSBkcml2aW5nIHRoaXMgaW5pdGlhbGl6YXRpb24uIEJ1dCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoYXQgdGhpcyBpc24mIzM5O3QgZ2V0dGluZyBjYWxsZWQgYXMgc29tZSBzb3J0IG9mIGhlbHBlciBmdW5jdGlvbiB3aXRoaW4gYW5vdGhlciBiaWdnZXIgc2NvcGUuIEkgc2hvdWxkIGNoZWNrIHdoZXJlIGBydHc4OV9idGNfbnRmeV9pbml0YCBpdHNlbGYgaXMgY2FsbGVkLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBPa2F5LCBzbyBub3cgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBmdW5jdGlvbiBpdHNlbGYgaXMgY2FsbGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9idGNfbnRmeV9pbml0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODY5MD1zdGF0aWMgdm9pZCBfc2V0X2luaXRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3MjM6dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3MjQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oPTMyMD12b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaDozMjE6dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaC0zMjItdm9pZCBydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZCk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM9NjY1OD1pbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjY5NC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jOjY2OTU6XHRydHc4OV9idGNfbnRmeV9pbml0KHJ0d2RldiwgQlRDX01PREVfTk9STUFMKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2OTYtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ3PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMxMDI3CgkJCQkJCQlvdXRwdXQ6IDQ1CgkJCQkJCQl0aG91Z2h0czogMjAwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IExpbmUgb2YgSW5xdWlyeTogRm9jdXNpbmcgb24gcnR3ODlfY29yZV9zdGFydCBhbmQgYnRjX250ZnlfaW5pdCoqCgpPa2F5LCBzbyBJJiMzOTttIGhvbmluZyBpbiBvbiB0aGUgaW5pdGlhbCBzdGFydHVwIHByb2Nlc3MsIHNwZWNpZmljYWxseSBgcnR3ODlfY29yZV9zdGFydGAuIFRoYXQgc2VlbXMgbGlrZSB0aGUgY3J1Y2lhbCBlbnRyeSBwb2ludC4gQW5kIGFsb25nc2lkZSB0aGF0LCBgcnR3ODlfYnRjX250ZnlfaW5pdGAgaXMgYWxzbyBhIGtleSBzeW1ib2wgZm9yIHRoZSBCbHVldG9vdGggY28tZXhpc3RlbmNlIG5vdGlmaWNhdGlvbiBpbml0aWFsaXphdGlvbi4gSSBzaG91bGQgdXNlIGJvdGggb2YgdGhvc2UgYXMgbXkgcHJpbWFyeSBmb2N1cyBwb2ludHMgZm9yIG5vdy4KCk5vdywgbGV0JiMzOTtzIGxvb2sgYXQgdGhlIHNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGludm9sdmVkLiBJJiMzOTttIHNlZWluZyBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTJCVWAsIGBSVFc4OV84ODUyQ1VgLCBgUlRXODlfODkyMkFVYCwgYW5kIGBSVFc4OV84ODUxQlVgLiBJIG5lZWQgdG8gdmVyaWZ5IGBSVFc4OV84OTIyQVVgIGlzIGFjdHVhbGx5IGRlZmluZWQgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLiBRdWljayBjaGVjay4uLiBZZXAsIGl0JiMzOTtzIHRoZXJlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYzYC4gR29vZC4gTm93LCBsZXQmIzM5O3Mgc2VlIHdoYXQgb3RoZXIgVVNCLXNwZWNpZmljIGNvbmZpZ3VyYXRpb25zIGV4aXN0IGFuZCBzZWUgaG93IHRoZXkgYXJlIG9yZ2FuaXplZCByZWxhdGl2ZSB0byB0aGVzZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFJUVzg5Xy4qVSQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTQ3PWNvbmZpZyBSVFc4OV84ODUxQkVcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6NTg6Y29uZmlnIFJUVzg5Xzg4NTFCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTU5LVx0dHJpc3RhdGUgXCYjMzQ7UmVhbHRlayA4ODUxQlUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcJiMzNDtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9Njk9Y29uZmlnIFJUVzg5Xzg4NTJBRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03OS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzo4MDpjb25maWcgUlRXODlfODg1MkFVXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctODEtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg4NTJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz05MT1jb25maWcgUlRXODlfODg1MkJFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMDM6Y29uZmlnIFJUVzg5Xzg4NTJCVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwNC1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXCYjMzQ7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTEyNz1jb25maWcgUlRXODlfODg1MkNFXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNy1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZzoxMzg6Y29uZmlnIFJUVzg5Xzg4NTJDVVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzOS1cdHRyaXN0YXRlIFwmIzM0O1JlYWx0ZWsgODg1MkNVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2RSkgYWRhcHRlclwmIzM0O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xNDk9Y29uZmlnIFJUVzg5Xzg5MjJBRVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYzOmNvbmZpZyBSVFc4OV84OTIyQVVcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjQtXHR0cmlzdGF0ZSBcJiMzNDtSZWFsdGVrIDg5MjJBVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNykgYWRhcHRlclwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMjIzNAoJCQkJCQkJb3V0cHV0OiAyMjkKCQkJCQkJCXRob3VnaHRzOiAxMjYKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqTXkgRnV6emluZyBTdHJhdGVneTogQWRkcmVzc2luZyB0aGUgT3V0LW9mLUJvdW5kcyBJc3N1ZSoqCgpBbHJpZ2h0LCBsZXQmIzM5O3Mgc2VlLiBJIG5lZWQgdG8gZ2V0IHRoZXNlIGNvbmZpZ3VyYXRpb25zIGluIHBsYWNlOiBgUlRXODlfODg1MUJVYCwgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYW5kIGBSVFc4OV84OTIyQVVgLiBUaGV5IGFsbCBuZWVkIHRvIGJlIGFkZGVkIHRvIEVuYWJsZUNvbmZpZ3MuIEFuZCBkb24mIzM5O3QgZm9yZ2V0IGBSVFc4OV9VU0JgIOKAkyBpdCYjMzk7cyBjcnVjaWFsIGhlcmUuIFRoaXMgaXMgYWxsIGFib3V0IGEgZml4IGZvciB0aGF0IG5hc3R5IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGlzc3VlIEkgZm91bmQgaW4gYF9md19zZXRfZ3Bpb2AuIE5vdywgYmVjYXVzZSB0aGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiwgdGhlIHBsYW4mIzM5O3MgY2xlYXI6IGBXb3J0aEZ1enppbmc9dHJ1ZWAuIEdvdHRhIGdldCB0aG9zZSBmdXp6ZXJzIHJ1bm5pbmcgdG8gcmVhbGx5IGRpZyBpbnRvIHRoaXMgdnVsbmVyYWJpbGl0eS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDc8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O1JUVzg5Xzg4NTFCVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJDVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84OTIyQVUmIzM0OywKICAgICYjMzQ7UlRXODlfVVNCJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7cnR3ODlfYnRjX250ZnlfaW5pdCYjMzQ7LAogICAgJiMzNDtydHc4OV9jb3JlX3N0YXJ0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGBfZndfc2V0X2dwaW9gIHdpdGhpbiB0aGUgUmVhbHRlayBydHc4OSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBmdXp6aW5nIChkdW1teV9oY2QpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKGBydHc4OV9idGNfbnRmeV9pbml0YCAtXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVx1MDAzZSBgX3NldF9leHRfaW50ZXJmYWNlYCAtXHUwMDNlIGBfZndfc2V0X2dwaW9gKS4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7UlRXODlfODg1MUJVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg4NTJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV84ODUyQlUmIzM0OywKICAgICYjMzQ7UlRXODlfODg1MkNVJiMzNDssCiAgICAmIzM0O1JUVzg5Xzg5MjJBVSYjMzQ7LAogICAgJiMzNDtSVFc4OV9VU0ImIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtydHc4OV9idGNfbnRmeV9pbml0JiMzNDssCiAgICAmIzM0O3J0dzg5X2NvcmVfc3RhcnQmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gYF9md19zZXRfZ3Bpb2Agd2l0aGluIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGZ1enppbmcgKGR1bW15X2hjZCkuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiAoYHJ0dzg5X2J0Y19udGZ5X2luaXRgIC1cdTAwM2UgYF9zZXRfaW5pdF9pbmZvYCAtXHUwMDNlIGBfc2V0X2V4dF9pbnRlcmZhY2VgIC1cdTAwM2UgYF9md19zZXRfZ3Bpb2ApLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMzLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+SWY8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4ybTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ3PC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjJtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBfZndfc2V0X2dwaW9gIHdoZXJlIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCB3YXMgaW5jb3JyZWN0bHkgY2hlY2tlZCBhZ2FpbnN0IGAweGZmYCBpbnN0ZWFkIG9mIGBcdTAwM2U9IEJUQ19EQkdfTlVNYC4gYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCByZXR1cm5zIGBCVENfREJHX05VTWAgKHdoaWNoIGlzIDMyKSBvbiBlcnJvci4gQmVjYXVzZSBvZiB0aGUgaW5jb3JyZWN0IGNoZWNrLCB0aGUgZXJyb3IgdmFsdWUgd2FzIG5vdCBjYXVnaHQgYW5kIHdhcyBzZW50IHRvIHRoZSBmaXJtd2FyZSBhcyBhIHZhbGlkIHNpZ25hbCBJRC4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQWxsIGZpZWxkcyBvZiB0aGUgYGdwaW8tXHUwMDNlbXV4LmRhdGFgIHN0cnVjdHVyZSBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgY29waWVkIHRvIHRoZSBidWZmZXIgYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGVyZWZvcmUsIHRoaXMgYnVnIGNhbm5vdCBiZSBkZXRlY3RlZCBieSBLTVNBTiwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBzZWN1cml0eSBlbmdpbmVlciBzcGVjaWFsaXppbmcgaW4ga2VybmVsIG1lbW9yeQplcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZApkZXRlcm1pbmUgaWYgdGhlIGNvZGUgY2hhbmdlcyBqdXN0aWZ5IHNwYXduaW5nIGEgZGVkaWNhdGVkIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpCmZ1enppbmcgc2Vzc2lvbiBpbiBhZGRpdGlvbiB0byBzdGFuZGFyZCBLQVNBTiBmdXp6aW5nLgoKQ1JJVElDQUwgRElTVElOQ1RJT04gQkVUV0VFTiBLQVNBTiBBTkQgS01TQU46Ci0gU3RhbmRhcmQgS0FTQU4ga2VybmVsIGJ1aWxkcyAodXBzdHJlYW0tYXBwYXJtb3Ita2FzYW4uY29uZmlnKSBhbHJlYWR5IGVuYWJsZQogIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTgogIChvdXQtb2YtYm91bmRzIGFjY2Vzc2VzLCB1c2UtYWZ0ZXItZnJlZSwgZG91YmxlIGZyZWUsIGludmFsaWQgZnJlZSksIExPQ0tERVAKICAobG9ja2luZyBidWdzIGFuZCBkZWFkbG9ja3MpLCBVQi1zYW5pdGl6ZXJzLCBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gY2hlY2tzLgotIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLAogIG9yIHBhZ2UgYWxsb2NhdGlvbnMpIGFuZCBrZXJuZWwtdG8tdXNlciBtZW1vcnkgaW5mby1sZWFrcy4KClJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sCkxPQ0tERVAsIE9SIE9USEVSIFNUQU5EQVJEIEJVRyBERVRFQ1RPUlMuCkEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpbmN1cnMgc2lnbmlmaWNhbnQgcmVzb3VyY2UgY29zdHMuIFlvdSBtdXN0IE9OTFkKc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3MKdGhhdCBhcmUgZGV0ZWN0ZWQgT05MWSBieSBLTVNBTi4KCkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0CnVuaW5pdGlhbGl6ZWQgZmllbGQgYWNjZXNzZXMgb3IgbmV3IGJ1ZmZlciBhbGxvY2F0aW9ucyBhcmUgYWRkZWQgaW4gdGhlIGRpZmYgaXRzZWxmLAphIHBhdGNoIG1heSBhbHRlciBjb250cm9sIGZsb3csIGJvdW5kcyBjaGVja2luZywgb3IgZGF0YSBsZW5ndGggY2FsY3VsYXRpb25zIGluIHdheXMKdGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmcKdW5pbml0aWFsaXplZCBzdGFjay9oZWFwIG1lbW9yeSB0byBiZSByZWFkLCBjb3BpZWQgdG8gdXNlciBzcGFjZSwgb3IgdXNlZCBpbiBjb250cm9sCmZsb3cpLiBEbyBub3QgaGVzaXRhdGUgdG8gdXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gaW5zcGVjdCB0aGUgc3Vycm91bmRpbmcgY29kZSwKY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuCgpTZXQgTmVlZHNLTVNBTj10cnVlIE9OTFkgSUYgdGhlIHBhdGNoIGludHJvZHVjZXMgb3IgbW9kaWZpZXM6CjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiCiAgIGF0dHJpYnV0ZXMsIGlvY3RsIG91dHB1dCBhcmd1bWVudHMsIHNvY2tldCBvcHRpb25zLCBvciBCUEYgYnVmZmVycykgd2hlcmUgZmllbGRzCiAgIG9yIHN0cnVjdHVyZSBwYWRkaW5nIG1pZ2h0IG5vdCBiZSBmdWxseSBpbml0aWFsaXplZC96ZXJvZWQuCjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMKICAgb3Igc3RydWN0IGZpZWxkcy4KMy4gQWxsb2NhdGlvbiBvciBpbml0aWFsaXphdGlvbiBvZiBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyB3aGVyZSB1bmluaXRpYWxpemVkIGZpZWxkcwogICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLgo0LiBCb3VuZHMgY2hlY2tzLCBsZW5ndGhzLCBvciBsb2dpYyBpbiBhIHdheSB0aGF0IGFsbG93cyBzdXJyb3VuZGluZyBjb2RlIHRvIGFjY2VzcwogICB1bmluaXRpYWxpemVkIGJ5dGVzIG9mIGV4aXN0aW5nIGJ1ZmZlcnMuCgpTZXQgTmVlZHNLTVNBTj1mYWxzZSBJRjoKLSBUaGUgY29kZSBjaGFuZ2VzIHByaW1hcmlseSByaXNrIG91dC1vZi1ib3VuZHMgYWNjZXNzLCBhcnJheSBvdmVyZmxvd3MsIE5VTEwgcG9pbnRlcgogIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodAogIGJ5IEtBU0FOLCBMT0NLREVQLCBvciBzdGFuZGFyZCBidWcgZGV0ZWN0b3JzKS4KLSBBbGwgc3RhY2svaGVhcCBzdHJ1Y3R1cmVzIHRvdWNoZWQgb3IgaW50cm9kdWNlZCBieSB0aGUgcGF0Y2ggYXJlIGZ1bGx5IHplcm9lZAogIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC4KLSBUaGUgcGF0Y2ggZG9lcyBub3QgaW50cm9kdWNlIGFueSByaXNrIG9mIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IHVzYWdlIG9yIGluZm8tbGVha3MuCgpVc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlCmRldGFpbGVkIEtNU0FOUmVhc29uaW5nIGNvbnRyYXN0aW5nIEtBU0FOIHZzIEtNU0FOIGFwcGxpY2FiaWxpdHkgZm9yIHRoaXMgcGF0Y2guClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5ZmIyODlhNjNlMThlNWFlMmFhMjQxOWU5YzA2YjVkYjk0YzFjZDJlCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBBdWcgMjYgMDM6NDY6MDcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jCmluZGV4IDVhOWRjNGQ4YTAwYmEuLjEyYmQ1NTM5ZThjNmQgMTAwNjQ0Ci0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jCkBAIC0zMzY1LDcgJiM0MzszMzY1LDcgQEAgc3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbCkKIAkJZ3Bpby0mZ3Q7bXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyOwogCQlncGlvLSZndDttdXguZGF0YS5zaWcgPSBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsCiAJCQkJCQkJICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7Ci0JCWlmIChncGlvLSZndDttdXguZGF0YS5zaWcgPT0gMHhmZikKJiM0MzsJCWlmIChncGlvLSZndDttdXguZGF0YS5zaWcgJmd0Oz0gQlRDX0RCR19OVU0pCiAJCQlyZXR1cm47CiAJCWdwaW8tJmd0O211eC5kYXRhLmdwaW8gPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7CiAJCWwyX2gyYyA9IGdwaW8tJmd0O211eC5mbXQ7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMDkzCgkJCQkJCQlvdXRwdXQ6IDQ0CgkJCQkJCQl0aG91Z2h0czogMTIxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFJlYWx0ZWsgV2ktRmkgRHJpdmVyIFBhdGNoKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgY29leC5jYCBwYXRjaC4gSSBzZWUgYSBjb25kaXRpb24gY2hhbmdlIHJpZ2h0IGF3YXk6IGEgY29tcGFyaXNvbiB0aGF0JiMzOTtzIGdvbmUgZnJvbSBjaGVja2luZyBmb3IgYW4gZXhhY3QgdmFsdWUgb2YgYDB4ZmZgIHRvIGEgZ3JlYXRlci10aGFuLW9yLWVxdWFsLXRvIGNoZWNrIGFnYWluc3QgYEJUQ19EQkdfTlVNYC4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzLCB0aGlzICpoYXMqIHRvIGJlIHNvbWUga2luZCBvZiBib3VuZHMgY2hlY2sgb3IgdmFsaWRhdGlvbiBsb2dpYy4gVGhlIG9yaWdpbmFsIGNvZGUgd2FzIGxpa2VseSB0cnlpbmcgdG8gZmlsdGVyIG91dCBhIHNwZWNpZmljLCBsaWtlbHkgaW52YWxpZCwgc2lnbmFsIHZhbHVlLCBhbmQgbm93IGl0JiMzOTtzIGdlbmVyYWxpemluZyB0aGF0IHRvIGEgcmFuZ2UuIEl0IG1ha2VzIG1lIHdvbmRlciB3aGF0IHRoZSBwdXJwb3NlIG9mIHRoZSBvcmlnaW5hbCBzcGVjaWZpYyBjaGVjayB3YXMuCgpUbyB1bmRlcnN0YW5kIHRoZSBjaGFuZ2UmIzM5O3MgaW1wbGljYXRpb25zIGZ1bGx5LCBJIG5lZWQgdG8gc2VlIGhvdyBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnYCBpcyBiZWluZyB1c2VkIGFuZCB3aGF0IHRoZSBjb250ZXh0IG9mIHRoYXQgYDB4ZmZgIHZhbHVlIHdhcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBCVENfREJHX05VTWAgcmVwcmVzZW50cywgYW5kIHdoYXQgdGhlIHJhbmdlIGNvbXBhcmlzb24gaXMgaW50ZW5kZWQgdG8gZG8uCgpTbywgSSYjMzk7bGwgbmVlZCB0byBkaWcgaW50byB0aGUgc3Vycm91bmRpbmcgY29kZSwgZm9jdXNpbmcgb24gdGhlIGZ1bmN0aW9ucyBgX2Z3X3NldF9ncGlvYCBhbmQgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYC4gVGhvc2UgYXJlIG15IG5leHQgc3RlcHMuIFRoZXkgc2hvdWxkIHJldmVhbCB0aGUgZGF0YSBmbG93IGFuZCB0aGUgbWVhbmluZyBvZiB0aG9zZSBHUElPIHNpZ25hbHMuIEZyb20gdGhlcmUsIEkgY2FuIGRldGVybWluZSBpZiB0aGUgY2hhbmdlIGlzIGEgYnVnIGZpeCwgYW4gb3B0aW1pemF0aW9uLCBvciwgcG90ZW50aWFsbHksIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gdGhlIGNvZXhpc3RlbmNlIGJlaGF2aW9yLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfZndfc2V0X2dwaW8mIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzEyPXN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF9mcm9tX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXApXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMzMi1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMzM6c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzQte1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTM0MjU9c3RhdGljIHZvaWQgX3NldF9leHRfaW50ZXJmYWNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQzLVx0XHRpZiAoYnQxX3N3X3R5cGUgXHUwMDNlIEJUQ19TV0lUQ0hfSU5URVJOQUwpIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NDQ6XHRcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FTl9NQVAsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ1LVx0XHRcdFx0ICAgICBCSVQoQlRDX0RCR19HTlRfQlQxKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0Ny1cdFx0XHR2YWwgPSAoYnQxX3N3X3R5cGUgXHUwMDNjXHUwMDNjIDgpICYjNDM7IEJUQ19EQkdfR05UX0JUMTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NDg6XHRcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19NVVhfTUFQLCB2YWwpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0OS1cdFx0fVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTMtXHRpZiAoY3gtXHUwMDNlYnRfZXh0Lmh3X2NvZXggXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9QVEEpXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDU0Olx0XHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9IUFRBLCBjeC1cdTAwM2VidF9leHQuaHB0YV9jZmcpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1NS1cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU3LVx0aWYgKGN4LVx1MDAzZWJ0X2V4dC5od19jb2V4IFx1MDAyNiBCVENfRVhUU09DX0lOVEZfTUJYKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ1ODpcdFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfSE1CWCwgY3gtXHUwMDNlYnRfZXh0LmhtYnhfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTktXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ2MS1cdGlmIChjeC1cdTAwM2VidF9leHQuaHdfY29leCBcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX1NXSU8pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NjI6XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX1NXT1VULCBjeC1cdTAwM2VidF9leHQuc3dvdXRfY2ZnKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NjM6XHRcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX1NXSU4sIGN4LVx1MDAzZWJ0X2V4dC5zd2luX2NmZyk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDY0LVx0fVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM3LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzNDkzCgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMjAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCBwcmVzZW50ZWQgYXMgaWYgaXQgd2VyZSBteSBvd24gaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIGBfZndfc2V0X2dwaW9gKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGluLiBNeSBtaW5kIGltbWVkaWF0ZWx5IHdlbnQgdG8gdGhhdCBgX2Z3X3NldF9ncGlvYCBmdW5jdGlvbi4gSXQmIzM5O3MgdXN1YWxseSBhIGdvb2QgYmV0LCBnaXZlbiB0aGUgbGluZSBudW1iZXIgcmVmZXJlbmNlICgzMzY1KSwgdGhhdCBpdCYjMzk7cyBkZWFsaW5nIHdpdGggc29tZSBsb3ctbGV2ZWwgaGFyZHdhcmUgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgdGhhdCBpdCYjMzk7cyBhIGtleSBmdW5jdGlvbiBmb3IgY29uZmlndXJpbmcgb3IgY29udHJvbGxpbmcgYSBHUElPIChHZW5lcmFsIFB1cnBvc2UgSW5wdXQvT3V0cHV0KSBwaW4g4oCTIGl0JiMzOTtzIHByYWN0aWNhbGx5IGluIHRoZSBuYW1lLCBhZnRlciBhbGwhIEtub3dpbmcgdGhhdCBHUElPcyBhcmUgZnVuZGFtZW50YWwgZm9yIGludGVyZmFjaW5nIHdpdGggZXh0ZXJuYWwgY29tcG9uZW50cywgc2Vuc29ycywgb3Igb3RoZXIgaGFyZHdhcmUsIEkgZXhwZWN0IHRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjcml0aWNhbCB0byB0aGUgb3ZlcmFsbCBzeXN0ZW0mIzM5O3MgYmVoYXZpb3IgYW5kIGNvdWxkIGJlIGNlbnRyYWwgdG8gbXkgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UsIGhvdyBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgYnJvYWRlciBjb2RlIGNvbnRleHQsIGFuZCB3aGF0IGRhdGEgc3RydWN0dXJlcyBpdCBtaWdodCBtYW5pcHVsYXRlLiBGcm9tIHRoZSBsaW5lIG51bWJlciwgSSYjMzk7bSBleHBlY3RpbmcgdGhpcyBpcyBhIGNvcmUgZnVuY3Rpb24sIHByb2JhYmx5IHVzZWQgbWFueSBwbGFjZXMsIG1ha2luZyBpdCBhbiBpZGVhbCBzdGFydGluZyBwb2ludCBmb3IgYSBkZWVwIGRpdmUuIExldCYjMzk7cyBzZWUgd2hhdCYjMzk7cyB3aGF0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0NzwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzMzMywKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzMzOlx0c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbjMzMzQ6XHR7XG4zMzM1Olx0XHRzdHJ1Y3QgcnR3ODlfYnRjICpidGMgPSBcdTAwMjZydHdkZXYtXHUwMDNlYnRjO1xuMzMzNjpcdFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvICpncGlvID0gXHUwMDI2YnRjLVx1MDAzZWdwaW87XG4zMzM3Olx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbjMzMzg6XHRcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiBsMl9oMmM7XG4zMzM5Olx0XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fNGIgbDRfaDJjO1xuMzM0MDpcdFx0dTggZ3Bpb192ZXIgPSB2ZXItXHUwMDNlZmN4Z3Bpb2RiZztcbjMzNDE6XHRcdHU4IGJ1ZltzaXplb2YobDRfaDJjKV07XG4zMzQyOlx0XHR1OCBsZW47XG4zMzQzOlx0XG4zMzQ0Olx0XHRpZiAoZ3Bpb192ZXIgXHUwMDNjIDggXHUwMDI2XHUwMDI2IHR5cGUgXHUwMDNlIENYREdQSU9fTVVYX01BUClcbjMzNDU6XHRcdFx0cmV0dXJuO1xuMzM0NjpcdFxuMzM0NzpcdFx0aWYgKHR5cGUgXHUwMDNlPSBDWERHUElPX01BWClcbjMzNDg6XHRcdFx0cmV0dXJuO1xuMzM0OTpcdFxuMzM1MDpcdFx0c3dpdGNoICh0eXBlKSB7XG4zMzUxOlx0XHRjYXNlIENYREdQSU9fRU5fTUFQOiAvKiBHUElPIGRlYnVnIHNpZ25hbCBlbi1tYXAgMH4zMSAqL1xuMzM1MjpcdFx0XHR2YWwgPSBfY29udmVydF9ncGlvX2VubWFwX3RvX3ZlcihydHdkZXYsIHZhbCk7XG4zMzUzOlx0XHRcdGdwaW8tXHUwMDNlZW5fbWFwLmRhdGEudHlwZSA9IENYREdQSU9fRU5fTUFQO1xuMzM1NDpcdFx0XHRncGlvLVx1MDAzZWVuX21hcC5kYXRhLmZ2ZXIgPSBncGlvX3ZlcjtcbjMzNTU6XHRcdFx0Z3Bpby1cdTAwM2Vlbl9tYXAuZGF0YS5kbGVuID0gQ1hER1BJT19TRVRfTDQ7XG4zMzU2Olx0XHRcdGdwaW8tXHUwMDNlZW5fbWFwLmRhdGEuZW5fbWFwID0gdmFsO1xuMzM1NzpcdFx0XHRsNF9oMmMgPSBncGlvLVx1MDAzZWVuX21hcC5mbXQ7XG4zMzU4Olx0XHRcdHB1dF91bmFsaWduZWRfbGUzMih2YWwsICh1MzIgKilsNF9oMmMuZGF0YSk7XG4zMzU5Olx0XHRcdG1lbWNweShidWYsIFx1MDAyNmw0X2gyYywgc2l6ZW9mKGw0X2gyYykpO1xuMzM2MDpcdFx0XHRsZW4gPSBzaXplb2YobDRfaDJjKTtcbjMzNjE6XHRcdFx0YnJlYWs7XG4zMzYyOlx0XHRjYXNlIENYREdQSU9fTVVYX01BUDogLyogR1BJTyBkYmc6IFNpZ25hbCB0byBHUElPIE11eCAqL1xuMzM2MzpcdFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLnR5cGUgPSBDWERHUElPX01VWF9NQVA7XG4zMzY0Olx0XHRcdGdwaW8tXHUwMDNlbXV4LmRhdGEuZnZlciA9IGdwaW9fdmVyO1xuMzM2NTpcdFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcbjMzNjY6XHRcdFx0Z3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPSBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsXG4zMzY3Olx0XHRcdFx0XHRcdFx0XHQgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpKTtcbjMzNjg6XHRcdFx0aWYgKGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG4zMzY5Olx0XHRcdFx0cmV0dXJuO1xuMzM3MDpcdFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLmdwaW8gPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XG4zMzcxOlx0XHRcdGwyX2gyYyA9IGdwaW8tXHUwMDNlbXV4LmZtdDtcbjMzNzI6XHRcdFx0bWVtY3B5KGJ1ZiwgXHUwMDI2bDJfaDJjLCBzaXplb2YobDJfaDJjKSk7XG4zMzczOlx0XHRcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xuMzM3NDpcdFx0XHRicmVhaztcbjMzNzU6XHRcdGNhc2UgQ1hER1BJT19FWFRfSFBUQTogLyogR1BJTyBjb25maWcgZm9yIEV4dCBIVy1QVEEgKi9cbjMzNzY6XHRcdFx0Z3Bpby1cdTAwM2VleHRfcHRhLmRhdGEudHlwZSA9IENYREdQSU9fRVhUX0hQVEE7XG4zMzc3Olx0XHRcdGdwaW8tXHUwMDNlZXh0X3B0YS5kYXRhLmZ2ZXIgPSBncGlvX3ZlcjtcbjMzNzg6XHRcdFx0Z3Bpby1cdTAwM2VleHRfcHRhLmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xuMzM3OTpcdFx0XHRncGlvLVx1MDAzZWV4dF9wdGEuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XG4zMzgwOlx0XHRcdGdwaW8tXHUwMDNlZXh0X3B0YS5kYXRhLm1hcF9oaWdoID0gRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCB2YWwpO1xuMzM4MTpcdFx0XHRsMl9oMmMgPSBncGlvLVx1MDAzZWV4dF9wdGEuZm10O1xuMzM4MjpcdFx0XHRtZW1jcHkoYnVmLCBcdTAwMjZsMl9oMmMsIHNpemVvZihsMl9oMmMpKTtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zOS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDc8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDkyMQoJCQkJCQkJb3V0cHV0OiA0OAoJCQkJCQkJdGhvdWdodHM6IDg2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBCdWcgRml4KioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGNvZGUgY2hhbmdlIGFuZCBpbW1lZGlhdGVseSByZWNvZ25pemUgaXQgYXMgYSBib3VuZHMgY2hlY2suIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBwcmV0dHkgc2xvcHB5LCBvbmx5IGNoZWNraW5nIGZvciBhIHNwZWNpZmljIHZhbHVlICgweGZmKSBpbiBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnYC4gTXkgZmllbGQgZXhwZXJpZW5jZSBpcyB0aGF0IHRoaXMgaXMgdXN1YWxseSBhIHN5bXB0b20gb2YgYSBsYXJnZXIgcHJvYmxlbS4gVGhlIGNoYW5nZSBpcyByZXBsYWNpbmcgaXQgd2l0aCBhIG1vcmUgcm9idXN0IGNoZWNrOiBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnICZndDs9IEJUQ19EQkdfTlVNYC4gVGhhdCBgQlRDX0RCR19OVU1gIGNvbnN0YW50IGlzIHRoZSBrZXkgaGVyZS4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBkZWZpbmluZyBhbiB1cHBlciBib3VuZCBvbiB3aGF0JiMzOTtzIGNvbnNpZGVyZWQgYSB2YWxpZCBzaWduYXR1cmUgdmFsdWUuIEdvb2QsIHRoYXQmIzM5O3Mgd2hhdCBJIHdhbnQgdG8gc2VlIOKAkyBwcm9wZXIgdmFsaWRhdGlvbi4KCk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMuIFdoYXQgZGlkIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJuPyBJIHdvdWxkIHN1c3BlY3QgYSByYW5nZSB0byBlbnN1cmUgc2FmZXR5LiBUaGlzIGlzIGFuIGltcHJvdmVtZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtfZ2V0X2dwaW9zaWdfZm9yX3ZlciYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyMTA9c3RhdGljIHZvaWQgX2Z3X3NldF9wb2xpY3koc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MTYgcG9saWN5X3R5cGUsXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI2MC1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNjE6c3RhdGljIHU4IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggc2lnX3Y4KVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI2Mi17XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMzMz1zdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjUtXHRcdGdwaW8tXHUwMDNlbXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzM2NjpcdFx0Z3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPSBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzY3LVx0XHRcdFx0XHRcdFx0ICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTE5ODI9c3RhdGljIGludCBfc2hvd19ncGlvX2RiZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDE5LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIwMjA6XHRcdHNpZyA9IHZlci1cdTAwM2VmY3hncGlvZGJnIFx1MDAzZT0gOCA/IGkgOiBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMjEtXHRcdGlmIChzaWcgXHUwMDNlPSBCVENfREJHX05VTSlcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MS8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTc5MAoJCQkJCQkJb3V0cHV0OiA0NwoJCQkJCQkJdGhvdWdodHM6IDE2CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGRlZXBseSBmYW1pbGlhciB3aXRoIGNvZGUgYW5kIEdQSU8gc2lnbmFsczoKCioqQW5hbHl6aW5nIHRoZSBGdW5jdGlvbjogYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCoqCgpBbHJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMgZnVuY3Rpb246IGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAuIFRoZSBuYW1lIGl0c2VsZiBpcyBmYWlybHkgZGVzY3JpcHRpdmUsIHN1Z2dlc3RpbmcgaXQmIzM5O3MgZGVzaWduZWQgdG8gcmV0cmlldmUgYSBHUElPIChHZW5lcmFsIFB1cnBvc2UgSW5wdXQvT3V0cHV0KSBzaWduYWwgc3BlY2lmaWMgdG8gYSAmIzM0O3ZlciYjMzQ7IC0gcHJlc3VtYWJseSBhIHZlcnNpb24sIHZlcmlmaWNhdGlvbiwgb3IgdmFsaWRhdGlvbiBjb250ZXh0LiBHaXZlbiBteSBleHBlcmllbmNlLCBJJiMzOTtkIGltbWVkaWF0ZWx5IHN0YXJ0IHRoaW5raW5nIGFib3V0IGhvdyBHUElPcyBhcmUgdXRpbGl6ZWQgaW4gdGhpcyBzeXN0ZW0g4oCTIGlzIGl0IGZvciBoYXJkd2FyZSBoYW5kc2hha2VzLCBzaWduYWxpbmcgc3RhdGUgY2hhbmdlcywgb3IgcGVyaGFwcyBldmVuIHRyaWdnZXJpbmcgc3BlY2lmaWMgdGVzdCByb3V0aW5lcyBiYXNlZCBvbiBhIGRldGVjdGVkIHZlcnNpb24/IEkga25vdyBhIHNvbGlkIHVuZGVyc3RhbmRpbmcgb2YgaG93IEdQSU9zIGFyZSB1c2VkIGlzIGNydWNpYWwgd2hlbiBkZWJ1Z2dpbmcgb3IgbW9kaWZ5aW5nIGVtYmVkZGVkIHN5c3RlbXMuIFRoZSB1c2Ugb2YgJiMzNDt1bmRlcnNjb3JlJiMzNDsgYXMgYSBsZWFkaW5nIGNoYXJhY3RlciBhbHNvIHN1Z2dlc3RzIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kZWQgZm9yIGludGVybmFsIHVzZSwgbm90IGRpcmVjdCBleHRlcm5hbCBhY2Nlc3MuIFRoaXMgaXMgdGhlIHN0YXJ0aW5nIHBvaW50LiBMZXQmIzM5O3Mgc2VlIGhvdyBpdCBvcGVyYXRlcy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40Mi8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyNjEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzI2MTpcdHN0YXRpYyB1OCBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHNpZ192OClcbjMyNjI6XHR7XG4zMjYzOlx0XHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVx1MDAzZWJ0Yy52ZXI7XG4zMjY0Olx0XG4zMjY1Olx0XHQvKiB2ODogZ3Bpb192ZXIgXHUwMDNlPSA4LCBkaXJlY3RseSB1c2Ugdjggc2lnbmFsIElEICovXG4zMjY2Olx0XHRpZiAodmVyLVx1MDAzZWZjeGdwaW9kYmcgXHUwMDNlPSA4KVxuMzI2NzpcdFx0XHRyZXR1cm4gc2lnX3Y4O1xuMzI2ODpcdFxuMzI2OTpcdFx0Lyogdjc6IGdwaW9fdmVyIFx1MDAzYyA4LCBjb252ZXJ0IHY4IHNpZ25hbCBJRCB0byB2NyBzaWduYWwgSUQgKi9cbjMyNzA6XHRcdGlmIChzaWdfdjggXHUwMDNjPSBCVENfREJHX0dOVF9XTCkge1xuMzI3MTpcdFx0XHRyZXR1cm4gc2lnX3Y4O1xuMzI3MjpcdFx0fSBlbHNlIGlmIChzaWdfdjggXHUwMDNjPSBCVENfREJHX0dOVF9XTDEpIHtcbjMyNzM6XHRcdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuMzI3NDpcdFx0XHRcdCAgICBcJiMzNDtbQlRDXSwgJXMoKTogc2lnICVkIG5vdCBzdXBwb3J0ZWQgaW4gdjdcXG5cJiMzNDssXG4zMjc1Olx0XHRcdFx0ICAgIF9fZnVuY19fLCBzaWdfdjgpO1xuMzI3NjpcdFx0XHRyZXR1cm4gQlRDX0RCR19OVU07XG4zMjc3Olx0XHR9IGVsc2UgaWYgKHNpZ192OCBcdTAwM2U9IEJUQ19EQkdfTlVNKSB7XG4zMjc4Olx0XHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbjMyNzk6XHRcdFx0XHQgICAgXCYjMzQ7W0JUQ10sICVzKCk6IHNpZyAlZCBub3QgYXZhaWxhYmxlXFxuXCYjMzQ7LFxuMzI4MDpcdFx0XHRcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcbjMyODE6XHRcdFx0cmV0dXJuIEJUQ19EQkdfTlVNO1xuMzI4MjpcdFx0fSBlbHNlIHtcbjMyODM6XHRcdFx0cmV0dXJuIHNpZ192OCAtIDI7XG4zMjg0Olx0XHR9XG4zMjg1Olx0fVxuMzI4NjpcdFxuMzI4NzpcdHN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF90b192ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwX3Y4KVxuMzI4ODpcdHtcbjMyODk6XHRcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBydHdkZXYtXHUwMDNlYnRjLnZlcjtcbjMyOTA6XHRcdHUzMiBlbl9tYXBfdjcgPSAwO1xuMzI5MTpcdFx0dTMyIGJpdDtcbjMyOTI6XHRcbjMyOTM6XHRcdC8qIHY4OiBncGlvX3ZlciBcdTAwM2U9IDgsIGRpcmVjdGx5IHVzZSB2OCBlbl9tYXAgKi9cbjMyOTQ6XHRcdGlmICh2ZXItXHUwMDNlZmN4Z3Bpb2RiZyBcdTAwM2U9IDgpXG4zMjk1Olx0XHRcdHJldHVybiBlbl9tYXBfdjg7XG4zMjk2Olx0XG4zMjk3Olx0XHQvKiB2NzogZ3Bpb192ZXIgXHUwMDNjIDgsIGNvbnZlcnQgdjggZW5fbWFwIGJpdG1hcCB0byB2NyBlbl9tYXAgYml0bWFwICovXG4zMjk4Olx0XHQvKiBiaXQgMC0xOiBHTlRfQlQsIEdOVF9XTCAtIHNhbWUgcG9zaXRpb24gaW4gYm90aCB2ZXJzaW9ucyAqL1xuMzI5OTpcdFx0ZW5fbWFwX3Y3IHw9IGVuX21hcF92OCBcdTAwMjYgR0VOTUFTSygxLCAwKTtcbjMzMDA6XHRcbjMzMDE6XHRcdC8qIGJpdCAyLTM6IEdOVF9CVDEsIEdOVF9XTDEgLSBub3Qgc3VwcG9ydGVkIGluIHY3LCBza2lwIHRoZXNlIGJpdHMgKi9cbjMzMDI6XHRcbjMzMDM6XHRcdC8qIGJpdCA0LTMxOiBzaGlmdCByaWdodCBieSAyIHBvc2l0aW9ucyAoYmVjb21lIGJpdCAyLTI5IGluIHY3KSAqL1xuMzMwNDpcdFx0Zm9yIChiaXQgPSBCVENfREJHX0JDTl9FQVJMWTsgYml0IFx1MDAzYyBCVENfREJHX05VTTsgYml0JiM0MzsmIzQzOykge1xuMzMwNTpcdFx0XHRpZiAoZW5fbWFwX3Y4IFx1MDAyNiBCSVQoYml0KSlcbjMzMDY6XHRcdFx0XHRlbl9tYXBfdjcgfD0gQklUKGJpdCAtIDIpO1xuMzMwNzpcdFx0fVxuMzMwODpcdFxuMzMwOTpcdFx0cmV0dXJuIGVuX21hcF92NztcbjMzMTA6XHR9XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDcwMjYKCQkJCQkJCW91dHB1dDogNDMKCQkJCQkJCXRob3VnaHRzOiAxMDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIGEgUG90ZW50aWFsIEdQSU8gU2lnbmFsIEVycm9yKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgZnVuY3Rpb24sIGFuZCBpdCBzZWVtcyBsaWtlIGl0JiMzOTtzIHJldHVybmluZyBgQlRDX0RCR19OVU1gIHdoZW4gaXQgZW5jb3VudGVycyBhbiBlcnJvci4gVGhhdCYjMzk7cyBhIGtleSBkZXRhaWwgdG8gbm90aWNlLiBOb3csIHRoZSBjb2RlJiMzOTtzIHByZXZpb3VzIGVycm9yIGNoZWNrIHdhcyBsb29raW5nIGZvciBhIHNpZ25hbCB2YWx1ZSBvZiBgMHhmZmAuIEl0IHVzZWQgdG8gYmU6CgpgYGBjCgkJaWYgKGdwaW8tJmd0O211eC5kYXRhLnNpZyA9PSAweGZmKQoJCQlyZXR1cm47CmBgYAoKQnV0IG5vdywgd2l0aCB0aGlzIG5ldyBhcHByb2FjaCwgYSByZXR1cm4gdmFsdWUgb2YgYEJUQ19EQkdfTlVNYCBvbiBlcnJvciBzdWdnZXN0cyB0aGF0IHRoZSBvbGQgY2hlY2sgd2lsbCBubyBsb25nZXIgd29yayBjb3JyZWN0bHkuIFRoaXMgZnVuY3Rpb24gaXMgb2J2aW91c2x5IHRyeWluZyB0byBzaWduYWwgc29tZXRoaW5nIGRpZmZlcmVudCB0aGFuIGJlZm9yZSwgb3IgaXQgY291bGQgYmUgcmV0dXJuaW5nIGEgdmFsdWUgY29tcGxldGVseSBkaWZmZXJlbnQgZnJvbSBgMHhmZmAuIExldCBtZSBjaGVjayB3aGF0IGV4YWN0bHkgYEJUQ19EQkdfTlVNYCBpcyBkZWZpbmVkIGFzLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aGF0IHRoaXMgbmV3IGVycm9yIGNvZGUgbWVhbnMgaW4gdGhlIGNvbnRleHQgb2YgdGhlIGxhcmdlciBzeXN0ZW0uIElzIGl0IGFuIGV4aXN0aW5nIGVycm9yIGNvZGUsIGEgbmV3IG9uZSB0aGF0IG5lZWRzIGRvY3VtZW50YXRpb24sIG9yIGRvZXMgdGhpcyByZXF1aXJlIGRlZXBlciB0cm91Ymxlc2hvb3Rpbmc/CgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0JUQ19EQkdfTlVNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI2MT1zdGF0aWMgdTggX2dldF9ncGlvc2lnX2Zvcl92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBzaWdfdjgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI3NS1cdFx0XHQgICAgX19mdW5jX18sIHNpZ192OCk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjc2Olx0XHRyZXR1cm4gQlRDX0RCR19OVU07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjc3Olx0fSBlbHNlIGlmIChzaWdfdjggXHUwMDNlPSBCVENfREJHX05VTSkge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI3OC1cdFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyODAtXHRcdFx0ICAgIF9fZnVuY19fLCBzaWdfdjgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI4MTpcdFx0cmV0dXJuIEJUQ19EQkdfTlVNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI4Mi1cdH0gZWxzZSB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI4Nz1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfdG9fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcF92OClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzAzLVx0LyogYml0IDQtMzE6IHNoaWZ0IHJpZ2h0IGJ5IDIgcG9zaXRpb25zIChiZWNvbWUgYml0IDItMjkgaW4gdjcpICovXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzA0Olx0Zm9yIChiaXQgPSBCVENfREJHX0JDTl9FQVJMWTsgYml0IFx1MDAzYyBCVENfREJHX05VTTsgYml0JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMwNS1cdFx0aWYgKGVuX21hcF92OCBcdTAwMjYgQklUKGJpdCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMxMj1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfZnJvbV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMjQtXHQvKiBiaXQgMi0yOTogc2hpZnQgbGVmdCBieSAyIHBvc2l0aW9ucyAoYmVjb21lIGJpdCA0LTMxIGluIHY4KSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMyNTpcdGZvciAoYml0ID0gQlRDX0RCR19HTlRfQlQxOyBiaXQgXHUwMDNjIEJUQ19EQkdfTlVNIC0gMjsgYml0JiM0MzsmIzQzOykge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMyNi1cdFx0aWYgKGVuX21hcCBcdTAwMjYgQklUKGJpdCkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMzMz1zdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjctXHRcdFx0XHRcdFx0XHQgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzNjg6XHRcdGlmIChncGlvLVx1MDAzZW11eC5kYXRhLnNpZyBcdTAwM2U9IEJUQ19EQkdfTlVNKVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzM2OS1cdFx0XHRyZXR1cm47XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTE5ODI9c3RhdGljIGludCBfc2hvd19ncGlvX2RiZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIwMTY6XHRmb3IgKGkgPSAwOyBpIFx1MDAzYyBCVENfREJHX05VTTsgaSYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDE3LVx0XHRpZiAoIShlbl9tYXAgXHUwMDI2IEJJVChpKSkpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMjAtXHRcdHNpZyA9IHZlci1cdTAwM2VmY3hncGlvZGJnIFx1MDAzZT0gOCA/IGkgOiBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsIGkpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIwMjE6XHRcdGlmIChzaWcgXHUwMDNlPSBCVENfREJHX05VTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDIyLVx0XHRcdGNvbnRpbnVlO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ1LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0ODwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4NjExCgkJCQkJCQlvdXRwdXQ6IDM5CgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBEZWZpbml0aW9uIG9mIGBCVENfREJHX05VTWAqKgoKT2theSwgc28gSSBzZWUgYEJUQ19EQkdfTlVNYC4uLiBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGF0IGl0JiMzOTtzIHJlZmVycmluZyB0by4gSXQmIzM5O3MgYWxtb3N0IGNlcnRhaW5seSBhIG1hY3JvIG9yIGEgY29uc3RhbnQgZGVmaW5lZCBzb21ld2hlcmUgd2l0aGluIHRoZSBjb2RlYmFzZS4gR2l2ZW4gbXkgZXhwZXJpZW5jZSwgaXQmIzM5O3MgbGlrZWx5IHJlbGF0ZWQgdG8gZGVidWdnaW5nLCBnaXZlbiB0aGUgJiMzNDtEQkcmIzM0OyBpbiB0aGUgbmFtZS4gSXQgY291bGQgYmUgYSBzcGVjaWZpYyBkZWJ1ZyBmbGFnLCBhIG51bWVyaWNhbCBpZGVudGlmaWVyIGZvciBhIHBhcnRpY3VsYXIgZGVidWcgbWVzc2FnZSwgb3IgcG9zc2libHkgYSBjb3VudGVyLiBJdCYjMzk7cyBnb2luZyB0byBkZXBlbmQgb24gdGhlIHN5c3RlbS4KCkkmIzM5O2Qgc3RhcnQgYnkgdXNpbmcgbXkgc3RhbmRhcmQgdG9vbHMgLSBgZ3JlcGAsIGBmaW5kYCwgb3IgbXkgSURFJiMzOTtzIHNlYXJjaCBmdW5jdGlvbiAtIHRvIGxvY2F0ZSBpdHMgZGVmaW5pdGlvbi4gSSYjMzk7ZCBsb29rIGZvciBgI2RlZmluZSBCVENfREJHX05VTWAgb3Igc29tZXRoaW5nIHNpbWlsYXIsIGFuZCBJJiMzOTtkIGV4cGFuZCBteSBzZWFyY2ggdGVybXMgdG8gY2FwdHVyZSBhbnkgaW5zdGFuY2VzIGluIHNvdXJjZSBmaWxlcywgaW5jbHVkZSBmaWxlcywgYnVpbGQgc2NyaXB0cywgb3IgZG9jdW1lbnRhdGlvbi4gSSBuZWVkIHRvIGJlIHRob3JvdWdoLgoKT25jZSBJIGZpbmQgdGhlIGRlZmluaXRpb24sIHRoZSBjb250ZXh0IHdpbGwgZ2l2ZSBtZSB0aGUgbW9zdCBjcml0aWNhbCBpbmZvcm1hdGlvbiwgZnJvbSB0aGUgc3Vycm91bmRpbmcgY29tbWVudHMsIHZhcmlhYmxlIHVzYWdlLCBldGMuIEkmIzM5O2QgdGhlbiBxdWlja2x5IGFzc2VzcyB3aGVyZSBpdCYjMzk7cyB1c2VkIHdpdGhpbiB0aGUgY29kZS4gQXJlIHRoZXJlIGNvbmRpdGlvbmFsIHN0YXRlbWVudHMgdXNpbmcgaXQ/IEZ1bmN0aW9uIGNhbGxzIHRoYXQgcmVseSBvbiBpdD8gSWYgaXQmIzM5O3MgdXNlZCBpbiBsb2dnaW5nLCBJJiMzOTtkIHdhbnQgdG8gZGV0ZXJtaW5lIHRoZSBpbXBvcnRhbmNlIG9mIHRoZSBtZXNzYWdlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBudW1iZXIsIGFuZCBpZiB0aGVyZSBpcyBhIG1hcHBpbmcgZmlsZS4gVGhlIGdvYWwgaXMgdG8gZnVsbHkgdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zLiBJJiMzOTttIGxvb2tpbmcgZm9yIGl0cyBwdXJwb3NlIGFuZCBob3cgaXQgaW1wYWN0cyB0aGUgc3lzdGVtJiMzOTtzIGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgZHVyaW5nIGRlYnVnZ2luZyBhbmQgaWYgaXQgZW5hYmxlcyBvciBkaXNhYmxlcyBjZXJ0YWluIGNvZGUgYmxvY2tzLiBGaW5hbGx5LCBJJiMzOTtkIHdhbnQgdG8gYmUgc3VyZSB0byBkb2N1bWVudCBpdC4gSSBtaWdodCBuZWVkIHRoaXMga25vd2xlZGdlIGxhdGVyLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQ2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0ODwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtCVENfREJHX05VTSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyNjE9c3RhdGljIHU4IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggc2lnX3Y4KVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyNzUtXHRcdFx0ICAgIF9fZnVuY19fLCBzaWdfdjgpO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI3NjpcdFx0cmV0dXJuIEJUQ19EQkdfTlVNO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI3NzpcdH0gZWxzZSBpZiAoc2lnX3Y4IFx1MDAzZT0gQlRDX0RCR19OVU0pIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyNzgtXHRcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjgwLVx0XHRcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyODE6XHRcdHJldHVybiBCVENfREJHX05VTTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyODItXHR9IGVsc2Uge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyODc9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX3RvX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXBfdjgpXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMwMy1cdC8qIGJpdCA0LTMxOiBzaGlmdCByaWdodCBieSAyIHBvc2l0aW9ucyAoYmVjb21lIGJpdCAyLTI5IGluIHY3KSAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMwNDpcdGZvciAoYml0ID0gQlRDX0RCR19CQ05fRUFSTFk7IGJpdCBcdTAwM2MgQlRDX0RCR19OVU07IGJpdCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMDUtXHRcdGlmIChlbl9tYXBfdjggXHUwMDI2IEJJVChiaXQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzI0LVx0LyogYml0IDItMjk6IHNoaWZ0IGxlZnQgYnkgMiBwb3NpdGlvbnMgKGJlY29tZSBiaXQgNC0zMSBpbiB2OCkgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMjU6XHRmb3IgKGJpdCA9IEJUQ19EQkdfR05UX0JUMTsgYml0IFx1MDAzYyBCVENfREJHX05VTSAtIDI7IGJpdCYjNDM7JiM0MzspIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMjYtXHRcdGlmIChlbl9tYXAgXHUwMDI2IEJJVChiaXQpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzY3LVx0XHRcdFx0XHRcdFx0ICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzY4Olx0XHRpZiAoZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgXHUwMDNlPSBCVENfREJHX05VTSlcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjktXHRcdFx0cmV0dXJuO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTExOTgyPXN0YXRpYyBpbnQgX3Nob3dfZ3Bpb19kYmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAxNS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMDE2Olx0Zm9yIChpID0gMDsgaSBcdTAwM2MgQlRDX0RCR19OVU07IGkmIzQzOyYjNDM7KSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAxNy1cdFx0aWYgKCEoZW5fbWFwIFx1MDAyNiBCSVQoaSkpKVxuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDIwLVx0XHRzaWcgPSB2ZXItXHUwMDNlZmN4Z3Bpb2RiZyBcdTAwM2U9IDggPyBpIDogX2dldF9ncGlvc2lnX2Zvcl92ZXIocnR3ZGV2LCBpKTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMDIxOlx0XHRpZiAoc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAyMi1cdFx0XHRjb250aW51ZTtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTE5PWVudW0gYnRjX3dsX2dwaW9fZGVidWcge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNTctXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMTU4Olx0QlRDX0RCR19OVU0sXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTU5LX07XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzE2MT1zdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfZ3Bpb19kYmdfdjEge1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNjYtXHRfX2xlMzIgcHJlX3N0YXRlOyAvKiB0aGUgZGVidWcgc2lnbmFsIGlzIDEgb3IgMCAgKi9cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMxNjc6XHR1OCBncGlvX21hcFtCVENfREJHX05VTV07IC8qdGhlIGRlYnVnIHNpZ25hbHMgdG8gR1BJTy1Qb3NpdGlvbiAqL1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE2OC19IF9fcGFja2VkO1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTMxNzA9c3RydWN0IHJ0dzg5X2J0Y19mYnRjX2dwaW9fZGJnX3Y3IHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTc1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzE3NjpcdHU4IGdwaW9fbWFwW0JUQ19EQkdfTlVNXTtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNzctXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDcvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNjQxCgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIFBvdGVudGlhbCBCdWcgaW4gR1BJTyBTaWduYWwgSGFuZGxpbmcqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgaW1tZWRpYXRlbHkgc2VlIGEgcG90ZW50aWFsIGlzc3VlLiBJdCBsb29rcyBsaWtlIGBCVENfREJHX05VTWAgaXMgYW4gZW51bSB2YWx1ZSwgd2hpY2ggcmFpc2VzIGEgcmVkIGZsYWcuIFRoZSBmdW5jdGlvbiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgIHJldHVybnMgYEJUQ19EQkdfTlVNYCB0byBpbmRpY2F0ZSBhbiBlcnJvciwgd2hpY2ggaXMgcGVyZmVjdGx5IHJlYXNvbmFibGUuIEJ1dCBoZXJlJiMzOTtzIHdoZXJlIHRoZSBwcm9ibGVtIGFyaXNlczogYGdwaW8tJmd0O211eC5kYXRhLnNpZ2AgaXMgZGVmaW5lZCBhcyBhIGB1OGAuIFRoaXMgaXMgd2hlcmUgbXkgY29uY2VybiBoaXRzIGNyaXRpY2FsIG1hc3MuCgpJZiBgQlRDX0RCR19OVU1gIGlzIGEgdmFsdWUgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgd2l0aGluIHRoZSBgdThgIHJhbmdlIChsZXNzIHRoYW4gMjU1KSwgdGhlbiB0aGUgY29tcGFyaXNvbiBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnID09IDB4ZmZgIHdpbGwgKmZhaWwqIHRvIGFjY3VyYXRlbHkgZGV0ZWN0IHRoZSBlcnJvciEgSW4gb3RoZXIgd29yZHMsIGlmIGFuIGVycm9yIG9jY3VycmVkIGR1cmluZyBzaWduYWwgcmV0cmlldmFsLCBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnYCBtaWdodCBpbmFkdmVydGVudGx5IGNvbnRhaW4gYSB2YWxpZCAoYnV0IGluY29ycmVjdCkgYHU4YCB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIGFuIGVudW0gdmFsdWUgLSBvbmUgdGhhdCBtaWdodCBub3QgYmUgMHhmZiwgYW5kIHRoZSBlcnJvciB3b24mIzM5O3QgYmUgY2F1Z2h0LiBFc3NlbnRpYWxseSwgaWYgYEJUQ19EQkdfTlVNYCBpcyBzbWFsbCBlbm91Z2gsIGl0IHdvbiYjMzk7dCBiZSB0cmFwcGVkLgoKVGltZSB0byBsb29rIGludG8gdGhlIHZhbHVlIG9mIGBCVENfREJHX05VTWAgYW5kIHNlZSB3aGF0IHdlJiMzOTtyZSBhY3R1YWxseSBkZWFsaW5nIHdpdGgsIGFuZCBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGludHJvZHVjZXMgYSByZWFsIGJ1Zy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40OC8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaCYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMxMTksCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogNTAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7MzExOTpcdGVudW0gYnRjX3dsX2dwaW9fZGVidWcge1xuMzEyMDpcdFx0QlRDX0RCR19HTlRfQlQgPSAwLFxuMzEyMTpcdFx0QlRDX0RCR19HTlRfV0wgPSAxLFxuMzEyMjpcdFx0QlRDX0RCR19HTlRfQlQxID0gMixcbjMxMjM6XHRcdEJUQ19EQkdfR05UX1dMMSA9IDMsXG4zMTI0Olx0XHQvKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgc2hvdWxkIDAtMSB0aWdnbGUgYnkgZWFjaCBmdW5jdGlvbi1jYWxsICovXG4zMTI1Olx0XHRCVENfREJHX0JDTl9FQVJMWSA9IDQsXG4zMTI2Olx0XHRCVENfREJHX1dMX05VTEwwID0gNSxcbjMxMjc6XHRcdEJUQ19EQkdfV0xfTlVMTDEgPSA2LFxuMzEyODpcdFx0QlRDX0RCR19XTF9SWElTUiA9IDcsXG4zMTI5Olx0XHRCVENfREJHX1RETUFfRU5UUlkgPSA4LFxuMzEzMDpcdFx0QlRDX0RCR19BMkRQX0VNUFRZID0gOSxcbjMxMzE6XHRcdEJUQ19EQkdfQlRfUkVUUlkgPSAxMCxcbjMxMzI6XHRcdC8qIFRoZSBmb2xsb3dpbmcgc2lnbmFscyBzaG91bGQgMC0xIHRpZ2dsZSBieSBzdGF0ZSBML0ggKi9cbjMxMzM6XHRcdEJUQ19EQkdfQlRfUkVMSU5LID0gMTEsXG4zMTM0Olx0XHRCVENfREJHX1NMT1RfV0wgPSAxMixcbjMxMzU6XHRcdEJUQ19EQkdfU0xPVF9CVCA9IDEzLFxuMzEzNjpcdFx0LyogVGhlIGZvbGxvd2luZyBzaWduYWxzIHNob3VsZCAwLTEgdGlnZ2xlIGJ5IGV4dGVybmFsKi9cbjMxMzc6XHRcdEJUQ19EQkdfV0xfRVJSID0gMTQsXG4zMTM4Olx0XHRCVENfREJHX1dMX09LID0gMTUsXG4zMTM5Olx0XHQvKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgYXBwZWFyIG9ubHkgMS1hY3RpdmUgYXQgc2FtZSB0aW1lKi9cbjMxNDA6XHRcdEJUQ19EQkdfU0xPVF9CMlcgPSAxNixcbjMxNDE6XHRcdEJUQ19EQkdfU0xPVF9XMSA9IDE3LFxuMzE0MjpcdFx0QlRDX0RCR19TTE9UX1cyID0gMTgsXG4zMTQzOlx0XHRCVENfREJHX1NMT1RfVzJCID0gMTksXG4zMTQ0Olx0XHRCVENfREJHX1NMT1RfQjEgPSAyMCxcbjMxNDU6XHRcdEJUQ19EQkdfU0xPVF9CMiA9IDIxLFxuMzE0NjpcdFx0QlRDX0RCR19TTE9UX0IzID0gMjIsXG4zMTQ3Olx0XHRCVENfREJHX1NMT1RfQjQgPSAyMyxcbjMxNDg6XHRcdEJUQ19EQkdfU0xPVF9MSyA9IDI0LFxuMzE0OTpcdFx0QlRDX0RCR19TTE9UX0UyRyA9IDI1LFxuMzE1MDpcdFx0QlRDX0RCR19TTE9UX0U1RyA9IDI2LFxuMzE1MTpcdFx0QlRDX0RCR19TTE9UX0VCVCA9IDI3LFxuMzE1MjpcdFx0QlRDX0RCR19TTE9UX1dMSyA9IDI4LFxuMzE1MzpcdFx0QlRDX0RCR19TTE9UX0IxRkREID0gMjksXG4zMTU0Olx0XHRCVENfREJHX0JUX0NIQU5HRSA9IDMwLFxuMzE1NTpcdFx0LyogVGhlIGZvbGxvd2luZyBzaWduYWxzIHNob3VsZCAwLTEgdGlnZ2xlIGJ5IGV4dGVybmFsKi9cbjMxNTY6XHRcdEJUQ19EQkdfV0xfQ0NBID0gMzEsXG4zMTU3Olx0XG4zMTU4Olx0XHRCVENfREJHX05VTSxcbjMxNTk6XHR9O1xuMzE2MDpcdFxuMzE2MTpcdHN0cnVjdCBydHc4OV9idGNfZmJ0Y19ncGlvX2RiZ192MSB7XG4zMTYyOlx0XHR1OCBmdmVyOyAvKiBidGNfdmVyOjpmY3hncGlvZGJnICovXG4zMTYzOlx0XHR1OCByc3ZkO1xuMzE2NDpcdFx0X19sZTE2IHJzdmQyO1xuMzE2NTpcdFx0X19sZTMyIGVuX21hcDsgLyogd2hpY2ggZGVidWcgc2lnbmFsIChzZWUgYnRjX3dsX2dwaW9fZGVidWcpIGlzIGVuYWJsZSAqL1xuMzE2NjpcdFx0X19sZTMyIHByZV9zdGF0ZTsgLyogdGhlIGRlYnVnIHNpZ25hbCBpcyAxIG9yIDAgICovXG4zMTY3Olx0XHR1OCBncGlvX21hcFtCVENfREJHX05VTV07IC8qdGhlIGRlYnVnIHNpZ25hbHMgdG8gR1BJTy1Qb3NpdGlvbiAqL1xuMzE2ODpcdH0gX19wYWNrZWQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDkvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyMDk1CgkJCQkJCQlvdXRwdXQ6IDQ3CgkJCQkJCQl0aG91Z2h0czogMzA1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgRmlybXdhcmUgVnVsbmVyYWJpbGl0eSoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBzbmlwcGV0IG9mIGNvZGUsIGFuZCBpdCBzZWVtcyBsaWtlIGBCVENfREJHX05VTWAgaXMgZGVmaW5lZCBhcyAzMi4gVGhlIG9yaWdpbmFsIGNvZGUgaGFzIHRoaXMgc2VjdGlvbiB3aGVyZSBpdCByZXRyaWV2ZXMgYSBzaWduYWwgdmFsdWUgdXNpbmcgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCwgYW5kIGlmIHRoYXQgcmV0dXJucyBhbiBlcnJvciBpbmRpY2F0ZWQgYnkgMHhmZiwgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4uIEhvd2V2ZXIsIGl0IHNlZW1zIGxpa2UgdGhlIGVycm9yIGNoZWNraW5nIGlzIGZsYXdlZC4gVGhlIGZ1bmN0aW9uIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyAzMiBvbiBlcnJvci4gVGhhdCB2YWx1ZSwgMzIsIGlzIHVzZWQgc3Vic2VxdWVudGx5IHdpdGhvdXQgYmVpbmcgcHJvcGVybHkgdmFsaWRhdGVkLgoKVGhlIGNvbmRpdGlvbiBgZ3Bpby0mZ3Q7bXV4LmRhdGEuc2lnID09IDB4ZmZgIGlzIGV2YWx1YXRlZCBidXQgZmFpbHMsIGNhdXNpbmcgdGhlIGNvZGUgdG8gcHJvY2VlZCwgdHJlYXRpbmcgMzIgYXMgYSB2YWxpZCBzaWduYWwuIEl0IHRoZW4gZXh0cmFjdHMgYGdwaW9gIGFuZCBwZXJmb3JtcyBhIGBtZW1jcHlgIGludG8gYGJ1ZmAuIFRoZSBgYnVmYCBpcyB0aGVuIHN1YnNlcXVlbnRseSBzZW50IHRvIHRoZSBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyBnb2luZyB0byB0cmlnZ2VyIHNvbWUgc29ydCBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkPyYjMzQ7CgpXYWl0LCBubywgdXBvbiBmdXJ0aGVyIGFuYWx5c2lzLCB0aGUgZGF0YSBiZWluZyBzZW50IGlzIHNpbXBseSBhIGtub3duLCBhbGJlaXQgaW52YWxpZCwgdmFsdWUsIDMyLiBJdCYjMzk7cyBub3QgdW5pbml0aWFsaXplZCBkYXRhIGJlaW5nIHJlYWQuIEl0JiMzOTtzIHNlbmRpbmcgYSBzcGVjaWZpYywgaW5jb3JyZWN0IHZhbHVlIHRvIHRoZSBmaXJtd2FyZS4gTGV0IG1lIHRha2UgYSBzZWNvbmQgbG9vayBhdCBob3cgYGJ1ZmAgYW5kIGBsZW5gIGFyZSB1dGlsaXplZCBkb3duc3RyZWFtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUwLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzM3NSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMzc1Olx0XHRjYXNlIENYREdQSU9fRVhUX0hQVEE6IC8qIEdQSU8gY29uZmlnIGZvciBFeHQgSFctUFRBICovXG4zMzc2Olx0XHRcdGdwaW8tXHUwMDNlZXh0X3B0YS5kYXRhLnR5cGUgPSBDWERHUElPX0VYVF9IUFRBO1xuMzM3NzpcdFx0XHRncGlvLVx1MDAzZWV4dF9wdGEuZGF0YS5mdmVyID0gZ3Bpb192ZXI7XG4zMzc4Olx0XHRcdGdwaW8tXHUwMDNlZXh0X3B0YS5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcbjMzNzk6XHRcdFx0Z3Bpby1cdTAwM2VleHRfcHRhLmRhdGEubWFwX2xvdyA9IEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpO1xuMzM4MDpcdFx0XHRncGlvLVx1MDAzZWV4dF9wdGEuZGF0YS5tYXBfaGlnaCA9IEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgdmFsKTtcbjMzODE6XHRcdFx0bDJfaDJjID0gZ3Bpby1cdTAwM2VleHRfcHRhLmZtdDtcbjMzODI6XHRcdFx0bWVtY3B5KGJ1ZiwgXHUwMDI2bDJfaDJjLCBzaXplb2YobDJfaDJjKSk7XG4zMzgzOlx0XHRcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xuMzM4NDpcdFx0XHRicmVhaztcbjMzODU6XHRcdGNhc2UgQ1hER1BJT19FWFRfSE1CWDogLyogR1BJTyBjb25maWcgZm9yIEV4dCBIVy1tYWlsYm94ICovXG4zMzg2Olx0XHRcdGdwaW8tXHUwMDNlZXh0X21iLmRhdGEudHlwZSA9IENYREdQSU9fRVhUX0hNQlg7XG4zMzg3Olx0XHRcdGdwaW8tXHUwMDNlZXh0X21iLmRhdGEuZnZlciA9IGdwaW9fdmVyO1xuMzM4ODpcdFx0XHRncGlvLVx1MDAzZWV4dF9tYi5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcbjMzODk6XHRcdFx0Z3Bpby1cdTAwM2VleHRfbWIuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XG4zMzkwOlx0XHRcdGdwaW8tXHUwMDNlZXh0X21iLmRhdGEubWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XG4zMzkxOlx0XHRcdGwyX2gyYyA9IGdwaW8tXHUwMDNlZXh0X21iLmZtdDtcbjMzOTI6XHRcdFx0bWVtY3B5KGJ1ZiwgXHUwMDI2bDJfaDJjLCBzaXplb2YobDJfaDJjKSk7XG4zMzkzOlx0XHRcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xuMzM5NDpcdFx0XHRicmVhaztcbjMzOTU6XHRcdGNhc2UgQ1hER1BJT19FWFRfU1dPVVQ6IC8qIEdQSU8gY29uZmlnIGZvciBFeHQgU1cgb3V0cHV0ICh3bGFuX2FjdCkgKi9cbjMzOTY6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dvdXQuZGF0YS50eXBlID0gQ1hER1BJT19FWFRfU1dPVVQ7XG4zMzk3Olx0XHRcdGdwaW8tXHUwMDNlZXh0X3N3b3V0LmRhdGEuZnZlciA9IGdwaW9fdmVyO1xuMzM5ODpcdFx0XHRncGlvLVx1MDAzZWV4dF9zd291dC5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcbjMzOTk6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dvdXQuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XG4zNDAwOlx0XHRcdGdwaW8tXHUwMDNlZXh0X3N3b3V0LmRhdGEubWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XG4zNDAxOlx0XHRcdGwyX2gyYyA9IGdwaW8tXHUwMDNlZXh0X3N3b3V0LmZtdDtcbjM0MDI6XHRcdFx0bWVtY3B5KGJ1ZiwgXHUwMDI2bDJfaDJjLCBzaXplb2YobDJfaDJjKSk7XG4zNDAzOlx0XHRcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xuMzQwNDpcdFx0XHRicmVhaztcbjM0MDU6XHRcdGNhc2UgQ1hER1BJT19FWFRfU1dJTjogLyogR1BJTyBjb25maWcgZm9yIEV4dCBTVyBpbnB1dCBjb250cm9sICovXG4zNDA2Olx0XHRcdGdwaW8tXHUwMDNlZXh0X3N3aW4uZGF0YS50eXBlID0gQ1hER1BJT19FWFRfU1dJTjtcbjM0MDc6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dpbi5kYXRhLmZ2ZXIgPSBncGlvX3ZlcjtcbjM0MDg6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dpbi5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MNDtcbjM0MDk6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dpbi5kYXRhLmluX21hcF9sb3cgPSBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKTtcbjM0MTA6XHRcdFx0Z3Bpby1cdTAwM2VleHRfc3dpbi5kYXRhLmluX21hcF9oaWdoID0gRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCB2YWwpO1xuMzQxMTpcdFx0XHRncGlvLVx1MDAzZWV4dF9zd2luLmRhdGEuaW50X21hcF9sb3cgPSBGSUVMRF9HRVQoR0VOTUFTSygyMywgMTYpLCB2YWwpO1xuMzQxMjpcdFx0XHRncGlvLVx1MDAzZWV4dF9zd2luLmRhdGEuaW50X21hcF9oaWdoID0gRklFTERfR0VUKEdFTk1BU0soMzEsIDI0KSwgdmFsKTtcbjM0MTM6XHRcdFx0bDRfaDJjID0gZ3Bpby1cdTAwM2VleHRfc3dpbi5mbXQ7XG4zNDE0Olx0XHRcdHB1dF91bmFsaWduZWRfbGUzMih2YWwsICh1MzIgKilsNF9oMmMuZGF0YSk7XG4zNDE1Olx0XHRcdG1lbWNweShidWYsIFx1MDAyNmw0X2gyYywgc2l6ZW9mKGw0X2gyYykpO1xuMzQxNjpcdFx0XHRsZW4gPSBzaXplb2YobDRfaDJjKTtcbjM0MTc6XHRcdFx0YnJlYWs7XG4zNDE4Olx0XHRkZWZhdWx0OlxuMzQxOTpcdFx0XHRyZXR1cm47XG4zNDIwOlx0XHR9XG4zNDIxOlx0XG4zNDIyOlx0XHRfc2VuZF9md19jbWQocnR3ZGV2LCBCVEZDX1NFVCwgU0VUX0dQSU9fREJHLCBidWYsIGxlbik7XG4zNDIzOlx0fVxuMzQyNDpcdFxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUxLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+a21zYW4tZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzkzNgoJCQkJCQkJb3V0cHV0OiA0OQoJCQkJCQkJdGhvdWdodHM6IDYwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRha2Ugb24gdGhlIHRob3VnaHQgcHJvY2VzcywgYXMgaWYgaXQgd2VyZSBteSBvd246CgoqKkFuYWx5emluZyB0aGUgRGF0YSBUcmFuc21pc3Npb24gUGF0aCoqCgpPa2F5LCBzbyB0aGUgYGJ1ZmAgaXMgYmVpbmcgcGFzc2VkIGRvd24gdG8gdGhlIGZpcm13YXJlIHRocm91Z2ggdGhlIGBfc2VuZF9md19jbWRgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBjcml0aWNhbCBwb2ludCBvZiBpbnRlcmFjdGlvbiwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgZXZlcnl0aGluZyYjMzk7cyBrb3NoZXIuIFRoZSBpbW1lZGlhdGUgY29uY2VybiBpcyBhbHdheXMgdW5pbml0aWFsaXplZCBtZW1vcnkuIEhvd2V2ZXIsIGxvb2tpbmcgYXQgdGhpcyBzcGVjaWZpYyBwYXRoLCBJIGRvbiYjMzk7dCBzZWUgYW55IG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzIGhlcmUuIFRoZSBgbDJfaDJjYCBzdHJ1Y3R1cmUgKG9yIHVuaW9uLCBuZWVkIHRvIGNvbmZpcm0gdGhhdCkgaXMgYmVpbmcgcG9wdWxhdGVkLCBhbmQgY3J1Y2lhbGx5LCBpdCBsb29rcyBsaWtlIGl0IGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGBncGlvLSZndDttdXguZm10YC4gVGhpcyBzZWVtcyBsaWtlIGEgZGlyZWN0IGNvcHkgb3IgYXNzaWdubWVudCwgd2hpY2ggc2hvdWxkIHByZXZlbnQgYW55IHVuaW5pdGlhbGl6ZWQgZGF0YSBmcm9tIGxlYWtpbmcuIEkgc2hvdWxkIGRvdWJsZS1jaGVjayB0aGUgYGdwaW8tJmd0O211eC5mbXRgIGRlZmluaXRpb24gdG8gbWFrZSBhYnNvbHV0ZWx5IHN1cmUgaXQmIzM5O3MgYSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlLiBMZXQmIzM5O3MgdmVyaWZ5IHRoYXQgcXVpY2tseSwgc2luY2UgdGhhdCYjMzk7cyB0aGUgc291cmNlIG9mIHRydXRoIGZvciB0aGUgZGF0YSBiZWluZyBzZW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUyLzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtydHc4OV9mYnRjX2gyY19zZXRfZ3BpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM1LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMzY6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW8gKmdwaW8gPSBcdTAwMjZidGMtXHUwMDNlZ3BpbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzctXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMzg6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIgbDJfaDJjO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzOTpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb180YiBsNF9oMmM7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzQwLVx0dTggZ3Bpb192ZXIgPSB2ZXItXHUwMDNlZmN4Z3Bpb2RiZztcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTgyPXVuaW9uIHJ0dzg5X2J0Y19mYnRjX2dwaW9fZGJnIHtcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjA4LSNkZWZpbmUgQ1hER1BJT19TRVRfTDIgMlxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzIwOTpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZW5fbWFwIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMTAtXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjE1LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzIxNjpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMTctXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjIzLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzIyNDpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YSB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjI1LVx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzIzMS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyMzI6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9tYiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjMzLVx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzIzOS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNDA6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9zd291dCB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjQxLVx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI0Ny1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNDg6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9zd2luIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyNDktXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjU3LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI1ODpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI1OS1cdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyNjQtXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjY1OnN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb180YiB7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjY2LVx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI3MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNzI6dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZW5fbWFwX3Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI3MzpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb180YiBmbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjc0Olx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2VuX21hcCBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI3NS19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI3Ni1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNzc6dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4X3Uge1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI3ODpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiBmbXQ7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjc5Olx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eCBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI4MC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI4MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODI6dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YV91IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODM6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIgZm10O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI4NDpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfcHRhIGRhdGE7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjg1LX07XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjg2LVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI4Nzp1bmlvbiBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfc3dpbl91IHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODg6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fNGIgZm10O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI4OTpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfc3dpbiBkYXRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI5MC19O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI5MS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTI6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvIHtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTM6XHR1bmlvbiBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19lbl9tYXBfdSBlbl9tYXA7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjk0Olx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4X3UgbXV4O1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI5NTpcdHVuaW9uIHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9wdGFfdSBleHRfcHRhO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI5NjpcdHVuaW9uIHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9wdGFfdSBleHRfbWI7XG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjk3Olx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YV91IGV4dF9zd291dDtcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTg6XHR1bmlvbiBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfc3dpbl91IGV4dF9zd2luO1xuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI5OS19O1xuLS1cbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTQzOTQ9c3RydWN0IHJ0dzg5X2J0YyB7XG4tLVxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNDQwMi1cdHN0cnVjdCBydHc4OV9idGNfZGJnIGRiZztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjQ0MDM6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW8gZ3BpbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTQ0MDQtXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTMvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE2Nzg0CgkJCQkJCQlvdXRwdXQ6IDQ2CgkJCQkJCQl0aG91Z2h0czogMTQwCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHVuZGVyc3RhbmRpbmcgb2YgdGhlIHNpdHVhdGlvbiwgZGlzdGlsbGVkOgoKKipEZWNvZGluZyB0aGUgR1BJTyBNdXggU3RydWN0dXJlIGluIHRoZSBydHc4OSBEcml2ZXIqKgoKT2theSwgc28gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgYGdwaW9gIHZhcmlhYmxlLCBhbmQgaXQmIzM5O3MgYSBwb2ludGVyIHRvIGBidGMtJmd0O2dwaW9gLCB3aGljaCBpbiB0dXJuIGlzIGEgcG9pbnRlciwgSSBiZWxpZXZlIHRvIHRoZSBhY3R1YWwgR1BJTyBzdHJ1Y3R1cmUuIFRoZSBgYnRjYCB2YXJpYWJsZSBpdHNlbGYgaXMgYW5vdGhlciBwb2ludGVyLCBzcGVjaWZpY2FsbHkgdG8gYHJ0d2Rldi0mZ3Q7YnRjYC4gUmlnaHQsIHNvIHdlJiMzOTtyZSBuYXZpZ2F0aW5nIGEgY2hhaW4gb2YgcG9pbnRlcnMgdG8gZ2V0IHRvIHRoZSBHUElPIGNvbnRyb2wuCgpOb3csIGBncGlvLSZndDttdXguZGF0YWAgYW5kIGBncGlvLSZndDttdXguZm10YCBhcmUgYXBwYXJlbnRseSB1bmlvbnMuIFRoZXkgYXJlIGJvdGggc3RydWN0cywgYW5kIG9mIGVxdWFsIHNpemUuIE1lYW5pbmcgdGhhdCB0aGV5IG9jY3VweSB0aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24sIGJ1dCBhcmUgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoaWNoIGZpZWxkIHdlJiMzOTtyZSBhY2Nlc3NpbmcuIE1ha2VzIHNlbnNlLCBzcGFjZS1zYXZpbmcgdGVjaG5pcXVlLCB0aGF0JiMzOTtzIGZpbmUuCgpUaGUgY3JpdGljYWwgc3RydWN0IGlzIHRoZSBgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4YCBvbmUuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGF0IGl0IGlzLCBpbiBmYWN0LCBwYWNrZWQuIEkmIzM5O2xsIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBjb21waWxhdGlvbiBmbGFncyB0byBjb25maXJtIHRoZSBgX19wYWNrZWRgIGF0dHJpYnV0ZSBpcyBjb3JyZWN0bHkgZW5mb3JjZWQsIGFzIHRoZSBjb3JyZWN0IGJ5dGUtbGV2ZWwgbGF5b3V0IGlzIGNyaXRpY2FsIGZvciB0aGUgaGFyZHdhcmUgY29tbXVuaWNhdGlvbiB0aGlzIGlzIGRlc2lnbmVkIGZvci4gV2UmIzM5O3ZlIGdvdCBgdHlwZWAsIGBmdmVyYCwgYGRsZW5gLCBgc2lnYCwgYW5kIGBncGlvYCBmaWVsZHMuIFRob3NlIGFyZSBwcm9iYWJseSBzb21lIHNvcnQgb2YgY29udHJvbCBhbmQgdmVyc2lvbiBiaXRzLCBkYXRhIGxlbmd0aCBhbmQgc2lnbmFsIHZhbHVlcyBmb3IgdGhlIEdQSU8gbXV4LiBXZSYjMzk7bGwgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpY3Mgb2YgdGhvc2UgZmllbGRzIHRvIHVzZSB0aGVtLiBMZXQmIzM5O3Mgc2VlIGlmIHRob3NlIGZpZWxkcyBhcmUgZGVmaW5lZCBzb21ld2hlcmUgaW4gdGhlIHNvdXJjZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU0LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMzIxNiwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiA1MAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDszMjE2Olx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eCB7XG4zMjE3Olx0XHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cbjMyMTg6XHRcdHU4IGZ2ZXI7IC8qIEZDWF9WRVJfR1BJT0RCRyAqL1xuMzIxOTpcdFx0dTggZGxlbjtcbjMyMjA6XHRcdHU4IHNpZztcbjMyMjE6XHRcdHU4IGdwaW87XG4zMjIyOlx0fTtcbjMyMjM6XHRcbjMyMjQ6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YSB7XG4zMjI1Olx0XHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cbjMyMjY6XHRcdHU4IGZ2ZXI7IC8qIEZDWF9WRVJfR1BJT0RCRyAqL1xuMzIyNzpcdFx0dTggZGxlbjtcbjMyMjg6XHRcdHU4IG1hcF9sb3c7XG4zMjI5Olx0XHR1OCBtYXBfaGlnaDtcbjMyMzA6XHR9O1xuMzIzMTpcdFxuMzIzMjpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfbWIge1xuMzIzMzpcdFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4zMjM0Olx0XHR1OCBmdmVyOyAvKiBGQ1hfVkVSX0dQSU9EQkcgKi9cbjMyMzU6XHRcdHU4IGRsZW47XG4zMjM2Olx0XHR1OCBtYXBfbG93O1xuMzIzNzpcdFx0dTggbWFwX2hpZ2g7XG4zMjM4Olx0fTtcbjMyMzk6XHRcbjMyNDA6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3N3b3V0IHtcbjMyNDE6XHRcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xuMzI0MjpcdFx0dTggZnZlcjsgLyogRkNYX1ZFUl9HUElPREJHICovXG4zMjQzOlx0XHR1OCBkbGVuO1xuMzI0NDpcdFx0dTggbWFwX2xvdztcbjMyNDU6XHRcdHU4IG1hcF9oaWdoO1xuMzI0NjpcdH07XG4zMjQ3Olx0XG4zMjQ4Olx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9zd2luIHtcbjMyNDk6XHRcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xuMzI1MDpcdFx0dTggZnZlcjsgLyogRkNYX1ZFUl9HUElPREJHICovXG4zMjUxOlx0XHR1OCBkbGVuO1xuMzI1MjpcdFx0dTggaW5fbWFwX2xvdztcbjMyNTM6XHRcdHU4IGluX21hcF9oaWdoO1xuMzI1NDpcdFx0dTggaW50X21hcF9sb3c7XG4zMjU1Olx0XHR1OCBpbnRfbWFwX2hpZ2g7XG4zMjU2Olx0fTtcbjMyNTc6XHRcbjMyNTg6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIge1xuMzI1OTpcdFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXG4zMjYwOlx0XHR1OCBmdmVyOyAvKiBGQ1hfVkVSX0dQSU9EQkcgKi9cbjMyNjE6XHRcdHU4IGRsZW47XG4zMjYyOlx0XHR1OCBkYXRhW0NYREdQSU9fU0VUX0wyXTtcbjMyNjM6XHR9IF9fcGFja2VkO1xuMzI2NDpcdFxuMzI2NTpcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb180YiB7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NTUvMzwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzI2IDAzOjQ5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5rbXNhbi1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4MDgyCgkJCQkJCQlvdXRwdXQ6IDM3CgkJCQkJCQl0aG91Z2h0czogODkxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBhIEdQSU8gTXV4IElzc3VlKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCB0cnlpbmcgdG8gZ2V0IHRvIHRoZSBib3R0b20gb2YgdGhlIHByb2JsZW0uIEZpcnN0LCBJIHNlZSB3ZSYjMzk7cmUgZGVhbGluZyB3aXRoIGEgYHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eGAgc3RydWN0IOKAkyBpdCYjMzk7cyA1IGJ5dGVzIGluIHNpemUsIHdoaWNoIGlzIGltcG9ydGFudCB0byBrZWVwIGluIG1pbmQuIEkgcXVpY2tseSBjYWxjdWxhdGUgdGhhdCB0aGUgYHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXzJiYCBzdHJ1Y3QsIHBhcnQgb2YgdGhlIHVuaW9uLCBhbHNvIHRha2VzIHVwIHRob3NlIDUgYnl0ZXMuCgpJJiMzOTt2ZSBnb3QgdGhlIHN0cnVjdHVyZXMgaGVyZSwgbm8gcGFkZGluZyBjb25jZXJucywgYWxsIGB1OGAgbWVtYmVycy4gVGhlIGZpeCBpcyB0YXJnZXRpbmcgYSBidWcgd2hlcmUgYSBmdW5jdGlvbiwgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCwgbWlnaHQgcmV0dXJuIGBCVENfREJHX05VTWAgKHdoaWNoIGlzIDMyLCBJIHJlbWVtYmVyKSBvbiBlcnJvciwgYnV0IHRoZSBleGlzdGluZyBjaGVjayBpbiB0aGUgY29kZSB3YXMgZXJyb25lb3VzbHkgbG9va2luZyBmb3IgYD09IDB4ZmZgLiBUaGF0IG1lYW5zIHRoZSBlcnJvciBjYXNlIHdhc24mIzM5O3QgYmVpbmcgY2F1Z2h0LiBUaGUgbG9naWMgYWxsb3dlZCBgQlRDX0RCR19OVU1gIHRvIGJlIHVzZWQgd2hlbiBpdCBzaG91bGRuJiMzOTt0LCBtZWFuaW5nIGl0IHdhcyB1c2VkIGFzIGBzaWdgIHdoZW4gYW4gZXJyb3IgaGFwcGVuZWQsIHRoYXQgaXMgdGhlIGZsYXcuIFRoZSBwYXRjaCBqdXN0IGNoYW5nZXMgdGhlIGNoZWNrIHRvIGAmZ3Q7PSBCVENfREJHX05VTWAsIHNvIHRoYXQgYW4gZXJyb3IgaXMgY2F1Z2h0LgoKVGhlIHJlYWwgcXVlc3Rpb24gaGVyZSwgYXMgd2l0aCBhbnkgbWVtb3J5LXJlbGF0ZWQgaXNzdWUsIGlzIHdoZXRoZXIgdGhlcmUmIzM5O3MgdW5pbml0aWFsaXplZCBtZW1vcnkgaW4gcGxheS4gSSBoYXZlIHRvIHZlcmlmeSB0aGF0LiBMb29raW5nIGF0IHRoZSBjb2RlIHNuaXBwZXQsIEkmIzM5O20gcHJldHR5IGNvbmZpZGVudCB0aGF0IHRoZSBgYnVmYCB0aGF0IGVuZHMgdXAgYmVpbmcgY29waWVkIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGUgYGdwaW8tJmd0O211eC5kYXRhYCBtZW1iZXIsIHdoaWNoIGlzIG9mIHR5cGUgYHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eGAsIGlzIHNldCB1cCwgYWxsIDUgYnl0ZXMsIGJlZm9yZSB0aGUgYG1lbWNweWAuIEVhY2ggbWVtYmVyIOKAkyBgdHlwZWAsIGBmdmVyYCwgYGRsZW5gLCBgc2lnYCwgYGdwaW9gIOKAkyBpcyBleHBsaWNpdGx5IGFzc2lnbmVkIGEgdmFsdWUuIFRoZSB1bmlvbiBgbDJfaDJjYCBpcyB0aGVuIHByb3Blcmx5IGluaXRpYWxpemVkLCBhbmQgZmluYWxseSBjb3BpZWQgdG8gYGJ1ZmAuIE5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGlzIGV2ZXIgcmVhZCBvciBzZW50IG91dC4KClNvLCB0aGlzIGlzbiYjMzk7dCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gSXQmIzM5O3MgYSBsb2dpYyBidWcuIEEgYmFkIHZhbHVlLCBgQlRDX0RCR19OVU1gLCBpcyBiZWluZyBzZW50IHRvIHRoZSBmaXJtd2FyZS4gSSBrbm93IEkgc2hvdWxkIGJlIGxvb2tpbmcgYXQgd2hlcmUgdGhhdCBgc2lnYCB2YWx1ZSBpcyB1c2VkLiBJcyBpdCBiZWluZyB1c2VkIGFzIGFuIGFycmF5IGluZGV4IHNvbWV3aGVyZT8gSXQmIzM5O3Mgc2VudCB0byB0aGUgZmlybXdhcmUgaW4gYF9md19zZXRfZ3Bpb2AsIGJ1dCB0aGF0JiMzOTtzIG91dCBvZiBLTVNBTiYjMzk7cyBzY29wZS4gQW5kIEkgdGhpbmsgdGhhdCBpcyB0aGUgY3J1eCBvZiB0aGUgcHJvYmxlbSwgaXMgYHNpZ2AgYmVpbmcgdXNlZCBhcyBhbiBpbmRleCBpbnRvIGFuIGFycmF5IGluc2lkZSB0aGUgZmlybXdhcmU/IEluIHRoZSBrZXJuZWwsIGl0IGlzIHN0b3JlZCBpbiBgYnRjLSZndDtncGlvLm11eC5kYXRhLnNpZ2AuIEkgaGF2ZSB0byBzZWUgd2hldGhlciBhbmQgd2hlcmUgYGJ0Yy0mZ3Q7Z3Bpb2AgaXMgcmVhZCB3aXRoaW4gdGhlIGtlcm5lbCwgdG8gc2VlIGlmIHRoZXJlJiMzOTtzIGFueSB3YXkgdGhpcyBjb3VsZCBjYXVzZSBwcm9ibGVtcy4gVGhhdCYjMzk7cyB0aGUgbmV4dCBzdGVwLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU2LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtidGMtXHUwMDNlZ3BpbyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcbi0tXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM1LVx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXHUwMDI2cnR3ZGV2LVx1MDAzZWJ0YztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMzY6XHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW8gKmdwaW8gPSBcdTAwMjZidGMtXHUwMDNlZ3BpbztcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzctXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVx1MDAzZXZlcjtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41Ny8zPC90ZD4KCQkJPHRkPjIwMjYvMDgvMjYgMDM6NDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPmttc2FuLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTk4MjQKCQkJCQkJCW91dHB1dDogMTg4CgkJCQkJCQl0aG91Z2h0czogMzY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFuYWx5c2lzIG9mIHRoZSBQYXRjaCoqCgpPa2F5LCBzbyBsb29raW5nIGF0IHRoaXMgcGF0Y2gsIGl0JiMzOTtzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IHNlZW1zIGxpa2UgYGJ0Yy0mZ3Q7Z3Bpb2AgaXMganVzdCBhIHRlbXBvcmFyeSBzdHJ1Y3R1cmUgdXNlZCB0byBmb3JtYXQgdGhlIEgyQyBjb21tYW5kLiBBaCwgcmlnaHQsIHRoYXQmIzM5O3MgcGFydCBvZiB0aGUgYHJ0dzg5X2J0Y2Agc3RydWN0IOKAkyBnb3QgaXQuIEkgd2FzIHdvcnJpZWQgZm9yIGEgc2Vjb25kIGFib3V0IHBvdGVudGlhbCB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZXMsIGJ1dCBpdCBzZWVtcyB0aGF0JiMzOTtzIG5vdCB0aGUgY2FzZS4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgbG9naWMgYnVnLgoKRXNzZW50aWFsbHksIHRoZSBidWcgYm9pbHMgZG93biB0byBhbiBpbmNvcnJlY3QgYm91bmRzIGNoZWNrIGluIHRoZSBgX2Z3X3NldF9ncGlvYCBmdW5jdGlvbi4gVGhlIGNvZGUgd2FzIHVzaW5nIGA9PSAweGZmYCAoMjU1KSB0byBjaGVjayB0aGUgcmV0dXJuIHZhbHVlIG9mIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAsIGJ1dCBpdCBzaG91bGQgaGF2ZSBiZWVuIGNoZWNraW5nIGFnYWluc3QgYCZndDs9IEJUQ19EQkdfTlVNYC4gVGhlIGNydWNpYWwgZGV0YWlsIGlzIHRoYXQgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCByZXR1cm5zIGBCVENfREJHX05VTWAsIHdoaWNoIGlzIDMyLCB1cG9uIGFuIGVycm9yLiBTbywgdGhlIG9yaWdpbmFsIGNoZWNrIHdhcyBsZXR0aW5nIGFuIGludmFsaWQgc2lnbmFsIElEICgzMikgc2xpcCB0aHJvdWdoLCB0cmVhdGluZyBpdCBhcyBhIHZhbGlkIHNpZ25hbC4KClRoaXMgaXMgYSBjbGVhbiwgc2ltcGxlIGxvZ2ljIGVycm9yLiBUaGUgZ29vZCBuZXdzIGlzLCB0aGVyZSYjMzk7cyBubyB1bmluaXRpYWxpemVkIG1lbW9yeSBpbnZvbHZlZCBoZXJlLiBUaGUgZGF0YSBiZWluZyBzZW50IHRvIHRoZSBmaXJtd2FyZSBpcyBhbGwgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgY29waWVkIGludG8gdGhlIGBncGlvLSZndDttdXguZGF0YWAgc3RydWN0dXJlLiBUaGF0IG1ha2VzIHRoZSBwb3RlbnRpYWwgZm9yIGEgS01TQU4gaXNzdWUgbmVnbGlnaWJsZS4gVGhlcmVmb3JlLCBJIGRvbuKAmXQgdGhpbmsgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIHdhcnJhbnRlZC4gVGhlIGZpeCBpdHNlbGYgaXMgcHJldHR5IGNsZWFyOiBpbXByb3ZlIHRoYXQgYm91bmRzIGNoZWNrLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjU4LzM8L3RkPgoJCQk8dGQ+MjAyNi8wOC8yNiAwMzo0OTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtLTVNBTlJlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgX2Z3X3NldF9ncGlvYCB3aGVyZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgd2FzIGluY29ycmVjdGx5IGNoZWNrZWQgYWdhaW5zdCBgMHhmZmAgaW5zdGVhZCBvZiBgXHUwMDNlPSBCVENfREJHX05VTWAuIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyBgQlRDX0RCR19OVU1gICh3aGljaCBpcyAzMikgb24gZXJyb3IuIEJlY2F1c2Ugb2YgdGhlIGluY29ycmVjdCBjaGVjaywgdGhlIGVycm9yIHZhbHVlIHdhcyBub3QgY2F1Z2h0IGFuZCB3YXMgc2VudCB0byB0aGUgZmlybXdhcmUgYXMgYSB2YWxpZCBzaWduYWwgSUQuIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFsbCBmaWVsZHMgb2YgdGhlIGBncGlvLVx1MDAzZW11eC5kYXRhYCBzdHJ1Y3R1cmUgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIGNvcGllZCB0byB0aGUgYnVmZmVyIGFuZCBzZW50IHRvIHRoZSBmaXJtd2FyZS4gVGhlcmVmb3JlLCB0aGlzIGJ1ZyBjYW5ub3QgYmUgZGV0ZWN0ZWQgYnkgS01TQU4sIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC4mIzM0OywKICAmIzM0O05lZWRzS01TQU4mIzM0OzogZmFsc2UKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0tNU0FOUmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBfZndfc2V0X2dwaW9gIHdoZXJlIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCB3YXMgaW5jb3JyZWN0bHkgY2hlY2tlZCBhZ2FpbnN0IGAweGZmYCBpbnN0ZWFkIG9mIGBcdTAwM2U9IEJUQ19EQkdfTlVNYC4gYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCByZXR1cm5zIGBCVENfREJHX05VTWAgKHdoaWNoIGlzIDMyKSBvbiBlcnJvci4gQmVjYXVzZSBvZiB0aGUgaW5jb3JyZWN0IGNoZWNrLCB0aGUgZXJyb3IgdmFsdWUgd2FzIG5vdCBjYXVnaHQgYW5kIHdhcyBzZW50IHRvIHRoZSBmaXJtd2FyZSBhcyBhIHZhbGlkIHNpZ25hbCBJRC4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQWxsIGZpZWxkcyBvZiB0aGUgYGdwaW8tXHUwMDNlbXV4LmRhdGFgIHN0cnVjdHVyZSBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgY29waWVkIHRvIHRoZSBidWZmZXIgYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGVyZWZvcmUsIHRoaXMgYnVnIGNhbm5vdCBiZSBkZXRlY3RlZCBieSBLTVNBTiwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLiYjMzQ7LAogICYjMzQ7TmVlZHNLTVNBTiYjMzQ7OiBmYWxzZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjowOC40OTMzOTQ2NDlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyMjg0NjcyMjgxMTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiUlRXODlfODg1MUJVXCIsXG4gICAgXCJSVFc4OV84ODUyQVVcIixcbiAgICBcIlJUVzg5Xzg4NTJCVVwiLFxuICAgIFwiUlRXODlfODg1MkNVXCIsXG4gICAgXCJSVFc4OV84OTIyQVVcIixcbiAgICBcIlJUVzg5X1VTQlwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcInJ0dzg5X2J0Y19udGZ5X2luaXRcIixcbiAgICBcInJ0dzg5X2NvcmVfc3RhcnRcIlxuICBdLFxuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBfZndfc2V0X2dwaW9gIHdoZXJlIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCB3YXMgaW5jb3JyZWN0bHkgY2hlY2tlZCBhZ2FpbnN0IGAweGZmYCBpbnN0ZWFkIG9mIGBcXHUwMDNlPSBCVENfREJHX05VTWAuIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyBgQlRDX0RCR19OVU1gICh3aGljaCBpcyAzMikgb24gZXJyb3IuIEJlY2F1c2Ugb2YgdGhlIGluY29ycmVjdCBjaGVjaywgdGhlIGVycm9yIHZhbHVlIHdhcyBub3QgY2F1Z2h0IGFuZCB3YXMgc2VudCB0byB0aGUgZmlybXdhcmUgYXMgYSB2YWxpZCBzaWduYWwgSUQuIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFsbCBmaWVsZHMgb2YgdGhlIGBncGlvLVxcdTAwM2VtdXguZGF0YWAgc3RydWN0dXJlIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBjb3BpZWQgdG8gdGhlIGJ1ZmZlciBhbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoZXJlZm9yZSwgdGhpcyBidWcgY2Fubm90IGJlIGRldGVjdGVkIGJ5IEtNU0FOLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gYF9md19zZXRfZ3Bpb2Agd2l0aGluIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGZ1enppbmcgKGR1bW15X2hjZCkuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiAoYHJ0dzg5X2J0Y19udGZ5X2luaXRgIC1cXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVxcdTAwM2UgYF9zZXRfZXh0X2ludGVyZmFjZWAgLVxcdTAwM2UgYF9md19zZXRfZ3Bpb2ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjowOC40OTMzOTk3MjlaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM3ODM0NTI1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDlmYjI4OWE2M2UxOGU1YWUyYWEyNDE5ZTljMDZiNWRiOTRjMWNkMmVcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgMjYgMDM6NDY6MDcgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xcbmluZGV4IDVhOWRjNGQ4YTAwYmEuLjEyYmQ1NTM5ZThjNmQgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xcbkBAIC0zMzY1LDcgKzMzNjUsNyBAQCBzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbiBcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5kbGVuID0gQ1hER1BJT19TRVRfTDI7XFxuIFxcdFxcdGdwaW8tXFx1MDAzZW11eC5kYXRhLnNpZyA9IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldixcXG4gXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7XFxuLVxcdFxcdGlmIChncGlvLVxcdTAwM2VtdXguZGF0YS5zaWcgPT0gMHhmZilcXG4rXFx0XFx0aWYgKGdwaW8tXFx1MDAzZW11eC5kYXRhLnNpZyBcXHUwMDNlPSBCVENfREJHX05VTSlcXG4gXFx0XFx0XFx0cmV0dXJuO1xcbiBcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5ncGlvID0gRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCB2YWwpO1xcbiBcXHRcXHRsMl9oMmMgPSBncGlvLVxcdTAwM2VtdXguZm10O1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjowOC44NzI0NjUzNzNaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjo3NjI4Nzk5ODMxMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJSVFc4OV84ODUxQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJBVVwiLFxuICAgIFwiUlRXODlfODg1MkJVXCIsXG4gICAgXCJSVFc4OV84ODUyQ1VcIixcbiAgICBcIlJUVzg5Xzg5MjJBVVwiLFxuICAgIFwiUlRXODlfVVNCXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwicnR3ODlfYnRjX250ZnlfaW5pdFwiLFxuICAgIFwicnR3ODlfY29yZV9zdGFydFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGluIGBfZndfc2V0X2dwaW9gIHdpdGhpbiB0aGUgUmVhbHRlayBydHc4OSB3aXJlbGVzcyBkcml2ZXIuIFRoZSBkcml2ZXIgc3VwcG9ydHMgVVNCIGludGVyZmFjZXMgYW5kIGlzIHJlYWNoYWJsZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgdmlhIFVTQiBmdXp6aW5nIChkdW1teV9oY2QpLiBUaGUgbW9kaWZpZWQgZnVuY3Rpb24gaXMgY2FsbGVkIGR1cmluZyBkcml2ZXIgaW5pdGlhbGl6YXRpb24gKGBydHc4OV9idGNfbnRmeV9pbml0YCAtXFx1MDAzZSBgX3NldF9pbml0X2luZm9gIC1cXHUwMDNlIGBfc2V0X2V4dF9pbnRlcmZhY2VgIC1cXHUwMDNlIGBfZndfc2V0X2dwaW9gKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWZiMjg5YTYzZTE4ZTVhZTJhYTI0MTllOWMwNmI1ZGI5NGMxY2QyZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDAzOjQ2OjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuaW5kZXggNWE5ZGM0ZDhhMDBiYS4uMTJiZDU1MzllOGM2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuQEAgLTMzNjUsNyArMzM2NSw3IEBAIHN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG4gXHRcdGdwaW8tXHUwMDNlbXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xuIFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLnNpZyA9IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldixcbiBcdFx0XHRcdFx0XHRcdCAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCkpO1xuLVx0XHRpZiAoZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPT0gMHhmZilcbitcdFx0aWYgKGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG4gXHRcdFx0cmV0dXJuO1xuIFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLmdwaW8gPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XG4gXHRcdGwyX2gyYyA9IGdwaW8tXHUwMDNlbXV4LmZtdDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjA4Ljg3MjQ2NzExM1oiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxOTg2MTU3MzgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIGEgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCBhIHBhdGNoIGZvciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNgLiBUaGUgY2hhbmdlIGlzIGluIHRoZSBgX2Z3X3NldF9ncGlvYCBmdW5jdGlvbiwgc3BlY2lmaWNhbGx5IHRoaXMgbGluZTpcblxuYGBgY1xuLVx0XHRpZiAoZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPT0gMHhmZilcbitcdFx0aWYgKGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG5gYGBcblxuTXkgaW5pdGlhbCB0aG91Z2h0IGlzIHRoYXQgdGhpcyBpcyBsaWtlbHkgYSBmaXggcmVsYXRlZCB0byBhbiBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2Vzcywgc29tZSBraW5kIG9mIGxvZ2ljIGVycm9yLCBvciBtYXliZSBqdXN0IGEgZGVmZW5zaXZlIHByb2dyYW1taW5nIGltcHJvdmVtZW50LiBUaGUgZmFjdCB0aGF0IHRoZSBkcml2ZXIgaXMgYHJ0dzg5YCB0ZWxscyBtZSB3ZSdyZSBkZWFsaW5nIHdpdGggYSBSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGRyaXZlciwgd2hpY2ggaXMgZ29vZCB0byBrbm93IGZvciBjb250ZXh0LlxuXG5Ob3csIGEgcXVpY2sgZ3V0IGNoZWNrLiBHaXZlbiB0aGUgaGFyZHdhcmUsIGlzIHRoaXMgZHJpdmVyIGV2ZW4gKnJlYWNoYWJsZSogaW4gYSB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudD8gSXQncyB0eXBpY2FsbHkgYSBQQ0llIG9yIFVTQiB3aXJlbGVzcyBkcml2ZXIsIGFuZCBJIGtub3cgdGhhdCBzdGFuZGFyZCBlbXVsYXRpb24gdG9vbHMgbGlrZSBgbWFjODAyMTFfaHdzaW1gIGFyZSBnZW5lcmFsbHkgdXNlZCBmb3IgZW11bGF0aW5nIFdpRmkuIFRoZXNlIHR5cGljYWxseSBkb24ndCBpbmNsdWRlIGhhcmR3YXJlLXNwZWNpZmljIGRyaXZlcnMgbGlrZSBydHc4OSB1bmxlc3MgdGhleSBoYXZlIGEgVVNCIGludGVyZmFjZSBhbmQgd2UgY2FuIGxldmVyYWdlIFVTQiBmdXp6aW5nIHVzaW5nIGR1bW15X2hjZC4gSXQncyByYXJlIHRvIGVtdWxhdGUgdGhpcyBsZXZlbCBvZiBkZXRhaWwuIEkgc2hvdWxkIGRvdWJsZSBjaGVjayBpZiB0aGUgZHJpdmVyIGV4cG9zZXMgYSBVU0IgaW50ZXJmYWNlLiBUaGF0J3MgdGhlIGtleS5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5NiwiT3V0cHV0VG9rZW5zIjo0MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIyMCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjE0LjA3MTA4OTQ0MVoiLCJTZXEiOjQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1Nzg2MjkxOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OS4qdXNiXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIlxcbkZ1bGwgb3V0cHV0IGlzIHRvbyBsb25nLCBzaG93aW5nIDUwMCBvdXQgb2YgODI3IGxpbmVzLlxcblVzZSBtb3JlIHByZWNpc2UgZXhwcmVzc2lvbiBpZiBwb3NzaWJsZS5cXG5cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlPTEwNj1ydHc4OV9wY2kteSA6PSBwY2kubyBwY2lfYmUub1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGUtMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvTWFrZWZpbGU6MTA4Om9iai0kKENPTkZJR19SVFc4OV9VU0IpICs9IHJ0dzg5X3VzYi5vXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9NYWtlZmlsZToxMDk6cnR3ODlfdXNiLXkgOj0gdXNiLm9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L01ha2VmaWxlLTExMC1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTIwPXN0cnVjdCBydHc4OV9wY2lfaW5mbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDoyMTpzdHJ1Y3QgcnR3ODlfdXNiX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMjItc3RydWN0IHJ0dzg5X21hY19nZW5fZGVmO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9NTg3Mj11bmlvbiBydHc4OV9idXNfaW5mbyB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNTg3My1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfcGNpX2luZm8gKnBjaTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo1ODc0OlxcdGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyAqdXNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTU4NzUtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYz00Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MWJfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUxYl9oZmNfY2hjZmdfdXNiW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTU1LVxcdHsxOCwgMjEwLCBncnBfMH0sIC8qIEFDSCAwICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjcwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3B1Yl9jZmcgcnR3ODg1MWJfaGZjX3B1YmNmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTcxLVxcdDIxMCwgLyogR3JvdXAgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYzo3NzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wcmVjX2NmZyBydHc4ODUxYl9oZmNfcHJlY2NmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTc4LVxcdDksIC8qIENIIDAtMTEgcHJlLWNvc3QgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTFiX2hmY19wYXJhbV9pbmlfdXNiW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTg5LVxcdFtSVFc4OV9RVEFfU0NDXSA9IHtydHc4ODUxYl9oZmNfY2hjZmdfdXNiLCBcXHUwMDI2cnR3ODg1MWJfaGZjX3B1YmNmZ191c2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmM9OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTFiX2RsZV9tZW1fcGNpZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTExMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmM6MTEzOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUxYl9kbGVfbWVtX3VzYjJbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFiLmMtMTE0LVxcdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcXHUwMDI2cnR3ODlfbWFjX3NpemUud2RlX3NpemUzMCxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWIuYy0xMjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jOjEyNjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MWJfZGxlX21lbV91c2IzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYi5jLTEyNy1cXHRbUlRXODlfUVRBX1NDQ10gPSB7UlRXODlfUVRBX1NDQywgXFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMzAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmM6MTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyBydHc4ODUxYl91c2JfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTEyLVxcdC51c2JfaG9zdF9yZXF1ZXN0XzJcXHRcXHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYz02Mj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTFidV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTFidS5jLTY0LVxcdC5pZF90YWJsZSA9IHJ0d184ODUxYnVfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2NTpcXHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUxYnUuYzo2NjpcXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MWJ1LmMtNjctfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYz00Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MmFfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjUxOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUyYV9oZmNfY2hjZmdfdXNiW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTUyLVxcdHsyMiwgNDAyLCBncnBfMH0sIC8qIEFDSCAwICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjY3OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3B1Yl9jZmcgcnR3ODg1MmFfaGZjX3B1YmNmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTY4LVxcdDUxMiwgLyogR3JvdXAgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTczLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYzo3NDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wcmVjX2NmZyBydHc4ODUyYV9oZmNfcHJlY2NmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jLTc1LVxcdDExLCAvKiBDSCAwLTExIHByZS1jb3N0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjg1OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4ODUyYV9oZmNfcGFyYW1faW5pX3VzYltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYy04Ni1cXHRbUlRXODlfUVRBX1NDQ10gPSB7cnR3ODg1MmFfaGZjX2NoY2ZnX3VzYiwgXFx1MDAyNnJ0dzg4NTJhX2hmY19wdWJjZmdfdXNiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jPTkzPXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUyYV9kbGVfbWVtX3BjaWVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmEuYy0xMDktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYS5jOjExMDpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmFfZGxlX21lbV91c2JbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhLmMtMTExLVxcdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcXHUwMDI2cnR3ODlfbWFjX3NpemUud2RlX3NpemUxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy0xMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jOjExOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODg1MmFfdXNiX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy0xMi1cXHQudXNiX2hvc3RfcmVxdWVzdF8yXFx0XFx0PSBSX0FYX1VTQl9IT1NUX1JFUVVFU1RfMixcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM9NzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyYXVfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYXUuYy03OC1cXHQuaWRfdGFibGUgPSBydHdfODg1MmF1X2lkX3RhYmxlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6Nzk6XFx0LnByb2JlID0gcnR3ODlfdXNiX3Byb2JlLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmF1LmM6ODA6XFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJhdS5jLTgxLX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmM9NDQ9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTJiX2hmY19wYXJhbV9pbmlfcGNpZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTUxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYzo1MjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19jaF9jZmcgcnR3ODg1MmJfaGZjX2NoY2ZnX3VzYltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy01My1cXHR7MTgsIDIxMCwgZ3JwXzB9LCAvKiBBQ0ggMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTY3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYzo2ODpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg4NTJiX2hmY19wdWJjZmdfdXNiID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy02OS1cXHQyMTAsIC8qIEdyb3VwIDAgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy03NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmM6NzU6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcHJlY19jZmcgcnR3ODg1MmJfaGZjX3ByZWNjZmdfdXNiID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy03Ni1cXHQ5LCAvKiBDSCAwLTExIHByZS1jb3N0ICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJiLmMtODUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jOjg2OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3BhcmFtX2luaSBydHc4ODUyYl9oZmNfcGFyYW1faW5pX3VzYltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy04Ny1cXHRbUlRXODlfUVRBX1NDQ10gPSB7cnR3ODg1MmJfaGZjX2NoY2ZnX3VzYiwgXFx1MDAyNnJ0dzg4NTJiX2hmY19wdWJjZmdfdXNiLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jPTk0PXN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUyYl9kbGVfbWVtX3BjaWVbXSA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmIuYy0xMTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jOjExMTpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmJfZGxlX21lbV91c2IzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYi5jLTExMi1cXHRbUlRXODlfUVRBX1NDQ10gPSB7UlRXODlfUVRBX1NDQywgXFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMzAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmM6MTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyBydHc4ODUyYl91c2JfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTEyLVxcdC51c2JfaG9zdF9yZXF1ZXN0XzJcXHRcXHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYz03Nj1zdGF0aWMgc3RydWN0IHVzYl9kcml2ZXIgcnR3Xzg4NTJidV9kcml2ZXIgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJidS5jLTc4LVxcdC5pZF90YWJsZSA9IHJ0d184ODUyYnVfaWRfdGFibGUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo3OTpcXHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYnUuYzo4MDpcXHQuZGlzY29ubmVjdCA9IHJ0dzg5X3VzYl9kaXNjb25uZWN0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmJ1LmMtODEtfTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYz00Nj1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wYXJhbV9pbmkgcnR3ODg1MmNfaGZjX3BhcmFtX2luaV9wY2llW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtNTMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjU0OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX2NoX2NmZyBydHc4ODUyY19oZmNfY2hjZmdfdXNiW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTU1LVxcdHsxOCwgMzQ0LCBncnBfMH0sIC8qIEFDSCAwICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtNjktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjcwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfaGZjX3B1Yl9jZmcgcnR3ODg1MmNfaGZjX3B1YmNmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTcxLVxcdDM0NCwgLyogR3JvdXAgMCAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTc2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYzo3NzpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wcmVjX2NmZyBydHc4ODUyY19oZmNfcHJlY2NmZ191c2IgPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTc4LVxcdDksIC8qIENIIDAtMTEgcHJlLWNvc3QgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYy04Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmM6ODg6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg4NTJjX2hmY19wYXJhbV9pbmlfdXNiW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTg5LVxcdFtSVFc4OV9RVEFfU0NDXSA9IHtydHc4ODUyY19oZmNfY2hjZmdfdXNiLCBcXHUwMDI2cnR3ODg1MmNfaGZjX3B1YmNmZ191c2IsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmM9OTY9c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg4NTJjX2RsZV9tZW1fcGNpZVtdID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTEwOC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmM6MTA5OnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfZGxlX21lbSBydHc4ODUyY19kbGVfbWVtX3VzYjJbXSA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjLmMtMTEwLVxcdFtSVFc4OV9RVEFfU0NDXSA9IHtSVFc4OV9RVEFfU0NDLCBcXHUwMDI2cnR3ODlfbWFjX3NpemUud2RlX3NpemUzMSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmMuYy0xMjEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jOjEyMjpzdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODg1MmNfZGxlX21lbV91c2IzW10gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyYy5jLTEyMy1cXHRbUlRXODlfUVRBX1NDQ10gPSB7UlRXODlfUVRBX1NDQywgXFx1MDAyNnJ0dzg5X21hY19zaXplLndkZV9zaXplMTcsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODg1MmN1LmM6MTE6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV91c2JfaW5mbyBydHc4ODUyY191c2JfaW5mbyA9IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTEyLVxcdC51c2JfaG9zdF9yZXF1ZXN0XzJcXHRcXHQ9IFJfQVhfVVNCX0hPU1RfUkVRVUVTVF8yX1YxLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYz0xMzY9c3RhdGljIHN0cnVjdCB1c2JfZHJpdmVyIHJ0d184ODUyY3VfZHJpdmVyID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYy0xMzgtXFx0LmlkX3RhYmxlID0gcnR3Xzg4NTJjdV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jOjEzOTpcXHQucHJvYmUgPSBydHc4OV91c2JfcHJvYmUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4ODUyY3UuYzoxNDA6XFx0LmRpc2Nvbm5lY3QgPSBydHc4OV91c2JfZGlzY29ubmVjdCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg4NTJjdS5jLTE0MS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jPTEwMz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg5MjJhX2hmY19wdWJjZmdfcDggPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMTA5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzoxMTA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg5MjJhX2hmY19wYXJhbV9pbmlfdXNiMltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0xMTEtXFx0W1JUVzg5X1FUQV9TQ0NdID0ge3J0dzg5MjJhX2hmY19jaGNmZ19jaDcsIFxcdTAwMjZydHc4OTIyYV9oZmNfcHViY2ZnX3A3LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jPTE2Mz1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2hmY19wdWJfY2ZnIHJ0dzg5MjJhX2hmY19wdWJjZmdfcDUgPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMTY5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzoxNzA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9oZmNfcGFyYW1faW5pIHJ0dzg5MjJhX2hmY19wYXJhbV9pbmlfdXNiM1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0xNzEtXFx0W1JUVzg5X1FUQV9TQ0NdID0ge3J0dzg5MjJhX2hmY19jaGNmZ19jaDQsIFxcdTAwMjZydHc4OTIyYV9oZmNfcHViY2ZnX3A0LFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jPTE4MD1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RsZV9tZW0gcnR3ODkyMmFfZGxlX21lbV9wY2llW10gPSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMTk5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzoyMDA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg5MjJhX2RsZV9tZW1fdXNiMltdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0yMDEtXFx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFxcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTdfdjEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMjE5LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzoyMjA6c3RhdGljIGNvbnN0IHN0cnVjdCBydHc4OV9kbGVfbWVtIHJ0dzg5MjJhX2RsZV9tZW1fdXNiM1tdID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0yMjEtXFx0W1JUVzg5X1FUQV9TQ0NdID0ge1JUVzg5X1FUQV9TQ0MsIFxcdTAwMjZydHc4OV9tYWNfc2l6ZS53ZGVfc2l6ZTRfdjEsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM9ODQyPXN0YXRpYyBpbnQgcnR3ODkyMmFfcmVhZF9lZnVzZV9wY2lfc2RpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTg1My1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6ODU0OnN0YXRpYyBpbnQgcnR3ODkyMmFfcmVhZF9lZnVzZV91c2Ioc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtODU1LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYz04NzY9c3RhdGljIGludCBydHc4OTIyYV9yZWFkX2VmdXNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXAsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtODg2LVxcdGNhc2UgUlRXODlfRUZVU0VfQkxPQ0tfSENJX0RJR19VU0I6XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjg4NzpcXHRcXHRyZXQgPSBydHc4OTIyYV9yZWFkX2VmdXNlX3VzYihydHdkZXYsIGxvZ19tYXApO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy04ODgtXFx0XFx0YnJlYWs7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM9MzIwMT1jb25zdCBzdHJ1Y3QgcnR3ODlfY2hpcF9pbmZvIHJ0dzg5MjJhX2NoaXBfaW5mbyA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYy0zMjI3LVxcdFxcdC5oZmNfcGFyYW1faW5pXFx0PSB7cnR3ODkyMmFfaGZjX3BhcmFtX2luaV9wY2llLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzozMjI4OlxcdFxcdFxcdFxcdCAgIHJ0dzg5MjJhX2hmY19wYXJhbV9pbmlfdXNiMixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmM6MzIyOTpcXHRcXHRcXHRcXHQgICBydHc4OTIyYV9oZmNfcGFyYW1faW5pX3VzYjMsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTMyMzAtXFx0XFx0XFx0XFx0ICAgTlVMTH0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jLTMyMzEtXFx0XFx0LmRsZV9tZW1cXHQ9IHtydHc4OTIyYV9kbGVfbWVtX3BjaWUsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYS5jOjMyMzI6XFx0XFx0XFx0XFx0ICAgcnR3ODkyMmFfZGxlX21lbV91c2IyLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmEuYzozMjMzOlxcdFxcdFxcdFxcdCAgIHJ0dzg5MjJhX2RsZV9tZW1fdXNiMyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhLmMtMzIzNC1cXHRcXHRcXHRcXHQgICBOVUxMfSxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjEwOnN0YXRpYyBjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gcnR3ODkyMmFfdXNiX2luZm8gPSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy0xMS1cXHQudXNiX2hvc3RfcmVxdWVzdF8yXFx0XFx0PSAwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYz0zMT1zdGF0aWMgY29uc3Qgc3RydWN0IHJ0dzg5X2RyaXZlcl9pbmZvIHJ0dzg5Xzg5MjJhdV9pbmZvID0ge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy0zNy1cXHQuYnVzID0ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmM6Mzg6XFx0XFx0LnVzYiA9IFxcdTAwMjZydHc4OTIyYV91c2JfaW5mbyxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jLTM5LVxcdH0sXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jPTc3PXN0YXRpYyBzdHJ1Y3QgdXNiX2RyaXZlciBydHdfODkyMmF1X2RyaXZlciA9IHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmF1LmMtNzktXFx0LmlkX3RhYmxlID0gcnR3Xzg5MjJhdV9pZF90YWJsZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgwOlxcdC5wcm9iZSA9IHJ0dzg5X3VzYl9wcm9iZSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJhdS5jOjgxOlxcdC5kaXNjb25uZWN0ID0gcnR3ODlfdXNiX2Rpc2Nvbm5lY3QsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyYXUuYy04Mi19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jPTg1OT1zdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfZWZ1c2VfcGNpX3NkaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCAqbG9nX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYy04NzAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jOjg3MTpzdGF0aWMgaW50IHJ0dzg5MjJkX3JlYWRfZWZ1c2VfdXNiKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggKmxvZ19tYXApXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTg3Mi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3J0dzg5MjJkLmM9OTE5PXN0YXRpYyBpbnQgcnR3ODkyMmRfcmVhZF9lZnVzZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4ICpsb2dfbWFwLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTkyNS1cXHRjYXNlIFJUVzg5X0VGVVNFX0JMT0NLX0hDSV9ESUdfVVNCOlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcnR3ODkyMmQuYzo5MjY6XFx0XFx0cmV0dXJuIHJ0dzg5MjJkX3JlYWRfZWZ1c2VfdXNiKHJ0d2RldiwgbG9nX21hcCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9ydHc4OTIyZC5jLTkyNy1cXHRjYXNlIFJUVzg5X0VGVVNFX0JMT0NLX1JGOlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9yZWFkX3BvcnRfY29tcGxldGUoc3RydWN0IHVyYiAqdXJiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTQ6c3RhdGljIHZvaWQgX19ydHc4OV91c2JfdmVuZG9ycmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNS1cXHRcXHRcXHRcXHQgIHZvaWQgKmRhdGEsIHUxNiBsZW4sIHU4IHJlcXR5cGUsIGJvb2wgd2FybilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOC1cXHRzdHJ1Y3QgdXNiX2RldmljZSAqdWRldiA9IHJ0d3VzYi1cXHUwMDNldWRldjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MjpzdGF0aWMgdm9pZCBydHc4OV91c2JfdmVuZG9ycmVxKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIsXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03My1cXHRcXHRcXHRcXHR2b2lkICpkYXRhLCB1MTYgbGVuLCB1OCByZXF0eXBlKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzU6XFx0X19ydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgZGF0YSwgbGVuLCByZXF0eXBlLCB0cnVlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc2LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Nzg6c3RhdGljIHUzMiBydHc4OV91c2JfcmVhZF9jbWFjKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTg3LVxcdGZvciAoY291bnQgPSAwOyA7IGNvdW50KyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjg4OlxcdFxcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyMzIsIFxcdTAwMjZkYXRhLCA0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtODktXFx0XFx0XFx0XFx0ICAgIFJUVzg5X1VTQl9WRU5RVF9SRUFEKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTA3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTA4OnN0YXRpYyB1OCBydHc4OV91c2Jfb3BzX3JlYWQ4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMDkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTItXFx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTEzOlxcdFxcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMTU6XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCAxLCBSVFc4OV9VU0JfVkVOUVRfUkVBRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMTYtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTExOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEyMDpzdGF0aWMgdTE2IHJ0dzg5X3VzYl9vcHNfcmVhZDE2KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjEte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjQtXFx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTI1OlxcdFxcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMjc6XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCAyLCBSVFc4OV9VU0JfVkVOUVRfUkVBRCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMjgtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTEzMS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjEzMjpzdGF0aWMgdTMyIHJ0dzg5X3VzYl9vcHNfcmVhZDMyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGFkZHIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzMte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzYtXFx0aWYgKEFDQ0VTU19DTUFDKGFkZHIpKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTM3OlxcdFxcdHJldHVybiBydHc4OV91c2JfcmVhZF9jbWFjKHJ0d2RldiwgYWRkcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xMzgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxMzk6XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCA0LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTQwLVxcdFxcdFxcdCAgICBSVFc4OV9VU0JfVkVOUVRfUkVBRCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE0NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE0NTpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3dyaXRlOChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1OCB2YWwpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDYte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNDgtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNDk6XFx0cnR3ODlfdXNiX3ZlbmRvcnJlcShydHdkZXYsIGFkZHIsIFxcdTAwMjZkYXRhLCAxLCBSVFc4OV9VU0JfVkVOUVRfV1JJVEUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTUwLX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE1MjpzdGF0aWMgdm9pZCBydHc4OV91c2Jfb3BzX3dyaXRlMTYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTE2IHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1My17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE1NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE1NjpcXHRydHc4OV91c2JfdmVuZG9ycmVxKHJ0d2RldiwgYWRkciwgXFx1MDAyNmRhdGEsIDIsIFJUVzg5X1VTQl9WRU5RVF9XUklURSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNTctfVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTU4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTU5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfd3JpdGUzMihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBhZGRyLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTYwLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTYzOlxcdHJ0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBcXHUwMDI2ZGF0YSwgNCwgUlRXODlfVVNCX1ZFTlFUX1dSSVRFKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2NC19XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xNjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNjY6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3dyaXRlMzJfcXVpZXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgYWRkciwgdTMyIHZhbClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2Ny17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE2OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3MDpcXHRfX3J0dzg5X3VzYl92ZW5kb3JyZXEocnR3ZGV2LCBhZGRyLCBcXHUwMDI2ZGF0YSwgNCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE3MS1cXHRcXHRcXHQgICAgICBSVFc4OV9VU0JfVkVOUVRfV1JJVEUsIGZhbHNlKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM9MTc0PXN0YXRpYyB1MzJcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE3NTpydHc4OV91c2Jfb3BzX2NoZWNrX2FuZF9yZWNsYWltX3R4X3Jlc291cmNlKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE3Ni1cXHRcXHRcXHRcXHRcXHQgICAgdTggdHhjaClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE3Ny17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxNzg6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE3OS1cXHRpbnQgaW5mbGlnaHQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjE5MTpzdGF0aWMgdm9pZCBydHc4OV91c2Jfd3JpdGVfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0xOTIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MTkzOlxcdHN0cnVjdCBydHc4OV91c2JfdHhfY3RybF9ibG9jayAqdHhjYiA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5NC1cXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSB0eGNiLVxcdTAwM2VydHdkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoxOTU6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTE5Ni1cXHRzdHJ1Y3QgaWVlZTgwMjExX3R4X2luZm8gKmluZm87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI1OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjI1OTpzdGF0aWMgaW50IHJ0dzg5X3VzYl93cml0ZV9wb3J0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggY2hfZG1hLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjYwLVxcdFxcdFxcdFxcdHZvaWQgKmRhdGEsIGludCBsZW4sIHZvaWQgKmNvbnRleHQpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNjEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MjYyOlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoyNjM6XFx0Y29uc3Qgc3RydWN0IHJ0dzg5X3VzYl9pbmZvICppbmZvID0gcnR3dXNiLVxcdTAwM2VpbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMjY0LVxcdHN0cnVjdCB1c2JfZGV2aWNlICp1c2JkID0gcnR3dXNiLVxcdTAwM2V1ZGV2O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yNzktXFx0dXNiX2ZpbGxfYnVsa191cmIodXJiLCB1c2JkLCBwaXBlLCBkYXRhLCBsZW4sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzoyODA6XFx0XFx0XFx0ICBydHc4OV91c2Jfd3JpdGVfcG9ydF9jb21wbGV0ZSwgY29udGV4dCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0yODEtXFx0dXJiLVxcdTAwM2V0cmFuc2Zlcl9mbGFncyB8PSBVUkJfWkVST19QQUNLRVQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTI5OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMwMDpzdGF0aWMgdm9pZCBydHc4OV91c2JfdHhfZnJlZV9za2Ioc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eGNoLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzAxLVxcdFxcdFxcdFxcdCAgc3RydWN0IHNrX2J1ZmYgKnNrYilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzA4LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzA5OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9vcHNfdHhfa2lja19vZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eGNoKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzEwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjMxMTpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzEyOlxcdHN0cnVjdCBydHc4OV91c2JfdHhfY3RybF9ibG9jayAqdHhjYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMxMy1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zMjItXFx0XFx0aWYgKCF0eGNiKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozMjM6XFx0XFx0XFx0cnR3ODlfdXNiX3R4X2ZyZWVfc2tiKHJ0d2RldiwgdHhjaCwgc2tiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMyNC1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzM0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzM1OlxcdFxcdHJldCA9IHJ0dzg5X3VzYl93cml0ZV9wb3J0KHJ0d2RldiwgdHhjaCwgc2tiLVxcdTAwM2VkYXRhLCBza2ItXFx1MDAzZWxlbixcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTMzNi1cXHRcXHRcXHRcXHRcXHQgICB0eGNiKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzQ1LVxcdFxcdFxcdGtmcmVlKHR4Y2IpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6MzQ2OlxcdFxcdFxcdHJ0dzg5X3VzYl90eF9mcmVlX3NrYihydHdkZXYsIHR4Y2gsIHNrYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNDctXFx0XFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zNTAtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozNTE6c3RhdGljIGludCBydHc4OV91c2JfdHhfd3JpdGVfZndjbWQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzUyLVxcdFxcdFxcdFxcdCAgICBzdHJ1Y3QgcnR3ODlfY29yZV90eF9yZXF1ZXN0ICp0eF9yZXEpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1NC1cXHRzdHJ1Y3QgcnR3ODlfdHhfZGVzY19pbmZvICpkZXNjX2luZm8gPSBcXHUwMDI2dHhfcmVxLVxcdTAwM2VkZXNjX2luZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzozNTU6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM1Ni1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gdHhfcmVxLVxcdTAwM2Vza2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTM5Mi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjM5MzpzdGF0aWMgaW50IHJ0dzg5X3VzYl9vcHNfdHhfd3JpdGUoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtMzk0LVxcdFxcdFxcdFxcdCAgc3RydWN0IHJ0dzg5X2NvcmVfdHhfcmVxdWVzdCAqdHhfcmVxKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTYtXFx0c3RydWN0IHJ0dzg5X3R4X2Rlc2NfaW5mbyAqZGVzY19pbmZvID0gXFx1MDAyNnR4X3JlcS1cXHUwMDNlZGVzY19pbmZvO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Mzk3OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy0zOTgtXFx0c3RydWN0IHJ0dzg5X3R4X3NrYl9kYXRhICpza2JfZGF0YTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNDEyLVxcdGlmIChkZXNjX2luZm8tXFx1MDAzZWNoX2RtYSA9PSBSVFc4OV9UWENIX0NIMTIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo0MTM6XFx0XFx0cmV0dXJuIHJ0dzg5X3VzYl90eF93cml0ZV9md2NtZChydHdkZXYsIHR4X3JlcSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00MTQtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTQzNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQzNjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfaGFuZGxlcihzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00Mzcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NDM4OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3ODlfdXNiLCByeF93b3JrKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjQzOTpcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfdXNiX2luZm8gKmluZm8gPSBydHd1c2ItXFx1MDAzZWluZm87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo0NDA6XFx0c3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2ID0gcnR3dXNiLVxcdTAwM2VydHdkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy00NDEtXFx0c3RydWN0IHJ0dzg5X3J4X2Rlc2NfaW5mbyBkZXNjX2luZm87XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUwNi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjUwNzpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfcmVzdWJtaXQoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTA4OlxcdFxcdFxcdFxcdCAgc3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTA5LVxcdFxcdFxcdFxcdCAgZ2ZwX3QgZ2ZwKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTEwLXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjUxMTpcXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSBydHd1c2ItXFx1MDAzZXJ0d2RldjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTUxMi1cXHRzdHJ1Y3Qgc2tfYnVmZiAqcnhfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MjktXFx0XFx0XFx0ICByeGNiLVxcdTAwM2VyeF9za2ItXFx1MDAzZWRhdGEsIFJUVzg5X1VTQl9SRUNWQlVGX1NaLFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTMwOlxcdFxcdFxcdCAgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZSwgcnhjYik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01MzEtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU1MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjU1MjpzdGF0aWMgdm9pZCBydHc4OV91c2JfcnhfcmVzdWJtaXRfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NTMte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTU0OlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IGNvbnRhaW5lcl9vZih3b3JrLCBzdHJ1Y3QgcnR3ODlfdXNiLCByeF91cmJfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NTU6XFx0c3RydWN0IHJ0dzg5X3VzYl9yeF9jdHJsX2Jsb2NrICpyeGNiO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNTU2LVxcdGludCBpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjEtXFx0XFx0aWYgKCFyeGNiLVxcdTAwM2VyeF9za2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NjI6XFx0XFx0XFx0cnR3ODlfdXNiX3J4X3Jlc3VibWl0KHJ0d3VzYiwgcnhjYiwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjMtXFx0fVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01NjUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NjY6c3RhdGljIHZvaWQgcnR3ODlfdXNiX3JlYWRfcG9ydF9jb21wbGV0ZShzdHJ1Y3QgdXJiICp1cmIpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01Njcte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NTY4OlxcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYiA9IHVyYi1cXHUwMDNlY29udGV4dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU2OS1cXHRzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYgPSByeGNiLVxcdTAwM2VydHdkZXY7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1NzA6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTU3MS1cXHRzdHJ1Y3Qgc2tfYnVmZiAqc2tiID0gcnhjYi1cXHUwMDNlcnhfc2tiO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01ODQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo1ODU6XFx0XFx0cnR3ODlfdXNiX3J4X3Jlc3VibWl0KHJ0d3VzYiwgcnhjYiwgR0ZQX0FUT01JQyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy01ODYtXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjE2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjE3OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9jYW5jZWxfcnhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MTgte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjE5OlxcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYyMC1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjI3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjI4OnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9jYW5jZWxfdHhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02Mjkte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2MzM6c3RhdGljIHZvaWQgcnR3ODlfdXNiX2ZyZWVfcnhfYnVmcyhzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02MzQte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjM1OlxcdHN0cnVjdCBydHc4OV91c2JfcnhfY3RybF9ibG9jayAqcnhjYjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTYzNi1cXHRpbnQgaTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjQ0OnN0YXRpYyBpbnQgcnR3ODlfdXNiX2FsbG9jX3J4X2J1ZnMoc3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjQ1LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY0NjpcXHRzdHJ1Y3QgcnR3ODlfdXNiX3J4X2N0cmxfYmxvY2sgKnJ4Y2I7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NDctXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY1NC1cXHRcXHRpZiAoIXJ4Y2ItXFx1MDAzZXJ4X3VyYikge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjU1OlxcdFxcdFxcdHJ0dzg5X3VzYl9mcmVlX3J4X2J1ZnMocnR3dXNiKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY1Ni1cXHRcXHRcXHRyZXR1cm4gLUVOT01FTTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NjYzOnN0YXRpYyBpbnQgcnR3ODlfdXNiX2luaXRfcngoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjY0LXtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2NTpcXHRzdHJ1Y3QgcnR3ODlfdXNiICpydHd1c2IgPSBydHc4OV91c2JfcHJpdihydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjY2LVxcdHN0cnVjdCBza19idWZmICpyeF9za2I7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY2OC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY2OTpcXHRydHd1c2ItXFx1MDAzZXJ4d3EgPSBhbGxvY193b3JrcXVldWUoXFxcInJ0dzg5X3VzYjogcnggd3FcXFwiLCBXUV9CSCB8IFdRX1BFUkNQVSwgMCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02NzAtXFx0aWYgKCFydHd1c2ItXFx1MDAzZXJ4d3EpIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNjc3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6Njc4OlxcdElOSVRfV09SSyhcXHUwMDI2cnR3dXNiLVxcdTAwM2VyeF93b3JrLCBydHc4OV91c2JfcnhfaGFuZGxlcik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2Nzk6XFx0SU5JVF9XT1JLKFxcdTAwMjZydHd1c2ItXFx1MDAzZXJ4X3VyYl93b3JrLCBydHc4OV91c2JfcnhfcmVzdWJtaXRfd29yayk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy02ODAtXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY4OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjY5MDpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3J4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY5MS17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo2OTI6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTY5My1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzAwLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzAxOnN0YXRpYyB2b2lkIHJ0dzg5X3VzYl9zdGFydF9yeChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDIte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzAzOlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MDQtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwNi1cXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgUlRXODlfVVNCX1JYQ0JfTlVNOyBpKyspXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MDc6XFx0XFx0cnR3ODlfdXNiX3J4X3Jlc3VibWl0KHJ0d3VzYiwgXFx1MDAyNnJ0d3VzYi1cXHUwMDNlcnhfY2JbaV0sIEdGUF9LRVJORUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmMtNzA4LX1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcwOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcxMDpzdGF0aWMgdm9pZCBydHc4OV91c2JfaW5pdF90eChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MTEte1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvdXNiLmM6NzEyOlxcdHN0cnVjdCBydHc4OV91c2IgKnJ0d3VzYiA9IHJ0dzg5X3VzYl9wcml2KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYy03MTMtXFx0aW50IGk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcyMC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jOjcyMTpzdGF0aWMgdm9pZCBydHc4OV91c2JfZGVpbml0X3R4KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcyMi17XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS91c2IuYzo3MjM6XFx0c3RydWN0IHJ0dzg5X3VzYiAqcnR3dXNiID0gcnR3ODlfdXNiX3ByaXYocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3VzYi5jLTcyNC1cXHRpbnQgaTtcXG4tLVxcblxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjoxNC4xMjg5NjAzNDlaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1Mzg3ODkzOTkxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEluaXRpYWwgQXNzZXNzbWVudCBvZiBgcnR3ODlgIGFuZCBVU0IgRnV6emluZyBQb3RlbnRpYWwqKlxuXG5Pa2F5LCBzbyB0aGUgYHJ0dzg5YCBkcml2ZXIsIHJpZ2h0PyBJIHNlZSBpdCBoYXMgVVNCIHN1cHBvcnQgYmFrZWQgaW4gKGBydHc4OV91c2IteSA6PSB1c2Iub2ApLiBUaGF0IGltbWVkaWF0ZWx5IGZsYWdzIGl0IGFzIGEgcG90ZW50aWFsIHRhcmdldCBmb3IgVVNCIGZ1enppbmcuIFRoZSBkdW1teSBIQ0Qgc2V0dXAgb3BlbnMgdGhlIGRvb3IgZm9yIHRoYXQuIE15IGZpcnN0IHRob3VnaHQgaXMgdG8gZGlnIGludG8gdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyB0byBnZXQgYSBoYW5kbGUgb24gd2hhdCBzcGVjaWZpY2FsbHkgZW5hYmxlcyB0aGlzIFVTQiBmdW5jdGlvbmFsaXR5LiBMZXQncyBzdGFydCB3aXRoIGBDT05GSUdfUlRXODlfVVNCYC4gQnV0IGhvbGQgb24sIGJlZm9yZSBJIGdldCB0b28gZmFyLCBJIG5lZWQgdG8gZG91YmxlLWNoZWNrIHRoZSBgS2NvbmZpZ2AgZmlsZSB1bmRlciBgZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9gIHRvIGdldCB0aGUgZGVmaW5pdGl2ZSBzb3VyY2Ugb2YgdHJ1dGggZm9yIHRoZSBjb25maWcgb3B0aW9ucy4gR290dGEgYmUgdGhvcm91Z2guXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE4NjMwLCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6MTkuNTE2ODU2ODlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTI3NzU5NzcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg5X1VTQlwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTE3PWNvbmZpZyBSVFc4OV9QQ0lcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MjA6Y29uZmlnIFJUVzg5X1VTQlxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjoxOS41Njk2Mzg4NjdaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo3NTc3Mjg3Njc3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgc3VtbWFyeSwgYXMgdGhvdWdoIEknbSB0aGlua2luZyB0aHJvdWdoIHRoaXMgcHJvY2VzczpcblxuKipEaXZpbmcgaW50byB0aGUgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJJ20gZ29pbmcgdG8ganVtcCBzdHJhaWdodCBpbnRvIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgUmVhbHRlayB3aXJlbGVzcyBkcml2ZXIg4oCTIHNwZWNpZmljYWxseSwgdGhlIGBydHc4OWAgc2VjdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaG93IHRoaXMgZHJpdmVyIGlzIGNvbmZpZ3VyZWQsIGFuZCBgS2NvbmZpZ2AgZmlsZXMgYXJlIHRoZSBicmVhZCBhbmQgYnV0dGVyIGZvciB0aGlzIGtpbmQgb2YgaW52ZXN0aWdhdGlvbi4gSSdtIGdvaW5nIHRvIHN0YXJ0IGFyb3VuZCBsaW5lIDIwLCBhcyB0aGF0J3MgdXN1YWxseSBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgdG8gZ3Jhc3AgdGhlIG92ZXJhbGwgc3RydWN0dXJlIGFuZCB0aGUgaW5pdGlhbCBkZWZpbml0aW9ucyB0aGF0IHNldCB0aGUgc3RhZ2UuIFRoaXMgc2hvdWxkIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB0aGUgYXZhaWxhYmxlIG9wdGlvbnMgYW5kIGRlcGVuZGVuY2llcyBmb3IgdGhpcyBzcGVjaWZpYyBkcml2ZXIuIExldCdzIHNlZSB3aGF0IHdlIGNhbiB1bmNvdmVyIVxuXG5cbiIsIklucHV0VG9rZW5zIjoxOTA1MywiT3V0cHV0VG9rZW5zIjo0MywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjI4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjI3LjE0NjkyODQ0NFoiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjEwNDY2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBCU0QtMy1DbGF1c2VcXG4gICAyOlxcdG1lbnVjb25maWcgUlRXODlcXG4gICAzOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzIHN1cHBvcnRcXFwiXFxuICAgNDpcXHRcXHRkZXBlbmRzIG9uIE1BQzgwMjExXFxuICAgNTpcXHRcXHRoZWxwXFxuICAgNjpcXHRcXHQgIFRoaXMgbW9kdWxlIGFkZHMgc3VwcG9ydCBmb3IgbWFjODAyMTEtYmFzZWQgd2lyZWxlc3MgZHJpdmVycyB0aGF0XFxuICAgNzpcXHRcXHQgIGVuYWJsZXMgUmVhbHRlayBJRUVFIDgwMi4xMWF4IHdpcmVsZXNzIGNoaXBzZXRzLlxcbiAgIDg6XFx0XFxuICAgOTpcXHRcXHQgIElmIHlvdSBjaG9vc2UgdG8gYnVpbGQgYSBtb2R1bGUsIGl0J2xsIGJlIGNhbGxlZCBydHc4OS5cXG4gIDEwOlxcdFxcbiAgMTE6XFx0aWYgUlRXODlcXG4gIDEyOlxcdFxcbiAgMTM6XFx0Y29uZmlnIFJUVzg5X0NPUkVcXG4gIDE0OlxcdFxcdHRyaXN0YXRlXFxuICAxNTpcXHRcXHRzZWxlY3QgV0FOVF9ERVZfQ09SRURVTVBcXG4gIDE2OlxcdFxcbiAgMTc6XFx0Y29uZmlnIFJUVzg5X1BDSVxcbiAgMTg6XFx0XFx0dHJpc3RhdGVcXG4gIDE5OlxcdFxcbiAgMjA6XFx0Y29uZmlnIFJUVzg5X1VTQlxcbiAgMjE6XFx0XFx0dHJpc3RhdGVcXG4gIDIyOlxcdFxcbiAgMjM6XFx0Y29uZmlnIFJUVzg5Xzg4NTFCXFxuICAyNDpcXHRcXHR0cmlzdGF0ZVxcbiAgMjU6XFx0XFxuICAyNjpcXHRjb25maWcgUlRXODlfODg1MkFcXG4gIDI3OlxcdFxcdHRyaXN0YXRlXFxuICAyODpcXHRcXG4gIDI5OlxcdGNvbmZpZyBSVFc4OV84ODUyQl9DT01NT05cXG4gIDMwOlxcdFxcdHRyaXN0YXRlXFxuICAzMTpcXHRcXG4gIDMyOlxcdGNvbmZpZyBSVFc4OV84ODUyQlxcbiAgMzM6XFx0XFx0dHJpc3RhdGVcXG4gIDM0OlxcdFxcbiAgMzU6XFx0Y29uZmlnIFJUVzg5Xzg4NTJCVFxcbiAgMzY6XFx0XFx0dHJpc3RhdGVcXG4gIDM3OlxcdFxcbiAgMzg6XFx0Y29uZmlnIFJUVzg5Xzg4NTJDXFxuICAzOTpcXHRcXHR0cmlzdGF0ZVxcbiAgNDA6XFx0XFxuICA0MTpcXHRjb25maWcgUlRXODlfODkyMkFcXG4gIDQyOlxcdFxcdHRyaXN0YXRlXFxuICA0MzpcXHRcXG4gIDQ0OlxcdGNvbmZpZyBSVFc4OV84OTIyRFxcbiAgNDU6XFx0XFx0dHJpc3RhdGVcXG4gIDQ2OlxcdFxcbiAgNDc6XFx0Y29uZmlnIFJUVzg5Xzg4NTFCRVxcbiAgNDg6XFx0XFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJFIFBDSSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbiAgNDk6XFx0XFx0ZGVwZW5kcyBvbiBQQ0lcXG4gIDUwOlxcdFxcdHNlbGVjdCBSVFc4OV9DT1JFXFxuICA1MTpcXHRcXHRzZWxlY3QgUlRXODlfUENJXFxuICA1MjpcXHRcXHRzZWxlY3QgUlRXODlfODg1MUJcXG4gIDUzOlxcdFxcdGhlbHBcXG4gIDU0OlxcdFxcdCAgU2VsZWN0IHRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIHN1cHBvcnQgZm9yIDg4NTFCRSBjaGlwc2V0XFxuICA1NTpcXHRcXG4gIDU2OlxcdFxcdCAgODAyLjExYXggUENJZSB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxuICA1NzpcXHRcXG4gIDU4OlxcdGNvbmZpZyBSVFc4OV84ODUxQlVcXG4gIDU5OlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTFCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gIDYwOlxcdFxcdGRlcGVuZHMgb24gVVNCXFxuICA2MTpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAgNjI6XFx0XFx0c2VsZWN0IFJUVzg5X1VTQlxcbiAgNjM6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTFCXFxuICA2NDpcXHRcXHRoZWxwXFxuICA2NTpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUxQlUgY2hpcHNldFxcbiAgNjY6XFx0XFxuICA2NzpcXHRcXHQgIDgwMi4xMWF4IFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxuICA2ODpcXHRcXG4gIDY5OlxcdGNvbmZpZyBSVFc4OV84ODUyQUVcXG4gIDcwOlxcdFxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJBRSBQQ0kgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4gIDcxOlxcdFxcdGRlcGVuZHMgb24gUENJXFxuICA3MjpcXHRcXHRzZWxlY3QgUlRXODlfQ09SRVxcbiAgNzM6XFx0XFx0c2VsZWN0IFJUVzg5X1BDSVxcbiAgNzQ6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJBXFxuICA3NTpcXHRcXHRoZWxwXFxuICA3NjpcXHRcXHQgIFNlbGVjdCB0aGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBzdXBwb3J0IGZvciA4ODUyQUUgY2hpcHNldFxcbiAgNzc6XFx0XFxuICA3ODpcXHRcXHQgIDgwMi4xMWF4IFBDSWUgd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgNzk6XFx0XFxuICA4MDpcXHRjb25maWcgUlRXODlfODg1MkFVXFxuICA4MTpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA4MjpcXHRcXHRkZXBlbmRzIG9uIFVTQlxcbiAgODM6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDg0OlxcdFxcdHNlbGVjdCBSVFc4OV9VU0JcXG4gIDg1OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQVxcbiAgODY6XFx0XFx0aGVscFxcbiAgODc6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkFVIGNoaXBzZXRcXG4gIDg4OlxcdFxcbiAgODk6XFx0XFx0ICA4MDIuMTFheCBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcbiAgOTA6XFx0XFxuICA5MTpcXHRjb25maWcgUlRXODlfODg1MkJFXFxuICA5MjpcXHRcXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQkUgUENJIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuICA5MzpcXHRcXHRkZXBlbmRzIG9uIFBDSVxcbiAgOTQ6XFx0XFx0c2VsZWN0IFJUVzg5X0NPUkVcXG4gIDk1OlxcdFxcdHNlbGVjdCBSVFc4OV9QQ0lcXG4gIDk2OlxcdFxcdHNlbGVjdCBSVFc4OV84ODUyQlxcbiAgOTc6XFx0XFx0c2VsZWN0IFJUVzg5Xzg4NTJCX0NPTU1PTlxcbiAgOTg6XFx0XFx0aGVscFxcbiAgOTk6XFx0XFx0ICBTZWxlY3QgdGhpcyBvcHRpb24gd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgODg1MkJFIGNoaXBzZXRcXG4gMTAwOlxcdFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjoyNy4xNDcwMzQ0MjRaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDQ0OTg2MTc2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgVVNCIERyaXZlciBmb3IgQ29tcGF0aWJpbGl0eSoqXG5cbk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IGhvdyB0byBpbnRlcmFjdCB3aXRoIHRoaXMgZHJpdmVyIHZpYSBVU0IuIEl0IGxvb2tzIGxpa2UgdGhlIGRyaXZlciBmb3IgdGhpcyBoYXJkd2FyZSBpcyByZWFjaGFibGUgdGhyb3VnaCBVU0Ig4oCTIHRoYXQncyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQuIEkgbmVlZCB0byBpZGVudGlmeSB0aGUgVVNCIGNvbmZpZ3VyYXRpb25zIHRoYXQgYXJlIHJlbGV2YW50IGhlcmUuIEkgc2VlIGEgbGlzdCBvZiBsaWtlbHkgY2FuZGlkYXRlczogYFJUVzg5Xzg4NTFCVWAsIGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGFuZCBgUlRXODlfODkyMkFVYC4gSSdsbCB3YW50IHRvIGtlZXAgdGhvc2UgbmFtZXMgaW4gbWluZCBhcyBJIGRpZyBkZWVwZXIuIE15IGltbWVkaWF0ZSBuZXh0IHN0ZXAgaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZSBgX2Z3X3NldF9ncGlvYCBmdW5jdGlvbiBvciBzaW1pbGFyIGZ1bmN0aW9uYWxpdHkgaXMgZXhwb3NlZC4gVGhhdCdzIHVzdWFsbHkgdGhlIGtleSB0byBjb250cm9sbGluZyBoYXJkd2FyZS1sZXZlbCBmZWF0dXJlcywgc28gSSBuZWVkIHRvIGNvbmZpcm0gaXRzIGFjY2Vzc2liaWxpdHkuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwNjMzLCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTAsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NjozMS4xOTIwMjI3OFoiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTY0ODM4MDgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX2Z3X3NldF9ncGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzMzpzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzQyNT1zdGF0aWMgdm9pZCBfc2V0X2V4dF9pbnRlcmZhY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0My1cXHRcXHRpZiAoYnQxX3N3X3R5cGUgXFx1MDAzZSBCVENfU1dJVENIX0lOVEVSTkFMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0NDpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VOX01BUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ1LVxcdFxcdFxcdFxcdCAgICAgQklUKEJUQ19EQkdfR05UX0JUMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0Ny1cXHRcXHRcXHR2YWwgPSAoYnQxX3N3X3R5cGUgXFx1MDAzY1xcdTAwM2MgOCkgKyBCVENfREJHX0dOVF9CVDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0ODpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX01VWF9NQVAsIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDUzLVxcdGlmIChjeC1cXHUwMDNlYnRfZXh0Lmh3X2NvZXggXFx1MDAyNiBCVENfRVhUU09DX0lOVEZfUFRBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NTQ6XFx0XFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfSFBUQSwgY3gtXFx1MDAzZWJ0X2V4dC5ocHRhX2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTctXFx0aWYgKGN4LVxcdTAwM2VidF9leHQuaHdfY29leCBcXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9NQlgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ1ODpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9ITUJYLCBjeC1cXHUwMDNlYnRfZXh0LmhtYnhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ2MS1cXHRpZiAoY3gtXFx1MDAzZWJ0X2V4dC5od19jb2V4IFxcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX1NXSU8pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDYyOlxcdFxcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX1NXT1VULCBjeC1cXHUwMDNlYnRfZXh0LnN3b3V0X2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ2MzpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9TV0lOLCBjeC1cXHUwMDNlYnRfZXh0LnN3aW5fY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDY0LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6MzEuMjQ4NTEyNzY4WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM5ODcxMDEzODAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGFuIGVtYmVkZGVkIHN5c3RlbXMgZXhwZXJ0OlxuXG4qKlRyYWNpbmcgdGhlIFBpbiBDb25maWd1cmF0aW9uIExvZ2ljKipcblxuQWxyaWdodCwgc28gSSdtIGRpZ2dpbmcgaW50byB0aGlzIGNvZGUgYW5kIHRyeWluZyB0byBmaWd1cmUgb3V0IGhvdyB0aGVzZSBleHRlcm5hbCBpbnRlcmZhY2VzIGFyZSBiZWluZyBzZXQgdXAuIEkgc2VlIHRoYXQgYF9zZXRfZXh0X2ludGVyZmFjZWAgaXMgcmVzcG9uc2libGUgZm9yIGNvbmZpZ3VyaW5nIHRoZXNlIHRoaW5ncy4gVGhhdCBtYWtlcyBzZW5zZSwgYSB0b3AtbGV2ZWwgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIHRoZSBoaWdoLWxldmVsIHNldHVwLiBCdXQgdGhlbiBJIHNwb3QgaXQ6IGBfZndfc2V0X2dwaW9gIGlzICpjYWxsZWQqIGJ5IGBfc2V0X2V4dF9pbnRlcmZhY2VgLiBIbW0sIHRoYXQncyBpbnRlcmVzdGluZy4gU28sIGl0IGxvb2tzIGxpa2UgYF9md19zZXRfZ3Bpb2AgaXMgdGhlIGxvdy1sZXZlbCB3b3JraG9yc2UsIHRoZSBmdW5jdGlvbiB0aGF0IGFjdHVhbGx5IGludGVyYWN0cyB3aXRoIHRoZSBHUElPIChHZW5lcmFsIFB1cnBvc2UgSW5wdXQvT3V0cHV0KSByZWdpc3RlcnMgb24gdGhlIGhhcmR3YXJlLiBgX3NldF9leHRfaW50ZXJmYWNlYCBpcyBwcm9iYWJseSBjYWxsaW5nIGBfZndfc2V0X2dwaW9gIGluIG9yZGVyIHRvIHNldCB1cCB0aGUgcGlucyBwcm9wZXJseSBmb3IgdGhlIGV4dGVybmFsIGludGVyZmFjZS4gVGhpcyBpcyBhIGNvbW1vbiBwYXR0ZXJuLCB3aXRoIGEgaGlnaGVyLWxldmVsIGZ1bmN0aW9uIG1hbmFnaW5nIHRoZSBicm9hZGVyIGNvbmZpZ3VyYXRpb24gYW5kIHRoZW4gZGVsZWdhdGluZyB0aGUgaGFyZHdhcmUtc3BlY2lmaWMgZGV0YWlscyB0byBhIGxvd2VyLWxldmVsIGZ1bmN0aW9uLiBJJ2xsIG5lZWQgdG8gbG9vayBhdCB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBgX2Z3X3NldF9ncGlvYCBhbmQgaG93IGl0J3MgdXNlZCB0byBmdWxseSB1bmRlcnN0YW5kIGhvdyB0aGUgcGluIGNvbmZpZ3VyYXRpb24gaXMgcmVhbGx5IHdvcmtpbmcuIFRoaXMgaXMgYSBnb29kIHN0YXJ0aW5nIHBvaW50IGZvciB0cmFjaW5nIHRoZSBleHRlcm5hbCBpbnRlcmZhY2Ugc2V0dXAuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIxODk3LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6MzUuMjM1NjE3MTM4WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MTA4ODAwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfc2V0X2V4dF9pbnRlcmZhY2VcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMzMz1zdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQyNC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDI1OnN0YXRpYyB2b2lkIF9zZXRfZXh0X2ludGVyZmFjZShzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQyNi17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NjkwPXN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3MTgtXFx0YnRjX2Z3X3NldF9tb25yZWcocnR3ZGV2KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NzE5OlxcdF9zZXRfZXh0X2ludGVyZmFjZShydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3MjAtXFx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSLCBSVFc4OV9QSFlfMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjM1LjI4NjcxMDY4NVoiLCJTZXEiOjEzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzM5Mjk4NzEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBkZWVwIGluIHRoZSB3ZWVkcyBvZiB0aGlzIGNvZGUsIGFuZCBwcmVzZW50ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6XG5cbioqVW5kZXJzdGFuZGluZyB0aGUgSW5pdGlhbGl6YXRpb24gRmxvdyoqXG5cbkFscmlnaHQsIHNvIEknbSB0aGlua2luZyBhYm91dCBob3cgdGhpcyBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSBpcyB1bmZvbGRpbmcuIEl0IGxvb2tzIGxpa2UgdGhlIGBfc2V0X2V4dF9pbnRlcmZhY2VgIGZ1bmN0aW9uIGlzIGJlaW5nIGNhbGxlZCAqZGlyZWN0bHkqIGJ5IGBfc2V0X2luaXRfaW5mb2AuIFRoYXQncyBpbXBvcnRhbnQuIEl0J3Mgbm90IHNvbWUgaW5kaXJlY3QgY2FsbCB0aHJvdWdoIGFub3RoZXIgbGF5ZXIuIFRoaXMgbWVhbnMgdGhhdCBzZXR0aW5nIHRoZSBleHRlcm5hbCBpbnRlcmZhY2UgaXMgYSAqZGlyZWN0KiBjb25zZXF1ZW5jZSwgb3IgcGFydCwgb2Ygc2V0dGluZyB1cCB0aGUgaW5pdGlhbGl6YXRpb24gaW5mb3JtYXRpb24uIEkgY2FuIHByb2JhYmx5IGluZmVyIGZyb20gdGhpcyB0aGF0IGhvdyB3ZSBzZXQgdXAgdGhlIGV4dGVybmFsIGludGVyZmFjZSBpcyBwcmV0dHkgY2VudHJhbCB0byB0aGUgZWFybHkgc2V0dXAgYW5kIHByb2JhYmx5IGNyaXRpY2FsIHRvIGNvcmUgZnVuY3Rpb25hbGl0eSBsYXRlciBvbiwgb3IgaXQgd291bGRuJ3QgYmUgZGlyZWN0bHkgYXR0YWNoZWQgdG8gaW5pdCBpbmZvLiBOZWVkIHRvIGtlZXAgdGhpcyBjb25uZWN0aW9uIGluIG1pbmQgd2hlbiBJIGRlYnVnIGxhdGVyIG9uLiBHb3QgaXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIyNTg4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6MzkuMDI2MDEyMDc2WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDQ2MDQzOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfc2V0X2luaXRfaW5mb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz04NjcxPXZvaWQgcnR3ODlfYnRjX250ZnlfcG93ZXJvZmYoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODY4OS0jZGVmaW5lIEJUQ19QTEFURk9STV9MSVRUTEVfRU5ESUFOIDBcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NjkwOnN0YXRpYyB2b2lkIF9zZXRfaW5pdF9pbmZvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NjkxLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg3MjM9dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3NzMtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6ODc3NDpcXHRfc2V0X2luaXRfaW5mbyhydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTg3NzUtXFx0X3NldF93bF90eF9wb3dlcihydHdkZXYsIFJUVzg5X0JUQ19XTF9ERUZfVFhfUFdSLCBSVFc4OV9QSFlfMCk7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjM5LjA3NjQ3NjM5NFoiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzY3NDM2MzY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIGFzc3VtaW5nIEknbSBhbHJlYWR5IGRlZXAgaW4gdGhlIHdlZWRzIHdpdGggd2lyZWxlc3MgZHJpdmVyIGludGVybmFsczpcblxuKipBbmFseXppbmcgdGhlIEluaXRpYWxpemF0aW9uIFNlcXVlbmNlIGluIHJ0dzg5X2J0Y19udGZ5X2luaXQqKlxuXG5BbHJpZ2h0LCBzbyBJJ20gbG9va2luZyBhdCBgcnR3ODlfYnRjX250ZnlfaW5pdGAsIGFuZCBteSBtaW5kIGltbWVkaWF0ZWx5IGp1bXBzIHRvIGBfc2V0X2luaXRfaW5mb2AuIFRoZSBjb2RlIGFyY2hpdGVjdHVyZSBpcyBkZXNpZ25lZCB0byBpbml0aWFsaXplIHRoZSBCVCBjby1leGlzdGVuY2UgZnVuY3Rpb25hbGl0eS4gRnJvbSBteSBleHBlcmllbmNlIHdpdGggd2lyZWxlc3MgZHJpdmVycywgdGhlIGZhY3QgdGhhdCBgX3NldF9pbml0X2luZm9gIGlzIGJlaW5nIGNhbGxlZCAqYnkqIGBydHc4OV9idGNfbnRmeV9pbml0YCBpcyBjcnVjaWFsLiBJdCB0ZWxscyBtZSB0aGF0IGBfc2V0X2luaXRfaW5mb2AgaXMgbGlrZWx5IGEgY29yZSwgZm91bmRhdGlvbmFsIGZ1bmN0aW9uIHdpdGhpbiB0aGUgQlQgY29leGlzdGVuY2Ugc2V0dXAuIEl0J3MgYWxtb3N0IGNlcnRhaW5seSB0aGUgcm91dGluZSB0aGF0IHBvcHVsYXRlcyBvciBzZXRzIHVwIHRoZSBuZWNlc3NhcnkgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgbmVlZGVkIGZvciBwcm9wZXIgQmx1ZXRvb3RoIGFuZCBXaS1GaSBoYXJtb255LiBJ4oCZbSBiZXR0aW5nIHRoaXMgZnVuY3Rpb24gaXMgcmVzcG9uc2libGUgZm9yIHByZS1wcm9jZXNzaW5nIHRoZSBpbml0aWFsIHNldHRpbmdzIHRvIGNvbmZpZ3VyZSBvciBwcmVwYXJlIHRoZSBzeXN0ZW0gZm9yIHRoZSByZXN0IG9mIHRoZSBCVC9XaS1GaSBjb2xsYWJvcmF0aW9uIGxvZ2ljIHRvIGZvbGxvdy4gSSBzaG91bGQgY2FyZWZ1bGx5IHJldmlldyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiB0byB1bmRlcnN0YW5kIGhvdyB0aGUgaW5pdGlhbGl6YXRpb24gZGF0YSBpcyBoYW5kbGVkIGFuZCB3aGVyZSBpdCBjb21lcyBmcm9tLiBUaGlzIGlzIGEgcG90ZW50aWFsIHN0YXJ0aW5nIHBvaW50IGZvciBkZWJ1Z2dpbmcgYW55IGlzc3VlcyB3aXRoIEJsdWV0b290aCBjb2V4aXN0ZW5jZSwgYXMgdGhpcyBpbml0aWFsaXphdGlvbiBzdGVwIGlzIGNsZWFybHkgY3JpdGljYWwgZm9yIHRoZSBzeXN0ZW0uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIzMTg3LCJPdXRwdXRUb2tlbnMiOjQ1LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6NDIuODQzOTE2MTczWiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjM0ODMwOCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9idGNfbnRmeV9pbml0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTg2OTA9c3RhdGljIHZvaWQgX3NldF9pbml0X2luZm8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzo4NzIzOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtODcyNC17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaD0zMjA9dm9pZCBydHc4OV9idGNfbnRmeV9wb3dlcm9mZihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oOjMyMTp2b2lkIHJ0dzg5X2J0Y19udGZ5X2luaXQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBtb2RlKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguaC0zMjItdm9pZCBydHc4OV9idGNfbnRmeV9zY2FuX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggcGh5X2lkeCwgdTggYmFuZCk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYz02NjU4PWludCBydHc4OV9jb3JlX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2OTQtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NjY5NTpcXHRydHc4OV9idGNfbnRmeV9pbml0KHJ0d2RldiwgQlRDX01PREVfTk9STUFMKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYy02Njk2LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0Njo0Mi44OTYyNzE2MjFaIiwiU2VxIjoxNywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDAzNjQ5NzA1OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IGludGVycHJldGF0aW9uIG9mIHRoYXQgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipJbml0aWFsaXNpbmcgdGhlIEJpdGNvaW4gTm90aWZpY2F0aW9uIFN5c3RlbSoqXG5cblJpZ2h0LCBzbyBJIHNlZSB0aGF0IGBydHc4OV9idGNfbnRmeV9pbml0YCBpcyBpbnZva2VkIGJ5IGBydHc4OV9jb3JlX3N0YXJ0YC4gVGhpcyBpcyBpbnRlcmVzdGluZzsgaXQgZ2l2ZXMgbWUgYSBjbGVhciBwb2ludCBvZiBlbnRyeS4gSXQgbWVhbnMgdGhhdCB0aGUgQml0Y29pbiBub3RpZmljYXRpb24gc3lzdGVtLCB3aGF0ZXZlciBpdCdzIGRvaW5nLCBpcyBpbml0aWFsaXplZCB3aGVuIHRoZSBjb3JlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGBydHc4OWAgbW9kdWxlIGlzIHN0YXJ0ZWQuIFRoZSBpbXBsaWNhdGlvbiBpcyB0aGF0IHRoaXMgbm90aWZpY2F0aW9uIHN5c3RlbSBpcyBpbnRlZ3JhbCB0byB0aGUgb3ZlcmFsbCBvcGVyYXRpb24gb2YgdGhlIG1vZHVsZSBhbmQgdGhhdCBzdGFydGluZyB0aGUgY29yZSBlZmZlY3RpdmVseSBiZWdpbnMgdGhlIG1vbml0b3Jpbmcgb3Igbm90aWZpY2F0aW9uIHByb2Nlc3MuIEknbGwgbmVlZCB0byBkaWcgaW50byBgcnR3ODlfY29yZV9zdGFydGAgYW5kIHNlZSB3aGF0IHRyaWdnZXJzIHRoZSBCaXRjb2luIHN5c3RlbSB0byBhY3R1YWxseSBzdGFydCByZWNlaXZpbmcgbm90aWZpY2F0aW9ucywgd2hhdCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGFyZSBsb2FkZWQsIGFuZCB3aGF0IGV2ZW50cyBpdOKAmXMgd2F0Y2hpbmcgZm9yLCBidXQgdGhpcyBjb25maXJtcyB0aGF0IHRoZSBjb3JlIHN0YXJ0aW5nIHBvaW50IGlzIGFsc28gdGhlIGVudHJ5IHBvaW50IGZvciBCaXRjb2luIG5vdGlmaWNhdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0MDA2LCJPdXRwdXRUb2tlbnMiOjQyLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDY6NDYuOTMyNzcwODQ5WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0OTA1NTQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJydHc4OV9jb3JlX3N0YXJ0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY2NTY9RVhQT1JUX1NZTUJPTChydHc4OV9jaGVja19xdWlya3MpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2NTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmM6NjY1ODppbnQgcnR3ODlfY29yZV9zdGFydChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjY1OS17XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD05MzYyPXZvaWQgcnR3ODlfY29tcGxldGVfY29uZChzdHJ1Y3QgcnR3ODlfd2FpdF9pbmZvICp3YWl0LCB1bnNpZ25lZCBpbnQgY29uZCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC05MzYzLVxcdFxcdFxcdCBjb25zdCBzdHJ1Y3QgcnR3ODlfY29tcGxldGlvbl9kYXRhICpkYXRhKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDo5MzY0OmludCBydHc4OV9jb3JlX3N0YXJ0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtOTM2NS12b2lkIHJ0dzg5X2NvcmVfc3RvcChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jPTU3PXN0YXRpYyBpbnQgcnR3ODlfb3BzX3N0YXJ0KHN0cnVjdCBpZWVlODAyMTFfaHcgKmh3KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9tYWM4MDIxMS5jLTYyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYzo2MzpcXHRyZXR1cm4gcnR3ODlfY29yZV9zdGFydChydHdkZXYpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvbWFjODAyMTEuYy02NC19XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L3BzLmM9MjU3PXZvaWQgcnR3ODlfbGVhdmVfaXBzKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvcHMuYy0yNjYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wcy5jOjI2NzpcXHRyZXQgPSBydHc4OV9jb3JlX3N0YXJ0KHJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9wcy5jLTI2OC1cXHRpZiAocmV0KVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0Njo0Ni45ODE4MzQyMDdaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ4MzIyODE3OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipNeSBJbml0aWFsIEFzc2Vzc21lbnQgb2YgdGhlIEJ1ZyBGaXgqKlxuXG5Pa2F5LCBzbyBgcnR3ODlfY29yZV9zdGFydGAgZ2V0cyB0cmlnZ2VyZWQgd2hlbiB0aGUgaW50ZXJmYWNlIGNvbWVzIG9ubGluZSwgdGhhbmtzIHRvIGBydHc4OV9vcHNfc3RhcnRgIGJlaW5nIGEgbWFjODAyMTEgY2FsbGJhY2suIFRoZSBjaGFuZ2Ugb2YgY29uY2VybiBpcyBpbiBgX2Z3X3NldF9ncGlvYCwgd2hpY2ggaXMgY2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbi4gTXkgaW5pdGlhbCB0aG91Z2h0IGlzOiBpcyB0aGlzIHdvcnRoIHRoZSBlZmZvcnQgb2YgYSBkZWRpY2F0ZWQgZnV6emluZyBjYW1wYWlnbj8gSXQncyBmaXhpbmcgYSBwb3RlbnRpYWwgb3V0LW9mLWJvdW5kcyBhY2Nlc3Mgd2l0aGluIHRoZSBkcml2ZXIncyBzZXR1cCBwaGFzZS4gQ29uc2lkZXJpbmcgdGhlIGRyaXZlciAqaXMqIGFjY2Vzc2libGUgdGhyb3VnaCBVU0IgZHVtbXlfaGNkIGZ1enppbmcsIHRoZSB2dWxuZXJhYmlsaXR5IHNlZW1zIHBsYXVzaWJsZSwgYW5kIEkgd2FudCB0byBpbnZlc3RpZ2F0ZSBmdXJ0aGVyLiBMZXQncyBkZWx2ZSBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgYF9md19zZXRfZ3Bpb2AgYW5kIGV4YW1pbmUgdGhlIHVzYWdlIG9mIGBCVENfREJHX05VTWAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI0ODg4LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTI5LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjUxLjQ2NTA2NDk0NVoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTE4MDQ4MjcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiQlRDX0RCR19OVU1cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI2MT1zdGF0aWMgdTggX2dldF9ncGlvc2lnX2Zvcl92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBzaWdfdjgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjc1LVxcdFxcdFxcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjc2OlxcdFxcdHJldHVybiBCVENfREJHX05VTTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjc3OlxcdH0gZWxzZSBpZiAoc2lnX3Y4IFxcdTAwM2U9IEJUQ19EQkdfTlVNKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI3OC1cXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjgwLVxcdFxcdFxcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjgxOlxcdFxcdHJldHVybiBCVENfREJHX05VTTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjgyLVxcdH0gZWxzZSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjg3PXN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF90b192ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwX3Y4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMwMy1cXHQvKiBiaXQgNC0zMTogc2hpZnQgcmlnaHQgYnkgMiBwb3NpdGlvbnMgKGJlY29tZSBiaXQgMi0yOSBpbiB2NykgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzA0OlxcdGZvciAoYml0ID0gQlRDX0RCR19CQ05fRUFSTFk7IGJpdCBcXHUwMDNjIEJUQ19EQkdfTlVNOyBiaXQrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMDUtXFx0XFx0aWYgKGVuX21hcF92OCBcXHUwMDI2IEJJVChiaXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMxMj1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfZnJvbV92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1MzIgZW5fbWFwKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMyNC1cXHQvKiBiaXQgMi0yOTogc2hpZnQgbGVmdCBieSAyIHBvc2l0aW9ucyAoYmVjb21lIGJpdCA0LTMxIGluIHY4KSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMjU6XFx0Zm9yIChiaXQgPSBCVENfREJHX0dOVF9CVDE7IGJpdCBcXHUwMDNjIEJUQ19EQkdfTlVNIC0gMjsgYml0KyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzI2LVxcdFxcdGlmIChlbl9tYXAgXFx1MDAyNiBCSVQoYml0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzM2ODpcXHRcXHRpZiAoZ3Bpby1cXHUwMDNlbXV4LmRhdGEuc2lnIFxcdTAwM2U9IEJUQ19EQkdfTlVNKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjktXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MTE5ODI9c3RhdGljIGludCBfc2hvd19ncGlvX2RiZyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnN6KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMTUtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIwMTY6XFx0Zm9yIChpID0gMDsgaSBcXHUwMDNjIEJUQ19EQkdfTlVNOyBpKyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAxNy1cXHRcXHRpZiAoIShlbl9tYXAgXFx1MDAyNiBCSVQoaSkpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMjAtXFx0XFx0c2lnID0gdmVyLVxcdTAwM2VmY3hncGlvZGJnIFxcdTAwM2U9IDggPyBpIDogX2dldF9ncGlvc2lnX2Zvcl92ZXIocnR3ZGV2LCBpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMjAyMTpcXHRcXHRpZiAoc2lnIFxcdTAwM2U9IEJUQ19EQkdfTlVNKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDIyLVxcdFxcdFxcdGNvbnRpbnVlO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzExOT1lbnVtIGJ0Y193bF9ncGlvX2RlYnVnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzE1ODpcXHRCVENfREJHX05VTSxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTU5LX07XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTYxPXN0cnVjdCBydHc4OV9idGNfZmJ0Y19ncGlvX2RiZ192MSB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTY2LVxcdF9fbGUzMiBwcmVfc3RhdGU7IC8qIHRoZSBkZWJ1ZyBzaWduYWwgaXMgMSBvciAwICAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMxNjc6XFx0dTggZ3Bpb19tYXBbQlRDX0RCR19OVU1dOyAvKnRoZSBkZWJ1ZyBzaWduYWxzIHRvIEdQSU8tUG9zaXRpb24gKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTY4LX0gX19wYWNrZWQ7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTcwPXN0cnVjdCBydHc4OV9idGNfZmJ0Y19ncGlvX2RiZ192NyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTc1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMxNzY6XFx0dTggZ3Bpb19tYXBbQlRDX0RCR19OVU1dO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMxNzctXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ2OjUxLjUxNjg3NDU4MloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo4NzU3NTY1NDk2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZpeGluZyB0aGUgUmVhbHRlayBXaXJlbGVzcyBEcml2ZXIgT3V0LW9mLUJvdW5kcyBBY2Nlc3MqKlxuXG5Pa2F5LCBzbyB0aGUgaXNzdWUgc2VlbXMgdG8gYmUgaW4gYF9md19zZXRfZ3Bpb2AsIHNwZWNpZmljYWxseSB3aXRoaW4gYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jYC4gSSBjYW4gc2VlIHRoZSBjb2RlIG5vdywgYW5kIGl0IGxvb2tzIGxpa2UgaXQncyBwcmV2ZW50aW5nIGFuIG91dC1vZi1ib3VuZHMgYWNjZXNzLiBFc3NlbnRpYWxseSwgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGRlc2lnbmVkIHRvIG1ha2UgdGhlIGRyaXZlciBtb3JlIHJvYnVzdC4gSSdtIHRoaW5raW5nIHRoaXMgaXMgcmVhY2hhYmxlIHZpYSBVU0IgZHVtbXlfaGNkIGZ1enppbmcsIHdoaWNoIG1lYW5zIHRoZSBhdHRhY2sgdmVjdG9yIGlzIHByZXR0eSB3ZWxsIGRlZmluZWQuXG5cblRvIHJlcHJvZHVjZSBhbmQgdmVyaWZ5IHRoaXMgZml4LCBJIG5lZWQgdGhlIHJpZ2h0IGNvbmZpZ3VyYXRpb24uIExvb2tpbmcgYXQgaXQsIEknbGwgbmVlZCBgUlRXODlfVVNCYCBhbmQgb25lIG9mIHRoZSBzdXBwb3J0ZWQgVVNCIGRyaXZlcnMgbGlrZSBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTJCVWAsIGBSVFc4OV84ODUyQ1VgLCBgUlRXODlfODkyMkFVYCwgb3IgYFJUVzg5Xzg4NTFCVWAuIExldCBtZSBkb3VibGUtY2hlY2sgYGRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ2AgdG8gYmUgYWJzb2x1dGVseSBzdXJlLlxuXG5Pa2F5LCBsZXQncyBzZWUuIGBSVFc4OV84ODUyQVVgIHNlbGVjdHMgYFJUVzg5X0NPUkVgLCBgUlRXODlfVVNCYCwgYW5kIGBSVFc4OV84ODUyQWAuIFNvIGp1c3QgZW5hYmxpbmcgYFJUVzg5Xzg4NTJBVWAgc2hvdWxkIGJlIHN1ZmZpY2llbnQgZm9yIHZlcmlmaWNhdGlvbi4gSG93ZXZlciwgSSBzaG91bGQgYWxzbyBlbmFibGUgdGhlIG90aGVyIFVTQiBkcml2ZXJzLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGBSVFc4OV84OTIyQVVgLCBhbmQgYFJUVzg5Xzg4NTFCVWAsIGp1c3QgdG8gYmUgY29tcGxldGUuIEh1aCwgaXMgYFJUVzg5Xzg5MjJBVWAgbWlzc2luZyBmcm9tIHRoZSBLY29uZmlnIHNuaXBwZXQ/IExldCBtZSBkb3VibGUtY2hlY2sgdGhhdCBLY29uZmlnIGZpbGUuLi5cblxuXG4iLCJJbnB1dFRva2VucyI6MjY4NTYsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0MjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6MDAuMjc0NDQyNzI4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MjA5OTQ2OSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgUlRXODlfODkyMkFVXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTQ5PWNvbmZpZyBSVFc4OV84OTIyQUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2Mzpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjAwLjMyNjU0OTgxNVoiLCJTZXEiOjIzLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjE3ODM2NTEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkVuYWJsaW5nIFdpcmVsZXNzIERyaXZlcnMgXHUwMDI2IERlcGVuZGVuY2llcyoqXG5cbkFscmlnaHQsIGxldCdzIGdldCBkb3duIHRvIGJyYXNzIHRhY2tzLiBJIG5lZWQgdG8gZW5hYmxlIHN1cHBvcnQgZm9yIHRoZXNlIHNwZWNpZmljIFJlYWx0ZWsgd2lyZWxlc3MgY2hpcHNldHM6IGBSVFc4OV84ODUyQVVgLCBgUlRXODlfODg1MkJVYCwgYFJUVzg5Xzg4NTJDVWAsIGBSVFc4OV84OTIyQVVgLCBhbmQgYFJUVzg5Xzg4NTFCVWAuIEJlZm9yZSBJIGdvIGFueSBmdXJ0aGVyLCBJIHNob3VsZCB2ZXJpZnkgZGVwZW5kZW5jaWVzLiBCYXNlZCBvbiBteSBleHBlcmllbmNlLCBJJ20gZXhwZWN0aW5nIHRvIHNlZSBgTUFDODAyMTFgIGFuZCBgVVNCYCBwb3BwaW5nIHVwIGFzIHJlcXVpcmVtZW50cy4gTm93LCBJIG5lZWQgdG8gZ2V0IG15IGJlYXJpbmdzIGFuZCB1bmRlcnN0YW5kIHRoZSBpbnRlcm5hbCByZWxhdGlvbnNoaXBzLlxuXG5JIG5lZWQgdG8gcXVpY2tseSB6ZXJvIGluIG9uIHRoZSBrZXkgc3ltYm9scywgdGhlIGhlYXJ0IG9mIHRoZXNlIGRyaXZlcnMuIEdvaW5nIHRocm91Z2ggdGhlIHN5bWJvbHMgbGlzdCwgSSBzZWUgdGhhdCBmdW5jdGlvbnMgbGlrZSBgX2Z3X3NldF9ncGlvYCwgYF9zZXRfZXh0X2ludGVyZmFjZWAsIGFuZCBgX3NldF9pbml0X2luZm9gIGFyZSBkZWNsYXJlZCBhcyBgc3RhdGljYC4gVGhhdCBsaWtlbHkgbWVhbnMgdGhleSdyZSBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb25zLCBub3QgZGlyZWN0bHkgZXhwb3NlZCB0byBvdGhlciBtb2R1bGVzLiBPbiB0aGUgb3RoZXIgaGFuZCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGFuZCBgcnR3ODlfY29yZV9zdGFydGAgYXJlIG5vbi1zdGF0aWM7IHRoaXMgcG9pbnRzIHRvIHRoZW0gcGxheWluZyBhIG1vcmUgc2lnbmlmaWNhbnQgcm9sZSBpbiB0aGUgb3ZlcmFsbCBkcml2ZXIgYXJjaGl0ZWN0dXJlLCBwZXJoYXBzIGFzIGluaXRpYWxpemF0aW9uIG9yIGNvcmUgZnVuY3Rpb25hbGl0eS4gVGhlIGZ1bmN0aW9uIGBydHc4OV9vcHNfc3RhcnRgIGlzIHN0YXRpYy4gVGhhdCBtZWFucyBJIG5lZWQgdG8gZGlnIGludG8gYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGFuZCBgcnR3ODlfY29yZV9zdGFydGAgdG8gdW5kZXJzdGFuZCB0aGUgZmxvdy4gVGhvc2UgYXJlIHRoZSBvbmVzIEkgbmVlZCB0byBleGFtaW5lLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNzg5MywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIxMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NzowNS45NDQzODg2OTVaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjUxNDIyODM4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2J0Y19udGZ5X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODY5MD1zdGF0aWMgdm9pZCBfc2V0X2luaXRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3MjM6dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oPTMyMD12b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4Lmg6MzIxOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oLTMyMi12b2lkIHJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfaWR4LCB1OCBiYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY2NTg9aW50IHJ0dzg5X2NvcmVfc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjY5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo2Njk1OlxcdHJ0dzg5X2J0Y19udGZ5X2luaXQocnR3ZGV2LCBCVENfTU9ERV9OT1JNQUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjA1Ljk5NTgxNzYwM1oiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjMxNjc2NDAyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgc3VtbWFyaXplZCB0aG91Z2h0IHByb2Nlc3MsIGFzIGlmIEkgd2VyZSB0aGUgb25lIHRoaW5raW5nIGl0OlxuXG4qKkZvY3VzaW5nIEluIG9uIHRoZSBHUElPIEFzc2lnbm1lbnQqKlxuXG5BbHJpZ2h0LCBgcnR3ODlfYnRjX250ZnlfaW5pdGAgZmVlbHMgbGlrZSBhIHN0cm9uZyBsZWFkLiBUaGF0J3MgYSBzb2xpZCBmdW5jdGlvbiB0byB6ZXJvIGluIG9uLiBOb3csIG15IG5leHQgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIGRldGVybWluZSB0aGUgc2NvcGUgb2YgdGhpcyBHUElPIG1hbmlwdWxhdGlvbi4gSSBuZWVkIHRvIHF1aWNrbHkgaWRlbnRpZnkgYW55IGFsdGVybmF0aXZlIGVudHJ5IHBvaW50cyB0byB0aGUgYF9md19zZXRfZ3Bpb2AgZnVuY3Rpb24uIEkgYW0gZmFtaWxpYXIgd2l0aCB0aGUgY29tbW9uIGNvZGUtYmFzZXMgYW5kIHdvdWxkIGV4cGVjdCBhIGZldyBwb3NzaWJpbGl0aWVzLiBJJ2xsIG5lZWQgdG8gY2hlY2sgdGhlIGNhbGwgZ3JhcGggdG8gc2VlIHdoYXQgb3RoZXIgZnVuY3Rpb25zIGFyZSByZWFjaGluZyBvdXQgYW5kIHRvdWNoaW5nIGl0IGFzIHdlbGwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjI4OTY4LCJPdXRwdXRUb2tlbnMiOjQwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6MDkuMjI3NDk2NDY1WiIsIlNlcSI6MjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTg4MzY4MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX2Z3X3NldF9ncGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzMzpzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzQyNT1zdGF0aWMgdm9pZCBfc2V0X2V4dF9pbnRlcmZhY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0My1cXHRcXHRpZiAoYnQxX3N3X3R5cGUgXFx1MDAzZSBCVENfU1dJVENIX0lOVEVSTkFMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0NDpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VOX01BUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ1LVxcdFxcdFxcdFxcdCAgICAgQklUKEJUQ19EQkdfR05UX0JUMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0Ny1cXHRcXHRcXHR2YWwgPSAoYnQxX3N3X3R5cGUgXFx1MDAzY1xcdTAwM2MgOCkgKyBCVENfREJHX0dOVF9CVDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0ODpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX01VWF9NQVAsIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDUzLVxcdGlmIChjeC1cXHUwMDNlYnRfZXh0Lmh3X2NvZXggXFx1MDAyNiBCVENfRVhUU09DX0lOVEZfUFRBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NTQ6XFx0XFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfSFBUQSwgY3gtXFx1MDAzZWJ0X2V4dC5ocHRhX2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTctXFx0aWYgKGN4LVxcdTAwM2VidF9leHQuaHdfY29leCBcXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9NQlgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ1ODpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9ITUJYLCBjeC1cXHUwMDNlYnRfZXh0LmhtYnhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ2MS1cXHRpZiAoY3gtXFx1MDAzZWJ0X2V4dC5od19jb2V4IFxcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX1NXSU8pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDYyOlxcdFxcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX1NXT1VULCBjeC1cXHUwMDNlYnRfZXh0LnN3b3V0X2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ2MzpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9TV0lOLCBjeC1cXHUwMDNlYnRfZXh0LnN3aW5fY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDY0LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6MDkuNjI2MzM5NzI4WiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ4NjE5OTc4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBicmVha2Rvd24gb2YgdGhpcy5cblxuKipUcmFjaW5nIHRoZSBEZXBlbmRlbmN5IENoYWluKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgY29kZSBhbmQgdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgdGhlIGNyaXRpY2FsIGVudHJ5IHBvaW50LCB0aGUga2V5c3RvbmUgb2YgdGhlIGxvZ2ljLiBNeSBpbW1lZGlhdGUgaHVuY2ggaXMgdGhhdCBJIG5lZWQgdG8gem9vbSBpbiBvbiBgcnR3ODlfYnRjX250ZnlfaW5pdGAuIFRoZSBsb2dpYyBnb2VzIGxpa2UgdGhpczogYF9zZXRfZXh0X2ludGVyZmFjZWAgaXMgb25seSBldmVyIGNhbGxlZCBieSBgX2Z3X3NldF9ncGlvYC4gQW5kIGBfc2V0X2V4dF9pbnRlcmZhY2VgIGl0c2VsZiBpcyBvbmx5IGNhbGxlZCBmcm9tIGBfc2V0X2luaXRfaW5mb2AuIEFuZCBgX3NldF9pbml0X2luZm9gIGlzIG9ubHkgY2FsbGVkIGJ5IHRoYXQgYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGZ1bmN0aW9uLiBUaGF0IHNlZW1zIGxpa2UgYSBwcmV0dHkgY2xlYXIgZGVwZW5kZW5jeSBjaGFpbiwgbGVhZGluZyBtZSByaWdodCB0byBgcnR3ODlfYnRjX250ZnlfaW5pdGAgYXMgdGhlIHByaW1hcnkgZnVuY3Rpb24gb2YgaW50ZXJlc3QsIHRoZSBvbmUgZHJpdmluZyB0aGlzIGluaXRpYWxpemF0aW9uLiBCdXQgSSBuZWVkIHRvIGRvdWJsZS1jaGVjayB0aGF0IHRoaXMgaXNuJ3QgZ2V0dGluZyBjYWxsZWQgYXMgc29tZSBzb3J0IG9mIGhlbHBlciBmdW5jdGlvbiB3aXRoaW4gYW5vdGhlciBiaWdnZXIgc2NvcGUuIEkgc2hvdWxkIGNoZWNrIHdoZXJlIGBydHc4OV9idGNfbnRmeV9pbml0YCBpdHNlbGYgaXMgY2FsbGVkLCBqdXN0IHRvIGJlIHRob3JvdWdoLiBPa2F5LCBzbyBub3cgSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhhdCBmdW5jdGlvbiBpdHNlbGYgaXMgY2FsbGVkLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMDEzNCwiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NzoxNC40ODgzNDAzOTFaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU1MDIyNTk3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2J0Y19udGZ5X2luaXRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9ODY5MD1zdGF0aWMgdm9pZCBfc2V0X2luaXRfaW5mbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzIyLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjg3MjM6dm9pZCBydHc4OV9idGNfbnRmeV9pbml0KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggbW9kZSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy04NzI0LXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oPTMyMD12b2lkIHJ0dzg5X2J0Y19udGZ5X3Bvd2Vyb2ZmKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2Rldik7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4Lmg6MzIxOnZvaWQgcnR3ODlfYnRjX250ZnlfaW5pdChzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IG1vZGUpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5oLTMyMi12b2lkIHJ0dzg5X2J0Y19udGZ5X3NjYW5fc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBwaHlfaWR4LCB1OCBiYW5kKTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jPTY2NTg9aW50IHJ0dzg5X2NvcmVfc3RhcnQoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmMtNjY5NC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuYzo2Njk1OlxcdHJ0dzg5X2J0Y19udGZ5X2luaXQocnR3ZGV2LCBCVENfTU9ERV9OT1JNQUwpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5jLTY2OTYtXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjE0LjU0MzM2NzM0OFoiLCJTZXEiOjI5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0ODQ5ODAyMTYyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IExpbmUgb2YgSW5xdWlyeTogRm9jdXNpbmcgb24gcnR3ODlfY29yZV9zdGFydCBhbmQgYnRjX250ZnlfaW5pdCoqXG5cbk9rYXksIHNvIEknbSBob25pbmcgaW4gb24gdGhlIGluaXRpYWwgc3RhcnR1cCBwcm9jZXNzLCBzcGVjaWZpY2FsbHkgYHJ0dzg5X2NvcmVfc3RhcnRgLiBUaGF0IHNlZW1zIGxpa2UgdGhlIGNydWNpYWwgZW50cnkgcG9pbnQuIEFuZCBhbG9uZ3NpZGUgdGhhdCwgYHJ0dzg5X2J0Y19udGZ5X2luaXRgIGlzIGFsc28gYSBrZXkgc3ltYm9sIGZvciB0aGUgQmx1ZXRvb3RoIGNvLWV4aXN0ZW5jZSBub3RpZmljYXRpb24gaW5pdGlhbGl6YXRpb24uIEkgc2hvdWxkIHVzZSBib3RoIG9mIHRob3NlIGFzIG15IHByaW1hcnkgZm9jdXMgcG9pbnRzIGZvciBub3cuXG5cbk5vdywgbGV0J3MgbG9vayBhdCB0aGUgc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgaW52b2x2ZWQuIEknbSBzZWVpbmcgYFJUVzg5Xzg4NTJBVWAsIGBSVFc4OV84ODUyQlVgLCBgUlRXODlfODg1MkNVYCwgYFJUVzg5Xzg5MjJBVWAsIGFuZCBgUlRXODlfODg1MUJVYC4gSSBuZWVkIHRvIHZlcmlmeSBgUlRXODlfODkyMkFVYCBpcyBhY3R1YWxseSBkZWZpbmVkIGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcy4gUXVpY2sgY2hlY2suLi4gWWVwLCBpdCdzIHRoZXJlIGluIGBkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTYzYC4gR29vZC4gTm93LCBsZXQncyBzZWUgd2hhdCBvdGhlciBVU0Itc3BlY2lmaWMgY29uZmlndXJhdGlvbnMgZXhpc3QgYW5kIHNlZSBob3cgdGhleSBhcmUgb3JnYW5pemVkIHJlbGF0aXZlIHRvIHRoZXNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjozMTAyNywiT3V0cHV0VG9rZW5zIjo0NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjIwMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NzoxOS4zOTMxNzE5OFoiLCJTZXEiOjMwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDg3MDM1NzgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFJUVzg5Xy4qVSRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz00Nz1jb25maWcgUlRXODlfODg1MUJFXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjU4OmNvbmZpZyBSVFc4OV84ODUxQlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctNTktXFx0dHJpc3RhdGUgXFxcIlJlYWx0ZWsgODg1MUJVIFVTQiB3aXJlbGVzcyBuZXR3b3JrIChXaS1GaSA2KSBhZGFwdGVyXFxcIlxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnPTY5PWNvbmZpZyBSVFc4OV84ODUyQUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy03OS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6ODA6Y29uZmlnIFJUVzg5Xzg4NTJBVVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy04MS1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4ODUyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDYpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9OTE9Y29uZmlnIFJUVzg5Xzg4NTJCRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEwMi1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTAzOmNvbmZpZyBSVFc4OV84ODUyQlVcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTA0LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJCVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNikgYWRhcHRlclxcXCJcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZz0xMjc9Y29uZmlnIFJUVzg5Xzg4NTJDRVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTEzNy1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc6MTM4OmNvbmZpZyBSVFc4OV84ODUyQ1VcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWctMTM5LVxcdHRyaXN0YXRlIFxcXCJSZWFsdGVrIDg4NTJDVSBVU0Igd2lyZWxlc3MgbmV0d29yayAoV2ktRmkgNkUpIGFkYXB0ZXJcXFwiXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L0tjb25maWc9MTQ5PWNvbmZpZyBSVFc4OV84OTIyQUVcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvS2NvbmZpZy0xNjItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnOjE2Mzpjb25maWcgUlRXODlfODkyMkFVXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9LY29uZmlnLTE2NC1cXHR0cmlzdGF0ZSBcXFwiUmVhbHRlayA4OTIyQVUgVVNCIHdpcmVsZXNzIG5ldHdvcmsgKFdpLUZpIDcpIGFkYXB0ZXJcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjE5LjQ0MTg4NDM2OVoiLCJTZXEiOjMxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1NjM3MDQ3NDgwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEZ1enppbmcgU3RyYXRlZ3k6IEFkZHJlc3NpbmcgdGhlIE91dC1vZi1Cb3VuZHMgSXNzdWUqKlxuXG5BbHJpZ2h0LCBsZXQncyBzZWUuIEkgbmVlZCB0byBnZXQgdGhlc2UgY29uZmlndXJhdGlvbnMgaW4gcGxhY2U6IGBSVFc4OV84ODUxQlVgLCBgUlRXODlfODg1MkFVYCwgYFJUVzg5Xzg4NTJCVWAsIGBSVFc4OV84ODUyQ1VgLCBhbmQgYFJUVzg5Xzg5MjJBVWAuIFRoZXkgYWxsIG5lZWQgdG8gYmUgYWRkZWQgdG8gRW5hYmxlQ29uZmlncy4gQW5kIGRvbid0IGZvcmdldCBgUlRXODlfVVNCYCDigJMgaXQncyBjcnVjaWFsIGhlcmUuIFRoaXMgaXMgYWxsIGFib3V0IGEgZml4IGZvciB0aGF0IG5hc3R5IG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIGlzc3VlIEkgZm91bmQgaW4gYF9md19zZXRfZ3Bpb2AuIE5vdywgYmVjYXVzZSB0aGUgZHJpdmVyIGlzIGFjY2Vzc2libGUgdmlhIFVTQiwgdGhlIHBsYW4ncyBjbGVhcjogYFdvcnRoRnV6emluZz10cnVlYC4gR290dGEgZ2V0IHRob3NlIGZ1enplcnMgcnVubmluZyB0byByZWFsbHkgZGlnIGludG8gdGhpcyB2dWxuZXJhYmlsaXR5LlxuXG5cbiIsIklucHV0VG9rZW5zIjozMjIzNCwiT3V0cHV0VG9rZW5zIjoyMjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6MjUuMDc4OTM1MjM4WiIsIlNlcSI6MzIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6ODE1MjU2ODYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84ODUyQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJDVVwiLFxuICAgIFwiUlRXODlfODkyMkFVXCIsXG4gICAgXCJSVFc4OV9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9idGNfbnRmeV9pbml0XCIsXG4gICAgXCJydHc4OV9jb3JlX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gYF9md19zZXRfZ3Bpb2Agd2l0aGluIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGZ1enppbmcgKGR1bW15X2hjZCkuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiAoYHJ0dzg5X2J0Y19udGZ5X2luaXRgIC1cXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVxcdTAwM2UgYF9zZXRfZXh0X2ludGVyZmFjZWAgLVxcdTAwM2UgYF9md19zZXRfZ3Bpb2ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIlJUVzg5Xzg4NTFCVVwiLFxuICAgIFwiUlRXODlfODg1MkFVXCIsXG4gICAgXCJSVFc4OV84ODUyQlVcIixcbiAgICBcIlJUVzg5Xzg4NTJDVVwiLFxuICAgIFwiUlRXODlfODkyMkFVXCIsXG4gICAgXCJSVFc4OV9VU0JcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJydHc4OV9idGNfbnRmeV9pbml0XCIsXG4gICAgXCJydHc4OV9jb3JlX3N0YXJ0XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYW4gb3V0LW9mLWJvdW5kcyBhcnJheSBhY2Nlc3MgaW4gYF9md19zZXRfZ3Bpb2Agd2l0aGluIHRoZSBSZWFsdGVrIHJ0dzg5IHdpcmVsZXNzIGRyaXZlci4gVGhlIGRyaXZlciBzdXBwb3J0cyBVU0IgaW50ZXJmYWNlcyBhbmQgaXMgcmVhY2hhYmxlIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyB2aWEgVVNCIGZ1enppbmcgKGR1bW15X2hjZCkuIFRoZSBtb2RpZmllZCBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIGRyaXZlciBpbml0aWFsaXphdGlvbiAoYHJ0dzg5X2J0Y19udGZ5X2luaXRgIC1cXHUwMDNlIGBfc2V0X2luaXRfaW5mb2AgLVxcdTAwM2UgYF9zZXRfZXh0X2ludGVyZmFjZWAgLVxcdTAwM2UgYF9md19zZXRfZ3Bpb2ApLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0NzoyNS4xNjA0NjgyOTVaIiwiU2VxIjozMywiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJJZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE1MTgwMDE0NDY3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjI1LjE2MTA0NTIxNVoiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxNTE3OTk1NjM4OTAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIktNU0FOUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGZpeGVzIGEgbG9naWMgYnVnIGluIGBfZndfc2V0X2dwaW9gIHdoZXJlIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCB3YXMgaW5jb3JyZWN0bHkgY2hlY2tlZCBhZ2FpbnN0IGAweGZmYCBpbnN0ZWFkIG9mIGBcXHUwMDNlPSBCVENfREJHX05VTWAuIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyBgQlRDX0RCR19OVU1gICh3aGljaCBpcyAzMikgb24gZXJyb3IuIEJlY2F1c2Ugb2YgdGhlIGluY29ycmVjdCBjaGVjaywgdGhlIGVycm9yIHZhbHVlIHdhcyBub3QgY2F1Z2h0IGFuZCB3YXMgc2VudCB0byB0aGUgZmlybXdhcmUgYXMgYSB2YWxpZCBzaWduYWwgSUQuIFRoaXMgZG9lcyBub3QgaW52b2x2ZSBhbnkgdW5pbml0aWFsaXplZCBtZW1vcnkuIEFsbCBmaWVsZHMgb2YgdGhlIGBncGlvLVxcdTAwM2VtdXguZGF0YWAgc3RydWN0dXJlIGFyZSBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBjb3BpZWQgdG8gdGhlIGJ1ZmZlciBhbmQgc2VudCB0byB0aGUgZmlybXdhcmUuIFRoZXJlZm9yZSwgdGhpcyBidWcgY2Fubm90IGJlIGRldGVjdGVkIGJ5IEtNU0FOLCBhbmQgYSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGlzIG5vdCBqdXN0aWZpZWQuXCIsXG4gIFwiTmVlZHNLTVNBTlwiOiBmYWxzZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIHNlY3VyaXR5IGVuZ2luZWVyIHNwZWNpYWxpemluZyBpbiBrZXJuZWwgbWVtb3J5XG5lcnJvciBkZXRlY3RvcnMgKEtBU0FOIGFuZCBLTVNBTikuIFlvdXIgam9iIGlzIHRvIHJldmlldyB0aGUgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZFxuZGV0ZXJtaW5lIGlmIHRoZSBjb2RlIGNoYW5nZXMganVzdGlmeSBzcGF3bmluZyBhIGRlZGljYXRlZCBLTVNBTiAoS2VybmVsTWVtb3J5U2FuaXRpemVyKVxuZnV6emluZyBzZXNzaW9uIGluIGFkZGl0aW9uIHRvIHN0YW5kYXJkIEtBU0FOIGZ1enppbmcuXG5cbkNSSVRJQ0FMIERJU1RJTkNUSU9OIEJFVFdFRU4gS0FTQU4gQU5EIEtNU0FOOlxuLSBTdGFuZGFyZCBLQVNBTiBrZXJuZWwgYnVpbGRzICh1cHN0cmVhbS1hcHBhcm1vci1rYXNhbi5jb25maWcpIGFscmVhZHkgZW5hYmxlXG4gIGEgY29tcHJlaGVuc2l2ZSBzdWl0ZSBvZiBkZWJ1Z2dpbmcgdG9vbHMgYW5kIHNhbml0aXplcnMsIGluY2x1ZGluZyBLQVNBTlxuICAob3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdXNlLWFmdGVyLWZyZWUsIGRvdWJsZSBmcmVlLCBpbnZhbGlkIGZyZWUpLCBMT0NLREVQXG4gIChsb2NraW5nIGJ1Z3MgYW5kIGRlYWRsb2NrcyksIFVCLXNhbml0aXplcnMsIGFuZCBtZW1vcnkgY29ycnVwdGlvbiBjaGVja3MuXG4tIEtNU0FOIChLZXJuZWxNZW1vcnlTYW5pdGl6ZXIpIGRldGVjdHMgcmVhZHMgb2YgVU5JTklUSUFMSVpFRCBtZW1vcnkgKHN0YWNrLCBoZWFwLFxuICBvciBwYWdlIGFsbG9jYXRpb25zKSBhbmQga2VybmVsLXRvLXVzZXIgbWVtb3J5IGluZm8tbGVha3MuXG5cblJ1bGU6IFRIRVJFIElTIE5PIFNFTlNFIElOIFJVTk5JTkcgQSBLTVNBTiBTRVNTSU9OIElGIEEgQlVHIENBTiBCRSBDQVVHSFQgQlkgS0FTQU4sXG5MT0NLREVQLCBPUiBPVEhFUiBTVEFOREFSRCBCVUcgREVURUNUT1JTLlxuQSBkZWRpY2F0ZWQgS01TQU4gZnV6emluZyBzZXNzaW9uIGluY3VycyBzaWduaWZpY2FudCByZXNvdXJjZSBjb3N0cy4gWW91IG11c3QgT05MWVxuc2V0IE5lZWRzS01TQU49dHJ1ZSBpZiB0aGUgY29kZSBjaGFuZ2VzIGludHJvZHVjZSBvciBleHBvc2UgVU5JTklUSUFMSVpFRCBNRU1PUlkgcmlza3NcbnRoYXQgYXJlIGRldGVjdGVkIE9OTFkgYnkgS01TQU4uXG5cbkxvb2sgaG9saXN0aWNhbGx5IGF0IHRoZSBwYXRjaCBzZXJpZXMgYW5kIHN1cnJvdW5kaW5nIGNvZGUuIEV2ZW4gaWYgbm8gZGlyZWN0XG51bmluaXRpYWxpemVkIGZpZWxkIGFjY2Vzc2VzIG9yIG5ldyBidWZmZXIgYWxsb2NhdGlvbnMgYXJlIGFkZGVkIGluIHRoZSBkaWZmIGl0c2VsZixcbmEgcGF0Y2ggbWF5IGFsdGVyIGNvbnRyb2wgZmxvdywgYm91bmRzIGNoZWNraW5nLCBvciBkYXRhIGxlbmd0aCBjYWxjdWxhdGlvbnMgaW4gd2F5c1xudGhhdCBjaGFuZ2UgaG93IHRoZSByZXN0IG9mIHRoZSBjb2RlIG9wZXJhdGVzIG9uIGV4aXN0aW5nIGJ1ZmZlcnMgKGUuZy4gYWxsb3dpbmdcbnVuaW5pdGlhbGl6ZWQgc3RhY2svaGVhcCBtZW1vcnkgdG8gYmUgcmVhZCwgY29waWVkIHRvIHVzZXIgc3BhY2UsIG9yIHVzZWQgaW4gY29udHJvbFxuZmxvdykuIERvIG5vdCBoZXNpdGF0ZSB0byB1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlLFxuY2FsbGVkIGZ1bmN0aW9ucywgYW5kIGNhbGxlcnMuXG5cblNldCBOZWVkc0tNU0FOPXRydWUgT05MWSBJRiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBvciBtb2RpZmllczpcbjEuIEtlcm5lbCBzdHJ1Y3R1cmVzIHNlbnQgdG8gdXNlciBzcGFjZSAodmlhIGNvcHlfdG9fdXNlciwgcHV0X3VzZXIsIG5ldGxpbmsgc2tiXG4gICBhdHRyaWJ1dGVzLCBpb2N0bCBvdXRwdXQgYXJndW1lbnRzLCBzb2NrZXQgb3B0aW9ucywgb3IgQlBGIGJ1ZmZlcnMpIHdoZXJlIGZpZWxkc1xuICAgb3Igc3RydWN0dXJlIHBhZGRpbmcgbWlnaHQgbm90IGJlIGZ1bGx5IGluaXRpYWxpemVkL3plcm9lZC5cbjIuIENvbmRpdGlvbmFsIGxvZ2ljIG9yIGJyYW5jaGluZyB0aGF0IGRlcGVuZHMgb24gcG90ZW50aWFsbHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZXNcbiAgIG9yIHN0cnVjdCBmaWVsZHMuXG4zLiBBbGxvY2F0aW9uIG9yIGluaXRpYWxpemF0aW9uIG9mIGNvbXBsZXggZGF0YSBzdHJ1Y3R1cmVzIHdoZXJlIHVuaW5pdGlhbGl6ZWQgZmllbGRzXG4gICBjb3VsZCBiZSByZWFkIGxhdGVyIGluIHJlYWNoYWJsZSBjb2RlIHBhdGhzLlxuNC4gQm91bmRzIGNoZWNrcywgbGVuZ3Rocywgb3IgbG9naWMgaW4gYSB3YXkgdGhhdCBhbGxvd3Mgc3Vycm91bmRpbmcgY29kZSB0byBhY2Nlc3NcbiAgIHVuaW5pdGlhbGl6ZWQgYnl0ZXMgb2YgZXhpc3RpbmcgYnVmZmVycy5cblxuU2V0IE5lZWRzS01TQU49ZmFsc2UgSUY6XG4tIFRoZSBjb2RlIGNoYW5nZXMgcHJpbWFyaWx5IHJpc2sgb3V0LW9mLWJvdW5kcyBhY2Nlc3MsIGFycmF5IG92ZXJmbG93cywgTlVMTCBwb2ludGVyXG4gIGRlcmVmZXJlbmNlcywgbG9ja2luZyBkZWFkbG9ja3MsIG9yIHVzZS1hZnRlci1mcmVlIGJ1Z3MgKHRoZXNlIGFyZSBhbHJlYWR5IGNhdWdodFxuICBieSBLQVNBTiwgTE9DS0RFUCwgb3Igc3RhbmRhcmQgYnVnIGRldGVjdG9ycykuXG4tIEFsbCBzdGFjay9oZWFwIHN0cnVjdHVyZXMgdG91Y2hlZCBvciBpbnRyb2R1Y2VkIGJ5IHRoZSBwYXRjaCBhcmUgZnVsbHkgemVyb2VkXG4gIG9yIGluaXRpYWxpemVkIChlLmcuIHVzaW5nID0gezB9LCBtZW1zZXQsIGt6YWxsb2MpIGJlZm9yZSBiZWluZyByZWFkIG9yIGNvcGllZC5cbi0gVGhlIHBhdGNoIGRvZXMgbm90IGludHJvZHVjZSBhbnkgcmlzayBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSB1c2FnZSBvciBpbmZvLWxlYWtzLlxuXG5Vc2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBpbnNwZWN0IHRoZSBzdXJyb3VuZGluZyBjb2RlIGlmIG5lY2Vzc2FyeSwgdGhlbiBwcm92aWRlXG5kZXRhaWxlZCBLTVNBTlJlYXNvbmluZyBjb250cmFzdGluZyBLQVNBTiB2cyBLTVNBTiBhcHBsaWNhYmlsaXR5IGZvciB0aGlzIHBhdGNoLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgOWZiMjg5YTYzZTE4ZTVhZTJhYTI0MTllOWMwNmI1ZGI5NGMxY2QyZVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBXZWQgQXVnIDI2IDAzOjQ2OjA3IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuaW5kZXggNWE5ZGM0ZDhhMDBiYS4uMTJiZDU1MzllOGM2ZCAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXG4rKysgYi9kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1xuQEAgLTMzNjUsNyArMzM2NSw3IEBAIHN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXG4gXHRcdGdwaW8tXHUwMDNlbXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xuIFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLnNpZyA9IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldixcbiBcdFx0XHRcdFx0XHRcdCAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCkpO1xuLVx0XHRpZiAoZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgPT0gMHhmZilcbitcdFx0aWYgKGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnIFx1MDAzZT0gQlRDX0RCR19OVU0pXG4gXHRcdFx0cmV0dXJuO1xuIFx0XHRncGlvLVx1MDAzZW11eC5kYXRhLmdwaW8gPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XG4gXHRcdGwyX2gyYyA9IGdwaW8tXHUwMDNlbXV4LmZtdDtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjI1LjE2MTA0NjI3NVoiLCJTZXEiOjM1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjQ3MDIwODM1NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBSZWFsdGVrIFdpLUZpIERyaXZlciBQYXRjaCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBjb2V4LmNgIHBhdGNoLiBJIHNlZSBhIGNvbmRpdGlvbiBjaGFuZ2UgcmlnaHQgYXdheTogYSBjb21wYXJpc29uIHRoYXQncyBnb25lIGZyb20gY2hlY2tpbmcgZm9yIGFuIGV4YWN0IHZhbHVlIG9mIGAweGZmYCB0byBhIGdyZWF0ZXItdGhhbi1vci1lcXVhbC10byBjaGVjayBhZ2FpbnN0IGBCVENfREJHX05VTWAuIE15IGluaXRpYWwgdGhvdWdodCBpcywgdGhpcyAqaGFzKiB0byBiZSBzb21lIGtpbmQgb2YgYm91bmRzIGNoZWNrIG9yIHZhbGlkYXRpb24gbG9naWMuIFRoZSBvcmlnaW5hbCBjb2RlIHdhcyBsaWtlbHkgdHJ5aW5nIHRvIGZpbHRlciBvdXQgYSBzcGVjaWZpYywgbGlrZWx5IGludmFsaWQsIHNpZ25hbCB2YWx1ZSwgYW5kIG5vdyBpdCdzIGdlbmVyYWxpemluZyB0aGF0IHRvIGEgcmFuZ2UuIEl0IG1ha2VzIG1lIHdvbmRlciB3aGF0IHRoZSBwdXJwb3NlIG9mIHRoZSBvcmlnaW5hbCBzcGVjaWZpYyBjaGVjayB3YXMuXG5cblRvIHVuZGVyc3RhbmQgdGhlIGNoYW5nZSdzIGltcGxpY2F0aW9ucyBmdWxseSwgSSBuZWVkIHRvIHNlZSBob3cgYGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnYCBpcyBiZWluZyB1c2VkIGFuZCB3aGF0IHRoZSBjb250ZXh0IG9mIHRoYXQgYDB4ZmZgIHZhbHVlIHdhcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIGBCVENfREJHX05VTWAgcmVwcmVzZW50cywgYW5kIHdoYXQgdGhlIHJhbmdlIGNvbXBhcmlzb24gaXMgaW50ZW5kZWQgdG8gZG8uXG5cblNvLCBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHN1cnJvdW5kaW5nIGNvZGUsIGZvY3VzaW5nIG9uIHRoZSBmdW5jdGlvbnMgYF9md19zZXRfZ3Bpb2AgYW5kIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAuIFRob3NlIGFyZSBteSBuZXh0IHN0ZXBzLiBUaGV5IHNob3VsZCByZXZlYWwgdGhlIGRhdGEgZmxvdyBhbmQgdGhlIG1lYW5pbmcgb2YgdGhvc2UgR1BJTyBzaWduYWxzLiBGcm9tIHRoZXJlLCBJIGNhbiBkZXRlcm1pbmUgaWYgdGhlIGNoYW5nZSBpcyBhIGJ1ZyBmaXgsIGFuIG9wdGltaXphdGlvbiwgb3IsIHBvdGVudGlhbGx5LCBhIGZ1bmN0aW9uYWwgY2hhbmdlIHRvIHRoZSBjb2V4aXN0ZW5jZSBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA5MywiT3V0cHV0VG9rZW5zIjo0NCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyMSwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ3OjM3LjYzMTI1Njg4MVoiLCJTZXEiOjM2LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTMzNTE3NjgsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiX2Z3X3NldF9ncGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzItXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzMzpzdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzQte1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzQyNT1zdGF0aWMgdm9pZCBfc2V0X2V4dF9pbnRlcmZhY2Uoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0My1cXHRcXHRpZiAoYnQxX3N3X3R5cGUgXFx1MDAzZSBCVENfU1dJVENIX0lOVEVSTkFMKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0NDpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VOX01BUCxcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDQ1LVxcdFxcdFxcdFxcdCAgICAgQklUKEJUQ19EQkdfR05UX0JUMSkpO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0Ny1cXHRcXHRcXHR2YWwgPSAoYnQxX3N3X3R5cGUgXFx1MDAzY1xcdTAwM2MgOCkgKyBCVENfREJHX0dOVF9CVDE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ0ODpcXHRcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX01VWF9NQVAsIHZhbCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ0OS1cXHRcXHR9XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDUzLVxcdGlmIChjeC1cXHUwMDNlYnRfZXh0Lmh3X2NvZXggXFx1MDAyNiBCVENfRVhUU09DX0lOVEZfUFRBKVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjM0NTQ6XFx0XFx0X2Z3X3NldF9ncGlvKHJ0d2RldiwgQ1hER1BJT19FWFRfSFBUQSwgY3gtXFx1MDAzZWJ0X2V4dC5ocHRhX2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ1NS1cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTM0NTctXFx0aWYgKGN4LVxcdTAwM2VidF9leHQuaHdfY29leCBcXHUwMDI2IEJUQ19FWFRTT0NfSU5URl9NQlgpXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ1ODpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9ITUJYLCBjeC1cXHUwMDNlYnRfZXh0LmhtYnhfY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDU5LVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzQ2MS1cXHRpZiAoY3gtXFx1MDAzZWJ0X2V4dC5od19jb2V4IFxcdTAwMjYgQlRDX0VYVFNPQ19JTlRGX1NXSU8pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozNDYyOlxcdFxcdF9md19zZXRfZ3BpbyhydHdkZXYsIENYREdQSU9fRVhUX1NXT1VULCBjeC1cXHUwMDNlYnRfZXh0LnN3b3V0X2NmZyk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzQ2MzpcXHRcXHRfZndfc2V0X2dwaW8ocnR3ZGV2LCBDWERHUElPX0VYVF9TV0lOLCBjeC1cXHUwMDNlYnRfZXh0LnN3aW5fY2ZnKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zNDY0LVxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6MzcuNjg0NjE3NDA5WiIsIlNlcSI6MzcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjk1MjY0ODAwODQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHByZXNlbnRlZCBhcyBpZiBpdCB3ZXJlIG15IG93biBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyBgX2Z3X3NldF9ncGlvYCoqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW4uIE15IG1pbmQgaW1tZWRpYXRlbHkgd2VudCB0byB0aGF0IGBfZndfc2V0X2dwaW9gIGZ1bmN0aW9uLiBJdCdzIHVzdWFsbHkgYSBnb29kIGJldCwgZ2l2ZW4gdGhlIGxpbmUgbnVtYmVyIHJlZmVyZW5jZSAoMzM2NSksIHRoYXQgaXQncyBkZWFsaW5nIHdpdGggc29tZSBsb3ctbGV2ZWwgaGFyZHdhcmUgaW50ZXJhY3Rpb24gd2l0aGluIHRoZSBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIGFzc3VtcHRpb24gaXMgdGhhdCBpdCdzIGEga2V5IGZ1bmN0aW9uIGZvciBjb25maWd1cmluZyBvciBjb250cm9sbGluZyBhIEdQSU8gKEdlbmVyYWwgUHVycG9zZSBJbnB1dC9PdXRwdXQpIHBpbiDigJMgaXQncyBwcmFjdGljYWxseSBpbiB0aGUgbmFtZSwgYWZ0ZXIgYWxsISBLbm93aW5nIHRoYXQgR1BJT3MgYXJlIGZ1bmRhbWVudGFsIGZvciBpbnRlcmZhY2luZyB3aXRoIGV4dGVybmFsIGNvbXBvbmVudHMsIHNlbnNvcnMsIG9yIG90aGVyIGhhcmR3YXJlLCBJIGV4cGVjdCB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgY3JpdGljYWwgdG8gdGhlIG92ZXJhbGwgc3lzdGVtJ3MgYmVoYXZpb3IgYW5kIGNvdWxkIGJlIGNlbnRyYWwgdG8gbXkgaW52ZXN0aWdhdGlvbi4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgaXRzIHB1cnBvc2UsIGhvdyBpdCdzIHVzZWQgd2l0aGluIHRoZSBicm9hZGVyIGNvZGUgY29udGV4dCwgYW5kIHdoYXQgZGF0YSBzdHJ1Y3R1cmVzIGl0IG1pZ2h0IG1hbmlwdWxhdGUuIEZyb20gdGhlIGxpbmUgbnVtYmVyLCBJJ20gZXhwZWN0aW5nIHRoaXMgaXMgYSBjb3JlIGZ1bmN0aW9uLCBwcm9iYWJseSB1c2VkIG1hbnkgcGxhY2VzLCBtYWtpbmcgaXQgYW4gaWRlYWwgc3RhcnRpbmcgcG9pbnQgZm9yIGEgZGVlcCBkaXZlLiBMZXQncyBzZWUgd2hhdCdzIHdoYXQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjM0OTMsIk91dHB1dFRva2VucyI6NDcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0Nzo0Ny4yMTExMDAyMDNaIiwiU2VxIjozOCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDAxNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMzMzMsXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMzMzM6XFx0c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcXG4zMzM0OlxcdHtcXG4zMzM1OlxcdFxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG4zMzM2OlxcdFxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3BpbyAqZ3BpbyA9IFxcdTAwMjZidGMtXFx1MDAzZWdwaW87XFxuMzMzNzpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuMzMzODpcXHRcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIgbDJfaDJjO1xcbjMzMzk6XFx0XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXzRiIGw0X2gyYztcXG4zMzQwOlxcdFxcdHU4IGdwaW9fdmVyID0gdmVyLVxcdTAwM2VmY3hncGlvZGJnO1xcbjMzNDE6XFx0XFx0dTggYnVmW3NpemVvZihsNF9oMmMpXTtcXG4zMzQyOlxcdFxcdHU4IGxlbjtcXG4zMzQzOlxcdFxcbjMzNDQ6XFx0XFx0aWYgKGdwaW9fdmVyIFxcdTAwM2MgOCBcXHUwMDI2XFx1MDAyNiB0eXBlIFxcdTAwM2UgQ1hER1BJT19NVVhfTUFQKVxcbjMzNDU6XFx0XFx0XFx0cmV0dXJuO1xcbjMzNDY6XFx0XFxuMzM0NzpcXHRcXHRpZiAodHlwZSBcXHUwMDNlPSBDWERHUElPX01BWClcXG4zMzQ4OlxcdFxcdFxcdHJldHVybjtcXG4zMzQ5OlxcdFxcbjMzNTA6XFx0XFx0c3dpdGNoICh0eXBlKSB7XFxuMzM1MTpcXHRcXHRjYXNlIENYREdQSU9fRU5fTUFQOiAvKiBHUElPIGRlYnVnIHNpZ25hbCBlbi1tYXAgMH4zMSAqL1xcbjMzNTI6XFx0XFx0XFx0dmFsID0gX2NvbnZlcnRfZ3Bpb19lbm1hcF90b192ZXIocnR3ZGV2LCB2YWwpO1xcbjMzNTM6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZW5fbWFwLmRhdGEudHlwZSA9IENYREdQSU9fRU5fTUFQO1xcbjMzNTQ6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZW5fbWFwLmRhdGEuZnZlciA9IGdwaW9fdmVyO1xcbjMzNTU6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZW5fbWFwLmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0w0O1xcbjMzNTY6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZW5fbWFwLmRhdGEuZW5fbWFwID0gdmFsO1xcbjMzNTc6XFx0XFx0XFx0bDRfaDJjID0gZ3Bpby1cXHUwMDNlZW5fbWFwLmZtdDtcXG4zMzU4OlxcdFxcdFxcdHB1dF91bmFsaWduZWRfbGUzMih2YWwsICh1MzIgKilsNF9oMmMuZGF0YSk7XFxuMzM1OTpcXHRcXHRcXHRtZW1jcHkoYnVmLCBcXHUwMDI2bDRfaDJjLCBzaXplb2YobDRfaDJjKSk7XFxuMzM2MDpcXHRcXHRcXHRsZW4gPSBzaXplb2YobDRfaDJjKTtcXG4zMzYxOlxcdFxcdFxcdGJyZWFrO1xcbjMzNjI6XFx0XFx0Y2FzZSBDWERHUElPX01VWF9NQVA6IC8qIEdQSU8gZGJnOiBTaWduYWwgdG8gR1BJTyBNdXggKi9cXG4zMzYzOlxcdFxcdFxcdGdwaW8tXFx1MDAzZW11eC5kYXRhLnR5cGUgPSBDWERHUElPX01VWF9NQVA7XFxuMzM2NDpcXHRcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5mdmVyID0gZ3Bpb192ZXI7XFxuMzM2NTpcXHRcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5kbGVuID0gQ1hER1BJT19TRVRfTDI7XFxuMzM2NjpcXHRcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5zaWcgPSBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsXFxuMzM2NzpcXHRcXHRcXHRcXHRcXHRcXHRcXHRcXHQgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpKTtcXG4zMzY4OlxcdFxcdFxcdGlmIChncGlvLVxcdTAwM2VtdXguZGF0YS5zaWcgXFx1MDAzZT0gQlRDX0RCR19OVU0pXFxuMzM2OTpcXHRcXHRcXHRcXHRyZXR1cm47XFxuMzM3MDpcXHRcXHRcXHRncGlvLVxcdTAwM2VtdXguZGF0YS5ncGlvID0gRklFTERfR0VUKEdFTk1BU0soMTUsIDgpLCB2YWwpO1xcbjMzNzE6XFx0XFx0XFx0bDJfaDJjID0gZ3Bpby1cXHUwMDNlbXV4LmZtdDtcXG4zMzcyOlxcdFxcdFxcdG1lbWNweShidWYsIFxcdTAwMjZsMl9oMmMsIHNpemVvZihsMl9oMmMpKTtcXG4zMzczOlxcdFxcdFxcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xcbjMzNzQ6XFx0XFx0XFx0YnJlYWs7XFxuMzM3NTpcXHRcXHRjYXNlIENYREdQSU9fRVhUX0hQVEE6IC8qIEdQSU8gY29uZmlnIGZvciBFeHQgSFctUFRBICovXFxuMzM3NjpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEudHlwZSA9IENYREdQSU9fRVhUX0hQVEE7XFxuMzM3NzpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEuZnZlciA9IGdwaW9fdmVyO1xcbjMzNzg6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3B0YS5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcXG4zMzc5OlxcdFxcdFxcdGdwaW8tXFx1MDAzZWV4dF9wdGEuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XFxuMzM4MDpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEubWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XFxuMzM4MTpcXHRcXHRcXHRsMl9oMmMgPSBncGlvLVxcdTAwM2VleHRfcHRhLmZtdDtcXG4zMzgyOlxcdFxcdFxcdG1lbWNweShidWYsIFxcdTAwMjZsMl9oMmMsIHNpemVvZihsMl9oMmMpKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDc6NDcuMjExNTA0MTMzWiIsIlNlcSI6MzksIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5OTQ0MjA3MzQyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBCdWcgRml4KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGNoYW5nZSBhbmQgaW1tZWRpYXRlbHkgcmVjb2duaXplIGl0IGFzIGEgYm91bmRzIGNoZWNrLiBUaGUgb3JpZ2luYWwgY29kZSB3YXMgcHJldHR5IHNsb3BweSwgb25seSBjaGVja2luZyBmb3IgYSBzcGVjaWZpYyB2YWx1ZSAoMHhmZikgaW4gYGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnYC4gTXkgZmllbGQgZXhwZXJpZW5jZSBpcyB0aGF0IHRoaXMgaXMgdXN1YWxseSBhIHN5bXB0b20gb2YgYSBsYXJnZXIgcHJvYmxlbS4gVGhlIGNoYW5nZSBpcyByZXBsYWNpbmcgaXQgd2l0aCBhIG1vcmUgcm9idXN0IGNoZWNrOiBgZ3Bpby1cdTAwM2VtdXguZGF0YS5zaWcgXHUwMDNlPSBCVENfREJHX05VTWAuIFRoYXQgYEJUQ19EQkdfTlVNYCBjb25zdGFudCBpcyB0aGUga2V5IGhlcmUuIEl0J3MgYWxtb3N0IGNlcnRhaW5seSBkZWZpbmluZyBhbiB1cHBlciBib3VuZCBvbiB3aGF0J3MgY29uc2lkZXJlZCBhIHZhbGlkIHNpZ25hdHVyZSB2YWx1ZS4gR29vZCwgdGhhdCdzIHdoYXQgSSB3YW50IHRvIHNlZSDigJMgcHJvcGVyIHZhbGlkYXRpb24uXG5cbk5vdyBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgbG9naWMuIFdoYXQgZGlkIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJuPyBJIHdvdWxkIHN1c3BlY3QgYSByYW5nZSB0byBlbnN1cmUgc2FmZXR5LiBUaGlzIGlzIGFuIGltcHJvdmVtZW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo0OTIxLCJPdXRwdXRUb2tlbnMiOjQ4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6ODYsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0ODoxNy4xNTU3MTQwMjVaIiwiU2VxIjo0MCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjM1Mzg3Mzg1NSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJfZ2V0X2dwaW9zaWdfZm9yX3ZlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjEwPXN0YXRpYyB2b2lkIF9md19zZXRfcG9saWN5KHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTE2IHBvbGljeV90eXBlLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI2MC1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMjYxOnN0YXRpYyB1OCBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHNpZ192OClcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjYyLXtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjUtXFx0XFx0Z3Bpby1cXHUwMDNlbXV4LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzNjY6XFx0XFx0Z3Bpby1cXHUwMDNlbXV4LmRhdGEuc2lnID0gX2dldF9ncGlvc2lnX2Zvcl92ZXIocnR3ZGV2LFxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNjctXFx0XFx0XFx0XFx0XFx0XFx0XFx0ICBGSUVMRF9HRVQoR0VOTUFTSyg3LCAwKSwgdmFsKSk7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xMTk4Mj1zdGF0aWMgaW50IF9zaG93X2dwaW9fZGJnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAxOS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMjAyMDpcXHRcXHRzaWcgPSB2ZXItXFx1MDAzZWZjeGdwaW9kYmcgXFx1MDAzZT0gOCA/IGkgOiBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDIxLVxcdFxcdGlmIChzaWcgXFx1MDAzZT0gQlRDX0RCR19OVU0pXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ4OjE3LjUwOTU5MzE0WiIsIlNlcSI6NDEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjc3ODk4NjMxNTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgYXNzdW1pbmcgSSdtIGRlZXBseSBmYW1pbGlhciB3aXRoIGNvZGUgYW5kIEdQSU8gc2lnbmFsczpcblxuKipBbmFseXppbmcgdGhlIEZ1bmN0aW9uOiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgKipcblxuQWxyaWdodCwgbGV0J3MgZGl2ZSBpbnRvIHRoaXMgZnVuY3Rpb246IGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAuIFRoZSBuYW1lIGl0c2VsZiBpcyBmYWlybHkgZGVzY3JpcHRpdmUsIHN1Z2dlc3RpbmcgaXQncyBkZXNpZ25lZCB0byByZXRyaWV2ZSBhIEdQSU8gKEdlbmVyYWwgUHVycG9zZSBJbnB1dC9PdXRwdXQpIHNpZ25hbCBzcGVjaWZpYyB0byBhIFwidmVyXCIgLSBwcmVzdW1hYmx5IGEgdmVyc2lvbiwgdmVyaWZpY2F0aW9uLCBvciB2YWxpZGF0aW9uIGNvbnRleHQuIEdpdmVuIG15IGV4cGVyaWVuY2UsIEknZCBpbW1lZGlhdGVseSBzdGFydCB0aGlua2luZyBhYm91dCBob3cgR1BJT3MgYXJlIHV0aWxpemVkIGluIHRoaXMgc3lzdGVtIOKAkyBpcyBpdCBmb3IgaGFyZHdhcmUgaGFuZHNoYWtlcywgc2lnbmFsaW5nIHN0YXRlIGNoYW5nZXMsIG9yIHBlcmhhcHMgZXZlbiB0cmlnZ2VyaW5nIHNwZWNpZmljIHRlc3Qgcm91dGluZXMgYmFzZWQgb24gYSBkZXRlY3RlZCB2ZXJzaW9uPyBJIGtub3cgYSBzb2xpZCB1bmRlcnN0YW5kaW5nIG9mIGhvdyBHUElPcyBhcmUgdXNlZCBpcyBjcnVjaWFsIHdoZW4gZGVidWdnaW5nIG9yIG1vZGlmeWluZyBlbWJlZGRlZCBzeXN0ZW1zLiBUaGUgdXNlIG9mIFwidW5kZXJzY29yZVwiIGFzIGEgbGVhZGluZyBjaGFyYWN0ZXIgYWxzbyBzdWdnZXN0cyB0aGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIGZvciBpbnRlcm5hbCB1c2UsIG5vdCBkaXJlY3QgZXh0ZXJuYWwgYWNjZXNzLiBUaGlzIGlzIHRoZSBzdGFydGluZyBwb2ludC4gTGV0J3Mgc2VlIGhvdyBpdCBvcGVyYXRlcy5cblxuXG4iLCJJbnB1dFRva2VucyI6NTc5MCwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ4OjI1LjI5OTQ1ODM2N1oiLCJTZXEiOjQyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0MTIwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzI2MSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzI2MTpcXHRzdGF0aWMgdTggX2dldF9ncGlvc2lnX2Zvcl92ZXIoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCBzaWdfdjgpXFxuMzI2MjpcXHR7XFxuMzI2MzpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVxcdTAwM2VidGMudmVyO1xcbjMyNjQ6XFx0XFxuMzI2NTpcXHRcXHQvKiB2ODogZ3Bpb192ZXIgXFx1MDAzZT0gOCwgZGlyZWN0bHkgdXNlIHY4IHNpZ25hbCBJRCAqL1xcbjMyNjY6XFx0XFx0aWYgKHZlci1cXHUwMDNlZmN4Z3Bpb2RiZyBcXHUwMDNlPSA4KVxcbjMyNjc6XFx0XFx0XFx0cmV0dXJuIHNpZ192ODtcXG4zMjY4OlxcdFxcbjMyNjk6XFx0XFx0Lyogdjc6IGdwaW9fdmVyIFxcdTAwM2MgOCwgY29udmVydCB2OCBzaWduYWwgSUQgdG8gdjcgc2lnbmFsIElEICovXFxuMzI3MDpcXHRcXHRpZiAoc2lnX3Y4IFxcdTAwM2M9IEJUQ19EQkdfR05UX1dMKSB7XFxuMzI3MTpcXHRcXHRcXHRyZXR1cm4gc2lnX3Y4O1xcbjMyNzI6XFx0XFx0fSBlbHNlIGlmIChzaWdfdjggXFx1MDAzYz0gQlRDX0RCR19HTlRfV0wxKSB7XFxuMzI3MzpcXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuMzI3NDpcXHRcXHRcXHRcXHQgICAgXFxcIltCVENdLCAlcygpOiBzaWcgJWQgbm90IHN1cHBvcnRlZCBpbiB2N1xcXFxuXFxcIixcXG4zMjc1OlxcdFxcdFxcdFxcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcXG4zMjc2OlxcdFxcdFxcdHJldHVybiBCVENfREJHX05VTTtcXG4zMjc3OlxcdFxcdH0gZWxzZSBpZiAoc2lnX3Y4IFxcdTAwM2U9IEJUQ19EQkdfTlVNKSB7XFxuMzI3ODpcXHRcXHRcXHRydHc4OV9kZWJ1ZyhydHdkZXYsIFJUVzg5X0RCR19CVEMsXFxuMzI3OTpcXHRcXHRcXHRcXHQgICAgXFxcIltCVENdLCAlcygpOiBzaWcgJWQgbm90IGF2YWlsYWJsZVxcXFxuXFxcIixcXG4zMjgwOlxcdFxcdFxcdFxcdCAgICBfX2Z1bmNfXywgc2lnX3Y4KTtcXG4zMjgxOlxcdFxcdFxcdHJldHVybiBCVENfREJHX05VTTtcXG4zMjgyOlxcdFxcdH0gZWxzZSB7XFxuMzI4MzpcXHRcXHRcXHRyZXR1cm4gc2lnX3Y4IC0gMjtcXG4zMjg0OlxcdFxcdH1cXG4zMjg1OlxcdH1cXG4zMjg2OlxcdFxcbjMyODc6XFx0c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX3RvX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXBfdjgpXFxuMzI4ODpcXHR7XFxuMzI4OTpcXHRcXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gcnR3ZGV2LVxcdTAwM2VidGMudmVyO1xcbjMyOTA6XFx0XFx0dTMyIGVuX21hcF92NyA9IDA7XFxuMzI5MTpcXHRcXHR1MzIgYml0O1xcbjMyOTI6XFx0XFxuMzI5MzpcXHRcXHQvKiB2ODogZ3Bpb192ZXIgXFx1MDAzZT0gOCwgZGlyZWN0bHkgdXNlIHY4IGVuX21hcCAqL1xcbjMyOTQ6XFx0XFx0aWYgKHZlci1cXHUwMDNlZmN4Z3Bpb2RiZyBcXHUwMDNlPSA4KVxcbjMyOTU6XFx0XFx0XFx0cmV0dXJuIGVuX21hcF92ODtcXG4zMjk2OlxcdFxcbjMyOTc6XFx0XFx0Lyogdjc6IGdwaW9fdmVyIFxcdTAwM2MgOCwgY29udmVydCB2OCBlbl9tYXAgYml0bWFwIHRvIHY3IGVuX21hcCBiaXRtYXAgKi9cXG4zMjk4OlxcdFxcdC8qIGJpdCAwLTE6IEdOVF9CVCwgR05UX1dMIC0gc2FtZSBwb3NpdGlvbiBpbiBib3RoIHZlcnNpb25zICovXFxuMzI5OTpcXHRcXHRlbl9tYXBfdjcgfD0gZW5fbWFwX3Y4IFxcdTAwMjYgR0VOTUFTSygxLCAwKTtcXG4zMzAwOlxcdFxcbjMzMDE6XFx0XFx0LyogYml0IDItMzogR05UX0JUMSwgR05UX1dMMSAtIG5vdCBzdXBwb3J0ZWQgaW4gdjcsIHNraXAgdGhlc2UgYml0cyAqL1xcbjMzMDI6XFx0XFxuMzMwMzpcXHRcXHQvKiBiaXQgNC0zMTogc2hpZnQgcmlnaHQgYnkgMiBwb3NpdGlvbnMgKGJlY29tZSBiaXQgMi0yOSBpbiB2NykgKi9cXG4zMzA0OlxcdFxcdGZvciAoYml0ID0gQlRDX0RCR19CQ05fRUFSTFk7IGJpdCBcXHUwMDNjIEJUQ19EQkdfTlVNOyBiaXQrKykge1xcbjMzMDU6XFx0XFx0XFx0aWYgKGVuX21hcF92OCBcXHUwMDI2IEJJVChiaXQpKVxcbjMzMDY6XFx0XFx0XFx0XFx0ZW5fbWFwX3Y3IHw9IEJJVChiaXQgLSAyKTtcXG4zMzA3OlxcdFxcdH1cXG4zMzA4OlxcdFxcbjMzMDk6XFx0XFx0cmV0dXJuIGVuX21hcF92NztcXG4zMzEwOlxcdH1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDg6MjUuMjk5ODczMjk3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE5NDIyMTc0MDQ5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIFBvdGVudGlhbCBHUElPIFNpZ25hbCBFcnJvcioqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCBmdW5jdGlvbiwgYW5kIGl0IHNlZW1zIGxpa2UgaXQncyByZXR1cm5pbmcgYEJUQ19EQkdfTlVNYCB3aGVuIGl0IGVuY291bnRlcnMgYW4gZXJyb3IuIFRoYXQncyBhIGtleSBkZXRhaWwgdG8gbm90aWNlLiBOb3csIHRoZSBjb2RlJ3MgcHJldmlvdXMgZXJyb3IgY2hlY2sgd2FzIGxvb2tpbmcgZm9yIGEgc2lnbmFsIHZhbHVlIG9mIGAweGZmYC4gSXQgdXNlZCB0byBiZTpcblxuYGBgY1xuXHRcdGlmIChncGlvLVx1MDAzZW11eC5kYXRhLnNpZyA9PSAweGZmKVxuXHRcdFx0cmV0dXJuO1xuYGBgXG5cbkJ1dCBub3csIHdpdGggdGhpcyBuZXcgYXBwcm9hY2gsIGEgcmV0dXJuIHZhbHVlIG9mIGBCVENfREJHX05VTWAgb24gZXJyb3Igc3VnZ2VzdHMgdGhhdCB0aGUgb2xkIGNoZWNrIHdpbGwgbm8gbG9uZ2VyIHdvcmsgY29ycmVjdGx5LiBUaGlzIGZ1bmN0aW9uIGlzIG9idmlvdXNseSB0cnlpbmcgdG8gc2lnbmFsIHNvbWV0aGluZyBkaWZmZXJlbnQgdGhhbiBiZWZvcmUsIG9yIGl0IGNvdWxkIGJlIHJldHVybmluZyBhIHZhbHVlIGNvbXBsZXRlbHkgZGlmZmVyZW50IGZyb20gYDB4ZmZgLiBMZXQgbWUgY2hlY2sgd2hhdCBleGFjdGx5IGBCVENfREJHX05VTWAgaXMgZGVmaW5lZCBhcy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGlzIG5ldyBlcnJvciBjb2RlIG1lYW5zIGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXJnZXIgc3lzdGVtLiBJcyBpdCBhbiBleGlzdGluZyBlcnJvciBjb2RlLCBhIG5ldyBvbmUgdGhhdCBuZWVkcyBkb2N1bWVudGF0aW9uLCBvciBkb2VzIHRoaXMgcmVxdWlyZSBkZWVwZXIgdHJvdWJsZXNob290aW5nP1xuXG5cbiIsIklucHV0VG9rZW5zIjo3MDI2LCJPdXRwdXRUb2tlbnMiOjQzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDg6NDQuNzIyMDQ5OTU2WiIsIlNlcSI6NDQsIk5lc3RpbmciOjMsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NTI4MzQ2OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJCVENfREJHX05VTVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMjYxPXN0YXRpYyB1OCBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHNpZ192OClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyNzUtXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBzaWdfdjgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNzY6XFx0XFx0cmV0dXJuIEJUQ19EQkdfTlVNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyNzc6XFx0fSBlbHNlIGlmIChzaWdfdjggXFx1MDAzZT0gQlRDX0RCR19OVU0pIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMjc4LVxcdFxcdHJ0dzg5X2RlYnVnKHJ0d2RldiwgUlRXODlfREJHX0JUQyxcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyODAtXFx0XFx0XFx0ICAgIF9fZnVuY19fLCBzaWdfdjgpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMyODE6XFx0XFx0cmV0dXJuIEJUQ19EQkdfTlVNO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyODItXFx0fSBlbHNlIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyODc9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX3RvX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXBfdjgpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzAzLVxcdC8qIGJpdCA0LTMxOiBzaGlmdCByaWdodCBieSAyIHBvc2l0aW9ucyAoYmVjb21lIGJpdCAyLTI5IGluIHY3KSAqL1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMDQ6XFx0Zm9yIChiaXQgPSBCVENfREJHX0JDTl9FQVJMWTsgYml0IFxcdTAwM2MgQlRDX0RCR19OVU07IGJpdCsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMwNS1cXHRcXHRpZiAoZW5fbWFwX3Y4IFxcdTAwMjYgQklUKGJpdCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzEyPXN0YXRpYyB1MzIgX2NvbnZlcnRfZ3Bpb19lbm1hcF9mcm9tX3ZlcihzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHUzMiBlbl9tYXApXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzI0LVxcdC8qIGJpdCAyLTI5OiBzaGlmdCBsZWZ0IGJ5IDIgcG9zaXRpb25zIChiZWNvbWUgYml0IDQtMzEgaW4gdjgpICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMyNTpcXHRmb3IgKGJpdCA9IEJUQ19EQkdfR05UX0JUMTsgYml0IFxcdTAwM2MgQlRDX0RCR19OVU0gLSAyOyBiaXQrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMjYtXFx0XFx0aWYgKGVuX21hcCBcXHUwMDI2IEJJVChiaXQpKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzMzMz1zdGF0aWMgdm9pZCBfZndfc2V0X2dwaW8oc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCB1OCB0eXBlLCB1MzIgdmFsKVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzM2Ny1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgIEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpKTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzY4OlxcdFxcdGlmIChncGlvLVxcdTAwM2VtdXguZGF0YS5zaWcgXFx1MDAzZT0gQlRDX0RCR19OVU0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzM2OS1cXHRcXHRcXHRyZXR1cm47XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0xMTk4Mj1zdGF0aWMgaW50IF9zaG93X2dwaW9fZGJnKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc3opXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzoxMjAxNjpcXHRmb3IgKGkgPSAwOyBpIFxcdTAwM2MgQlRDX0RCR19OVU07IGkrKykge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDE3LVxcdFxcdGlmICghKGVuX21hcCBcXHUwMDI2IEJJVChpKSkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAyMC1cXHRcXHRzaWcgPSB2ZXItXFx1MDAzZWZjeGdwaW9kYmcgXFx1MDAzZT0gOCA/IGkgOiBfZ2V0X2dwaW9zaWdfZm9yX3ZlcihydHdkZXYsIGkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMDIxOlxcdFxcdGlmIChzaWcgXFx1MDAzZT0gQlRDX0RCR19OVU0pXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMjItXFx0XFx0XFx0Y29udGludWU7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ4OjQ0Ljc3NzMzODgwNFoiLCJTZXEiOjQ1LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0NDM2Nzc3ODEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYXR0ZW1wdCBhdCBzdW1tYXJpemluZyB0aGUgdGhvdWdodCBwcm9jZXNzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkludmVzdGlnYXRpbmcgdGhlIERlZmluaXRpb24gb2YgYEJUQ19EQkdfTlVNYCoqXG5cbk9rYXksIHNvIEkgc2VlIGBCVENfREJHX05VTWAuLi4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hhdCBpdCdzIHJlZmVycmluZyB0by4gSXQncyBhbG1vc3QgY2VydGFpbmx5IGEgbWFjcm8gb3IgYSBjb25zdGFudCBkZWZpbmVkIHNvbWV3aGVyZSB3aXRoaW4gdGhlIGNvZGViYXNlLiBHaXZlbiBteSBleHBlcmllbmNlLCBpdCdzIGxpa2VseSByZWxhdGVkIHRvIGRlYnVnZ2luZywgZ2l2ZW4gdGhlIFwiREJHXCIgaW4gdGhlIG5hbWUuIEl0IGNvdWxkIGJlIGEgc3BlY2lmaWMgZGVidWcgZmxhZywgYSBudW1lcmljYWwgaWRlbnRpZmllciBmb3IgYSBwYXJ0aWN1bGFyIGRlYnVnIG1lc3NhZ2UsIG9yIHBvc3NpYmx5IGEgY291bnRlci4gSXQncyBnb2luZyB0byBkZXBlbmQgb24gdGhlIHN5c3RlbS5cblxuSSdkIHN0YXJ0IGJ5IHVzaW5nIG15IHN0YW5kYXJkIHRvb2xzIC0gYGdyZXBgLCBgZmluZGAsIG9yIG15IElERSdzIHNlYXJjaCBmdW5jdGlvbiAtIHRvIGxvY2F0ZSBpdHMgZGVmaW5pdGlvbi4gSSdkIGxvb2sgZm9yIGAjZGVmaW5lIEJUQ19EQkdfTlVNYCBvciBzb21ldGhpbmcgc2ltaWxhciwgYW5kIEknZCBleHBhbmQgbXkgc2VhcmNoIHRlcm1zIHRvIGNhcHR1cmUgYW55IGluc3RhbmNlcyBpbiBzb3VyY2UgZmlsZXMsIGluY2x1ZGUgZmlsZXMsIGJ1aWxkIHNjcmlwdHMsIG9yIGRvY3VtZW50YXRpb24uIEkgbmVlZCB0byBiZSB0aG9yb3VnaC5cblxuT25jZSBJIGZpbmQgdGhlIGRlZmluaXRpb24sIHRoZSBjb250ZXh0IHdpbGwgZ2l2ZSBtZSB0aGUgbW9zdCBjcml0aWNhbCBpbmZvcm1hdGlvbiwgZnJvbSB0aGUgc3Vycm91bmRpbmcgY29tbWVudHMsIHZhcmlhYmxlIHVzYWdlLCBldGMuIEknZCB0aGVuIHF1aWNrbHkgYXNzZXNzIHdoZXJlIGl0J3MgdXNlZCB3aXRoaW4gdGhlIGNvZGUuIEFyZSB0aGVyZSBjb25kaXRpb25hbCBzdGF0ZW1lbnRzIHVzaW5nIGl0PyBGdW5jdGlvbiBjYWxscyB0aGF0IHJlbHkgb24gaXQ/IElmIGl0J3MgdXNlZCBpbiBsb2dnaW5nLCBJJ2Qgd2FudCB0byBkZXRlcm1pbmUgdGhlIGltcG9ydGFuY2Ugb2YgdGhlIG1lc3NhZ2VzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG51bWJlciwgYW5kIGlmIHRoZXJlIGlzIGEgbWFwcGluZyBmaWxlLiBUaGUgZ29hbCBpcyB0byBmdWxseSB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMuIEknbSBsb29raW5nIGZvciBpdHMgcHVycG9zZSBhbmQgaG93IGl0IGltcGFjdHMgdGhlIHN5c3RlbSdzIGJlaGF2aW9yLCBwYXJ0aWN1bGFybHkgZHVyaW5nIGRlYnVnZ2luZyBhbmQgaWYgaXQgZW5hYmxlcyBvciBkaXNhYmxlcyBjZXJ0YWluIGNvZGUgYmxvY2tzLiBGaW5hbGx5LCBJJ2Qgd2FudCB0byBiZSBzdXJlIHRvIGRvY3VtZW50IGl0LiBJIG1pZ2h0IG5lZWQgdGhpcyBrbm93bGVkZ2UgbGF0ZXIuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg2MTEsIk91dHB1dFRva2VucyI6MzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0ODo0OS4yMTQxMTk2NDRaIiwiU2VxIjo0NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ3NjEzOTQ4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkJUQ19EQkdfTlVNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMyNjE9c3RhdGljIHU4IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggc2lnX3Y4KVxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI3NS1cXHRcXHRcXHQgICAgX19mdW5jX18sIHNpZ192OCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI3NjpcXHRcXHRyZXR1cm4gQlRDX0RCR19OVU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI3NzpcXHR9IGVsc2UgaWYgKHNpZ192OCBcXHUwMDNlPSBCVENfREJHX05VTSkge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMyNzgtXFx0XFx0cnR3ODlfZGVidWcocnR3ZGV2LCBSVFc4OV9EQkdfQlRDLFxcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI4MC1cXHRcXHRcXHQgICAgX19mdW5jX18sIHNpZ192OCk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzI4MTpcXHRcXHRyZXR1cm4gQlRDX0RCR19OVU07XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzI4Mi1cXHR9IGVsc2Uge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM9MzI4Nz1zdGF0aWMgdTMyIF9jb252ZXJ0X2dwaW9fZW5tYXBfdG9fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcF92OClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMDMtXFx0LyogYml0IDQtMzE6IHNoaWZ0IHJpZ2h0IGJ5IDIgcG9zaXRpb25zIChiZWNvbWUgYml0IDItMjkgaW4gdjcpICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMwNDpcXHRmb3IgKGJpdCA9IEJUQ19EQkdfQkNOX0VBUkxZOyBiaXQgXFx1MDAzYyBCVENfREJHX05VTTsgYml0KyspIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzA1LVxcdFxcdGlmIChlbl9tYXBfdjggXFx1MDAyNiBCSVQoYml0KSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMTI9c3RhdGljIHUzMiBfY29udmVydF9ncGlvX2VubWFwX2Zyb21fdmVyKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTMyIGVuX21hcClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMjQtXFx0LyogYml0IDItMjk6IHNoaWZ0IGxlZnQgYnkgMiBwb3NpdGlvbnMgKGJlY29tZSBiaXQgNC0zMSBpbiB2OCkgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzI1OlxcdGZvciAoYml0ID0gQlRDX0RCR19HTlRfQlQxOyBiaXQgXFx1MDAzYyBCVENfREJHX05VTSAtIDI7IGJpdCsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMyNi1cXHRcXHRpZiAoZW5fbWFwIFxcdTAwMjYgQklUKGJpdCkpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzMzPXN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzY3LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCkpO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzNjg6XFx0XFx0aWYgKGdwaW8tXFx1MDAzZW11eC5kYXRhLnNpZyBcXHUwMDNlPSBCVENfREJHX05VTSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzY5LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTExOTgyPXN0YXRpYyBpbnQgX3Nob3dfZ3Bpb19kYmcoc3RydWN0IHJ0dzg5X2RldiAqcnR3ZGV2LCBjaGFyICpidWYsIHNpemVfdCBidWZzeilcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDE1LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjEyMDE2OlxcdGZvciAoaSA9IDA7IGkgXFx1MDAzYyBCVENfREJHX05VTTsgaSsrKSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMTIwMTctXFx0XFx0aWYgKCEoZW5fbWFwIFxcdTAwMjYgQklUKGkpKSlcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTEyMDIwLVxcdFxcdHNpZyA9IHZlci1cXHUwMDNlZmN4Z3Bpb2RiZyBcXHUwMDNlPSA4ID8gaSA6IF9nZXRfZ3Bpb3NpZ19mb3JfdmVyKHJ0d2RldiwgaSk7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MTIwMjE6XFx0XFx0aWYgKHNpZyBcXHUwMDNlPSBCVENfREJHX05VTSlcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0xMjAyMi1cXHRcXHRcXHRjb250aW51ZTtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oPTMxMTk9ZW51bSBidGNfd2xfZ3Bpb19kZWJ1ZyB7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTU3LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMxNTg6XFx0QlRDX0RCR19OVU0sXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE1OS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzE2MT1zdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfZ3Bpb19kYmdfdjEge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE2Ni1cXHRfX2xlMzIgcHJlX3N0YXRlOyAvKiB0aGUgZGVidWcgc2lnbmFsIGlzIDEgb3IgMCAgKi9cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMTY3OlxcdHU4IGdwaW9fbWFwW0JUQ19EQkdfTlVNXTsgLyp0aGUgZGVidWcgc2lnbmFscyB0byBHUElPLVBvc2l0aW9uICovXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE2OC19IF9fcGFja2VkO1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9MzE3MD1zdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfZ3Bpb19kYmdfdjcge1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzE3NS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMTc2OlxcdHU4IGdwaW9fbWFwW0JUQ19EQkdfTlVNXTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMTc3LVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0ODo0OS4yNjE3Mzk0ODJaIiwiU2VxIjo0NywiTmVzdGluZyI6MywiVHlwZSI6ImxsbSIsIk5hbWUiOiJrbXNhbi1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6OTczMTIzMjc5NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgYSBQb3RlbnRpYWwgQnVnIGluIEdQSU8gU2lnbmFsIEhhbmRsaW5nKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBjb2RlIGFuZCBpbW1lZGlhdGVseSBzZWUgYSBwb3RlbnRpYWwgaXNzdWUuIEl0IGxvb2tzIGxpa2UgYEJUQ19EQkdfTlVNYCBpcyBhbiBlbnVtIHZhbHVlLCB3aGljaCByYWlzZXMgYSByZWQgZmxhZy4gVGhlIGZ1bmN0aW9uIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyBgQlRDX0RCR19OVU1gIHRvIGluZGljYXRlIGFuIGVycm9yLCB3aGljaCBpcyBwZXJmZWN0bHkgcmVhc29uYWJsZS4gQnV0IGhlcmUncyB3aGVyZSB0aGUgcHJvYmxlbSBhcmlzZXM6IGBncGlvLVx1MDAzZW11eC5kYXRhLnNpZ2AgaXMgZGVmaW5lZCBhcyBhIGB1OGAuIFRoaXMgaXMgd2hlcmUgbXkgY29uY2VybiBoaXRzIGNyaXRpY2FsIG1hc3MuXG5cbklmIGBCVENfREJHX05VTWAgaXMgYSB2YWx1ZSB0aGF0IGNhbiBiZSByZXByZXNlbnRlZCB3aXRoaW4gdGhlIGB1OGAgcmFuZ2UgKGxlc3MgdGhhbiAyNTUpLCB0aGVuIHRoZSBjb21wYXJpc29uIGBncGlvLVx1MDAzZW11eC5kYXRhLnNpZyA9PSAweGZmYCB3aWxsICpmYWlsKiB0byBhY2N1cmF0ZWx5IGRldGVjdCB0aGUgZXJyb3IhIEluIG90aGVyIHdvcmRzLCBpZiBhbiBlcnJvciBvY2N1cnJlZCBkdXJpbmcgc2lnbmFsIHJldHJpZXZhbCwgYGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnYCBtaWdodCBpbmFkdmVydGVudGx5IGNvbnRhaW4gYSB2YWxpZCAoYnV0IGluY29ycmVjdCkgYHU4YCB2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIGFuIGVudW0gdmFsdWUgLSBvbmUgdGhhdCBtaWdodCBub3QgYmUgMHhmZiwgYW5kIHRoZSBlcnJvciB3b24ndCBiZSBjYXVnaHQuIEVzc2VudGlhbGx5LCBpZiBgQlRDX0RCR19OVU1gIGlzIHNtYWxsIGVub3VnaCwgaXQgd29uJ3QgYmUgdHJhcHBlZC5cblxuVGltZSB0byBsb29rIGludG8gdGhlIHZhbHVlIG9mIGBCVENfREJHX05VTWAgYW5kIHNlZSB3aGF0IHdlJ3JlIGFjdHVhbGx5IGRlYWxpbmcgd2l0aCwgYW5kIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaW50cm9kdWNlcyBhIHJlYWwgYnVnLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMDY0MSwiT3V0cHV0VG9rZW5zIjo0NiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjExOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0ODo1OC45OTI5NzUwMDZaIiwiU2VxIjo0OCwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjk5NDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDMxMTksXG4gIFwiTGluZUNvdW50XCI6IDUwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIjMxMTk6XFx0ZW51bSBidGNfd2xfZ3Bpb19kZWJ1ZyB7XFxuMzEyMDpcXHRcXHRCVENfREJHX0dOVF9CVCA9IDAsXFxuMzEyMTpcXHRcXHRCVENfREJHX0dOVF9XTCA9IDEsXFxuMzEyMjpcXHRcXHRCVENfREJHX0dOVF9CVDEgPSAyLFxcbjMxMjM6XFx0XFx0QlRDX0RCR19HTlRfV0wxID0gMyxcXG4zMTI0OlxcdFxcdC8qIFRoZSBmb2xsb3dpbmcgc2lnbmFscyBzaG91bGQgMC0xIHRpZ2dsZSBieSBlYWNoIGZ1bmN0aW9uLWNhbGwgKi9cXG4zMTI1OlxcdFxcdEJUQ19EQkdfQkNOX0VBUkxZID0gNCxcXG4zMTI2OlxcdFxcdEJUQ19EQkdfV0xfTlVMTDAgPSA1LFxcbjMxMjc6XFx0XFx0QlRDX0RCR19XTF9OVUxMMSA9IDYsXFxuMzEyODpcXHRcXHRCVENfREJHX1dMX1JYSVNSID0gNyxcXG4zMTI5OlxcdFxcdEJUQ19EQkdfVERNQV9FTlRSWSA9IDgsXFxuMzEzMDpcXHRcXHRCVENfREJHX0EyRFBfRU1QVFkgPSA5LFxcbjMxMzE6XFx0XFx0QlRDX0RCR19CVF9SRVRSWSA9IDEwLFxcbjMxMzI6XFx0XFx0LyogVGhlIGZvbGxvd2luZyBzaWduYWxzIHNob3VsZCAwLTEgdGlnZ2xlIGJ5IHN0YXRlIEwvSCAqL1xcbjMxMzM6XFx0XFx0QlRDX0RCR19CVF9SRUxJTksgPSAxMSxcXG4zMTM0OlxcdFxcdEJUQ19EQkdfU0xPVF9XTCA9IDEyLFxcbjMxMzU6XFx0XFx0QlRDX0RCR19TTE9UX0JUID0gMTMsXFxuMzEzNjpcXHRcXHQvKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgc2hvdWxkIDAtMSB0aWdnbGUgYnkgZXh0ZXJuYWwqL1xcbjMxMzc6XFx0XFx0QlRDX0RCR19XTF9FUlIgPSAxNCxcXG4zMTM4OlxcdFxcdEJUQ19EQkdfV0xfT0sgPSAxNSxcXG4zMTM5OlxcdFxcdC8qIFRoZSBmb2xsb3dpbmcgc2lnbmFscyBhcHBlYXIgb25seSAxLWFjdGl2ZSBhdCBzYW1lIHRpbWUqL1xcbjMxNDA6XFx0XFx0QlRDX0RCR19TTE9UX0IyVyA9IDE2LFxcbjMxNDE6XFx0XFx0QlRDX0RCR19TTE9UX1cxID0gMTcsXFxuMzE0MjpcXHRcXHRCVENfREJHX1NMT1RfVzIgPSAxOCxcXG4zMTQzOlxcdFxcdEJUQ19EQkdfU0xPVF9XMkIgPSAxOSxcXG4zMTQ0OlxcdFxcdEJUQ19EQkdfU0xPVF9CMSA9IDIwLFxcbjMxNDU6XFx0XFx0QlRDX0RCR19TTE9UX0IyID0gMjEsXFxuMzE0NjpcXHRcXHRCVENfREJHX1NMT1RfQjMgPSAyMixcXG4zMTQ3OlxcdFxcdEJUQ19EQkdfU0xPVF9CNCA9IDIzLFxcbjMxNDg6XFx0XFx0QlRDX0RCR19TTE9UX0xLID0gMjQsXFxuMzE0OTpcXHRcXHRCVENfREJHX1NMT1RfRTJHID0gMjUsXFxuMzE1MDpcXHRcXHRCVENfREJHX1NMT1RfRTVHID0gMjYsXFxuMzE1MTpcXHRcXHRCVENfREJHX1NMT1RfRUJUID0gMjcsXFxuMzE1MjpcXHRcXHRCVENfREJHX1NMT1RfV0xLID0gMjgsXFxuMzE1MzpcXHRcXHRCVENfREJHX1NMT1RfQjFGREQgPSAyOSxcXG4zMTU0OlxcdFxcdEJUQ19EQkdfQlRfQ0hBTkdFID0gMzAsXFxuMzE1NTpcXHRcXHQvKiBUaGUgZm9sbG93aW5nIHNpZ25hbHMgc2hvdWxkIDAtMSB0aWdnbGUgYnkgZXh0ZXJuYWwqL1xcbjMxNTY6XFx0XFx0QlRDX0RCR19XTF9DQ0EgPSAzMSxcXG4zMTU3OlxcdFxcbjMxNTg6XFx0XFx0QlRDX0RCR19OVU0sXFxuMzE1OTpcXHR9O1xcbjMxNjA6XFx0XFxuMzE2MTpcXHRzdHJ1Y3QgcnR3ODlfYnRjX2ZidGNfZ3Bpb19kYmdfdjEge1xcbjMxNjI6XFx0XFx0dTggZnZlcjsgLyogYnRjX3Zlcjo6ZmN4Z3Bpb2RiZyAqL1xcbjMxNjM6XFx0XFx0dTggcnN2ZDtcXG4zMTY0OlxcdFxcdF9fbGUxNiByc3ZkMjtcXG4zMTY1OlxcdFxcdF9fbGUzMiBlbl9tYXA7IC8qIHdoaWNoIGRlYnVnIHNpZ25hbCAoc2VlIGJ0Y193bF9ncGlvX2RlYnVnKSBpcyBlbmFibGUgKi9cXG4zMTY2OlxcdFxcdF9fbGUzMiBwcmVfc3RhdGU7IC8qIHRoZSBkZWJ1ZyBzaWduYWwgaXMgMSBvciAwICAqL1xcbjMxNjc6XFx0XFx0dTggZ3Bpb19tYXBbQlRDX0RCR19OVU1dOyAvKnRoZSBkZWJ1ZyBzaWduYWxzIHRvIEdQSU8tUG9zaXRpb24gKi9cXG4zMTY4OlxcdH0gX19wYWNrZWQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ4OjU4Ljk5MzI3NTc4NloiLCJTZXEiOjQ5LCJOZXN0aW5nIjozLCJUeXBlIjoibGxtIiwiTmFtZSI6Imttc2FuLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNzg1NzE2ODUyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgUG90ZW50aWFsIEZpcm13YXJlIFZ1bG5lcmFiaWxpdHkqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHNuaXBwZXQgb2YgY29kZSwgYW5kIGl0IHNlZW1zIGxpa2UgYEJUQ19EQkdfTlVNYCBpcyBkZWZpbmVkIGFzIDMyLiBUaGUgb3JpZ2luYWwgY29kZSBoYXMgdGhpcyBzZWN0aW9uIHdoZXJlIGl0IHJldHJpZXZlcyBhIHNpZ25hbCB2YWx1ZSB1c2luZyBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgLCBhbmQgaWYgdGhhdCByZXR1cm5zIGFuIGVycm9yIGluZGljYXRlZCBieSAweGZmLCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybi4gSG93ZXZlciwgaXQgc2VlbXMgbGlrZSB0aGUgZXJyb3IgY2hlY2tpbmcgaXMgZmxhd2VkLiBUaGUgZnVuY3Rpb24gYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCByZXR1cm5zIDMyIG9uIGVycm9yLiBUaGF0IHZhbHVlLCAzMiwgaXMgdXNlZCBzdWJzZXF1ZW50bHkgd2l0aG91dCBiZWluZyBwcm9wZXJseSB2YWxpZGF0ZWQuXG5cblRoZSBjb25kaXRpb24gYGdwaW8tXHUwMDNlbXV4LmRhdGEuc2lnID09IDB4ZmZgIGlzIGV2YWx1YXRlZCBidXQgZmFpbHMsIGNhdXNpbmcgdGhlIGNvZGUgdG8gcHJvY2VlZCwgdHJlYXRpbmcgMzIgYXMgYSB2YWxpZCBzaWduYWwuIEl0IHRoZW4gZXh0cmFjdHMgYGdwaW9gIGFuZCBwZXJmb3JtcyBhIGBtZW1jcHlgIGludG8gYGJ1ZmAuIFRoZSBgYnVmYCBpcyB0aGVuIHN1YnNlcXVlbnRseSBzZW50IHRvIHRoZSBmaXJtd2FyZS4gTXkgaW1tZWRpYXRlIHRob3VnaHQgaXMsIFwiSXMgdGhpcyBnb2luZyB0byB0cmlnZ2VyIHNvbWUgc29ydCBvZiB1bmluaXRpYWxpemVkIG1lbW9yeSByZWFkP1wiXG5cbldhaXQsIG5vLCB1cG9uIGZ1cnRoZXIgYW5hbHlzaXMsIHRoZSBkYXRhIGJlaW5nIHNlbnQgaXMgc2ltcGx5IGEga25vd24sIGFsYmVpdCBpbnZhbGlkLCB2YWx1ZSwgMzIuIEl0J3Mgbm90IHVuaW5pdGlhbGl6ZWQgZGF0YSBiZWluZyByZWFkLiBJdCdzIHNlbmRpbmcgYSBzcGVjaWZpYywgaW5jb3JyZWN0IHZhbHVlIHRvIHRoZSBmaXJtd2FyZS4gTGV0IG1lIHRha2UgYSBzZWNvbmQgbG9vayBhdCBob3cgYGJ1ZmAgYW5kIGBsZW5gIGFyZSB1dGlsaXplZCBkb3duc3RyZWFtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjA5NSwiT3V0cHV0VG9rZW5zIjo0NywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMwNSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ5OjE2Ljg1MDQ0ODYxM1oiLCJTZXEiOjUwLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4MjY1MzAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzM3NSxcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzM3NTpcXHRcXHRjYXNlIENYREdQSU9fRVhUX0hQVEE6IC8qIEdQSU8gY29uZmlnIGZvciBFeHQgSFctUFRBICovXFxuMzM3NjpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEudHlwZSA9IENYREdQSU9fRVhUX0hQVEE7XFxuMzM3NzpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEuZnZlciA9IGdwaW9fdmVyO1xcbjMzNzg6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3B0YS5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MMjtcXG4zMzc5OlxcdFxcdFxcdGdwaW8tXFx1MDAzZWV4dF9wdGEuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XFxuMzM4MDpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfcHRhLmRhdGEubWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XFxuMzM4MTpcXHRcXHRcXHRsMl9oMmMgPSBncGlvLVxcdTAwM2VleHRfcHRhLmZtdDtcXG4zMzgyOlxcdFxcdFxcdG1lbWNweShidWYsIFxcdTAwMjZsMl9oMmMsIHNpemVvZihsMl9oMmMpKTtcXG4zMzgzOlxcdFxcdFxcdGxlbiA9IHNpemVvZihsMl9oMmMpO1xcbjMzODQ6XFx0XFx0XFx0YnJlYWs7XFxuMzM4NTpcXHRcXHRjYXNlIENYREdQSU9fRVhUX0hNQlg6IC8qIEdQSU8gY29uZmlnIGZvciBFeHQgSFctbWFpbGJveCAqL1xcbjMzODY6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X21iLmRhdGEudHlwZSA9IENYREdQSU9fRVhUX0hNQlg7XFxuMzM4NzpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfbWIuZGF0YS5mdmVyID0gZ3Bpb192ZXI7XFxuMzM4ODpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfbWIuZGF0YS5kbGVuID0gQ1hER1BJT19TRVRfTDI7XFxuMzM4OTpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfbWIuZGF0YS5tYXBfbG93ID0gRklFTERfR0VUKEdFTk1BU0soNywgMCksIHZhbCk7XFxuMzM5MDpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfbWIuZGF0YS5tYXBfaGlnaCA9IEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgdmFsKTtcXG4zMzkxOlxcdFxcdFxcdGwyX2gyYyA9IGdwaW8tXFx1MDAzZWV4dF9tYi5mbXQ7XFxuMzM5MjpcXHRcXHRcXHRtZW1jcHkoYnVmLCBcXHUwMDI2bDJfaDJjLCBzaXplb2YobDJfaDJjKSk7XFxuMzM5MzpcXHRcXHRcXHRsZW4gPSBzaXplb2YobDJfaDJjKTtcXG4zMzk0OlxcdFxcdFxcdGJyZWFrO1xcbjMzOTU6XFx0XFx0Y2FzZSBDWERHUElPX0VYVF9TV09VVDogLyogR1BJTyBjb25maWcgZm9yIEV4dCBTVyBvdXRwdXQgKHdsYW5fYWN0KSAqL1xcbjMzOTY6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3b3V0LmRhdGEudHlwZSA9IENYREdQSU9fRVhUX1NXT1VUO1xcbjMzOTc6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3b3V0LmRhdGEuZnZlciA9IGdwaW9fdmVyO1xcbjMzOTg6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3b3V0LmRhdGEuZGxlbiA9IENYREdQSU9fU0VUX0wyO1xcbjMzOTk6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3b3V0LmRhdGEubWFwX2xvdyA9IEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpO1xcbjM0MDA6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3b3V0LmRhdGEubWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygxNSwgOCksIHZhbCk7XFxuMzQwMTpcXHRcXHRcXHRsMl9oMmMgPSBncGlvLVxcdTAwM2VleHRfc3dvdXQuZm10O1xcbjM0MDI6XFx0XFx0XFx0bWVtY3B5KGJ1ZiwgXFx1MDAyNmwyX2gyYywgc2l6ZW9mKGwyX2gyYykpO1xcbjM0MDM6XFx0XFx0XFx0bGVuID0gc2l6ZW9mKGwyX2gyYyk7XFxuMzQwNDpcXHRcXHRcXHRicmVhaztcXG4zNDA1OlxcdFxcdGNhc2UgQ1hER1BJT19FWFRfU1dJTjogLyogR1BJTyBjb25maWcgZm9yIEV4dCBTVyBpbnB1dCBjb250cm9sICovXFxuMzQwNjpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfc3dpbi5kYXRhLnR5cGUgPSBDWERHUElPX0VYVF9TV0lOO1xcbjM0MDc6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3aW4uZGF0YS5mdmVyID0gZ3Bpb192ZXI7XFxuMzQwODpcXHRcXHRcXHRncGlvLVxcdTAwM2VleHRfc3dpbi5kYXRhLmRsZW4gPSBDWERHUElPX1NFVF9MNDtcXG4zNDA5OlxcdFxcdFxcdGdwaW8tXFx1MDAzZWV4dF9zd2luLmRhdGEuaW5fbWFwX2xvdyA9IEZJRUxEX0dFVChHRU5NQVNLKDcsIDApLCB2YWwpO1xcbjM0MTA6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3aW4uZGF0YS5pbl9tYXBfaGlnaCA9IEZJRUxEX0dFVChHRU5NQVNLKDE1LCA4KSwgdmFsKTtcXG4zNDExOlxcdFxcdFxcdGdwaW8tXFx1MDAzZWV4dF9zd2luLmRhdGEuaW50X21hcF9sb3cgPSBGSUVMRF9HRVQoR0VOTUFTSygyMywgMTYpLCB2YWwpO1xcbjM0MTI6XFx0XFx0XFx0Z3Bpby1cXHUwMDNlZXh0X3N3aW4uZGF0YS5pbnRfbWFwX2hpZ2ggPSBGSUVMRF9HRVQoR0VOTUFTSygzMSwgMjQpLCB2YWwpO1xcbjM0MTM6XFx0XFx0XFx0bDRfaDJjID0gZ3Bpby1cXHUwMDNlZXh0X3N3aW4uZm10O1xcbjM0MTQ6XFx0XFx0XFx0cHV0X3VuYWxpZ25lZF9sZTMyKHZhbCwgKHUzMiAqKWw0X2gyYy5kYXRhKTtcXG4zNDE1OlxcdFxcdFxcdG1lbWNweShidWYsIFxcdTAwMjZsNF9oMmMsIHNpemVvZihsNF9oMmMpKTtcXG4zNDE2OlxcdFxcdFxcdGxlbiA9IHNpemVvZihsNF9oMmMpO1xcbjM0MTc6XFx0XFx0XFx0YnJlYWs7XFxuMzQxODpcXHRcXHRkZWZhdWx0OlxcbjM0MTk6XFx0XFx0XFx0cmV0dXJuO1xcbjM0MjA6XFx0XFx0fVxcbjM0MjE6XFx0XFxuMzQyMjpcXHRcXHRfc2VuZF9md19jbWQocnR3ZGV2LCBCVEZDX1NFVCwgU0VUX0dQSU9fREJHLCBidWYsIGxlbik7XFxuMzQyMzpcXHR9XFxuMzQyNDpcXHRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDk6MTYuODUxMjc4NDYzWiIsIlNlcSI6NTEsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjExMzU1MjY3NjY0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzLCBhcyBpZiBpdCB3ZXJlIG15IG93bjpcblxuKipBbmFseXppbmcgdGhlIERhdGEgVHJhbnNtaXNzaW9uIFBhdGgqKlxuXG5Pa2F5LCBzbyB0aGUgYGJ1ZmAgaXMgYmVpbmcgcGFzc2VkIGRvd24gdG8gdGhlIGZpcm13YXJlIHRocm91Z2ggdGhlIGBfc2VuZF9md19jbWRgIGZ1bmN0aW9uLiBUaGF0J3MgdGhlIGNyaXRpY2FsIHBvaW50IG9mIGludGVyYWN0aW9uLCBhbmQgSSBuZWVkIHRvIG1ha2Ugc3VyZSBldmVyeXRoaW5nJ3Mga29zaGVyLiBUaGUgaW1tZWRpYXRlIGNvbmNlcm4gaXMgYWx3YXlzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBIb3dldmVyLCBsb29raW5nIGF0IHRoaXMgc3BlY2lmaWMgcGF0aCwgSSBkb24ndCBzZWUgYW55IG9idmlvdXMgdnVsbmVyYWJpbGl0aWVzIGhlcmUuIFRoZSBgbDJfaDJjYCBzdHJ1Y3R1cmUgKG9yIHVuaW9uLCBuZWVkIHRvIGNvbmZpcm0gdGhhdCkgaXMgYmVpbmcgcG9wdWxhdGVkLCBhbmQgY3J1Y2lhbGx5LCBpdCBsb29rcyBsaWtlIGl0IGlzIGZ1bGx5IGluaXRpYWxpemVkIGJ5IGBncGlvLVx1MDAzZW11eC5mbXRgLiBUaGlzIHNlZW1zIGxpa2UgYSBkaXJlY3QgY29weSBvciBhc3NpZ25tZW50LCB3aGljaCBzaG91bGQgcHJldmVudCBhbnkgdW5pbml0aWFsaXplZCBkYXRhIGZyb20gbGVha2luZy4gSSBzaG91bGQgZG91YmxlLWNoZWNrIHRoZSBgZ3Bpby1cdTAwM2VtdXguZm10YCBkZWZpbml0aW9uIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIGl0J3MgYSBjb21wbGV0ZWx5IGluaXRpYWxpemVkIGRhdGEgc3RydWN0dXJlLiBMZXQncyB2ZXJpZnkgdGhhdCBxdWlja2x5LCBzaW5jZSB0aGF0J3MgdGhlIHNvdXJjZSBvZiB0cnV0aCBmb3IgdGhlIGRhdGEgYmVpbmcgc2VudC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTM5MzYsIk91dHB1dFRva2VucyI6NDksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2MCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ5OjI4LjIwNjU0OTU5N1oiLCJTZXEiOjUyLCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzYyMDIwMzA0LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jPTMzMzM9c3RhdGljIHZvaWQgX2Z3X3NldF9ncGlvKHN0cnVjdCBydHc4OV9kZXYgKnJ0d2RldiwgdTggdHlwZSwgdTMyIHZhbClcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzMzUtXFx0c3RydWN0IHJ0dzg5X2J0YyAqYnRjID0gXFx1MDAyNnJ0d2Rldi1cXHUwMDNlYnRjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jOjMzMzY6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvICpncGlvID0gXFx1MDAyNmJ0Yy1cXHUwMDNlZ3BpbztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM3LVxcdGNvbnN0IHN0cnVjdCBydHc4OV9idGNfdmVyICp2ZXIgPSBidGMtXFx1MDAzZXZlcjtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzM4OlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiBsMl9oMmM7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmM6MzMzOTpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fNGIgbDRfaDJjO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29leC5jLTMzNDAtXFx0dTggZ3Bpb192ZXIgPSB2ZXItXFx1MDAzZWZjeGdwaW9kYmc7XFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaD0zMTgyPXVuaW9uIHJ0dzg5X2J0Y19mYnRjX2dwaW9fZGJnIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMDgtI2RlZmluZSBDWERHUElPX1NFVF9MMiAyXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzIwOTpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZW5fbWFwIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjEwLVxcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzIxNS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjE2OnN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19tdXgge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMTctXFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjIzLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyMjQ6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9wdGEge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMjUtXFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjMxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyMzI6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9tYiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzIzMy1cXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyMzktXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI0MDpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3N3b3V0IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjQxLVxcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI0Ny1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjQ4OnN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfc3dpbiB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI0OS1cXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyNTctXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI1ODpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyNTktXFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjY0LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNjU6c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXzRiIHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjY2LVxcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI3MS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjcyOnVuaW9uIHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2VuX21hcF91IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjczOlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb180YiBmbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI3NDpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZW5fbWFwIGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI3NS19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyNzYtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI3Nzp1bmlvbiBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19tdXhfdSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI3ODpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmIgZm10O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyNzk6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eCBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyODAtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjgxLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODI6dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YV91IHtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjgzOlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiBmbXQ7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI4NDpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YSBkYXRhO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyODUtfTtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaC0zMjg2LVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODc6dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3N3aW5fdSB7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI4ODpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fNGIgZm10O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyODk6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9zd2luIGRhdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI5MC19O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTMyOTEtXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI5MjpzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW8ge1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTM6XFx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZW5fbWFwX3UgZW5fbWFwO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTQ6XFx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4X3UgbXV4O1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTU6XFx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YV91IGV4dF9wdGE7XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg6MzI5NjpcXHR1bmlvbiBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfcHRhX3UgZXh0X21iO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjMyOTc6XFx0dW5pb24gcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3B0YV91IGV4dF9zd291dDtcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvcmUuaDozMjk4OlxcdHVuaW9uIHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9zd2luX3UgZXh0X3N3aW47XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtMzI5OS19O1xcbi0tXFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmg9NDM5ND1zdHJ1Y3QgcnR3ODlfYnRjIHtcXG4tLVxcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oLTQ0MDItXFx0c3RydWN0IHJ0dzg5X2J0Y19kYmcgZGJnO1xcbmRyaXZlcnMvbmV0L3dpcmVsZXNzL3JlYWx0ZWsvcnR3ODkvY29yZS5oOjQ0MDM6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvIGdwaW87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmgtNDQwNC1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDk6MjguNTY4NTc1NjMxWiIsIlNlcSI6NTMsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY5NDcyOTE0MTMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBzaXR1YXRpb24sIGRpc3RpbGxlZDpcblxuKipEZWNvZGluZyB0aGUgR1BJTyBNdXggU3RydWN0dXJlIGluIHRoZSBydHc4OSBEcml2ZXIqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIGBncGlvYCB2YXJpYWJsZSwgYW5kIGl0J3MgYSBwb2ludGVyIHRvIGBidGMtXHUwMDNlZ3Bpb2AsIHdoaWNoIGluIHR1cm4gaXMgYSBwb2ludGVyLCBJIGJlbGlldmUgdG8gdGhlIGFjdHVhbCBHUElPIHN0cnVjdHVyZS4gVGhlIGBidGNgIHZhcmlhYmxlIGl0c2VsZiBpcyBhbm90aGVyIHBvaW50ZXIsIHNwZWNpZmljYWxseSB0byBgcnR3ZGV2LVx1MDAzZWJ0Y2AuIFJpZ2h0LCBzbyB3ZSdyZSBuYXZpZ2F0aW5nIGEgY2hhaW4gb2YgcG9pbnRlcnMgdG8gZ2V0IHRvIHRoZSBHUElPIGNvbnRyb2wuXG5cbk5vdywgYGdwaW8tXHUwMDNlbXV4LmRhdGFgIGFuZCBgZ3Bpby1cdTAwM2VtdXguZm10YCBhcmUgYXBwYXJlbnRseSB1bmlvbnMuIFRoZXkgYXJlIGJvdGggc3RydWN0cywgYW5kIG9mIGVxdWFsIHNpemUuIE1lYW5pbmcgdGhhdCB0aGV5IG9jY3VweSB0aGUgc2FtZSBtZW1vcnkgbG9jYXRpb24sIGJ1dCBhcmUgaW50ZXJwcmV0ZWQgZGlmZmVyZW50bHkgZGVwZW5kaW5nIG9uIHdoaWNoIGZpZWxkIHdlJ3JlIGFjY2Vzc2luZy4gTWFrZXMgc2Vuc2UsIHNwYWNlLXNhdmluZyB0ZWNobmlxdWUsIHRoYXQncyBmaW5lLlxuXG5UaGUgY3JpdGljYWwgc3RydWN0IGlzIHRoZSBgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4YCBvbmUuIEkgbmVlZCB0byBtYWtlIGFic29sdXRlbHkgc3VyZSB0aGF0IGl0IGlzLCBpbiBmYWN0LCBwYWNrZWQuIEknbGwgbmVlZCB0byBkb3VibGUtY2hlY2sgdGhlIGNvbXBpbGF0aW9uIGZsYWdzIHRvIGNvbmZpcm0gdGhlIGBfX3BhY2tlZGAgYXR0cmlidXRlIGlzIGNvcnJlY3RseSBlbmZvcmNlZCwgYXMgdGhlIGNvcnJlY3QgYnl0ZS1sZXZlbCBsYXlvdXQgaXMgY3JpdGljYWwgZm9yIHRoZSBoYXJkd2FyZSBjb21tdW5pY2F0aW9uIHRoaXMgaXMgZGVzaWduZWQgZm9yLiBXZSd2ZSBnb3QgYHR5cGVgLCBgZnZlcmAsIGBkbGVuYCwgYHNpZ2AsIGFuZCBgZ3Bpb2AgZmllbGRzLiBUaG9zZSBhcmUgcHJvYmFibHkgc29tZSBzb3J0IG9mIGNvbnRyb2wgYW5kIHZlcnNpb24gYml0cywgZGF0YSBsZW5ndGggYW5kIHNpZ25hbCB2YWx1ZXMgZm9yIHRoZSBHUElPIG11eC4gV2UnbGwgbmVlZCB0byBrbm93IHRoZSBzcGVjaWZpY3Mgb2YgdGhvc2UgZmllbGRzIHRvIHVzZSB0aGVtLiBMZXQncyBzZWUgaWYgdGhvc2UgZmllbGRzIGFyZSBkZWZpbmVkIHNvbWV3aGVyZSBpbiB0aGUgc291cmNlIGNvZGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2Nzg0LCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ5OjM1LjUxNTg2OTcxNFoiLCJTZXEiOjU0LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoyNzUxODAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb3JlLmhcIixcbiAgXCJGaXJzdExpbmVcIjogMzIxNixcbiAgXCJMaW5lQ291bnRcIjogNTBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiMzIxNjpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4IHtcXG4zMjE3OlxcdFxcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xcbjMyMTg6XFx0XFx0dTggZnZlcjsgLyogRkNYX1ZFUl9HUElPREJHICovXFxuMzIxOTpcXHRcXHR1OCBkbGVuO1xcbjMyMjA6XFx0XFx0dTggc2lnO1xcbjMyMjE6XFx0XFx0dTggZ3BpbztcXG4zMjIyOlxcdH07XFxuMzIyMzpcXHRcXG4zMjI0OlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfcHRhIHtcXG4zMjI1OlxcdFxcdHU4IHR5cGU7IC8qIGdwaW9fdHlwZSAqL1xcbjMyMjY6XFx0XFx0dTggZnZlcjsgLyogRkNYX1ZFUl9HUElPREJHICovXFxuMzIyNzpcXHRcXHR1OCBkbGVuO1xcbjMyMjg6XFx0XFx0dTggbWFwX2xvdztcXG4zMjI5OlxcdFxcdHU4IG1hcF9oaWdoO1xcbjMyMzA6XFx0fTtcXG4zMjMxOlxcdFxcbjMyMzI6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX2V4dF9tYiB7XFxuMzIzMzpcXHRcXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cXG4zMjM0OlxcdFxcdHU4IGZ2ZXI7IC8qIEZDWF9WRVJfR1BJT0RCRyAqL1xcbjMyMzU6XFx0XFx0dTggZGxlbjtcXG4zMjM2OlxcdFxcdHU4IG1hcF9sb3c7XFxuMzIzNzpcXHRcXHR1OCBtYXBfaGlnaDtcXG4zMjM4OlxcdH07XFxuMzIzOTpcXHRcXG4zMjQwOlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb19leHRfc3dvdXQge1xcbjMyNDE6XFx0XFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXFxuMzI0MjpcXHRcXHR1OCBmdmVyOyAvKiBGQ1hfVkVSX0dQSU9EQkcgKi9cXG4zMjQzOlxcdFxcdHU4IGRsZW47XFxuMzI0NDpcXHRcXHR1OCBtYXBfbG93O1xcbjMyNDU6XFx0XFx0dTggbWFwX2hpZ2g7XFxuMzI0NjpcXHR9O1xcbjMyNDc6XFx0XFxuMzI0ODpcXHRzdHJ1Y3QgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fZXh0X3N3aW4ge1xcbjMyNDk6XFx0XFx0dTggdHlwZTsgLyogZ3Bpb190eXBlICovXFxuMzI1MDpcXHRcXHR1OCBmdmVyOyAvKiBGQ1hfVkVSX0dQSU9EQkcgKi9cXG4zMjUxOlxcdFxcdHU4IGRsZW47XFxuMzI1MjpcXHRcXHR1OCBpbl9tYXBfbG93O1xcbjMyNTM6XFx0XFx0dTggaW5fbWFwX2hpZ2g7XFxuMzI1NDpcXHRcXHR1OCBpbnRfbWFwX2xvdztcXG4zMjU1OlxcdFxcdHU4IGludF9tYXBfaGlnaDtcXG4zMjU2OlxcdH07XFxuMzI1NzpcXHRcXG4zMjU4OlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3Bpb18yYiB7XFxuMzI1OTpcXHRcXHR1OCB0eXBlOyAvKiBncGlvX3R5cGUgKi9cXG4zMjYwOlxcdFxcdHU4IGZ2ZXI7IC8qIEZDWF9WRVJfR1BJT0RCRyAqL1xcbjMyNjE6XFx0XFx0dTggZGxlbjtcXG4zMjYyOlxcdFxcdHU4IGRhdGFbQ1hER1BJT19TRVRfTDJdO1xcbjMyNjM6XFx0fSBfX3BhY2tlZDtcXG4zMjY0OlxcdFxcbjMyNjU6XFx0c3RydWN0IHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvXzRiIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMjZUMDM6NDk6MzUuNTE2MTQ3MDI0WiIsIlNlcSI6NTUsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEyMzgxMjkxMzg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEdQSU8gTXV4IElzc3VlKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgdHJ5aW5nIHRvIGdldCB0byB0aGUgYm90dG9tIG9mIHRoZSBwcm9ibGVtLiBGaXJzdCwgSSBzZWUgd2UncmUgZGVhbGluZyB3aXRoIGEgYHJ0dzg5X2ZidGNfaDJjX3NldF9ncGlvX211eGAgc3RydWN0IOKAkyBpdCdzIDUgYnl0ZXMgaW4gc2l6ZSwgd2hpY2ggaXMgaW1wb3J0YW50IHRvIGtlZXAgaW4gbWluZC4gSSBxdWlja2x5IGNhbGN1bGF0ZSB0aGF0IHRoZSBgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fMmJgIHN0cnVjdCwgcGFydCBvZiB0aGUgdW5pb24sIGFsc28gdGFrZXMgdXAgdGhvc2UgNSBieXRlcy5cblxuSSd2ZSBnb3QgdGhlIHN0cnVjdHVyZXMgaGVyZSwgbm8gcGFkZGluZyBjb25jZXJucywgYWxsIGB1OGAgbWVtYmVycy4gVGhlIGZpeCBpcyB0YXJnZXRpbmcgYSBidWcgd2hlcmUgYSBmdW5jdGlvbiwgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCwgbWlnaHQgcmV0dXJuIGBCVENfREJHX05VTWAgKHdoaWNoIGlzIDMyLCBJIHJlbWVtYmVyKSBvbiBlcnJvciwgYnV0IHRoZSBleGlzdGluZyBjaGVjayBpbiB0aGUgY29kZSB3YXMgZXJyb25lb3VzbHkgbG9va2luZyBmb3IgYD09IDB4ZmZgLiBUaGF0IG1lYW5zIHRoZSBlcnJvciBjYXNlIHdhc24ndCBiZWluZyBjYXVnaHQuIFRoZSBsb2dpYyBhbGxvd2VkIGBCVENfREJHX05VTWAgdG8gYmUgdXNlZCB3aGVuIGl0IHNob3VsZG4ndCwgbWVhbmluZyBpdCB3YXMgdXNlZCBhcyBgc2lnYCB3aGVuIGFuIGVycm9yIGhhcHBlbmVkLCB0aGF0IGlzIHRoZSBmbGF3LiBUaGUgcGF0Y2gganVzdCBjaGFuZ2VzIHRoZSBjaGVjayB0byBgXHUwMDNlPSBCVENfREJHX05VTWAsIHNvIHRoYXQgYW4gZXJyb3IgaXMgY2F1Z2h0LlxuXG5UaGUgcmVhbCBxdWVzdGlvbiBoZXJlLCBhcyB3aXRoIGFueSBtZW1vcnktcmVsYXRlZCBpc3N1ZSwgaXMgd2hldGhlciB0aGVyZSdzIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGluIHBsYXkuIEkgaGF2ZSB0byB2ZXJpZnkgdGhhdC4gTG9va2luZyBhdCB0aGUgY29kZSBzbmlwcGV0LCBJJ20gcHJldHR5IGNvbmZpZGVudCB0aGF0IHRoZSBgYnVmYCB0aGF0IGVuZHMgdXAgYmVpbmcgY29waWVkIGlzIGZ1bGx5IGluaXRpYWxpemVkLiBUaGUgYGdwaW8tXHUwMDNlbXV4LmRhdGFgIG1lbWJlciwgd2hpY2ggaXMgb2YgdHlwZSBgcnR3ODlfZmJ0Y19oMmNfc2V0X2dwaW9fbXV4YCwgaXMgc2V0IHVwLCBhbGwgNSBieXRlcywgYmVmb3JlIHRoZSBgbWVtY3B5YC4gRWFjaCBtZW1iZXIg4oCTIGB0eXBlYCwgYGZ2ZXJgLCBgZGxlbmAsIGBzaWdgLCBgZ3Bpb2Ag4oCTIGlzIGV4cGxpY2l0bHkgYXNzaWduZWQgYSB2YWx1ZS4gVGhlIHVuaW9uIGBsMl9oMmNgIGlzIHRoZW4gcHJvcGVybHkgaW5pdGlhbGl6ZWQsIGFuZCBmaW5hbGx5IGNvcGllZCB0byBgYnVmYC4gTm8gdW5pbml0aWFsaXplZCBtZW1vcnkgaXMgZXZlciByZWFkIG9yIHNlbnQgb3V0LlxuXG5TbywgdGhpcyBpc24ndCBhbiB1bmluaXRpYWxpemVkIG1lbW9yeSBpc3N1ZS4gSXQncyBhIGxvZ2ljIGJ1Zy4gQSBiYWQgdmFsdWUsIGBCVENfREJHX05VTWAsIGlzIGJlaW5nIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBJIGtub3cgSSBzaG91bGQgYmUgbG9va2luZyBhdCB3aGVyZSB0aGF0IGBzaWdgIHZhbHVlIGlzIHVzZWQuIElzIGl0IGJlaW5nIHVzZWQgYXMgYW4gYXJyYXkgaW5kZXggc29tZXdoZXJlPyBJdCdzIHNlbnQgdG8gdGhlIGZpcm13YXJlIGluIGBfZndfc2V0X2dwaW9gLCBidXQgdGhhdCdzIG91dCBvZiBLTVNBTidzIHNjb3BlLiBBbmQgSSB0aGluayB0aGF0IGlzIHRoZSBjcnV4IG9mIHRoZSBwcm9ibGVtLCBpcyBgc2lnYCBiZWluZyB1c2VkIGFzIGFuIGluZGV4IGludG8gYW4gYXJyYXkgaW5zaWRlIHRoZSBmaXJtd2FyZT8gSW4gdGhlIGtlcm5lbCwgaXQgaXMgc3RvcmVkIGluIGBidGMtXHUwMDNlZ3Bpby5tdXguZGF0YS5zaWdgLiBJIGhhdmUgdG8gc2VlIHdoZXRoZXIgYW5kIHdoZXJlIGBidGMtXHUwMDNlZ3Bpb2AgaXMgcmVhZCB3aXRoaW4gdGhlIGtlcm5lbCwgdG8gc2VlIGlmIHRoZXJlJ3MgYW55IHdheSB0aGlzIGNvdWxkIGNhdXNlIHByb2JsZW1zLiBUaGF0J3MgdGhlIG5leHQgc3RlcC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgwODIsIk91dHB1dFRva2VucyI6MzcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4OTEsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0yNlQwMzo0OTo0Ny44OTc0NDA1NDNaIiwiU2VxIjo1NiwiTmVzdGluZyI6MywiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NTAyMjA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImJ0Yy1cXHUwMDNlZ3Bpb1wiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYz0zMzMzPXN0YXRpYyB2b2lkIF9md19zZXRfZ3BpbyhzdHJ1Y3QgcnR3ODlfZGV2ICpydHdkZXYsIHU4IHR5cGUsIHUzMiB2YWwpXFxuLS1cXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYy0zMzM1LVxcdHN0cnVjdCBydHc4OV9idGMgKmJ0YyA9IFxcdTAwMjZydHdkZXYtXFx1MDAzZWJ0YztcXG5kcml2ZXJzL25ldC93aXJlbGVzcy9yZWFsdGVrL3J0dzg5L2NvZXguYzozMzM2OlxcdHN0cnVjdCBydHc4OV9mYnRjX2gyY19zZXRfZ3BpbyAqZ3BpbyA9IFxcdTAwMjZidGMtXFx1MDAzZWdwaW87XFxuZHJpdmVycy9uZXQvd2lyZWxlc3MvcmVhbHRlay9ydHc4OS9jb2V4LmMtMzMzNy1cXHRjb25zdCBzdHJ1Y3QgcnR3ODlfYnRjX3ZlciAqdmVyID0gYnRjLVxcdTAwM2V2ZXI7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ5OjQ3Ljk1NDk0ODAzWiIsIlNlcSI6NTcsIk5lc3RpbmciOjMsIlR5cGUiOiJsbG0iLCJOYW1lIjoia21zYW4tZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjkwMDU2Mzk0MjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQW5hbHlzaXMgb2YgdGhlIFBhdGNoKipcblxuT2theSwgc28gbG9va2luZyBhdCB0aGlzIHBhdGNoLCBpdCdzIHByZXR0eSBzdHJhaWdodGZvcndhcmQuIEl0IHNlZW1zIGxpa2UgYGJ0Yy1cdTAwM2VncGlvYCBpcyBqdXN0IGEgdGVtcG9yYXJ5IHN0cnVjdHVyZSB1c2VkIHRvIGZvcm1hdCB0aGUgSDJDIGNvbW1hbmQuIEFoLCByaWdodCwgdGhhdCdzIHBhcnQgb2YgdGhlIGBydHc4OV9idGNgIHN0cnVjdCDigJMgZ290IGl0LiBJIHdhcyB3b3JyaWVkIGZvciBhIHNlY29uZCBhYm91dCBwb3RlbnRpYWwgdW5pbml0aWFsaXplZCBtZW1vcnkgaXNzdWVzLCBidXQgaXQgc2VlbXMgdGhhdCdzIG5vdCB0aGUgY2FzZS4gVGhpcyBwYXRjaCBzcGVjaWZpY2FsbHkgYWRkcmVzc2VzIGEgbG9naWMgYnVnLlxuXG5Fc3NlbnRpYWxseSwgdGhlIGJ1ZyBib2lscyBkb3duIHRvIGFuIGluY29ycmVjdCBib3VuZHMgY2hlY2sgaW4gdGhlIGBfZndfc2V0X2dwaW9gIGZ1bmN0aW9uLiBUaGUgY29kZSB3YXMgdXNpbmcgYD09IDB4ZmZgICgyNTUpIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YgYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCwgYnV0IGl0IHNob3VsZCBoYXZlIGJlZW4gY2hlY2tpbmcgYWdhaW5zdCBgXHUwMDNlPSBCVENfREJHX05VTWAuIFRoZSBjcnVjaWFsIGRldGFpbCBpcyB0aGF0IGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgcmV0dXJucyBgQlRDX0RCR19OVU1gLCB3aGljaCBpcyAzMiwgdXBvbiBhbiBlcnJvci4gU28sIHRoZSBvcmlnaW5hbCBjaGVjayB3YXMgbGV0dGluZyBhbiBpbnZhbGlkIHNpZ25hbCBJRCAoMzIpIHNsaXAgdGhyb3VnaCwgdHJlYXRpbmcgaXQgYXMgYSB2YWxpZCBzaWduYWwuXG5cblRoaXMgaXMgYSBjbGVhbiwgc2ltcGxlIGxvZ2ljIGVycm9yLiBUaGUgZ29vZCBuZXdzIGlzLCB0aGVyZSdzIG5vIHVuaW5pdGlhbGl6ZWQgbWVtb3J5IGludm9sdmVkIGhlcmUuIFRoZSBkYXRhIGJlaW5nIHNlbnQgdG8gdGhlIGZpcm13YXJlIGlzIGFsbCBleHBsaWNpdGx5IGluaXRpYWxpemVkIGJlZm9yZSBiZWluZyBjb3BpZWQgaW50byB0aGUgYGdwaW8tXHUwMDNlbXV4LmRhdGFgIHN0cnVjdHVyZS4gVGhhdCBtYWtlcyB0aGUgcG90ZW50aWFsIGZvciBhIEtNU0FOIGlzc3VlIG5lZ2xpZ2libGUuIFRoZXJlZm9yZSwgSSBkb27igJl0IHRoaW5rIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyB3YXJyYW50ZWQuIFRoZSBmaXggaXRzZWxmIGlzIHByZXR0eSBjbGVhcjogaW1wcm92ZSB0aGF0IGJvdW5kcyBjaGVjay5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk4MjQsIk91dHB1dFRva2VucyI6MTg4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzY0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTI2VDAzOjQ5OjU2Ljk2MDU5MDk0NVoiLCJTZXEiOjU4LCJOZXN0aW5nIjozLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJzZXQtcmVzdWx0cyIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2ODUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiS01TQU5SZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggZml4ZXMgYSBsb2dpYyBidWcgaW4gYF9md19zZXRfZ3Bpb2Agd2hlcmUgdGhlIHJldHVybiB2YWx1ZSBvZiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgIHdhcyBpbmNvcnJlY3RseSBjaGVja2VkIGFnYWluc3QgYDB4ZmZgIGluc3RlYWQgb2YgYFxcdTAwM2U9IEJUQ19EQkdfTlVNYC4gYF9nZXRfZ3Bpb3NpZ19mb3JfdmVyYCByZXR1cm5zIGBCVENfREJHX05VTWAgKHdoaWNoIGlzIDMyKSBvbiBlcnJvci4gQmVjYXVzZSBvZiB0aGUgaW5jb3JyZWN0IGNoZWNrLCB0aGUgZXJyb3IgdmFsdWUgd2FzIG5vdCBjYXVnaHQgYW5kIHdhcyBzZW50IHRvIHRoZSBmaXJtd2FyZSBhcyBhIHZhbGlkIHNpZ25hbCBJRC4gVGhpcyBkb2VzIG5vdCBpbnZvbHZlIGFueSB1bmluaXRpYWxpemVkIG1lbW9yeS4gQWxsIGZpZWxkcyBvZiB0aGUgYGdwaW8tXFx1MDAzZW11eC5kYXRhYCBzdHJ1Y3R1cmUgYXJlIGV4cGxpY2l0bHkgaW5pdGlhbGl6ZWQgYmVmb3JlIGJlaW5nIGNvcGllZCB0byB0aGUgYnVmZmVyIGFuZCBzZW50IHRvIHRoZSBmaXJtd2FyZS4gVGhlcmVmb3JlLCB0aGlzIGJ1ZyBjYW5ub3QgYmUgZGV0ZWN0ZWQgYnkgS01TQU4sIGFuZCBhIGRlZGljYXRlZCBLTVNBTiBmdXp6aW5nIHNlc3Npb24gaXMgbm90IGp1c3RpZmllZC5cIixcbiAgXCJOZWVkc0tNU0FOXCI6IGZhbHNlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJLTVNBTlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBmaXhlcyBhIGxvZ2ljIGJ1ZyBpbiBgX2Z3X3NldF9ncGlvYCB3aGVyZSB0aGUgcmV0dXJuIHZhbHVlIG9mIGBfZ2V0X2dwaW9zaWdfZm9yX3ZlcmAgd2FzIGluY29ycmVjdGx5IGNoZWNrZWQgYWdhaW5zdCBgMHhmZmAgaW5zdGVhZCBvZiBgXFx1MDAzZT0gQlRDX0RCR19OVU1gLiBgX2dldF9ncGlvc2lnX2Zvcl92ZXJgIHJldHVybnMgYEJUQ19EQkdfTlVNYCAod2hpY2ggaXMgMzIpIG9uIGVycm9yLiBCZWNhdXNlIG9mIHRoZSBpbmNvcnJlY3QgY2hlY2ssIHRoZSBlcnJvciB2YWx1ZSB3YXMgbm90IGNhdWdodCBhbmQgd2FzIHNlbnQgdG8gdGhlIGZpcm13YXJlIGFzIGEgdmFsaWQgc2lnbmFsIElELiBUaGlzIGRvZXMgbm90IGludm9sdmUgYW55IHVuaW5pdGlhbGl6ZWQgbWVtb3J5LiBBbGwgZmllbGRzIG9mIHRoZSBgZ3Bpby1cXHUwMDNlbXV4LmRhdGFgIHN0cnVjdHVyZSBhcmUgZXhwbGljaXRseSBpbml0aWFsaXplZCBiZWZvcmUgYmVpbmcgY29waWVkIHRvIHRoZSBidWZmZXIgYW5kIHNlbnQgdG8gdGhlIGZpcm13YXJlLiBUaGVyZWZvcmUsIHRoaXMgYnVnIGNhbm5vdCBiZSBkZXRlY3RlZCBieSBLTVNBTiwgYW5kIGEgZGVkaWNhdGVkIEtNU0FOIGZ1enppbmcgc2Vzc2lvbiBpcyBub3QganVzdGlmaWVkLlwiLFxuICBcIk5lZWRzS01TQU5cIjogZmFsc2Vcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfV07CgkJCWlmICghcmF3RGF0YSB8fCByYXdEYXRhLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSk7CgkJCWRyYXdEdXJhdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCQlkcmF3VG9rZW5Db25zdW1wdGlvbkNoYXJ0KHJhd0RhdGEpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1N1bW1hcnlUYWJsZXMocmF3RGF0YSkgewoJCQljb25zdCBzdGF0cyA9IHsKCQkJCWxsbTogeyBjb3VudDogMCwgdG9rZW5zOiAwLCBkdXJhdGlvbjogMCB9LAoJCQkJdG9vbDogeyBjb3VudDogMCwgZHVyYXRpb246IDAgfQoJCQl9OwoKCQkJcmF3RGF0YS5mb3JFYWNoKHMgPT4gewoJCQkJY29uc3QgZHVyID0gcy5EdXJhdGlvbiAvIDEwMDAwMDAwMDA7IAoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIpIHsKCQkJCQlzdGF0cy5sbG0uY291bnQrKzsKCQkJCQlzdGF0cy5sbG0udG9rZW5zICs9IChzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zKTsKCQkJCQlzdGF0cy5sbG0uZHVyYXRpb24gKz0gZHVyOwoJCQkJfSBlbHNlIGlmIChzLlR5cGUgPT09ICJ0b29sIikgewoJCQkJCXN0YXRzLnRvb2wuY291bnQrKzsKCQkJCQlzdGF0cy50b29sLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0KCQkJfSk7CgoJCQljb25zdCBhdmdMbG1EdXIgPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS5kdXJhdGlvbiAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z0xsbVRva2VuID0gc3RhdHMubGxtLmNvdW50ID4gMCA/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-workflowhzp4h[1] Phase: Succeeded StartedAt: 2026-08-26 03:50:09 +0000 UTC FinishedAt: 2026-08-26 03:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-26 03:50:09 +0000 UTC FinishedAt: 2026-08-26 03:50:09 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2] Phase: Succeeded StartedAt: 2026-08-26 03:50:09 +0000 UTC FinishedAt: 2026-08-26 04:30:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-26 03:50:09 +0000 UTC FinishedAt: 2026-08-26 04:30:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-26 03:50:09 +0000 UTC FinishedAt: 2026-08-26 03:50:19 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-26 03:50:09 +0000 UTC FinishedAt: 2026-08-26 03:50:13 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowhzp4h/series-workflowhzp4h-convert-artifact-1762537348/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-26 03:50:19 +0000 UTC FinishedAt: 2026-08-26 04:06:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-26 03:50:19 +0000 UTC FinishedAt: 2026-08-26 04:06:29 +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:*5d5beec2-bc35-4864-adb3-ab72bcbe0281,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-workflowhzp4h/series-workflowhzp4h-convert-artifact-1762537348/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": "06ceb714-5ccc-480c-817c-2c588b2d67cf", "success": true },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-workflowhzp4h/series-workflowhzp4h-build-action-1947333826/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-26 03:50:19 +0000 UTC FinishedAt: 2026-08-26 04:06:19 +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:*5d5beec2-bc35-4864-adb3-ab72bcbe0281,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-workflowhzp4h/series-workflowhzp4h-convert-artifact-1762537348/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": "06ceb714-5ccc-480c-817c-2c588b2d67cf", "success": true },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-workflowhzp4h/series-workflowhzp4h-build-action-1947333826/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-26 04:06:29 +0000 UTC FinishedAt: 2026-08-26 04:06:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-26 04:06:29 +0000 UTC FinishedAt: 2026-08-26 04:06:29 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-26 04:06:29 +0000 UTC FinishedAt: 2026-08-26 04:06:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-26 04:06:29 +0000 UTC FinishedAt: 2026-08-26 04:06:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},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-workflowhzp4h/series-workflowhzp4h-convert-artifact-75588611/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-26 04:06:40 +0000 UTC FinishedAt: 2026-08-26 04:08:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-26 04:06:40 +0000 UTC FinishedAt: 2026-08-26 04:08:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*06ceb714-5ccc-480c-817c-2c588b2d67cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,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-workflowhzp4h/series-workflowhzp4h-build-action-1947333826/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-26 04:08:45 +0000 UTC FinishedAt: 2026-08-26 04:08:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-26 04:08:45 +0000 UTC FinishedAt: 2026-08-26 04:08:45 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-26 04:08:45 +0000 UTC FinishedAt: 2026-08-26 04:25:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-26 04:08:45 +0000 UTC FinishedAt: 2026-08-26 04:25:08 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,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:*5d5beec2-bc35-4864-adb3-ab72bcbe0281,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-workflowhzp4h/series-workflowhzp4h-convert-artifact-75588611/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": "08827814-83b2-4b03-83c9-88bb110409c5", "success": true },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-workflowhzp4h/series-workflowhzp4h-build-action-275911351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-26 04:08:45 +0000 UTC FinishedAt: 2026-08-26 04:24:58 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,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:*5d5beec2-bc35-4864-adb3-ab72bcbe0281,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-workflowhzp4h/series-workflowhzp4h-convert-artifact-75588611/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": "08827814-83b2-4b03-83c9-88bb110409c5", "success": true },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-workflowhzp4h/series-workflowhzp4h-build-action-275911351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-26 04:25:08 +0000 UTC FinishedAt: 2026-08-26 04:25:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-26 04:25:08 +0000 UTC FinishedAt: 2026-08-26 04:25:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-26 04:25:08 +0000 UTC FinishedAt: 2026-08-26 04:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-26 04:25:08 +0000 UTC FinishedAt: 2026-08-26 04:27:17 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*08827814-83b2-4b03-83c9-88bb110409c5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,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-workflowhzp4h/series-workflowhzp4h-build-action-275911351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },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-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-26 04:27:27 +0000 UTC FinishedAt: 2026-08-26 04:30:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-26 04:27:27 +0000 UTC FinishedAt: 2026-08-26 04:30:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*06ceb714-5ccc-480c-817c-2c588b2d67cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*08827814-83b2-4b03-83c9-88bb110409c5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,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-workflowhzp4h/series-workflowhzp4h-build-action-1947333826/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,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-workflowhzp4h/series-workflowhzp4h-build-action-275911351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-26 04:27:27 +0000 UTC FinishedAt: 2026-08-26 04:27:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-26 04:27:27 +0000 UTC FinishedAt: 2026-08-26 04:27:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},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-workflowhzp4h/series-workflowhzp4h-convert-artifact-104331548/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-26 04:27:27 +0000 UTC FinishedAt: 2026-08-26 04:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-26 04:27:27 +0000 UTC FinishedAt: 2026-08-26 04:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-26 04:27:27 +0000 UTC FinishedAt: 2026-08-26 04:27:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-26 04:27:37 +0000 UTC FinishedAt: 2026-08-26 04:30:42 +0000 UTC Input: nil Output: nil --------- Name: series-workflowhzp4h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["rtw89_btc_ntfy_init","rtw89_core_start"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"66498c75b4f8017f62d720d9b59675bdf3abce91","config_name":"upstream-apparmor-kasan.config","enable_configs":["RTW89_8851BU","RTW89_8852AU","RTW89_8852BU","RTW89_8852CU","RTW89_8922AU","RTW89_USB"],"series_id":"99657667-de12-40ed-aa6e-95c2c3865fbf","tree_name":"torvalds","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-26 04:27:37 +0000 UTC FinishedAt: 2026-08-26 04:30:22 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*06ceb714-5ccc-480c-817c-2c588b2d67cf,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*08827814-83b2-4b03-83c9-88bb110409c5,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,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-workflowhzp4h/series-workflowhzp4h-build-action-1947333826/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,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-workflowhzp4h/series-workflowhzp4h-build-action-275911351/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.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-workflowhzp4h/series-workflowhzp4h-convert-artifact-104331548/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}