Name: series-workflowjgqhn Phase: Succeeded StartedAt: 2026-07-29 13:54:46 +0000 UTC FinishedAt: 2026-07-29 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[0] Phase: Succeeded StartedAt: 2026-07-29 13:54:46 +0000 UTC FinishedAt: 2026-07-29 14:01:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 13:54:46 +0000 UTC FinishedAt: 2026-07-29 14:01:55 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "318b6ee3-6efd-4e75-8d45-f098e37fcef7" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "kvm_gpc_refresh", "kvm_gpc_activate", "kvm_gpc_activate_hva" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEzOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9ncGNfcmVmcmVzaCYjMzQ7LAogICAgJiMzNDtrdm1fZ3BjX2FjdGl2YXRlJiMzNDssCiAgICAmIzM0O2t2bV9ncGNfYWN0aXZhdGVfaHZhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFuZCBsb2NrZGVwIGFzc2VydGlvbnMgaW4gYF9fa3ZtX2dwY19yZWZyZXNoYCB3aXRoaW4gdGhlIEtWTSBwZm5jYWNoZSBsb2dpYy4gSXQgYXZvaWRzIHRha2luZyB0aGUgYGdwYy1cdTAwM2Vsb2NrYCBpZiB0aGUgY2FjaGUgaXMgbm90IGFjdGl2ZSwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEtWTSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTM6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmN2EyOTMwYmI4OWEzMmZjMWFiOWM4YzgyMmIzMmE2YjRiNjBlMjc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTM6NTk6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0vcGZuY2FjaGUuYyBiL3ZpcnQva3ZtL3BmbmNhY2hlLmNcbmluZGV4IDcyOGQyYzFiNDg4YTguLmZjZmQ1NTU1YjkxYjkgMTAwNjQ0XG4tLS0gYS92aXJ0L2t2bS9wZm5jYWNoZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi92aXJ0L2t2bS9wZm5jYWNoZS5jXG5AQCAtMjYzLDE5ICYjNDM7MjYzLDE3IEBAIHN0YXRpYyBpbnQgX19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsXG4gXHR2b2lkICpvbGRfa2h2YTtcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZncGMtXHUwMDNlcmVmcmVzaF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFncGMtXHUwMDNlYWN0aXZlKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0LyogRWl0aGVyIGdwYSBvciB1aHZhIG11c3QgYmUgdmFsaWQsIGJ1dCBub3QgYm90aCAqL1xuIFx0aWYgKFdBUk5fT05fT05DRShrdm1faXNfZXJyb3JfZ3BhKGdwYSkgPT0ga3ZtX2lzX2Vycm9yX2h2YSh1aHZhKSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZncGMtXHUwMDNlcmVmcmVzaF9sb2NrKTtcbi1cbiBcdHdyaXRlX2xvY2tfaXJxKFx1MDAyNmdwYy1cdTAwM2Vsb2NrKTtcbiBcbi1cdGlmICghZ3BjLVx1MDAzZWFjdGl2ZSkge1xuLVx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRnb3RvIG91dF91bmxvY2s7XG4tXHR9XG4tXG4gXHRvbGRfcGZuID0gZ3BjLVx1MDAzZXBmbjtcbiBcdG9sZF9raHZhID0gKHZvaWQgKilQQUdFX0FMSUdOX0RPV04oKHVpbnRwdHJfdClncGMtXHUwMDNla2h2YSk7XG4gXHRvbGRfdWh2YSA9IFBBR0VfQUxJR05fRE9XTihncGMtXHUwMDNldWh2YSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTM6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9ncGNfcmVmcmVzaCYjMzQ7LAogICAgJiMzNDtrdm1fZ3BjX2FjdGl2YXRlJiMzNDssCiAgICAmIzM0O2t2bV9ncGNfYWN0aXZhdGVfaHZhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFuZCBsb2NrZGVwIGFzc2VydGlvbnMgaW4gYF9fa3ZtX2dwY19yZWZyZXNoYCB3aXRoaW4gdGhlIEtWTSBwZm5jYWNoZSBsb2dpYy4gSXQgYXZvaWRzIHRha2luZyB0aGUgYGdwYy1cdTAwM2Vsb2NrYCBpZiB0aGUgY2FjaGUgaXMgbm90IGFjdGl2ZSwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEtWTSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmN2EyOTMwYmI4OWEzMmZjMWFiOWM4YzgyMmIzMmE2YjRiNjBlMjc1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMTM6NTk6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9wZm5jYWNoZS5jIGIvdmlydC9rdm0vcGZuY2FjaGUuYwppbmRleCA3MjhkMmMxYjQ4OGE4Li5mY2ZkNTU1NWI5MWI5IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9wZm5jYWNoZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL3BmbmNhY2hlLmMKQEAgLTI2MywxOSAmIzQzOzI2MywxNyBAQCBzdGF0aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbAogCXZvaWQgKm9sZF9raHZhOwogCWludCByZXQ7CiAKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2dwYy0mZ3Q7cmVmcmVzaF9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKCFncGMtJmd0O2FjdGl2ZSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCS8qIEVpdGhlciBncGEgb3IgdWh2YSBtdXN0IGJlIHZhbGlkLCBidXQgbm90IGJvdGggKi8KIAlpZiAoV0FSTl9PTl9PTkNFKGt2bV9pc19lcnJvcl9ncGEoZ3BhKSA9PSBrdm1faXNfZXJyb3JfaHZhKHVodmEpKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7Z3BjLSZndDtyZWZyZXNoX2xvY2spOwotCiAJd3JpdGVfbG9ja19pcnEoJmFtcDtncGMtJmd0O2xvY2spOwogCi0JaWYgKCFncGMtJmd0O2FjdGl2ZSkgewotCQlyZXQgPSAtRUlOVkFMOwotCQlnb3RvIG91dF91bmxvY2s7Ci0JfQotCiAJb2xkX3BmbiA9IGdwYy0mZ3Q7cGZuOwogCW9sZF9raHZhID0gKHZvaWQgKilQQUdFX0FMSUdOX0RPV04oKHVpbnRwdHJfdClncGMtJmd0O2todmEpOwogCW9sZF91aHZhID0gUEFHRV9BTElHTl9ET1dOKGdwYy0mZ3Q7dWh2YSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEzOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gUEZOIENhY2hlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHZpcnQva3ZtL3BmbmNhY2hlLmNgLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgaXQmIzM5O3Mgc2hpZnRpbmcgYXJvdW5kIGEga2V5IGNoZWNrIHJlbGF0ZWQgdG8gYGdwYy0mZ3Q7YWN0aXZlYCB3aXRoaW4gdGhlIGBfX2t2bV9ncGNfcmVmcmVzaGAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW92aW5nIHRoZSBgaWYgKCFncGMtJmd0O2FjdGl2ZSlgIGNoZWNrICpvdXRzaWRlKiB0aGUgYHdyaXRlX2xvY2tfaXJxKCZhbXA7Z3BjLSZndDtsb2NrKTtgIGJsb2NrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGRpZmYuLi4gcmlnaHQgaGVyZS4KCkFoLCBJIHNlZSBpdCBub3cuIFRoZSBjb2RlIGlzIHN0cnVjdHVyZWQgbGlrZSB0aGlzOiAKYGBgYwomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7Z3BjLSZndDtyZWZyZXNoX2xvY2spOwomIzQzOwomIzQzOwlpZiAoIWdwYy0mZ3Q7YWN0aXZlKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CmBgYAoKTm93LCB0aGUgY2hlY2sgZm9yIGBncGMtJmd0O2FjdGl2ZWAgaXMgKmJlZm9yZSogdGhlIGxvY2sgYWNxdWlzaXRpb24uIFByZXZpb3VzbHksIGl0IHdhcyAqaW5zaWRlKi4KCmBgYGMKIAl3cml0ZV9sb2NrX2lycSgmYW1wO2dwYy0mZ3Q7bG9jayk7CiAKLQlpZiAoIWdwYy0mZ3Q7YWN0aXZlKSB7Ci0JCXJldCA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0X3VubG9jazsKLQl9CmBgYAoKVGhpcyAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIElmIGBncGMtJmd0O2FjdGl2ZWAgaXMgZmFsc2UsIGl0JiMzOTtzIG5vdyBwb3NzaWJsZSB0byBmYWlsIHdpdGhvdXQgYWNxdWlyaW5nIGEgc3BpbmxvY2ssIG9yIG1vcmUgcHJlY2lzZWx5LCB3aXRob3V0IGFjcXVpcmluZyBhIHdyaXRlIGxvY2sgb24gYGdwYy0mZ3Q7bG9ja2AuIFRoZSBgbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2dwYy0mZ3Q7cmVmcmVzaF9sb2NrKTtgIGlzIGFsc28gbW92ZWQgYWJvdmUsIGJ1dCB0aGlzIGxpa2VseSBkb2VzbiYjMzk7dCBoYXZlIGFzIG11Y2ggb2YgYW4gaW1wYWN0LgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzaXR1YXRpb25zIGNvdWxkIHRyaWdnZXIgdGhpcyBgIWdwYy0mZ3Q7YWN0aXZlYCBjb25kaXRpb24uIFRoaXMgY2hhbmdlIGFmZmVjdHMgdGhlIGxvY2sgYWNxdWlzaXRpb24gYmVoYXZpb3IuIElmIGBncGMtJmd0O2FjdGl2ZWAgaXMgZmFsc2UsIGl0IG1lYW5zIHRoYXQgdGhlIHdyaXRlIGxvY2sgaXMgbmV2ZXIgbmVlZGVkLiBCZWZvcmUgdGhpcyBjaGFuZ2UsIHRoZSBsb2NrIHdhcyB1bm5lY2Vzc2FyaWx5IGFjcXVpcmVkLCB3aGVuIGl0IHdhc24mIzM5O3QgcmVxdWlyZWQuIEkgbmVlZCB0byB0cmFjayB0aGUgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLiBMZXQgbWUgbG9vayB0aG9zZSB1cC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fa3ZtX2dwY19yZWZyZXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9wZm5jYWNoZS5jPTE1NT1zdGF0aWMga3ZtX3Bmbl90IGh2YV90b19wZm5fcmV0cnkoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYylcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1NS1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6MjU2OnN0YXRpYyBpbnQgX19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEpXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1Ny17XG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYz0zNjQ9aW50IGt2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIGxlbilcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM3OS1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6MzgwOlx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BjLVx1MDAzZWdwYSwgdWh2YSk7XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM4MS19XG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYz0zOTU9c3RhdGljIGludCBfX2t2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEsXG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy00MjEtXHR9XG52aXJ0L2t2bS9wZm5jYWNoZS5jOjQyMjpcdHJldHVybiBfX2t2bV9ncGNfcmVmcmVzaChncGMsIGdwYSwgdWh2YSk7XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ0NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29kZSBzbmlwcGV0cywgdGhpbmtpbmcgdGhyb3VnaCB0aGUgZmxvdyBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIGl0IG15c2VsZjoKCioqVHJhY2luZyB0aGUgR1BDIFJlZnJlc2ggTG9naWMqKgoKQWxyaWdodCwgc28gSSBzZWUgdGhhdCBib3RoIGBrdm1fZ3BjX3JlZnJlc2hgIGFuZCBgX19rdm1fZ3BjX2FjdGl2YXRlYCB1bHRpbWF0ZWx5IGNhbGwgYF9fa3ZtX2dwY19yZWZyZXNoYC4gVGhhdCBzdWdnZXN0cyBgX19rdm1fZ3BjX3JlZnJlc2hgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uLCB0aGUgd29ya2hvcnNlIG9mIHRoZSBncm91cC4gTm93LCBzaW5jZSBga3ZtX2dwY19yZWZyZXNoYCBpcyBlaXRoZXIgZXhwb3J0ZWQgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCB1c2VkIGluIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlIGJhc2UsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlLiBUbyBmdWxseSB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nLCBJIG5lZWQgdG8gbG9vayB1cHN0cmVhbSwgd2hpY2ggYWxzbyBhcHBsaWVzIHRvIGBfX2t2bV9ncGNfYWN0aXZhdGVgLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlICpjYWxsZXJzKiBvZiBib3RoIGBrdm1fZ3BjX3JlZnJlc2hgIGFuZCBgX19rdm1fZ3BjX2FjdGl2YXRlYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgY29udGV4dHMgaW4gd2hpY2ggdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIGFuZCBob3cgdGhleSBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBJZGVudGlmeWluZyB0aGUgb3JpZ2lucyB3aWxsIHNob3cgbWUgdGhlIGluaXRpYXRpbmcgZXZlbnRzIG9yIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZXNlIGFsbC1pbXBvcnRhbnQgcmVmcmVzaCBhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9ncGNfcmVmcmVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9MzI0Mj1zdGF0aWMgdm9pZCBrdm1fc2V0dXBfZ3Vlc3RfcHZjbG9jayhzdHJ1Y3QgcHZjbG9ja192Y3B1X3RpbWVfaW5mbyAqcmVmX2h2X2Nsb2NrLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0zMjU2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjMyNTc6XHRcdGlmIChrdm1fZ3BjX3JlZnJlc2goZ3BjLCBvZmZzZXQgJiM0Mzsgc2l6ZW9mKCpndWVzdF9odl9jbG9jaykpKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTMyNTgtXHRcdFx0cmV0dXJuO1xuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0zOD1zdGF0aWMgaW50IGt2bV94ZW5fc2hhcmVkX2luZm9faW5pdChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTUxLVxuYXJjaC94ODYva3ZtL3hlbi5jOjUyOlx0XHRyZXQgPSBrdm1fZ3BjX3JlZnJlc2goZ3BjLCBQQUdFX1NJWkUpO1xuYXJjaC94ODYva3ZtL3hlbi5jLTUzLVx0XHRpZiAocmV0KVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0xNTM9c3RhdGljIGludCB4ZW5fZ2V0X2d1ZXN0X3B2Y2xvY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy0xNjQtXG5hcmNoL3g4Ni9rdm0veGVuLmM6MTY1Olx0XHRyID0ga3ZtX2dwY19yZWZyZXNoKGdwYywgb2Zmc2V0ICYjNDM7IHNpemVvZigqaHZfY2xvY2spKTtcbmFyY2gveDg2L2t2bS94ZW4uYy0xNjYtXHRcdGlmIChyKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0zMjE9c3RhdGljIHZvaWQga3ZtX3hlbl91cGRhdGVfcnVuc3RhdGVfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2LCBib29sIGF0b21pYylcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDM4LVxuYXJjaC94ODYva3ZtL3hlbi5jOjQzOTpcdFx0aWYgKGt2bV9ncGNfcmVmcmVzaChncGMxLCB1c2VyX2xlbjEpKVxuYXJjaC94ODYva3ZtL3hlbi5jLTQ0MC1cdFx0XHRyZXR1cm47XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTYzOT12b2lkIGt2bV94ZW5faW5qZWN0X3BlbmRpbmdfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdilcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtNjU2LVxuYXJjaC94ODYva3ZtL3hlbi5jOjY1NzpcdFx0aWYgKGt2bV9ncGNfcmVmcmVzaChncGMsIHNpemVvZihzdHJ1Y3QgdmNwdV9pbmZvKSkpXG5hcmNoL3g4Ni9rdm0veGVuLmMtNjU4LVx0XHRcdHJldHVybjtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9Njk3PWludCBfX2t2bV94ZW5faGFzX2ludGVycnVwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnYpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTczMC1cbmFyY2gveDg2L2t2bS94ZW4uYzo3MzE6XHRcdGlmIChrdm1fZ3BjX3JlZnJlc2goZ3BjLCBzaXplb2Yoc3RydWN0IHZjcHVfaW5mbykpKSB7XG5hcmNoL3g4Ni9rdm0veGVuLmMtNzMyLVx0XHRcdC8qXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTE5MDE9c3RhdGljIGludCBrdm1feGVuX3NldF9ldnRjaG4oc3RydWN0IGt2bV94ZW5fZXZ0Y2huICp4ZSwgc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy0xOTQ0LVx0XHRpZHggPSBzcmN1X3JlYWRfbG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSk7XG5hcmNoL3g4Ni9rdm0veGVuLmM6MTk0NTpcdFx0cmMgPSBrdm1fZ3BjX3JlZnJlc2goZ3BjLCBQQUdFX1NJWkUpO1xuYXJjaC94ODYva3ZtL3hlbi5jLTE5NDYtXHRcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTE0OTE9Ym9vbCBrdm1fZ3BjX2NoZWNrKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHVuc2lnbmVkIGxvbmcgbGVuKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ5My0vKipcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNDk0OiAqIGt2bV9ncGNfcmVmcmVzaCAtIHVwZGF0ZSBhIHByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgY2FjaGUuXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ5NS0gKlxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNTA4LSAqL1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE1MDk6aW50IGt2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIGxlbik7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTUxMC1cbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTE1NT1zdGF0aWMga3ZtX3Bmbl90IGh2YV90b19wZm5fcmV0cnkoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYylcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1NS1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6MjU2OnN0YXRpYyBpbnQgX19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEpXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1Ny17XG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy0zNjMtXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjM2NDppbnQga3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHVuc2lnbmVkIGxvbmcgbGVuKVxudmlydC9rdm0vcGZuY2FjaGUuYy0zNjUte1xuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzc5LVxudmlydC9rdm0vcGZuY2FjaGUuYzozODA6XHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGMtXHUwMDNlZ3BhLCB1aHZhKTtcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzgxLX1cbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTM5NT1zdGF0aWMgaW50IF9fa3ZtX2dwY19hY3RpdmF0ZShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgdWh2YSxcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMS1cdH1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6NDIyOlx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BhLCB1aHZhKTtcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDIzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzI5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIFBGTiBDYWNoZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgY2hhbmdlIEkmIzM5O20gbG9va2luZyBhdCBpcyB0dWNrZWQgYXdheSBpbiBgdmlydC9rdm0vcGZuY2FjaGUuY2AuIEkgc2VlIGl0IG1vZGlmaWVzIHRoZSBgX19rdm1fZ3BjX3JlZnJlc2hgIGZ1bmN0aW9uLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQm90aCBga3ZtX2dwY19yZWZyZXNoYCBhbmQgYGt2bV9ncGNfYWN0aXZhdGVgIGNhbGwgaW50byB0aGlzLiBGcm9tIG15IGluaXRpYWwgZ2xhbmNlLCBga3ZtX2dwY19yZWZyZXNoYCBpdHNlbGYgZ2V0cyBjYWxsZWQgZnJvbSBjb2RlIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgIGFuZCBgYXJjaC94ODYva3ZtL3hlbi5jYC4gR2l2ZW4gdGhvc2UgbG9jYXRpb25zLCB0aGlzIGlzIGRlZmluaXRlbHkgdG91Y2hpbmcgY29yZSBLVk0ga2VybmVsIGxvZ2ljOyB0aGVyZSYjMzk7cyBubyB3YXkgYXJvdW5kIHRoYXQuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBtaW5vciB0d2VhazsgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQmIzM5O3MgYWx0ZXJpbmcgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBhY3RpdmF0aW9uIHBhdGguIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB3aGVyZSBga3ZtX2dwY19hY3RpdmF0ZWAgZ2V0cyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgbW9yZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9ncGNfYWN0aXZhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTI0Mjg9c3RhdGljIHZvaWQga3ZtX3dyaXRlX3N5c3RlbV90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3Qgc3lzdGVtX3RpbWUsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI0NDQtXHRpZiAoc3lzdGVtX3RpbWUgXHUwMDI2IDEpXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjQ0NTpcdFx0a3ZtX2dwY19hY3RpdmF0ZShcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gucHZfdGltZSwgc3lzdGVtX3RpbWUgXHUwMDI2IH4xVUxMLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI0NDYtXHRcdFx0XHQgc2l6ZW9mKHN0cnVjdCBwdmNsb2NrX3ZjcHVfdGltZV9pbmZvKSk7XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTMyMT1zdGF0aWMgdm9pZCBrdm1feGVuX3VwZGF0ZV9ydW5zdGF0ZV9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnYsIGJvb2wgYXRvbWljKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy00ODUtXHRcdFx0LypcbmFyY2gveDg2L2t2bS94ZW4uYzo0ODY6XHRcdFx0ICogVXNlIGt2bV9ncGNfYWN0aXZhdGUoKSBoZXJlIGJlY2F1c2UgaWYgdGhlIHJ1bnN0YXRlXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDg3LVx0XHRcdCAqIGFyZWEgd2FzIGNvbmZpZ3VyZWQgaW4gMzItYml0IG1vZGUgYW5kIG9ubHkgZXh0ZW5kc1xuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy00OTAtXHRcdFx0ICovXG5hcmNoL3g4Ni9rdm0veGVuLmM6NDkxOlx0XHRcdGlmIChrdm1fZ3BjX2FjdGl2YXRlKGdwYzIsIGdwYzEtXHUwMDNlZ3BhICYjNDM7IHVzZXJfbGVuMSxcbmFyY2gveDg2L2t2bS94ZW4uYy00OTItXHRcdFx0XHRcdCAgICAgdXNlcl9sZW4yKSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9NzQ2PWludCBrdm1feGVuX2h2bV9zZXRfYXR0cihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyICpkYXRhKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy03ODUtXHRcdFx0fSBlbHNlIHtcbmFyY2gveDg2L2t2bS94ZW4uYzo3ODY6XHRcdFx0XHRyID0ga3ZtX2dwY19hY3RpdmF0ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uc2hpbmZvX2NhY2hlLFxuYXJjaC94ODYva3ZtL3hlbi5jLTc4Ny1cdFx0XHRcdFx0XHQgICAgIGdmbl90b19ncGEoZ2ZuKSwgUEFHRV9TSVpFKTtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtNzk3LVx0XHRcdH0gZWxzZSB7XG5hcmNoL3g4Ni9rdm0veGVuLmM6Nzk4Olx0XHRcdFx0ciA9IGt2bV9ncGNfYWN0aXZhdGVfaHZhKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5zaGluZm9fY2FjaGUsXG5hcmNoL3g4Ni9rdm0veGVuLmMtNzk5LVx0XHRcdFx0XHRcdFx0ICh1bnNpZ25lZCBsb25nKWh2YSwgUEFHRV9TSVpFKTtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9OTA2PWludCBrdm1feGVuX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3hlbl92Y3B1X2F0dHIgKmRhdGEpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTkyOC1cbmFyY2gveDg2L2t2bS94ZW4uYzo5Mjk6XHRcdFx0ciA9IGt2bV9ncGNfYWN0aXZhdGUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2luZm9fY2FjaGUsXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTMwLVx0XHRcdFx0XHQgICAgIGRhdGEtXHUwMDNldS5ncGEsIHNpemVvZihzdHJ1Y3QgdmNwdV9pbmZvKSk7XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTkzNy1cbmFyY2gveDg2L2t2bS94ZW4uYzo5Mzg6XHRcdFx0ciA9IGt2bV9ncGNfYWN0aXZhdGVfaHZhKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC54ZW4udmNwdV9pbmZvX2NhY2hlLFxuYXJjaC94ODYva3ZtL3hlbi5jLTkzOS1cdFx0XHRcdFx0XHQgZGF0YS1cdTAwM2V1Lmh2YSwgc2l6ZW9mKHN0cnVjdCB2Y3B1X2luZm8pKTtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTUzLVxuYXJjaC94ODYva3ZtL3hlbi5jOjk1NDpcdFx0ciA9IGt2bV9ncGNfYWN0aXZhdGUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X3RpbWVfaW5mb19jYWNoZSxcbmFyY2gveDg2L2t2bS94ZW4uYy05NTUtXHRcdFx0XHQgICAgIGRhdGEtXHUwMDNldS5ncGEsXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTk4Ny1cdFx0c3oxID0gUEFHRV9TSVpFIC0gKGRhdGEtXHUwMDNldS5ncGEgXHUwMDI2IH5QQUdFX01BU0spO1xuYXJjaC94ODYva3ZtL3hlbi5jOjk4ODpcdFx0ciA9IGt2bV9ncGNfYWN0aXZhdGUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnhlbi5ydW5zdGF0ZV9jYWNoZSxcbmFyY2gveDg2L2t2bS94ZW4uYy05ODktXHRcdFx0XHQgICAgIGRhdGEtXHUwMDNldS5ncGEsIHN6MSk7XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTk5OC1cdFx0XHRCVUdfT04oKGRhdGEtXHUwMDNldS5ncGEgJiM0Mzsgc3oxKSBcdTAwMjYgflBBR0VfTUFTSyk7XG5hcmNoL3g4Ni9rdm0veGVuLmM6OTk5Olx0XHRcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC54ZW4ucnVuc3RhdGUyX2NhY2hlLFxuYXJjaC94ODYva3ZtL3hlbi5jLTEwMDAtXHRcdFx0XHRcdCAgICAgZGF0YS1cdTAwM2V1LmdwYSAmIzQzOyBzejEsIHN6Mik7XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTE0Mzk9dm9pZCBrdm1fZ3BjX2luaXQoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgc3RydWN0IGt2bSAqa3ZtKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ0MS0vKipcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNDQyOiAqIGt2bV9ncGNfYWN0aXZhdGUgLSBwcmVwYXJlIGEgY2FjaGVkIGtlcm5lbCBtYXBwaW5nIGFuZCBIUEEgZm9yIGEgZ2l2ZW4gZ3Vlc3RcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNDQzLSAqICAgICAgICAgICAgICAgICAgICBwaHlzaWNhbCBhZGRyZXNzLlxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNDU2LSAqL1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE0NTc6aW50IGt2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGxlbik7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ1OC1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNDU5LS8qKlxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE0NjA6ICoga3ZtX2dwY19hY3RpdmF0ZV9odmEgLSBwcmVwYXJlIGEgY2FjaGVkIGtlcm5lbCBtYXBwaW5nIGFuZCBIUEEgZm9yIGEgZ2l2ZW4gSFZBLlxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0NjEtICpcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ2OS0gKlxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE0NzA6ICogVGhlIHNlbWFudGljcyBvZiB0aGlzIGZ1bmN0aW9uIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBvZiBrdm1fZ3BjX2FjdGl2YXRlKCkuIEl0XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ3MS0gKiBtZXJlbHkgYnlwYXNzZXMgYSBsYXllciBvZiBhZGRyZXNzIHRyYW5zbGF0aW9uLlxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0NzItICovXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTQ3MzppbnQga3ZtX2dwY19hY3RpdmF0ZV9odmEoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBodmEsIHVuc2lnbmVkIGxvbmcgbGVuKTtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNDc0LVxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmM9MzgzPXZvaWQga3ZtX2dwY19pbml0KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHN0cnVjdCBrdm0gKmt2bSlcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM5NC1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6Mzk1OnN0YXRpYyBpbnQgX19rdm1fZ3BjX2FjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyB1aHZhLFxudmlydC9rdm0vcGZuY2FjaGUuYy0zOTYtXHRcdFx0ICAgICAgdW5zaWduZWQgbG9uZyBsZW4pXG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy00MjQtXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjQyNTppbnQga3ZtX2dwY19hY3RpdmF0ZShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgbGVuKVxudmlydC9rdm0vcGZuY2FjaGUuYy00MjYte1xuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDMzLVxudmlydC9rdm0vcGZuY2FjaGUuYzo0MzQ6XHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgZ3BhLCBLVk1fSFZBX0VSUl9CQUQsIGxlbik7XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQzNS19XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQzNi1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6NDM3OmludCBrdm1fZ3BjX2FjdGl2YXRlX2h2YShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIHVodmEsIHVuc2lnbmVkIGxvbmcgbGVuKVxudmlydC9rdm0vcGZuY2FjaGUuYy00Mzgte1xuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDQxLVxudmlydC9rdm0vcGZuY2FjaGUuYzo0NDI6XHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgSU5WQUxJRF9HUEEsIHVodmEsIGxlbik7XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQ0My19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg3OAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGZ1enppbmcgcG90ZW50aWFsLiBUaGF0IGZ1bmN0aW9uLCBhbmQgaXRzIHJlbGF0aXZlcywgYXJlIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vay4gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCB6ZXJvIGluIG9uIHRoZSBmb2xsb3dpbmcgc3ltYm9scyBmb3IgbXkgaW5pdGlhbCBmdXp6aW5nIHJ1bnM6IGBrdm1fZ3BjX3JlZnJlc2hgLCBga3ZtX2dwY19hY3RpdmF0ZWAsIGFuZCBga3ZtX2dwY19hY3RpdmF0ZV9odmFgLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guLi4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYF9fa3ZtX2dwY19yZWZyZXNoYCBpcyBzdGF0aWMsIHNvIEkgc2hvdWxkIGJlIGxpc3Rpbmcgb25seSB0aGUgbm9uLXN0YXRpYyBzeW1ib2xzIGZvciB0aGUgZnV6emluZyBhbmFseXNpcy4KCk5vdywgYmVmb3JlIEkgZ2V0IGNhcnJpZWQgYXdheSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIHJpZ2h0IGVudmlyb25tZW50IHNldHVwLiBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgZW5hYmxlZCBmb3IgdGhlc2UgZnVuY3Rpb25zIHRvIGJlIGFjdGl2ZT8gT2YgY291cnNlLCBLVk0gd2lsbCBiZSB0aGUgb2J2aW91cyByZXF1aXJlbWVudCBoZXJlOiBzbyBJJiMzOTtsbCBuZWVkIGBDT05GSUdfS1ZNYC4gSSBzaG91bGQgcXVpY2tseSBzY2FuIGB2aXJ0L2t2bS9LY29uZmlnYCBvciBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIGNvbmZpcm0gYW55IG90aGVyIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZz0xNj1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE3LVxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjE4OmNvbmZpZyBLVk1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMC1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzozMTpjb25maWcgS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSU1xuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtNYWludGFpbiBjb3VudGVycyBmb3IgQ09QMCBhY2Nlc3Nlc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjY6Y29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI3LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI5OmNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMC1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzMtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzQ6Y29uZmlnIEtWTV9CT09LM1NfNjRfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM1LVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNy1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozODpjb25maWcgS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM5LVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQzLVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ0LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQ1OmNvbmZpZyBLVk1fQk9PSzNTXzMyXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfMzIgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX0JPT0szU182NFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYzLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzY0IHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNzgtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Nzk6Y29uZmlnIEtWTV9CT09LM1NfNjRfSFZcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy04MC1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy05OS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMDA6Y29uZmlnIEtWTV9CT09LM1NfNjRfUFJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCB3aXRob3V0IHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjY6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjctXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyOTpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O0RldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDhfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIGh5cGVydmlzb3IgcmVhbC1tb2RlIGNvZGUgKGZvciBQT1dFUjgpXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1Ni1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0h5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTgzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4NDpjb25maWcgS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg1LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4Ni1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODc6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgZXhpdCB0aW1pbmdcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk3LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5ODpjb25maWcgS1ZNX0U1MDBWMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5OS1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxMzpjb25maWcgS1ZNX0U1MDBNQ1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNC1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwME1DL0U1NTAwL0U2NTAwIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX01QSUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzAtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQwLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0MTpjb25maWcgS1ZNX1hJQ1NcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDItXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUwLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI1MTpjb25maWcgS1ZNX1hJVkVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTItXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnPTIyPXNvdXJjZSBcJiMzNDthcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21pY3Jvd2F0dC9LY29uZmlnXCYjMzQ7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjMtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc6MjQ6Y29uZmlnIEtWTV9HVUVTVFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtLVk0gR3Vlc3Qgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXHRkZWZfdHJpc3RhdGUgeVxuLS1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWc9ODI2PXNvdXJjZSBcJiMzNDthcmNoL3g4Ni94ZW4vS2NvbmZpZ1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZy04MjctXG5hcmNoL3g4Ni9LY29uZmlnOjgyODpjb25maWcgS1ZNX0dVRVNUXG5hcmNoL3g4Ni9LY29uZmlnLTgyOS1cdGJvb2wgXCYjMzQ7S1ZNIEd1ZXN0IHN1cHBvcnQgKGluY2x1ZGluZyBrdm1jbG9jaylcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7SW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0O0kvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXHRib29sIFwmIzM0O1N5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVx0Ym9vbCBcJiMzNDtQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cdGJvb2xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcJiMzNDtcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTMtXG52aXJ0L2t2bS9LY29uZmlnOjQ6Y29uZmlnIEtWTV9DT01NT05cbnZpcnQva3ZtL0tjb25maWctNS0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9Mzk9Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTQyLVxudmlydC9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX01NSU9cbnZpcnQva3ZtL0tjb25maWctNDQtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNDUtXG52aXJ0L2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQVNZTkNfUEZcbnZpcnQva3ZtL0tjb25maWctNDctICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTQ5LSMgVG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpcmVjdCBub3RpZmljYXRpb24gYW5kIGJhdGNoIGpvYlxudmlydC9rdm0vS2NvbmZpZzo1MDpjb25maWcgS1ZNX0FTWU5DX1BGX1NZTkNcbnZpcnQva3ZtL0tjb25maWctNTEtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTU5PWNvbmZpZyBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXG4tLVxudmlydC9rdm0vS2NvbmZpZy02MS1cbnZpcnQva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9WRklPXG52aXJ0L2t2bS9LY29uZmlnLTYzLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz02NT1jb25maWcgSEFWRV9LVk1fSU5WQUxJRF9XQUtFVVBTXG4tLVxudmlydC9rdm0vS2NvbmZpZy02Ny1cbnZpcnQva3ZtL0tjb25maWc6Njg6Y29uZmlnIEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxudmlydC9rdm0vS2NvbmZpZy02OS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy03MC1cbnZpcnQva3ZtL0tjb25maWc6NzE6Y29uZmlnIEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbnZpcnQva3ZtL0tjb25maWctNzItICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzMtXG52aXJ0L2t2bS9LY29uZmlnOjc0OmNvbmZpZyBLVk1fQ09NUEFUXG52aXJ0L2t2bS9LY29uZmlnLTc1LSAgICAgICBkZWZfYm9vbCB5XG4tLVxudmlydC9rdm0vS2NvbmZpZz05MT1jb25maWcgSEFWRV9LVk1fUE1fTk9USUZJRVJcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTkzLVxudmlydC9rdm0vS2NvbmZpZzo5NDpjb25maWcgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcbnZpcnQva3ZtL0tjb25maWctOTUtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctOTYtXG52aXJ0L2t2bS9LY29uZmlnOjk3OmNvbmZpZyBLVk1fRUxJREVfVExCX0ZMVVNIX0lGX1lPVU5HXG52aXJ0L2t2bS9LY29uZmlnLTk4LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk5LVxudmlydC9rdm0vS2NvbmZpZzoxMDA6Y29uZmlnIEtWTV9NTVVfTE9DS0xFU1NfQUdJTkdcbnZpcnQva3ZtL0tjb25maWctMTAxLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwMi1cbnZpcnQva3ZtL0tjb25maWc6MTAzOmNvbmZpZyBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xudmlydC9rdm0vS2NvbmZpZy0xMDQtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctMTA1LVxudmlydC9rdm0vS2NvbmZpZzoxMDY6Y29uZmlnIEtWTV9HVUVTVF9NRU1GRFxudmlydC9rdm0vS2NvbmZpZy0xMDctICAgICAgIHNlbGVjdCBYQVJSQVlfTVVMVElcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2MTEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKT2theSwgc28gSSBuZWVkIHRvIGNvbmZpZ3VyZSBLVk0uIEJ1dCB3YWl0IGEgbWludXRlLCBJIHJlbWVtYmVyIHNlZWluZyBgdmlydC9rdm0vcGZuY2FjaGUuY2Agc29tZXdoZXJlIGluIHRoZSBrZXJuZWwgc291cmNlLCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0IGZpbGUgaXMgb25seSBjb21waWxlZCBpZiBLVk0gaXMgZW5hYmxlZC4gVGhhdCByaW5ncyBhIGJlbGwuLi4gTGV0JiMzOTtzIHVzZSB0aGF0IGFzIGEgY2x1ZSBhbmQgaHVudCBmb3IgdGhlIEtWTSBjb25maWd1cmF0aW9uLiBNeSBpbnR1aXRpb24gc3VnZ2VzdHMgdGhlIGB2aXJ0L2t2bS9NYWtlZmlsZWAgaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LiBMZXQmIzM5O3Mgc2VlIGlmIG15IG1lbW9yeSBpcyBhY2N1cmF0ZS4gSSYjMzk7bGwgY2hlY2sgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGZuY2FjaGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgS1ZNIE1ha2VmaWxlKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBLVk0gbW9kdWxlIGlzIGJ1aWx0LCBzbyB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGB2aXJ0L2t2bS9NYWtlZmlsZWAuIExldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIHRoaXMgZmlsZSBob2xkcy4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgcGxheWJvb2sgZm9yIGhvdyB0aGUgS1ZNIGNvbXBvbmVudHMgYXJlIGNvbXBpbGVkIGFuZCBsaW5rZWQsIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZGVwZW5kZW5jeSB0cmVlLCBpbmNsdWRlIHBhdGhzLCBjb21waWxhdGlvbiBmbGFncywgYW5kIGxpbmtpbmcgcnVsZXMgdGhhdCBkZWZpbmUgdGhlIEtWTSYjMzk7cyBidWlsZCBwcm9jZXNzLiBUaGlzIGZpbGUgd2lsbCB0ZWxsIG1lIHdoaWNoIHNvdXJjZSBmaWxlcyBhcmUgaW52b2x2ZWQsIHdoaWNoIG9iamVjdCBmaWxlcyB0aGV5IGdlbmVyYXRlLCBhbmQgaG93IHRob3NlIG9iamVjdCBmaWxlcyBjb21lIHRvZ2V0aGVyIHRvIGNyZWF0ZSB0aGUgZmluYWwgS1ZNIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT50aGUgZmlsZSBkb2VzIG5vdCBleGlzdDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDt2aXJ0L2t2bS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O3RoZSBmaWxlIGRvZXMgbm90IGV4aXN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA0NAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgVmlydHVhbGl6YXRpb24gTGFuZHNjYXBlKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgYHZpcnQva3ZtL2Agd2FzIGEgc3RhbmRhcmQgZGlyZWN0b3J5LCBidXQgdGhlIHN5c3RlbSBpcyB0ZWxsaW5nIG1lIGl0JiMzOTtzIG5vdC4gVGhhdOKAmXMgdW51c3VhbCwgYW5kIGRlZmluaXRlbHkgd29ydGggYSBkb3VibGUtY2hlY2suIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCYjMzk7cyBhY3R1YWxseSB0aGVyZS4gTGV0IG1lIHNlZS4uLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgYHZpcnQva3ZtL2AgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZWFsbHkqIHByZXNlbnQgYXQgdGhhdCBsb2NhdGlvbiwgb3IgaWYgaXQgZG9lc24mIzM5O3QgZXhpc3QgYXQgYWxsLCB3aGljaCB3b3VsZCBiZSBqdXN0IGFzIGluZm9ybWF0aXZlLiBJIGhhdmUgdG8gcmVzb2x2ZSB0aGlzIHBhdGgmIzM5O3Mgc3RhdHVzIGJlZm9yZSBJIGNhbiBjb250aW51ZSB3aXRoIHdoYXRldmVyIEkgd2FzIGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDt2aXJ0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthc3luY19wZi5jJiMzNDssCiAgICAmIzM0O2FzeW5jX3BmLmgmIzM0OywKICAgICYjMzQ7YmluYXJ5X3N0YXRzLmMmIzM0OywKICAgICYjMzQ7Y29hbGVzY2VkX21taW8uYyYjMzQ7LAogICAgJiMzNDtjb2FsZXNjZWRfbW1pby5oJiMzNDssCiAgICAmIzM0O2RpcnR5X3JpbmcuYyYjMzQ7LAogICAgJiMzNDtldmVudGZkLmMmIzM0OywKICAgICYjMzQ7Z3Vlc3RfbWVtZmQuYyYjMzQ7LAogICAgJiMzNDtpcnFjaGlwLmMmIzM0OywKICAgICYjMzQ7a3ZtX21haW4uYyYjMzQ7LAogICAgJiMzNDtrdm1fbW0uaCYjMzQ7LAogICAgJiMzNDtwZm5jYWNoZS5jJiMzNDssCiAgICAmIzM0O3ZmaW8uYyYjMzQ7LAogICAgJiMzNDt2ZmlvLmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM3NQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIEtWTSBCdWlsZCBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyBkYW1uIG1ha2VmaWxlIGxpdmVzIGZvciB0aGUgS1ZNIHZpcnR1YWxpemF0aW9uIG1vZHVsZS4gTXkgaW5pdGlhbCBodW5jaCB3YXMgdGhhdCBpdCB3b3VsZCBiZSBpbiBgdmlydC9rdm0vYCwgYnV0IEkmIzM5O20gZHJhd2luZyBhIGJsYW5rIHRoZXJlLiBQZXJoYXBzIGl0JiMzOTtzIG5hbWVkIHNvbWV0aGluZyBsZXNzIG9idmlvdXMsIGxpa2UgYGt2bS5ta2A/IE5vLCBoYW5nIG9uLCB0aGF0IGRpcmVjdG9yeSYjMzk7cyBzdHJ1Y3R1cmUganVzdCBkb2VzbiYjMzk7dCBmZWVsIHJpZ2h0IGZvciBhIHRvcC1sZXZlbCBtYWtlZmlsZS4gTGV0JiMzOTtzIGJhY2t0cmFjayBhbmQgc2VlIGlmIGl0JiMzOTtzIGdvdCBhIG1vcmUgZ2VuZXJhbCBtYWtlZmlsZSBpbiB0aGUgYHZpcnQvYCBkaXJlY3RvcnkgaXRzZWxmLiBZZXAsIHRpbWUgdG8gY2hlY2sgYHZpcnQvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGhhcyB0byBiZSwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3ZpcnQvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0b2JqLXlcdCYjNDM7PSBsaWIvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjUxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgQ29tcGlsYXRpb24gb2YgYHZpcnQva3ZtL3BmbmNhY2hlLmNgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgdmlydC9rdm0vcGZuY2FjaGUuY2AgZmlsZSBpcyBiZWluZyBjb21waWxlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIEtWTS1zcGVjaWZpYyBhcmVhcy4gRmlyc3QsIEkgc2hvdWxkIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGBNYWtlZmlsZWAuIFRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBzdGFydCBpcyB3aXRoaW4gdGhlIHg4NiBhcmNoaXRlY3R1cmUgZGlyZWN0b3J5LCBnaXZlbiBpdHMgcHJvbWluZW5jZSBpbiBLVk0uIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgYGFyY2gveDg2L2t2bS9NYWtlZmlsZWAuIEhvcGVmdWxseSwgdGhhdCB3aWxsIGNvbnRhaW4gdGhlIG5lY2Vzc2FyeSBkaXJlY3RpdmVzIG9yIGluY2x1ZGVzIHRvIHJldmVhbCB0aGUgY29tcGlsYXRpb24gdW5pdCYjMzk7cyBpbmNsdXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGZuY2FjaGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzg3NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBLVk0geDg2IE1ha2VmaWxlKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgS1ZNIGFyY2hpdGVjdHVyZSBvbiB4ODYsIHNvIG15IGZpcnN0IHN0ZXAgaXMgdG8gZ2V0IG15IGJlYXJpbmdzLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGFyY2gveDg2L2t2bS9NYWtlZmlsZWAuIFRoYXQgZmlsZSBpcyB0aGUgY2VudHJhbCBwb2ludCBmb3IgYnVpbGRpbmcgdGhlIEtWTSBjb21wb25lbnRzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLCBpdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBsb2dpYyB1c3VhbGx5IHJlc2lkZXMuIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJlYWQgdGhyb3VnaCBpdC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBpbnN0cnVjdGlvbnMuIFRoYXQgZmlsZSBpcyBrZXkgdG8gcGllY2luZyB0b2dldGhlciB3aGF0ZXZlciBpc3N1ZSBpcyBhdCBoYW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0Y2NmbGFncy15ICYjNDM7PSAtSSAkKHNyY3RyZWUpL2FyY2gveDg2L2t2bVxuICAgNDpcdGNjZmxhZ3MtJChDT05GSUdfS1ZNX1dFUlJPUikgJiM0Mzs9IC1XZXJyb3JcbiAgIDU6XHRcbiAgIDY6XHRpbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtXG4gICA3Olx0XG4gICA4Olx0a3ZtLXlcdFx0XHQmIzQzOz0geDg2Lm8gZW11bGF0ZS5vIGlycS5vIGxhcGljLm8gY3B1aWQubyBwbXUubyBtdHJyLm8gXFxcbiAgIDk6XHRcdFx0XHQgICBkZWJ1Z2ZzLm8gbW11L21tdS5vIG1tdS9wYWdlX3RyYWNrLm8gbW11L3NwdGUub1xuICAxMDpcdFxuICAxMTpcdGt2bS0kKENPTkZJR19YODZfNjQpICYjNDM7PSBtbXUvdGRwX2l0ZXIubyBtbXUvdGRwX21tdS5vXG4gIDEyOlx0a3ZtLSQoQ09ORklHX0tWTV9JT0FQSUMpICYjNDM7PSBpODI1OS5vIGk4MjU0Lm8gaW9hcGljLm9cbiAgMTM6XHRrdm0tJChDT05GSUdfS1ZNX0hZUEVSVikgJiM0Mzs9IGh5cGVydi5vXG4gIDE0Olx0a3ZtLSQoQ09ORklHX0tWTV9YRU4pXHQmIzQzOz0geGVuLm9cbiAgMTU6XHRrdm0tJChDT05GSUdfS1ZNX1NNTSlcdCYjNDM7PSBzbW0ub1xuICAxNjpcdFxuICAxNzpcdGt2bS1pbnRlbC15XHRcdCYjNDM7PSB2bXgvdm14Lm8gdm14L3ZtZW50ZXIubyB2bXgvcG11X2ludGVsLm8gdm14L3ZtY3MxMi5vIFxcXG4gIDE4Olx0XHRcdFx0ICAgdm14L25lc3RlZC5vIHZteC9wb3N0ZWRfaW50ci5vIHZteC9tYWluLm9cbiAgMTk6XHRcbiAgMjA6XHRrdm0taW50ZWwtJChDT05GSUdfWDg2X1NHWF9LVk0pXHQmIzQzOz0gdm14L3NneC5vXG4gIDIxOlx0a3ZtLWludGVsLSQoQ09ORklHX0tWTV9IWVBFUlYpXHQmIzQzOz0gdm14L2h5cGVydi5vIHZteC9oeXBlcnZfZXZtY3Mub1xuICAyMjpcdGt2bS1pbnRlbC0kKENPTkZJR19LVk1fSU5URUxfVERYKVx0JiM0Mzs9IHZteC90ZHgub1xuICAyMzpcdFxuICAyNDpcdGt2bS1hbWQteVx0XHQmIzQzOz0gc3ZtL3N2bS5vIHN2bS92bWVudGVyLm8gc3ZtL3BtdS5vIHN2bS9uZXN0ZWQubyBzdm0vYXZpYy5vXG4gIDI1Olx0XG4gIDI2Olx0a3ZtLWFtZC0kKENPTkZJR19LVk1fQU1EX1NFVilcdCYjNDM7PSBzdm0vc2V2Lm9cbiAgMjc6XHRrdm0tYW1kLSQoQ09ORklHX0tWTV9IWVBFUlYpXHQmIzQzOz0gc3ZtL2h5cGVydi5vXG4gIDI4Olx0XG4gIDI5Olx0aWZkZWYgQ09ORklHX0hZUEVSVlxuICAzMDpcdGt2bS15XHRcdFx0JiM0Mzs9IGt2bV9vbmh5cGVydi5vXG4gIDMxOlx0a3ZtLWludGVsLXlcdFx0JiM0Mzs9IHZteC92bXhfb25oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cbiAgMzI6XHRrdm0tYW1kLXlcdFx0JiM0Mzs9IHN2bS9zdm1fb25oeXBlcnYub1xuICAzMzpcdGVuZGlmXG4gIDM0Olx0XG4gIDM1Olx0b2JqLSQoQ09ORklHX0tWTV9YODYpXHQmIzQzOz0ga3ZtLm9cbiAgMzY6XHRvYmotJChDT05GSUdfS1ZNX0lOVEVMKVx0JiM0Mzs9IGt2bS1pbnRlbC5vXG4gIDM3Olx0b2JqLSQoQ09ORklHX0tWTV9BTUQpXHQmIzQzOz0ga3ZtLWFtZC5vXG4gIDM4Olx0XG4gIDM5Olx0QUZMQUdTX3N2bS92bWVudGVyLm8gICAgOj0gLWlxdW90ZSAkKG9iailcbiAgNDA6XHQkKG9iaikvc3ZtL3ZtZW50ZXIubzogJChvYmopL2t2bS1hc20tb2Zmc2V0cy5oXG4gIDQxOlx0XG4gIDQyOlx0QUZMQUdTX3ZteC92bWVudGVyLm8gICAgOj0gLWlxdW90ZSAkKG9iailcbiAgNDM6XHQkKG9iaikvdm14L3ZtZW50ZXIubzogJChvYmopL2t2bS1hc20tb2Zmc2V0cy5oXG4gIDQ0Olx0XG4gIDQ1Olx0JChvYmopL2t2bS1hc20tb2Zmc2V0cy5oOiAkKG9iaikva3ZtLWFzbS1vZmZzZXRzLnMgRk9SQ0VcbiAgNDY6XHRcdCQoY2FsbCBmaWxlY2hrLG9mZnNldHMsX19LVk1fQVNNX09GRlNFVFNfSF9fKVxuICA0NzpcdFxuICA0ODpcdHRhcmdldHMgJiM0Mzs9IGt2bS1hc20tb2Zmc2V0cy5zXG4gIDQ5Olx0Y2xlYW4tZmlsZXMgJiM0Mzs9IGt2bS1hc20tb2Zmc2V0cy5oXG4gIDUwOlx0XG4gIDUxOlx0XG4gIDUyOlx0IyBGYWlsIHRoZSBidWlsZCBpZiB0aGVyZSBpcyB1bmV4cGVjdGVkIEVYUE9SVF9TWU1CT0xfR1BMIChvciBFWFBPUlRfU1lNQk9MKVxuICA1MzpcdCMgdXNhZ2UuICBBbGwgS1ZNLWludGVybmFsIGV4cG9ydHMgc2hvdWxkIHVzZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwuXG4gIDU0Olx0IyBPbmx5IGEgaGFuZGZ1bCBvZiBleHBvcnRzIGludGVuZGVkIGZvciBvdGhlciBtb2R1bGVzIChWRklPLCBLVk1HVCkgc2hvdWxkXG4gIDU1Olx0IyB1c2UgRVhQT1JUX1NZTUJPTF9HUEwsIGFuZCBFWFBPUlRfU1lNQk9MIHNob3VsZCBuZXZlciBiZSB1c2VkLlxuICA1NjpcdGlmZGVmIENPTkZJR19LVk1fWDg2XG4gIDU3Olx0IyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yIHdob2xlIHdvcmRzIGFuZCBwcmludCBsaW5lIG51bWJlcnMuICBGaWx0ZXIgb3V0IHRoZVxuICA1ODpcdCMgYWxsb3dlZCBzZXQgb2YgZXhwb3J0cywgaS5lLiB0aG9zZSB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgdXNhZ2UuXG4gIDU5Olx0ZXhwb3J0c19ncmVwX3RyYWlsZXIgOj0gLS1pbmNsdWRlPSYjMzk7Ki5bY2hdJiMzOTsgLW5ydyAkKHNyY3RyZWUpL3ZpcnQva3ZtICQoc3JjdHJlZSkvYXJjaC94ODYva3ZtIHwgXFxcbiAgNjA6XHRcdFx0XHRncmVwIC12IC1lIGt2bV9wYWdlX3RyYWNrX3JlZ2lzdGVyX25vdGlmaWVyIFxcXG4gIDYxOlx0XHRcdFx0XHQtZSBrdm1fcGFnZV90cmFja191bnJlZ2lzdGVyX25vdGlmaWVyIFxcXG4gIDYyOlx0XHRcdFx0XHQtZSBrdm1fd3JpdGVfdHJhY2tfYWRkX2dmbiBcXFxuICA2MzpcdFx0XHRcdFx0LWUga3ZtX3dyaXRlX3RyYWNrX3JlbW92ZV9nZm4gXFxcbiAgNjQ6XHRcdFx0XHRcdC1lIGt2bV9nZXRfa3ZtIFxcXG4gIDY1Olx0XHRcdFx0XHQtZSBrdm1fZ2V0X2t2bV9zYWZlIFxcXG4gIDY2Olx0XHRcdFx0XHQtZSBrdm1fcHV0X2t2bVxuICA2NzpcdFxuICA2ODpcdCMgRm9yY2UgZ3JlcCB0byBlbWl0IGEgZ29vZnkgZ3JvdXAgc2VwYXJhdG9yIHRoYXQgY2FuIGluIHR1cm4gYmUgcmVwbGFjZWQgd2l0aFxuICA2OTpcdCMgdGhlIGFib3ZlIG5ld2xpbmUgbWFjcm8gKG5ld2xpbmVzIGluIE1ha2UgYXJlIGEgbmlnaHRtYXJlKS4gIE5vdGUsIGdyZXAgb25seVxuICA3MDpcdCMgcHJpbnRzIHRoZSBncm91cCBzZXBhcmF0b3Igd2hlbiBOIGxpbmVzIG9mIGNvbnRleHQgYXJlIHJlcXVlc3RlZCB2aWEgLUMsXG4gIDcxOlx0IyBhLmsuYS4gLS1OVU0uICBTaW1wbHkgcmVxdWVzdCB6ZXJvIGxpbmVzLiAgUHJpbnQgdGhlIHNlcGFyYXRvciBvbmx5IGFmdGVyXG4gIDcyOlx0IyBmaWx0ZXJpbmcgb3V0IGV4cGVjdGVkIGV4cG9ydHMgdG8gYXZvaWQgZXh0cmEgbmV3bGluZXMgaW4gdGhlIGVycm9yIG1lc3NhZ2UuXG4gIDczOlx0ZGVmaW5lIGdldF9rdm1fZXhwb3J0c1xuICA3NDpcdCQoc2hlbGwgZ3JlcCBcJiMzNDskKDEpXCYjMzQ7IC1DMCAkKGV4cG9ydHNfZ3JlcF90cmFpbGVyKSB8IGdyZXAgXCYjMzQ7JCgxKVwmIzM0OyAtQzAgLS1ncm91cC1zZXBhcmF0b3I9XCYjMzQ7IVNFUCFcJiMzNDspXG4gIDc1Olx0ZW5kZWZcbiAgNzY6XHRcbiAgNzc6XHRkZWZpbmUgY2hlY2tfa3ZtX2V4cG9ydHNcbiAgNzg6XHRucl9rdm1fZXhwb3J0cyA6PSAkKHNoZWxsIGdyZXAgXCYjMzQ7JCgxKVwmIzM0OyAkKGV4cG9ydHNfZ3JlcF90cmFpbGVyKSB8IHdjIC1sKVxuICA3OTpcdFxuICA4MDpcdGlmbmVxICgwLCQkKG5yX2t2bV9leHBvcnRzKSlcbiAgODE6XHQkJChlcnJvciBFUlJPUiAqKipcXFxuICA4MjpcdCQkKG5ld2xpbmUpZm91bmQgJCQobnJfa3ZtX2V4cG9ydHMpIHVud2FudGVkIG9jY3VycmVuY2VzIG9mICQoMSk6XFxcbiAgODM6XHQkJChuZXdsaW5lKSAgJChzdWJzdCAhU0VQISwkJChuZXdsaW5lKSAsJChjYWxsIGdldF9rdm1fZXhwb3J0cywkKDEpKSlcXFxuICA4NDpcdCQkKG5ld2xpbmUpaW4gZGlyZWN0b3JpZXM6XFxcbiAgODU6XHQkJChuZXdsaW5lKSAgJChzcmN0cmVlKS9hcmNoL3g4Ni9rdm1cXFxuICA4NjpcdCQkKG5ld2xpbmUpICAkKHNyY3RyZWUpL3ZpcnQva3ZtXFxcbiAgODc6XHQkJChuZXdsaW5lKVVzZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwsIG5vdCAkKDEpKVxuICA4ODpcdGVuZGlmICMgbnJfa3ZtX2V4cG9ydHMgIT0gMFxuICA4OTpcdHVuZGVmaW5lIG5yX2t2bV9leHBvcnRzXG4gIDkwOlx0ZW5kZWYgIyBjaGVja19rdm1fZXhwb3J0c1xuICA5MTpcdFxuICA5MjpcdCQoZXZhbCAkKGNhbGwgY2hlY2tfa3ZtX2V4cG9ydHMsRVhQT1JUX1NZTUJPTF9HUEwpKVxuICA5MzpcdCQoZXZhbCAkKGNhbGwgY2hlY2tfa3ZtX2V4cG9ydHMsRVhQT1JUX1NZTUJPTCkpXG4gIDk0Olx0XG4gIDk1Olx0dW5kZWZpbmUgY2hlY2tfa3ZtX2V4cG9ydHNcbiAgOTY6XHR1bmRlZmluZSBnZXRfa3ZtX2V4cG9ydHNcbiAgOTc6XHR1bmRlZmluZSBleHBvcnRzX2dyZXBfdHJhaWxlclxuICA5ODpcdGVuZGlmICMgQ09ORklHX0tWTV9YODZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwNDEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS1ZNIEJ1aWxkIFByb2Nlc3MqKgoKUmlnaHQsIHNvIEkgc2VlIGEgY3J1Y2lhbCBgaW5jbHVkZWAgc3RhdGVtZW50IGluIHBsYXkgaGVyZTogYGluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1gLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSSBrbm93IHdoYXQmIzM5O3MgY29taW5nLCB0aGlzIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGNvcmUgS1ZNIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGB2aXJ0L2t2bS9NYWtlZmlsZS5rdm1gLiBJJiMzOTtsbCB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdGhlIEtWTSBtb2R1bGVzIGFyZSBjb21waWxlZCwgYW55IHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyB0aGV5IGhhdmUsIGFuZCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIEtWTSBidWlsZCBzeXN0ZW0gd2l0aGluIHRoZSBrZXJuZWwuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBjdXN0b21pemF0aW9uIHBvaW50cywgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIGFyY2hpdGVjdHVyZSBvciBmZWF0dXJlIGZsYWdzLCBhbmQgaG93IHRoaXMgcGFydGljdWxhciBNYWtlZmlsZSBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBkb2VzLCBhbmQgaG93IHdlbGwgaXQgaXMgZGVzaWduZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dmlydC9rdm0vTWFrZWZpbGUua3ZtJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSBtb2R1bGVcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0S1ZNID89IC4uLy4uLy4uL3ZpcnQva3ZtXG4gICA3Olx0XG4gICA4Olx0a3ZtLXkgOj0gJChLVk0pL2t2bV9tYWluLm8gJChLVk0pL2V2ZW50ZmQubyAkKEtWTSkvYmluYXJ5X3N0YXRzLm9cbiAgIDk6XHRrdm0tJChDT05GSUdfS1ZNX1ZGSU8pICYjNDM7PSAkKEtWTSkvdmZpby5vXG4gIDEwOlx0a3ZtLSQoQ09ORklHX0tWTV9NTUlPKSAmIzQzOz0gJChLVk0pL2NvYWxlc2NlZF9tbWlvLm9cbiAgMTE6XHRrdm0tJChDT05GSUdfS1ZNX0FTWU5DX1BGKSAmIzQzOz0gJChLVk0pL2FzeW5jX3BmLm9cbiAgMTI6XHRrdm0tJChDT05GSUdfSEFWRV9LVk1fSVJRX1JPVVRJTkcpICYjNDM7PSAkKEtWTSkvaXJxY2hpcC5vXG4gIDEzOlx0a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX0RJUlRZX1JJTkcpICYjNDM7PSAkKEtWTSkvZGlydHlfcmluZy5vXG4gIDE0Olx0a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX1BGTkNBQ0hFKSAmIzQzOz0gJChLVk0pL3BmbmNhY2hlLm9cbiAgMTU6XHRrdm0tJChDT05GSUdfS1ZNX0dVRVNUX01FTUZEKSAmIzQzOz0gJChLVk0pL2d1ZXN0X21lbWZkLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2NDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBgQ09ORklHX0hBVkVfS1ZNX1BGTkNBQ0hFYCYjMzk7cyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQ09ORklHX0hBVkVfS1ZNX1BGTkNBQ0hFYC4gVGhhdCBmbGFnIGlzIGNyaXRpY2FsLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zIGZvciB0aGUgY29kZS4gIE15IGZpcnN0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSBhbmQgaG93IGBIQVZFX0tWTV9QRk5DQUNIRWAgaXMgYWN0dWFsbHkgKmRlZmluZWQqIGFuZCwgY3JpdGljYWxseSwgKnNlbGVjdGVkKi4gSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIGFyY2hpdGVjdHVyZSBjb25zdHJhaW50cyBzdXJyb3VuZGluZyBpdC4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgZGl2aW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMsIGV4cGxvcmluZyBhbnkgcmVsYXRlZCBNYWtlZmlsZXMsIGFuZCBsb29raW5nIGZvciBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBvciBkZXBlbmQgb24gaXQuICBJJiMzOTttIGV4cGVjdGluZyB0byB1bmNvdmVyIGNvbmRpdGlvbmFsIHNlbGVjdGlvbnMgYW5kIHBvdGVudGlhbCBwaXRmYWxscyB0aGF0IG1pZ2h0IGltcGFjdCBwb3J0YWJpbGl0eSBvciBwZXJmb3JtYW5jZS4gR290dGEgZ2V0IHRvIHRoZSByb290IG9mIGl0cyBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SEFWRV9LVk1fUEZOQ0FDSEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTV9YODZcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yNS1cdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyNjpcdHNlbGVjdCBIQVZFX0tWTV9QRk5DQUNIRVxuYXJjaC94ODYva3ZtL0tjb25maWctMjctXHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19UU09cbi0tXG52aXJ0L2t2bS9LY29uZmlnPTQ9Y29uZmlnIEtWTV9DT01NT05cbi0tXG52aXJ0L2t2bS9LY29uZmlnLTEwLVxudmlydC9rdm0vS2NvbmZpZzoxMTpjb25maWcgSEFWRV9LVk1fUEZOQ0FDSEVcbnZpcnQva3ZtL0tjb25maWctMTItICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm09MTM9a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX0RJUlRZX1JJTkcpICYjNDM7PSAkKEtWTSkvZGlydHlfcmluZy5vXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm06MTQ6a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX1BGTkNBQ0hFKSAmIzQzOz0gJChLVk0pL3BmbmNhY2hlLm9cbnZpcnQva3ZtL01ha2VmaWxlLmt2bS0xNS1rdm0tJChDT05GSUdfS1ZNX0dVRVNUX01FTUZEKSAmIzQzOz0gJChLVk0pL2d1ZXN0X21lbWZkLm9cbi0tXG52aXJ0L2t2bS9rdm1fbW0uaD01OT1rdm1fcGZuX3QgaHZhX3RvX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCk7XG52aXJ0L2t2bS9rdm1fbW0uaC02MC1cbnZpcnQva3ZtL2t2bV9tbS5oOjYxOiNpZmRlZiBDT05GSUdfSEFWRV9LVk1fUEZOQ0FDSEVcbnZpcnQva3ZtL2t2bV9tbS5oLTYyLXZvaWQgZ2ZuX3RvX3Bmbl9jYWNoZV9pbnZhbGlkYXRlX3N0YXJ0KHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbW0uaD02Nj1zdGF0aWMgaW5saW5lIHZvaWQgZ2ZuX3RvX3Bmbl9jYWNoZV9pbnZhbGlkYXRlX3N0YXJ0KHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbW0uaC03MC19XG52aXJ0L2t2bS9rdm1fbW0uaDo3MTojZW5kaWYgLyogSEFWRV9LVk1fUEZOQ0FDSEUgKi9cbnZpcnQva3ZtL2t2bV9tbS5oLTcyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ0NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gQ29uZmlndXJhdGlvbiBSZXZpZXcqKgoKT2theSwgc28gYEhBVkVfS1ZNX1BGTkNBQ0hFYCBpcyBhdXRvbWF0aWNhbGx5IGNob3NlbiB3aGVuIGBLVk1fWDg2YCBpcyBzZWxlY3RlZC4gVGhhdCBtZWFucywgYXQgdGhlIHZlcnkgbGVhc3QsIGVuYWJsaW5nIGBLVk1gIGlzIGVub3VnaCwgYW5kIHNwZWNpZmljYWxseSBzbyBvbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgZGVmaW5pdGVseSBhZGQgYEtWTWAgdG8gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LiBObyBuZWVkIHRvIG92ZXJ0aGluayBpdCB0aGVyZS4KCk5vdywgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIHRob3NlIEdsb2JhbCBQYWdlIENhY2hlIHN5bWJvbHMgSSB3YXMgbG9va2luZyBhdDogYGt2bV9ncGNfcmVmcmVzaGAsIGBrdm1fZ3BjX2FjdGl2YXRlYCwgYW5kIGBrdm1fZ3BjX2FjdGl2YXRlX2h2YWAuIEhvbGQgb24gYSBtaW51dGXigKYgSSBzZWUgdGhhdCBgX19rdm1fZ3BjX3JlZnJlc2hgIGlzICpzdGF0aWMqLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGludGVybmFsIHRvIHRoZSBtb2R1bGUgYW5kIG5vdCBleHBvcnRlZC4gU28sIHRoZSBmdW5jdGlvbiBJJiMzOTttIGFjdHVhbGx5IGludGVyZXN0ZWQgaW4gaXMgdGhlIG5vbi1zdGF0aWMgd3JhcHBlciwgYGt2bV9ncGNfcmVmcmVzaGAuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGt2bV9ncGNfcmVmcmVzaGAgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGUgc3ltYm9sIHRhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fZ3BjX3JlZnJlc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9wZm5jYWNoZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL3BmbmNhY2hlLmM9MTU1PXN0YXRpYyBrdm1fcGZuX3QgaHZhX3RvX3Bmbl9yZXRyeShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKVxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjU1LVxudmlydC9rdm0vcGZuY2FjaGUuYzoyNTY6c3RhdGljIGludCBfX2t2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgdWh2YSlcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjU3LXtcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM2My1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6MzY0OmludCBrdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBsZW4pXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM2NS17XG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy0zNzktXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjM4MDpcdHJldHVybiBfX2t2bV9ncGNfcmVmcmVzaChncGMsIGdwYy1cdTAwM2VncGEsIHVodmEpO1xudmlydC9rdm0vcGZuY2FjaGUuYy0zODEtfVxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmM9Mzk1PXN0YXRpYyBpbnQgX19rdm1fZ3BjX2FjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyB1aHZhLFxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDIxLVx0fVxudmlydC9rdm0vcGZuY2FjaGUuYzo0MjI6XHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGEsIHVodmEpO1xudmlydC9rdm0vcGZuY2FjaGUuYy00MjMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI4MgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipGdW5jdGlvbiBBbmFseXNpczogS1ZNIEdQQyBSZWZyZXNoLCBBY3RpdmF0ZSwgYW5kIEhWQSoqCgpSaWdodCwgc28gYGt2bV9ncGNfcmVmcmVzaGAuLi4gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgbm9uLXN0YXRpYyBmdW5jdGlvbiwganVzdCBsaWtlIGBrdm1fZ3BjX2FjdGl2YXRlYCBhbmQgYGt2bV9ncGNfYWN0aXZhdGVfaHZhYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEl0IG1lYW5zIHRoZXNlIGZ1bmN0aW9ucyBhcmUsIGJ5IGRlZmluaXRpb24sIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIHNvdXJjZSBmaWxlIHRoZXkmIzM5O3JlIGRlZmluZWQgaW4uIFRoZXkmIzM5O3JlIHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UsIGVzc2VudGlhbGx5LiBNYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGNvbnRleHQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlIGluIHRoZSBLVk0gbW9kdWxlLgoKTm93LCBhIGtleSBxdWVzdGlvbiB0aGF0IGFsd2F5cyBhcmlzZXMgd2hlbiB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCBmdW5jdGlvbnMgdGhhdCAqY291bGQqIGJlIHVzZWQgb3V0c2lkZSB0aGVpciBvcmlnaW5hbCBjb21waWxhdGlvbiB1bml0IGlzOiBhcmUgdGhleSAqYWN0dWFsbHkqIGV4cG9ydGVkIHRvIG1vZHVsZXM/IEFyZSB0aGV5IGF2YWlsYWJsZSB0byBiZSB1c2VkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwsIG9yIGV2ZW4gZXh0ZXJuYWwga2VybmVsIG1vZHVsZXMgdGhhdCBpbnRlcmFjdCB3aXRoIEtWTT8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBrdm1fZ3BjX3JlZnJlc2hgIHNwZWNpZmljYWxseSBpcyBleHBvcnRlZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGV4cGxpY2l0bHkgaGFuZGxlZC4gVGhhdCYjMzk7cyBhIGNydWNpYWwgcG9pbnQgdG8gY29uZmlybSBhbmQgZG9jdW1lbnQgcHJvcGVybHkuIFRoaXMgaGVscHMgZW5zdXJlIG1haW50YWluYWJpbGl0eSBhbmQgdGhlIHByb3BlciBpbnRlcmFjdGlvbiBiZXR3ZWVuIEtWTSBhbmQgZXh0ZXJuYWwgbW9kdWxlcyB0aGF0IG1heSByZWx5IG9uIGl0cyBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0xfR1BMXFwoa3ZtX2dwY19yZWZyZXNoXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjYzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEtWTSBQRk4gQ2FjaGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgS1ZNIFBGTiBjYWNoZSB3b3JrcywgYW5kIHRoYXQgbWVhbnMgc3RhcnRpbmcgYXQgYSBmdW5kYW1lbnRhbCBsZXZlbC4gSSYjMzk7bSBnb2luZyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRldGFpbHMgb2YgYHZpcnQva3ZtL3BmbmNhY2hlLmNgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBzZWUgaG93IHN5bWJvbHMgYXJlIGV4cG9ydGVkLiBJJiMzOTtsbCBiZSB0YXJnZXRpbmcgYEVYUE9SVF9TWU1CT0xgLiBJIHdhbnQgdG8gc2VlIHdoYXQgaXMgZ2V0dGluZyBleHBvc2VkLCBhbmQgSSBuZWVkIHRvIGNvbnNpZGVyIHdoeSBzcGVjaWZpYyBzeW1ib2xzIGFyZSBiZWluZyBtYWRlIGF2YWlsYWJsZSBvdXRzaWRlIG9mIHRoZSBpbW1lZGlhdGUgbW9kdWxlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvbiB0aGlzIGNvbXBvbmVudC4gVGhpcyBsaWtlbHkgaGFzIGltcGxpY2F0aW9ucyBmb3IgdGhlIHN0YWJpbGl0eSBhbmQgbWFpbnRlbmFuY2Ugb2YgdGhlIEtWTSBjb2RlYmFzZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBzeW1ib2xzIGlzIGNyaXRpY2FsIGZvciBtYWtpbmcgaW5mb3JtZWQgY2hhbmdlcyBvciBvcHRpbWl6YXRpb25zIHRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9wZm5jYWNoZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5MTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgS1ZNIFBGTiBDYWNoZSBTeW1ib2wgRXhwb3J0KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkmIzM5O20gbG9va2luZyBhdCBgdmlydC9rdm0vcGZuY2FjaGUuY2AsIGFuZCBzb21ldGhpbmcgc2VlbXMgb2ZmLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiBpdCBtaWdodCBiZSBleHBvc2luZyBzb21lIHN5bWJvbHMsIGJ1dCBhIHF1aWNrIHNjYW4gZG9lc24mIzM5O3QgcmV2ZWFsIGFueSBvYnZpb3VzIGV4cG9ydHMuIE5vdywgdGhhdCYjMzk7cyBub3QgbmVjZXNzYXJpbHkgYSBkZWFsLWJyZWFrZXIuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIHBvdGVudGlhbCBmb3IgYEVYUE9SVF9TWU1CT0xfR1BMYC4gUGVyaGFwcyB0aGF0IG1hY3JvIGlzIGJlaW5nIGVtcGxveWVkIHRvIG1ha2UgY2VydGFpbiBmdW5jdGlvbnMgb3IgZGF0YSBzdHJ1Y3R1cmVzIGF2YWlsYWJsZSwgZXZlbiBpZiBub3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIEkgbmVlZCB0byBkaXZlIGRlZXBlci4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGV4YW1pbmluZyBhIGtleSBmdW5jdGlvbiB3aXRoaW4gdGhpcyBmaWxlIOKAkyBga3ZtX2dwY19yZWZyZXNoYC4gVGhhdCYjMzk7cyBsaWtlbHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzYwOlx0XG4gMzYxOlx0XHRyZXR1cm4gcmV0O1xuIDM2MjpcdH1cbiAzNjM6XHRcbiAzNjQ6XHRpbnQga3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHVuc2lnbmVkIGxvbmcgbGVuKVxuIDM2NTpcdHtcbiAzNjY6XHRcdHVuc2lnbmVkIGxvbmcgdWh2YTtcbiAzNjc6XHRcbiAzNjg6XHRcdGd1YXJkKG11dGV4KShcdTAwMjZncGMtXHUwMDNlcmVmcmVzaF9sb2NrKTtcbiAzNjk6XHRcbiAzNzA6XHRcdGlmICgha3ZtX2dwY19pc192YWxpZF9sZW4oZ3BjLVx1MDAzZWdwYSwgZ3BjLVx1MDAzZXVodmEsIGxlbikpXG4gMzcxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDM3MjpcdFxuIDM3MzpcdFx0LypcbiAzNzQ6XHRcdCAqIElmIHRoZSBHUEEgaXMgdmFsaWQgdGhlbiBpZ25vcmUgdGhlIEhWQSwgYXMgYSBjYWNoZSBjYW4gYmUgR1BBLWJhc2VkXG4gMzc1Olx0XHQgKiBvciBIVkEtYmFzZWQsIG5vdCBib3RoLiAgRm9yIEdQQS1iYXNlZCBjYWNoZXMsIHRoZSBIVkEgd2lsbCBiZVxuIDM3NjpcdFx0ICogcmVjb21wdXRlZCBkdXJpbmcgcmVmcmVzaCBpZiBuZWNlc3NhcnkuXG4gMzc3Olx0XHQgKi9cbiAzNzg6XHRcdHVodmEgPSBrdm1faXNfZXJyb3JfZ3BhKGdwYy1cdTAwM2VncGEpID8gZ3BjLVx1MDAzZXVodmEgOiBLVk1fSFZBX0VSUl9CQUQ7XG4gMzc5Olx0XG4gMzgwOlx0XHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGMtXHUwMDNlZ3BhLCB1aHZhKTtcbiAzODE6XHR9XG4gMzgyOlx0XG4gMzgzOlx0dm9pZCBrdm1fZ3BjX2luaXQoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgc3RydWN0IGt2bSAqa3ZtKVxuIDM4NDpcdHtcbiAzODU6XHRcdHJ3bG9ja19pbml0KFx1MDAyNmdwYy1cdTAwM2Vsb2NrKTtcbiAzODY6XHRcdG11dGV4X2luaXQoXHUwMDI2Z3BjLVx1MDAzZXJlZnJlc2hfbG9jayk7XG4gMzg3Olx0XG4gMzg4Olx0XHRncGMtXHUwMDNla3ZtID0ga3ZtO1xuIDM4OTpcdFx0Z3BjLVx1MDAzZXBmbiA9IEtWTV9QRk5fRVJSX0ZBVUxUO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTY3OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gTW9kdWxlIEludGVybmFscyoqCgpPa2F5LCBzbyBLVk0gaXMgY29uc3RydWN0ZWQgYXMgYSBzaW5nbGUsIGNvaGVzaXZlIG1vZHVsZSwgb3IgcGVyaGFwcyBldmVuIGJ1aWx0LWluLCBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljcyBvZiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBzZWUgdGhhdCB0aGUgYHZpcnQva3ZtL3BmbmNhY2hlLm9gIG9iamVjdCBmaWxlIGdldHMgbGlua2VkIGRpcmVjdGx5IGludG8gYGt2bS5vYC4gQWN0dWFsbHksIGlzIGl0IGFsc28gbGlua2VkIHdpdGggYGt2bS1hbWQub2Agb3IgYGt2bS1pbnRlbC5vYD8gTm8sIG5vLCBga3ZtLm9gIGlzIGRlZmluaXRlbHkgdGhlIGNlbnRyYWwgY29yZSBoZXJlLiBBaCwgcmlnaHQsIHRoZSBidWlsZCBwcm9jZXNzIGxpa2VseSBpbmNsdWRlcyBgJChLVk0pL3BmbmNhY2hlLm9gIGluIGBrdm0teWAuIFNpbmNlIGBwZm5jYWNoZWAgaXMgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBLVk0sIGl0IGRvZXNuJiMzOTt0IG5lZWQgZXhwbGljaXQgc3ltYm9sIGV4cG9ydC4KCkJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIHNlZWluZyBgRVhQT1JUX1NZTUJPTF9HUExgIGJlaW5nIHVzZWQgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgIOKAkyBzcGVjaWZpY2FsbHkgZm9yIHN5bWJvbHMgdGhhdCAqZG8qIG5lZWQgdG8gYmUgZXhwb3NlZCB0byBtb2R1bGVzIGxpa2UgYGt2bS1pbnRlbGAgb3IgYGt2bS1hbWRgLiBUaGF0IG1lYW5zIHRoZXJlJiMzOTtzIHNvbWUgaW50ZXJhY3Rpb24uIE9rYXksIGxldCBtZSBxdWlja2x5IHZlcmlmeSBpZiBga3ZtX2dwY19yZWZyZXNoYCBpcyBleHBvcnRlZCBmcm9tIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgaW50ZXJuYWwgY29tcG9uZW50cyBhcmUgc2hhcmVkIGFuZCBsaW5rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTF9HUEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9wZm5jYWNoZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxODgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNIFN5bWJvbCBFeHBvcnQqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMYCBpcyBhY3R1YWxseSBpbiB1c2Ugc29tZXdoZXJlLCBhbmQgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0IG1pZ2h0IGJlLCBidXQgbGV0JiMzOTtzIGJlIHN1cmUuIFdhaXQsIG5vLCBgRVhQT1JUX1NZTUJPTF9HUExgIGlzIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCwgdGhhdCYjMzk7cyBhbiBpbXBvcnRhbnQgZGV0YWlsLiBJIHNob3VsZCBjaGVjayBgdmlydC9rdm0vcGZuY2FjaGUuY2AgYWdhaW4gZm9yIGBFWFBPUlRfU1lNQk9MX0dQTGAsIGp1c3QgdG8gYmUgY2VydGFpbi4gTm9wZSwgc3RpbGwgbm90aGluZy4KCkFscmlnaHQsIEkmIzM5O2xsIHRyeSBzZWFyY2hpbmcgZm9yIGBFWFBPUlRfU1lNQk9MX0dQTGAgaW4gYHZpcnQva3ZtL3BmbmNhY2hlLmNgIGFnYWluLCBidXQgdGhpcyB0aW1lIEkmIzM5O2xsIG1ha2UgdGhlIHNlYXJjaCBjYXNlLWluc2Vuc2l0aXZlLCBqdXN0IHRvIGNvdmVyIGFsbCBiYXNlcywgYmVjYXVzZSBzb21ldGltZXMgdGhpbmdzIGFyZSBuYW1lZCB1bmV4cGVjdGVkbHkuIFN0aWxsIG5vdGhpbmcuIFNvIGl0JiMzOTtzIG5vdCBleHBvcnRlZCB0aGVyZS4KCk9rYXksIGxldCYjMzk7cyB0YWtlIG9uZSBtb3JlIGxvb2sgYXQgYHZpcnQva3ZtL3BmbmNhY2hlLmNgIGZvciBgRVhQT1JUX1NZTUJPTF9HUExgIGp1c3QgdG8gZG91YmxlIGNoZWNrIHRoYXQgSSBkaWRuJiMzOTt0IG1pc3Mgc29tZXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0xfR1BMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHRob3VnaHQ6CgoqKkNoZWNraW5nIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYCBmb3IgYEVYUE9SVF9TWU1CT0xgKioKCk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgdmlzaWJpbGl0eSBvZiBzb21lIHN5bWJvbHMgd2l0aGluIHRoZSBLVk0gUEZOIGNhY2hlIGltcGxlbWVudGF0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRvIGNoZWNrIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYCBmb3IgYEVYUE9SVF9TWU1CT0xgLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUsIHJlYWxseTsgaXQmIzM5O3MgdGhlIHF1aWNrIGFuZCBkaXJ0eSB3YXkgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW5kZWQgc2NvcGUgb2YgdGhlc2Ugc3ltYm9scy4gQXJlIHRoZXkgaW50ZW5kZWQgZm9yIG1vZHVsZSB1c2UsIGludGVybmFsIHRvIEtWTSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IExvb2tpbmcgYXQgdGhlIGBFWFBPUlRfU1lNQk9MYCBtYWNybyB3aWxsIHRlbGwgbWUgaWYgdGhleSBhcmUgZ2xvYmFsbHkgdmlzaWJsZS4gVGhpcyBpcyBhIGZvdW5kYXRpb25hbCBzdGVwLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IGhvdyB0aGUgUEZOIGNhY2hlIGlzIGV4cG9zZWQgYW5kIHVzZWQsIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBwYXJ0aWN1bGFybHkgb3RoZXIgS1ZNIG1vZHVsZXMgb3IgdGhlIGNvcmUga2VybmVsIGl0c2VsZi4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTAyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFyZ2V0IGlzbiYjMzk7dCBleHBsaWNpdGx5IGV4cG9ydGVkLCB3aGljaCBpcyB0aGUgaW5pdGlhbCBodXJkbGUuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYSBub24tc3RhdGljIGZ1bmN0aW9uICp3aXRoaW4qIHRoZSBrZXJuZWwgaW1hZ2UgZ2l2ZXMgdXMgYSBkZWZpbml0ZSBhdmVudWUgZm9yIGZ1enppbmcuIFdlIGtub3cgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIGZhaXIgZ2FtZS4KCk15IHRoaW5raW5nIHRoZW4gemVyb2VzIGluIG9uIGBrdm1fZ3BjX3JlZnJlc2hgLiBTaW5jZSBpdCYjMzk7cyBub24tc3RhdGljLCB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIGl0JiMzOTtzIHByZXNlbnQgd2l0aGluIGBrdm0ua29gLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0IHF1aWNrbHkuLi4gWWVzLCBjb25maXJtZWQsIGl0ICppcyogaW4gYGt2bS5rb2AuIEV4Y2VsbGVudC4KClRoYXQgbmFycm93cyBvdXIgZm9jdXMuIFRoZSBjcml0aWNhbCBzeW1ib2xzIGZvciBhIHByb21pc2luZyBmdXp6aW5nIGNhbXBhaWduIGFyZSBjbGVhcmx5IGBrdm1fZ3BjX3JlZnJlc2hgLCBga3ZtX2dwY19hY3RpdmF0ZWAsIGFuZCBga3ZtX2dwY19hY3RpdmF0ZV9odmFgLgoKTm93IGl04oCZcyB0aW1lIHRvIGFzc2VzcyB0aG9zZSBsYXN0IHR3bzogYGt2bV9ncGNfYWN0aXZhdGVgIGFuZCBga3ZtX2dwY19hY3RpdmF0ZV9odmFgLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBpbiB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDIwOlx0XHRcdHdyaXRlX3VubG9ja19pcnEoXHUwMDI2Z3BjLVx1MDAzZWxvY2spO1xuIDQyMTpcdFx0fVxuIDQyMjpcdFx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BhLCB1aHZhKTtcbiA0MjM6XHR9XG4gNDI0Olx0XG4gNDI1Olx0aW50IGt2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGxlbilcbiA0MjY6XHR7XG4gNDI3Olx0XHQvKlxuIDQyODpcdFx0ICogRXhwbGljaXRseSBkaXNhbGxvdyBJTlZBTElEX0dQQSBzbyB0aGF0IHRoZSBtYWdpYyB2YWx1ZSBjYW4gYmUgdXNlZFxuIDQyOTpcdFx0ICogYnkgS1ZNIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBHUEEtYmFzZWQgYW5kIEhWQS1iYXNlZCBjYWNoZXMuXG4gNDMwOlx0XHQgKi9cbiA0MzE6XHRcdGlmIChXQVJOX09OX09OQ0Uoa3ZtX2lzX2Vycm9yX2dwYShncGEpKSlcbiA0MzI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNDMzOlx0XG4gNDM0Olx0XHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgZ3BhLCBLVk1fSFZBX0VSUl9CQUQsIGxlbik7XG4gNDM1Olx0fVxuIDQzNjpcdFxuIDQzNzpcdGludCBrdm1fZ3BjX2FjdGl2YXRlX2h2YShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIHVodmEsIHVuc2lnbmVkIGxvbmcgbGVuKVxuIDQzODpcdHtcbiA0Mzk6XHRcdGlmICghYWNjZXNzX29rKCh2b2lkIF9fdXNlciAqKXVodmEsIGxlbikpXG4gNDQwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDQ0MTpcdFxuIDQ0MjpcdFx0cmV0dXJuIF9fa3ZtX2dwY19hY3RpdmF0ZShncGMsIElOVkFMSURfR1BBLCB1aHZhLCBsZW4pO1xuIDQ0MzpcdH1cbiA0NDQ6XHRcbiA0NDU6XHR2b2lkIGt2bV9ncGNfZGVhY3RpdmF0ZShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKVxuIDQ0NjpcdHtcbiA0NDc6XHRcdHN0cnVjdCBrdm0gKmt2bSA9IGdwYy1cdTAwM2Vrdm07XG4gNDQ4Olx0XHRrdm1fcGZuX3Qgb2xkX3BmbjtcbiA0NDk6XHRcdHZvaWQgKm9sZF9raHZhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTgyNwoJCQkJCQkJb3V0cHV0OiAxMjgKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gdGhlc2UgZnVuY3Rpb25zLCBga3ZtX2dwY19yZWZyZXNoYCwgYGt2bV9ncGNfYWN0aXZhdGVgLCBhbmQgYGt2bV9ncGNfYWN0aXZhdGVfaHZhYCwgYXJlIG5vbi1zdGF0aWMg4oCTIHRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgbmVlZGVkIHRvIGNvbmZpcm0uIEkmIzM5O20gZ29pbmcgdG8gYWRkIHRob3NlIHRocmVlIHN5bWJvbHMgdG8gbXkgZm9jdXMgbGlzdC4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGBLVk1gLCB3aGljaCBpcyBhbHNvIGltcG9ydGFudCB0byBub3RlLgoKTm93LCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIHByb3ZpZGVkIHBhdGNoLiBSaWdodCwgaGVyZSYjMzk7cyB0aGUgY29yZSBvZiBpdC4gV2UmIzM5O3JlIHJlbW92aW5nIHRoZSBgZ3BjLSZndDtsb2NrYCBhY3F1aXNpdGlvbiBpZiB0aGUgR1BDIGlzbiYjMzk7dCBhY3RpdmUuIEl0JiMzOTtzIG1vdmluZyB0aGUgYGxvY2tkZXBfYXNzZXJ0X2hlbGRgIGhpZ2hlciBpbiB0aGUgZnVuY3Rpb24mIzM5O3Mgc3RydWN0dXJlLiBUaGF0JiMzOTtzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIGFuZCB0aG9zZSBhcmUgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBlc3BlY2lhbGx5IHdoZW4gdGhleSBpbnZvbHZlIGxvY2tzIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBvciBpZiB0aGUgbG9naWMgaXMgYWZmZWN0ZWQgYnkgdGhlIHN0YXRlIG9mIGBncGMtJmd0O2FjdGl2ZWAuCgpUaGUgZmFjdCB0aGF0IHdlJiMzOTtyZSBvcHRpbWl6aW5nIHRoZSBsb2NrIGFjcXVpc2l0aW9uIHBhdGggYmFzZWQgb24gdGhlIGBncGMtJmd0O2FjdGl2ZWAgc3RhdHVzIHJhaXNlcyBhIHJlZCBmbGFnLiBUaGlzIGNvbmRpdGlvbmFsIGxvZ2ljIGNhbiBlYXNpbHkgaW50cm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaWYgdGhlIGBncGMtJmd0O2FjdGl2ZWAgZmxhZyBjaGFuZ2VzIGNvbmN1cnJlbnRseS4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLCBzbyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSB2aWFibGUgdGFyZ2V0LiBJIG5lZWQgdG8gYmUgYWJsZSB0byBzZXQgdGhlIGFjdGl2ZSByZXN1bHRzLgoKQWxyaWdodCwgdGltZSB0byBsb2cgdGhpcyBmb3IgYSBmdWxsLXNjYWxlIGZ1enppbmcgY2FtcGFpZ24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fZ3BjX3JlZnJlc2gmIzM0OywKICAgICYjMzQ7a3ZtX2dwY19hY3RpdmF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fZ3BjX2FjdGl2YXRlX2h2YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zIGluIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIHRoZSBLVk0gcGZuY2FjaGUgbG9naWMuIEl0IGF2b2lkcyB0YWtpbmcgdGhlIGBncGMtXHUwMDNlbG9ja2AgaWYgdGhlIGNhY2hlIGlzIG5vdCBhY3RpdmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChLVk0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fZ3BjX3JlZnJlc2gmIzM0OywKICAgICYjMzQ7a3ZtX2dwY19hY3RpdmF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fZ3BjX2FjdGl2YXRlX2h2YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zIGluIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIHRoZSBLVk0gcGZuY2FjaGUgbG9naWMuIEl0IGF2b2lkcyB0YWtpbmcgdGhlIGBncGMtXHUwMDNlbG9ja2AgaWYgdGhlIGNhY2hlIGlzIG5vdCBhY3RpdmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChLVk0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMTM6NTk6NTguODAxOTY2NzEzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MDYxOTk2NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9ncGNfcmVmcmVzaFwiLFxuICAgIFwia3ZtX2dwY19hY3RpdmF0ZVwiLFxuICAgIFwia3ZtX2dwY19hY3RpdmF0ZV9odmFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zIGluIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIHRoZSBLVk0gcGZuY2FjaGUgbG9naWMuIEl0IGF2b2lkcyB0YWtpbmcgdGhlIGBncGMtXFx1MDAzZWxvY2tgIGlmIHRoZSBjYWNoZSBpcyBub3QgYWN0aXZlLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoS1ZNKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTM6NTk6NTguODAxOTczMTkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDAzNzYwMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmN2EyOTMwYmI4OWEzMmZjMWFiOWM4YzgyMmIzMmE2YjRiNjBlMjc1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDEzOjU5OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL3BmbmNhY2hlLmMgYi92aXJ0L2t2bS9wZm5jYWNoZS5jXFxuaW5kZXggNzI4ZDJjMWI0ODhhOC4uZmNmZDU1NTViOTFiOSAxMDA2NDRcXG4tLS0gYS92aXJ0L2t2bS9wZm5jYWNoZS5jXFxuKysrIGIvdmlydC9rdm0vcGZuY2FjaGUuY1xcbkBAIC0yNjMsMTkgKzI2MywxNyBAQCBzdGF0aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbFxcbiBcXHR2b2lkICpvbGRfa2h2YTtcXG4gXFx0aW50IHJldDtcXG4gXFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmdwYy1cXHUwMDNlcmVmcmVzaF9sb2NrKTtcXG4rXFxuK1xcdGlmICghZ3BjLVxcdTAwM2VhY3RpdmUpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0LyogRWl0aGVyIGdwYSBvciB1aHZhIG11c3QgYmUgdmFsaWQsIGJ1dCBub3QgYm90aCAqL1xcbiBcXHRpZiAoV0FSTl9PTl9PTkNFKGt2bV9pc19lcnJvcl9ncGEoZ3BhKSA9PSBrdm1faXNfZXJyb3JfaHZhKHVodmEpKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZncGMtXFx1MDAzZXJlZnJlc2hfbG9jayk7XFxuLVxcbiBcXHR3cml0ZV9sb2NrX2lycShcXHUwMDI2Z3BjLVxcdTAwM2Vsb2NrKTtcXG4gXFxuLVxcdGlmICghZ3BjLVxcdTAwM2VhY3RpdmUpIHtcXG4tXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4tXFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbi1cXHR9XFxuLVxcbiBcXHRvbGRfcGZuID0gZ3BjLVxcdTAwM2VwZm47XFxuIFxcdG9sZF9raHZhID0gKHZvaWQgKilQQUdFX0FMSUdOX0RPV04oKHVpbnRwdHJfdClncGMtXFx1MDAzZWtodmEpO1xcbiBcXHRvbGRfdWh2YSA9IFBBR0VfQUxJR05fRE9XTihncGMtXFx1MDAzZXVodmEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMzo1OTo1OS4zMDMzMDYyNjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDQ1NjA2NDYwNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2dwY19yZWZyZXNoXCIsXG4gICAgXCJrdm1fZ3BjX2FjdGl2YXRlXCIsXG4gICAgXCJrdm1fZ3BjX2FjdGl2YXRlX2h2YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFuZCBsb2NrZGVwIGFzc2VydGlvbnMgaW4gYF9fa3ZtX2dwY19yZWZyZXNoYCB3aXRoaW4gdGhlIEtWTSBwZm5jYWNoZSBsb2dpYy4gSXQgYXZvaWRzIHRha2luZyB0aGUgYGdwYy1cXHUwMDNlbG9ja2AgaWYgdGhlIGNhY2hlIGlzIG5vdCBhY3RpdmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChLVk0pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmN2EyOTMwYmI4OWEzMmZjMWFiOWM4YzgyMmIzMmE2YjRiNjBlMjc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTM6NTk6NTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS92aXJ0L2t2bS9wZm5jYWNoZS5jIGIvdmlydC9rdm0vcGZuY2FjaGUuY1xuaW5kZXggNzI4ZDJjMWI0ODhhOC4uZmNmZDU1NTViOTFiOSAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL3BmbmNhY2hlLmNcbisrKyBiL3ZpcnQva3ZtL3BmbmNhY2hlLmNcbkBAIC0yNjMsMTkgKzI2MywxNyBAQCBzdGF0aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbFxuIFx0dm9pZCAqb2xkX2todmE7XG4gXHRpbnQgcmV0O1xuIFxuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZncGMtXHUwMDNlcmVmcmVzaF9sb2NrKTtcbitcbitcdGlmICghZ3BjLVx1MDAzZWFjdGl2ZSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHQvKiBFaXRoZXIgZ3BhIG9yIHVodmEgbXVzdCBiZSB2YWxpZCwgYnV0IG5vdCBib3RoICovXG4gXHRpZiAoV0FSTl9PTl9PTkNFKGt2bV9pc19lcnJvcl9ncGEoZ3BhKSA9PSBrdm1faXNfZXJyb3JfaHZhKHVodmEpKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmdwYy1cdTAwM2VyZWZyZXNoX2xvY2spO1xuLVxuIFx0d3JpdGVfbG9ja19pcnEoXHUwMDI2Z3BjLVx1MDAzZWxvY2spO1xuIFxuLVx0aWYgKCFncGMtXHUwMDNlYWN0aXZlKSB7XG4tXHRcdHJldCA9IC1FSU5WQUw7XG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cdH1cbi1cbiBcdG9sZF9wZm4gPSBncGMtXHUwMDNlcGZuO1xuIFx0b2xkX2todmEgPSAodm9pZCAqKVBBR0VfQUxJR05fRE9XTigodWludHB0cl90KWdwYy1cdTAwM2VraHZhKTtcbiBcdG9sZF91aHZhID0gUEFHRV9BTElHTl9ET1dOKGdwYy1cdTAwM2V1aHZhKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEzOjU5OjU5LjMwMzMwNzYxNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NTE1Nzg0MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUEZOIENhY2hlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdmlydC9rdm0vcGZuY2FjaGUuY2AuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBpdCdzIHNoaWZ0aW5nIGFyb3VuZCBhIGtleSBjaGVjayByZWxhdGVkIHRvIGBncGMtXHUwMDNlYWN0aXZlYCB3aXRoaW4gdGhlIGBfX2t2bV9ncGNfcmVmcmVzaGAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQncyBtb3ZpbmcgdGhlIGBpZiAoIWdwYy1cdTAwM2VhY3RpdmUpYCBjaGVjayAqb3V0c2lkZSogdGhlIGB3cml0ZV9sb2NrX2lycShcdTAwMjZncGMtXHUwMDNlbG9jayk7YCBibG9jay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBkaWZmLi4uIHJpZ2h0IGhlcmUuXG5cbkFoLCBJIHNlZSBpdCBub3cuIFRoZSBjb2RlIGlzIHN0cnVjdHVyZWQgbGlrZSB0aGlzOiBcbmBgYGNcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2Z3BjLVx1MDAzZXJlZnJlc2hfbG9jayk7XG4rXG4rXHRpZiAoIWdwYy1cdTAwM2VhY3RpdmUpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuYGBgXG5cbk5vdywgdGhlIGNoZWNrIGZvciBgZ3BjLVx1MDAzZWFjdGl2ZWAgaXMgKmJlZm9yZSogdGhlIGxvY2sgYWNxdWlzaXRpb24uIFByZXZpb3VzbHksIGl0IHdhcyAqaW5zaWRlKi5cblxuYGBgY1xuIFx0d3JpdGVfbG9ja19pcnEoXHUwMDI2Z3BjLVx1MDAzZWxvY2spO1xuIFxuLVx0aWYgKCFncGMtXHUwMDNlYWN0aXZlKSB7XG4tXHRcdHJldCA9IC1FSU5WQUw7XG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cdH1cbmBgYFxuXG5UaGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gSWYgYGdwYy1cdTAwM2VhY3RpdmVgIGlzIGZhbHNlLCBpdCdzIG5vdyBwb3NzaWJsZSB0byBmYWlsIHdpdGhvdXQgYWNxdWlyaW5nIGEgc3BpbmxvY2ssIG9yIG1vcmUgcHJlY2lzZWx5LCB3aXRob3V0IGFjcXVpcmluZyBhIHdyaXRlIGxvY2sgb24gYGdwYy1cdTAwM2Vsb2NrYC4gVGhlIGBsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmdwYy1cdTAwM2VyZWZyZXNoX2xvY2spO2AgaXMgYWxzbyBtb3ZlZCBhYm92ZSwgYnV0IHRoaXMgbGlrZWx5IGRvZXNuJ3QgaGF2ZSBhcyBtdWNoIG9mIGFuIGltcGFjdC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzaXR1YXRpb25zIGNvdWxkIHRyaWdnZXIgdGhpcyBgIWdwYy1cdTAwM2VhY3RpdmVgIGNvbmRpdGlvbi4gVGhpcyBjaGFuZ2UgYWZmZWN0cyB0aGUgbG9jayBhY3F1aXNpdGlvbiBiZWhhdmlvci4gSWYgYGdwYy1cdTAwM2VhY3RpdmVgIGlzIGZhbHNlLCBpdCBtZWFucyB0aGF0IHRoZSB3cml0ZSBsb2NrIGlzIG5ldmVyIG5lZWRlZC4gQmVmb3JlIHRoaXMgY2hhbmdlLCB0aGUgbG9jayB3YXMgdW5uZWNlc3NhcmlseSBhY3F1aXJlZCwgd2hlbiBpdCB3YXNuJ3QgcmVxdWlyZWQuIEkgbmVlZCB0byB0cmFjayB0aGUgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLiBMZXQgbWUgbG9vayB0aG9zZSB1cC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MDUuODU0ODg5Njc4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTU5MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fa3ZtX2dwY19yZWZyZXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL3BmbmNhY2hlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0vcGZuY2FjaGUuYz0xNTU9c3RhdGljIGt2bV9wZm5fdCBodmFfdG9fcGZuX3JldHJ5KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMpXFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1NS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjI1NjpzdGF0aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyB1aHZhKVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjU3LXtcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM9MzY0PWludCBrdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBsZW4pXFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM3OS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjM4MDpcXHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGMtXFx1MDAzZWdwYSwgdWh2YSk7XFxudmlydC9rdm0vcGZuY2FjaGUuYy0zODEtfVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYz0zOTU9c3RhdGljIGludCBfX2t2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEsXFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMS1cXHR9XFxudmlydC9rdm0vcGZuY2FjaGUuYzo0MjI6XFx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BhLCB1aHZhKTtcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjA1LjkwMzA1NTA5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODUwMTk4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvZGUgc25pcHBldHMsIHRoaW5raW5nIHRocm91Z2ggdGhlIGZsb3cgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyBpdCBteXNlbGY6XG5cbioqVHJhY2luZyB0aGUgR1BDIFJlZnJlc2ggTG9naWMqKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSB0aGF0IGJvdGggYGt2bV9ncGNfcmVmcmVzaGAgYW5kIGBfX2t2bV9ncGNfYWN0aXZhdGVgIHVsdGltYXRlbHkgY2FsbCBgX19rdm1fZ3BjX3JlZnJlc2hgLiBUaGF0IHN1Z2dlc3RzIGBfX2t2bV9ncGNfcmVmcmVzaGAgaXMgdGhlIGNvcmUgZnVuY3Rpb24sIHRoZSB3b3JraG9yc2Ugb2YgdGhlIGdyb3VwLiBOb3csIHNpbmNlIGBrdm1fZ3BjX3JlZnJlc2hgIGlzIGVpdGhlciBleHBvcnRlZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIHVzZWQgaW4gb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUgYmFzZSwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUuIFRvIGZ1bGx5IHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZywgSSBuZWVkIHRvIGxvb2sgdXBzdHJlYW0sIHdoaWNoIGFsc28gYXBwbGllcyB0byBgX19rdm1fZ3BjX2FjdGl2YXRlYC4gSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSAqY2FsbGVycyogb2YgYm90aCBga3ZtX2dwY19yZWZyZXNoYCBhbmQgYF9fa3ZtX2dwY19hY3RpdmF0ZWAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgY29udGV4dHMgaW4gd2hpY2ggdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIGFuZCBob3cgdGhleSBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBJZGVudGlmeWluZyB0aGUgb3JpZ2lucyB3aWxsIHNob3cgbWUgdGhlIGluaXRpYXRpbmcgZXZlbnRzIG9yIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZXNlIGFsbC1pbXBvcnRhbnQgcmVmcmVzaCBhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQ2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MDkuNjg4MDc3MjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyMjM3Njc1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fZ3BjX3JlZnJlc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0zMjQyPXN0YXRpYyB2b2lkIGt2bV9zZXR1cF9ndWVzdF9wdmNsb2NrKHN0cnVjdCBwdmNsb2NrX3ZjcHVfdGltZV9pbmZvICpyZWZfaHZfY2xvY2ssXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzI1Ni1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzI1NzpcXHRcXHRpZiAoa3ZtX2dwY19yZWZyZXNoKGdwYywgb2Zmc2V0ICsgc2l6ZW9mKCpndWVzdF9odl9jbG9jaykpKVxcbmFyY2gveDg2L2t2bS94ODYuYy0zMjU4LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0zOD1zdGF0aWMgaW50IGt2bV94ZW5fc2hhcmVkX2luZm9faW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtNTEtXFxuYXJjaC94ODYva3ZtL3hlbi5jOjUyOlxcdFxcdHJldCA9IGt2bV9ncGNfcmVmcmVzaChncGMsIFBBR0VfU0laRSk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTUzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MTUzPXN0YXRpYyBpbnQgeGVuX2dldF9ndWVzdF9wdmNsb2NrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0xNjQtXFxuYXJjaC94ODYva3ZtL3hlbi5jOjE2NTpcXHRcXHRyID0ga3ZtX2dwY19yZWZyZXNoKGdwYywgb2Zmc2V0ICsgc2l6ZW9mKCpodl9jbG9jaykpO1xcbmFyY2gveDg2L2t2bS94ZW4uYy0xNjYtXFx0XFx0aWYgKHIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MzIxPXN0YXRpYyB2b2lkIGt2bV94ZW5fdXBkYXRlX3J1bnN0YXRlX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdiwgYm9vbCBhdG9taWMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDM4LVxcbmFyY2gveDg2L2t2bS94ZW4uYzo0Mzk6XFx0XFx0aWYgKGt2bV9ncGNfcmVmcmVzaChncGMxLCB1c2VyX2xlbjEpKVxcbmFyY2gveDg2L2t2bS94ZW4uYy00NDAtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTYzOT12b2lkIGt2bV94ZW5faW5qZWN0X3BlbmRpbmdfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdilcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy02NTYtXFxuYXJjaC94ODYva3ZtL3hlbi5jOjY1NzpcXHRcXHRpZiAoa3ZtX2dwY19yZWZyZXNoKGdwYywgc2l6ZW9mKHN0cnVjdCB2Y3B1X2luZm8pKSlcXG5hcmNoL3g4Ni9rdm0veGVuLmMtNjU4LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz02OTc9aW50IF9fa3ZtX3hlbl9oYXNfaW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdilcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy03MzAtXFxuYXJjaC94ODYva3ZtL3hlbi5jOjczMTpcXHRcXHRpZiAoa3ZtX2dwY19yZWZyZXNoKGdwYywgc2l6ZW9mKHN0cnVjdCB2Y3B1X2luZm8pKSkge1xcbmFyY2gveDg2L2t2bS94ZW4uYy03MzItXFx0XFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0xOTAxPXN0YXRpYyBpbnQga3ZtX3hlbl9zZXRfZXZ0Y2huKHN0cnVjdCBrdm1feGVuX2V2dGNobiAqeGUsIHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0xOTQ0LVxcdFxcdGlkeCA9IHNyY3VfcmVhZF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UpO1xcbmFyY2gveDg2L2t2bS94ZW4uYzoxOTQ1OlxcdFxcdHJjID0ga3ZtX2dwY19yZWZyZXNoKGdwYywgUEFHRV9TSVpFKTtcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTk0Ni1cXHRcXHRzcmN1X3JlYWRfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UsIGlkeCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTQ5MT1ib29sIGt2bV9ncGNfY2hlY2soc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBsZW4pO1xcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0OTMtLyoqXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE0OTQ6ICoga3ZtX2dwY19yZWZyZXNoIC0gdXBkYXRlIGEgcHJldmlvdXNseSBpbml0aWFsaXplZCBjYWNoZS5cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ5NS0gKlxcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE1MDgtICovXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE1MDk6aW50IGt2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIGxlbik7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE1MTAtXFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTE1NT1zdGF0aWMga3ZtX3Bmbl90IGh2YV90b19wZm5fcmV0cnkoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYylcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjU1LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6MjU2OnN0YXRpYyBpbnQgX19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEpXFxudmlydC9rdm0vcGZuY2FjaGUuYy0yNTcte1xcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYy0zNjMtXFxudmlydC9rdm0vcGZuY2FjaGUuYzozNjQ6aW50IGt2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIGxlbilcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM2NS17XFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM3OS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjM4MDpcXHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGMtXFx1MDAzZWdwYSwgdWh2YSk7XFxudmlydC9rdm0vcGZuY2FjaGUuYy0zODEtfVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYz0zOTU9c3RhdGljIGludCBfX2t2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEsXFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMS1cXHR9XFxudmlydC9rdm0vcGZuY2FjaGUuYzo0MjI6XFx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BhLCB1aHZhKTtcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjExLjcxMDQ2MzcwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2OTE1OTUzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUEZOIENhY2hlIFBhdGNoKipcblxuT2theSwgc28gdGhlIGNoYW5nZSBJJ20gbG9va2luZyBhdCBpcyB0dWNrZWQgYXdheSBpbiBgdmlydC9rdm0vcGZuY2FjaGUuY2AuIEkgc2VlIGl0IG1vZGlmaWVzIHRoZSBgX19rdm1fZ3BjX3JlZnJlc2hgIGZ1bmN0aW9uLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQm90aCBga3ZtX2dwY19yZWZyZXNoYCBhbmQgYGt2bV9ncGNfYWN0aXZhdGVgIGNhbGwgaW50byB0aGlzLiBGcm9tIG15IGluaXRpYWwgZ2xhbmNlLCBga3ZtX2dwY19yZWZyZXNoYCBpdHNlbGYgZ2V0cyBjYWxsZWQgZnJvbSBjb2RlIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgIGFuZCBgYXJjaC94ODYva3ZtL3hlbi5jYC4gR2l2ZW4gdGhvc2UgbG9jYXRpb25zLCB0aGlzIGlzIGRlZmluaXRlbHkgdG91Y2hpbmcgY29yZSBLVk0ga2VybmVsIGxvZ2ljOyB0aGVyZSdzIG5vIHdheSBhcm91bmQgdGhhdC4gVGhpcyBpc24ndCBqdXN0IGEgbWlub3IgdHdlYWs7IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0J3MgYWx0ZXJpbmcgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGFjdGl2YXRpb24gcGF0aC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHdoZXJlIGBrdm1fZ3BjX2FjdGl2YXRlYCBnZXRzIGNhbGxlZCBmcm9tLiBUaGF0IHdpbGwgZ2l2ZSBtZSBtb3JlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMjksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MTYuNDAyMDcyNTMxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTAwMzM5MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2dwY19hY3RpdmF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTI0Mjg9c3RhdGljIHZvaWQga3ZtX3dyaXRlX3N5c3RlbV90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3Qgc3lzdGVtX3RpbWUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjQ0NC1cXHRpZiAoc3lzdGVtX3RpbWUgXFx1MDAyNiAxKVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNDQ1OlxcdFxcdGt2bV9ncGNfYWN0aXZhdGUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gucHZfdGltZSwgc3lzdGVtX3RpbWUgXFx1MDAyNiB+MVVMTCxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjQ0Ni1cXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCBwdmNsb2NrX3ZjcHVfdGltZV9pbmZvKSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MzIxPXN0YXRpYyB2b2lkIGt2bV94ZW5fdXBkYXRlX3J1bnN0YXRlX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdiwgYm9vbCBhdG9taWMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDg1LVxcdFxcdFxcdC8qXFxuYXJjaC94ODYva3ZtL3hlbi5jOjQ4NjpcXHRcXHRcXHQgKiBVc2Uga3ZtX2dwY19hY3RpdmF0ZSgpIGhlcmUgYmVjYXVzZSBpZiB0aGUgcnVuc3RhdGVcXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDg3LVxcdFxcdFxcdCAqIGFyZWEgd2FzIGNvbmZpZ3VyZWQgaW4gMzItYml0IG1vZGUgYW5kIG9ubHkgZXh0ZW5kc1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTQ5MC1cXHRcXHRcXHQgKi9cXG5hcmNoL3g4Ni9rdm0veGVuLmM6NDkxOlxcdFxcdFxcdGlmIChrdm1fZ3BjX2FjdGl2YXRlKGdwYzIsIGdwYzEtXFx1MDAzZWdwYSArIHVzZXJfbGVuMSxcXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDkyLVxcdFxcdFxcdFxcdFxcdCAgICAgdXNlcl9sZW4yKSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz03NDY9aW50IGt2bV94ZW5faHZtX3NldF9hdHRyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtNzg1LVxcdFxcdFxcdH0gZWxzZSB7XFxuYXJjaC94ODYva3ZtL3hlbi5jOjc4NjpcXHRcXHRcXHRcXHRyID0ga3ZtX2dwY19hY3RpdmF0ZShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5zaGluZm9fY2FjaGUsXFxuYXJjaC94ODYva3ZtL3hlbi5jLTc4Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGdmbl90b19ncGEoZ2ZuKSwgUEFHRV9TSVpFKTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy03OTctXFx0XFx0XFx0fSBlbHNlIHtcXG5hcmNoL3g4Ni9rdm0veGVuLmM6Nzk4OlxcdFxcdFxcdFxcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlX2h2YShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5zaGluZm9fY2FjaGUsXFxuYXJjaC94ODYva3ZtL3hlbi5jLTc5OS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgKHVuc2lnbmVkIGxvbmcpaHZhLCBQQUdFX1NJWkUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTkwNj1pbnQga3ZtX3hlbl92Y3B1X3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV94ZW5fdmNwdV9hdHRyICpkYXRhKVxcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTkyOC1cXG5hcmNoL3g4Ni9rdm0veGVuLmM6OTI5OlxcdFxcdFxcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnhlbi52Y3B1X2luZm9fY2FjaGUsXFxuYXJjaC94ODYva3ZtL3hlbi5jLTkzMC1cXHRcXHRcXHRcXHRcXHQgICAgIGRhdGEtXFx1MDAzZXUuZ3BhLCBzaXplb2Yoc3RydWN0IHZjcHVfaW5mbykpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTkzNy1cXG5hcmNoL3g4Ni9rdm0veGVuLmM6OTM4OlxcdFxcdFxcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlX2h2YShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC54ZW4udmNwdV9pbmZvX2NhY2hlLFxcbmFyY2gveDg2L2t2bS94ZW4uYy05MzktXFx0XFx0XFx0XFx0XFx0XFx0IGRhdGEtXFx1MDAzZXUuaHZhLCBzaXplb2Yoc3RydWN0IHZjcHVfaW5mbykpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTk1My1cXG5hcmNoL3g4Ni9rdm0veGVuLmM6OTU0OlxcdFxcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnhlbi52Y3B1X3RpbWVfaW5mb19jYWNoZSxcXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTU1LVxcdFxcdFxcdFxcdCAgICAgZGF0YS1cXHUwMDNldS5ncGEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTg3LVxcdFxcdHN6MSA9IFBBR0VfU0laRSAtIChkYXRhLVxcdTAwM2V1LmdwYSBcXHUwMDI2IH5QQUdFX01BU0spO1xcbmFyY2gveDg2L2t2bS94ZW4uYzo5ODg6XFx0XFx0ciA9IGt2bV9ncGNfYWN0aXZhdGUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gueGVuLnJ1bnN0YXRlX2NhY2hlLFxcbmFyY2gveDg2L2t2bS94ZW4uYy05ODktXFx0XFx0XFx0XFx0ICAgICBkYXRhLVxcdTAwM2V1LmdwYSwgc3oxKTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy05OTgtXFx0XFx0XFx0QlVHX09OKChkYXRhLVxcdTAwM2V1LmdwYSArIHN6MSkgXFx1MDAyNiB+UEFHRV9NQVNLKTtcXG5hcmNoL3g4Ni9rdm0veGVuLmM6OTk5OlxcdFxcdFxcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnhlbi5ydW5zdGF0ZTJfY2FjaGUsXFxuYXJjaC94ODYva3ZtL3hlbi5jLTEwMDAtXFx0XFx0XFx0XFx0XFx0ICAgICBkYXRhLVxcdTAwM2V1LmdwYSArIHN6MSwgc3oyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNDM5PXZvaWQga3ZtX2dwY19pbml0KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHN0cnVjdCBrdm0gKmt2bSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ0MS0vKipcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTQ0MjogKiBrdm1fZ3BjX2FjdGl2YXRlIC0gcHJlcGFyZSBhIGNhY2hlZCBrZXJuZWwgbWFwcGluZyBhbmQgSFBBIGZvciBhIGdpdmVuIGd1ZXN0XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0NDMtICogICAgICAgICAgICAgICAgICAgIHBoeXNpY2FsIGFkZHJlc3MuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ1Ni0gKi9cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTQ1NzppbnQga3ZtX2dwY19hY3RpdmF0ZShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgbGVuKTtcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ1OC1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ1OS0vKipcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTQ2MDogKiBrdm1fZ3BjX2FjdGl2YXRlX2h2YSAtIHByZXBhcmUgYSBjYWNoZWQga2VybmVsIG1hcHBpbmcgYW5kIEhQQSBmb3IgYSBnaXZlbiBIVkEuXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0NjEtICpcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNDY5LSAqXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE0NzA6ICogVGhlIHNlbWFudGljcyBvZiB0aGlzIGZ1bmN0aW9uIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBvZiBrdm1fZ3BjX2FjdGl2YXRlKCkuIEl0XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0NzEtICogbWVyZWx5IGJ5cGFzc2VzIGEgbGF5ZXIgb2YgYWRkcmVzcyB0cmFuc2xhdGlvbi5cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ3Mi0gKi9cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTQ3MzppbnQga3ZtX2dwY19hY3RpdmF0ZV9odmEoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBodmEsIHVuc2lnbmVkIGxvbmcgbGVuKTtcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ3NC1cXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM9MzgzPXZvaWQga3ZtX2dwY19pbml0KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzk0LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6Mzk1OnN0YXRpYyBpbnQgX19rdm1fZ3BjX2FjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyB1aHZhLFxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzk2LVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgbGVuKVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYy00MjQtXFxudmlydC9rdm0vcGZuY2FjaGUuYzo0MjU6aW50IGt2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGxlbilcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyNi17XFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQzMy1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjQzNDpcXHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgZ3BhLCBLVk1fSFZBX0VSUl9CQUQsIGxlbik7XFxudmlydC9rdm0vcGZuY2FjaGUuYy00MzUtfVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDM2LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6NDM3OmludCBrdm1fZ3BjX2FjdGl2YXRlX2h2YShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIHVodmEsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDM4LXtcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDQxLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6NDQyOlxcdHJldHVybiBfX2t2bV9ncGNfYWN0aXZhdGUoZ3BjLCBJTlZBTElEX0dQQSwgdWh2YSwgbGVuKTtcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQ0My19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjE4LjQ5MjExMzMyNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDUwMzA0OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGZ1enppbmcgcG90ZW50aWFsLiBUaGF0IGZ1bmN0aW9uLCBhbmQgaXRzIHJlbGF0aXZlcywgYXJlIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vay4gSSdtIHRoaW5raW5nIEkgc2hvdWxkIHplcm8gaW4gb24gdGhlIGZvbGxvd2luZyBzeW1ib2xzIGZvciBteSBpbml0aWFsIGZ1enppbmcgcnVuczogYGt2bV9ncGNfcmVmcmVzaGAsIGBrdm1fZ3BjX2FjdGl2YXRlYCwgYW5kIGBrdm1fZ3BjX2FjdGl2YXRlX2h2YWAuIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4uLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgX19rdm1fZ3BjX3JlZnJlc2hgIGlzIHN0YXRpYywgc28gSSBzaG91bGQgYmUgbGlzdGluZyBvbmx5IHRoZSBub24tc3RhdGljIHN5bWJvbHMgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzLlxuXG5Ob3csIGJlZm9yZSBJIGdldCBjYXJyaWVkIGF3YXksIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSByaWdodCBlbnZpcm9ubWVudCBzZXR1cC4gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBuZWVkIGVuYWJsZWQgZm9yIHRoZXNlIGZ1bmN0aW9ucyB0byBiZSBhY3RpdmU/IE9mIGNvdXJzZSwgS1ZNIHdpbGwgYmUgdGhlIG9idmlvdXMgcmVxdWlyZW1lbnQgaGVyZTogc28gSSdsbCBuZWVkIGBDT05GSUdfS1ZNYC4gSSBzaG91bGQgcXVpY2tseSBzY2FuIGB2aXJ0L2t2bS9LY29uZmlnYCBvciBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIGNvbmZpcm0gYW55IG90aGVyIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODc4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjIyLjg5NzE0ODMxNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQyMzUxMjMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnPTE2PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE3LVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjMxOmNvbmZpZyBLVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIk1haW50YWluIGNvdW50ZXJzIGZvciBDT1AwIGFjY2Vzc2VzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjY6Y29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMwLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzQ6Y29uZmlnIEtWTV9CT09LM1NfNjRfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM4OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM5LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDMtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDU6Y29uZmlnIEtWTV9CT09LM1NfMzJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX0JPT0szU182NFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzY0IHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgwLVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX0JPT0szU182NF9QUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IHdpdGhvdXQgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjY6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QOF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQzLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgaHlwZXJ2aXNvciByZWFsLW1vZGUgY29kZSAoZm9yIFBPV0VSOClcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cXHRib29sIFxcXCJOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg0OmNvbmZpZyBLVk1fQk9PS0VfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg1LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODc6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgZXhpdCB0aW1pbmdcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk5LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjEzOmNvbmZpZyBLVk1fRTUwME1DXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNC1cXHRib29sIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwTUMvRTU1MDAvRTY1MDAgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX01QSUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQwLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0Mi1cXHRib29sIFxcXCJLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjUxOmNvbmZpZyBLVk1fWElWRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTItXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnPTIyPXNvdXJjZSBcXFwiYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1xcXCJcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjMtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiS1ZNIEd1ZXN0IHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXFx0ZGVmX3RyaXN0YXRlIHlcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTgyNj1zb3VyY2UgXFxcImFyY2gveDg2L3hlbi9LY29uZmlnXFxcIlxcbmFyY2gveDg2L0tjb25maWctODI3LVxcbmFyY2gveDg2L0tjb25maWc6ODI4OmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTgyOS1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVxcdGJvb2wgXFxcIkkvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cXHRib29sIFxcXCJTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXFx0Ym9vbCBcXFwiUHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cXHRib29sXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcXFwiXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTMtXFxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXFxudmlydC9rdm0vS2NvbmZpZy01LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQyLVxcbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXFxudmlydC9rdm0vS2NvbmZpZy00NC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNDUtXFxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXFxudmlydC9rdm0vS2NvbmZpZy00Ny0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcXG52aXJ0L2t2bS9LY29uZmlnOjUwOmNvbmZpZyBLVk1fQVNZTkNfUEZfU1lOQ1xcbnZpcnQva3ZtL0tjb25maWctNTEtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NTk9Y29uZmlnIEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjEtXFxudmlydC9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX1ZGSU9cXG52aXJ0L2t2bS9LY29uZmlnLTYzLSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTY1PWNvbmZpZyBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjctXFxudmlydC9rdm0vS2NvbmZpZzo2ODpjb25maWcgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxudmlydC9rdm0vS2NvbmZpZy02OS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzAtXFxudmlydC9rdm0vS2NvbmZpZzo3MTpjb25maWcgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxcbnZpcnQva3ZtL0tjb25maWctNzItICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTczLVxcbnZpcnQva3ZtL0tjb25maWc6NzQ6Y29uZmlnIEtWTV9DT01QQVRcXG52aXJ0L2t2bS9LY29uZmlnLTc1LSAgICAgICBkZWZfYm9vbCB5XFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTkxPWNvbmZpZyBIQVZFX0tWTV9QTV9OT1RJRklFUlxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy05My1cXG52aXJ0L2t2bS9LY29uZmlnOjk0OmNvbmZpZyBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbnZpcnQva3ZtL0tjb25maWctOTUtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxcbnZpcnQva3ZtL0tjb25maWc6OTc6Y29uZmlnIEtWTV9FTElERV9UTEJfRkxVU0hfSUZfWU9VTkdcXG52aXJ0L2t2bS9LY29uZmlnLTk4LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy05OS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xcbnZpcnQva3ZtL0tjb25maWctMTAxLSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy0xMDItXFxudmlydC9rdm0vS2NvbmZpZzoxMDM6Y29uZmlnIEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxudmlydC9rdm0vS2NvbmZpZy0xMDQtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwNjpjb25maWcgS1ZNX0dVRVNUX01FTUZEXFxudmlydC9rdm0vS2NvbmZpZy0xMDctICAgICAgIHNlbGVjdCBYQVJSQVlfTVVMVElcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MjYuMzIwNjcxNDI1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODQ5MDE3NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGNvbmZpZ3VyZSBLVk0uIEJ1dCB3YWl0IGEgbWludXRlLCBJIHJlbWVtYmVyIHNlZWluZyBgdmlydC9rdm0vcGZuY2FjaGUuY2Agc29tZXdoZXJlIGluIHRoZSBrZXJuZWwgc291cmNlLCBhbmQgSSdtIHByZXR0eSBzdXJlIHRoYXQgZmlsZSBpcyBvbmx5IGNvbXBpbGVkIGlmIEtWTSBpcyBlbmFibGVkLiBUaGF0IHJpbmdzIGEgYmVsbC4uLiBMZXQncyB1c2UgdGhhdCBhcyBhIGNsdWUgYW5kIGh1bnQgZm9yIHRoZSBLVk0gY29uZmlndXJhdGlvbi4gTXkgaW50dWl0aW9uIHN1Z2dlc3RzIHRoZSBgdmlydC9rdm0vTWFrZWZpbGVgIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gTGV0J3Mgc2VlIGlmIG15IG1lbW9yeSBpcyBhY2N1cmF0ZS4gSSdsbCBjaGVjayBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2MTEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMDoyOS4zMDU1NzYyNjJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2NzA2ODc4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwZm5jYWNoZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MjkuNDAyMjkzMDcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NTIxMDM2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEtWTSBNYWtlZmlsZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBLVk0gbW9kdWxlIGlzIGJ1aWx0LCBzbyB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGB2aXJ0L2t2bS9NYWtlZmlsZWAuIExldCdzIHNlZSB3aGF0IHNlY3JldHMgdGhpcyBmaWxlIGhvbGRzLiBJdCdzIHRoZSBjZW50cmFsIHBsYXlib29rIGZvciBob3cgdGhlIEtWTSBjb21wb25lbnRzIGFyZSBjb21waWxlZCBhbmQgbGlua2VkLCBzbyBpdCdzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgcHJvY2Vzcy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBkZXBlbmRlbmN5IHRyZWUsIGluY2x1ZGUgcGF0aHMsIGNvbXBpbGF0aW9uIGZsYWdzLCBhbmQgbGlua2luZyBydWxlcyB0aGF0IGRlZmluZSB0aGUgS1ZNJ3MgYnVpbGQgcHJvY2Vzcy4gVGhpcyBmaWxlIHdpbGwgdGVsbCBtZSB3aGljaCBzb3VyY2UgZmlsZXMgYXJlIGludm9sdmVkLCB3aGljaCBvYmplY3QgZmlsZXMgdGhleSBnZW5lcmF0ZSwgYW5kIGhvdyB0aG9zZSBvYmplY3QgZmlsZXMgY29tZSB0b2dldGhlciB0byBjcmVhdGUgdGhlIGZpbmFsIEtWTSBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MzMuODU0Mzk5OTQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDYwLCJFcnJvciI6InRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9rdm0vTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcInRoZSBmaWxlIGRvZXMgbm90IGV4aXN0XCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjMzLjg1NDQ2NTg1MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDMzMTY5NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFZpcnR1YWxpemF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgYHZpcnQva3ZtL2Agd2FzIGEgc3RhbmRhcmQgZGlyZWN0b3J5LCBidXQgdGhlIHN5c3RlbSBpcyB0ZWxsaW5nIG1lIGl0J3Mgbm90LiBUaGF04oCZcyB1bnVzdWFsLCBhbmQgZGVmaW5pdGVseSB3b3J0aCBhIGRvdWJsZS1jaGVjay4gSSBuZWVkIHRvIHZlcmlmeSB3aGF0J3MgYWN0dWFsbHkgdGhlcmUuIExldCBtZSBzZWUuLi4gSSBuZWVkIHRvIGV4YW1pbmUgdGhlIGNvbnRlbnRzIG9mIGB2aXJ0L2t2bS9gIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpyZWFsbHkqIHByZXNlbnQgYXQgdGhhdCBsb2NhdGlvbiwgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhdCBhbGwsIHdoaWNoIHdvdWxkIGJlIGp1c3QgYXMgaW5mb3JtYXRpdmUuIEkgaGF2ZSB0byByZXNvbHZlIHRoaXMgcGF0aCdzIHN0YXR1cyBiZWZvcmUgSSBjYW4gY29udGludWUgd2l0aCB3aGF0ZXZlciBJIHdhcyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwNDQsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjM3LjI4NzYzOTkyMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwidmlydC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFzeW5jX3BmLmNcIixcbiAgICBcImFzeW5jX3BmLmhcIixcbiAgICBcImJpbmFyeV9zdGF0cy5jXCIsXG4gICAgXCJjb2FsZXNjZWRfbW1pby5jXCIsXG4gICAgXCJjb2FsZXNjZWRfbW1pby5oXCIsXG4gICAgXCJkaXJ0eV9yaW5nLmNcIixcbiAgICBcImV2ZW50ZmQuY1wiLFxuICAgIFwiZ3Vlc3RfbWVtZmQuY1wiLFxuICAgIFwiaXJxY2hpcC5jXCIsXG4gICAgXCJrdm1fbWFpbi5jXCIsXG4gICAgXCJrdm1fbW0uaFwiLFxuICAgIFwicGZuY2FjaGUuY1wiLFxuICAgIFwidmZpby5jXCIsXG4gICAgXCJ2ZmlvLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MzcuMjg3NzA0ODcxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTYxMTI0NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgS1ZNIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyBkYW1uIG1ha2VmaWxlIGxpdmVzIGZvciB0aGUgS1ZNIHZpcnR1YWxpemF0aW9uIG1vZHVsZS4gTXkgaW5pdGlhbCBodW5jaCB3YXMgdGhhdCBpdCB3b3VsZCBiZSBpbiBgdmlydC9rdm0vYCwgYnV0IEknbSBkcmF3aW5nIGEgYmxhbmsgdGhlcmUuIFBlcmhhcHMgaXQncyBuYW1lZCBzb21ldGhpbmcgbGVzcyBvYnZpb3VzLCBsaWtlIGBrdm0ubWtgPyBObywgaGFuZyBvbiwgdGhhdCBkaXJlY3RvcnkncyBzdHJ1Y3R1cmUganVzdCBkb2Vzbid0IGZlZWwgcmlnaHQgZm9yIGEgdG9wLWxldmVsIG1ha2VmaWxlLiBMZXQncyBiYWNrdHJhY2sgYW5kIHNlZSBpZiBpdCdzIGdvdCBhIG1vcmUgZ2VuZXJhbCBtYWtlZmlsZSBpbiB0aGUgYHZpcnQvYCBkaXJlY3RvcnkgaXRzZWxmLiBZZXAsIHRpbWUgdG8gY2hlY2sgYHZpcnQvTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgaXQgaGFzIHRvIGJlLCBsZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzM3NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMDo0MC40MDM4MjE2NTZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG9iai15XFx0Kz0gbGliL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMDo0MC40MDM4Nzk5NzZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4NDY2NjcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBDb21waWxhdGlvbiBvZiBgdmlydC9rdm0vcGZuY2FjaGUuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYHZpcnQva3ZtL3BmbmNhY2hlLmNgIGZpbGUgaXMgYmVpbmcgY29tcGlsZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gTXkgaW5zdGluY3QgdGVsbHMgbWUgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBLVk0tc3BlY2lmaWMgYXJlYXMuIEZpcnN0LCBJIHNob3VsZCB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBgTWFrZWZpbGVgLiBUaGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQgaXMgd2l0aGluIHRoZSB4ODYgYXJjaGl0ZWN0dXJlIGRpcmVjdG9yeSwgZ2l2ZW4gaXRzIHByb21pbmVuY2UgaW4gS1ZNLiBMZXQncyBzZWUuLi4gSSdsbCBjaGVjayBgYXJjaC94ODYva3ZtL01ha2VmaWxlYC4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgY29udGFpbiB0aGUgbmVjZXNzYXJ5IGRpcmVjdGl2ZXMgb3IgaW5jbHVkZXMgdG8gcmV2ZWFsIHRoZSBjb21waWxhdGlvbiB1bml0J3MgaW5jbHVzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzY1MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6NDMuNjg4NTUxNTg3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDU1NzIyOTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBmbmNhY2hlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6NDQuMTM0MTMyMjI5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjI2MTc3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLVk0geDg2IE1ha2VmaWxlKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBLVk0gYXJjaGl0ZWN0dXJlIG9uIHg4Niwgc28gbXkgZmlyc3Qgc3RlcCBpcyB0byBnZXQgbXkgYmVhcmluZ3MuIFRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgYXJjaC94ODYva3ZtL01ha2VmaWxlYC4gVGhhdCBmaWxlIGlzIHRoZSBjZW50cmFsIHBvaW50IGZvciBidWlsZGluZyB0aGUgS1ZNIGNvbXBvbmVudHMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIHg4NiBhcmNoaXRlY3R1cmUsIGl0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgdXN1YWxseSByZXNpZGVzLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJlYWQgdGhyb3VnaCBpdC4gSSdtIGxvb2tpbmcgZm9yIHRoZSByZWxldmFudCBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGluc3RydWN0aW9ucy4gVGhhdCBmaWxlIGlzIGtleSB0byBwaWVjaW5nIHRvZ2V0aGVyIHdoYXRldmVyIGlzc3VlIGlzIGF0IGhhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODc0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6NDcuNDk2NzU0MThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdGNjZmxhZ3MteSArPSAtSSAkKHNyY3RyZWUpL2FyY2gveDg2L2t2bVxcbiAgIDQ6XFx0Y2NmbGFncy0kKENPTkZJR19LVk1fV0VSUk9SKSArPSAtV2Vycm9yXFxuICAgNTpcXHRcXG4gICA2OlxcdGluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1cXG4gICA3OlxcdFxcbiAgIDg6XFx0a3ZtLXlcXHRcXHRcXHQrPSB4ODYubyBlbXVsYXRlLm8gaXJxLm8gbGFwaWMubyBjcHVpZC5vIHBtdS5vIG10cnIubyBcXFxcXFxuICAgOTpcXHRcXHRcXHRcXHQgICBkZWJ1Z2ZzLm8gbW11L21tdS5vIG1tdS9wYWdlX3RyYWNrLm8gbW11L3NwdGUub1xcbiAgMTA6XFx0XFxuICAxMTpcXHRrdm0tJChDT05GSUdfWDg2XzY0KSArPSBtbXUvdGRwX2l0ZXIubyBtbXUvdGRwX21tdS5vXFxuICAxMjpcXHRrdm0tJChDT05GSUdfS1ZNX0lPQVBJQykgKz0gaTgyNTkubyBpODI1NC5vIGlvYXBpYy5vXFxuICAxMzpcXHRrdm0tJChDT05GSUdfS1ZNX0hZUEVSVikgKz0gaHlwZXJ2Lm9cXG4gIDE0OlxcdGt2bS0kKENPTkZJR19LVk1fWEVOKVxcdCs9IHhlbi5vXFxuICAxNTpcXHRrdm0tJChDT05GSUdfS1ZNX1NNTSlcXHQrPSBzbW0ub1xcbiAgMTY6XFx0XFxuICAxNzpcXHRrdm0taW50ZWwteVxcdFxcdCs9IHZteC92bXgubyB2bXgvdm1lbnRlci5vIHZteC9wbXVfaW50ZWwubyB2bXgvdm1jczEyLm8gXFxcXFxcbiAgMTg6XFx0XFx0XFx0XFx0ICAgdm14L25lc3RlZC5vIHZteC9wb3N0ZWRfaW50ci5vIHZteC9tYWluLm9cXG4gIDE5OlxcdFxcbiAgMjA6XFx0a3ZtLWludGVsLSQoQ09ORklHX1g4Nl9TR1hfS1ZNKVxcdCs9IHZteC9zZ3gub1xcbiAgMjE6XFx0a3ZtLWludGVsLSQoQ09ORklHX0tWTV9IWVBFUlYpXFx0Kz0gdm14L2h5cGVydi5vIHZteC9oeXBlcnZfZXZtY3Mub1xcbiAgMjI6XFx0a3ZtLWludGVsLSQoQ09ORklHX0tWTV9JTlRFTF9URFgpXFx0Kz0gdm14L3RkeC5vXFxuICAyMzpcXHRcXG4gIDI0OlxcdGt2bS1hbWQteVxcdFxcdCs9IHN2bS9zdm0ubyBzdm0vdm1lbnRlci5vIHN2bS9wbXUubyBzdm0vbmVzdGVkLm8gc3ZtL2F2aWMub1xcbiAgMjU6XFx0XFxuICAyNjpcXHRrdm0tYW1kLSQoQ09ORklHX0tWTV9BTURfU0VWKVxcdCs9IHN2bS9zZXYub1xcbiAgMjc6XFx0a3ZtLWFtZC0kKENPTkZJR19LVk1fSFlQRVJWKVxcdCs9IHN2bS9oeXBlcnYub1xcbiAgMjg6XFx0XFxuICAyOTpcXHRpZmRlZiBDT05GSUdfSFlQRVJWXFxuICAzMDpcXHRrdm0teVxcdFxcdFxcdCs9IGt2bV9vbmh5cGVydi5vXFxuICAzMTpcXHRrdm0taW50ZWwteVxcdFxcdCs9IHZteC92bXhfb25oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cXG4gIDMyOlxcdGt2bS1hbWQteVxcdFxcdCs9IHN2bS9zdm1fb25oeXBlcnYub1xcbiAgMzM6XFx0ZW5kaWZcXG4gIDM0OlxcdFxcbiAgMzU6XFx0b2JqLSQoQ09ORklHX0tWTV9YODYpXFx0Kz0ga3ZtLm9cXG4gIDM2OlxcdG9iai0kKENPTkZJR19LVk1fSU5URUwpXFx0Kz0ga3ZtLWludGVsLm9cXG4gIDM3OlxcdG9iai0kKENPTkZJR19LVk1fQU1EKVxcdCs9IGt2bS1hbWQub1xcbiAgMzg6XFx0XFxuICAzOTpcXHRBRkxBR1Nfc3ZtL3ZtZW50ZXIubyAgICA6PSAtaXF1b3RlICQob2JqKVxcbiAgNDA6XFx0JChvYmopL3N2bS92bWVudGVyLm86ICQob2JqKS9rdm0tYXNtLW9mZnNldHMuaFxcbiAgNDE6XFx0XFxuICA0MjpcXHRBRkxBR1Nfdm14L3ZtZW50ZXIubyAgICA6PSAtaXF1b3RlICQob2JqKVxcbiAgNDM6XFx0JChvYmopL3ZteC92bWVudGVyLm86ICQob2JqKS9rdm0tYXNtLW9mZnNldHMuaFxcbiAgNDQ6XFx0XFxuICA0NTpcXHQkKG9iaikva3ZtLWFzbS1vZmZzZXRzLmg6ICQob2JqKS9rdm0tYXNtLW9mZnNldHMucyBGT1JDRVxcbiAgNDY6XFx0XFx0JChjYWxsIGZpbGVjaGssb2Zmc2V0cyxfX0tWTV9BU01fT0ZGU0VUU19IX18pXFxuICA0NzpcXHRcXG4gIDQ4OlxcdHRhcmdldHMgKz0ga3ZtLWFzbS1vZmZzZXRzLnNcXG4gIDQ5OlxcdGNsZWFuLWZpbGVzICs9IGt2bS1hc20tb2Zmc2V0cy5oXFxuICA1MDpcXHRcXG4gIDUxOlxcdFxcbiAgNTI6XFx0IyBGYWlsIHRoZSBidWlsZCBpZiB0aGVyZSBpcyB1bmV4cGVjdGVkIEVYUE9SVF9TWU1CT0xfR1BMIChvciBFWFBPUlRfU1lNQk9MKVxcbiAgNTM6XFx0IyB1c2FnZS4gIEFsbCBLVk0taW50ZXJuYWwgZXhwb3J0cyBzaG91bGQgdXNlIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTC5cXG4gIDU0OlxcdCMgT25seSBhIGhhbmRmdWwgb2YgZXhwb3J0cyBpbnRlbmRlZCBmb3Igb3RoZXIgbW9kdWxlcyAoVkZJTywgS1ZNR1QpIHNob3VsZFxcbiAgNTU6XFx0IyB1c2UgRVhQT1JUX1NZTUJPTF9HUEwsIGFuZCBFWFBPUlRfU1lNQk9MIHNob3VsZCBuZXZlciBiZSB1c2VkLlxcbiAgNTY6XFx0aWZkZWYgQ09ORklHX0tWTV9YODZcXG4gIDU3OlxcdCMgU2VhcmNoIHJlY3Vyc2l2ZWx5IGZvciB3aG9sZSB3b3JkcyBhbmQgcHJpbnQgbGluZSBudW1iZXJzLiAgRmlsdGVyIG91dCB0aGVcXG4gIDU4OlxcdCMgYWxsb3dlZCBzZXQgb2YgZXhwb3J0cywgaS5lLiB0aG9zZSB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgdXNhZ2UuXFxuICA1OTpcXHRleHBvcnRzX2dyZXBfdHJhaWxlciA6PSAtLWluY2x1ZGU9JyouW2NoXScgLW5ydyAkKHNyY3RyZWUpL3ZpcnQva3ZtICQoc3JjdHJlZSkvYXJjaC94ODYva3ZtIHwgXFxcXFxcbiAgNjA6XFx0XFx0XFx0XFx0Z3JlcCAtdiAtZSBrdm1fcGFnZV90cmFja19yZWdpc3Rlcl9ub3RpZmllciBcXFxcXFxuICA2MTpcXHRcXHRcXHRcXHRcXHQtZSBrdm1fcGFnZV90cmFja191bnJlZ2lzdGVyX25vdGlmaWVyIFxcXFxcXG4gIDYyOlxcdFxcdFxcdFxcdFxcdC1lIGt2bV93cml0ZV90cmFja19hZGRfZ2ZuIFxcXFxcXG4gIDYzOlxcdFxcdFxcdFxcdFxcdC1lIGt2bV93cml0ZV90cmFja19yZW1vdmVfZ2ZuIFxcXFxcXG4gIDY0OlxcdFxcdFxcdFxcdFxcdC1lIGt2bV9nZXRfa3ZtIFxcXFxcXG4gIDY1OlxcdFxcdFxcdFxcdFxcdC1lIGt2bV9nZXRfa3ZtX3NhZmUgXFxcXFxcbiAgNjY6XFx0XFx0XFx0XFx0XFx0LWUga3ZtX3B1dF9rdm1cXG4gIDY3OlxcdFxcbiAgNjg6XFx0IyBGb3JjZSBncmVwIHRvIGVtaXQgYSBnb29meSBncm91cCBzZXBhcmF0b3IgdGhhdCBjYW4gaW4gdHVybiBiZSByZXBsYWNlZCB3aXRoXFxuICA2OTpcXHQjIHRoZSBhYm92ZSBuZXdsaW5lIG1hY3JvIChuZXdsaW5lcyBpbiBNYWtlIGFyZSBhIG5pZ2h0bWFyZSkuICBOb3RlLCBncmVwIG9ubHlcXG4gIDcwOlxcdCMgcHJpbnRzIHRoZSBncm91cCBzZXBhcmF0b3Igd2hlbiBOIGxpbmVzIG9mIGNvbnRleHQgYXJlIHJlcXVlc3RlZCB2aWEgLUMsXFxuICA3MTpcXHQjIGEuay5hLiAtLU5VTS4gIFNpbXBseSByZXF1ZXN0IHplcm8gbGluZXMuICBQcmludCB0aGUgc2VwYXJhdG9yIG9ubHkgYWZ0ZXJcXG4gIDcyOlxcdCMgZmlsdGVyaW5nIG91dCBleHBlY3RlZCBleHBvcnRzIHRvIGF2b2lkIGV4dHJhIG5ld2xpbmVzIGluIHRoZSBlcnJvciBtZXNzYWdlLlxcbiAgNzM6XFx0ZGVmaW5lIGdldF9rdm1fZXhwb3J0c1xcbiAgNzQ6XFx0JChzaGVsbCBncmVwIFxcXCIkKDEpXFxcIiAtQzAgJChleHBvcnRzX2dyZXBfdHJhaWxlcikgfCBncmVwIFxcXCIkKDEpXFxcIiAtQzAgLS1ncm91cC1zZXBhcmF0b3I9XFxcIiFTRVAhXFxcIilcXG4gIDc1OlxcdGVuZGVmXFxuICA3NjpcXHRcXG4gIDc3OlxcdGRlZmluZSBjaGVja19rdm1fZXhwb3J0c1xcbiAgNzg6XFx0bnJfa3ZtX2V4cG9ydHMgOj0gJChzaGVsbCBncmVwIFxcXCIkKDEpXFxcIiAkKGV4cG9ydHNfZ3JlcF90cmFpbGVyKSB8IHdjIC1sKVxcbiAgNzk6XFx0XFxuICA4MDpcXHRpZm5lcSAoMCwkJChucl9rdm1fZXhwb3J0cykpXFxuICA4MTpcXHQkJChlcnJvciBFUlJPUiAqKipcXFxcXFxuICA4MjpcXHQkJChuZXdsaW5lKWZvdW5kICQkKG5yX2t2bV9leHBvcnRzKSB1bndhbnRlZCBvY2N1cnJlbmNlcyBvZiAkKDEpOlxcXFxcXG4gIDgzOlxcdCQkKG5ld2xpbmUpICAkKHN1YnN0ICFTRVAhLCQkKG5ld2xpbmUpICwkKGNhbGwgZ2V0X2t2bV9leHBvcnRzLCQoMSkpKVxcXFxcXG4gIDg0OlxcdCQkKG5ld2xpbmUpaW4gZGlyZWN0b3JpZXM6XFxcXFxcbiAgODU6XFx0JCQobmV3bGluZSkgICQoc3JjdHJlZSkvYXJjaC94ODYva3ZtXFxcXFxcbiAgODY6XFx0JCQobmV3bGluZSkgICQoc3JjdHJlZSkvdmlydC9rdm1cXFxcXFxuICA4NzpcXHQkJChuZXdsaW5lKVVzZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwsIG5vdCAkKDEpKVxcbiAgODg6XFx0ZW5kaWYgIyBucl9rdm1fZXhwb3J0cyAhPSAwXFxuICA4OTpcXHR1bmRlZmluZSBucl9rdm1fZXhwb3J0c1xcbiAgOTA6XFx0ZW5kZWYgIyBjaGVja19rdm1fZXhwb3J0c1xcbiAgOTE6XFx0XFxuICA5MjpcXHQkKGV2YWwgJChjYWxsIGNoZWNrX2t2bV9leHBvcnRzLEVYUE9SVF9TWU1CT0xfR1BMKSlcXG4gIDkzOlxcdCQoZXZhbCAkKGNhbGwgY2hlY2tfa3ZtX2V4cG9ydHMsRVhQT1JUX1NZTUJPTCkpXFxuICA5NDpcXHRcXG4gIDk1OlxcdHVuZGVmaW5lIGNoZWNrX2t2bV9leHBvcnRzXFxuICA5NjpcXHR1bmRlZmluZSBnZXRfa3ZtX2V4cG9ydHNcXG4gIDk3OlxcdHVuZGVmaW5lIGV4cG9ydHNfZ3JlcF90cmFpbGVyXFxuICA5ODpcXHRlbmRpZiAjIENPTkZJR19LVk1fWDg2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjQ3LjQ5Njg1ODk3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NDQ1NjI0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLVk0gQnVpbGQgUHJvY2VzcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSBhIGNydWNpYWwgYGluY2x1ZGVgIHN0YXRlbWVudCBpbiBwbGF5IGhlcmU6IGBpbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtYC4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEkga25vdyB3aGF0J3MgY29taW5nLCB0aGlzIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgY29yZSBLVk0gYnVpbGQgY29uZmlndXJhdGlvbi4gVGltZSB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHZpcnQva3ZtL01ha2VmaWxlLmt2bWAuIEknbGwgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaG93IHRoZSBLVk0gbW9kdWxlcyBhcmUgY29tcGlsZWQsIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMgdGhleSBoYXZlLCBhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIHRoZSBLVk0gYnVpbGQgc3lzdGVtIHdpdGhpbiB0aGUga2VybmVsLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBjdXN0b21pemF0aW9uIHBvaW50cywgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIGFyY2hpdGVjdHVyZSBvciBmZWF0dXJlIGZsYWdzLCBhbmQgaG93IHRoaXMgcGFydGljdWxhciBNYWtlZmlsZSBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBkb2VzLCBhbmQgaG93IHdlbGwgaXQgaXMgZGVzaWduZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDQxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMDo1Mi4yNDE0MjUyMDZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInZpcnQva3ZtL01ha2VmaWxlLmt2bVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ha2VmaWxlIGZvciBLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIG1vZHVsZVxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRLVk0gPz0gLi4vLi4vLi4vdmlydC9rdm1cXG4gICA3OlxcdFxcbiAgIDg6XFx0a3ZtLXkgOj0gJChLVk0pL2t2bV9tYWluLm8gJChLVk0pL2V2ZW50ZmQubyAkKEtWTSkvYmluYXJ5X3N0YXRzLm9cXG4gICA5OlxcdGt2bS0kKENPTkZJR19LVk1fVkZJTykgKz0gJChLVk0pL3ZmaW8ub1xcbiAgMTA6XFx0a3ZtLSQoQ09ORklHX0tWTV9NTUlPKSArPSAkKEtWTSkvY29hbGVzY2VkX21taW8ub1xcbiAgMTE6XFx0a3ZtLSQoQ09ORklHX0tWTV9BU1lOQ19QRikgKz0gJChLVk0pL2FzeW5jX3BmLm9cXG4gIDEyOlxcdGt2bS0kKENPTkZJR19IQVZFX0tWTV9JUlFfUk9VVElORykgKz0gJChLVk0pL2lycWNoaXAub1xcbiAgMTM6XFx0a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX0RJUlRZX1JJTkcpICs9ICQoS1ZNKS9kaXJ0eV9yaW5nLm9cXG4gIDE0OlxcdGt2bS0kKENPTkZJR19IQVZFX0tWTV9QRk5DQUNIRSkgKz0gJChLVk0pL3BmbmNhY2hlLm9cXG4gIDE1OlxcdGt2bS0kKENPTkZJR19LVk1fR1VFU1RfTUVNRkQpICs9ICQoS1ZNKS9ndWVzdF9tZW1mZC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjUyLjI0MTU1ODkwNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDk4NzEwNzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBDT05GSUdfSEFWRV9LVk1fUEZOQ0FDSEVgJ3MgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBDT05GSUdfSEFWRV9LVk1fUEZOQ0FDSEVgLiBUaGF0IGZsYWcgaXMgY3JpdGljYWwsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBjb2RlLiAgTXkgZmlyc3Qgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHBpbnBvaW50IHdoZXJlIGFuZCBob3cgYEhBVkVfS1ZNX1BGTkNBQ0hFYCBpcyBhY3R1YWxseSAqZGVmaW5lZCogYW5kLCBjcml0aWNhbGx5LCAqc2VsZWN0ZWQqLiBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBsb2dpYywgdGhlIGRlcGVuZGVuY2llcywgYW5kIHRoZSBhcmNoaXRlY3R1cmUgY29uc3RyYWludHMgc3Vycm91bmRpbmcgaXQuIFRoaXMgbGlrZWx5IGludm9sdmVzIGRpdmluZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLCBleHBsb3JpbmcgYW55IHJlbGF0ZWQgTWFrZWZpbGVzLCBhbmQgbG9va2luZyBmb3Igb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2Ugb3IgZGVwZW5kIG9uIGl0LiAgSSdtIGV4cGVjdGluZyB0byB1bmNvdmVyIGNvbmRpdGlvbmFsIHNlbGVjdGlvbnMgYW5kIHBvdGVudGlhbCBwaXRmYWxscyB0aGF0IG1pZ2h0IGltcGFjdCBwb3J0YWJpbGl0eSBvciBwZXJmb3JtYW5jZS4gR290dGEgZ2V0IHRvIHRoZSByb290IG9mIGl0cyBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NDcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjU2LjM0MDI3MzI4M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MzA0NTYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJIQVZFX0tWTV9QRk5DQUNIRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTV9YODZcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTI1LVxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjY6XFx0c2VsZWN0IEhBVkVfS1ZNX1BGTkNBQ0hFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjctXFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfVFNPXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTQ9Y29uZmlnIEtWTV9DT01NT05cXG4tLVxcbnZpcnQva3ZtL0tjb25maWctMTAtXFxudmlydC9rdm0vS2NvbmZpZzoxMTpjb25maWcgSEFWRV9LVk1fUEZOQ0FDSEVcXG52aXJ0L2t2bS9LY29uZmlnLTEyLSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm09MTM9a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX0RJUlRZX1JJTkcpICs9ICQoS1ZNKS9kaXJ0eV9yaW5nLm9cXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm06MTQ6a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX1BGTkNBQ0hFKSArPSAkKEtWTSkvcGZuY2FjaGUub1xcbnZpcnQva3ZtL01ha2VmaWxlLmt2bS0xNS1rdm0tJChDT05GSUdfS1ZNX0dVRVNUX01FTUZEKSArPSAkKEtWTSkvZ3Vlc3RfbWVtZmQub1xcbi0tXFxudmlydC9rdm0va3ZtX21tLmg9NTk9a3ZtX3Bmbl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApO1xcbnZpcnQva3ZtL2t2bV9tbS5oLTYwLVxcbnZpcnQva3ZtL2t2bV9tbS5oOjYxOiNpZmRlZiBDT05GSUdfSEFWRV9LVk1fUEZOQ0FDSEVcXG52aXJ0L2t2bS9rdm1fbW0uaC02Mi12b2lkIGdmbl90b19wZm5fY2FjaGVfaW52YWxpZGF0ZV9zdGFydChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbW0uaD02Nj1zdGF0aWMgaW5saW5lIHZvaWQgZ2ZuX3RvX3Bmbl9jYWNoZV9pbnZhbGlkYXRlX3N0YXJ0KHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tbS5oLTcwLX1cXG52aXJ0L2t2bS9rdm1fbW0uaDo3MTojZW5kaWYgLyogSEFWRV9LVk1fUEZOQ0FDSEUgKi9cXG52aXJ0L2t2bS9rdm1fbW0uaC03Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6NTguMDkzMzI1NDAyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODc4OTAyMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIENvbmZpZ3VyYXRpb24gUmV2aWV3KipcblxuT2theSwgc28gYEhBVkVfS1ZNX1BGTkNBQ0hFYCBpcyBhdXRvbWF0aWNhbGx5IGNob3NlbiB3aGVuIGBLVk1fWDg2YCBpcyBzZWxlY3RlZC4gVGhhdCBtZWFucywgYXQgdGhlIHZlcnkgbGVhc3QsIGVuYWJsaW5nIGBLVk1gIGlzIGVub3VnaCwgYW5kIHNwZWNpZmljYWxseSBzbyBvbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSSdsbCBkZWZpbml0ZWx5IGFkZCBgS1ZNYCB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIE5vIG5lZWQgdG8gb3ZlcnRoaW5rIGl0IHRoZXJlLlxuXG5Ob3csIGxldCdzIGNpcmNsZSBiYWNrIHRvIHRob3NlIEdsb2JhbCBQYWdlIENhY2hlIHN5bWJvbHMgSSB3YXMgbG9va2luZyBhdDogYGt2bV9ncGNfcmVmcmVzaGAsIGBrdm1fZ3BjX2FjdGl2YXRlYCwgYW5kIGBrdm1fZ3BjX2FjdGl2YXRlX2h2YWAuIEhvbGQgb24gYSBtaW51dGXigKYgSSBzZWUgdGhhdCBgX19rdm1fZ3BjX3JlZnJlc2hgIGlzICpzdGF0aWMqLiBUaGF0IG1lYW5zIGl0J3MgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZSBhbmQgbm90IGV4cG9ydGVkLiBTbywgdGhlIGZ1bmN0aW9uIEknbSBhY3R1YWxseSBpbnRlcmVzdGVkIGluIGlzIHRoZSBub24tc3RhdGljIHdyYXBwZXIsIGBrdm1fZ3BjX3JlZnJlc2hgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBrdm1fZ3BjX3JlZnJlc2hgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBJJ2xsIGRvdWJsZS1jaGVjayB0aGUgc3ltYm9sIHRhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQ0NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMTowMi4zODEyMTg5ODZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzYzMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9ncGNfcmVmcmVzaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9wZm5jYWNoZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL3BmbmNhY2hlLmM9MTU1PXN0YXRpYyBrdm1fcGZuX3QgaHZhX3RvX3Bmbl9yZXRyeShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYy0yNTUtXFxudmlydC9rdm0vcGZuY2FjaGUuYzoyNTY6c3RhdGljIGludCBfX2t2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgdWh2YSlcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1Ny17XFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM2My1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjM2NDppbnQga3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzY1LXtcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzc5LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6MzgwOlxcdHJldHVybiBfX2t2bV9ncGNfcmVmcmVzaChncGMsIGdwYy1cXHUwMDNlZ3BhLCB1aHZhKTtcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM4MS19XFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTM5NT1zdGF0aWMgaW50IF9fa3ZtX2dwY19hY3RpdmF0ZShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgdWh2YSxcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDIxLVxcdH1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjQyMjpcXHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGEsIHVodmEpO1xcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDIzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDE6MDIuNDI3NTg3NDY1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MjAzNTYzNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipGdW5jdGlvbiBBbmFseXNpczogS1ZNIEdQQyBSZWZyZXNoLCBBY3RpdmF0ZSwgYW5kIEhWQSoqXG5cblJpZ2h0LCBzbyBga3ZtX2dwY19yZWZyZXNoYC4uLiB0aGF0J3MgZGVmaW5pdGVseSBhIG5vbi1zdGF0aWMgZnVuY3Rpb24sIGp1c3QgbGlrZSBga3ZtX2dwY19hY3RpdmF0ZWAgYW5kIGBrdm1fZ3BjX2FjdGl2YXRlX2h2YWAuIFRoYXQncyBpbXBvcnRhbnQuIEl0IG1lYW5zIHRoZXNlIGZ1bmN0aW9ucyBhcmUsIGJ5IGRlZmluaXRpb24sIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIHNvdXJjZSBmaWxlIHRoZXkncmUgZGVmaW5lZCBpbi4gVGhleSdyZSBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCBlc3NlbnRpYWxseS4gTWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBjb250ZXh0IHdlJ3JlIHdvcmtpbmcgd2l0aCBoZXJlIGluIHRoZSBLVk0gbW9kdWxlLlxuXG5Ob3csIGEga2V5IHF1ZXN0aW9uIHRoYXQgYWx3YXlzIGFyaXNlcyB3aGVuIHlvdSdyZSBkZWFsaW5nIHdpdGggZnVuY3Rpb25zIHRoYXQgKmNvdWxkKiBiZSB1c2VkIG91dHNpZGUgdGhlaXIgb3JpZ2luYWwgY29tcGlsYXRpb24gdW5pdCBpczogYXJlIHRoZXkgKmFjdHVhbGx5KiBleHBvcnRlZCB0byBtb2R1bGVzPyBBcmUgdGhleSBhdmFpbGFibGUgdG8gYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBvciBldmVuIGV4dGVybmFsIGtlcm5lbCBtb2R1bGVzIHRoYXQgaW50ZXJhY3Qgd2l0aCBLVk0/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBga3ZtX2dwY19yZWZyZXNoYCBzcGVjaWZpY2FsbHkgaXMgZXhwb3J0ZWQuIExldCdzIG1ha2Ugc3VyZSB0aGF0J3MgZXhwbGljaXRseSBoYW5kbGVkLiBUaGF0J3MgYSBjcnVjaWFsIHBvaW50IHRvIGNvbmZpcm0gYW5kIGRvY3VtZW50IHByb3Blcmx5LiBUaGlzIGhlbHBzIGVuc3VyZSBtYWludGFpbmFiaWxpdHkgYW5kIHRoZSBwcm9wZXIgaW50ZXJhY3Rpb24gYmV0d2VlbiBLVk0gYW5kIGV4dGVybmFsIG1vZHVsZXMgdGhhdCBtYXkgcmVseSBvbiBpdHMgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyODIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMTowNi44NDc5NDY2NTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDU3MjU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MX0dQTFxcXFwoa3ZtX2dwY19yZWZyZXNoXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0vcGZuY2FjaGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDE6MDYuODkzMDEyNjA2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTMzMTc4NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLVk0gUEZOIENhY2hlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgS1ZNIFBGTiBjYWNoZSB3b3JrcywgYW5kIHRoYXQgbWVhbnMgc3RhcnRpbmcgYXQgYSBmdW5kYW1lbnRhbCBsZXZlbC4gSSdtIGdvaW5nIHRvIGRyaWxsIGRvd24gaW50byB0aGUgZGV0YWlscyBvZiBgdmlydC9rdm0vcGZuY2FjaGUuY2AuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHNlZSBob3cgc3ltYm9scyBhcmUgZXhwb3J0ZWQuIEknbGwgYmUgdGFyZ2V0aW5nIGBFWFBPUlRfU1lNQk9MYC4gSSB3YW50IHRvIHNlZSB3aGF0IGlzIGdldHRpbmcgZXhwb3NlZCwgYW5kIEkgbmVlZCB0byBjb25zaWRlciB3aHkgc3BlY2lmaWMgc3ltYm9scyBhcmUgYmVpbmcgbWFkZSBhdmFpbGFibGUgb3V0c2lkZSBvZiB0aGUgaW1tZWRpYXRlIG1vZHVsZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb24gdGhpcyBjb21wb25lbnQuIFRoaXMgbGlrZWx5IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBzdGFiaWxpdHkgYW5kIG1haW50ZW5hbmNlIG9mIHRoZSBLVk0gY29kZWJhc2UuIFVuZGVyc3RhbmRpbmcgdGhlc2Ugc3ltYm9scyBpcyBjcml0aWNhbCBmb3IgbWFraW5nIGluZm9ybWVkIGNoYW5nZXMgb3Igb3B0aW1pemF0aW9ucyB0byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NjMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMTowOS45ODYzMzQ0MTFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNDU1NTEzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9wZm5jYWNoZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMToxMC4zMDA4OTkwNDZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3ODI0NzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIEtWTSBQRk4gQ2FjaGUgU3ltYm9sIEV4cG9ydCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEknbSBsb29raW5nIGF0IGB2aXJ0L2t2bS9wZm5jYWNoZS5jYCwgYW5kIHNvbWV0aGluZyBzZWVtcyBvZmYuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIGl0IG1pZ2h0IGJlIGV4cG9zaW5nIHNvbWUgc3ltYm9scywgYnV0IGEgcXVpY2sgc2NhbiBkb2Vzbid0IHJldmVhbCBhbnkgb2J2aW91cyBleHBvcnRzLiBOb3csIHRoYXQncyBub3QgbmVjZXNzYXJpbHkgYSBkZWFsLWJyZWFrZXIuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIHBvdGVudGlhbCBmb3IgYEVYUE9SVF9TWU1CT0xfR1BMYC4gUGVyaGFwcyB0aGF0IG1hY3JvIGlzIGJlaW5nIGVtcGxveWVkIHRvIG1ha2UgY2VydGFpbiBmdW5jdGlvbnMgb3IgZGF0YSBzdHJ1Y3R1cmVzIGF2YWlsYWJsZSwgZXZlbiBpZiBub3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIEkgbmVlZCB0byBkaXZlIGRlZXBlci4gTGV0J3Mgc3RhcnQgYnkgZXhhbWluaW5nIGEga2V5IGZ1bmN0aW9uIHdpdGhpbiB0aGlzIGZpbGUg4oCTIGBrdm1fZ3BjX3JlZnJlc2hgLiBUaGF0J3MgbGlrZWx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODkxMSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjE0Ljc3OTE0OTA2NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJ2aXJ0L2t2bS9wZm5jYWNoZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM2MDpcXHRcXG4gMzYxOlxcdFxcdHJldHVybiByZXQ7XFxuIDM2MjpcXHR9XFxuIDM2MzpcXHRcXG4gMzY0OlxcdGludCBrdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBsZW4pXFxuIDM2NTpcXHR7XFxuIDM2NjpcXHRcXHR1bnNpZ25lZCBsb25nIHVodmE7XFxuIDM2NzpcXHRcXG4gMzY4OlxcdFxcdGd1YXJkKG11dGV4KShcXHUwMDI2Z3BjLVxcdTAwM2VyZWZyZXNoX2xvY2spO1xcbiAzNjk6XFx0XFxuIDM3MDpcXHRcXHRpZiAoIWt2bV9ncGNfaXNfdmFsaWRfbGVuKGdwYy1cXHUwMDNlZ3BhLCBncGMtXFx1MDAzZXVodmEsIGxlbikpXFxuIDM3MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMzcyOlxcdFxcbiAzNzM6XFx0XFx0LypcXG4gMzc0OlxcdFxcdCAqIElmIHRoZSBHUEEgaXMgdmFsaWQgdGhlbiBpZ25vcmUgdGhlIEhWQSwgYXMgYSBjYWNoZSBjYW4gYmUgR1BBLWJhc2VkXFxuIDM3NTpcXHRcXHQgKiBvciBIVkEtYmFzZWQsIG5vdCBib3RoLiAgRm9yIEdQQS1iYXNlZCBjYWNoZXMsIHRoZSBIVkEgd2lsbCBiZVxcbiAzNzY6XFx0XFx0ICogcmVjb21wdXRlZCBkdXJpbmcgcmVmcmVzaCBpZiBuZWNlc3NhcnkuXFxuIDM3NzpcXHRcXHQgKi9cXG4gMzc4OlxcdFxcdHVodmEgPSBrdm1faXNfZXJyb3JfZ3BhKGdwYy1cXHUwMDNlZ3BhKSA/IGdwYy1cXHUwMDNldWh2YSA6IEtWTV9IVkFfRVJSX0JBRDtcXG4gMzc5OlxcdFxcbiAzODA6XFx0XFx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BjLVxcdTAwM2VncGEsIHVodmEpO1xcbiAzODE6XFx0fVxcbiAzODI6XFx0XFxuIDM4MzpcXHR2b2lkIGt2bV9ncGNfaW5pdChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBzdHJ1Y3Qga3ZtICprdm0pXFxuIDM4NDpcXHR7XFxuIDM4NTpcXHRcXHRyd2xvY2tfaW5pdChcXHUwMDI2Z3BjLVxcdTAwM2Vsb2NrKTtcXG4gMzg2OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmdwYy1cXHUwMDNlcmVmcmVzaF9sb2NrKTtcXG4gMzg3OlxcdFxcbiAzODg6XFx0XFx0Z3BjLVxcdTAwM2Vrdm0gPSBrdm07XFxuIDM4OTpcXHRcXHRncGMtXFx1MDAzZXBmbiA9IEtWTV9QRk5fRVJSX0ZBVUxUO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMToxNC43NzkyMjcxMzZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgwMTU5MjA5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gTW9kdWxlIEludGVybmFscyoqXG5cbk9rYXksIHNvIEtWTSBpcyBjb25zdHJ1Y3RlZCBhcyBhIHNpbmdsZSwgY29oZXNpdmUgbW9kdWxlLCBvciBwZXJoYXBzIGV2ZW4gYnVpbHQtaW4sIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBidWlsZCBwcm9jZXNzLiBJIHNlZSB0aGF0IHRoZSBgdmlydC9rdm0vcGZuY2FjaGUub2Agb2JqZWN0IGZpbGUgZ2V0cyBsaW5rZWQgZGlyZWN0bHkgaW50byBga3ZtLm9gLiBBY3R1YWxseSwgaXMgaXQgYWxzbyBsaW5rZWQgd2l0aCBga3ZtLWFtZC5vYCBvciBga3ZtLWludGVsLm9gPyBObywgbm8sIGBrdm0ub2AgaXMgZGVmaW5pdGVseSB0aGUgY2VudHJhbCBjb3JlIGhlcmUuIEFoLCByaWdodCwgdGhlIGJ1aWxkIHByb2Nlc3MgbGlrZWx5IGluY2x1ZGVzIGAkKEtWTSkvcGZuY2FjaGUub2AgaW4gYGt2bS15YC4gU2luY2UgYHBmbmNhY2hlYCBpcyB1c2VkIGludGVybmFsbHkgd2l0aGluIEtWTSwgaXQgZG9lc24ndCBuZWVkIGV4cGxpY2l0IHN5bWJvbCBleHBvcnQuXG5cbkJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIHNlZWluZyBgRVhQT1JUX1NZTUJPTF9HUExgIGJlaW5nIHVzZWQgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgIOKAkyBzcGVjaWZpY2FsbHkgZm9yIHN5bWJvbHMgdGhhdCAqZG8qIG5lZWQgdG8gYmUgZXhwb3NlZCB0byBtb2R1bGVzIGxpa2UgYGt2bS1pbnRlbGAgb3IgYGt2bS1hbWRgLiBUaGF0IG1lYW5zIHRoZXJlJ3Mgc29tZSBpbnRlcmFjdGlvbi4gT2theSwgbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIGBrdm1fZ3BjX3JlZnJlc2hgIGlzIGV4cG9ydGVkIGZyb20gYHZpcnQva3ZtL3BmbmNhY2hlLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBpbnRlcm5hbCBjb21wb25lbnRzIGFyZSBzaGFyZWQgYW5kIGxpbmtlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2NzksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMToxOS41ODA4MjI3ODFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDAwMzA5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MX0dQTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9wZm5jYWNoZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMToxOS42MjYyMzM2NloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjQzNjEyNDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIEtWTSBTeW1ib2wgRXhwb3J0KipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUxgIGlzIGFjdHVhbGx5IGluIHVzZSBzb21ld2hlcmUsIGFuZCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQgbWlnaHQgYmUsIGJ1dCBsZXQncyBiZSBzdXJlLiBXYWl0LCBubywgYEVYUE9SVF9TWU1CT0xfR1BMYCBpcyBpbiBgdmlydC9rdm0va3ZtX21haW4uY2AsIHRoYXQncyBhbiBpbXBvcnRhbnQgZGV0YWlsLiBJIHNob3VsZCBjaGVjayBgdmlydC9rdm0vcGZuY2FjaGUuY2AgYWdhaW4gZm9yIGBFWFBPUlRfU1lNQk9MX0dQTGAsIGp1c3QgdG8gYmUgY2VydGFpbi4gTm9wZSwgc3RpbGwgbm90aGluZy5cblxuQWxyaWdodCwgSSdsbCB0cnkgc2VhcmNoaW5nIGZvciBgRVhQT1JUX1NZTUJPTF9HUExgIGluIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYCBhZ2FpbiwgYnV0IHRoaXMgdGltZSBJJ2xsIG1ha2UgdGhlIHNlYXJjaCBjYXNlLWluc2Vuc2l0aXZlLCBqdXN0IHRvIGNvdmVyIGFsbCBiYXNlcywgYmVjYXVzZSBzb21ldGltZXMgdGhpbmdzIGFyZSBuYW1lZCB1bmV4cGVjdGVkbHkuIFN0aWxsIG5vdGhpbmcuIFNvIGl0J3Mgbm90IGV4cG9ydGVkIHRoZXJlLlxuXG5Pa2F5LCBsZXQncyB0YWtlIG9uZSBtb3JlIGxvb2sgYXQgYHZpcnQva3ZtL3BmbmNhY2hlLmNgIGZvciBgRVhQT1JUX1NZTUJPTF9HUExgIGp1c3QgdG8gZG91YmxlIGNoZWNrIHRoYXQgSSBkaWRuJ3QgbWlzcyBzb21ldGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTg4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjI1Ljg2OTg0OTY4OVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ3ODE4NzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xfR1BMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL3BmbmNhY2hlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjI1LjkxNDY0MzIwOVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTUwMjU3NjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHRob3VnaHQ6XG5cbioqQ2hlY2tpbmcgYHZpcnQva3ZtL3BmbmNhY2hlLmNgIGZvciBgRVhQT1JUX1NZTUJPTGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHZpc2liaWxpdHkgb2Ygc29tZSBzeW1ib2xzIHdpdGhpbiB0aGUgS1ZNIFBGTiBjYWNoZSBpbXBsZW1lbnRhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBjaGVjayBgdmlydC9rdm0vcGZuY2FjaGUuY2AgZm9yIGBFWFBPUlRfU1lNQk9MYC4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlLCByZWFsbHk7IGl0J3MgdGhlIHF1aWNrIGFuZCBkaXJ0eSB3YXkgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW5kZWQgc2NvcGUgb2YgdGhlc2Ugc3ltYm9scy4gQXJlIHRoZXkgaW50ZW5kZWQgZm9yIG1vZHVsZSB1c2UsIGludGVybmFsIHRvIEtWTSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IExvb2tpbmcgYXQgdGhlIGBFWFBPUlRfU1lNQk9MYCBtYWNybyB3aWxsIHRlbGwgbWUgaWYgdGhleSBhcmUgZ2xvYmFsbHkgdmlzaWJsZS4gVGhpcyBpcyBhIGZvdW5kYXRpb25hbCBzdGVwLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgaG93IHRoZSBQRk4gY2FjaGUgaXMgZXhwb3NlZCBhbmQgdXNlZCwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIga2VybmVsIGNvbXBvbmVudHMsIHBhcnRpY3VsYXJseSBvdGhlciBLVk0gbW9kdWxlcyBvciB0aGUgY29yZSBrZXJuZWwgaXRzZWxmLiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2MTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMTozMS4wNjQ5MDQ4MTdaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MjM4MDM5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL3BmbmNhY2hlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjMxLjEwOTE1MjI4NloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzE5NzM5ODk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgQXNzZXNzbWVudCoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXJnZXQgaXNuJ3QgZXhwbGljaXRseSBleHBvcnRlZCwgd2hpY2ggaXMgdGhlIGluaXRpYWwgaHVyZGxlLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IGl0J3MgYSBub24tc3RhdGljIGZ1bmN0aW9uICp3aXRoaW4qIHRoZSBrZXJuZWwgaW1hZ2UgZ2l2ZXMgdXMgYSBkZWZpbml0ZSBhdmVudWUgZm9yIGZ1enppbmcuIFdlIGtub3cgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIGZhaXIgZ2FtZS5cblxuTXkgdGhpbmtpbmcgdGhlbiB6ZXJvZXMgaW4gb24gYGt2bV9ncGNfcmVmcmVzaGAuIFNpbmNlIGl0J3Mgbm9uLXN0YXRpYywgdGhlcmUncyBhIGdvb2QgY2hhbmNlIGl0J3MgcHJlc2VudCB3aXRoaW4gYGt2bS5rb2AuIExldCdzIGNvbmZpcm0gdGhhdCBxdWlja2x5Li4uIFllcywgY29uZmlybWVkLCBpdCAqaXMqIGluIGBrdm0ua29gLiBFeGNlbGxlbnQuXG5cblRoYXQgbmFycm93cyBvdXIgZm9jdXMuIFRoZSBjcml0aWNhbCBzeW1ib2xzIGZvciBhIHByb21pc2luZyBmdXp6aW5nIGNhbXBhaWduIGFyZSBjbGVhcmx5IGBrdm1fZ3BjX3JlZnJlc2hgLCBga3ZtX2dwY19hY3RpdmF0ZWAsIGFuZCBga3ZtX2dwY19hY3RpdmF0ZV9odmFgLlxuXG5Ob3cgaXTigJlzIHRpbWUgdG8gYXNzZXNzIHRob3NlIGxhc3QgdHdvOiBga3ZtX2dwY19hY3RpdmF0ZWAgYW5kIGBrdm1fZ3BjX2FjdGl2YXRlX2h2YWAuIExldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBpbiB0aG9zZSBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTAyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjM1LjQyODg5NTRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9rdm0vcGZuY2FjaGUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MjA6XFx0XFx0XFx0d3JpdGVfdW5sb2NrX2lycShcXHUwMDI2Z3BjLVxcdTAwM2Vsb2NrKTtcXG4gNDIxOlxcdFxcdH1cXG4gNDIyOlxcdFxcdHJldHVybiBfX2t2bV9ncGNfcmVmcmVzaChncGMsIGdwYSwgdWh2YSk7XFxuIDQyMzpcXHR9XFxuIDQyNDpcXHRcXG4gNDI1OlxcdGludCBrdm1fZ3BjX2FjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyBsZW4pXFxuIDQyNjpcXHR7XFxuIDQyNzpcXHRcXHQvKlxcbiA0Mjg6XFx0XFx0ICogRXhwbGljaXRseSBkaXNhbGxvdyBJTlZBTElEX0dQQSBzbyB0aGF0IHRoZSBtYWdpYyB2YWx1ZSBjYW4gYmUgdXNlZFxcbiA0Mjk6XFx0XFx0ICogYnkgS1ZNIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBHUEEtYmFzZWQgYW5kIEhWQS1iYXNlZCBjYWNoZXMuXFxuIDQzMDpcXHRcXHQgKi9cXG4gNDMxOlxcdFxcdGlmIChXQVJOX09OX09OQ0Uoa3ZtX2lzX2Vycm9yX2dwYShncGEpKSlcXG4gNDMyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA0MzM6XFx0XFxuIDQzNDpcXHRcXHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgZ3BhLCBLVk1fSFZBX0VSUl9CQUQsIGxlbik7XFxuIDQzNTpcXHR9XFxuIDQzNjpcXHRcXG4gNDM3OlxcdGludCBrdm1fZ3BjX2FjdGl2YXRlX2h2YShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIHVodmEsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbiA0Mzg6XFx0e1xcbiA0Mzk6XFx0XFx0aWYgKCFhY2Nlc3Nfb2soKHZvaWQgX191c2VyICopdWh2YSwgbGVuKSlcXG4gNDQwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA0NDE6XFx0XFxuIDQ0MjpcXHRcXHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgSU5WQUxJRF9HUEEsIHVodmEsIGxlbik7XFxuIDQ0MzpcXHR9XFxuIDQ0NDpcXHRcXG4gNDQ1OlxcdHZvaWQga3ZtX2dwY19kZWFjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMpXFxuIDQ0NjpcXHR7XFxuIDQ0NzpcXHRcXHRzdHJ1Y3Qga3ZtICprdm0gPSBncGMtXFx1MDAzZWt2bTtcXG4gNDQ4OlxcdFxcdGt2bV9wZm5fdCBvbGRfcGZuO1xcbiA0NDk6XFx0XFx0dm9pZCAqb2xkX2todmE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjM1LjQyODk4OTQ3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNTAyNDUxMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyB0aGVzZSBmdW5jdGlvbnMsIGBrdm1fZ3BjX3JlZnJlc2hgLCBga3ZtX2dwY19hY3RpdmF0ZWAsIGFuZCBga3ZtX2dwY19hY3RpdmF0ZV9odmFgLCBhcmUgbm9uLXN0YXRpYyDigJMgdGhhdCdzIGdvb2QsIHRoYXQncyB3aGF0IEkgbmVlZGVkIHRvIGNvbmZpcm0uIEknbSBnb2luZyB0byBhZGQgdGhvc2UgdGhyZWUgc3ltYm9scyB0byBteSBmb2N1cyBsaXN0LiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYEtWTWAsIHdoaWNoIGlzIGFsc28gaW1wb3J0YW50IHRvIG5vdGUuXG5cbk5vdywgbGV0J3MgZ28gYmFjayBhbmQgY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIHByb3ZpZGVkIHBhdGNoLiBSaWdodCwgaGVyZSdzIHRoZSBjb3JlIG9mIGl0LiBXZSdyZSByZW1vdmluZyB0aGUgYGdwYy1cdTAwM2Vsb2NrYCBhY3F1aXNpdGlvbiBpZiB0aGUgR1BDIGlzbid0IGFjdGl2ZS4gSXQncyBtb3ZpbmcgdGhlIGBsb2NrZGVwX2Fzc2VydF9oZWxkYCBoaWdoZXIgaW4gdGhlIGZ1bmN0aW9uJ3Mgc3RydWN0dXJlLiBUaGF0J3MgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgYW5kIHRob3NlIGFyZSBhbHdheXMgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGVzcGVjaWFsbHkgd2hlbiB0aGV5IGludm9sdmUgbG9ja3MgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG9yIGlmIHRoZSBsb2dpYyBpcyBhZmZlY3RlZCBieSB0aGUgc3RhdGUgb2YgYGdwYy1cdTAwM2VhY3RpdmVgLlxuXG5UaGUgZmFjdCB0aGF0IHdlJ3JlIG9wdGltaXppbmcgdGhlIGxvY2sgYWNxdWlzaXRpb24gcGF0aCBiYXNlZCBvbiB0aGUgYGdwYy1cdTAwM2VhY3RpdmVgIHN0YXR1cyByYWlzZXMgYSByZWQgZmxhZy4gVGhpcyBjb25kaXRpb25hbCBsb2dpYyBjYW4gZWFzaWx5IGludHJvZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIHRoZSBgZ3BjLVx1MDAzZWFjdGl2ZWAgZmxhZyBjaGFuZ2VzIGNvbmN1cnJlbnRseS4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLCBzbyB0aGF0J3MgZGVmaW5pdGVseSBhIHZpYWJsZSB0YXJnZXQuIEkgbmVlZCB0byBiZSBhYmxlIHRvIHNldCB0aGUgYWN0aXZlIHJlc3VsdHMuXG5cbkFscmlnaHQsIHRpbWUgdG8gbG9nIHRoaXMgZm9yIGEgZnVsbC1zY2FsZSBmdXp6aW5nIGNhbXBhaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTgyNywiT3V0cHV0VG9rZW5zIjoxMjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMTo0My43NzkyMzc2NjJaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDcxMDQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2dwY19yZWZyZXNoXCIsXG4gICAgXCJrdm1fZ3BjX2FjdGl2YXRlXCIsXG4gICAgXCJrdm1fZ3BjX2FjdGl2YXRlX2h2YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFuZCBsb2NrZGVwIGFzc2VydGlvbnMgaW4gYF9fa3ZtX2dwY19yZWZyZXNoYCB3aXRoaW4gdGhlIEtWTSBwZm5jYWNoZSBsb2dpYy4gSXQgYXZvaWRzIHRha2luZyB0aGUgYGdwYy1cXHUwMDNlbG9ja2AgaWYgdGhlIGNhY2hlIGlzIG5vdCBhY3RpdmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChLVk0pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9ncGNfcmVmcmVzaFwiLFxuICAgIFwia3ZtX2dwY19hY3RpdmF0ZVwiLFxuICAgIFwia3ZtX2dwY19hY3RpdmF0ZV9odmFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zIGluIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIHRoZSBLVk0gcGZuY2FjaGUgbG9naWMuIEl0IGF2b2lkcyB0YWtpbmcgdGhlIGBncGMtXFx1MDAzZWxvY2tgIGlmIHRoZSBjYWNoZSBpcyBub3QgYWN0aXZlLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoS1ZNKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowjgqhn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 13:54:46 +0000 UTC FinishedAt: 2026-07-29 14:01:45 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "f5098b6bae761e346ebcd9da7f95622c04733cff", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "KVM" ], "series_id": "318b6ee3-6efd-4e75-8d45-f098e37fcef7" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "kvm_gpc_refresh", "kvm_gpc_activate", "kvm_gpc_activate_hva" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEzOjU5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9ncGNfcmVmcmVzaCYjMzQ7LAogICAgJiMzNDtrdm1fZ3BjX2FjdGl2YXRlJiMzNDssCiAgICAmIzM0O2t2bV9ncGNfYWN0aXZhdGVfaHZhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFuZCBsb2NrZGVwIGFzc2VydGlvbnMgaW4gYF9fa3ZtX2dwY19yZWZyZXNoYCB3aXRoaW4gdGhlIEtWTSBwZm5jYWNoZSBsb2dpYy4gSXQgYXZvaWRzIHRha2luZyB0aGUgYGdwYy1cdTAwM2Vsb2NrYCBpZiB0aGUgY2FjaGUgaXMgbm90IGFjdGl2ZSwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEtWTSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTM6NTk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCBmN2EyOTMwYmI4OWEzMmZjMWFiOWM4YzgyMmIzMmE2YjRiNjBlMjc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTM6NTk6NTcgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvdmlydC9rdm0vcGZuY2FjaGUuYyBiL3ZpcnQva3ZtL3BmbmNhY2hlLmNcbmluZGV4IDcyOGQyYzFiNDg4YTguLmZjZmQ1NTU1YjkxYjkgMTAwNjQ0XG4tLS0gYS92aXJ0L2t2bS9wZm5jYWNoZS5jXG4mIzQzOyYjNDM7JiM0MzsgYi92aXJ0L2t2bS9wZm5jYWNoZS5jXG5AQCAtMjYzLDE5ICYjNDM7MjYzLDE3IEBAIHN0YXRpYyBpbnQgX19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsXG4gXHR2b2lkICpvbGRfa2h2YTtcbiBcdGludCByZXQ7XG4gXG4mIzQzO1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZncGMtXHUwMDNlcmVmcmVzaF9sb2NrKTtcbiYjNDM7XG4mIzQzO1x0aWYgKCFncGMtXHUwMDNlYWN0aXZlKVxuJiM0MztcdFx0cmV0dXJuIC1FSU5WQUw7XG4mIzQzO1xuIFx0LyogRWl0aGVyIGdwYSBvciB1aHZhIG11c3QgYmUgdmFsaWQsIGJ1dCBub3QgYm90aCAqL1xuIFx0aWYgKFdBUk5fT05fT05DRShrdm1faXNfZXJyb3JfZ3BhKGdwYSkgPT0ga3ZtX2lzX2Vycm9yX2h2YSh1aHZhKSkpXG4gXHRcdHJldHVybiAtRUlOVkFMO1xuIFxuLVx0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZncGMtXHUwMDNlcmVmcmVzaF9sb2NrKTtcbi1cbiBcdHdyaXRlX2xvY2tfaXJxKFx1MDAyNmdwYy1cdTAwM2Vsb2NrKTtcbiBcbi1cdGlmICghZ3BjLVx1MDAzZWFjdGl2ZSkge1xuLVx0XHRyZXQgPSAtRUlOVkFMO1xuLVx0XHRnb3RvIG91dF91bmxvY2s7XG4tXHR9XG4tXG4gXHRvbGRfcGZuID0gZ3BjLVx1MDAzZXBmbjtcbiBcdG9sZF9raHZhID0gKHZvaWQgKilQQUdFX0FMSUdOX0RPV04oKHVpbnRwdHJfdClncGMtXHUwMDNla2h2YSk7XG4gXHRvbGRfdWh2YSA9IFBBR0VfQUxJR05fRE9XTihncGMtXHUwMDNldWh2YSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTM6NTk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0tWTSYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2t2bV9ncGNfcmVmcmVzaCYjMzQ7LAogICAgJiMzNDtrdm1fZ3BjX2FjdGl2YXRlJiMzNDssCiAgICAmIzM0O2t2bV9ncGNfYWN0aXZhdGVfaHZhJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFuZCBsb2NrZGVwIGFzc2VydGlvbnMgaW4gYF9fa3ZtX2dwY19yZWZyZXNoYCB3aXRoaW4gdGhlIEtWTSBwZm5jYWNoZSBsb2dpYy4gSXQgYXZvaWRzIHRha2luZyB0aGUgYGdwYy1cdTAwM2Vsb2NrYCBpZiB0aGUgY2FjaGUgaXMgbm90IGFjdGl2ZSwgd2hpY2ggaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKEtWTSkuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCBmN2EyOTMwYmI4OWEzMmZjMWFiOWM4YzgyMmIzMmE2YjRiNjBlMjc1CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMTM6NTk6NTcgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS92aXJ0L2t2bS9wZm5jYWNoZS5jIGIvdmlydC9rdm0vcGZuY2FjaGUuYwppbmRleCA3MjhkMmMxYjQ4OGE4Li5mY2ZkNTU1NWI5MWI5IDEwMDY0NAotLS0gYS92aXJ0L2t2bS9wZm5jYWNoZS5jCiYjNDM7JiM0MzsmIzQzOyBiL3ZpcnQva3ZtL3BmbmNhY2hlLmMKQEAgLTI2MywxOSAmIzQzOzI2MywxNyBAQCBzdGF0aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbAogCXZvaWQgKm9sZF9raHZhOwogCWludCByZXQ7CiAKJiM0MzsJbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2dwYy0mZ3Q7cmVmcmVzaF9sb2NrKTsKJiM0MzsKJiM0MzsJaWYgKCFncGMtJmd0O2FjdGl2ZSkKJiM0MzsJCXJldHVybiAtRUlOVkFMOwomIzQzOwogCS8qIEVpdGhlciBncGEgb3IgdWh2YSBtdXN0IGJlIHZhbGlkLCBidXQgbm90IGJvdGggKi8KIAlpZiAoV0FSTl9PTl9PTkNFKGt2bV9pc19lcnJvcl9ncGEoZ3BhKSA9PSBrdm1faXNfZXJyb3JfaHZhKHVodmEpKSkKIAkJcmV0dXJuIC1FSU5WQUw7CiAKLQlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7Z3BjLSZndDtyZWZyZXNoX2xvY2spOwotCiAJd3JpdGVfbG9ja19pcnEoJmFtcDtncGMtJmd0O2xvY2spOwogCi0JaWYgKCFncGMtJmd0O2FjdGl2ZSkgewotCQlyZXQgPSAtRUlOVkFMOwotCQlnb3RvIG91dF91bmxvY2s7Ci0JfQotCiAJb2xkX3BmbiA9IGdwYy0mZ3Q7cGZuOwogCW9sZF9raHZhID0gKHZvaWQgKilQQUdFX0FMSUdOX0RPV04oKHVpbnRwdHJfdClncGMtJmd0O2todmEpOwogCW9sZF91aHZhID0gUEFHRV9BTElHTl9ET1dOKGdwYy0mZ3Q7dWh2YSk7CjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDEzOjU5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIyMzkKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiAzNTMKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gUEZOIENhY2hlIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgYHZpcnQva3ZtL3BmbmNhY2hlLmNgLiBNeSBpbml0aWFsIG9ic2VydmF0aW9uIGlzIHRoYXQgaXQmIzM5O3Mgc2hpZnRpbmcgYXJvdW5kIGEga2V5IGNoZWNrIHJlbGF0ZWQgdG8gYGdwYy0mZ3Q7YWN0aXZlYCB3aXRoaW4gdGhlIGBfX2t2bV9ncGNfcmVmcmVzaGAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQmIzM5O3MgbW92aW5nIHRoZSBgaWYgKCFncGMtJmd0O2FjdGl2ZSlgIGNoZWNrICpvdXRzaWRlKiB0aGUgYHdyaXRlX2xvY2tfaXJxKCZhbXA7Z3BjLSZndDtsb2NrKTtgIGJsb2NrLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB3aHkuIExldCBtZSB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgdGhlIGRpZmYuLi4gcmlnaHQgaGVyZS4KCkFoLCBJIHNlZSBpdCBub3cuIFRoZSBjb2RlIGlzIHN0cnVjdHVyZWQgbGlrZSB0aGlzOiAKYGBgYwomIzQzOwlsb2NrZGVwX2Fzc2VydF9oZWxkKCZhbXA7Z3BjLSZndDtyZWZyZXNoX2xvY2spOwomIzQzOwomIzQzOwlpZiAoIWdwYy0mZ3Q7YWN0aXZlKQomIzQzOwkJcmV0dXJuIC1FSU5WQUw7CiYjNDM7CmBgYAoKTm93LCB0aGUgY2hlY2sgZm9yIGBncGMtJmd0O2FjdGl2ZWAgaXMgKmJlZm9yZSogdGhlIGxvY2sgYWNxdWlzaXRpb24uIFByZXZpb3VzbHksIGl0IHdhcyAqaW5zaWRlKi4KCmBgYGMKIAl3cml0ZV9sb2NrX2lycSgmYW1wO2dwYy0mZ3Q7bG9jayk7CiAKLQlpZiAoIWdwYy0mZ3Q7YWN0aXZlKSB7Ci0JCXJldCA9IC1FSU5WQUw7Ci0JCWdvdG8gb3V0X3VubG9jazsKLQl9CmBgYAoKVGhpcyAqaXMqIGEgZnVuY3Rpb25hbCBjaGFuZ2UuIElmIGBncGMtJmd0O2FjdGl2ZWAgaXMgZmFsc2UsIGl0JiMzOTtzIG5vdyBwb3NzaWJsZSB0byBmYWlsIHdpdGhvdXQgYWNxdWlyaW5nIGEgc3BpbmxvY2ssIG9yIG1vcmUgcHJlY2lzZWx5LCB3aXRob3V0IGFjcXVpcmluZyBhIHdyaXRlIGxvY2sgb24gYGdwYy0mZ3Q7bG9ja2AuIFRoZSBgbG9ja2RlcF9hc3NlcnRfaGVsZCgmYW1wO2dwYy0mZ3Q7cmVmcmVzaF9sb2NrKTtgIGlzIGFsc28gbW92ZWQgYWJvdmUsIGJ1dCB0aGlzIGxpa2VseSBkb2VzbiYjMzk7dCBoYXZlIGFzIG11Y2ggb2YgYW4gaW1wYWN0LgoKSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzaXR1YXRpb25zIGNvdWxkIHRyaWdnZXIgdGhpcyBgIWdwYy0mZ3Q7YWN0aXZlYCBjb25kaXRpb24uIFRoaXMgY2hhbmdlIGFmZmVjdHMgdGhlIGxvY2sgYWNxdWlzaXRpb24gYmVoYXZpb3IuIElmIGBncGMtJmd0O2FjdGl2ZWAgaXMgZmFsc2UsIGl0IG1lYW5zIHRoYXQgdGhlIHdyaXRlIGxvY2sgaXMgbmV2ZXIgbmVlZGVkLiBCZWZvcmUgdGhpcyBjaGFuZ2UsIHRoZSBsb2NrIHdhcyB1bm5lY2Vzc2FyaWx5IGFjcXVpcmVkLCB3aGVuIGl0IHdhc24mIzM5O3QgcmVxdWlyZWQuIEkgbmVlZCB0byB0cmFjayB0aGUgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLiBMZXQgbWUgbG9vayB0aG9zZSB1cC4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O19fa3ZtX2dwY19yZWZyZXNoJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDt2aXJ0L2t2bS9wZm5jYWNoZS5jPTE1NT1zdGF0aWMga3ZtX3Bmbl90IGh2YV90b19wZm5fcmV0cnkoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYylcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1NS1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6MjU2OnN0YXRpYyBpbnQgX19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEpXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1Ny17XG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYz0zNjQ9aW50IGt2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIGxlbilcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM3OS1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6MzgwOlx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BjLVx1MDAzZWdwYSwgdWh2YSk7XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM4MS19XG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYz0zOTU9c3RhdGljIGludCBfX2t2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEsXG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy00MjEtXHR9XG52aXJ0L2t2bS9wZm5jYWNoZS5jOjQyMjpcdHJldHVybiBfX2t2bV9ncGNfcmVmcmVzaChncGMsIGdwYSwgdWh2YSk7XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMy19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzQ0NgoJCQkJCQkJb3V0cHV0OiAyNwoJCQkJCQkJdGhvdWdodHM6IDc1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgY29kZSBzbmlwcGV0cywgdGhpbmtpbmcgdGhyb3VnaCB0aGUgZmxvdyBhcyBpZiBJIHdlcmUgYW5hbHl6aW5nIGl0IG15c2VsZjoKCioqVHJhY2luZyB0aGUgR1BDIFJlZnJlc2ggTG9naWMqKgoKQWxyaWdodCwgc28gSSBzZWUgdGhhdCBib3RoIGBrdm1fZ3BjX3JlZnJlc2hgIGFuZCBgX19rdm1fZ3BjX2FjdGl2YXRlYCB1bHRpbWF0ZWx5IGNhbGwgYF9fa3ZtX2dwY19yZWZyZXNoYC4gVGhhdCBzdWdnZXN0cyBgX19rdm1fZ3BjX3JlZnJlc2hgIGlzIHRoZSBjb3JlIGZ1bmN0aW9uLCB0aGUgd29ya2hvcnNlIG9mIHRoZSBncm91cC4gTm93LCBzaW5jZSBga3ZtX2dwY19yZWZyZXNoYCBpcyBlaXRoZXIgZXhwb3J0ZWQgb3IsIGF0IHRoZSB2ZXJ5IGxlYXN0LCB1c2VkIGluIG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlIGJhc2UsIEkgbmVlZCB0byBnZXQgYSBjbGVhciBwaWN0dXJlIG9mIGl0cyByb2xlLiBUbyBmdWxseSB1bmRlcnN0YW5kIHdoYXQmIzM5O3MgaGFwcGVuaW5nLCBJIG5lZWQgdG8gbG9vayB1cHN0cmVhbSwgd2hpY2ggYWxzbyBhcHBsaWVzIHRvIGBfX2t2bV9ncGNfYWN0aXZhdGVgLiBJIG5lZWQgdG8gaWRlbnRpZnkgdGhlICpjYWxsZXJzKiBvZiBib3RoIGBrdm1fZ3BjX3JlZnJlc2hgIGFuZCBgX19rdm1fZ3BjX2FjdGl2YXRlYC4gVGhhdCYjMzk7cyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgY29udGV4dHMgaW4gd2hpY2ggdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIGFuZCBob3cgdGhleSBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBJZGVudGlmeWluZyB0aGUgb3JpZ2lucyB3aWxsIHNob3cgbWUgdGhlIGluaXRpYXRpbmcgZXZlbnRzIG9yIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZXNlIGFsbC1pbXBvcnRhbnQgcmVmcmVzaCBhY3Rpb25zLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9ncGNfcmVmcmVzaCYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0OyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0veDg2LmM9MzI0Mj1zdGF0aWMgdm9pZCBrdm1fc2V0dXBfZ3Vlc3RfcHZjbG9jayhzdHJ1Y3QgcHZjbG9ja192Y3B1X3RpbWVfaW5mbyAqcmVmX2h2X2Nsb2NrLFxuLS1cbmFyY2gveDg2L2t2bS94ODYuYy0zMjU2LVxuYXJjaC94ODYva3ZtL3g4Ni5jOjMyNTc6XHRcdGlmIChrdm1fZ3BjX3JlZnJlc2goZ3BjLCBvZmZzZXQgJiM0Mzsgc2l6ZW9mKCpndWVzdF9odl9jbG9jaykpKVxuYXJjaC94ODYva3ZtL3g4Ni5jLTMyNTgtXHRcdFx0cmV0dXJuO1xuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0zOD1zdGF0aWMgaW50IGt2bV94ZW5fc2hhcmVkX2luZm9faW5pdChzdHJ1Y3Qga3ZtICprdm0pXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTUxLVxuYXJjaC94ODYva3ZtL3hlbi5jOjUyOlx0XHRyZXQgPSBrdm1fZ3BjX3JlZnJlc2goZ3BjLCBQQUdFX1NJWkUpO1xuYXJjaC94ODYva3ZtL3hlbi5jLTUzLVx0XHRpZiAocmV0KVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0xNTM9c3RhdGljIGludCB4ZW5fZ2V0X2d1ZXN0X3B2Y2xvY2soc3RydWN0IGt2bV92Y3B1ICp2Y3B1LFxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy0xNjQtXG5hcmNoL3g4Ni9rdm0veGVuLmM6MTY1Olx0XHRyID0ga3ZtX2dwY19yZWZyZXNoKGdwYywgb2Zmc2V0ICYjNDM7IHNpemVvZigqaHZfY2xvY2spKTtcbmFyY2gveDg2L2t2bS94ZW4uYy0xNjYtXHRcdGlmIChyKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYz0zMjE9c3RhdGljIHZvaWQga3ZtX3hlbl91cGRhdGVfcnVuc3RhdGVfZ3Vlc3Qoc3RydWN0IGt2bV92Y3B1ICp2LCBib29sIGF0b21pYylcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDM4LVxuYXJjaC94ODYva3ZtL3hlbi5jOjQzOTpcdFx0aWYgKGt2bV9ncGNfcmVmcmVzaChncGMxLCB1c2VyX2xlbjEpKVxuYXJjaC94ODYva3ZtL3hlbi5jLTQ0MC1cdFx0XHRyZXR1cm47XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTYzOT12b2lkIGt2bV94ZW5faW5qZWN0X3BlbmRpbmdfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdilcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtNjU2LVxuYXJjaC94ODYva3ZtL3hlbi5jOjY1NzpcdFx0aWYgKGt2bV9ncGNfcmVmcmVzaChncGMsIHNpemVvZihzdHJ1Y3QgdmNwdV9pbmZvKSkpXG5hcmNoL3g4Ni9rdm0veGVuLmMtNjU4LVx0XHRcdHJldHVybjtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9Njk3PWludCBfX2t2bV94ZW5faGFzX2ludGVycnVwdChzdHJ1Y3Qga3ZtX3ZjcHUgKnYpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTczMC1cbmFyY2gveDg2L2t2bS94ZW4uYzo3MzE6XHRcdGlmIChrdm1fZ3BjX3JlZnJlc2goZ3BjLCBzaXplb2Yoc3RydWN0IHZjcHVfaW5mbykpKSB7XG5hcmNoL3g4Ni9rdm0veGVuLmMtNzMyLVx0XHRcdC8qXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTE5MDE9c3RhdGljIGludCBrdm1feGVuX3NldF9ldnRjaG4oc3RydWN0IGt2bV94ZW5fZXZ0Y2huICp4ZSwgc3RydWN0IGt2bSAqa3ZtKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy0xOTQ0LVx0XHRpZHggPSBzcmN1X3JlYWRfbG9jayhcdTAwMjZrdm0tXHUwMDNlc3JjdSk7XG5hcmNoL3g4Ni9rdm0veGVuLmM6MTk0NTpcdFx0cmMgPSBrdm1fZ3BjX3JlZnJlc2goZ3BjLCBQQUdFX1NJWkUpO1xuYXJjaC94ODYva3ZtL3hlbi5jLTE5NDYtXHRcdHNyY3VfcmVhZF91bmxvY2soXHUwMDI2a3ZtLVx1MDAzZXNyY3UsIGlkeCk7XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTE0OTE9Ym9vbCBrdm1fZ3BjX2NoZWNrKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHVuc2lnbmVkIGxvbmcgbGVuKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ5My0vKipcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNDk0OiAqIGt2bV9ncGNfcmVmcmVzaCAtIHVwZGF0ZSBhIHByZXZpb3VzbHkgaW5pdGlhbGl6ZWQgY2FjaGUuXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ5NS0gKlxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNTA4LSAqL1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE1MDk6aW50IGt2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIGxlbik7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTUxMC1cbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTE1NT1zdGF0aWMga3ZtX3Bmbl90IGh2YV90b19wZm5fcmV0cnkoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYylcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1NS1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6MjU2OnN0YXRpYyBpbnQgX19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEpXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1Ny17XG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy0zNjMtXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjM2NDppbnQga3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHVuc2lnbmVkIGxvbmcgbGVuKVxudmlydC9rdm0vcGZuY2FjaGUuYy0zNjUte1xuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzc5LVxudmlydC9rdm0vcGZuY2FjaGUuYzozODA6XHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGMtXHUwMDNlZ3BhLCB1aHZhKTtcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzgxLX1cbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTM5NT1zdGF0aWMgaW50IF9fa3ZtX2dwY19hY3RpdmF0ZShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgdWh2YSxcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMS1cdH1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6NDIyOlx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BhLCB1aHZhKTtcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDIzLX1cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD43LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1MzI5CgkJCQkJCQlvdXRwdXQ6IDI3CgkJCQkJCQl0aG91Z2h0czogMTQzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgS1ZNIFBGTiBDYWNoZSBQYXRjaCoqCgpPa2F5LCBzbyB0aGUgY2hhbmdlIEkmIzM5O20gbG9va2luZyBhdCBpcyB0dWNrZWQgYXdheSBpbiBgdmlydC9rdm0vcGZuY2FjaGUuY2AuIEkgc2VlIGl0IG1vZGlmaWVzIHRoZSBgX19rdm1fZ3BjX3JlZnJlc2hgIGZ1bmN0aW9uLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQm90aCBga3ZtX2dwY19yZWZyZXNoYCBhbmQgYGt2bV9ncGNfYWN0aXZhdGVgIGNhbGwgaW50byB0aGlzLiBGcm9tIG15IGluaXRpYWwgZ2xhbmNlLCBga3ZtX2dwY19yZWZyZXNoYCBpdHNlbGYgZ2V0cyBjYWxsZWQgZnJvbSBjb2RlIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgIGFuZCBgYXJjaC94ODYva3ZtL3hlbi5jYC4gR2l2ZW4gdGhvc2UgbG9jYXRpb25zLCB0aGlzIGlzIGRlZmluaXRlbHkgdG91Y2hpbmcgY29yZSBLVk0ga2VybmVsIGxvZ2ljOyB0aGVyZSYjMzk7cyBubyB3YXkgYXJvdW5kIHRoYXQuIFRoaXMgaXNuJiMzOTt0IGp1c3QgYSBtaW5vciB0d2VhazsgdGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGJlY2F1c2UgaXQmIzM5O3MgYWx0ZXJpbmcgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zLiBJdCYjMzk7cyB0aW1lIHRvIGRpZyBpbnRvIHRoZSBhY3RpdmF0aW9uIHBhdGguIFRoZSBuZXh0IGxvZ2ljYWwgc3RlcCBpcyB0byBjaGVjayB3aGVyZSBga3ZtX2dwY19hY3RpdmF0ZWAgZ2V0cyBjYWxsZWQgZnJvbS4gVGhhdCB3aWxsIGdpdmUgbWUgbW9yZSBjb250ZXh0LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2t2bV9ncGNfYWN0aXZhdGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL3g4Ni5jPTI0Mjg9c3RhdGljIHZvaWQga3ZtX3dyaXRlX3N5c3RlbV90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3Qgc3lzdGVtX3RpbWUsXG4tLVxuYXJjaC94ODYva3ZtL3g4Ni5jLTI0NDQtXHRpZiAoc3lzdGVtX3RpbWUgXHUwMDI2IDEpXG5hcmNoL3g4Ni9rdm0veDg2LmM6MjQ0NTpcdFx0a3ZtX2dwY19hY3RpdmF0ZShcdTAwMjZ2Y3B1LVx1MDAzZWFyY2gucHZfdGltZSwgc3lzdGVtX3RpbWUgXHUwMDI2IH4xVUxMLFxuYXJjaC94ODYva3ZtL3g4Ni5jLTI0NDYtXHRcdFx0XHQgc2l6ZW9mKHN0cnVjdCBwdmNsb2NrX3ZjcHVfdGltZV9pbmZvKSk7XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jPTMyMT1zdGF0aWMgdm9pZCBrdm1feGVuX3VwZGF0ZV9ydW5zdGF0ZV9ndWVzdChzdHJ1Y3Qga3ZtX3ZjcHUgKnYsIGJvb2wgYXRvbWljKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy00ODUtXHRcdFx0LypcbmFyY2gveDg2L2t2bS94ZW4uYzo0ODY6XHRcdFx0ICogVXNlIGt2bV9ncGNfYWN0aXZhdGUoKSBoZXJlIGJlY2F1c2UgaWYgdGhlIHJ1bnN0YXRlXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDg3LVx0XHRcdCAqIGFyZWEgd2FzIGNvbmZpZ3VyZWQgaW4gMzItYml0IG1vZGUgYW5kIG9ubHkgZXh0ZW5kc1xuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy00OTAtXHRcdFx0ICovXG5hcmNoL3g4Ni9rdm0veGVuLmM6NDkxOlx0XHRcdGlmIChrdm1fZ3BjX2FjdGl2YXRlKGdwYzIsIGdwYzEtXHUwMDNlZ3BhICYjNDM7IHVzZXJfbGVuMSxcbmFyY2gveDg2L2t2bS94ZW4uYy00OTItXHRcdFx0XHRcdCAgICAgdXNlcl9sZW4yKSlcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9NzQ2PWludCBrdm1feGVuX2h2bV9zZXRfYXR0cihzdHJ1Y3Qga3ZtICprdm0sIHN0cnVjdCBrdm1feGVuX2h2bV9hdHRyICpkYXRhKVxuLS1cbmFyY2gveDg2L2t2bS94ZW4uYy03ODUtXHRcdFx0fSBlbHNlIHtcbmFyY2gveDg2L2t2bS94ZW4uYzo3ODY6XHRcdFx0XHRyID0ga3ZtX2dwY19hY3RpdmF0ZShcdTAwMjZrdm0tXHUwMDNlYXJjaC54ZW4uc2hpbmZvX2NhY2hlLFxuYXJjaC94ODYva3ZtL3hlbi5jLTc4Ny1cdFx0XHRcdFx0XHQgICAgIGdmbl90b19ncGEoZ2ZuKSwgUEFHRV9TSVpFKTtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtNzk3LVx0XHRcdH0gZWxzZSB7XG5hcmNoL3g4Ni9rdm0veGVuLmM6Nzk4Olx0XHRcdFx0ciA9IGt2bV9ncGNfYWN0aXZhdGVfaHZhKFx1MDAyNmt2bS1cdTAwM2VhcmNoLnhlbi5zaGluZm9fY2FjaGUsXG5hcmNoL3g4Ni9rdm0veGVuLmMtNzk5LVx0XHRcdFx0XHRcdFx0ICh1bnNpZ25lZCBsb25nKWh2YSwgUEFHRV9TSVpFKTtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmM9OTA2PWludCBrdm1feGVuX3ZjcHVfc2V0X2F0dHIoc3RydWN0IGt2bV92Y3B1ICp2Y3B1LCBzdHJ1Y3Qga3ZtX3hlbl92Y3B1X2F0dHIgKmRhdGEpXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTkyOC1cbmFyY2gveDg2L2t2bS94ZW4uYzo5Mjk6XHRcdFx0ciA9IGt2bV9ncGNfYWN0aXZhdGUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X2luZm9fY2FjaGUsXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTMwLVx0XHRcdFx0XHQgICAgIGRhdGEtXHUwMDNldS5ncGEsIHNpemVvZihzdHJ1Y3QgdmNwdV9pbmZvKSk7XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTkzNy1cbmFyY2gveDg2L2t2bS94ZW4uYzo5Mzg6XHRcdFx0ciA9IGt2bV9ncGNfYWN0aXZhdGVfaHZhKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC54ZW4udmNwdV9pbmZvX2NhY2hlLFxuYXJjaC94ODYva3ZtL3hlbi5jLTkzOS1cdFx0XHRcdFx0XHQgZGF0YS1cdTAwM2V1Lmh2YSwgc2l6ZW9mKHN0cnVjdCB2Y3B1X2luZm8pKTtcbi0tXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTUzLVxuYXJjaC94ODYva3ZtL3hlbi5jOjk1NDpcdFx0ciA9IGt2bV9ncGNfYWN0aXZhdGUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnhlbi52Y3B1X3RpbWVfaW5mb19jYWNoZSxcbmFyY2gveDg2L2t2bS94ZW4uYy05NTUtXHRcdFx0XHQgICAgIGRhdGEtXHUwMDNldS5ncGEsXG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTk4Ny1cdFx0c3oxID0gUEFHRV9TSVpFIC0gKGRhdGEtXHUwMDNldS5ncGEgXHUwMDI2IH5QQUdFX01BU0spO1xuYXJjaC94ODYva3ZtL3hlbi5jOjk4ODpcdFx0ciA9IGt2bV9ncGNfYWN0aXZhdGUoXHUwMDI2dmNwdS1cdTAwM2VhcmNoLnhlbi5ydW5zdGF0ZV9jYWNoZSxcbmFyY2gveDg2L2t2bS94ZW4uYy05ODktXHRcdFx0XHQgICAgIGRhdGEtXHUwMDNldS5ncGEsIHN6MSk7XG4tLVxuYXJjaC94ODYva3ZtL3hlbi5jLTk5OC1cdFx0XHRCVUdfT04oKGRhdGEtXHUwMDNldS5ncGEgJiM0Mzsgc3oxKSBcdTAwMjYgflBBR0VfTUFTSyk7XG5hcmNoL3g4Ni9rdm0veGVuLmM6OTk5Olx0XHRcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlKFx1MDAyNnZjcHUtXHUwMDNlYXJjaC54ZW4ucnVuc3RhdGUyX2NhY2hlLFxuYXJjaC94ODYva3ZtL3hlbi5jLTEwMDAtXHRcdFx0XHRcdCAgICAgZGF0YS1cdTAwM2V1LmdwYSAmIzQzOyBzejEsIHN6Mik7XG4tLVxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oPTE0Mzk9dm9pZCBrdm1fZ3BjX2luaXQoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgc3RydWN0IGt2bSAqa3ZtKTtcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ0MS0vKipcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaDoxNDQyOiAqIGt2bV9ncGNfYWN0aXZhdGUgLSBwcmVwYXJlIGEgY2FjaGVkIGtlcm5lbCBtYXBwaW5nIGFuZCBIUEEgZm9yIGEgZ2l2ZW4gZ3Vlc3RcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNDQzLSAqICAgICAgICAgICAgICAgICAgICBwaHlzaWNhbCBhZGRyZXNzLlxuLS1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNDU2LSAqL1xuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE0NTc6aW50IGt2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGxlbik7XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ1OC1cbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNDU5LS8qKlxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE0NjA6ICoga3ZtX2dwY19hY3RpdmF0ZV9odmEgLSBwcmVwYXJlIGEgY2FjaGVkIGtlcm5lbCBtYXBwaW5nIGFuZCBIUEEgZm9yIGEgZ2l2ZW4gSFZBLlxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0NjEtICpcbi0tXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ2OS0gKlxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE0NzA6ICogVGhlIHNlbWFudGljcyBvZiB0aGlzIGZ1bmN0aW9uIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBvZiBrdm1fZ3BjX2FjdGl2YXRlKCkuIEl0XG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ3MS0gKiBtZXJlbHkgYnlwYXNzZXMgYSBsYXllciBvZiBhZGRyZXNzIHRyYW5zbGF0aW9uLlxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0NzItICovXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTQ3MzppbnQga3ZtX2dwY19hY3RpdmF0ZV9odmEoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBodmEsIHVuc2lnbmVkIGxvbmcgbGVuKTtcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNDc0LVxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmM9MzgzPXZvaWQga3ZtX2dwY19pbml0KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHN0cnVjdCBrdm0gKmt2bSlcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM5NC1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6Mzk1OnN0YXRpYyBpbnQgX19rdm1fZ3BjX2FjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyB1aHZhLFxudmlydC9rdm0vcGZuY2FjaGUuYy0zOTYtXHRcdFx0ICAgICAgdW5zaWduZWQgbG9uZyBsZW4pXG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy00MjQtXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjQyNTppbnQga3ZtX2dwY19hY3RpdmF0ZShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgbGVuKVxudmlydC9rdm0vcGZuY2FjaGUuYy00MjYte1xuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDMzLVxudmlydC9rdm0vcGZuY2FjaGUuYzo0MzQ6XHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgZ3BhLCBLVk1fSFZBX0VSUl9CQUQsIGxlbik7XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQzNS19XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQzNi1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6NDM3OmludCBrdm1fZ3BjX2FjdGl2YXRlX2h2YShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIHVodmEsIHVuc2lnbmVkIGxvbmcgbGVuKVxudmlydC9rdm0vcGZuY2FjaGUuYy00Mzgte1xuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDQxLVxudmlydC9rdm0vcGZuY2FjaGUuYzo0NDI6XHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgSU5WQUxJRF9HUEEsIHVodmEsIGxlbik7XG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQ0My19XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzg3OAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDE3MgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipGdXp6aW5nIFRhcmdldCBJZGVudGlmaWNhdGlvbioqCgpPa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGZ1enppbmcgcG90ZW50aWFsLiBUaGF0IGZ1bmN0aW9uLCBhbmQgaXRzIHJlbGF0aXZlcywgYXJlIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vay4gSSYjMzk7bSB0aGlua2luZyBJIHNob3VsZCB6ZXJvIGluIG9uIHRoZSBmb2xsb3dpbmcgc3ltYm9scyBmb3IgbXkgaW5pdGlhbCBmdXp6aW5nIHJ1bnM6IGBrdm1fZ3BjX3JlZnJlc2hgLCBga3ZtX2dwY19hY3RpdmF0ZWAsIGFuZCBga3ZtX2dwY19hY3RpdmF0ZV9odmFgLiBIb2xkIG9uIGEgc2Vjb25kLCB0aG91Z2guLi4gSSBuZWVkIHRvIHJlbWVtYmVyIHRoYXQgYF9fa3ZtX2dwY19yZWZyZXNoYCBpcyBzdGF0aWMsIHNvIEkgc2hvdWxkIGJlIGxpc3Rpbmcgb25seSB0aGUgbm9uLXN0YXRpYyBzeW1ib2xzIGZvciB0aGUgZnV6emluZyBhbmFseXNpcy4KCk5vdywgYmVmb3JlIEkgZ2V0IGNhcnJpZWQgYXdheSwgSSBuZWVkIHRvIG1ha2Ugc3VyZSBJIGhhdmUgdGhlIHJpZ2h0IGVudmlyb25tZW50IHNldHVwLiBBcmUgdGhlcmUgYW55IHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBJIG5lZWQgZW5hYmxlZCBmb3IgdGhlc2UgZnVuY3Rpb25zIHRvIGJlIGFjdGl2ZT8gT2YgY291cnNlLCBLVk0gd2lsbCBiZSB0aGUgb2J2aW91cyByZXF1aXJlbWVudCBoZXJlOiBzbyBJJiMzOTtsbCBuZWVkIGBDT05GSUdfS1ZNYC4gSSBzaG91bGQgcXVpY2tseSBzY2FuIGB2aXJ0L2t2bS9LY29uZmlnYCBvciBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIGNvbmZpcm0gYW55IG90aGVyIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgS1ZNJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2FyY2gvYXJtNjQva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvYXJtNjQva3ZtL0tjb25maWctMTktXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnLTIxLVx0Ym9vbCBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9sb29uZ2FyY2gva3ZtL0tjb25maWctMTktXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZz0xNj1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE3LVxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjE4OmNvbmZpZyBLVk1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0xOS1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZy0zMC1cbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzozMTpjb25maWcgS1ZNX01JUFNfREVCVUdfQ09QMF9DT1VOVEVSU1xuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMyLVx0Ym9vbCBcJiMzNDtNYWludGFpbiBjb3VudGVycyBmb3IgQ09QMCBhY2Nlc3Nlc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMS1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjY6Y29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI3LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI5OmNvbmZpZyBLVk1fQk9PSzNTXzMyX0hBTkRMRVJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMC1cdGJvb2xcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzMtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzQ6Y29uZmlnIEtWTV9CT09LM1NfNjRfSEFORExFUlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM1LVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNy1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzozODpjb25maWcgS1ZNX0JPT0szU19QUl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM5LVx0Ym9vbFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QT1NTSUJMRVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQzLVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTQ0LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjQ1OmNvbmZpZyBLVk1fQk9PSzNTXzMyXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDYtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBib29rM3NfMzIgcHJvY2Vzc29yc1wmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX0JPT0szU182NFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYzLVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzY0IHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNzgtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6Nzk6Y29uZmlnIEtWTV9CT09LM1NfNjRfSFZcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy04MC1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgUE9XRVI3IGFuZCBsYXRlciB1c2luZyBoeXBlcnZpc29yIG1vZGUgaW4gaG9zdFwmIzM0O1xuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy05OS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMDA6Y29uZmlnIEtWTV9CT09LM1NfNjRfUFJcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDEtXHR0cmlzdGF0ZSBcJiMzNDtLVk0gc3VwcG9ydCB3aXRob3V0IHVzaW5nIGh5cGVydmlzb3IgbW9kZSBpbiBob3N0XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEyNS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjY6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMjctXHRib29sXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEyOTpjb25maWcgS1ZNX0JPT0szU19IVl9QOV9USU1JTkdcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMzAtXHRib29sIFwmIzM0O0RldGFpbGVkIHRpbWluZyBmb3IgdGhlIFA5IGVudHJ5IHBvaW50XCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE0MS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDhfVElNSU5HXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQzLVx0Ym9vbCBcJiMzNDtEZXRhaWxlZCB0aW1pbmcgZm9yIGh5cGVydmlzb3IgcmVhbC1tb2RlIGNvZGUgKGZvciBQT1dFUjgpXCYjMzQ7XG4tLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1Ni1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU4LVx0Ym9vbCBcJiMzNDtOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXCYjMzQ7IGlmIEVYUEVSVFxuLS1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzEtXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fQk9PSzNTX0hWX1BNVVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE3My1cdHRyaXN0YXRlIFwmIzM0O0h5cGVydmlzb3IgUGVyZiBldmVudHMgZm9yIEtWTSBCb29rM3MtSFZcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTgzLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE4NDpjb25maWcgS1ZNX0JPT0tFX0hWXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg1LVx0Ym9vbFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4Ni1cbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODc6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4OC1cdGJvb2wgXCYjMzQ7RGV0YWlsZWQgZXhpdCB0aW1pbmdcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk3LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE5ODpjb25maWcgS1ZNX0U1MDBWMlxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5OS1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwMHYyIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjEyLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIxMzpjb25maWcgS1ZNX0U1MDBNQ1xuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNC1cdGJvb2wgXCYjMzQ7S1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgRTUwME1DL0U1NTAwL0U2NTAwIHByb2Nlc3NvcnNcJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjI4LVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX01QSUNcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMzAtXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQwLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI0MTpjb25maWcgS1ZNX1hJQ1NcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNDItXHRib29sIFwmIzM0O0tWTSBpbi1rZXJuZWwgWElDUyBlbXVsYXRpb25cJiMzNDtcbi0tXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjUwLVxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjI1MTpjb25maWcgS1ZNX1hJVkVcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTItXHRib29sXG4tLVxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnPTIyPXNvdXJjZSBcJiMzNDthcmNoL3Bvd2VycGMvcGxhdGZvcm1zL21pY3Jvd2F0dC9LY29uZmlnXCYjMzQ7XG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjMtXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWc6MjQ6Y29uZmlnIEtWTV9HVUVTVFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnLTI1LVx0Ym9vbCBcJiMzNDtLVk0gR3Vlc3Qgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWc9MTg9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMTktXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cbmFyY2gvcmlzY3Yva3ZtL0tjb25maWctMjEtXHR0cmlzdGF0ZSBcJiMzNDtLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy0xOC1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzoxOTpjb25maWcgS1ZNXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXHRkZWZfdHJpc3RhdGUgeVxuLS1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cbmFyY2gvczM5MC9rdm0vS2NvbmZpZzo0Nzpjb25maWcgS1ZNX1MzOTBfVUNPTlRST0xcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00OC1cdGJvb2wgXCYjMzQ7VXNlcnNwYWNlIGNvbnRyb2xsZWQgdmlydHVhbCBtYWNoaW5lc1wmIzM0O1xuLS1cbmFyY2gveDg2L0tjb25maWc9ODI2PXNvdXJjZSBcJiMzNDthcmNoL3g4Ni94ZW4vS2NvbmZpZ1wmIzM0O1xuYXJjaC94ODYvS2NvbmZpZy04MjctXG5hcmNoL3g4Ni9LY29uZmlnOjgyODpjb25maWcgS1ZNX0dVRVNUXG5hcmNoL3g4Ni9LY29uZmlnLTgyOS1cdGJvb2wgXCYjMzQ7S1ZNIEd1ZXN0IHN1cHBvcnQgKGluY2x1ZGluZyBrdm1jbG9jaylcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNX1g4NlxuYXJjaC94ODYva3ZtL0tjb25maWctMjEtXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctNTEtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01My1cdHRyaXN0YXRlIFwmIzM0O0tlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6Njk6Y29uZmlnIEtWTV9XRVJST1JcbmFyY2gveDg2L2t2bS9LY29uZmlnLTcwLVx0Ym9vbCBcJiMzNDtDb21waWxlIEtWTSB3aXRoIC1XZXJyb3JcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04Mi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjgzOmNvbmZpZyBLVk1fU1dfUFJPVEVDVEVEX1ZNXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cdGJvb2wgXCYjMzQ7RW5hYmxlIHN1cHBvcnQgZm9yIEtWTSBzb2Z0d2FyZS1wcm90ZWN0ZWQgVk1zXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctOTUtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05Ny1cdHRyaXN0YXRlIFwmIzM0O0tWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcJiMzNDtcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMDc6Y29uZmlnIEtWTV9JTlRFTF9QUk9WRV9WRVxuYXJjaC94ODYva3ZtL0tjb25maWctMTA4LSAgICAgICAgYm9vbCBcJiMzNDtDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1wmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzMtXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzNS1cdGJvb2wgXCYjMzQ7SW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjE0Njpjb25maWcgS1ZNX0FNRFxuYXJjaC94ODYva3ZtL0tjb25maWctMTQ3LVx0dHJpc3RhdGUgXCYjMzQ7S1ZNIGZvciBBTUQgcHJvY2Vzc29ycyBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTU1LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTU2OmNvbmZpZyBLVk1fQU1EX1NFVlxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVx0Ym9vbCBcJiMzNDtBTUQgU2VjdXJlIEVuY3J5cHRlZCBWaXJ0dWFsaXphdGlvbiAoU0VWKSBzdXBwb3J0XCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTcxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzMtXHRib29sIFwmIzM0O0kvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTgyOmNvbmZpZyBLVk1fU01NXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xODMtXHRib29sIFwmIzM0O1N5c3RlbSBNYW5hZ2VtZW50IE1vZGUgZW11bGF0aW9uXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMTkyLVxuYXJjaC94ODYva3ZtL0tjb25maWc6MTkzOmNvbmZpZyBLVk1fSFlQRVJWXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXHRib29sIFwmIzM0O1N1cHBvcnQgZm9yIE1pY3Jvc29mdCBIeXBlci1WIGVtdWxhdGlvblwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwNi1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxuYXJjaC94ODYva3ZtL0tjb25maWctMjA4LVx0Ym9vbCBcJiMzNDtTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVwmIzM0O1xuLS1cbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIxNjpjb25maWcgS1ZNX1BST1ZFX01NVVxuYXJjaC94ODYva3ZtL0tjb25maWctMjE3LVx0Ym9vbCBcJiMzNDtQcm92ZSBLVk0gTU1VIGNvcnJlY3RuZXNzXCYjMzQ7XG4tLVxuYXJjaC94ODYva3ZtL0tjb25maWctMjI4LVxuYXJjaC94ODYva3ZtL0tjb25maWc6MjI5OmNvbmZpZyBLVk1fRVhURVJOQUxfV1JJVEVfVFJBQ0tJTkdcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cdGJvb2xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMS1cbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xuYXJjaC94ODYva3ZtL0tjb25maWctMjMzLVx0aW50IFwmIzM0O01heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcJiMzNDtcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTMtXG52aXJ0L2t2bS9LY29uZmlnOjQ6Y29uZmlnIEtWTV9DT01NT05cbnZpcnQva3ZtL0tjb25maWctNS0gICAgICAgYm9vbFxuLS1cbnZpcnQva3ZtL0tjb25maWc9Mzk9Y29uZmlnIE5FRURfS1ZNX0RJUlRZX1JJTkdfV0lUSF9CSVRNQVBcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTQyLVxudmlydC9rdm0vS2NvbmZpZzo0Mzpjb25maWcgS1ZNX01NSU9cbnZpcnQva3ZtL0tjb25maWctNDQtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNDUtXG52aXJ0L2t2bS9LY29uZmlnOjQ2OmNvbmZpZyBLVk1fQVNZTkNfUEZcbnZpcnQva3ZtL0tjb25maWctNDctICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTQ5LSMgVG9nZ2xlIHRvIHN3aXRjaCBiZXR3ZWVuIGRpcmVjdCBub3RpZmljYXRpb24gYW5kIGJhdGNoIGpvYlxudmlydC9rdm0vS2NvbmZpZzo1MDpjb25maWcgS1ZNX0FTWU5DX1BGX1NZTkNcbnZpcnQva3ZtL0tjb25maWctNTEtICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9LY29uZmlnPTU5PWNvbmZpZyBIQVZFX0tWTV9DUFVfUkVMQVhfSU5URVJDRVBUXG4tLVxudmlydC9rdm0vS2NvbmZpZy02MS1cbnZpcnQva3ZtL0tjb25maWc6NjI6Y29uZmlnIEtWTV9WRklPXG52aXJ0L2t2bS9LY29uZmlnLTYzLSAgICAgICBib29sXG4tLVxudmlydC9rdm0vS2NvbmZpZz02NT1jb25maWcgSEFWRV9LVk1fSU5WQUxJRF9XQUtFVVBTXG4tLVxudmlydC9rdm0vS2NvbmZpZy02Ny1cbnZpcnQva3ZtL0tjb25maWc6Njg6Y29uZmlnIEtWTV9HRU5FUklDX0RJUlRZTE9HX1JFQURfUFJPVEVDVFxudmlydC9rdm0vS2NvbmZpZy02OS0gICAgICAgYm9vbFxudmlydC9rdm0vS2NvbmZpZy03MC1cbnZpcnQva3ZtL0tjb25maWc6NzE6Y29uZmlnIEtWTV9HRU5FUklDX1BSRV9GQVVMVF9NRU1PUllcbnZpcnQva3ZtL0tjb25maWctNzItICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctNzMtXG52aXJ0L2t2bS9LY29uZmlnOjc0OmNvbmZpZyBLVk1fQ09NUEFUXG52aXJ0L2t2bS9LY29uZmlnLTc1LSAgICAgICBkZWZfYm9vbCB5XG4tLVxudmlydC9rdm0vS2NvbmZpZz05MT1jb25maWcgSEFWRV9LVk1fUE1fTk9USUZJRVJcbi0tXG52aXJ0L2t2bS9LY29uZmlnLTkzLVxudmlydC9rdm0vS2NvbmZpZzo5NDpjb25maWcgS1ZNX0dFTkVSSUNfSEFSRFdBUkVfRU5BQkxJTkdcbnZpcnQva3ZtL0tjb25maWctOTUtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctOTYtXG52aXJ0L2t2bS9LY29uZmlnOjk3OmNvbmZpZyBLVk1fRUxJREVfVExCX0ZMVVNIX0lGX1lPVU5HXG52aXJ0L2t2bS9LY29uZmlnLTk4LSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTk5LVxudmlydC9rdm0vS2NvbmZpZzoxMDA6Y29uZmlnIEtWTV9NTVVfTE9DS0xFU1NfQUdJTkdcbnZpcnQva3ZtL0tjb25maWctMTAxLSAgICAgICBib29sXG52aXJ0L2t2bS9LY29uZmlnLTEwMi1cbnZpcnQva3ZtL0tjb25maWc6MTAzOmNvbmZpZyBLVk1fR0VORVJJQ19NRU1PUllfQVRUUklCVVRFU1xudmlydC9rdm0vS2NvbmZpZy0xMDQtICAgICAgIGJvb2xcbnZpcnQva3ZtL0tjb25maWctMTA1LVxudmlydC9rdm0vS2NvbmZpZzoxMDY6Y29uZmlnIEtWTV9HVUVTVF9NRU1GRFxudmlydC9rdm0vS2NvbmZpZy0xMDctICAgICAgIHNlbGVjdCBYQVJSQVlfTVVMVElcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTI2MTEKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiA0NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gQ29uZmlndXJhdGlvbiBEZWVwIERpdmUqKgoKT2theSwgc28gSSBuZWVkIHRvIGNvbmZpZ3VyZSBLVk0uIEJ1dCB3YWl0IGEgbWludXRlLCBJIHJlbWVtYmVyIHNlZWluZyBgdmlydC9rdm0vcGZuY2FjaGUuY2Agc29tZXdoZXJlIGluIHRoZSBrZXJuZWwgc291cmNlLCBhbmQgSSYjMzk7bSBwcmV0dHkgc3VyZSB0aGF0IGZpbGUgaXMgb25seSBjb21waWxlZCBpZiBLVk0gaXMgZW5hYmxlZC4gVGhhdCByaW5ncyBhIGJlbGwuLi4gTGV0JiMzOTtzIHVzZSB0aGF0IGFzIGEgY2x1ZSBhbmQgaHVudCBmb3IgdGhlIEtWTSBjb25maWd1cmF0aW9uLiBNeSBpbnR1aXRpb24gc3VnZ2VzdHMgdGhlIGB2aXJ0L2t2bS9NYWtlZmlsZWAgaXMgdGhlIHBsYWNlIHRvIHN0YXJ0LiBMZXQmIzM5O3Mgc2VlIGlmIG15IG1lbW9yeSBpcyBhY2N1cmF0ZS4gSSYjMzk7bGwgY2hlY2sgaXQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGZuY2FjaGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEyODE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMTQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aGUgdGhvdWdodCBwcm9jZXNzOgoKKipEaXZpbmcgaW50byB0aGUgS1ZNIE1ha2VmaWxlKioKCkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBLVk0gbW9kdWxlIGlzIGJ1aWx0LCBzbyB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGB2aXJ0L2t2bS9NYWtlZmlsZWAuIExldCYjMzk7cyBzZWUgd2hhdCBzZWNyZXRzIHRoaXMgZmlsZSBob2xkcy4gSXQmIzM5O3MgdGhlIGNlbnRyYWwgcGxheWJvb2sgZm9yIGhvdyB0aGUgS1ZNIGNvbXBvbmVudHMgYXJlIGNvbXBpbGVkIGFuZCBsaW5rZWQsIHNvIGl0JiMzOTtzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgcHJvY2Vzcy4gSSYjMzk7bSBleHBlY3RpbmcgdG8gZmluZCB0aGUgZGVwZW5kZW5jeSB0cmVlLCBpbmNsdWRlIHBhdGhzLCBjb21waWxhdGlvbiBmbGFncywgYW5kIGxpbmtpbmcgcnVsZXMgdGhhdCBkZWZpbmUgdGhlIEtWTSYjMzk7cyBidWlsZCBwcm9jZXNzLiBUaGlzIGZpbGUgd2lsbCB0ZWxsIG1lIHdoaWNoIHNvdXJjZSBmaWxlcyBhcmUgaW52b2x2ZWQsIHdoaWNoIG9iamVjdCBmaWxlcyB0aGV5IGdlbmVyYXRlLCBhbmQgaG93IHRob3NlIG9iamVjdCBmaWxlcyBjb21lIHRvZ2V0aGVyIHRvIGNyZWF0ZSB0aGUgZmluYWwgS1ZNIG1vZHVsZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT50aGUgZmlsZSBkb2VzIG5vdCBleGlzdDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDt2aXJ0L2t2bS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O3RoZSBmaWxlIGRvZXMgbm90IGV4aXN0JiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzA0NAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDI3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3MsIGFzIHJlcXVlc3RlZDoKCioqTmF2aWdhdGluZyB0aGUgVmlydHVhbGl6YXRpb24gTGFuZHNjYXBlKioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgYHZpcnQva3ZtL2Agd2FzIGEgc3RhbmRhcmQgZGlyZWN0b3J5LCBidXQgdGhlIHN5c3RlbSBpcyB0ZWxsaW5nIG1lIGl0JiMzOTtzIG5vdC4gVGhhdOKAmXMgdW51c3VhbCwgYW5kIGRlZmluaXRlbHkgd29ydGggYSBkb3VibGUtY2hlY2suIEkgbmVlZCB0byB2ZXJpZnkgd2hhdCYjMzk7cyBhY3R1YWxseSB0aGVyZS4gTGV0IG1lIHNlZS4uLiBJIG5lZWQgdG8gZXhhbWluZSB0aGUgY29udGVudHMgb2YgYHZpcnQva3ZtL2AgdG8gdW5kZXJzdGFuZCB3aGF0JiMzOTtzICpyZWFsbHkqIHByZXNlbnQgYXQgdGhhdCBsb2NhdGlvbiwgb3IgaWYgaXQgZG9lc24mIzM5O3QgZXhpc3QgYXQgYWxsLCB3aGljaCB3b3VsZCBiZSBqdXN0IGFzIGluZm9ybWF0aXZlLiBJIGhhdmUgdG8gcmVzb2x2ZSB0aGlzIHBhdGgmIzM5O3Mgc3RhdHVzIGJlZm9yZSBJIGNhbiBjb250aW51ZSB3aXRoIHdoYXRldmVyIEkgd2FzIGRvaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmNvZGVzZWFyY2gtZGlyLWluZGV4PC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtEaXImIzM0OzogJiMzNDt2aXJ0L2t2bS8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZXMmIzM0OzogWwogICAgJiMzNDthc3luY19wZi5jJiMzNDssCiAgICAmIzM0O2FzeW5jX3BmLmgmIzM0OywKICAgICYjMzQ7YmluYXJ5X3N0YXRzLmMmIzM0OywKICAgICYjMzQ7Y29hbGVzY2VkX21taW8uYyYjMzQ7LAogICAgJiMzNDtjb2FsZXNjZWRfbW1pby5oJiMzNDssCiAgICAmIzM0O2RpcnR5X3JpbmcuYyYjMzQ7LAogICAgJiMzNDtldmVudGZkLmMmIzM0OywKICAgICYjMzQ7Z3Vlc3RfbWVtZmQuYyYjMzQ7LAogICAgJiMzNDtpcnFjaGlwLmMmIzM0OywKICAgICYjMzQ7a3ZtX21haW4uYyYjMzQ7LAogICAgJiMzNDtrdm1fbW0uaCYjMzQ7LAogICAgJiMzNDtwZm5jYWNoZS5jJiMzNDssCiAgICAmIzM0O3ZmaW8uYyYjMzQ7LAogICAgJiMzNDt2ZmlvLmgmIzM0OwogIF0sCiAgJiMzNDtTdWJkaXJzJiMzNDs6IG51bGwKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzM3NQoJCQkJCQkJb3V0cHV0OiAzMAoJCQkJCQkJdGhvdWdodHM6IDQ4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk5hdmlnYXRpbmcgdGhlIEtWTSBCdWlsZCBQcm9jZXNzKioKCk9rYXksIHNvIEkmIzM5O20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyBkYW1uIG1ha2VmaWxlIGxpdmVzIGZvciB0aGUgS1ZNIHZpcnR1YWxpemF0aW9uIG1vZHVsZS4gTXkgaW5pdGlhbCBodW5jaCB3YXMgdGhhdCBpdCB3b3VsZCBiZSBpbiBgdmlydC9rdm0vYCwgYnV0IEkmIzM5O20gZHJhd2luZyBhIGJsYW5rIHRoZXJlLiBQZXJoYXBzIGl0JiMzOTtzIG5hbWVkIHNvbWV0aGluZyBsZXNzIG9idmlvdXMsIGxpa2UgYGt2bS5ta2A/IE5vLCBoYW5nIG9uLCB0aGF0IGRpcmVjdG9yeSYjMzk7cyBzdHJ1Y3R1cmUganVzdCBkb2VzbiYjMzk7dCBmZWVsIHJpZ2h0IGZvciBhIHRvcC1sZXZlbCBtYWtlZmlsZS4gTGV0JiMzOTtzIGJhY2t0cmFjayBhbmQgc2VlIGlmIGl0JiMzOTtzIGdvdCBhIG1vcmUgZ2VuZXJhbCBtYWtlZmlsZSBpbiB0aGUgYHZpcnQvYCBkaXJlY3RvcnkgaXRzZWxmLiBZZXAsIHRpbWUgdG8gY2hlY2sgYHZpcnQvTWFrZWZpbGVgLiBUaGF0JiMzOTtzIHdoZXJlIGl0IGhhcyB0byBiZSwgbGV0JiMzOTtzIHNlZSB3aGF0JiMzOTtzIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O3ZpcnQvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDEwMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0b2JqLXlcdCYjNDM7PSBsaWIvXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEzNjUxCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqVHJhY2luZyB0aGUgQ29tcGlsYXRpb24gb2YgYHZpcnQva3ZtL3BmbmNhY2hlLmNgKioKCk9rYXksIHNvIEkgbmVlZCB0byBmaWd1cmUgb3V0IHdoZXJlIHRoZSBgdmlydC9rdm0vcGZuY2FjaGUuY2AgZmlsZSBpcyBiZWluZyBjb21waWxlZCB3aXRoaW4gdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBNeSBpbnN0aW5jdCB0ZWxscyBtZSB0byBzdGFydCBkaWdnaW5nIHRocm91Z2ggdGhlIEtWTS1zcGVjaWZpYyBhcmVhcy4gRmlyc3QsIEkgc2hvdWxkIHplcm8gaW4gb24gdGhlIHJlbGV2YW50IGBNYWtlZmlsZWAuIFRoZSBtb3N0IGxpa2VseSBwbGFjZSB0byBzdGFydCBpcyB3aXRoaW4gdGhlIHg4NiBhcmNoaXRlY3R1cmUgZGlyZWN0b3J5LCBnaXZlbiBpdHMgcHJvbWluZW5jZSBpbiBLVk0uIExldCYjMzk7cyBzZWUuLi4gSSYjMzk7bGwgY2hlY2sgYGFyY2gveDg2L2t2bS9NYWtlZmlsZWAuIEhvcGVmdWxseSwgdGhhdCB3aWxsIGNvbnRhaW4gdGhlIG5lY2Vzc2FyeSBkaXJlY3RpdmVzIG9yIGluY2x1ZGVzIHRvIHJldmVhbCB0aGUgY29tcGlsYXRpb24gdW5pdCYjMzk7cyBpbmNsdXNpb24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7cGZuY2FjaGUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDthcmNoL3g4Ni9rdm0vTWFrZWZpbGUmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7ZXJyb3ImIzM0OzogJiMzNDtubyBtYXRjaGVzJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMzg3NAoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIGEgc3VtbWFyeSBvZiBteSB0aG91Z2h0IHByb2Nlc3M6CgoqKkRpdmluZyBpbnRvIHRoZSBLVk0geDg2IE1ha2VmaWxlKioKCkFscmlnaHQsIHRpbWUgdG8gZGlnIGluLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBzb21ldGhpbmcgcmVsYXRlZCB0byB0aGUgS1ZNIGFyY2hpdGVjdHVyZSBvbiB4ODYsIHNvIG15IGZpcnN0IHN0ZXAgaXMgdG8gZ2V0IG15IGJlYXJpbmdzLiBUaGUgbG9naWNhbCBwbGFjZSB0byBzdGFydCBpcyB0aGUgYGFyY2gveDg2L2t2bS9NYWtlZmlsZWAuIFRoYXQgZmlsZSBpcyB0aGUgY2VudHJhbCBwb2ludCBmb3IgYnVpbGRpbmcgdGhlIEtWTSBjb21wb25lbnRzIHRoYXQgYXJlIHNwZWNpZmljIHRvIHRoZSB4ODYgYXJjaGl0ZWN0dXJlLCBpdCYjMzk7cyB3aGVyZSB0aGUgY29yZSBsb2dpYyB1c3VhbGx5IHJlc2lkZXMuIEkmIzM5O20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJlYWQgdGhyb3VnaCBpdC4gSSYjMzk7bSBsb29raW5nIGZvciB0aGUgcmVsZXZhbnQgZGVwZW5kZW5jaWVzIGFuZCBidWlsZCBpbnN0cnVjdGlvbnMuIFRoYXQgZmlsZSBpcyBrZXkgdG8gcGllY2luZyB0b2dldGhlciB3aGF0ZXZlciBpc3N1ZSBpcyBhdCBoYW5kLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2FyY2gveDg2L2t2bS9NYWtlZmlsZSYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMTAwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0Y2NmbGFncy15ICYjNDM7PSAtSSAkKHNyY3RyZWUpL2FyY2gveDg2L2t2bVxuICAgNDpcdGNjZmxhZ3MtJChDT05GSUdfS1ZNX1dFUlJPUikgJiM0Mzs9IC1XZXJyb3JcbiAgIDU6XHRcbiAgIDY6XHRpbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtXG4gICA3Olx0XG4gICA4Olx0a3ZtLXlcdFx0XHQmIzQzOz0geDg2Lm8gZW11bGF0ZS5vIGlycS5vIGxhcGljLm8gY3B1aWQubyBwbXUubyBtdHJyLm8gXFxcbiAgIDk6XHRcdFx0XHQgICBkZWJ1Z2ZzLm8gbW11L21tdS5vIG1tdS9wYWdlX3RyYWNrLm8gbW11L3NwdGUub1xuICAxMDpcdFxuICAxMTpcdGt2bS0kKENPTkZJR19YODZfNjQpICYjNDM7PSBtbXUvdGRwX2l0ZXIubyBtbXUvdGRwX21tdS5vXG4gIDEyOlx0a3ZtLSQoQ09ORklHX0tWTV9JT0FQSUMpICYjNDM7PSBpODI1OS5vIGk4MjU0Lm8gaW9hcGljLm9cbiAgMTM6XHRrdm0tJChDT05GSUdfS1ZNX0hZUEVSVikgJiM0Mzs9IGh5cGVydi5vXG4gIDE0Olx0a3ZtLSQoQ09ORklHX0tWTV9YRU4pXHQmIzQzOz0geGVuLm9cbiAgMTU6XHRrdm0tJChDT05GSUdfS1ZNX1NNTSlcdCYjNDM7PSBzbW0ub1xuICAxNjpcdFxuICAxNzpcdGt2bS1pbnRlbC15XHRcdCYjNDM7PSB2bXgvdm14Lm8gdm14L3ZtZW50ZXIubyB2bXgvcG11X2ludGVsLm8gdm14L3ZtY3MxMi5vIFxcXG4gIDE4Olx0XHRcdFx0ICAgdm14L25lc3RlZC5vIHZteC9wb3N0ZWRfaW50ci5vIHZteC9tYWluLm9cbiAgMTk6XHRcbiAgMjA6XHRrdm0taW50ZWwtJChDT05GSUdfWDg2X1NHWF9LVk0pXHQmIzQzOz0gdm14L3NneC5vXG4gIDIxOlx0a3ZtLWludGVsLSQoQ09ORklHX0tWTV9IWVBFUlYpXHQmIzQzOz0gdm14L2h5cGVydi5vIHZteC9oeXBlcnZfZXZtY3Mub1xuICAyMjpcdGt2bS1pbnRlbC0kKENPTkZJR19LVk1fSU5URUxfVERYKVx0JiM0Mzs9IHZteC90ZHgub1xuICAyMzpcdFxuICAyNDpcdGt2bS1hbWQteVx0XHQmIzQzOz0gc3ZtL3N2bS5vIHN2bS92bWVudGVyLm8gc3ZtL3BtdS5vIHN2bS9uZXN0ZWQubyBzdm0vYXZpYy5vXG4gIDI1Olx0XG4gIDI2Olx0a3ZtLWFtZC0kKENPTkZJR19LVk1fQU1EX1NFVilcdCYjNDM7PSBzdm0vc2V2Lm9cbiAgMjc6XHRrdm0tYW1kLSQoQ09ORklHX0tWTV9IWVBFUlYpXHQmIzQzOz0gc3ZtL2h5cGVydi5vXG4gIDI4Olx0XG4gIDI5Olx0aWZkZWYgQ09ORklHX0hZUEVSVlxuICAzMDpcdGt2bS15XHRcdFx0JiM0Mzs9IGt2bV9vbmh5cGVydi5vXG4gIDMxOlx0a3ZtLWludGVsLXlcdFx0JiM0Mzs9IHZteC92bXhfb25oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cbiAgMzI6XHRrdm0tYW1kLXlcdFx0JiM0Mzs9IHN2bS9zdm1fb25oeXBlcnYub1xuICAzMzpcdGVuZGlmXG4gIDM0Olx0XG4gIDM1Olx0b2JqLSQoQ09ORklHX0tWTV9YODYpXHQmIzQzOz0ga3ZtLm9cbiAgMzY6XHRvYmotJChDT05GSUdfS1ZNX0lOVEVMKVx0JiM0Mzs9IGt2bS1pbnRlbC5vXG4gIDM3Olx0b2JqLSQoQ09ORklHX0tWTV9BTUQpXHQmIzQzOz0ga3ZtLWFtZC5vXG4gIDM4Olx0XG4gIDM5Olx0QUZMQUdTX3N2bS92bWVudGVyLm8gICAgOj0gLWlxdW90ZSAkKG9iailcbiAgNDA6XHQkKG9iaikvc3ZtL3ZtZW50ZXIubzogJChvYmopL2t2bS1hc20tb2Zmc2V0cy5oXG4gIDQxOlx0XG4gIDQyOlx0QUZMQUdTX3ZteC92bWVudGVyLm8gICAgOj0gLWlxdW90ZSAkKG9iailcbiAgNDM6XHQkKG9iaikvdm14L3ZtZW50ZXIubzogJChvYmopL2t2bS1hc20tb2Zmc2V0cy5oXG4gIDQ0Olx0XG4gIDQ1Olx0JChvYmopL2t2bS1hc20tb2Zmc2V0cy5oOiAkKG9iaikva3ZtLWFzbS1vZmZzZXRzLnMgRk9SQ0VcbiAgNDY6XHRcdCQoY2FsbCBmaWxlY2hrLG9mZnNldHMsX19LVk1fQVNNX09GRlNFVFNfSF9fKVxuICA0NzpcdFxuICA0ODpcdHRhcmdldHMgJiM0Mzs9IGt2bS1hc20tb2Zmc2V0cy5zXG4gIDQ5Olx0Y2xlYW4tZmlsZXMgJiM0Mzs9IGt2bS1hc20tb2Zmc2V0cy5oXG4gIDUwOlx0XG4gIDUxOlx0XG4gIDUyOlx0IyBGYWlsIHRoZSBidWlsZCBpZiB0aGVyZSBpcyB1bmV4cGVjdGVkIEVYUE9SVF9TWU1CT0xfR1BMIChvciBFWFBPUlRfU1lNQk9MKVxuICA1MzpcdCMgdXNhZ2UuICBBbGwgS1ZNLWludGVybmFsIGV4cG9ydHMgc2hvdWxkIHVzZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwuXG4gIDU0Olx0IyBPbmx5IGEgaGFuZGZ1bCBvZiBleHBvcnRzIGludGVuZGVkIGZvciBvdGhlciBtb2R1bGVzIChWRklPLCBLVk1HVCkgc2hvdWxkXG4gIDU1Olx0IyB1c2UgRVhQT1JUX1NZTUJPTF9HUEwsIGFuZCBFWFBPUlRfU1lNQk9MIHNob3VsZCBuZXZlciBiZSB1c2VkLlxuICA1NjpcdGlmZGVmIENPTkZJR19LVk1fWDg2XG4gIDU3Olx0IyBTZWFyY2ggcmVjdXJzaXZlbHkgZm9yIHdob2xlIHdvcmRzIGFuZCBwcmludCBsaW5lIG51bWJlcnMuICBGaWx0ZXIgb3V0IHRoZVxuICA1ODpcdCMgYWxsb3dlZCBzZXQgb2YgZXhwb3J0cywgaS5lLiB0aG9zZSB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgdXNhZ2UuXG4gIDU5Olx0ZXhwb3J0c19ncmVwX3RyYWlsZXIgOj0gLS1pbmNsdWRlPSYjMzk7Ki5bY2hdJiMzOTsgLW5ydyAkKHNyY3RyZWUpL3ZpcnQva3ZtICQoc3JjdHJlZSkvYXJjaC94ODYva3ZtIHwgXFxcbiAgNjA6XHRcdFx0XHRncmVwIC12IC1lIGt2bV9wYWdlX3RyYWNrX3JlZ2lzdGVyX25vdGlmaWVyIFxcXG4gIDYxOlx0XHRcdFx0XHQtZSBrdm1fcGFnZV90cmFja191bnJlZ2lzdGVyX25vdGlmaWVyIFxcXG4gIDYyOlx0XHRcdFx0XHQtZSBrdm1fd3JpdGVfdHJhY2tfYWRkX2dmbiBcXFxuICA2MzpcdFx0XHRcdFx0LWUga3ZtX3dyaXRlX3RyYWNrX3JlbW92ZV9nZm4gXFxcbiAgNjQ6XHRcdFx0XHRcdC1lIGt2bV9nZXRfa3ZtIFxcXG4gIDY1Olx0XHRcdFx0XHQtZSBrdm1fZ2V0X2t2bV9zYWZlIFxcXG4gIDY2Olx0XHRcdFx0XHQtZSBrdm1fcHV0X2t2bVxuICA2NzpcdFxuICA2ODpcdCMgRm9yY2UgZ3JlcCB0byBlbWl0IGEgZ29vZnkgZ3JvdXAgc2VwYXJhdG9yIHRoYXQgY2FuIGluIHR1cm4gYmUgcmVwbGFjZWQgd2l0aFxuICA2OTpcdCMgdGhlIGFib3ZlIG5ld2xpbmUgbWFjcm8gKG5ld2xpbmVzIGluIE1ha2UgYXJlIGEgbmlnaHRtYXJlKS4gIE5vdGUsIGdyZXAgb25seVxuICA3MDpcdCMgcHJpbnRzIHRoZSBncm91cCBzZXBhcmF0b3Igd2hlbiBOIGxpbmVzIG9mIGNvbnRleHQgYXJlIHJlcXVlc3RlZCB2aWEgLUMsXG4gIDcxOlx0IyBhLmsuYS4gLS1OVU0uICBTaW1wbHkgcmVxdWVzdCB6ZXJvIGxpbmVzLiAgUHJpbnQgdGhlIHNlcGFyYXRvciBvbmx5IGFmdGVyXG4gIDcyOlx0IyBmaWx0ZXJpbmcgb3V0IGV4cGVjdGVkIGV4cG9ydHMgdG8gYXZvaWQgZXh0cmEgbmV3bGluZXMgaW4gdGhlIGVycm9yIG1lc3NhZ2UuXG4gIDczOlx0ZGVmaW5lIGdldF9rdm1fZXhwb3J0c1xuICA3NDpcdCQoc2hlbGwgZ3JlcCBcJiMzNDskKDEpXCYjMzQ7IC1DMCAkKGV4cG9ydHNfZ3JlcF90cmFpbGVyKSB8IGdyZXAgXCYjMzQ7JCgxKVwmIzM0OyAtQzAgLS1ncm91cC1zZXBhcmF0b3I9XCYjMzQ7IVNFUCFcJiMzNDspXG4gIDc1Olx0ZW5kZWZcbiAgNzY6XHRcbiAgNzc6XHRkZWZpbmUgY2hlY2tfa3ZtX2V4cG9ydHNcbiAgNzg6XHRucl9rdm1fZXhwb3J0cyA6PSAkKHNoZWxsIGdyZXAgXCYjMzQ7JCgxKVwmIzM0OyAkKGV4cG9ydHNfZ3JlcF90cmFpbGVyKSB8IHdjIC1sKVxuICA3OTpcdFxuICA4MDpcdGlmbmVxICgwLCQkKG5yX2t2bV9leHBvcnRzKSlcbiAgODE6XHQkJChlcnJvciBFUlJPUiAqKipcXFxuICA4MjpcdCQkKG5ld2xpbmUpZm91bmQgJCQobnJfa3ZtX2V4cG9ydHMpIHVud2FudGVkIG9jY3VycmVuY2VzIG9mICQoMSk6XFxcbiAgODM6XHQkJChuZXdsaW5lKSAgJChzdWJzdCAhU0VQISwkJChuZXdsaW5lKSAsJChjYWxsIGdldF9rdm1fZXhwb3J0cywkKDEpKSlcXFxuICA4NDpcdCQkKG5ld2xpbmUpaW4gZGlyZWN0b3JpZXM6XFxcbiAgODU6XHQkJChuZXdsaW5lKSAgJChzcmN0cmVlKS9hcmNoL3g4Ni9rdm1cXFxuICA4NjpcdCQkKG5ld2xpbmUpICAkKHNyY3RyZWUpL3ZpcnQva3ZtXFxcbiAgODc6XHQkJChuZXdsaW5lKVVzZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwsIG5vdCAkKDEpKVxuICA4ODpcdGVuZGlmICMgbnJfa3ZtX2V4cG9ydHMgIT0gMFxuICA4OTpcdHVuZGVmaW5lIG5yX2t2bV9leHBvcnRzXG4gIDkwOlx0ZW5kZWYgIyBjaGVja19rdm1fZXhwb3J0c1xuICA5MTpcdFxuICA5MjpcdCQoZXZhbCAkKGNhbGwgY2hlY2tfa3ZtX2V4cG9ydHMsRVhQT1JUX1NZTUJPTF9HUEwpKVxuICA5MzpcdCQoZXZhbCAkKGNhbGwgY2hlY2tfa3ZtX2V4cG9ydHMsRVhQT1JUX1NZTUJPTCkpXG4gIDk0Olx0XG4gIDk1Olx0dW5kZWZpbmUgY2hlY2tfa3ZtX2V4cG9ydHNcbiAgOTY6XHR1bmRlZmluZSBnZXRfa3ZtX2V4cG9ydHNcbiAgOTc6XHR1bmRlZmluZSBleHBvcnRzX2dyZXBfdHJhaWxlclxuICA5ODpcdGVuZGlmICMgQ09ORklHX0tWTV9YODZcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTYwNDEKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAzNwoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipEaXZpbmcgaW50byB0aGUgS1ZNIEJ1aWxkIFByb2Nlc3MqKgoKUmlnaHQsIHNvIEkgc2VlIGEgY3J1Y2lhbCBgaW5jbHVkZWAgc3RhdGVtZW50IGluIHBsYXkgaGVyZTogYGluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1gLiBUaGF0IGltbWVkaWF0ZWx5IHBpcXVlcyBteSBpbnRlcmVzdC4gSSBrbm93IHdoYXQmIzM5O3MgY29taW5nLCB0aGlzIG1lYW5zIHdlJiMzOTtyZSBkZWFsaW5nIHdpdGggdGhlIGNvcmUgS1ZNIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIFRpbWUgdG8gdGFrZSBhIGNsb3NlciBsb29rIGF0IGB2aXJ0L2t2bS9NYWtlZmlsZS5rdm1gLiBJJiMzOTtsbCB3YW50IHRvIHF1aWNrbHkgdW5kZXJzdGFuZCBob3cgdGhlIEtWTSBtb2R1bGVzIGFyZSBjb21waWxlZCwgYW55IHBsYXRmb3JtLXNwZWNpZmljIGRlcGVuZGVuY2llcyB0aGV5IGhhdmUsIGFuZCB0aGUgb3ZlcmFsbCBzdHJ1Y3R1cmUgb2YgdGhlIEtWTSBidWlsZCBzeXN0ZW0gd2l0aGluIHRoZSBrZXJuZWwuIEkmIzM5O2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBjdXN0b21pemF0aW9uIHBvaW50cywgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIGFyY2hpdGVjdHVyZSBvciBmZWF0dXJlIGZsYWdzLCBhbmQgaG93IHRoaXMgcGFydGljdWxhciBNYWtlZmlsZSBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBkb2VzLCBhbmQgaG93IHdlbGwgaXQgaXMgZGVzaWduZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dmlydC9rdm0vTWFrZWZpbGUua3ZtJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBNYWtlZmlsZSBmb3IgS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSBtb2R1bGVcbiAgIDQ6XHQjXG4gICA1Olx0XG4gICA2Olx0S1ZNID89IC4uLy4uLy4uL3ZpcnQva3ZtXG4gICA3Olx0XG4gICA4Olx0a3ZtLXkgOj0gJChLVk0pL2t2bV9tYWluLm8gJChLVk0pL2V2ZW50ZmQubyAkKEtWTSkvYmluYXJ5X3N0YXRzLm9cbiAgIDk6XHRrdm0tJChDT05GSUdfS1ZNX1ZGSU8pICYjNDM7PSAkKEtWTSkvdmZpby5vXG4gIDEwOlx0a3ZtLSQoQ09ORklHX0tWTV9NTUlPKSAmIzQzOz0gJChLVk0pL2NvYWxlc2NlZF9tbWlvLm9cbiAgMTE6XHRrdm0tJChDT05GSUdfS1ZNX0FTWU5DX1BGKSAmIzQzOz0gJChLVk0pL2FzeW5jX3BmLm9cbiAgMTI6XHRrdm0tJChDT05GSUdfSEFWRV9LVk1fSVJRX1JPVVRJTkcpICYjNDM7PSAkKEtWTSkvaXJxY2hpcC5vXG4gIDEzOlx0a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX0RJUlRZX1JJTkcpICYjNDM7PSAkKEtWTSkvZGlydHlfcmluZy5vXG4gIDE0Olx0a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX1BGTkNBQ0hFKSAmIzQzOz0gJChLVk0pL3BmbmNhY2hlLm9cbiAgMTU6XHRrdm0tJChDT05GSUdfS1ZNX0dVRVNUX01FTUZEKSAmIzQzOz0gJChLVk0pL2d1ZXN0X21lbWZkLm9cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTY2NDcKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAzOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgYW4gZXhwZXJ0JiMzOTtzIGludGVybmFsIG1vbm9sb2d1ZToKCioqSW52ZXN0aWdhdGluZyBgQ09ORklHX0hBVkVfS1ZNX1BGTkNBQ0hFYCYjMzk7cyBEZXBlbmRlbmNpZXMqKgoKQWxyaWdodCwgc28gd2UmIzM5O3JlIGRlYWxpbmcgd2l0aCBgQ09ORklHX0hBVkVfS1ZNX1BGTkNBQ0hFYC4gVGhhdCBmbGFnIGlzIGNyaXRpY2FsLCBJIG5lZWQgdG8gdW5kZXJzdGFuZCBpdHMgaW1wbGljYXRpb25zIGZvciB0aGUgY29kZS4gIE15IGZpcnN0IHN0ZXAgaXMgY2xlYXI6IEkgbmVlZCB0byBwaW5wb2ludCB3aGVyZSBhbmQgaG93IGBIQVZFX0tWTV9QRk5DQUNIRWAgaXMgYWN0dWFsbHkgKmRlZmluZWQqIGFuZCwgY3JpdGljYWxseSwgKnNlbGVjdGVkKi4gSSYjMzk7bSBpbnRlcmVzdGVkIGluIHRoZSBjb25maWd1cmF0aW9uIGxvZ2ljLCB0aGUgZGVwZW5kZW5jaWVzLCBhbmQgdGhlIGFyY2hpdGVjdHVyZSBjb25zdHJhaW50cyBzdXJyb3VuZGluZyBpdC4gVGhpcyBsaWtlbHkgaW52b2x2ZXMgZGl2aW5nIGludG8gdGhlIEtjb25maWcgZmlsZXMsIGV4cGxvcmluZyBhbnkgcmVsYXRlZCBNYWtlZmlsZXMsIGFuZCBsb29raW5nIGZvciBvdGhlciBjb25maWcgb3B0aW9ucyB0aGF0IG1pZ2h0IGluZmx1ZW5jZSBvciBkZXBlbmQgb24gaXQuICBJJiMzOTttIGV4cGVjdGluZyB0byB1bmNvdmVyIGNvbmRpdGlvbmFsIHNlbGVjdGlvbnMgYW5kIHBvdGVudGlhbCBwaXRmYWxscyB0aGF0IG1pZ2h0IGltcGFjdCBwb3J0YWJpbGl0eSBvciBwZXJmb3JtYW5jZS4gR290dGEgZ2V0IHRvIHRoZSByb290IG9mIGl0cyBiZWhhdmlvci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7SEFWRV9LVk1fUEZOQ0FDSEUmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7YXJjaC94ODYva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTV9YODZcbi0tXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yNS1cdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyNjpcdHNlbGVjdCBIQVZFX0tWTV9QRk5DQUNIRVxuYXJjaC94ODYva3ZtL0tjb25maWctMjctXHRzZWxlY3QgSEFWRV9LVk1fRElSVFlfUklOR19UU09cbi0tXG52aXJ0L2t2bS9LY29uZmlnPTQ9Y29uZmlnIEtWTV9DT01NT05cbi0tXG52aXJ0L2t2bS9LY29uZmlnLTEwLVxudmlydC9rdm0vS2NvbmZpZzoxMTpjb25maWcgSEFWRV9LVk1fUEZOQ0FDSEVcbnZpcnQva3ZtL0tjb25maWctMTItICAgICAgIGJvb2xcbi0tXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm09MTM9a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX0RJUlRZX1JJTkcpICYjNDM7PSAkKEtWTSkvZGlydHlfcmluZy5vXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm06MTQ6a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX1BGTkNBQ0hFKSAmIzQzOz0gJChLVk0pL3BmbmNhY2hlLm9cbnZpcnQva3ZtL01ha2VmaWxlLmt2bS0xNS1rdm0tJChDT05GSUdfS1ZNX0dVRVNUX01FTUZEKSAmIzQzOz0gJChLVk0pL2d1ZXN0X21lbWZkLm9cbi0tXG52aXJ0L2t2bS9rdm1fbW0uaD01OT1rdm1fcGZuX3QgaHZhX3RvX3BmbihzdHJ1Y3Qga3ZtX2ZvbGxvd19wZm4gKmtmcCk7XG52aXJ0L2t2bS9rdm1fbW0uaC02MC1cbnZpcnQva3ZtL2t2bV9tbS5oOjYxOiNpZmRlZiBDT05GSUdfSEFWRV9LVk1fUEZOQ0FDSEVcbnZpcnQva3ZtL2t2bV9tbS5oLTYyLXZvaWQgZ2ZuX3RvX3Bmbl9jYWNoZV9pbnZhbGlkYXRlX3N0YXJ0KHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbW0uaD02Nj1zdGF0aWMgaW5saW5lIHZvaWQgZ2ZuX3RvX3Bmbl9jYWNoZV9pbnZhbGlkYXRlX3N0YXJ0KHN0cnVjdCBrdm0gKmt2bSxcbi0tXG52aXJ0L2t2bS9rdm1fbW0uaC03MC19XG52aXJ0L2t2bS9rdm1fbW0uaDo3MTojZW5kaWYgLyogSEFWRV9LVk1fUEZOQ0FDSEUgKi9cbnZpcnQva3ZtL2t2bV9tbS5oLTcyLVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI3LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxNzQ0NgoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDE0OQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gQ29uZmlndXJhdGlvbiBSZXZpZXcqKgoKT2theSwgc28gYEhBVkVfS1ZNX1BGTkNBQ0hFYCBpcyBhdXRvbWF0aWNhbGx5IGNob3NlbiB3aGVuIGBLVk1fWDg2YCBpcyBzZWxlY3RlZC4gVGhhdCBtZWFucywgYXQgdGhlIHZlcnkgbGVhc3QsIGVuYWJsaW5nIGBLVk1gIGlzIGVub3VnaCwgYW5kIHNwZWNpZmljYWxseSBzbyBvbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSSYjMzk7bGwgZGVmaW5pdGVseSBhZGQgYEtWTWAgdG8gdGhlIGBFbmFibGVDb25maWdzYCBsaXN0LiBObyBuZWVkIHRvIG92ZXJ0aGluayBpdCB0aGVyZS4KCk5vdywgbGV0JiMzOTtzIGNpcmNsZSBiYWNrIHRvIHRob3NlIEdsb2JhbCBQYWdlIENhY2hlIHN5bWJvbHMgSSB3YXMgbG9va2luZyBhdDogYGt2bV9ncGNfcmVmcmVzaGAsIGBrdm1fZ3BjX2FjdGl2YXRlYCwgYW5kIGBrdm1fZ3BjX2FjdGl2YXRlX2h2YWAuIEhvbGQgb24gYSBtaW51dGXigKYgSSBzZWUgdGhhdCBgX19rdm1fZ3BjX3JlZnJlc2hgIGlzICpzdGF0aWMqLiBUaGF0IG1lYW5zIGl0JiMzOTtzIGludGVybmFsIHRvIHRoZSBtb2R1bGUgYW5kIG5vdCBleHBvcnRlZC4gU28sIHRoZSBmdW5jdGlvbiBJJiMzOTttIGFjdHVhbGx5IGludGVyZXN0ZWQgaW4gaXMgdGhlIG5vbi1zdGF0aWMgd3JhcHBlciwgYGt2bV9ncGNfcmVmcmVzaGAuIEkgbmVlZCB0byBjb25maXJtIHRoYXQgYGt2bV9ncGNfcmVmcmVzaGAgaXMgYWN0dWFsbHkgZXhwb3J0ZWQuIEkmIzM5O2xsIGRvdWJsZS1jaGVjayB0aGUgc3ltYm9sIHRhYmxlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtrdm1fZ3BjX3JlZnJlc2gmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9wZm5jYWNoZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O3ZpcnQva3ZtL3BmbmNhY2hlLmM9MTU1PXN0YXRpYyBrdm1fcGZuX3QgaHZhX3RvX3Bmbl9yZXRyeShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKVxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjU1LVxudmlydC9rdm0vcGZuY2FjaGUuYzoyNTY6c3RhdGljIGludCBfX2t2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgdWh2YSlcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjU3LXtcbi0tXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM2My1cbnZpcnQva3ZtL3BmbmNhY2hlLmM6MzY0OmludCBrdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBsZW4pXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM2NS17XG4tLVxudmlydC9rdm0vcGZuY2FjaGUuYy0zNzktXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjM4MDpcdHJldHVybiBfX2t2bV9ncGNfcmVmcmVzaChncGMsIGdwYy1cdTAwM2VncGEsIHVodmEpO1xudmlydC9rdm0vcGZuY2FjaGUuYy0zODEtfVxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmM9Mzk1PXN0YXRpYyBpbnQgX19rdm1fZ3BjX2FjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyB1aHZhLFxuLS1cbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDIxLVx0fVxudmlydC9rdm0vcGZuY2FjaGUuYzo0MjI6XHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGEsIHVodmEpO1xudmlydC9rdm0vcGZuY2FjaGUuYy00MjMtfVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjI5LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxODI4MgoJCQkJCQkJb3V0cHV0OiA0NQoJCQkJCQkJdGhvdWdodHM6IDY0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLgoKKipGdW5jdGlvbiBBbmFseXNpczogS1ZNIEdQQyBSZWZyZXNoLCBBY3RpdmF0ZSwgYW5kIEhWQSoqCgpSaWdodCwgc28gYGt2bV9ncGNfcmVmcmVzaGAuLi4gdGhhdCYjMzk7cyBkZWZpbml0ZWx5IGEgbm9uLXN0YXRpYyBmdW5jdGlvbiwganVzdCBsaWtlIGBrdm1fZ3BjX2FjdGl2YXRlYCBhbmQgYGt2bV9ncGNfYWN0aXZhdGVfaHZhYC4gVGhhdCYjMzk7cyBpbXBvcnRhbnQuIEl0IG1lYW5zIHRoZXNlIGZ1bmN0aW9ucyBhcmUsIGJ5IGRlZmluaXRpb24sIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIHNvdXJjZSBmaWxlIHRoZXkmIzM5O3JlIGRlZmluZWQgaW4uIFRoZXkmIzM5O3JlIHBhcnQgb2YgdGhlIHB1YmxpYyBpbnRlcmZhY2UsIGVzc2VudGlhbGx5LiBNYWtlcyBzZW5zZSwgZ2l2ZW4gdGhlIGNvbnRleHQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBoZXJlIGluIHRoZSBLVk0gbW9kdWxlLgoKTm93LCBhIGtleSBxdWVzdGlvbiB0aGF0IGFsd2F5cyBhcmlzZXMgd2hlbiB5b3UmIzM5O3JlIGRlYWxpbmcgd2l0aCBmdW5jdGlvbnMgdGhhdCAqY291bGQqIGJlIHVzZWQgb3V0c2lkZSB0aGVpciBvcmlnaW5hbCBjb21waWxhdGlvbiB1bml0IGlzOiBhcmUgdGhleSAqYWN0dWFsbHkqIGV4cG9ydGVkIHRvIG1vZHVsZXM/IEFyZSB0aGV5IGF2YWlsYWJsZSB0byBiZSB1c2VkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBrZXJuZWwsIG9yIGV2ZW4gZXh0ZXJuYWwga2VybmVsIG1vZHVsZXMgdGhhdCBpbnRlcmFjdCB3aXRoIEtWTT8gSSBuZWVkIHRvIHZlcmlmeSB0aGF0IGBrdm1fZ3BjX3JlZnJlc2hgIHNwZWNpZmljYWxseSBpcyBleHBvcnRlZC4gTGV0JiMzOTtzIG1ha2Ugc3VyZSB0aGF0JiMzOTtzIGV4cGxpY2l0bHkgaGFuZGxlZC4gVGhhdCYjMzk7cyBhIGNydWNpYWwgcG9pbnQgdG8gY29uZmlybSBhbmQgZG9jdW1lbnQgcHJvcGVybHkuIFRoaXMgaGVscHMgZW5zdXJlIG1haW50YWluYWJpbGl0eSBhbmQgdGhlIHByb3BlciBpbnRlcmFjdGlvbiBiZXR3ZWVuIEtWTSBhbmQgZXh0ZXJuYWwgbW9kdWxlcyB0aGF0IG1heSByZWx5IG9uIGl0cyBmdW5jdGlvbmFsaXR5LgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0xfR1BMXFwoa3ZtX2dwY19yZWZyZXNoXFwpJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDE4NjYzCgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqRGl2aW5nIGludG8gdGhlIEtWTSBQRk4gQ2FjaGUqKgoKT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgS1ZNIFBGTiBjYWNoZSB3b3JrcywgYW5kIHRoYXQgbWVhbnMgc3RhcnRpbmcgYXQgYSBmdW5kYW1lbnRhbCBsZXZlbC4gSSYjMzk7bSBnb2luZyB0byBkcmlsbCBkb3duIGludG8gdGhlIGRldGFpbHMgb2YgYHZpcnQva3ZtL3BmbmNhY2hlLmNgLiBTcGVjaWZpY2FsbHksIEkgd2FudCB0byBzZWUgaG93IHN5bWJvbHMgYXJlIGV4cG9ydGVkLiBJJiMzOTtsbCBiZSB0YXJnZXRpbmcgYEVYUE9SVF9TWU1CT0xgLiBJIHdhbnQgdG8gc2VlIHdoYXQgaXMgZ2V0dGluZyBleHBvc2VkLCBhbmQgSSBuZWVkIHRvIGNvbnNpZGVyIHdoeSBzcGVjaWZpYyBzeW1ib2xzIGFyZSBiZWluZyBtYWRlIGF2YWlsYWJsZSBvdXRzaWRlIG9mIHRoZSBpbW1lZGlhdGUgbW9kdWxlLiBUaGlzIHdpbGwgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIHRoZSBvdmVyYWxsIGFyY2hpdGVjdHVyZSBhbmQgcG90ZW50aWFsIGRlcGVuZGVuY2llcyBvbiB0aGlzIGNvbXBvbmVudC4gVGhpcyBsaWtlbHkgaGFzIGltcGxpY2F0aW9ucyBmb3IgdGhlIHN0YWJpbGl0eSBhbmQgbWFpbnRlbmFuY2Ugb2YgdGhlIEtWTSBjb2RlYmFzZS4gVW5kZXJzdGFuZGluZyB0aGVzZSBzeW1ib2xzIGlzIGNyaXRpY2FsIGZvciBtYWtpbmcgaW5mb3JtZWQgY2hhbmdlcyBvciBvcHRpbWl6YXRpb25zIHRvIHRoZSBjb2RlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjMyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0wmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9wZm5jYWNoZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTg5MTEKCQkJCQkJCW91dHB1dDogMzgKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhdHRlbXB0IGF0IHN1bW1hcml6aW5nIHRoZSB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkludmVzdGlnYXRpbmcgS1ZNIFBGTiBDYWNoZSBTeW1ib2wgRXhwb3J0KioKCk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkmIzM5O20gbG9va2luZyBhdCBgdmlydC9rdm0vcGZuY2FjaGUuY2AsIGFuZCBzb21ldGhpbmcgc2VlbXMgb2ZmLiBJIHdhcyB1bmRlciB0aGUgaW1wcmVzc2lvbiBpdCBtaWdodCBiZSBleHBvc2luZyBzb21lIHN5bWJvbHMsIGJ1dCBhIHF1aWNrIHNjYW4gZG9lc24mIzM5O3QgcmV2ZWFsIGFueSBvYnZpb3VzIGV4cG9ydHMuIE5vdywgdGhhdCYjMzk7cyBub3QgbmVjZXNzYXJpbHkgYSBkZWFsLWJyZWFrZXIuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIHBvdGVudGlhbCBmb3IgYEVYUE9SVF9TWU1CT0xfR1BMYC4gUGVyaGFwcyB0aGF0IG1hY3JvIGlzIGJlaW5nIGVtcGxveWVkIHRvIG1ha2UgY2VydGFpbiBmdW5jdGlvbnMgb3IgZGF0YSBzdHJ1Y3R1cmVzIGF2YWlsYWJsZSwgZXZlbiBpZiBub3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIEkgbmVlZCB0byBkaXZlIGRlZXBlci4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGV4YW1pbmluZyBhIGtleSBmdW5jdGlvbiB3aXRoaW4gdGhpcyBmaWxlIOKAkyBga3ZtX2dwY19yZWZyZXNoYC4gVGhhdCYjMzk7cyBsaWtlbHkgdGhlIGJlc3QgcGxhY2UgdG8gc3RhcnQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDM2MCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzYwOlx0XG4gMzYxOlx0XHRyZXR1cm4gcmV0O1xuIDM2MjpcdH1cbiAzNjM6XHRcbiAzNjQ6XHRpbnQga3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHVuc2lnbmVkIGxvbmcgbGVuKVxuIDM2NTpcdHtcbiAzNjY6XHRcdHVuc2lnbmVkIGxvbmcgdWh2YTtcbiAzNjc6XHRcbiAzNjg6XHRcdGd1YXJkKG11dGV4KShcdTAwMjZncGMtXHUwMDNlcmVmcmVzaF9sb2NrKTtcbiAzNjk6XHRcbiAzNzA6XHRcdGlmICgha3ZtX2dwY19pc192YWxpZF9sZW4oZ3BjLVx1MDAzZWdwYSwgZ3BjLVx1MDAzZXVodmEsIGxlbikpXG4gMzcxOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDM3MjpcdFxuIDM3MzpcdFx0LypcbiAzNzQ6XHRcdCAqIElmIHRoZSBHUEEgaXMgdmFsaWQgdGhlbiBpZ25vcmUgdGhlIEhWQSwgYXMgYSBjYWNoZSBjYW4gYmUgR1BBLWJhc2VkXG4gMzc1Olx0XHQgKiBvciBIVkEtYmFzZWQsIG5vdCBib3RoLiAgRm9yIEdQQS1iYXNlZCBjYWNoZXMsIHRoZSBIVkEgd2lsbCBiZVxuIDM3NjpcdFx0ICogcmVjb21wdXRlZCBkdXJpbmcgcmVmcmVzaCBpZiBuZWNlc3NhcnkuXG4gMzc3Olx0XHQgKi9cbiAzNzg6XHRcdHVodmEgPSBrdm1faXNfZXJyb3JfZ3BhKGdwYy1cdTAwM2VncGEpID8gZ3BjLVx1MDAzZXVodmEgOiBLVk1fSFZBX0VSUl9CQUQ7XG4gMzc5Olx0XG4gMzgwOlx0XHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGMtXHUwMDNlZ3BhLCB1aHZhKTtcbiAzODE6XHR9XG4gMzgyOlx0XG4gMzgzOlx0dm9pZCBrdm1fZ3BjX2luaXQoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgc3RydWN0IGt2bSAqa3ZtKVxuIDM4NDpcdHtcbiAzODU6XHRcdHJ3bG9ja19pbml0KFx1MDAyNmdwYy1cdTAwM2Vsb2NrKTtcbiAzODY6XHRcdG11dGV4X2luaXQoXHUwMDI2Z3BjLVx1MDAzZXJlZnJlc2hfbG9jayk7XG4gMzg3Olx0XG4gMzg4Olx0XHRncGMtXHUwMDNla3ZtID0ga3ZtO1xuIDM4OTpcdFx0Z3BjLVx1MDAzZXBmbiA9IEtWTV9QRk5fRVJSX0ZBVUxUO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxOTY3OQoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDE4NQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipLVk0gTW9kdWxlIEludGVybmFscyoqCgpPa2F5LCBzbyBLVk0gaXMgY29uc3RydWN0ZWQgYXMgYSBzaW5nbGUsIGNvaGVzaXZlIG1vZHVsZSwgb3IgcGVyaGFwcyBldmVuIGJ1aWx0LWluLCBkZXBlbmRpbmcgb24gdGhlIHNwZWNpZmljcyBvZiB0aGUgYnVpbGQgcHJvY2Vzcy4gSSBzZWUgdGhhdCB0aGUgYHZpcnQva3ZtL3BmbmNhY2hlLm9gIG9iamVjdCBmaWxlIGdldHMgbGlua2VkIGRpcmVjdGx5IGludG8gYGt2bS5vYC4gQWN0dWFsbHksIGlzIGl0IGFsc28gbGlua2VkIHdpdGggYGt2bS1hbWQub2Agb3IgYGt2bS1pbnRlbC5vYD8gTm8sIG5vLCBga3ZtLm9gIGlzIGRlZmluaXRlbHkgdGhlIGNlbnRyYWwgY29yZSBoZXJlLiBBaCwgcmlnaHQsIHRoZSBidWlsZCBwcm9jZXNzIGxpa2VseSBpbmNsdWRlcyBgJChLVk0pL3BmbmNhY2hlLm9gIGluIGBrdm0teWAuIFNpbmNlIGBwZm5jYWNoZWAgaXMgdXNlZCBpbnRlcm5hbGx5IHdpdGhpbiBLVk0sIGl0IGRvZXNuJiMzOTt0IG5lZWQgZXhwbGljaXQgc3ltYm9sIGV4cG9ydC4KCkJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIHNlZWluZyBgRVhQT1JUX1NZTUJPTF9HUExgIGJlaW5nIHVzZWQgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgIOKAkyBzcGVjaWZpY2FsbHkgZm9yIHN5bWJvbHMgdGhhdCAqZG8qIG5lZWQgdG8gYmUgZXhwb3NlZCB0byBtb2R1bGVzIGxpa2UgYGt2bS1pbnRlbGAgb3IgYGt2bS1hbWRgLiBUaGF0IG1lYW5zIHRoZXJlJiMzOTtzIHNvbWUgaW50ZXJhY3Rpb24uIE9rYXksIGxldCBtZSBxdWlja2x5IHZlcmlmeSBpZiBga3ZtX2dwY19yZWZyZXNoYCBpcyBleHBvcnRlZCBmcm9tIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYC4gVGhhdCBzaG91bGQgZ2l2ZSBtZSBhIGJldHRlciB1bmRlcnN0YW5kaW5nIG9mIGhvdyB0aGUgaW50ZXJuYWwgY29tcG9uZW50cyBhcmUgc2hhcmVkIGFuZCBsaW5rZWQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7RVhQT1JUX1NZTUJPTF9HUEwmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDt2aXJ0L2t2bS9wZm5jYWNoZS5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjAxODgKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxNDAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqSW52ZXN0aWdhdGluZyB0aGUgS1ZNIFN5bWJvbCBFeHBvcnQqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gZmlndXJlIG91dCBpZiBgRVhQT1JUX1NZTUJPTF9GT1JfS1ZNX0lOVEVSTkFMYCBpcyBhY3R1YWxseSBpbiB1c2Ugc29tZXdoZXJlLCBhbmQgbXkgaW5pdGlhbCBodW5jaCBpcyB0aGF0IGl0IG1pZ2h0IGJlLCBidXQgbGV0JiMzOTtzIGJlIHN1cmUuIFdhaXQsIG5vLCBgRVhQT1JUX1NZTUJPTF9HUExgIGlzIGluIGB2aXJ0L2t2bS9rdm1fbWFpbi5jYCwgdGhhdCYjMzk7cyBhbiBpbXBvcnRhbnQgZGV0YWlsLiBJIHNob3VsZCBjaGVjayBgdmlydC9rdm0vcGZuY2FjaGUuY2AgYWdhaW4gZm9yIGBFWFBPUlRfU1lNQk9MX0dQTGAsIGp1c3QgdG8gYmUgY2VydGFpbi4gTm9wZSwgc3RpbGwgbm90aGluZy4KCkFscmlnaHQsIEkmIzM5O2xsIHRyeSBzZWFyY2hpbmcgZm9yIGBFWFBPUlRfU1lNQk9MX0dQTGAgaW4gYHZpcnQva3ZtL3BmbmNhY2hlLmNgIGFnYWluLCBidXQgdGhpcyB0aW1lIEkmIzM5O2xsIG1ha2UgdGhlIHNlYXJjaCBjYXNlLWluc2Vuc2l0aXZlLCBqdXN0IHRvIGNvdmVyIGFsbCBiYXNlcywgYmVjYXVzZSBzb21ldGltZXMgdGhpbmdzIGFyZSBuYW1lZCB1bmV4cGVjdGVkbHkuIFN0aWxsIG5vdGhpbmcuIFNvIGl0JiMzOTtzIG5vdCBleHBvcnRlZCB0aGVyZS4KCk9rYXksIGxldCYjMzk7cyB0YWtlIG9uZSBtb3JlIGxvb2sgYXQgYHZpcnQva3ZtL3BmbmNhY2hlLmNgIGZvciBgRVhQT1JUX1NZTUJPTF9HUExgIGp1c3QgdG8gZG91YmxlIGNoZWNrIHRoYXQgSSBkaWRuJiMzOTt0IG1pc3Mgc29tZXRoaW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjM4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+RXJyb3I6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5ubyBtYXRjaGVzPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O0VYUE9SVF9TWU1CT0xfR1BMJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MzkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwNjE3CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogMjIKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkhlcmUmIzM5O3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHRob3VnaHQ6CgoqKkNoZWNraW5nIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYCBmb3IgYEVYUE9SVF9TWU1CT0xgKioKCk9rYXksIHNvIEkgbmVlZCB0byBxdWlja2x5IGRldGVybWluZSB0aGUgdmlzaWJpbGl0eSBvZiBzb21lIHN5bWJvbHMgd2l0aGluIHRoZSBLVk0gUEZOIGNhY2hlIGltcGxlbWVudGF0aW9uLiBNeSBmaXJzdCBpbnN0aW5jdCwgZ2l2ZW4gdGhlIGNvbnRleHQsIGlzIHRvIGNoZWNrIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYCBmb3IgYEVYUE9SVF9TWU1CT0xgLiBUaGlzIGlzIHN0YW5kYXJkIG9wZXJhdGluZyBwcm9jZWR1cmUsIHJlYWxseTsgaXQmIzM5O3MgdGhlIHF1aWNrIGFuZCBkaXJ0eSB3YXkgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW5kZWQgc2NvcGUgb2YgdGhlc2Ugc3ltYm9scy4gQXJlIHRoZXkgaW50ZW5kZWQgZm9yIG1vZHVsZSB1c2UsIGludGVybmFsIHRvIEtWTSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IExvb2tpbmcgYXQgdGhlIGBFWFBPUlRfU1lNQk9MYCBtYWNybyB3aWxsIHRlbGwgbWUgaWYgdGhleSBhcmUgZ2xvYmFsbHkgdmlzaWJsZS4gVGhpcyBpcyBhIGZvdW5kYXRpb25hbCBzdGVwLiBJJiMzOTttIGhvcGluZyB0byBxdWlja2x5IGlkZW50aWZ5IGhvdyB0aGUgUEZOIGNhY2hlIGlzIGV4cG9zZWQgYW5kIHVzZWQsIHNvIEkgY2FuIHVuZGVyc3RhbmQgdGhlIGJpZ2dlciBwaWN0dXJlIG9mIGludGVyYWN0aW9ucyB3aXRoIG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBwYXJ0aWN1bGFybHkgb3RoZXIgS1ZNIG1vZHVsZXMgb3IgdGhlIGNvcmUga2VybmVsIGl0c2VsZi4gTGV0JiMzOTtzIGRpZyBpbiBhbmQgc2VlIHdoYXQmIzM5O3Mgd2hhdC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40MC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMTQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkVycm9yOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bm8gbWF0Y2hlczwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtFWFBPUlRfU1lNQk9MJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtlcnJvciYjMzQ7OiAmIzM0O25vIG1hdGNoZXMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDIwOTAyCgkJCQkJCQlvdXRwdXQ6IDM4CgkJCQkJCQl0aG91Z2h0czogMTQ0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkZ1enppbmcgU3RyYXRlZ3kgQXNzZXNzbWVudCoqCgpBbHJpZ2h0LCBzbyB0aGUgdGFyZ2V0IGlzbiYjMzk7dCBleHBsaWNpdGx5IGV4cG9ydGVkLCB3aGljaCBpcyB0aGUgaW5pdGlhbCBodXJkbGUuIEhvd2V2ZXIsIHRoZSBmYWN0IHRoYXQgaXQmIzM5O3MgYSBub24tc3RhdGljIGZ1bmN0aW9uICp3aXRoaW4qIHRoZSBrZXJuZWwgaW1hZ2UgZ2l2ZXMgdXMgYSBkZWZpbml0ZSBhdmVudWUgZm9yIGZ1enppbmcuIFdlIGtub3cgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIGZhaXIgZ2FtZS4KCk15IHRoaW5raW5nIHRoZW4gemVyb2VzIGluIG9uIGBrdm1fZ3BjX3JlZnJlc2hgLiBTaW5jZSBpdCYjMzk7cyBub24tc3RhdGljLCB0aGVyZSYjMzk7cyBhIGdvb2QgY2hhbmNlIGl0JiMzOTtzIHByZXNlbnQgd2l0aGluIGBrdm0ua29gLiBMZXQmIzM5O3MgY29uZmlybSB0aGF0IHF1aWNrbHkuLi4gWWVzLCBjb25maXJtZWQsIGl0ICppcyogaW4gYGt2bS5rb2AuIEV4Y2VsbGVudC4KClRoYXQgbmFycm93cyBvdXIgZm9jdXMuIFRoZSBjcml0aWNhbCBzeW1ib2xzIGZvciBhIHByb21pc2luZyBmdXp6aW5nIGNhbXBhaWduIGFyZSBjbGVhcmx5IGBrdm1fZ3BjX3JlZnJlc2hgLCBga3ZtX2dwY19hY3RpdmF0ZWAsIGFuZCBga3ZtX2dwY19hY3RpdmF0ZV9odmFgLgoKTm93IGl04oCZcyB0aW1lIHRvIGFzc2VzcyB0aG9zZSBsYXN0IHR3bzogYGt2bV9ncGNfYWN0aXZhdGVgIGFuZCBga3ZtX2dwY19hY3RpdmF0ZV9odmFgLiBMZXQmIzM5O3Mgc2VlIHdoYXQgd2UmIzM5O3JlIHdvcmtpbmcgd2l0aCBpbiB0aG9zZSBmdW5jdGlvbnMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7dmlydC9rdm0vcGZuY2FjaGUuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDQyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAzMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgNDIwOlx0XHRcdHdyaXRlX3VubG9ja19pcnEoXHUwMDI2Z3BjLVx1MDAzZWxvY2spO1xuIDQyMTpcdFx0fVxuIDQyMjpcdFx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BhLCB1aHZhKTtcbiA0MjM6XHR9XG4gNDI0Olx0XG4gNDI1Olx0aW50IGt2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGxlbilcbiA0MjY6XHR7XG4gNDI3Olx0XHQvKlxuIDQyODpcdFx0ICogRXhwbGljaXRseSBkaXNhbGxvdyBJTlZBTElEX0dQQSBzbyB0aGF0IHRoZSBtYWdpYyB2YWx1ZSBjYW4gYmUgdXNlZFxuIDQyOTpcdFx0ICogYnkgS1ZNIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBHUEEtYmFzZWQgYW5kIEhWQS1iYXNlZCBjYWNoZXMuXG4gNDMwOlx0XHQgKi9cbiA0MzE6XHRcdGlmIChXQVJOX09OX09OQ0Uoa3ZtX2lzX2Vycm9yX2dwYShncGEpKSlcbiA0MzI6XHRcdFx0cmV0dXJuIC1FSU5WQUw7XG4gNDMzOlx0XG4gNDM0Olx0XHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgZ3BhLCBLVk1fSFZBX0VSUl9CQUQsIGxlbik7XG4gNDM1Olx0fVxuIDQzNjpcdFxuIDQzNzpcdGludCBrdm1fZ3BjX2FjdGl2YXRlX2h2YShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIHVodmEsIHVuc2lnbmVkIGxvbmcgbGVuKVxuIDQzODpcdHtcbiA0Mzk6XHRcdGlmICghYWNjZXNzX29rKCh2b2lkIF9fdXNlciAqKXVodmEsIGxlbikpXG4gNDQwOlx0XHRcdHJldHVybiAtRUlOVkFMO1xuIDQ0MTpcdFxuIDQ0MjpcdFx0cmV0dXJuIF9fa3ZtX2dwY19hY3RpdmF0ZShncGMsIElOVkFMSURfR1BBLCB1aHZhLCBsZW4pO1xuIDQ0MzpcdH1cbiA0NDQ6XHRcbiA0NDU6XHR2b2lkIGt2bV9ncGNfZGVhY3RpdmF0ZShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKVxuIDQ0NjpcdHtcbiA0NDc6XHRcdHN0cnVjdCBrdm0gKmt2bSA9IGdwYy1cdTAwM2Vrdm07XG4gNDQ4Olx0XHRrdm1fcGZuX3Qgb2xkX3BmbjtcbiA0NDk6XHRcdHZvaWQgKm9sZF9raHZhO1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQzLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAxNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAyMTgyNwoJCQkJCQkJb3V0cHV0OiAxMjgKCQkJCQkJCXRob3VnaHRzOiAzMzUKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKgoKT2theSwgc28gdGhlc2UgZnVuY3Rpb25zLCBga3ZtX2dwY19yZWZyZXNoYCwgYGt2bV9ncGNfYWN0aXZhdGVgLCBhbmQgYGt2bV9ncGNfYWN0aXZhdGVfaHZhYCwgYXJlIG5vbi1zdGF0aWMg4oCTIHRoYXQmIzM5O3MgZ29vZCwgdGhhdCYjMzk7cyB3aGF0IEkgbmVlZGVkIHRvIGNvbmZpcm0uIEkmIzM5O20gZ29pbmcgdG8gYWRkIHRob3NlIHRocmVlIHN5bWJvbHMgdG8gbXkgZm9jdXMgbGlzdC4gVGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGlzIGBLVk1gLCB3aGljaCBpcyBhbHNvIGltcG9ydGFudCB0byBub3RlLgoKTm93LCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIHByb3ZpZGVkIHBhdGNoLiBSaWdodCwgaGVyZSYjMzk7cyB0aGUgY29yZSBvZiBpdC4gV2UmIzM5O3JlIHJlbW92aW5nIHRoZSBgZ3BjLSZndDtsb2NrYCBhY3F1aXNpdGlvbiBpZiB0aGUgR1BDIGlzbiYjMzk7dCBhY3RpdmUuIEl0JiMzOTtzIG1vdmluZyB0aGUgYGxvY2tkZXBfYXNzZXJ0X2hlbGRgIGhpZ2hlciBpbiB0aGUgZnVuY3Rpb24mIzM5O3Mgc3RydWN0dXJlLiBUaGF0JiMzOTtzIGEgZnVuY3Rpb25hbCBtb2RpZmljYXRpb24sIGFuZCB0aG9zZSBhcmUgYWx3YXlzIGludGVyZXN0aW5nIGZyb20gYSBmdXp6aW5nIHBlcnNwZWN0aXZlLCBlc3BlY2lhbGx5IHdoZW4gdGhleSBpbnZvbHZlIGxvY2tzIGFuZCBwb3RlbnRpYWwgcmFjZSBjb25kaXRpb25zLCBvciBpZiB0aGUgbG9naWMgaXMgYWZmZWN0ZWQgYnkgdGhlIHN0YXRlIG9mIGBncGMtJmd0O2FjdGl2ZWAuCgpUaGUgZmFjdCB0aGF0IHdlJiMzOTtyZSBvcHRpbWl6aW5nIHRoZSBsb2NrIGFjcXVpc2l0aW9uIHBhdGggYmFzZWQgb24gdGhlIGBncGMtJmd0O2FjdGl2ZWAgc3RhdHVzIHJhaXNlcyBhIHJlZCBmbGFnLiBUaGlzIGNvbmRpdGlvbmFsIGxvZ2ljIGNhbiBlYXNpbHkgaW50cm9kdWNlIHVuZXhwZWN0ZWQgYmVoYXZpb3IgaWYgdGhlIGBncGMtJmd0O2FjdGl2ZWAgZmxhZyBjaGFuZ2VzIGNvbmN1cnJlbnRseS4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLCBzbyB0aGF0JiMzOTtzIGRlZmluaXRlbHkgYSB2aWFibGUgdGFyZ2V0LiBJIG5lZWQgdG8gYmUgYWJsZSB0byBzZXQgdGhlIGFjdGl2ZSByZXN1bHRzLgoKQWxyaWdodCwgdGltZSB0byBsb2cgdGhpcyBmb3IgYSBmdWxsLXNjYWxlIGZ1enppbmcgY2FtcGFpZ24uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NDQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDE0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+c2V0LXJlc3VsdHM8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fZ3BjX3JlZnJlc2gmIzM0OywKICAgICYjMzQ7a3ZtX2dwY19hY3RpdmF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fZ3BjX2FjdGl2YXRlX2h2YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zIGluIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIHRoZSBLVk0gcGZuY2FjaGUgbG9naWMuIEl0IGF2b2lkcyB0YWtpbmcgdGhlIGBncGMtXHUwMDNlbG9ja2AgaWYgdGhlIGNhY2hlIGlzIG5vdCBhY3RpdmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChLVk0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtLVk0mIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrdm1fZ3BjX3JlZnJlc2gmIzM0OywKICAgICYjMzQ7a3ZtX2dwY19hY3RpdmF0ZSYjMzQ7LAogICAgJiMzNDtrdm1fZ3BjX2FjdGl2YXRlX2h2YSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zIGluIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIHRoZSBLVk0gcGZuY2FjaGUgbG9naWMuIEl0IGF2b2lkcyB0YWtpbmcgdGhlIGBncGMtXHUwMDNlbG9ja2AgaWYgdGhlIGNhY2hlIGlzIG5vdCBhY3RpdmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChLVk0pLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDctMjlUMTM6NTk6NTguODAxOTY2NzEzWiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA1MDYxOTk2NjI4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9ncGNfcmVmcmVzaFwiLFxuICAgIFwia3ZtX2dwY19hY3RpdmF0ZVwiLFxuICAgIFwia3ZtX2dwY19hY3RpdmF0ZV9odmFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zIGluIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIHRoZSBLVk0gcGZuY2FjaGUgbG9naWMuIEl0IGF2b2lkcyB0YWtpbmcgdGhlIGBncGMtXFx1MDAzZWxvY2tgIGlmIHRoZSBjYWNoZSBpcyBub3QgYWN0aXZlLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoS1ZNKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTM6NTk6NTguODAxOTczMTkzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1MDAzNzYwMDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCBmN2EyOTMwYmI4OWEzMmZjMWFiOWM4YzgyMmIzMmE2YjRiNjBlMjc1XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBXZWQgSnVsIDI5IDEzOjU5OjU3IDIwMjYgKzAwMDBcXG5cXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XFxuXFxuZGlmZiAtLWdpdCBhL3ZpcnQva3ZtL3BmbmNhY2hlLmMgYi92aXJ0L2t2bS9wZm5jYWNoZS5jXFxuaW5kZXggNzI4ZDJjMWI0ODhhOC4uZmNmZDU1NTViOTFiOSAxMDA2NDRcXG4tLS0gYS92aXJ0L2t2bS9wZm5jYWNoZS5jXFxuKysrIGIvdmlydC9rdm0vcGZuY2FjaGUuY1xcbkBAIC0yNjMsMTkgKzI2MywxNyBAQCBzdGF0aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbFxcbiBcXHR2b2lkICpvbGRfa2h2YTtcXG4gXFx0aW50IHJldDtcXG4gXFxuK1xcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXFx1MDAyNmdwYy1cXHUwMDNlcmVmcmVzaF9sb2NrKTtcXG4rXFxuK1xcdGlmICghZ3BjLVxcdTAwM2VhY3RpdmUpXFxuK1xcdFxcdHJldHVybiAtRUlOVkFMO1xcbitcXG4gXFx0LyogRWl0aGVyIGdwYSBvciB1aHZhIG11c3QgYmUgdmFsaWQsIGJ1dCBub3QgYm90aCAqL1xcbiBcXHRpZiAoV0FSTl9PTl9PTkNFKGt2bV9pc19lcnJvcl9ncGEoZ3BhKSA9PSBrdm1faXNfZXJyb3JfaHZhKHVodmEpKSlcXG4gXFx0XFx0cmV0dXJuIC1FSU5WQUw7XFxuIFxcbi1cXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFxcdTAwMjZncGMtXFx1MDAzZXJlZnJlc2hfbG9jayk7XFxuLVxcbiBcXHR3cml0ZV9sb2NrX2lycShcXHUwMDI2Z3BjLVxcdTAwM2Vsb2NrKTtcXG4gXFxuLVxcdGlmICghZ3BjLVxcdTAwM2VhY3RpdmUpIHtcXG4tXFx0XFx0cmV0ID0gLUVJTlZBTDtcXG4tXFx0XFx0Z290byBvdXRfdW5sb2NrO1xcbi1cXHR9XFxuLVxcbiBcXHRvbGRfcGZuID0gZ3BjLVxcdTAwM2VwZm47XFxuIFxcdG9sZF9raHZhID0gKHZvaWQgKilQQUdFX0FMSUdOX0RPV04oKHVpbnRwdHJfdClncGMtXFx1MDAzZWtodmEpO1xcbiBcXHRvbGRfdWh2YSA9IFBBR0VfQUxJR05fRE9XTihncGMtXFx1MDAzZXVodmEpO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxMzo1OTo1OS4zMDMzMDYyNjRaIiwiU2VxIjoyLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWdlbnQiLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJiZXN0LWV4cGVuc2l2ZSIsIkR1cmF0aW9uIjoxMDQ1NjA2NDYwNDcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2dwY19yZWZyZXNoXCIsXG4gICAgXCJrdm1fZ3BjX2FjdGl2YXRlXCIsXG4gICAgXCJrdm1fZ3BjX2FjdGl2YXRlX2h2YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFuZCBsb2NrZGVwIGFzc2VydGlvbnMgaW4gYF9fa3ZtX2dwY19yZWZyZXNoYCB3aXRoaW4gdGhlIEtWTSBwZm5jYWNoZSBsb2dpYy4gSXQgYXZvaWRzIHRha2luZyB0aGUgYGdwYy1cXHUwMDNlbG9ja2AgaWYgdGhlIGNhY2hlIGlzIG5vdCBhY3RpdmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChLVk0pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCBmN2EyOTMwYmI4OWEzMmZjMWFiOWM4YzgyMmIzMmE2YjRiNjBlMjc1XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMTM6NTk6NTcgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS92aXJ0L2t2bS9wZm5jYWNoZS5jIGIvdmlydC9rdm0vcGZuY2FjaGUuY1xuaW5kZXggNzI4ZDJjMWI0ODhhOC4uZmNmZDU1NTViOTFiOSAxMDA2NDRcbi0tLSBhL3ZpcnQva3ZtL3BmbmNhY2hlLmNcbisrKyBiL3ZpcnQva3ZtL3BmbmNhY2hlLmNcbkBAIC0yNjMsMTkgKzI2MywxNyBAQCBzdGF0aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbFxuIFx0dm9pZCAqb2xkX2todmE7XG4gXHRpbnQgcmV0O1xuIFxuK1x0bG9ja2RlcF9hc3NlcnRfaGVsZChcdTAwMjZncGMtXHUwMDNlcmVmcmVzaF9sb2NrKTtcbitcbitcdGlmICghZ3BjLVx1MDAzZWFjdGl2ZSlcbitcdFx0cmV0dXJuIC1FSU5WQUw7XG4rXG4gXHQvKiBFaXRoZXIgZ3BhIG9yIHVodmEgbXVzdCBiZSB2YWxpZCwgYnV0IG5vdCBib3RoICovXG4gXHRpZiAoV0FSTl9PTl9PTkNFKGt2bV9pc19lcnJvcl9ncGEoZ3BhKSA9PSBrdm1faXNfZXJyb3JfaHZhKHVodmEpKSlcbiBcdFx0cmV0dXJuIC1FSU5WQUw7XG4gXG4tXHRsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmdwYy1cdTAwM2VyZWZyZXNoX2xvY2spO1xuLVxuIFx0d3JpdGVfbG9ja19pcnEoXHUwMDI2Z3BjLVx1MDAzZWxvY2spO1xuIFxuLVx0aWYgKCFncGMtXHUwMDNlYWN0aXZlKSB7XG4tXHRcdHJldCA9IC1FSU5WQUw7XG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cdH1cbi1cbiBcdG9sZF9wZm4gPSBncGMtXHUwMDNlcGZuO1xuIFx0b2xkX2todmEgPSAodm9pZCAqKVBBR0VfQUxJR05fRE9XTigodWludHB0cl90KWdwYy1cdTAwM2VraHZhKTtcbiBcdG9sZF91aHZhID0gUEFHRV9BTElHTl9ET1dOKGdwYy1cdTAwM2V1aHZhKTtcbiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDEzOjU5OjU5LjMwMzMwNzYxNFoiLCJTZXEiOjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY1NTE1Nzg0MDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUEZOIENhY2hlIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyBgdmlydC9rdm0vcGZuY2FjaGUuY2AuIE15IGluaXRpYWwgb2JzZXJ2YXRpb24gaXMgdGhhdCBpdCdzIHNoaWZ0aW5nIGFyb3VuZCBhIGtleSBjaGVjayByZWxhdGVkIHRvIGBncGMtXHUwMDNlYWN0aXZlYCB3aXRoaW4gdGhlIGBfX2t2bV9ncGNfcmVmcmVzaGAgZnVuY3Rpb24uIFNwZWNpZmljYWxseSwgaXQncyBtb3ZpbmcgdGhlIGBpZiAoIWdwYy1cdTAwM2VhY3RpdmUpYCBjaGVjayAqb3V0c2lkZSogdGhlIGB3cml0ZV9sb2NrX2lycShcdTAwMjZncGMtXHUwMDNlbG9jayk7YCBibG9jay4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2h5LiBMZXQgbWUgdGFrZSBhIGNsb3NlciBsb29rIGF0IHRoZSBkaWZmLi4uIHJpZ2h0IGhlcmUuXG5cbkFoLCBJIHNlZSBpdCBub3cuIFRoZSBjb2RlIGlzIHN0cnVjdHVyZWQgbGlrZSB0aGlzOiBcbmBgYGNcbitcdGxvY2tkZXBfYXNzZXJ0X2hlbGQoXHUwMDI2Z3BjLVx1MDAzZXJlZnJlc2hfbG9jayk7XG4rXG4rXHRpZiAoIWdwYy1cdTAwM2VhY3RpdmUpXG4rXHRcdHJldHVybiAtRUlOVkFMO1xuK1xuYGBgXG5cbk5vdywgdGhlIGNoZWNrIGZvciBgZ3BjLVx1MDAzZWFjdGl2ZWAgaXMgKmJlZm9yZSogdGhlIGxvY2sgYWNxdWlzaXRpb24uIFByZXZpb3VzbHksIGl0IHdhcyAqaW5zaWRlKi5cblxuYGBgY1xuIFx0d3JpdGVfbG9ja19pcnEoXHUwMDI2Z3BjLVx1MDAzZWxvY2spO1xuIFxuLVx0aWYgKCFncGMtXHUwMDNlYWN0aXZlKSB7XG4tXHRcdHJldCA9IC1FSU5WQUw7XG4tXHRcdGdvdG8gb3V0X3VubG9jaztcbi1cdH1cbmBgYFxuXG5UaGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gSWYgYGdwYy1cdTAwM2VhY3RpdmVgIGlzIGZhbHNlLCBpdCdzIG5vdyBwb3NzaWJsZSB0byBmYWlsIHdpdGhvdXQgYWNxdWlyaW5nIGEgc3BpbmxvY2ssIG9yIG1vcmUgcHJlY2lzZWx5LCB3aXRob3V0IGFjcXVpcmluZyBhIHdyaXRlIGxvY2sgb24gYGdwYy1cdTAwM2Vsb2NrYC4gVGhlIGBsb2NrZGVwX2Fzc2VydF9oZWxkKFx1MDAyNmdwYy1cdTAwM2VyZWZyZXNoX2xvY2spO2AgaXMgYWxzbyBtb3ZlZCBhYm92ZSwgYnV0IHRoaXMgbGlrZWx5IGRvZXNuJ3QgaGF2ZSBhcyBtdWNoIG9mIGFuIGltcGFjdC5cblxuSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCBzaXR1YXRpb25zIGNvdWxkIHRyaWdnZXIgdGhpcyBgIWdwYy1cdTAwM2VhY3RpdmVgIGNvbmRpdGlvbi4gVGhpcyBjaGFuZ2UgYWZmZWN0cyB0aGUgbG9jayBhY3F1aXNpdGlvbiBiZWhhdmlvci4gSWYgYGdwYy1cdTAwM2VhY3RpdmVgIGlzIGZhbHNlLCBpdCBtZWFucyB0aGF0IHRoZSB3cml0ZSBsb2NrIGlzIG5ldmVyIG5lZWRlZC4gQmVmb3JlIHRoaXMgY2hhbmdlLCB0aGUgbG9jayB3YXMgdW5uZWNlc3NhcmlseSBhY3F1aXJlZCwgd2hlbiBpdCB3YXNuJ3QgcmVxdWlyZWQuIEkgbmVlZCB0byB0cmFjayB0aGUgY2FsbGVycyBvZiB0aGlzIGZ1bmN0aW9uLiBMZXQgbWUgbG9vayB0aG9zZSB1cC4uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMjM5LCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUzLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MDUuODU0ODg5Njc4WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ4MTU5MzA5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIl9fa3ZtX2dwY19yZWZyZXNoXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL3BmbmNhY2hlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwidmlydC9rdm0vcGZuY2FjaGUuYz0xNTU9c3RhdGljIGt2bV9wZm5fdCBodmFfdG9fcGZuX3JldHJ5KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMpXFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1NS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjI1NjpzdGF0aWMgaW50IF9fa3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyB1aHZhKVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjU3LXtcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM9MzY0PWludCBrdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBsZW4pXFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM3OS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjM4MDpcXHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGMtXFx1MDAzZWdwYSwgdWh2YSk7XFxudmlydC9rdm0vcGZuY2FjaGUuYy0zODEtfVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYz0zOTU9c3RhdGljIGludCBfX2t2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEsXFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMS1cXHR9XFxudmlydC9rdm0vcGZuY2FjaGUuYzo0MjI6XFx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BhLCB1aHZhKTtcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjA1LjkwMzA1NTA5N1oiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM3ODUwMTk4MzMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGNvZGUgc25pcHBldHMsIHRoaW5raW5nIHRocm91Z2ggdGhlIGZsb3cgYXMgaWYgSSB3ZXJlIGFuYWx5emluZyBpdCBteXNlbGY6XG5cbioqVHJhY2luZyB0aGUgR1BDIFJlZnJlc2ggTG9naWMqKlxuXG5BbHJpZ2h0LCBzbyBJIHNlZSB0aGF0IGJvdGggYGt2bV9ncGNfcmVmcmVzaGAgYW5kIGBfX2t2bV9ncGNfYWN0aXZhdGVgIHVsdGltYXRlbHkgY2FsbCBgX19rdm1fZ3BjX3JlZnJlc2hgLiBUaGF0IHN1Z2dlc3RzIGBfX2t2bV9ncGNfcmVmcmVzaGAgaXMgdGhlIGNvcmUgZnVuY3Rpb24sIHRoZSB3b3JraG9yc2Ugb2YgdGhlIGdyb3VwLiBOb3csIHNpbmNlIGBrdm1fZ3BjX3JlZnJlc2hgIGlzIGVpdGhlciBleHBvcnRlZCBvciwgYXQgdGhlIHZlcnkgbGVhc3QsIHVzZWQgaW4gb3RoZXIgcGFydHMgb2YgdGhlIGNvZGUgYmFzZSwgSSBuZWVkIHRvIGdldCBhIGNsZWFyIHBpY3R1cmUgb2YgaXRzIHJvbGUuIFRvIGZ1bGx5IHVuZGVyc3RhbmQgd2hhdCdzIGhhcHBlbmluZywgSSBuZWVkIHRvIGxvb2sgdXBzdHJlYW0sIHdoaWNoIGFsc28gYXBwbGllcyB0byBgX19rdm1fZ3BjX2FjdGl2YXRlYC4gSSBuZWVkIHRvIGlkZW50aWZ5IHRoZSAqY2FsbGVycyogb2YgYm90aCBga3ZtX2dwY19yZWZyZXNoYCBhbmQgYF9fa3ZtX2dwY19hY3RpdmF0ZWAuIFRoYXQncyB3aGVyZSBJIG5lZWQgdG8gc3RhcnQgbXkgaW52ZXN0aWdhdGlvbiB0byB1bmRlcnN0YW5kIHRoZSBkaWZmZXJlbnQgY29udGV4dHMgaW4gd2hpY2ggdGhlc2UgZnVuY3Rpb25zIGFyZSBiZWluZyB1c2VkIGFuZCBob3cgdGhleSBmaXQgaW50byB0aGUgb3ZlcmFsbCBwaWN0dXJlLiBJZGVudGlmeWluZyB0aGUgb3JpZ2lucyB3aWxsIHNob3cgbWUgdGhlIGluaXRpYXRpbmcgZXZlbnRzIG9yIGNvbmRpdGlvbnMgdGhhdCB0cmlnZ2VyIHRoZXNlIGFsbC1pbXBvcnRhbnQgcmVmcmVzaCBhY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjozNDQ2LCJPdXRwdXRUb2tlbnMiOjI3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MDkuNjg4MDc3MjZaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MjAyMjM3Njc1NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJrdm1fZ3BjX3JlZnJlc2hcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImFyY2gveDg2L2t2bS94ODYuYz0zMjQyPXN0YXRpYyB2b2lkIGt2bV9zZXR1cF9ndWVzdF9wdmNsb2NrKHN0cnVjdCBwdmNsb2NrX3ZjcHVfdGltZV9pbmZvICpyZWZfaHZfY2xvY2ssXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMzI1Ni1cXG5hcmNoL3g4Ni9rdm0veDg2LmM6MzI1NzpcXHRcXHRpZiAoa3ZtX2dwY19yZWZyZXNoKGdwYywgb2Zmc2V0ICsgc2l6ZW9mKCpndWVzdF9odl9jbG9jaykpKVxcbmFyY2gveDg2L2t2bS94ODYuYy0zMjU4LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0zOD1zdGF0aWMgaW50IGt2bV94ZW5fc2hhcmVkX2luZm9faW5pdChzdHJ1Y3Qga3ZtICprdm0pXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtNTEtXFxuYXJjaC94ODYva3ZtL3hlbi5jOjUyOlxcdFxcdHJldCA9IGt2bV9ncGNfcmVmcmVzaChncGMsIFBBR0VfU0laRSk7XFxuYXJjaC94ODYva3ZtL3hlbi5jLTUzLVxcdFxcdGlmIChyZXQpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MTUzPXN0YXRpYyBpbnQgeGVuX2dldF9ndWVzdF9wdmNsb2NrKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSxcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0xNjQtXFxuYXJjaC94ODYva3ZtL3hlbi5jOjE2NTpcXHRcXHRyID0ga3ZtX2dwY19yZWZyZXNoKGdwYywgb2Zmc2V0ICsgc2l6ZW9mKCpodl9jbG9jaykpO1xcbmFyY2gveDg2L2t2bS94ZW4uYy0xNjYtXFx0XFx0aWYgKHIpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MzIxPXN0YXRpYyB2b2lkIGt2bV94ZW5fdXBkYXRlX3J1bnN0YXRlX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdiwgYm9vbCBhdG9taWMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDM4LVxcbmFyY2gveDg2L2t2bS94ZW4uYzo0Mzk6XFx0XFx0aWYgKGt2bV9ncGNfcmVmcmVzaChncGMxLCB1c2VyX2xlbjEpKVxcbmFyY2gveDg2L2t2bS94ZW4uYy00NDAtXFx0XFx0XFx0cmV0dXJuO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTYzOT12b2lkIGt2bV94ZW5faW5qZWN0X3BlbmRpbmdfZXZlbnRzKHN0cnVjdCBrdm1fdmNwdSAqdilcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy02NTYtXFxuYXJjaC94ODYva3ZtL3hlbi5jOjY1NzpcXHRcXHRpZiAoa3ZtX2dwY19yZWZyZXNoKGdwYywgc2l6ZW9mKHN0cnVjdCB2Y3B1X2luZm8pKSlcXG5hcmNoL3g4Ni9rdm0veGVuLmMtNjU4LVxcdFxcdFxcdHJldHVybjtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz02OTc9aW50IF9fa3ZtX3hlbl9oYXNfaW50ZXJydXB0KHN0cnVjdCBrdm1fdmNwdSAqdilcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy03MzAtXFxuYXJjaC94ODYva3ZtL3hlbi5jOjczMTpcXHRcXHRpZiAoa3ZtX2dwY19yZWZyZXNoKGdwYywgc2l6ZW9mKHN0cnVjdCB2Y3B1X2luZm8pKSkge1xcbmFyY2gveDg2L2t2bS94ZW4uYy03MzItXFx0XFx0XFx0LypcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz0xOTAxPXN0YXRpYyBpbnQga3ZtX3hlbl9zZXRfZXZ0Y2huKHN0cnVjdCBrdm1feGVuX2V2dGNobiAqeGUsIHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy0xOTQ0LVxcdFxcdGlkeCA9IHNyY3VfcmVhZF9sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UpO1xcbmFyY2gveDg2L2t2bS94ZW4uYzoxOTQ1OlxcdFxcdHJjID0ga3ZtX2dwY19yZWZyZXNoKGdwYywgUEFHRV9TSVpFKTtcXG5hcmNoL3g4Ni9rdm0veGVuLmMtMTk0Ni1cXHRcXHRzcmN1X3JlYWRfdW5sb2NrKFxcdTAwMjZrdm0tXFx1MDAzZXNyY3UsIGlkeCk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg9MTQ5MT1ib29sIGt2bV9ncGNfY2hlY2soc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBsZW4pO1xcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0OTMtLyoqXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE0OTQ6ICoga3ZtX2dwY19yZWZyZXNoIC0gdXBkYXRlIGEgcHJldmlvdXNseSBpbml0aWFsaXplZCBjYWNoZS5cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ5NS0gKlxcbi0tXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE1MDgtICovXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE1MDk6aW50IGt2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIGxlbik7XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE1MTAtXFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTE1NT1zdGF0aWMga3ZtX3Bmbl90IGh2YV90b19wZm5fcmV0cnkoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYylcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMjU1LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6MjU2OnN0YXRpYyBpbnQgX19rdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEpXFxudmlydC9rdm0vcGZuY2FjaGUuYy0yNTcte1xcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYy0zNjMtXFxudmlydC9rdm0vcGZuY2FjaGUuYzozNjQ6aW50IGt2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIGxlbilcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM2NS17XFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM3OS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjM4MDpcXHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGMtXFx1MDAzZWdwYSwgdWh2YSk7XFxudmlydC9rdm0vcGZuY2FjaGUuYy0zODEtfVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYz0zOTU9c3RhdGljIGludCBfX2t2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIHVodmEsXFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMS1cXHR9XFxudmlydC9rdm0vcGZuY2FjaGUuYzo0MjI6XFx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BhLCB1aHZhKTtcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyMy19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjExLjcxMDQ2MzcwNFoiLCJTZXEiOjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ2OTE1OTUzOTcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUEZOIENhY2hlIFBhdGNoKipcblxuT2theSwgc28gdGhlIGNoYW5nZSBJJ20gbG9va2luZyBhdCBpcyB0dWNrZWQgYXdheSBpbiBgdmlydC9rdm0vcGZuY2FjaGUuY2AuIEkgc2VlIGl0IG1vZGlmaWVzIHRoZSBgX19rdm1fZ3BjX3JlZnJlc2hgIGZ1bmN0aW9uLCB3aGljaCBpcyBpbnRlcmVzdGluZy4gQm90aCBga3ZtX2dwY19yZWZyZXNoYCBhbmQgYGt2bV9ncGNfYWN0aXZhdGVgIGNhbGwgaW50byB0aGlzLiBGcm9tIG15IGluaXRpYWwgZ2xhbmNlLCBga3ZtX2dwY19yZWZyZXNoYCBpdHNlbGYgZ2V0cyBjYWxsZWQgZnJvbSBjb2RlIGluIGBhcmNoL3g4Ni9rdm0veDg2LmNgIGFuZCBgYXJjaC94ODYva3ZtL3hlbi5jYC4gR2l2ZW4gdGhvc2UgbG9jYXRpb25zLCB0aGlzIGlzIGRlZmluaXRlbHkgdG91Y2hpbmcgY29yZSBLVk0ga2VybmVsIGxvZ2ljOyB0aGVyZSdzIG5vIHdheSBhcm91bmQgdGhhdC4gVGhpcyBpc24ndCBqdXN0IGEgbWlub3IgdHdlYWs7IHRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBiZWNhdXNlIGl0J3MgYWx0ZXJpbmcgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zLiBJdCdzIHRpbWUgdG8gZGlnIGludG8gdGhlIGFjdGl2YXRpb24gcGF0aC4gVGhlIG5leHQgbG9naWNhbCBzdGVwIGlzIHRvIGNoZWNrIHdoZXJlIGBrdm1fZ3BjX2FjdGl2YXRlYCBnZXRzIGNhbGxlZCBmcm9tLiBUaGF0IHdpbGwgZ2l2ZSBtZSBtb3JlIGNvbnRleHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjUzMjksIk91dHB1dFRva2VucyI6MjcsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNDMsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MTYuNDAyMDcyNTMxWiIsIlNlcSI6OCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjIwOTAwMzM5MzMsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwia3ZtX2dwY19hY3RpdmF0ZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL3g4Ni5jPTI0Mjg9c3RhdGljIHZvaWQga3ZtX3dyaXRlX3N5c3RlbV90aW1lKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgZ3BhX3Qgc3lzdGVtX3RpbWUsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjQ0NC1cXHRpZiAoc3lzdGVtX3RpbWUgXFx1MDAyNiAxKVxcbmFyY2gveDg2L2t2bS94ODYuYzoyNDQ1OlxcdFxcdGt2bV9ncGNfYWN0aXZhdGUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gucHZfdGltZSwgc3lzdGVtX3RpbWUgXFx1MDAyNiB+MVVMTCxcXG5hcmNoL3g4Ni9rdm0veDg2LmMtMjQ0Ni1cXHRcXHRcXHRcXHQgc2l6ZW9mKHN0cnVjdCBwdmNsb2NrX3ZjcHVfdGltZV9pbmZvKSk7XFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmM9MzIxPXN0YXRpYyB2b2lkIGt2bV94ZW5fdXBkYXRlX3J1bnN0YXRlX2d1ZXN0KHN0cnVjdCBrdm1fdmNwdSAqdiwgYm9vbCBhdG9taWMpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDg1LVxcdFxcdFxcdC8qXFxuYXJjaC94ODYva3ZtL3hlbi5jOjQ4NjpcXHRcXHRcXHQgKiBVc2Uga3ZtX2dwY19hY3RpdmF0ZSgpIGhlcmUgYmVjYXVzZSBpZiB0aGUgcnVuc3RhdGVcXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDg3LVxcdFxcdFxcdCAqIGFyZWEgd2FzIGNvbmZpZ3VyZWQgaW4gMzItYml0IG1vZGUgYW5kIG9ubHkgZXh0ZW5kc1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTQ5MC1cXHRcXHRcXHQgKi9cXG5hcmNoL3g4Ni9rdm0veGVuLmM6NDkxOlxcdFxcdFxcdGlmIChrdm1fZ3BjX2FjdGl2YXRlKGdwYzIsIGdwYzEtXFx1MDAzZWdwYSArIHVzZXJfbGVuMSxcXG5hcmNoL3g4Ni9rdm0veGVuLmMtNDkyLVxcdFxcdFxcdFxcdFxcdCAgICAgdXNlcl9sZW4yKSlcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYz03NDY9aW50IGt2bV94ZW5faHZtX3NldF9hdHRyKHN0cnVjdCBrdm0gKmt2bSwgc3RydWN0IGt2bV94ZW5faHZtX2F0dHIgKmRhdGEpXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtNzg1LVxcdFxcdFxcdH0gZWxzZSB7XFxuYXJjaC94ODYva3ZtL3hlbi5jOjc4NjpcXHRcXHRcXHRcXHRyID0ga3ZtX2dwY19hY3RpdmF0ZShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5zaGluZm9fY2FjaGUsXFxuYXJjaC94ODYva3ZtL3hlbi5jLTc4Ny1cXHRcXHRcXHRcXHRcXHRcXHQgICAgIGdmbl90b19ncGEoZ2ZuKSwgUEFHRV9TSVpFKTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy03OTctXFx0XFx0XFx0fSBlbHNlIHtcXG5hcmNoL3g4Ni9rdm0veGVuLmM6Nzk4OlxcdFxcdFxcdFxcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlX2h2YShcXHUwMDI2a3ZtLVxcdTAwM2VhcmNoLnhlbi5zaGluZm9fY2FjaGUsXFxuYXJjaC94ODYva3ZtL3hlbi5jLTc5OS1cXHRcXHRcXHRcXHRcXHRcXHRcXHQgKHVuc2lnbmVkIGxvbmcpaHZhLCBQQUdFX1NJWkUpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jPTkwNj1pbnQga3ZtX3hlbl92Y3B1X3NldF9hdHRyKHN0cnVjdCBrdm1fdmNwdSAqdmNwdSwgc3RydWN0IGt2bV94ZW5fdmNwdV9hdHRyICpkYXRhKVxcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTkyOC1cXG5hcmNoL3g4Ni9rdm0veGVuLmM6OTI5OlxcdFxcdFxcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnhlbi52Y3B1X2luZm9fY2FjaGUsXFxuYXJjaC94ODYva3ZtL3hlbi5jLTkzMC1cXHRcXHRcXHRcXHRcXHQgICAgIGRhdGEtXFx1MDAzZXUuZ3BhLCBzaXplb2Yoc3RydWN0IHZjcHVfaW5mbykpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTkzNy1cXG5hcmNoL3g4Ni9rdm0veGVuLmM6OTM4OlxcdFxcdFxcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlX2h2YShcXHUwMDI2dmNwdS1cXHUwMDNlYXJjaC54ZW4udmNwdV9pbmZvX2NhY2hlLFxcbmFyY2gveDg2L2t2bS94ZW4uYy05MzktXFx0XFx0XFx0XFx0XFx0XFx0IGRhdGEtXFx1MDAzZXUuaHZhLCBzaXplb2Yoc3RydWN0IHZjcHVfaW5mbykpO1xcbi0tXFxuYXJjaC94ODYva3ZtL3hlbi5jLTk1My1cXG5hcmNoL3g4Ni9rdm0veGVuLmM6OTU0OlxcdFxcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnhlbi52Y3B1X3RpbWVfaW5mb19jYWNoZSxcXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTU1LVxcdFxcdFxcdFxcdCAgICAgZGF0YS1cXHUwMDNldS5ncGEsXFxuLS1cXG5hcmNoL3g4Ni9rdm0veGVuLmMtOTg3LVxcdFxcdHN6MSA9IFBBR0VfU0laRSAtIChkYXRhLVxcdTAwM2V1LmdwYSBcXHUwMDI2IH5QQUdFX01BU0spO1xcbmFyY2gveDg2L2t2bS94ZW4uYzo5ODg6XFx0XFx0ciA9IGt2bV9ncGNfYWN0aXZhdGUoXFx1MDAyNnZjcHUtXFx1MDAzZWFyY2gueGVuLnJ1bnN0YXRlX2NhY2hlLFxcbmFyY2gveDg2L2t2bS94ZW4uYy05ODktXFx0XFx0XFx0XFx0ICAgICBkYXRhLVxcdTAwM2V1LmdwYSwgc3oxKTtcXG4tLVxcbmFyY2gveDg2L2t2bS94ZW4uYy05OTgtXFx0XFx0XFx0QlVHX09OKChkYXRhLVxcdTAwM2V1LmdwYSArIHN6MSkgXFx1MDAyNiB+UEFHRV9NQVNLKTtcXG5hcmNoL3g4Ni9rdm0veGVuLmM6OTk5OlxcdFxcdFxcdHIgPSBrdm1fZ3BjX2FjdGl2YXRlKFxcdTAwMjZ2Y3B1LVxcdTAwM2VhcmNoLnhlbi5ydW5zdGF0ZTJfY2FjaGUsXFxuYXJjaC94ODYva3ZtL3hlbi5jLTEwMDAtXFx0XFx0XFx0XFx0XFx0ICAgICBkYXRhLVxcdTAwM2V1LmdwYSArIHN6MSwgc3oyKTtcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaD0xNDM5PXZvaWQga3ZtX2dwY19pbml0KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHN0cnVjdCBrdm0gKmt2bSk7XFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ0MS0vKipcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTQ0MjogKiBrdm1fZ3BjX2FjdGl2YXRlIC0gcHJlcGFyZSBhIGNhY2hlZCBrZXJuZWwgbWFwcGluZyBhbmQgSFBBIGZvciBhIGdpdmVuIGd1ZXN0XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0NDMtICogICAgICAgICAgICAgICAgICAgIHBoeXNpY2FsIGFkZHJlc3MuXFxuLS1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ1Ni0gKi9cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTQ1NzppbnQga3ZtX2dwY19hY3RpdmF0ZShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgbGVuKTtcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ1OC1cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ1OS0vKipcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTQ2MDogKiBrdm1fZ3BjX2FjdGl2YXRlX2h2YSAtIHByZXBhcmUgYSBjYWNoZWQga2VybmVsIG1hcHBpbmcgYW5kIEhQQSBmb3IgYSBnaXZlbiBIVkEuXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0NjEtICpcXG4tLVxcbmluY2x1ZGUvbGludXgva3ZtX2hvc3QuaC0xNDY5LSAqXFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oOjE0NzA6ICogVGhlIHNlbWFudGljcyBvZiB0aGlzIGZ1bmN0aW9uIGFyZSB0aGUgc2FtZSBhcyB0aG9zZSBvZiBrdm1fZ3BjX2FjdGl2YXRlKCkuIEl0XFxuaW5jbHVkZS9saW51eC9rdm1faG9zdC5oLTE0NzEtICogbWVyZWx5IGJ5cGFzc2VzIGEgbGF5ZXIgb2YgYWRkcmVzcyB0cmFuc2xhdGlvbi5cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ3Mi0gKi9cXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0Lmg6MTQ3MzppbnQga3ZtX2dwY19hY3RpdmF0ZV9odmEoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBodmEsIHVuc2lnbmVkIGxvbmcgbGVuKTtcXG5pbmNsdWRlL2xpbnV4L2t2bV9ob3N0LmgtMTQ3NC1cXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM9MzgzPXZvaWQga3ZtX2dwY19pbml0KHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHN0cnVjdCBrdm0gKmt2bSlcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzk0LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6Mzk1OnN0YXRpYyBpbnQgX19rdm1fZ3BjX2FjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyB1aHZhLFxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzk2LVxcdFxcdFxcdCAgICAgIHVuc2lnbmVkIGxvbmcgbGVuKVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYy00MjQtXFxudmlydC9rdm0vcGZuY2FjaGUuYzo0MjU6aW50IGt2bV9ncGNfYWN0aXZhdGUoc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgZ3BhX3QgZ3BhLCB1bnNpZ25lZCBsb25nIGxlbilcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQyNi17XFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQzMy1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjQzNDpcXHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgZ3BhLCBLVk1fSFZBX0VSUl9CQUQsIGxlbik7XFxudmlydC9rdm0vcGZuY2FjaGUuYy00MzUtfVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDM2LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6NDM3OmludCBrdm1fZ3BjX2FjdGl2YXRlX2h2YShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIHVodmEsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDM4LXtcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDQxLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6NDQyOlxcdHJldHVybiBfX2t2bV9ncGNfYWN0aXZhdGUoZ3BjLCBJTlZBTElEX0dQQSwgdWh2YSwgbGVuKTtcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTQ0My19XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjE4LjQ5MjExMzMyNFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MDUwMzA0OTIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRnV6emluZyBUYXJnZXQgSWRlbnRpZmljYXRpb24qKlxuXG5Pa2F5LCBzbyB0aGlzIHBhdGNoIGlzIHRvdWNoaW5nIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYC4gSW1tZWRpYXRlbHksIEkgc2VlIGZ1enppbmcgcG90ZW50aWFsLiBUaGF0IGZ1bmN0aW9uLCBhbmQgaXRzIHJlbGF0aXZlcywgYXJlIGRlZmluaXRlbHkgd29ydGggYSBjbG9zZXIgbG9vay4gSSdtIHRoaW5raW5nIEkgc2hvdWxkIHplcm8gaW4gb24gdGhlIGZvbGxvd2luZyBzeW1ib2xzIGZvciBteSBpbml0aWFsIGZ1enppbmcgcnVuczogYGt2bV9ncGNfcmVmcmVzaGAsIGBrdm1fZ3BjX2FjdGl2YXRlYCwgYW5kIGBrdm1fZ3BjX2FjdGl2YXRlX2h2YWAuIEhvbGQgb24gYSBzZWNvbmQsIHRob3VnaC4uLiBJIG5lZWQgdG8gcmVtZW1iZXIgdGhhdCBgX19rdm1fZ3BjX3JlZnJlc2hgIGlzIHN0YXRpYywgc28gSSBzaG91bGQgYmUgbGlzdGluZyBvbmx5IHRoZSBub24tc3RhdGljIHN5bWJvbHMgZm9yIHRoZSBmdXp6aW5nIGFuYWx5c2lzLlxuXG5Ob3csIGJlZm9yZSBJIGdldCBjYXJyaWVkIGF3YXksIEkgbmVlZCB0byBtYWtlIHN1cmUgSSBoYXZlIHRoZSByaWdodCBlbnZpcm9ubWVudCBzZXR1cC4gQXJlIHRoZXJlIGFueSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIG9wdGlvbnMgSSBuZWVkIGVuYWJsZWQgZm9yIHRoZXNlIGZ1bmN0aW9ucyB0byBiZSBhY3RpdmU/IE9mIGNvdXJzZSwgS1ZNIHdpbGwgYmUgdGhlIG9idmlvdXMgcmVxdWlyZW1lbnQgaGVyZTogc28gSSdsbCBuZWVkIGBDT05GSUdfS1ZNYC4gSSBzaG91bGQgcXVpY2tseSBzY2FuIGB2aXJ0L2t2bS9LY29uZmlnYCBvciBgYXJjaC94ODYva3ZtL0tjb25maWdgIHRvIGNvbmZpcm0gYW55IG90aGVyIGRlcGVuZGVuY2llcyB0aGF0IG1pZ2h0IGJlIHJlbGV2YW50LlxuXG5cbiIsIklucHV0VG9rZW5zIjo3ODc4LCJPdXRwdXRUb2tlbnMiOjIzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjIyLjg5NzE0ODMxNloiLCJTZXEiOjEwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MzQyMzUxMjMxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgS1ZNXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIlwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJhcmNoL2FybTY0L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL2FybTY0L2t2bS9LY29uZmlnOjIwOm1lbnVjb25maWcgS1ZNXFxuYXJjaC9hcm02NC9rdm0vS2NvbmZpZy0yMS1cXHRib29sIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZz0xOD1pZiBWSVJUVUFMSVpBVElPTlxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvbG9vbmdhcmNoL2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL2xvb25nYXJjaC9rdm0vS2NvbmZpZy0yMS1cXHR0cmlzdGF0ZSBcXFwiS2VybmVsLWJhc2VkIFZpcnR1YWwgTWFjaGluZSAoS1ZNKSBzdXBwb3J0XFxcIlxcbi0tXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnPTE2PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE3LVxcbmFyY2gvbWlwcy9rdm0vS2NvbmZpZzoxODpjb25maWcgS1ZNXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTE5LVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL21pcHMva3ZtL0tjb25maWctMzAtXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnOjMxOmNvbmZpZyBLVk1fTUlQU19ERUJVR19DT1AwX0NPVU5URVJTXFxuYXJjaC9taXBzL2t2bS9LY29uZmlnLTMyLVxcdGJvb2wgXFxcIk1haW50YWluIGNvdW50ZXJzIGZvciBDT1AwIGFjY2Vzc2VzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE5LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyMDpjb25maWcgS1ZNXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjY6Y29uZmlnIEtWTV9CT09LM1NfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNy1cXHRib29sXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyOTpjb25maWcgS1ZNX0JPT0szU18zMl9IQU5ETEVSXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTMwLVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zMy1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MzQ6Y29uZmlnIEtWTV9CT09LM1NfNjRfSEFORExFUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0zNS1cXHRib29sXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMzctXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjM4OmNvbmZpZyBLVk1fQk9PSzNTX1BSX1BPU1NJQkxFXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTM5LVxcdGJvb2xcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00MS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDI6Y29uZmlnIEtWTV9CT09LM1NfSFZfUE9TU0lCTEVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDMtXFx0Ym9vbFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy00NC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6NDU6Y29uZmlnIEtWTV9CT09LM1NfMzJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNDYtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIGJvb2szc18zMiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTYxLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX0JPT0szU182NFxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy02My1cXHR0cmlzdGF0ZSBcXFwiS1ZNIHN1cHBvcnQgZm9yIFBvd2VyUEMgYm9vazNzXzY0IHByb2Nlc3NvcnNcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctNzgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjc5OmNvbmZpZyBLVk1fQk9PSzNTXzY0X0hWXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTgwLVxcdHRyaXN0YXRlIFxcXCJLVk0gZm9yIFBPV0VSNyBhbmQgbGF0ZXIgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctOTktXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX0JPT0szU182NF9QUlxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xMDEtXFx0dHJpc3RhdGUgXFxcIktWTSBzdXBwb3J0IHdpdGhvdXQgdXNpbmcgaHlwZXJ2aXNvciBtb2RlIGluIGhvc3RcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI1LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjY6Y29uZmlnIEtWTV9CT09LM1NfSFZfRVhJVF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI3LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTI4LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxMjk6Y29uZmlnIEtWTV9CT09LM1NfSFZfUDlfVElNSU5HXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTEzMC1cXHRib29sIFxcXCJEZXRhaWxlZCB0aW1pbmcgZm9yIHRoZSBQOSBlbnRyeSBwb2ludFxcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNDEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE0Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QOF9USU1JTkdcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTQzLVxcdGJvb2wgXFxcIkRldGFpbGVkIHRpbWluZyBmb3IgaHlwZXJ2aXNvciByZWFsLW1vZGUgY29kZSAoZm9yIFBPV0VSOClcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTU2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxNTc6Y29uZmlnIEtWTV9CT09LM1NfSFZfTkVTVEVEX1BNVV9XT1JLQVJPVU5EXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE1OC1cXHRib29sIFxcXCJOZXN0ZWQgTDAgaG9zdCB3b3JrYXJvdW5kIGZvciBMMSBLVk0gaG9zdCBQTVUgaGFuZGxpbmcgYnVnXFxcIiBpZiBFWFBFUlRcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjE3Mjpjb25maWcgS1ZNX0JPT0szU19IVl9QTVVcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTczLVxcdHRyaXN0YXRlIFxcXCJIeXBlcnZpc29yIFBlcmYgZXZlbnRzIGZvciBLVk0gQm9vazNzLUhWXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTE4My1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MTg0OmNvbmZpZyBLVk1fQk9PS0VfSFZcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg1LVxcdGJvb2xcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTg2LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxODc6Y29uZmlnIEtWTV9FWElUX1RJTUlOR1xcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0xODgtXFx0Ym9vbCBcXFwiRGV0YWlsZWQgZXhpdCB0aW1pbmdcXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk3LVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoxOTg6Y29uZmlnIEtWTV9FNTAwVjJcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMTk5LVxcdGJvb2wgXFxcIktWTSBzdXBwb3J0IGZvciBQb3dlclBDIEU1MDB2MiBwcm9jZXNzb3JzXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxMi1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjEzOmNvbmZpZyBLVk1fRTUwME1DXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTIxNC1cXHRib29sIFxcXCJLVk0gc3VwcG9ydCBmb3IgUG93ZXJQQyBFNTAwTUMvRTU1MDAvRTY1MDAgcHJvY2Vzc29yc1xcXCJcXG4tLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yMjgtXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnOjIyOTpjb25maWcgS1ZNX01QSUNcXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjMwLVxcdGJvb2wgXFxcIktWTSBpbi1rZXJuZWwgTVBJQyBlbXVsYXRpb25cXFwiXFxuLS1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWctMjQwLVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZzoyNDE6Y29uZmlnIEtWTV9YSUNTXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI0Mi1cXHRib29sIFxcXCJLVk0gaW4ta2VybmVsIFhJQ1MgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC9wb3dlcnBjL2t2bS9LY29uZmlnLTI1MC1cXG5hcmNoL3Bvd2VycGMva3ZtL0tjb25maWc6MjUxOmNvbmZpZyBLVk1fWElWRVxcbmFyY2gvcG93ZXJwYy9rdm0vS2NvbmZpZy0yNTItXFx0Ym9vbFxcbi0tXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnPTIyPXNvdXJjZSBcXFwiYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9taWNyb3dhdHQvS2NvbmZpZ1xcXCJcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjMtXFxuYXJjaC9wb3dlcnBjL3BsYXRmb3Jtcy9LY29uZmlnOjI0OmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3Bvd2VycGMvcGxhdGZvcm1zL0tjb25maWctMjUtXFx0Ym9vbCBcXFwiS1ZNIEd1ZXN0IHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC9yaXNjdi9rdm0vS2NvbmZpZy0xOS1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnOjIwOmNvbmZpZyBLVk1cXG5hcmNoL3Jpc2N2L2t2bS9LY29uZmlnLTIxLVxcdHRyaXN0YXRlIFxcXCJLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIChLVk0pIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc9MTc9aWYgVklSVFVBTElaQVRJT05cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMTgtXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnOjE5OmNvbmZpZyBLVk1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWctMjAtXFx0ZGVmX3RyaXN0YXRlIHlcXG4tLVxcbmFyY2gvczM5MC9rdm0vS2NvbmZpZy00Ni1cXG5hcmNoL3MzOTAva3ZtL0tjb25maWc6NDc6Y29uZmlnIEtWTV9TMzkwX1VDT05UUk9MXFxuYXJjaC9zMzkwL2t2bS9LY29uZmlnLTQ4LVxcdGJvb2wgXFxcIlVzZXJzcGFjZSBjb250cm9sbGVkIHZpcnR1YWwgbWFjaGluZXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9LY29uZmlnPTgyNj1zb3VyY2UgXFxcImFyY2gveDg2L3hlbi9LY29uZmlnXFxcIlxcbmFyY2gveDg2L0tjb25maWctODI3LVxcbmFyY2gveDg2L0tjb25maWc6ODI4OmNvbmZpZyBLVk1fR1VFU1RcXG5hcmNoL3g4Ni9LY29uZmlnLTgyOS1cXHRib29sIFxcXCJLVk0gR3Vlc3Qgc3VwcG9ydCAoaW5jbHVkaW5nIGt2bWNsb2NrKVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTE4PWlmIFZJUlRVQUxJWkFUSU9OXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTktXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjA6Y29uZmlnIEtWTV9YODZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMS1cXHRkZWZfdHJpc3RhdGUgS1ZNIGlmIChLVk1fSU5URUwgIT0gbiB8fCBLVk1fQU1EICE9IG4pXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy01MS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo1Mjpjb25maWcgS1ZNXFxuYXJjaC94ODYva3ZtL0tjb25maWctNTMtXFx0dHJpc3RhdGUgXFxcIktlcm5lbC1iYXNlZCBWaXJ0dWFsIE1hY2hpbmUgKEtWTSkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTY4LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjY5OmNvbmZpZyBLVk1fV0VSUk9SXFxuYXJjaC94ODYva3ZtL0tjb25maWctNzAtXFx0Ym9vbCBcXFwiQ29tcGlsZSBLVk0gd2l0aCAtV2Vycm9yXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctODItXFxuYXJjaC94ODYva3ZtL0tjb25maWc6ODM6Y29uZmlnIEtWTV9TV19QUk9URUNURURfVk1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy04NC1cXHRib29sIFxcXCJFbmFibGUgc3VwcG9ydCBmb3IgS1ZNIHNvZnR3YXJlLXByb3RlY3RlZCBWTXNcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy05NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzo5Njpjb25maWcgS1ZNX0lOVEVMXFxuYXJjaC94ODYva3ZtL0tjb25maWctOTctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgSW50ZWwgKGFuZCBjb21wYXRpYmxlKSBwcm9jZXNzb3JzIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDYtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTA3OmNvbmZpZyBLVk1fSU5URUxfUFJPVkVfVkVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMDgtICAgICAgICBib29sIFxcXCJDaGVjayB0aGF0IGd1ZXN0cyBkbyBub3QgcmVjZWl2ZSAjVkUgZXhjZXB0aW9uc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnPTEyMj1jb25maWcgWDg2X1NHWF9LVk1cXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTEzMy1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxMzQ6Y29uZmlnIEtWTV9JTlRFTF9URFhcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xMzUtXFx0Ym9vbCBcXFwiSW50ZWwgVHJ1c3QgRG9tYWluIEV4dGVuc2lvbnMgKFREWCkgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE0NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNDY6Y29uZmlnIEtWTV9BTURcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNDctXFx0dHJpc3RhdGUgXFxcIktWTSBmb3IgQU1EIHByb2Nlc3NvcnMgc3VwcG9ydFxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE1NS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxNTY6Y29uZmlnIEtWTV9BTURfU0VWXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTU3LVxcdGJvb2wgXFxcIkFNRCBTZWN1cmUgRW5jcnlwdGVkIFZpcnR1YWxpemF0aW9uIChTRVYpIHN1cHBvcnRcXFwiXFxuLS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xNzEtXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MTcyOmNvbmZpZyBLVk1fSU9BUElDXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTczLVxcdGJvb2wgXFxcIkkvTyBBUElDLCBQSUMsIGFuZCBQSVQgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMTgxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjE4Mjpjb25maWcgS1ZNX1NNTVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE4My1cXHRib29sIFxcXCJTeXN0ZW0gTWFuYWdlbWVudCBNb2RlIGVtdWxhdGlvblxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTE5Mi1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoxOTM6Y29uZmlnIEtWTV9IWVBFUlZcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0xOTQtXFx0Ym9vbCBcXFwiU3VwcG9ydCBmb3IgTWljcm9zb2Z0IEh5cGVyLVYgZW11bGF0aW9uXFxcIlxcbi0tXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjA2LVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIwNzpjb25maWcgS1ZNX1hFTlxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIwOC1cXHRib29sIFxcXCJTdXBwb3J0IGZvciBYZW4gaHlwZXJjYWxsIGludGVyZmFjZVxcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIxNS1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMTY6Y29uZmlnIEtWTV9QUk9WRV9NTVVcXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZy0yMTctXFx0Ym9vbCBcXFwiUHJvdmUgS1ZNIE1NVSBjb3JyZWN0bmVzc1xcXCJcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIyOC1cXG5hcmNoL3g4Ni9rdm0vS2NvbmZpZzoyMjk6Y29uZmlnIEtWTV9FWFRFUk5BTF9XUklURV9UUkFDS0lOR1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMC1cXHRib29sXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjMxLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnOjIzMjpjb25maWcgS1ZNX01BWF9OUl9WQ1BVU1xcbmFyY2gveDg2L2t2bS9LY29uZmlnLTIzMy1cXHRpbnQgXFxcIk1heGltdW0gbnVtYmVyIG9mIHZDUFVzIHBlciBLVk0gZ3Vlc3RcXFwiXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTMtXFxudmlydC9rdm0vS2NvbmZpZzo0OmNvbmZpZyBLVk1fQ09NTU9OXFxudmlydC9rdm0vS2NvbmZpZy01LSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTM5PWNvbmZpZyBORUVEX0tWTV9ESVJUWV9SSU5HX1dJVEhfQklUTUFQXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnLTQyLVxcbnZpcnQva3ZtL0tjb25maWc6NDM6Y29uZmlnIEtWTV9NTUlPXFxudmlydC9rdm0vS2NvbmZpZy00NC0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNDUtXFxudmlydC9rdm0vS2NvbmZpZzo0Njpjb25maWcgS1ZNX0FTWU5DX1BGXFxudmlydC9rdm0vS2NvbmZpZy00Ny0gICAgICAgYm9vbFxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy00OS0jIFRvZ2dsZSB0byBzd2l0Y2ggYmV0d2VlbiBkaXJlY3Qgbm90aWZpY2F0aW9uIGFuZCBiYXRjaCBqb2JcXG52aXJ0L2t2bS9LY29uZmlnOjUwOmNvbmZpZyBLVk1fQVNZTkNfUEZfU1lOQ1xcbnZpcnQva3ZtL0tjb25maWctNTEtICAgICAgIGJvb2xcXG4tLVxcbnZpcnQva3ZtL0tjb25maWc9NTk9Y29uZmlnIEhBVkVfS1ZNX0NQVV9SRUxBWF9JTlRFUkNFUFRcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjEtXFxudmlydC9rdm0vS2NvbmZpZzo2Mjpjb25maWcgS1ZNX1ZGSU9cXG52aXJ0L2t2bS9LY29uZmlnLTYzLSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTY1PWNvbmZpZyBIQVZFX0tWTV9JTlZBTElEX1dBS0VVUFNcXG4tLVxcbnZpcnQva3ZtL0tjb25maWctNjctXFxudmlydC9rdm0vS2NvbmZpZzo2ODpjb25maWcgS1ZNX0dFTkVSSUNfRElSVFlMT0dfUkVBRF9QUk9URUNUXFxudmlydC9rdm0vS2NvbmZpZy02OS0gICAgICAgYm9vbFxcbnZpcnQva3ZtL0tjb25maWctNzAtXFxudmlydC9rdm0vS2NvbmZpZzo3MTpjb25maWcgS1ZNX0dFTkVSSUNfUFJFX0ZBVUxUX01FTU9SWVxcbnZpcnQva3ZtL0tjb25maWctNzItICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTczLVxcbnZpcnQva3ZtL0tjb25maWc6NzQ6Y29uZmlnIEtWTV9DT01QQVRcXG52aXJ0L2t2bS9LY29uZmlnLTc1LSAgICAgICBkZWZfYm9vbCB5XFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTkxPWNvbmZpZyBIQVZFX0tWTV9QTV9OT1RJRklFUlxcbi0tXFxudmlydC9rdm0vS2NvbmZpZy05My1cXG52aXJ0L2t2bS9LY29uZmlnOjk0OmNvbmZpZyBLVk1fR0VORVJJQ19IQVJEV0FSRV9FTkFCTElOR1xcbnZpcnQva3ZtL0tjb25maWctOTUtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTk2LVxcbnZpcnQva3ZtL0tjb25maWc6OTc6Y29uZmlnIEtWTV9FTElERV9UTEJfRkxVU0hfSUZfWU9VTkdcXG52aXJ0L2t2bS9LY29uZmlnLTk4LSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy05OS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwMDpjb25maWcgS1ZNX01NVV9MT0NLTEVTU19BR0lOR1xcbnZpcnQva3ZtL0tjb25maWctMTAxLSAgICAgICBib29sXFxudmlydC9rdm0vS2NvbmZpZy0xMDItXFxudmlydC9rdm0vS2NvbmZpZzoxMDM6Y29uZmlnIEtWTV9HRU5FUklDX01FTU9SWV9BVFRSSUJVVEVTXFxudmlydC9rdm0vS2NvbmZpZy0xMDQtICAgICAgIGJvb2xcXG52aXJ0L2t2bS9LY29uZmlnLTEwNS1cXG52aXJ0L2t2bS9LY29uZmlnOjEwNjpjb25maWcgS1ZNX0dVRVNUX01FTUZEXFxudmlydC9rdm0vS2NvbmZpZy0xMDctICAgICAgIHNlbGVjdCBYQVJSQVlfTVVMVElcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MjYuMzIwNjcxNDI1WiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5ODQ5MDE3NjcsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIENvbmZpZ3VyYXRpb24gRGVlcCBEaXZlKipcblxuT2theSwgc28gSSBuZWVkIHRvIGNvbmZpZ3VyZSBLVk0uIEJ1dCB3YWl0IGEgbWludXRlLCBJIHJlbWVtYmVyIHNlZWluZyBgdmlydC9rdm0vcGZuY2FjaGUuY2Agc29tZXdoZXJlIGluIHRoZSBrZXJuZWwgc291cmNlLCBhbmQgSSdtIHByZXR0eSBzdXJlIHRoYXQgZmlsZSBpcyBvbmx5IGNvbXBpbGVkIGlmIEtWTSBpcyBlbmFibGVkLiBUaGF0IHJpbmdzIGEgYmVsbC4uLiBMZXQncyB1c2UgdGhhdCBhcyBhIGNsdWUgYW5kIGh1bnQgZm9yIHRoZSBLVk0gY29uZmlndXJhdGlvbi4gTXkgaW50dWl0aW9uIHN1Z2dlc3RzIHRoZSBgdmlydC9rdm0vTWFrZWZpbGVgIGlzIHRoZSBwbGFjZSB0byBzdGFydC4gTGV0J3Mgc2VlIGlmIG15IG1lbW9yeSBpcyBhY2N1cmF0ZS4gSSdsbCBjaGVjayBpdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTI2MTEsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo0NiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMDoyOS4zMDU1NzYyNjJaIiwiU2VxIjoxMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjk2NzA2ODc4LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJwZm5jYWNoZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MjkuNDAyMjkzMDcxWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0NTIxMDM2MzIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRoZSB0aG91Z2h0IHByb2Nlc3M6XG5cbioqRGl2aW5nIGludG8gdGhlIEtWTSBNYWtlZmlsZSoqXG5cbkFscmlnaHQsIHRpbWUgdG8gZ2V0IG15IGhhbmRzIGRpcnR5LiBJIG5lZWQgdG8gdW5kZXJzdGFuZCBob3cgdGhpcyBLVk0gbW9kdWxlIGlzIGJ1aWx0LCBzbyB0aGUgZmlyc3QgbG9naWNhbCBzdGVwIGlzIHRvIGV4YW1pbmUgdGhlIGB2aXJ0L2t2bS9NYWtlZmlsZWAuIExldCdzIHNlZSB3aGF0IHNlY3JldHMgdGhpcyBmaWxlIGhvbGRzLiBJdCdzIHRoZSBjZW50cmFsIHBsYXlib29rIGZvciBob3cgdGhlIEtWTSBjb21wb25lbnRzIGFyZSBjb21waWxlZCBhbmQgbGlua2VkLCBzbyBpdCdzIGEgY3JpdGljYWwgc3RhcnRpbmcgcG9pbnQgdG8gdW5kZXJzdGFuZCB0aGUgYnVpbGQgcHJvY2Vzcy4gSSdtIGV4cGVjdGluZyB0byBmaW5kIHRoZSBkZXBlbmRlbmN5IHRyZWUsIGluY2x1ZGUgcGF0aHMsIGNvbXBpbGF0aW9uIGZsYWdzLCBhbmQgbGlua2luZyBydWxlcyB0aGF0IGRlZmluZSB0aGUgS1ZNJ3MgYnVpbGQgcHJvY2Vzcy4gVGhpcyBmaWxlIHdpbGwgdGVsbCBtZSB3aGljaCBzb3VyY2UgZmlsZXMgYXJlIGludm9sdmVkLCB3aGljaCBvYmplY3QgZmlsZXMgdGhleSBnZW5lcmF0ZSwgYW5kIGhvdyB0aG9zZSBvYmplY3QgZmlsZXMgY29tZSB0b2dldGhlciB0byBjcmVhdGUgdGhlIGZpbmFsIEtWTSBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEyODE3LCJPdXRwdXRUb2tlbnMiOjMzLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MzMuODU0Mzk5OTQxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwMDYwLCJFcnJvciI6InRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9rdm0vTWFrZWZpbGVcIixcbiAgXCJGaXJzdExpbmVcIjogMSxcbiAgXCJMaW5lQ291bnRcIjogMTAwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcInRoZSBmaWxlIGRvZXMgbm90IGV4aXN0XCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjMzLjg1NDQ2NTg1MloiLCJTZXEiOjE1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNDMzMTY5NjU5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBzdW1tYXJ5IG9mIG15IHRob3VnaHQgcHJvY2VzcywgYXMgcmVxdWVzdGVkOlxuXG4qKk5hdmlnYXRpbmcgdGhlIFZpcnR1YWxpemF0aW9uIExhbmRzY2FwZSoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIHRoYXQgYHZpcnQva3ZtL2Agd2FzIGEgc3RhbmRhcmQgZGlyZWN0b3J5LCBidXQgdGhlIHN5c3RlbSBpcyB0ZWxsaW5nIG1lIGl0J3Mgbm90LiBUaGF04oCZcyB1bnVzdWFsLCBhbmQgZGVmaW5pdGVseSB3b3J0aCBhIGRvdWJsZS1jaGVjay4gSSBuZWVkIHRvIHZlcmlmeSB3aGF0J3MgYWN0dWFsbHkgdGhlcmUuIExldCBtZSBzZWUuLi4gSSBuZWVkIHRvIGV4YW1pbmUgdGhlIGNvbnRlbnRzIG9mIGB2aXJ0L2t2bS9gIHRvIHVuZGVyc3RhbmQgd2hhdCdzICpyZWFsbHkqIHByZXNlbnQgYXQgdGhhdCBsb2NhdGlvbiwgb3IgaWYgaXQgZG9lc24ndCBleGlzdCBhdCBhbGwsIHdoaWNoIHdvdWxkIGJlIGp1c3QgYXMgaW5mb3JtYXRpdmUuIEkgaGF2ZSB0byByZXNvbHZlIHRoaXMgcGF0aCdzIHN0YXR1cyBiZWZvcmUgSSBjYW4gY29udGludWUgd2l0aCB3aGF0ZXZlciBJIHdhcyBkb2luZy5cblxuXG4iLCJJbnB1dFRva2VucyI6MTMwNDQsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjM3LjI4NzYzOTkyMVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJjb2Rlc2VhcmNoLWRpci1pbmRleCIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYzNTUwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRGlyXCI6IFwidmlydC9rdm0vXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIkZpbGVzXCI6IFtcbiAgICBcImFzeW5jX3BmLmNcIixcbiAgICBcImFzeW5jX3BmLmhcIixcbiAgICBcImJpbmFyeV9zdGF0cy5jXCIsXG4gICAgXCJjb2FsZXNjZWRfbW1pby5jXCIsXG4gICAgXCJjb2FsZXNjZWRfbW1pby5oXCIsXG4gICAgXCJkaXJ0eV9yaW5nLmNcIixcbiAgICBcImV2ZW50ZmQuY1wiLFxuICAgIFwiZ3Vlc3RfbWVtZmQuY1wiLFxuICAgIFwiaXJxY2hpcC5jXCIsXG4gICAgXCJrdm1fbWFpbi5jXCIsXG4gICAgXCJrdm1fbW0uaFwiLFxuICAgIFwicGZuY2FjaGUuY1wiLFxuICAgIFwidmZpby5jXCIsXG4gICAgXCJ2ZmlvLmhcIlxuICBdLFxuICBcIlN1YmRpcnNcIjogbnVsbFxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6MzcuMjg3NzA0ODcxWiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMxMTYxMTI0NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTmF2aWdhdGluZyB0aGUgS1ZNIEJ1aWxkIFByb2Nlc3MqKlxuXG5Pa2F5LCBzbyBJJ20gdHJ5aW5nIHRvIGZpZ3VyZSBvdXQgd2hlcmUgdGhpcyBkYW1uIG1ha2VmaWxlIGxpdmVzIGZvciB0aGUgS1ZNIHZpcnR1YWxpemF0aW9uIG1vZHVsZS4gTXkgaW5pdGlhbCBodW5jaCB3YXMgdGhhdCBpdCB3b3VsZCBiZSBpbiBgdmlydC9rdm0vYCwgYnV0IEknbSBkcmF3aW5nIGEgYmxhbmsgdGhlcmUuIFBlcmhhcHMgaXQncyBuYW1lZCBzb21ldGhpbmcgbGVzcyBvYnZpb3VzLCBsaWtlIGBrdm0ubWtgPyBObywgaGFuZyBvbiwgdGhhdCBkaXJlY3RvcnkncyBzdHJ1Y3R1cmUganVzdCBkb2Vzbid0IGZlZWwgcmlnaHQgZm9yIGEgdG9wLWxldmVsIG1ha2VmaWxlLiBMZXQncyBiYWNrdHJhY2sgYW5kIHNlZSBpZiBpdCdzIGdvdCBhIG1vcmUgZ2VuZXJhbCBtYWtlZmlsZSBpbiB0aGUgYHZpcnQvYCBkaXJlY3RvcnkgaXRzZWxmLiBZZXAsIHRpbWUgdG8gY2hlY2sgYHZpcnQvTWFrZWZpbGVgLiBUaGF0J3Mgd2hlcmUgaXQgaGFzIHRvIGJlLCBsZXQncyBzZWUgd2hhdCdzIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzM3NSwiT3V0cHV0VG9rZW5zIjozMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ4LCJUb29sQ2FsbHMiOlsiY29kZXNlYXJjaC1kaXItaW5kZXgiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMDo0MC40MDM4MjE2NTZaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTQ4MjAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG4gICAyOlxcdG9iai15XFx0Kz0gbGliL1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMDo0MC40MDM4Nzk5NzZaIiwiU2VxIjoxOSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI4NDY2NjcwMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipUcmFjaW5nIHRoZSBDb21waWxhdGlvbiBvZiBgdmlydC9rdm0vcGZuY2FjaGUuY2AqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB3aGVyZSB0aGUgYHZpcnQva3ZtL3BmbmNhY2hlLmNgIGZpbGUgaXMgYmVpbmcgY29tcGlsZWQgd2l0aGluIHRoZSBrZXJuZWwgYnVpbGQgcHJvY2Vzcy4gTXkgaW5zdGluY3QgdGVsbHMgbWUgdG8gc3RhcnQgZGlnZ2luZyB0aHJvdWdoIHRoZSBLVk0tc3BlY2lmaWMgYXJlYXMuIEZpcnN0LCBJIHNob3VsZCB6ZXJvIGluIG9uIHRoZSByZWxldmFudCBgTWFrZWZpbGVgLiBUaGUgbW9zdCBsaWtlbHkgcGxhY2UgdG8gc3RhcnQgaXMgd2l0aGluIHRoZSB4ODYgYXJjaGl0ZWN0dXJlIGRpcmVjdG9yeSwgZ2l2ZW4gaXRzIHByb21pbmVuY2UgaW4gS1ZNLiBMZXQncyBzZWUuLi4gSSdsbCBjaGVjayBgYXJjaC94ODYva3ZtL01ha2VmaWxlYC4gSG9wZWZ1bGx5LCB0aGF0IHdpbGwgY29udGFpbiB0aGUgbmVjZXNzYXJ5IGRpcmVjdGl2ZXMgb3IgaW5jbHVkZXMgdG8gcmV2ZWFsIHRoZSBjb21waWxhdGlvbiB1bml0J3MgaW5jbHVzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMzY1MSwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM1LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6NDMuNjg4NTUxNTg3WiIsIlNlcSI6MjAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NDU1NzIyOTIsIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInBmbmNhY2hlXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6NDQuMTM0MTMyMjI5WiIsIlNlcSI6MjEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMzNjI2MTc3MTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBhIHN1bW1hcnkgb2YgbXkgdGhvdWdodCBwcm9jZXNzOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLVk0geDg2IE1ha2VmaWxlKipcblxuQWxyaWdodCwgdGltZSB0byBkaWcgaW4uIEkgbmVlZCB0byB1bmRlcnN0YW5kIHNvbWV0aGluZyByZWxhdGVkIHRvIHRoZSBLVk0gYXJjaGl0ZWN0dXJlIG9uIHg4Niwgc28gbXkgZmlyc3Qgc3RlcCBpcyB0byBnZXQgbXkgYmVhcmluZ3MuIFRoZSBsb2dpY2FsIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBgYXJjaC94ODYva3ZtL01ha2VmaWxlYC4gVGhhdCBmaWxlIGlzIHRoZSBjZW50cmFsIHBvaW50IGZvciBidWlsZGluZyB0aGUgS1ZNIGNvbXBvbmVudHMgdGhhdCBhcmUgc3BlY2lmaWMgdG8gdGhlIHg4NiBhcmNoaXRlY3R1cmUsIGl0J3Mgd2hlcmUgdGhlIGNvcmUgbG9naWMgdXN1YWxseSByZXNpZGVzLiBJJ20gZ29pbmcgdG8gY2FyZWZ1bGx5IHJlYWQgdGhyb3VnaCBpdC4gSSdtIGxvb2tpbmcgZm9yIHRoZSByZWxldmFudCBkZXBlbmRlbmNpZXMgYW5kIGJ1aWxkIGluc3RydWN0aW9ucy4gVGhhdCBmaWxlIGlzIGtleSB0byBwaWVjaW5nIHRvZ2V0aGVyIHdoYXRldmVyIGlzc3VlIGlzIGF0IGhhbmQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEzODc0LCJPdXRwdXRUb2tlbnMiOjM3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6NDcuNDk2NzU0MThaIiwiU2VxIjoyMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTAzMDYwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcImFyY2gveDg2L2t2bS9NYWtlZmlsZVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHRcXG4gICAzOlxcdGNjZmxhZ3MteSArPSAtSSAkKHNyY3RyZWUpL2FyY2gveDg2L2t2bVxcbiAgIDQ6XFx0Y2NmbGFncy0kKENPTkZJR19LVk1fV0VSUk9SKSArPSAtV2Vycm9yXFxuICAgNTpcXHRcXG4gICA2OlxcdGluY2x1ZGUgJChzcmN0cmVlKS92aXJ0L2t2bS9NYWtlZmlsZS5rdm1cXG4gICA3OlxcdFxcbiAgIDg6XFx0a3ZtLXlcXHRcXHRcXHQrPSB4ODYubyBlbXVsYXRlLm8gaXJxLm8gbGFwaWMubyBjcHVpZC5vIHBtdS5vIG10cnIubyBcXFxcXFxuICAgOTpcXHRcXHRcXHRcXHQgICBkZWJ1Z2ZzLm8gbW11L21tdS5vIG1tdS9wYWdlX3RyYWNrLm8gbW11L3NwdGUub1xcbiAgMTA6XFx0XFxuICAxMTpcXHRrdm0tJChDT05GSUdfWDg2XzY0KSArPSBtbXUvdGRwX2l0ZXIubyBtbXUvdGRwX21tdS5vXFxuICAxMjpcXHRrdm0tJChDT05GSUdfS1ZNX0lPQVBJQykgKz0gaTgyNTkubyBpODI1NC5vIGlvYXBpYy5vXFxuICAxMzpcXHRrdm0tJChDT05GSUdfS1ZNX0hZUEVSVikgKz0gaHlwZXJ2Lm9cXG4gIDE0OlxcdGt2bS0kKENPTkZJR19LVk1fWEVOKVxcdCs9IHhlbi5vXFxuICAxNTpcXHRrdm0tJChDT05GSUdfS1ZNX1NNTSlcXHQrPSBzbW0ub1xcbiAgMTY6XFx0XFxuICAxNzpcXHRrdm0taW50ZWwteVxcdFxcdCs9IHZteC92bXgubyB2bXgvdm1lbnRlci5vIHZteC9wbXVfaW50ZWwubyB2bXgvdm1jczEyLm8gXFxcXFxcbiAgMTg6XFx0XFx0XFx0XFx0ICAgdm14L25lc3RlZC5vIHZteC9wb3N0ZWRfaW50ci5vIHZteC9tYWluLm9cXG4gIDE5OlxcdFxcbiAgMjA6XFx0a3ZtLWludGVsLSQoQ09ORklHX1g4Nl9TR1hfS1ZNKVxcdCs9IHZteC9zZ3gub1xcbiAgMjE6XFx0a3ZtLWludGVsLSQoQ09ORklHX0tWTV9IWVBFUlYpXFx0Kz0gdm14L2h5cGVydi5vIHZteC9oeXBlcnZfZXZtY3Mub1xcbiAgMjI6XFx0a3ZtLWludGVsLSQoQ09ORklHX0tWTV9JTlRFTF9URFgpXFx0Kz0gdm14L3RkeC5vXFxuICAyMzpcXHRcXG4gIDI0OlxcdGt2bS1hbWQteVxcdFxcdCs9IHN2bS9zdm0ubyBzdm0vdm1lbnRlci5vIHN2bS9wbXUubyBzdm0vbmVzdGVkLm8gc3ZtL2F2aWMub1xcbiAgMjU6XFx0XFxuICAyNjpcXHRrdm0tYW1kLSQoQ09ORklHX0tWTV9BTURfU0VWKVxcdCs9IHN2bS9zZXYub1xcbiAgMjc6XFx0a3ZtLWFtZC0kKENPTkZJR19LVk1fSFlQRVJWKVxcdCs9IHN2bS9oeXBlcnYub1xcbiAgMjg6XFx0XFxuICAyOTpcXHRpZmRlZiBDT05GSUdfSFlQRVJWXFxuICAzMDpcXHRrdm0teVxcdFxcdFxcdCs9IGt2bV9vbmh5cGVydi5vXFxuICAzMTpcXHRrdm0taW50ZWwteVxcdFxcdCs9IHZteC92bXhfb25oeXBlcnYubyB2bXgvaHlwZXJ2X2V2bWNzLm9cXG4gIDMyOlxcdGt2bS1hbWQteVxcdFxcdCs9IHN2bS9zdm1fb25oeXBlcnYub1xcbiAgMzM6XFx0ZW5kaWZcXG4gIDM0OlxcdFxcbiAgMzU6XFx0b2JqLSQoQ09ORklHX0tWTV9YODYpXFx0Kz0ga3ZtLm9cXG4gIDM2OlxcdG9iai0kKENPTkZJR19LVk1fSU5URUwpXFx0Kz0ga3ZtLWludGVsLm9cXG4gIDM3OlxcdG9iai0kKENPTkZJR19LVk1fQU1EKVxcdCs9IGt2bS1hbWQub1xcbiAgMzg6XFx0XFxuICAzOTpcXHRBRkxBR1Nfc3ZtL3ZtZW50ZXIubyAgICA6PSAtaXF1b3RlICQob2JqKVxcbiAgNDA6XFx0JChvYmopL3N2bS92bWVudGVyLm86ICQob2JqKS9rdm0tYXNtLW9mZnNldHMuaFxcbiAgNDE6XFx0XFxuICA0MjpcXHRBRkxBR1Nfdm14L3ZtZW50ZXIubyAgICA6PSAtaXF1b3RlICQob2JqKVxcbiAgNDM6XFx0JChvYmopL3ZteC92bWVudGVyLm86ICQob2JqKS9rdm0tYXNtLW9mZnNldHMuaFxcbiAgNDQ6XFx0XFxuICA0NTpcXHQkKG9iaikva3ZtLWFzbS1vZmZzZXRzLmg6ICQob2JqKS9rdm0tYXNtLW9mZnNldHMucyBGT1JDRVxcbiAgNDY6XFx0XFx0JChjYWxsIGZpbGVjaGssb2Zmc2V0cyxfX0tWTV9BU01fT0ZGU0VUU19IX18pXFxuICA0NzpcXHRcXG4gIDQ4OlxcdHRhcmdldHMgKz0ga3ZtLWFzbS1vZmZzZXRzLnNcXG4gIDQ5OlxcdGNsZWFuLWZpbGVzICs9IGt2bS1hc20tb2Zmc2V0cy5oXFxuICA1MDpcXHRcXG4gIDUxOlxcdFxcbiAgNTI6XFx0IyBGYWlsIHRoZSBidWlsZCBpZiB0aGVyZSBpcyB1bmV4cGVjdGVkIEVYUE9SVF9TWU1CT0xfR1BMIChvciBFWFBPUlRfU1lNQk9MKVxcbiAgNTM6XFx0IyB1c2FnZS4gIEFsbCBLVk0taW50ZXJuYWwgZXhwb3J0cyBzaG91bGQgdXNlIEVYUE9SVF9TWU1CT0xfRk9SX0tWTV9JTlRFUk5BTC5cXG4gIDU0OlxcdCMgT25seSBhIGhhbmRmdWwgb2YgZXhwb3J0cyBpbnRlbmRlZCBmb3Igb3RoZXIgbW9kdWxlcyAoVkZJTywgS1ZNR1QpIHNob3VsZFxcbiAgNTU6XFx0IyB1c2UgRVhQT1JUX1NZTUJPTF9HUEwsIGFuZCBFWFBPUlRfU1lNQk9MIHNob3VsZCBuZXZlciBiZSB1c2VkLlxcbiAgNTY6XFx0aWZkZWYgQ09ORklHX0tWTV9YODZcXG4gIDU3OlxcdCMgU2VhcmNoIHJlY3Vyc2l2ZWx5IGZvciB3aG9sZSB3b3JkcyBhbmQgcHJpbnQgbGluZSBudW1iZXJzLiAgRmlsdGVyIG91dCB0aGVcXG4gIDU4OlxcdCMgYWxsb3dlZCBzZXQgb2YgZXhwb3J0cywgaS5lLiB0aG9zZSB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgZXh0ZXJuYWwgdXNhZ2UuXFxuICA1OTpcXHRleHBvcnRzX2dyZXBfdHJhaWxlciA6PSAtLWluY2x1ZGU9JyouW2NoXScgLW5ydyAkKHNyY3RyZWUpL3ZpcnQva3ZtICQoc3JjdHJlZSkvYXJjaC94ODYva3ZtIHwgXFxcXFxcbiAgNjA6XFx0XFx0XFx0XFx0Z3JlcCAtdiAtZSBrdm1fcGFnZV90cmFja19yZWdpc3Rlcl9ub3RpZmllciBcXFxcXFxuICA2MTpcXHRcXHRcXHRcXHRcXHQtZSBrdm1fcGFnZV90cmFja191bnJlZ2lzdGVyX25vdGlmaWVyIFxcXFxcXG4gIDYyOlxcdFxcdFxcdFxcdFxcdC1lIGt2bV93cml0ZV90cmFja19hZGRfZ2ZuIFxcXFxcXG4gIDYzOlxcdFxcdFxcdFxcdFxcdC1lIGt2bV93cml0ZV90cmFja19yZW1vdmVfZ2ZuIFxcXFxcXG4gIDY0OlxcdFxcdFxcdFxcdFxcdC1lIGt2bV9nZXRfa3ZtIFxcXFxcXG4gIDY1OlxcdFxcdFxcdFxcdFxcdC1lIGt2bV9nZXRfa3ZtX3NhZmUgXFxcXFxcbiAgNjY6XFx0XFx0XFx0XFx0XFx0LWUga3ZtX3B1dF9rdm1cXG4gIDY3OlxcdFxcbiAgNjg6XFx0IyBGb3JjZSBncmVwIHRvIGVtaXQgYSBnb29meSBncm91cCBzZXBhcmF0b3IgdGhhdCBjYW4gaW4gdHVybiBiZSByZXBsYWNlZCB3aXRoXFxuICA2OTpcXHQjIHRoZSBhYm92ZSBuZXdsaW5lIG1hY3JvIChuZXdsaW5lcyBpbiBNYWtlIGFyZSBhIG5pZ2h0bWFyZSkuICBOb3RlLCBncmVwIG9ubHlcXG4gIDcwOlxcdCMgcHJpbnRzIHRoZSBncm91cCBzZXBhcmF0b3Igd2hlbiBOIGxpbmVzIG9mIGNvbnRleHQgYXJlIHJlcXVlc3RlZCB2aWEgLUMsXFxuICA3MTpcXHQjIGEuay5hLiAtLU5VTS4gIFNpbXBseSByZXF1ZXN0IHplcm8gbGluZXMuICBQcmludCB0aGUgc2VwYXJhdG9yIG9ubHkgYWZ0ZXJcXG4gIDcyOlxcdCMgZmlsdGVyaW5nIG91dCBleHBlY3RlZCBleHBvcnRzIHRvIGF2b2lkIGV4dHJhIG5ld2xpbmVzIGluIHRoZSBlcnJvciBtZXNzYWdlLlxcbiAgNzM6XFx0ZGVmaW5lIGdldF9rdm1fZXhwb3J0c1xcbiAgNzQ6XFx0JChzaGVsbCBncmVwIFxcXCIkKDEpXFxcIiAtQzAgJChleHBvcnRzX2dyZXBfdHJhaWxlcikgfCBncmVwIFxcXCIkKDEpXFxcIiAtQzAgLS1ncm91cC1zZXBhcmF0b3I9XFxcIiFTRVAhXFxcIilcXG4gIDc1OlxcdGVuZGVmXFxuICA3NjpcXHRcXG4gIDc3OlxcdGRlZmluZSBjaGVja19rdm1fZXhwb3J0c1xcbiAgNzg6XFx0bnJfa3ZtX2V4cG9ydHMgOj0gJChzaGVsbCBncmVwIFxcXCIkKDEpXFxcIiAkKGV4cG9ydHNfZ3JlcF90cmFpbGVyKSB8IHdjIC1sKVxcbiAgNzk6XFx0XFxuICA4MDpcXHRpZm5lcSAoMCwkJChucl9rdm1fZXhwb3J0cykpXFxuICA4MTpcXHQkJChlcnJvciBFUlJPUiAqKipcXFxcXFxuICA4MjpcXHQkJChuZXdsaW5lKWZvdW5kICQkKG5yX2t2bV9leHBvcnRzKSB1bndhbnRlZCBvY2N1cnJlbmNlcyBvZiAkKDEpOlxcXFxcXG4gIDgzOlxcdCQkKG5ld2xpbmUpICAkKHN1YnN0ICFTRVAhLCQkKG5ld2xpbmUpICwkKGNhbGwgZ2V0X2t2bV9leHBvcnRzLCQoMSkpKVxcXFxcXG4gIDg0OlxcdCQkKG5ld2xpbmUpaW4gZGlyZWN0b3JpZXM6XFxcXFxcbiAgODU6XFx0JCQobmV3bGluZSkgICQoc3JjdHJlZSkvYXJjaC94ODYva3ZtXFxcXFxcbiAgODY6XFx0JCQobmV3bGluZSkgICQoc3JjdHJlZSkvdmlydC9rdm1cXFxcXFxuICA4NzpcXHQkJChuZXdsaW5lKVVzZSBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUwsIG5vdCAkKDEpKVxcbiAgODg6XFx0ZW5kaWYgIyBucl9rdm1fZXhwb3J0cyAhPSAwXFxuICA4OTpcXHR1bmRlZmluZSBucl9rdm1fZXhwb3J0c1xcbiAgOTA6XFx0ZW5kZWYgIyBjaGVja19rdm1fZXhwb3J0c1xcbiAgOTE6XFx0XFxuICA5MjpcXHQkKGV2YWwgJChjYWxsIGNoZWNrX2t2bV9leHBvcnRzLEVYUE9SVF9TWU1CT0xfR1BMKSlcXG4gIDkzOlxcdCQoZXZhbCAkKGNhbGwgY2hlY2tfa3ZtX2V4cG9ydHMsRVhQT1JUX1NZTUJPTCkpXFxuICA5NDpcXHRcXG4gIDk1OlxcdHVuZGVmaW5lIGNoZWNrX2t2bV9leHBvcnRzXFxuICA5NjpcXHR1bmRlZmluZSBnZXRfa3ZtX2V4cG9ydHNcXG4gIDk3OlxcdHVuZGVmaW5lIGV4cG9ydHNfZ3JlcF90cmFpbGVyXFxuICA5ODpcXHRlbmRpZiAjIENPTkZJR19LVk1fWDg2XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjQ3LjQ5Njg1ODk3WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ3NDQ1NjI0NzYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLVk0gQnVpbGQgUHJvY2VzcyoqXG5cblJpZ2h0LCBzbyBJIHNlZSBhIGNydWNpYWwgYGluY2x1ZGVgIHN0YXRlbWVudCBpbiBwbGF5IGhlcmU6IGBpbmNsdWRlICQoc3JjdHJlZSkvdmlydC9rdm0vTWFrZWZpbGUua3ZtYC4gVGhhdCBpbW1lZGlhdGVseSBwaXF1ZXMgbXkgaW50ZXJlc3QuIEkga25vdyB3aGF0J3MgY29taW5nLCB0aGlzIG1lYW5zIHdlJ3JlIGRlYWxpbmcgd2l0aCB0aGUgY29yZSBLVk0gYnVpbGQgY29uZmlndXJhdGlvbi4gVGltZSB0byB0YWtlIGEgY2xvc2VyIGxvb2sgYXQgYHZpcnQva3ZtL01ha2VmaWxlLmt2bWAuIEknbGwgd2FudCB0byBxdWlja2x5IHVuZGVyc3RhbmQgaG93IHRoZSBLVk0gbW9kdWxlcyBhcmUgY29tcGlsZWQsIGFueSBwbGF0Zm9ybS1zcGVjaWZpYyBkZXBlbmRlbmNpZXMgdGhleSBoYXZlLCBhbmQgdGhlIG92ZXJhbGwgc3RydWN0dXJlIG9mIHRoZSBLVk0gYnVpbGQgc3lzdGVtIHdpdGhpbiB0aGUga2VybmVsLiBJJ2xsIGJlIGxvb2tpbmcgZm9yIHBvdGVudGlhbCBjdXN0b21pemF0aW9uIHBvaW50cywgYW55IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIGJhc2VkIG9uIGFyY2hpdGVjdHVyZSBvciBmZWF0dXJlIGZsYWdzLCBhbmQgaG93IHRoaXMgcGFydGljdWxhciBNYWtlZmlsZSBpbnRlZ3JhdGVzIHdpdGggdGhlIHJlc3Qgb2YgdGhlIGtlcm5lbCBidWlsZCBwcm9jZXNzLiBJIG5lZWQgdG8gZ2V0IGEgaGFuZGxlIG9uIHdoYXQgdGhpcyBkb2VzLCBhbmQgaG93IHdlbGwgaXQgaXMgZGVzaWduZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjE2MDQxLCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzcsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMDo1Mi4yNDE0MjUyMDZaIiwiU2VxIjoyNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTMxNzAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRmlsZVwiOiBcInZpcnQva3ZtL01ha2VmaWxlLmt2bVwiLFxuICBcIkZpcnN0TGluZVwiOiAxLFxuICBcIkxpbmVDb3VudFwiOiAxMDBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiICAgMTpcXHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXFxuICAgMjpcXHQjXFxuICAgMzpcXHQjIE1ha2VmaWxlIGZvciBLZXJuZWwtYmFzZWQgVmlydHVhbCBNYWNoaW5lIG1vZHVsZVxcbiAgIDQ6XFx0I1xcbiAgIDU6XFx0XFxuICAgNjpcXHRLVk0gPz0gLi4vLi4vLi4vdmlydC9rdm1cXG4gICA3OlxcdFxcbiAgIDg6XFx0a3ZtLXkgOj0gJChLVk0pL2t2bV9tYWluLm8gJChLVk0pL2V2ZW50ZmQubyAkKEtWTSkvYmluYXJ5X3N0YXRzLm9cXG4gICA5OlxcdGt2bS0kKENPTkZJR19LVk1fVkZJTykgKz0gJChLVk0pL3ZmaW8ub1xcbiAgMTA6XFx0a3ZtLSQoQ09ORklHX0tWTV9NTUlPKSArPSAkKEtWTSkvY29hbGVzY2VkX21taW8ub1xcbiAgMTE6XFx0a3ZtLSQoQ09ORklHX0tWTV9BU1lOQ19QRikgKz0gJChLVk0pL2FzeW5jX3BmLm9cXG4gIDEyOlxcdGt2bS0kKENPTkZJR19IQVZFX0tWTV9JUlFfUk9VVElORykgKz0gJChLVk0pL2lycWNoaXAub1xcbiAgMTM6XFx0a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX0RJUlRZX1JJTkcpICs9ICQoS1ZNKS9kaXJ0eV9yaW5nLm9cXG4gIDE0OlxcdGt2bS0kKENPTkZJR19IQVZFX0tWTV9QRk5DQUNIRSkgKz0gJChLVk0pL3BmbmNhY2hlLm9cXG4gIDE1OlxcdGt2bS0kKENPTkZJR19LVk1fR1VFU1RfTUVNRkQpICs9ICQoS1ZNKS9ndWVzdF9tZW1mZC5vXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjUyLjI0MTU1ODkwNloiLCJTZXEiOjI1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDk4NzEwNzM3LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgZnJhbWVkIGFzIGFuIGV4cGVydCdzIGludGVybmFsIG1vbm9sb2d1ZTpcblxuKipJbnZlc3RpZ2F0aW5nIGBDT05GSUdfSEFWRV9LVk1fUEZOQ0FDSEVgJ3MgRGVwZW5kZW5jaWVzKipcblxuQWxyaWdodCwgc28gd2UncmUgZGVhbGluZyB3aXRoIGBDT05GSUdfSEFWRV9LVk1fUEZOQ0FDSEVgLiBUaGF0IGZsYWcgaXMgY3JpdGljYWwsIEkgbmVlZCB0byB1bmRlcnN0YW5kIGl0cyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBjb2RlLiAgTXkgZmlyc3Qgc3RlcCBpcyBjbGVhcjogSSBuZWVkIHRvIHBpbnBvaW50IHdoZXJlIGFuZCBob3cgYEhBVkVfS1ZNX1BGTkNBQ0hFYCBpcyBhY3R1YWxseSAqZGVmaW5lZCogYW5kLCBjcml0aWNhbGx5LCAqc2VsZWN0ZWQqLiBJJ20gaW50ZXJlc3RlZCBpbiB0aGUgY29uZmlndXJhdGlvbiBsb2dpYywgdGhlIGRlcGVuZGVuY2llcywgYW5kIHRoZSBhcmNoaXRlY3R1cmUgY29uc3RyYWludHMgc3Vycm91bmRpbmcgaXQuIFRoaXMgbGlrZWx5IGludm9sdmVzIGRpdmluZyBpbnRvIHRoZSBLY29uZmlnIGZpbGVzLCBleHBsb3JpbmcgYW55IHJlbGF0ZWQgTWFrZWZpbGVzLCBhbmQgbG9va2luZyBmb3Igb3RoZXIgY29uZmlnIG9wdGlvbnMgdGhhdCBtaWdodCBpbmZsdWVuY2Ugb3IgZGVwZW5kIG9uIGl0LiAgSSdtIGV4cGVjdGluZyB0byB1bmNvdmVyIGNvbmRpdGlvbmFsIHNlbGVjdGlvbnMgYW5kIHBvdGVudGlhbCBwaXRmYWxscyB0aGF0IG1pZ2h0IGltcGFjdCBwb3J0YWJpbGl0eSBvciBwZXJmb3JtYW5jZS4gR290dGEgZ2V0IHRvIHRoZSByb290IG9mIGl0cyBiZWhhdmlvci5cblxuXG4iLCJJbnB1dFRva2VucyI6MTY2NDcsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozOSwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAwOjU2LjM0MDI3MzI4M1oiLCJTZXEiOjI2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTc1MzA0NTYxOSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJIQVZFX0tWTV9QRk5DQUNIRVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiYXJjaC94ODYva3ZtL0tjb25maWc9MjA9Y29uZmlnIEtWTV9YODZcXG4tLVxcbmFyY2gveDg2L2t2bS9LY29uZmlnLTI1LVxcdHNlbGVjdCBIQVZFX0tWTV9JUlFDSElQXFxuYXJjaC94ODYva3ZtL0tjb25maWc6MjY6XFx0c2VsZWN0IEhBVkVfS1ZNX1BGTkNBQ0hFXFxuYXJjaC94ODYva3ZtL0tjb25maWctMjctXFx0c2VsZWN0IEhBVkVfS1ZNX0RJUlRZX1JJTkdfVFNPXFxuLS1cXG52aXJ0L2t2bS9LY29uZmlnPTQ9Y29uZmlnIEtWTV9DT01NT05cXG4tLVxcbnZpcnQva3ZtL0tjb25maWctMTAtXFxudmlydC9rdm0vS2NvbmZpZzoxMTpjb25maWcgSEFWRV9LVk1fUEZOQ0FDSEVcXG52aXJ0L2t2bS9LY29uZmlnLTEyLSAgICAgICBib29sXFxuLS1cXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm09MTM9a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX0RJUlRZX1JJTkcpICs9ICQoS1ZNKS9kaXJ0eV9yaW5nLm9cXG52aXJ0L2t2bS9NYWtlZmlsZS5rdm06MTQ6a3ZtLSQoQ09ORklHX0hBVkVfS1ZNX1BGTkNBQ0hFKSArPSAkKEtWTSkvcGZuY2FjaGUub1xcbnZpcnQva3ZtL01ha2VmaWxlLmt2bS0xNS1rdm0tJChDT05GSUdfS1ZNX0dVRVNUX01FTUZEKSArPSAkKEtWTSkvZ3Vlc3RfbWVtZmQub1xcbi0tXFxudmlydC9rdm0va3ZtX21tLmg9NTk9a3ZtX3Bmbl90IGh2YV90b19wZm4oc3RydWN0IGt2bV9mb2xsb3dfcGZuICprZnApO1xcbnZpcnQva3ZtL2t2bV9tbS5oLTYwLVxcbnZpcnQva3ZtL2t2bV9tbS5oOjYxOiNpZmRlZiBDT05GSUdfSEFWRV9LVk1fUEZOQ0FDSEVcXG52aXJ0L2t2bS9rdm1fbW0uaC02Mi12b2lkIGdmbl90b19wZm5fY2FjaGVfaW52YWxpZGF0ZV9zdGFydChzdHJ1Y3Qga3ZtICprdm0sXFxuLS1cXG52aXJ0L2t2bS9rdm1fbW0uaD02Nj1zdGF0aWMgaW5saW5lIHZvaWQgZ2ZuX3RvX3Bmbl9jYWNoZV9pbnZhbGlkYXRlX3N0YXJ0KHN0cnVjdCBrdm0gKmt2bSxcXG4tLVxcbnZpcnQva3ZtL2t2bV9tbS5oLTcwLX1cXG52aXJ0L2t2bS9rdm1fbW0uaDo3MTojZW5kaWYgLyogSEFWRV9LVk1fUEZOQ0FDSEUgKi9cXG52aXJ0L2t2bS9rdm1fbW0uaC03Mi1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDA6NTguMDkzMzI1NDAyWiIsIlNlcSI6MjcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQyODc4OTAyMTQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqS1ZNIENvbmZpZ3VyYXRpb24gUmV2aWV3KipcblxuT2theSwgc28gYEhBVkVfS1ZNX1BGTkNBQ0hFYCBpcyBhdXRvbWF0aWNhbGx5IGNob3NlbiB3aGVuIGBLVk1fWDg2YCBpcyBzZWxlY3RlZC4gVGhhdCBtZWFucywgYXQgdGhlIHZlcnkgbGVhc3QsIGVuYWJsaW5nIGBLVk1gIGlzIGVub3VnaCwgYW5kIHNwZWNpZmljYWxseSBzbyBvbiB0aGUgeDg2IGFyY2hpdGVjdHVyZS4gSSdsbCBkZWZpbml0ZWx5IGFkZCBgS1ZNYCB0byB0aGUgYEVuYWJsZUNvbmZpZ3NgIGxpc3QuIE5vIG5lZWQgdG8gb3ZlcnRoaW5rIGl0IHRoZXJlLlxuXG5Ob3csIGxldCdzIGNpcmNsZSBiYWNrIHRvIHRob3NlIEdsb2JhbCBQYWdlIENhY2hlIHN5bWJvbHMgSSB3YXMgbG9va2luZyBhdDogYGt2bV9ncGNfcmVmcmVzaGAsIGBrdm1fZ3BjX2FjdGl2YXRlYCwgYW5kIGBrdm1fZ3BjX2FjdGl2YXRlX2h2YWAuIEhvbGQgb24gYSBtaW51dGXigKYgSSBzZWUgdGhhdCBgX19rdm1fZ3BjX3JlZnJlc2hgIGlzICpzdGF0aWMqLiBUaGF0IG1lYW5zIGl0J3MgaW50ZXJuYWwgdG8gdGhlIG1vZHVsZSBhbmQgbm90IGV4cG9ydGVkLiBTbywgdGhlIGZ1bmN0aW9uIEknbSBhY3R1YWxseSBpbnRlcmVzdGVkIGluIGlzIHRoZSBub24tc3RhdGljIHdyYXBwZXIsIGBrdm1fZ3BjX3JlZnJlc2hgLiBJIG5lZWQgdG8gY29uZmlybSB0aGF0IGBrdm1fZ3BjX3JlZnJlc2hgIGlzIGFjdHVhbGx5IGV4cG9ydGVkLiBJJ2xsIGRvdWJsZS1jaGVjayB0aGUgc3ltYm9sIHRhYmxlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNzQ0NiwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjE0OSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMTowMi4zODEyMTg5ODZaIiwiU2VxIjoyOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ2MzYzMDI5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImt2bV9ncGNfcmVmcmVzaFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9wZm5jYWNoZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInZpcnQva3ZtL3BmbmNhY2hlLmM9MTU1PXN0YXRpYyBrdm1fcGZuX3QgaHZhX3RvX3Bmbl9yZXRyeShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjKVxcbi0tXFxudmlydC9rdm0vcGZuY2FjaGUuYy0yNTUtXFxudmlydC9rdm0vcGZuY2FjaGUuYzoyNTY6c3RhdGljIGludCBfX2t2bV9ncGNfcmVmcmVzaChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgdWh2YSlcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTI1Ny17XFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM2My1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjM2NDppbnQga3ZtX2dwY19yZWZyZXNoKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzY1LXtcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtMzc5LVxcbnZpcnQva3ZtL3BmbmNhY2hlLmM6MzgwOlxcdHJldHVybiBfX2t2bV9ncGNfcmVmcmVzaChncGMsIGdwYy1cXHUwMDNlZ3BhLCB1aHZhKTtcXG52aXJ0L2t2bS9wZm5jYWNoZS5jLTM4MS19XFxuLS1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jPTM5NT1zdGF0aWMgaW50IF9fa3ZtX2dwY19hY3RpdmF0ZShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBncGFfdCBncGEsIHVuc2lnbmVkIGxvbmcgdWh2YSxcXG4tLVxcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDIxLVxcdH1cXG52aXJ0L2t2bS9wZm5jYWNoZS5jOjQyMjpcXHRyZXR1cm4gX19rdm1fZ3BjX3JlZnJlc2goZ3BjLCBncGEsIHVodmEpO1xcbnZpcnQva3ZtL3BmbmNhY2hlLmMtNDIzLX1cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDE6MDIuNDI3NTg3NDY1WiIsIlNlcSI6MjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQ0MjAzNTYzNDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi5cblxuKipGdW5jdGlvbiBBbmFseXNpczogS1ZNIEdQQyBSZWZyZXNoLCBBY3RpdmF0ZSwgYW5kIEhWQSoqXG5cblJpZ2h0LCBzbyBga3ZtX2dwY19yZWZyZXNoYC4uLiB0aGF0J3MgZGVmaW5pdGVseSBhIG5vbi1zdGF0aWMgZnVuY3Rpb24sIGp1c3QgbGlrZSBga3ZtX2dwY19hY3RpdmF0ZWAgYW5kIGBrdm1fZ3BjX2FjdGl2YXRlX2h2YWAuIFRoYXQncyBpbXBvcnRhbnQuIEl0IG1lYW5zIHRoZXNlIGZ1bmN0aW9ucyBhcmUsIGJ5IGRlZmluaXRpb24sIGludGVuZGVkIHRvIGJlIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIHNvdXJjZSBmaWxlIHRoZXkncmUgZGVmaW5lZCBpbi4gVGhleSdyZSBwYXJ0IG9mIHRoZSBwdWJsaWMgaW50ZXJmYWNlLCBlc3NlbnRpYWxseS4gTWFrZXMgc2Vuc2UsIGdpdmVuIHRoZSBjb250ZXh0IHdlJ3JlIHdvcmtpbmcgd2l0aCBoZXJlIGluIHRoZSBLVk0gbW9kdWxlLlxuXG5Ob3csIGEga2V5IHF1ZXN0aW9uIHRoYXQgYWx3YXlzIGFyaXNlcyB3aGVuIHlvdSdyZSBkZWFsaW5nIHdpdGggZnVuY3Rpb25zIHRoYXQgKmNvdWxkKiBiZSB1c2VkIG91dHNpZGUgdGhlaXIgb3JpZ2luYWwgY29tcGlsYXRpb24gdW5pdCBpczogYXJlIHRoZXkgKmFjdHVhbGx5KiBleHBvcnRlZCB0byBtb2R1bGVzPyBBcmUgdGhleSBhdmFpbGFibGUgdG8gYmUgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLCBvciBldmVuIGV4dGVybmFsIGtlcm5lbCBtb2R1bGVzIHRoYXQgaW50ZXJhY3Qgd2l0aCBLVk0/IEkgbmVlZCB0byB2ZXJpZnkgdGhhdCBga3ZtX2dwY19yZWZyZXNoYCBzcGVjaWZpY2FsbHkgaXMgZXhwb3J0ZWQuIExldCdzIG1ha2Ugc3VyZSB0aGF0J3MgZXhwbGljaXRseSBoYW5kbGVkLiBUaGF0J3MgYSBjcnVjaWFsIHBvaW50IHRvIGNvbmZpcm0gYW5kIGRvY3VtZW50IHByb3Blcmx5LiBUaGlzIGhlbHBzIGVuc3VyZSBtYWludGFpbmFiaWxpdHkgYW5kIHRoZSBwcm9wZXIgaW50ZXJhY3Rpb24gYmV0d2VlbiBLVk0gYW5kIGV4dGVybmFsIG1vZHVsZXMgdGhhdCBtYXkgcmVseSBvbiBpdHMgZnVuY3Rpb25hbGl0eS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTgyODIsIk91dHB1dFRva2VucyI6NDUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo2NCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMTowNi44NDc5NDY2NTdaIiwiU2VxIjozMCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1MDU3MjU5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MX0dQTFxcXFwoa3ZtX2dwY19yZWZyZXNoXFxcXClcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwidmlydC9rdm0vcGZuY2FjaGUuY1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJlcnJvclwiOiBcIm5vIG1hdGNoZXNcIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMTQ6MDE6MDYuODkzMDEyNjA2WiIsIlNlcSI6MzEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjMwOTMzMTc4NDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IkhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOlxuXG4qKkRpdmluZyBpbnRvIHRoZSBLVk0gUEZOIENhY2hlKipcblxuT2theSwgdGltZSB0byBnZXQgbXkgaGFuZHMgZGlydHkuIEkgbmVlZCB0byB1bmRlcnN0YW5kIGhvdyB0aGUgS1ZNIFBGTiBjYWNoZSB3b3JrcywgYW5kIHRoYXQgbWVhbnMgc3RhcnRpbmcgYXQgYSBmdW5kYW1lbnRhbCBsZXZlbC4gSSdtIGdvaW5nIHRvIGRyaWxsIGRvd24gaW50byB0aGUgZGV0YWlscyBvZiBgdmlydC9rdm0vcGZuY2FjaGUuY2AuIFNwZWNpZmljYWxseSwgSSB3YW50IHRvIHNlZSBob3cgc3ltYm9scyBhcmUgZXhwb3J0ZWQuIEknbGwgYmUgdGFyZ2V0aW5nIGBFWFBPUlRfU1lNQk9MYC4gSSB3YW50IHRvIHNlZSB3aGF0IGlzIGdldHRpbmcgZXhwb3NlZCwgYW5kIEkgbmVlZCB0byBjb25zaWRlciB3aHkgc3BlY2lmaWMgc3ltYm9scyBhcmUgYmVpbmcgbWFkZSBhdmFpbGFibGUgb3V0c2lkZSBvZiB0aGUgaW1tZWRpYXRlIG1vZHVsZS4gVGhpcyB3aWxsIGdpdmUgbWUgYSBiZXR0ZXIgdW5kZXJzdGFuZGluZyBvZiB0aGUgb3ZlcmFsbCBhcmNoaXRlY3R1cmUgYW5kIHBvdGVudGlhbCBkZXBlbmRlbmNpZXMgb24gdGhpcyBjb21wb25lbnQuIFRoaXMgbGlrZWx5IGhhcyBpbXBsaWNhdGlvbnMgZm9yIHRoZSBzdGFiaWxpdHkgYW5kIG1haW50ZW5hbmNlIG9mIHRoZSBLVk0gY29kZWJhc2UuIFVuZGVyc3RhbmRpbmcgdGhlc2Ugc3ltYm9scyBpcyBjcml0aWNhbCBmb3IgbWFraW5nIGluZm9ybWVkIGNoYW5nZXMgb3Igb3B0aW1pemF0aW9ucyB0byB0aGUgY29kZS5cblxuXG4iLCJJbnB1dFRva2VucyI6MTg2NjMsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMTowOS45ODYzMzQ0MTFaIiwiU2VxIjozMiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjMxNDU1NTEzNSwiRXJyb3IiOiJubyBtYXRjaGVzIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiRVhQT1JUX1NZTUJPTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9wZm5jYWNoZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMToxMC4zMDA4OTkwNDZaIiwiU2VxIjozMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDQ3ODI0NzI2MCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipJbnZlc3RpZ2F0aW5nIEtWTSBQRk4gQ2FjaGUgU3ltYm9sIEV4cG9ydCoqXG5cbk9rYXksIGhvbGQgb24gYSBzZWNvbmQuIEknbSBsb29raW5nIGF0IGB2aXJ0L2t2bS9wZm5jYWNoZS5jYCwgYW5kIHNvbWV0aGluZyBzZWVtcyBvZmYuIEkgd2FzIHVuZGVyIHRoZSBpbXByZXNzaW9uIGl0IG1pZ2h0IGJlIGV4cG9zaW5nIHNvbWUgc3ltYm9scywgYnV0IGEgcXVpY2sgc2NhbiBkb2Vzbid0IHJldmVhbCBhbnkgb2J2aW91cyBleHBvcnRzLiBOb3csIHRoYXQncyBub3QgbmVjZXNzYXJpbHkgYSBkZWFsLWJyZWFrZXIuIEkgbmVlZCB0byBrZWVwIGluIG1pbmQgdGhlIHBvdGVudGlhbCBmb3IgYEVYUE9SVF9TWU1CT0xfR1BMYC4gUGVyaGFwcyB0aGF0IG1hY3JvIGlzIGJlaW5nIGVtcGxveWVkIHRvIG1ha2UgY2VydGFpbiBmdW5jdGlvbnMgb3IgZGF0YSBzdHJ1Y3R1cmVzIGF2YWlsYWJsZSwgZXZlbiBpZiBub3QgaW1tZWRpYXRlbHkgYXBwYXJlbnQuIEkgbmVlZCB0byBkaXZlIGRlZXBlci4gTGV0J3Mgc3RhcnQgYnkgZXhhbWluaW5nIGEga2V5IGZ1bmN0aW9uIHdpdGhpbiB0aGlzIGZpbGUg4oCTIGBrdm1fZ3BjX3JlZnJlc2hgLiBUaGF0J3MgbGlrZWx5IHRoZSBiZXN0IHBsYWNlIHRvIHN0YXJ0LlxuXG5cbiIsIklucHV0VG9rZW5zIjoxODkxMSwiT3V0cHV0VG9rZW5zIjozOCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjY2LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjE0Ljc3OTE0OTA2NloiLCJTZXEiOjM0LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3NDI2MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJ2aXJ0L2t2bS9wZm5jYWNoZS5jXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDM2MCxcbiAgXCJMaW5lQ291bnRcIjogMzBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDM2MDpcXHRcXG4gMzYxOlxcdFxcdHJldHVybiByZXQ7XFxuIDM2MjpcXHR9XFxuIDM2MzpcXHRcXG4gMzY0OlxcdGludCBrdm1fZ3BjX3JlZnJlc2goc3RydWN0IGdmbl90b19wZm5fY2FjaGUgKmdwYywgdW5zaWduZWQgbG9uZyBsZW4pXFxuIDM2NTpcXHR7XFxuIDM2NjpcXHRcXHR1bnNpZ25lZCBsb25nIHVodmE7XFxuIDM2NzpcXHRcXG4gMzY4OlxcdFxcdGd1YXJkKG11dGV4KShcXHUwMDI2Z3BjLVxcdTAwM2VyZWZyZXNoX2xvY2spO1xcbiAzNjk6XFx0XFxuIDM3MDpcXHRcXHRpZiAoIWt2bV9ncGNfaXNfdmFsaWRfbGVuKGdwYy1cXHUwMDNlZ3BhLCBncGMtXFx1MDAzZXVodmEsIGxlbikpXFxuIDM3MTpcXHRcXHRcXHRyZXR1cm4gLUVJTlZBTDtcXG4gMzcyOlxcdFxcbiAzNzM6XFx0XFx0LypcXG4gMzc0OlxcdFxcdCAqIElmIHRoZSBHUEEgaXMgdmFsaWQgdGhlbiBpZ25vcmUgdGhlIEhWQSwgYXMgYSBjYWNoZSBjYW4gYmUgR1BBLWJhc2VkXFxuIDM3NTpcXHRcXHQgKiBvciBIVkEtYmFzZWQsIG5vdCBib3RoLiAgRm9yIEdQQS1iYXNlZCBjYWNoZXMsIHRoZSBIVkEgd2lsbCBiZVxcbiAzNzY6XFx0XFx0ICogcmVjb21wdXRlZCBkdXJpbmcgcmVmcmVzaCBpZiBuZWNlc3NhcnkuXFxuIDM3NzpcXHRcXHQgKi9cXG4gMzc4OlxcdFxcdHVodmEgPSBrdm1faXNfZXJyb3JfZ3BhKGdwYy1cXHUwMDNlZ3BhKSA/IGdwYy1cXHUwMDNldWh2YSA6IEtWTV9IVkFfRVJSX0JBRDtcXG4gMzc5OlxcdFxcbiAzODA6XFx0XFx0cmV0dXJuIF9fa3ZtX2dwY19yZWZyZXNoKGdwYywgZ3BjLVxcdTAwM2VncGEsIHVodmEpO1xcbiAzODE6XFx0fVxcbiAzODI6XFx0XFxuIDM4MzpcXHR2b2lkIGt2bV9ncGNfaW5pdChzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCBzdHJ1Y3Qga3ZtICprdm0pXFxuIDM4NDpcXHR7XFxuIDM4NTpcXHRcXHRyd2xvY2tfaW5pdChcXHUwMDI2Z3BjLVxcdTAwM2Vsb2NrKTtcXG4gMzg2OlxcdFxcdG11dGV4X2luaXQoXFx1MDAyNmdwYy1cXHUwMDNlcmVmcmVzaF9sb2NrKTtcXG4gMzg3OlxcdFxcbiAzODg6XFx0XFx0Z3BjLVxcdTAwM2Vrdm0gPSBrdm07XFxuIDM4OTpcXHRcXHRncGMtXFx1MDAzZXBmbiA9IEtWTV9QRk5fRVJSX0ZBVUxUO1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMToxNC43NzkyMjcxMzZaIiwiU2VxIjozNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDgwMTU5MjA5NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipLVk0gTW9kdWxlIEludGVybmFscyoqXG5cbk9rYXksIHNvIEtWTSBpcyBjb25zdHJ1Y3RlZCBhcyBhIHNpbmdsZSwgY29oZXNpdmUgbW9kdWxlLCBvciBwZXJoYXBzIGV2ZW4gYnVpbHQtaW4sIGRlcGVuZGluZyBvbiB0aGUgc3BlY2lmaWNzIG9mIHRoZSBidWlsZCBwcm9jZXNzLiBJIHNlZSB0aGF0IHRoZSBgdmlydC9rdm0vcGZuY2FjaGUub2Agb2JqZWN0IGZpbGUgZ2V0cyBsaW5rZWQgZGlyZWN0bHkgaW50byBga3ZtLm9gLiBBY3R1YWxseSwgaXMgaXQgYWxzbyBsaW5rZWQgd2l0aCBga3ZtLWFtZC5vYCBvciBga3ZtLWludGVsLm9gPyBObywgbm8sIGBrdm0ub2AgaXMgZGVmaW5pdGVseSB0aGUgY2VudHJhbCBjb3JlIGhlcmUuIEFoLCByaWdodCwgdGhlIGJ1aWxkIHByb2Nlc3MgbGlrZWx5IGluY2x1ZGVzIGAkKEtWTSkvcGZuY2FjaGUub2AgaW4gYGt2bS15YC4gU2luY2UgYHBmbmNhY2hlYCBpcyB1c2VkIGludGVybmFsbHkgd2l0aGluIEtWTSwgaXQgZG9lc24ndCBuZWVkIGV4cGxpY2l0IHN5bWJvbCBleHBvcnQuXG5cbkJ1dCBob2xkIG9uLCBJIHJlbWVtYmVyIHNlZWluZyBgRVhQT1JUX1NZTUJPTF9HUExgIGJlaW5nIHVzZWQgaW4gYHZpcnQva3ZtL2t2bV9tYWluLmNgIOKAkyBzcGVjaWZpY2FsbHkgZm9yIHN5bWJvbHMgdGhhdCAqZG8qIG5lZWQgdG8gYmUgZXhwb3NlZCB0byBtb2R1bGVzIGxpa2UgYGt2bS1pbnRlbGAgb3IgYGt2bS1hbWRgLiBUaGF0IG1lYW5zIHRoZXJlJ3Mgc29tZSBpbnRlcmFjdGlvbi4gT2theSwgbGV0IG1lIHF1aWNrbHkgdmVyaWZ5IGlmIGBrdm1fZ3BjX3JlZnJlc2hgIGlzIGV4cG9ydGVkIGZyb20gYHZpcnQva3ZtL3BmbmNhY2hlLmNgLiBUaGF0IHNob3VsZCBnaXZlIG1lIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcgb2YgaG93IHRoZSBpbnRlcm5hbCBjb21wb25lbnRzIGFyZSBzaGFyZWQgYW5kIGxpbmtlZC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTk2NzksIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxODUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMToxOS41ODA4MjI3ODFaIiwiU2VxIjozNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ1NDAwMzA5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MX0dQTFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJ2aXJ0L2t2bS9wZm5jYWNoZS5jXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMToxOS42MjYyMzM2NloiLCJTZXEiOjM3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjQzNjEyNDc5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkludmVzdGlnYXRpbmcgdGhlIEtWTSBTeW1ib2wgRXhwb3J0KipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBmaWd1cmUgb3V0IGlmIGBFWFBPUlRfU1lNQk9MX0ZPUl9LVk1fSU5URVJOQUxgIGlzIGFjdHVhbGx5IGluIHVzZSBzb21ld2hlcmUsIGFuZCBteSBpbml0aWFsIGh1bmNoIGlzIHRoYXQgaXQgbWlnaHQgYmUsIGJ1dCBsZXQncyBiZSBzdXJlLiBXYWl0LCBubywgYEVYUE9SVF9TWU1CT0xfR1BMYCBpcyBpbiBgdmlydC9rdm0va3ZtX21haW4uY2AsIHRoYXQncyBhbiBpbXBvcnRhbnQgZGV0YWlsLiBJIHNob3VsZCBjaGVjayBgdmlydC9rdm0vcGZuY2FjaGUuY2AgYWdhaW4gZm9yIGBFWFBPUlRfU1lNQk9MX0dQTGAsIGp1c3QgdG8gYmUgY2VydGFpbi4gTm9wZSwgc3RpbGwgbm90aGluZy5cblxuQWxyaWdodCwgSSdsbCB0cnkgc2VhcmNoaW5nIGZvciBgRVhQT1JUX1NZTUJPTF9HUExgIGluIGB2aXJ0L2t2bS9wZm5jYWNoZS5jYCBhZ2FpbiwgYnV0IHRoaXMgdGltZSBJJ2xsIG1ha2UgdGhlIHNlYXJjaCBjYXNlLWluc2Vuc2l0aXZlLCBqdXN0IHRvIGNvdmVyIGFsbCBiYXNlcywgYmVjYXVzZSBzb21ldGltZXMgdGhpbmdzIGFyZSBuYW1lZCB1bmV4cGVjdGVkbHkuIFN0aWxsIG5vdGhpbmcuIFNvIGl0J3Mgbm90IGV4cG9ydGVkIHRoZXJlLlxuXG5Pa2F5LCBsZXQncyB0YWtlIG9uZSBtb3JlIGxvb2sgYXQgYHZpcnQva3ZtL3BmbmNhY2hlLmNgIGZvciBgRVhQT1JUX1NZTUJPTF9HUExgIGp1c3QgdG8gZG91YmxlIGNoZWNrIHRoYXQgSSBkaWRuJ3QgbWlzcyBzb21ldGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwMTg4LCJPdXRwdXRUb2tlbnMiOjM2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQwLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjI1Ljg2OTg0OTY4OVoiLCJTZXEiOjM4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NDQ3ODE4NzksIkVycm9yIjoibm8gbWF0Y2hlcyIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIkVYUE9SVF9TWU1CT0xfR1BMXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL3BmbmNhY2hlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjI1LjkxNDY0MzIwOVoiLCJTZXEiOjM5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo1MTUwMjU3NjM4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgYSBmaXJzdC1wZXJzb24gc3VtbWFyeSwgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYmFzZWQgb24gdGhlIHByb3ZpZGVkIHRob3VnaHQ6XG5cbioqQ2hlY2tpbmcgYHZpcnQva3ZtL3BmbmNhY2hlLmNgIGZvciBgRVhQT1JUX1NZTUJPTGAqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gcXVpY2tseSBkZXRlcm1pbmUgdGhlIHZpc2liaWxpdHkgb2Ygc29tZSBzeW1ib2xzIHdpdGhpbiB0aGUgS1ZNIFBGTiBjYWNoZSBpbXBsZW1lbnRhdGlvbi4gTXkgZmlyc3QgaW5zdGluY3QsIGdpdmVuIHRoZSBjb250ZXh0LCBpcyB0byBjaGVjayBgdmlydC9rdm0vcGZuY2FjaGUuY2AgZm9yIGBFWFBPUlRfU1lNQk9MYC4gVGhpcyBpcyBzdGFuZGFyZCBvcGVyYXRpbmcgcHJvY2VkdXJlLCByZWFsbHk7IGl0J3MgdGhlIHF1aWNrIGFuZCBkaXJ0eSB3YXkgdG8gdW5kZXJzdGFuZCB0aGUgaW50ZW5kZWQgc2NvcGUgb2YgdGhlc2Ugc3ltYm9scy4gQXJlIHRoZXkgaW50ZW5kZWQgZm9yIG1vZHVsZSB1c2UsIGludGVybmFsIHRvIEtWTSwgb3Igc29tZXRoaW5nIGVsc2UgZW50aXJlbHk/IExvb2tpbmcgYXQgdGhlIGBFWFBPUlRfU1lNQk9MYCBtYWNybyB3aWxsIHRlbGwgbWUgaWYgdGhleSBhcmUgZ2xvYmFsbHkgdmlzaWJsZS4gVGhpcyBpcyBhIGZvdW5kYXRpb25hbCBzdGVwLiBJJ20gaG9waW5nIHRvIHF1aWNrbHkgaWRlbnRpZnkgaG93IHRoZSBQRk4gY2FjaGUgaXMgZXhwb3NlZCBhbmQgdXNlZCwgc28gSSBjYW4gdW5kZXJzdGFuZCB0aGUgYmlnZ2VyIHBpY3R1cmUgb2YgaW50ZXJhY3Rpb25zIHdpdGggb3RoZXIga2VybmVsIGNvbXBvbmVudHMsIHBhcnRpY3VsYXJseSBvdGhlciBLVk0gbW9kdWxlcyBvciB0aGUgY29yZSBrZXJuZWwgaXRzZWxmLiBMZXQncyBkaWcgaW4gYW5kIHNlZSB3aGF0J3Mgd2hhdC5cblxuXG4iLCJJbnB1dFRva2VucyI6MjA2MTcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMiwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMTozMS4wNjQ5MDQ4MTdaIiwiU2VxIjo0MCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjQ0MjM4MDM5LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJFWFBPUlRfU1lNQk9MXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcInZpcnQva3ZtL3BmbmNhY2hlLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiZXJyb3JcIjogXCJubyBtYXRjaGVzXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjMxLjEwOTE1MjI4NloiLCJTZXEiOjQxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MzE5NzM5ODk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkZ1enppbmcgU3RyYXRlZ3kgQXNzZXNzbWVudCoqXG5cbkFscmlnaHQsIHNvIHRoZSB0YXJnZXQgaXNuJ3QgZXhwbGljaXRseSBleHBvcnRlZCwgd2hpY2ggaXMgdGhlIGluaXRpYWwgaHVyZGxlLiBIb3dldmVyLCB0aGUgZmFjdCB0aGF0IGl0J3MgYSBub24tc3RhdGljIGZ1bmN0aW9uICp3aXRoaW4qIHRoZSBrZXJuZWwgaW1hZ2UgZ2l2ZXMgdXMgYSBkZWZpbml0ZSBhdmVudWUgZm9yIGZ1enppbmcuIFdlIGtub3cgbm9uLXN0YXRpYyBmdW5jdGlvbnMgYXJlIGZhaXIgZ2FtZS5cblxuTXkgdGhpbmtpbmcgdGhlbiB6ZXJvZXMgaW4gb24gYGt2bV9ncGNfcmVmcmVzaGAuIFNpbmNlIGl0J3Mgbm9uLXN0YXRpYywgdGhlcmUncyBhIGdvb2QgY2hhbmNlIGl0J3MgcHJlc2VudCB3aXRoaW4gYGt2bS5rb2AuIExldCdzIGNvbmZpcm0gdGhhdCBxdWlja2x5Li4uIFllcywgY29uZmlybWVkLCBpdCAqaXMqIGluIGBrdm0ua29gLiBFeGNlbGxlbnQuXG5cblRoYXQgbmFycm93cyBvdXIgZm9jdXMuIFRoZSBjcml0aWNhbCBzeW1ib2xzIGZvciBhIHByb21pc2luZyBmdXp6aW5nIGNhbXBhaWduIGFyZSBjbGVhcmx5IGBrdm1fZ3BjX3JlZnJlc2hgLCBga3ZtX2dwY19hY3RpdmF0ZWAsIGFuZCBga3ZtX2dwY19hY3RpdmF0ZV9odmFgLlxuXG5Ob3cgaXTigJlzIHRpbWUgdG8gYXNzZXNzIHRob3NlIGxhc3QgdHdvOiBga3ZtX2dwY19hY3RpdmF0ZWAgYW5kIGBrdm1fZ3BjX2FjdGl2YXRlX2h2YWAuIExldCdzIHNlZSB3aGF0IHdlJ3JlIHdvcmtpbmcgd2l0aCBpbiB0aG9zZSBmdW5jdGlvbnMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjIwOTAyLCJPdXRwdXRUb2tlbnMiOjM4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTQ0LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjM1LjQyODg5NTRaIiwiU2VxIjo0MiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6OTIxNTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwidmlydC9rdm0vcGZuY2FjaGUuY1wiLFxuICBcIkZpcnN0TGluZVwiOiA0MjAsXG4gIFwiTGluZUNvdW50XCI6IDMwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiA0MjA6XFx0XFx0XFx0d3JpdGVfdW5sb2NrX2lycShcXHUwMDI2Z3BjLVxcdTAwM2Vsb2NrKTtcXG4gNDIxOlxcdFxcdH1cXG4gNDIyOlxcdFxcdHJldHVybiBfX2t2bV9ncGNfcmVmcmVzaChncGMsIGdwYSwgdWh2YSk7XFxuIDQyMzpcXHR9XFxuIDQyNDpcXHRcXG4gNDI1OlxcdGludCBrdm1fZ3BjX2FjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMsIGdwYV90IGdwYSwgdW5zaWduZWQgbG9uZyBsZW4pXFxuIDQyNjpcXHR7XFxuIDQyNzpcXHRcXHQvKlxcbiA0Mjg6XFx0XFx0ICogRXhwbGljaXRseSBkaXNhbGxvdyBJTlZBTElEX0dQQSBzbyB0aGF0IHRoZSBtYWdpYyB2YWx1ZSBjYW4gYmUgdXNlZFxcbiA0Mjk6XFx0XFx0ICogYnkgS1ZNIHRvIGRpZmZlcmVudGlhdGUgYmV0d2VlbiBHUEEtYmFzZWQgYW5kIEhWQS1iYXNlZCBjYWNoZXMuXFxuIDQzMDpcXHRcXHQgKi9cXG4gNDMxOlxcdFxcdGlmIChXQVJOX09OX09OQ0Uoa3ZtX2lzX2Vycm9yX2dwYShncGEpKSlcXG4gNDMyOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA0MzM6XFx0XFxuIDQzNDpcXHRcXHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgZ3BhLCBLVk1fSFZBX0VSUl9CQUQsIGxlbik7XFxuIDQzNTpcXHR9XFxuIDQzNjpcXHRcXG4gNDM3OlxcdGludCBrdm1fZ3BjX2FjdGl2YXRlX2h2YShzdHJ1Y3QgZ2ZuX3RvX3Bmbl9jYWNoZSAqZ3BjLCB1bnNpZ25lZCBsb25nIHVodmEsIHVuc2lnbmVkIGxvbmcgbGVuKVxcbiA0Mzg6XFx0e1xcbiA0Mzk6XFx0XFx0aWYgKCFhY2Nlc3Nfb2soKHZvaWQgX191c2VyICopdWh2YSwgbGVuKSlcXG4gNDQwOlxcdFxcdFxcdHJldHVybiAtRUlOVkFMO1xcbiA0NDE6XFx0XFxuIDQ0MjpcXHRcXHRyZXR1cm4gX19rdm1fZ3BjX2FjdGl2YXRlKGdwYywgSU5WQUxJRF9HUEEsIHVodmEsIGxlbik7XFxuIDQ0MzpcXHR9XFxuIDQ0NDpcXHRcXG4gNDQ1OlxcdHZvaWQga3ZtX2dwY19kZWFjdGl2YXRlKHN0cnVjdCBnZm5fdG9fcGZuX2NhY2hlICpncGMpXFxuIDQ0NjpcXHR7XFxuIDQ0NzpcXHRcXHRzdHJ1Y3Qga3ZtICprdm0gPSBncGMtXFx1MDAzZWt2bTtcXG4gNDQ4OlxcdFxcdGt2bV9wZm5fdCBvbGRfcGZuO1xcbiA0NDk6XFx0XFx0dm9pZCAqb2xkX2todmE7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDE0OjAxOjM1LjQyODk4OTQ3WiIsIlNlcSI6NDMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjgzNTAyNDUxMDIsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBLVk0gUGF0Y2ggZm9yIFBvdGVudGlhbCBGdXp6aW5nIFRhcmdldHMqKlxuXG5Pa2F5LCBzbyB0aGVzZSBmdW5jdGlvbnMsIGBrdm1fZ3BjX3JlZnJlc2hgLCBga3ZtX2dwY19hY3RpdmF0ZWAsIGFuZCBga3ZtX2dwY19hY3RpdmF0ZV9odmFgLCBhcmUgbm9uLXN0YXRpYyDigJMgdGhhdCdzIGdvb2QsIHRoYXQncyB3aGF0IEkgbmVlZGVkIHRvIGNvbmZpcm0uIEknbSBnb2luZyB0byBhZGQgdGhvc2UgdGhyZWUgc3ltYm9scyB0byBteSBmb2N1cyBsaXN0LiBUaGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaXMgYEtWTWAsIHdoaWNoIGlzIGFsc28gaW1wb3J0YW50IHRvIG5vdGUuXG5cbk5vdywgbGV0J3MgZ28gYmFjayBhbmQgY2FyZWZ1bGx5IGV4YW1pbmUgdGhlIHByb3ZpZGVkIHBhdGNoLiBSaWdodCwgaGVyZSdzIHRoZSBjb3JlIG9mIGl0LiBXZSdyZSByZW1vdmluZyB0aGUgYGdwYy1cdTAwM2Vsb2NrYCBhY3F1aXNpdGlvbiBpZiB0aGUgR1BDIGlzbid0IGFjdGl2ZS4gSXQncyBtb3ZpbmcgdGhlIGBsb2NrZGVwX2Fzc2VydF9oZWxkYCBoaWdoZXIgaW4gdGhlIGZ1bmN0aW9uJ3Mgc3RydWN0dXJlLiBUaGF0J3MgYSBmdW5jdGlvbmFsIG1vZGlmaWNhdGlvbiwgYW5kIHRob3NlIGFyZSBhbHdheXMgaW50ZXJlc3RpbmcgZnJvbSBhIGZ1enppbmcgcGVyc3BlY3RpdmUsIGVzcGVjaWFsbHkgd2hlbiB0aGV5IGludm9sdmUgbG9ja3MgYW5kIHBvdGVudGlhbCByYWNlIGNvbmRpdGlvbnMsIG9yIGlmIHRoZSBsb2dpYyBpcyBhZmZlY3RlZCBieSB0aGUgc3RhdGUgb2YgYGdwYy1cdTAwM2VhY3RpdmVgLlxuXG5UaGUgZmFjdCB0aGF0IHdlJ3JlIG9wdGltaXppbmcgdGhlIGxvY2sgYWNxdWlzaXRpb24gcGF0aCBiYXNlZCBvbiB0aGUgYGdwYy1cdTAwM2VhY3RpdmVgIHN0YXR1cyByYWlzZXMgYSByZWQgZmxhZy4gVGhpcyBjb25kaXRpb25hbCBsb2dpYyBjYW4gZWFzaWx5IGludHJvZHVjZSB1bmV4cGVjdGVkIGJlaGF2aW9yIGlmIHRoZSBgZ3BjLVx1MDAzZWFjdGl2ZWAgZmxhZyBjaGFuZ2VzIGNvbmN1cnJlbnRseS4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdHJpZ2dlciB0aGlzIHBhcnRpY3VsYXIgY29kZSBwYXRoLCBzbyB0aGF0J3MgZGVmaW5pdGVseSBhIHZpYWJsZSB0YXJnZXQuIEkgbmVlZCB0byBiZSBhYmxlIHRvIHNldCB0aGUgYWN0aXZlIHJlc3VsdHMuXG5cbkFscmlnaHQsIHRpbWUgdG8gbG9nIHRoaXMgZm9yIGEgZnVsbC1zY2FsZSBmdXp6aW5nIGNhbXBhaWduLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMTgyNywiT3V0cHV0VG9rZW5zIjoxMjgsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMzUsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQxNDowMTo0My43NzkyMzc2NjJaIiwiU2VxIjo0NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo4NDcxMDQ0OCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiS1ZNXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia3ZtX2dwY19yZWZyZXNoXCIsXG4gICAgXCJrdm1fZ3BjX2FjdGl2YXRlXCIsXG4gICAgXCJrdm1fZ3BjX2FjdGl2YXRlX2h2YVwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBsb2NraW5nIGJlaGF2aW9yIGFuZCBsb2NrZGVwIGFzc2VydGlvbnMgaW4gYF9fa3ZtX2dwY19yZWZyZXNoYCB3aXRoaW4gdGhlIEtWTSBwZm5jYWNoZSBsb2dpYy4gSXQgYXZvaWRzIHRha2luZyB0aGUgYGdwYy1cXHUwMDNlbG9ja2AgaWYgdGhlIGNhY2hlIGlzIG5vdCBhY3RpdmUsIHdoaWNoIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChLVk0pLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIktWTVwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImt2bV9ncGNfcmVmcmVzaFwiLFxuICAgIFwia3ZtX2dwY19hY3RpdmF0ZVwiLFxuICAgIFwia3ZtX2dwY19hY3RpdmF0ZV9odmFcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbG9ja2luZyBiZWhhdmlvciBhbmQgbG9ja2RlcCBhc3NlcnRpb25zIGluIGBfX2t2bV9ncGNfcmVmcmVzaGAgd2l0aGluIHRoZSBLVk0gcGZuY2FjaGUgbG9naWMuIEl0IGF2b2lkcyB0YWtpbmcgdGhlIGBncGMtXFx1MDAzZWxvY2tgIGlmIHRoZSBjYWNoZSBpcyBub3QgYWN0aXZlLCB3aGljaCBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoS1ZNKS5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },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-workflowjgqhn[1] Phase: Succeeded StartedAt: 2026-07-29 14:01:55 +0000 UTC FinishedAt: 2026-07-29 14:01:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 14:01:55 +0000 UTC FinishedAt: 2026-07-29 14:01:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2] Phase: Succeeded StartedAt: 2026-07-29 14:01:55 +0000 UTC FinishedAt: 2026-07-29 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 14:01:55 +0000 UTC FinishedAt: 2026-07-29 16:53:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 14:01:55 +0000 UTC FinishedAt: 2026-07-29 14:02:05 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 14:01:55 +0000 UTC FinishedAt: 2026-07-29 14:02:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjgqhn/series-workflowjgqhn-convert-artifact-3602516196/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 14:02:05 +0000 UTC FinishedAt: 2026-07-29 14:26:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 14:02:05 +0000 UTC FinishedAt: 2026-07-29 14:26:28 +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:*4005ecf1-628a-4a71-90a8-bf55d0494d1a,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-workflowjgqhn/series-workflowjgqhn-convert-artifact-3602516196/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": "0e004c78-477f-4faa-b680-2bd47270b080", "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-workflowjgqhn/series-workflowjgqhn-build-action-31828258/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 14:02:05 +0000 UTC FinishedAt: 2026-07-29 14:25:58 +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:*4005ecf1-628a-4a71-90a8-bf55d0494d1a,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-workflowjgqhn/series-workflowjgqhn-convert-artifact-3602516196/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": "0e004c78-477f-4faa-b680-2bd47270b080", "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-workflowjgqhn/series-workflowjgqhn-build-action-31828258/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 14:26:28 +0000 UTC FinishedAt: 2026-07-29 14:26:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 14:26:28 +0000 UTC FinishedAt: 2026-07-29 14:26:28 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 14:26:28 +0000 UTC FinishedAt: 2026-07-29 14:26:38 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 14:26:28 +0000 UTC FinishedAt: 2026-07-29 14:26:33 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowjgqhn/series-workflowjgqhn-convert-artifact-774743779/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 14:26:38 +0000 UTC FinishedAt: 2026-07-29 14:28:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 14:26:38 +0000 UTC FinishedAt: 2026-07-29 14:28:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0e004c78-477f-4faa-b680-2bd47270b080,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-workflowjgqhn/series-workflowjgqhn-build-action-31828258/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-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 14:28:40 +0000 UTC FinishedAt: 2026-07-29 14:28:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 14:28:40 +0000 UTC FinishedAt: 2026-07-29 14:28:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 14:28:40 +0000 UTC FinishedAt: 2026-07-29 14:48:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 14:28:40 +0000 UTC FinishedAt: 2026-07-29 14:48:46 +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:*4005ecf1-628a-4a71-90a8-bf55d0494d1a,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-workflowjgqhn/series-workflowjgqhn-convert-artifact-774743779/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": "82ff40a6-cf00-4038-af04-53c0e3140ab9", "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-workflowjgqhn/series-workflowjgqhn-build-action-3158504343/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 14:28:40 +0000 UTC FinishedAt: 2026-07-29 14:48:36 +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:*4005ecf1-628a-4a71-90a8-bf55d0494d1a,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-workflowjgqhn/series-workflowjgqhn-convert-artifact-774743779/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": "82ff40a6-cf00-4038-af04-53c0e3140ab9", "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-workflowjgqhn/series-workflowjgqhn-build-action-3158504343/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 14:48:46 +0000 UTC FinishedAt: 2026-07-29 14:48:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 14:48:46 +0000 UTC FinishedAt: 2026-07-29 14:48:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 14:48:46 +0000 UTC FinishedAt: 2026-07-29 14:50:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 14:48:46 +0000 UTC FinishedAt: 2026-07-29 14:50:39 +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:*82ff40a6-cf00-4038-af04-53c0e3140ab9,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-workflowjgqhn/series-workflowjgqhn-build-action-3158504343/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-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 14:50:49 +0000 UTC FinishedAt: 2026-07-29 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 14:50:49 +0000 UTC FinishedAt: 2026-07-29 16:53:40 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"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:*0e004c78-477f-4faa-b680-2bd47270b080,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*82ff40a6-cf00-4038-af04-53c0e3140ab9,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-workflowjgqhn/series-workflowjgqhn-build-action-31828258/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-workflowjgqhn/series-workflowjgqhn-build-action-3158504343/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 14:50:49 +0000 UTC FinishedAt: 2026-07-29 14:50:59 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 14:50:49 +0000 UTC FinishedAt: 2026-07-29 14:50:54 +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-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"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-workflowjgqhn/series-workflowjgqhn-convert-artifact-1851561212/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 14:50:49 +0000 UTC FinishedAt: 2026-07-29 14:50:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 14:50:49 +0000 UTC FinishedAt: 2026-07-29 14:50:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 14:50:49 +0000 UTC FinishedAt: 2026-07-29 14:50:49 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 14:50:59 +0000 UTC FinishedAt: 2026-07-29 16:53:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjgqhn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["kvm_gpc_refresh","kvm_gpc_activate","kvm_gpc_activate_hva"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"f5098b6bae761e346ebcd9da7f95622c04733cff","config_name":"upstream-apparmor-kasan.config","enable_configs":["KVM"],"series_id":"318b6ee3-6efd-4e75-8d45-f098e37fcef7","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 14:50:59 +0000 UTC FinishedAt: 2026-07-29 16:53:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*0e004c78-477f-4faa-b680-2bd47270b080,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*82ff40a6-cf00-4038-af04-53c0e3140ab9,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-workflowjgqhn/series-workflowjgqhn-build-action-31828258/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-workflowjgqhn/series-workflowjgqhn-build-action-3158504343/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-workflowjgqhn/series-workflowjgqhn-convert-artifact-1851561212/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,}