Name: series-workflowdtbjb Phase: Succeeded StartedAt: 2026-07-27 10:50:57 +0000 UTC FinishedAt: 2026-07-27 13:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[0] Phase: Succeeded StartedAt: 2026-07-27 10:50:57 +0000 UTC FinishedAt: 2026-07-27 11:09:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[0].run-triage Phase: Succeeded StartedAt: 2026-07-27 10:50:57 +0000 UTC FinishedAt: 2026-07-27 11:09:56 +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": "4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "967545ce-ed80-477e-a1fd-7b58827f13a5" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_cluster_alloc", "ntfs_mapping_pairs_decompress" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDExOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2NsdXN0ZXJfYWxsb2MmIzM0OywKICAgICYjMzQ7bnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tzIHRvIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGFuZCBgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NgIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgY29yZSBOVEZTIG9wZXJhdGlvbnMgbGlrZSBhdHRyaWJ1dGUgZXhwYW5zaW9uIGFuZCBydW5saXN0IGRlY29tcHJlc3Npb24sIHNvIHRoZXkgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwYTU3NzZmZGM3MWVmYmI4NjU2NmJiZGJmMTQzYWM1OTUyYzRkM2E3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTE6MDk6MDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9sY25hbGxvYy5jIGIvZnMvbnRmcy9sY25hbGxvYy5jXG5pbmRleCA4MzVhMDQxMDIzYTJhYy4uYWEyZTAxN2E0Mzg0NGIgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2xjbmFsbG9jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvbGNuYWxsb2MuY1xuQEAgLTI5OCw3ICYjNDM7Mjk4LDEyIEBAIHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKm50ZnNfY2x1c3Rlcl9hbGxvYyhzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCwgY29uc3QgczY0IHN0XG4gXHRjbHVzdGVycyA9IGNvdW50O1xuIFx0cmxwb3MgPSBybHNpemUgPSAwO1xuIFx0bWFwcGluZyA9IGxjbmJtcF92aS1cdTAwM2VpX21hcHBpbmc7XG4tXHRpX3NpemUgPSBpX3NpemVfcmVhZChsY25ibXBfdmkpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogbGNuX2VtcHR5X2JpdHNfcGVyX3BhZ2UgaXMgc2l6ZWQgZnJvbSBucl9jbHVzdGVycywgYnV0ICRCaXRtYXAgY2FuXG4mIzQzO1x0ICogY292ZXIgbW9yZSBjbHVzdGVycyB0aGFuIHRoYXQ7IGJvdW5kIHRoZSBzY2FuIGJ5IHRoZSBhcnJheS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpX3NpemUgPSBtaW5fdChzNjQsIGlfc2l6ZV9yZWFkKGxjbmJtcF92aSksXG4mIzQzO1x0XHQgICAgICAgKChzNjQpdm9sLVx1MDAzZW5yX2NsdXN0ZXJzICYjNDM7IDcpIFx1MDAzZVx1MDAzZSAzKTtcbiBcdHdoaWxlICgxKSB7XG4gXHRcdG50ZnNfZGVidWcoXCYjMzQ7U3RhcnQgb2Ygb3V0ZXIgd2hpbGUgbG9vcDogZG9uZV96b25lcyAweCV4LCBzZWFyY2hfem9uZSAlaSwgcGFzcyAlaSwgem9uZV9zdGFydCAweCVsbHgsIHpvbmVfZW5kIDB4JWxseCwgYm1wX2luaXRpYWxfcG9zIDB4JWxseCwgYm1wX3BvcyAweCVsbHgsIHJscG9zICVpLCBybHNpemUgJWkuXCYjMzQ7LFxuIFx0XHRcdFx0ZG9uZV96b25lcywgc2VhcmNoX3pvbmUsIHBhc3MsXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9ydW5saXN0LmMgYi9mcy9udGZzL3J1bmxpc3QuY1xuaW5kZXggY2JiNjU3NmNmNzI1ODIuLjc0Zjk0YjRiNmM1YmJhIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9ydW5saXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvcnVubGlzdC5jXG5AQCAtODgwLDYgJiM0Mzs4ODAsMTMgQEAgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoY29uc3Qgc3RydWN0IG50ZnNfdm9sdW1lICpcbiBcdFx0XHRcdFx0bnRmc19lcnJvcih2b2wtXHUwMDNlc2IsIFwmIzM0O2xjbiA9PSAtMVwmIzM0Oyk7XG4gXHRcdFx0fVxuICNlbmRpZlxuJiM0MztcdFx0XHQvKiBDaGVjayBsY24gaXMgd2l0aGluIHRoZSB2b2x1bWUuICovXG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseShsY24gXHUwMDNlPSAoczY0KXZvbC1cdTAwM2Vucl9jbHVzdGVycykpIHtcbiYjNDM7XHRcdFx0XHRudGZzX2Vycm9yKHZvbC1cdTAwM2VzYixcbiYjNDM7XHRcdFx0XHRcdFx0XCYjMzQ7TENOIFx1MDAzZT0gbnJfY2x1c3RlcnMgaW4gbWFwcGluZyBwYWlycyBhcnJheS5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGdvdG8gZXJyX291dDtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiBcdFx0XHQvKiBDaGVjayBsY24gaXMgbm90IGJlbG93IC0xLiAqL1xuIFx0XHRcdGlmICh1bmxpa2VseShsY24gXHUwMDNjIC0xKSkge1xuIFx0XHRcdFx0bnRmc19lcnJvcih2b2wtXHUwMDNlc2IsIFwmIzM0O0ludmFsaWQgczY0IFx1MDAzYyAtMSBpbiBtYXBwaW5nIHBhaXJzIGFycmF5LlwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2NsdXN0ZXJfYWxsb2MmIzM0OywKICAgICYjMzQ7bnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tzIHRvIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGFuZCBgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NgIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgY29yZSBOVEZTIG9wZXJhdGlvbnMgbGlrZSBhdHRyaWJ1dGUgZXhwYW5zaW9uIGFuZCBydW5saXN0IGRlY29tcHJlc3Npb24sIHNvIHRoZXkgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYTU3NzZmZGM3MWVmYmI4NjU2NmJiZGJmMTQzYWM1OTUyYzRkM2E3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMjcgMTE6MDk6MDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9udGZzL2xjbmFsbG9jLmMgYi9mcy9udGZzL2xjbmFsbG9jLmMKaW5kZXggODM1YTA0MTAyM2EyYWMuLmFhMmUwMTdhNDM4NDRiIDEwMDY0NAotLS0gYS9mcy9udGZzL2xjbmFsbG9jLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9sY25hbGxvYy5jCkBAIC0yOTgsNyAmIzQzOzI5OCwxMiBAQCBzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpudGZzX2NsdXN0ZXJfYWxsb2Moc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsIGNvbnN0IHM2NCBzdAogCWNsdXN0ZXJzID0gY291bnQ7CiAJcmxwb3MgPSBybHNpemUgPSAwOwogCW1hcHBpbmcgPSBsY25ibXBfdmktJmd0O2lfbWFwcGluZzsKLQlpX3NpemUgPSBpX3NpemVfcmVhZChsY25ibXBfdmkpOwomIzQzOwkvKgomIzQzOwkgKiBsY25fZW1wdHlfYml0c19wZXJfcGFnZSBpcyBzaXplZCBmcm9tIG5yX2NsdXN0ZXJzLCBidXQgJEJpdG1hcCBjYW4KJiM0MzsJICogY292ZXIgbW9yZSBjbHVzdGVycyB0aGFuIHRoYXQ7IGJvdW5kIHRoZSBzY2FuIGJ5IHRoZSBhcnJheS4KJiM0MzsJICovCiYjNDM7CWlfc2l6ZSA9IG1pbl90KHM2NCwgaV9zaXplX3JlYWQobGNuYm1wX3ZpKSwKJiM0MzsJCSAgICAgICAoKHM2NCl2b2wtJmd0O25yX2NsdXN0ZXJzICYjNDM7IDcpICZndDsmZ3Q7IDMpOwogCXdoaWxlICgxKSB7CiAJCW50ZnNfZGVidWcoJiMzNDtTdGFydCBvZiBvdXRlciB3aGlsZSBsb29wOiBkb25lX3pvbmVzIDB4JXgsIHNlYXJjaF96b25lICVpLCBwYXNzICVpLCB6b25lX3N0YXJ0IDB4JWxseCwgem9uZV9lbmQgMHglbGx4LCBibXBfaW5pdGlhbF9wb3MgMHglbGx4LCBibXBfcG9zIDB4JWxseCwgcmxwb3MgJWksIHJsc2l6ZSAlaS4mIzM0OywKIAkJCQlkb25lX3pvbmVzLCBzZWFyY2hfem9uZSwgcGFzcywKZGlmZiAtLWdpdCBhL2ZzL250ZnMvcnVubGlzdC5jIGIvZnMvbnRmcy9ydW5saXN0LmMKaW5kZXggY2JiNjU3NmNmNzI1ODIuLjc0Zjk0YjRiNmM1YmJhIDEwMDY0NAotLS0gYS9mcy9udGZzL3J1bmxpc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9udGZzL3J1bmxpc3QuYwpAQCAtODgwLDYgJiM0Mzs4ODAsMTMgQEAgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoY29uc3Qgc3RydWN0IG50ZnNfdm9sdW1lICoKIAkJCQkJbnRmc19lcnJvcih2b2wtJmd0O3NiLCAmIzM0O2xjbiA9PSAtMSYjMzQ7KTsKIAkJCX0KICNlbmRpZgomIzQzOwkJCS8qIENoZWNrIGxjbiBpcyB3aXRoaW4gdGhlIHZvbHVtZS4gKi8KJiM0MzsJCQlpZiAodW5saWtlbHkobGNuICZndDs9IChzNjQpdm9sLSZndDtucl9jbHVzdGVycykpIHsKJiM0MzsJCQkJbnRmc19lcnJvcih2b2wtJmd0O3NiLAomIzQzOwkJCQkJCSYjMzQ7TENOICZndDs9IG5yX2NsdXN0ZXJzIGluIG1hcHBpbmcgcGFpcnMgYXJyYXkuJiMzNDspOwomIzQzOwkJCQlnb3RvIGVycl9vdXQ7CiYjNDM7CQkJfQomIzQzOwogCQkJLyogQ2hlY2sgbGNuIGlzIG5vdCBiZWxvdyAtMS4gKi8KIAkJCWlmICh1bmxpa2VseShsY24gJmx0OyAtMSkpIHsKIAkJCQludGZzX2Vycm9yKHZvbC0mZ3Q7c2IsICYjMzQ7SW52YWxpZCBzNjQgJmx0OyAtMSBpbiBtYXBwaW5nIHBhaXJzIGFycmF5LiYjMzQ7KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5URlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGZzL250ZnMvbGNuYWxsb2MuY2AgYW5kIGBmcy9udGZzL3J1bmxpc3QuY2AuIEludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGFkZCBib3VuZHMgY2hlY2tzLiBHb29kLCBnb29kLCB0aGF0JiMzOTtzIHdoYXQgSSB3YW50IHRvIHNlZS4gVGhpcyBpbXBsaWVzIHRoZXkmIzM5O3JlIGJvbHN0ZXJpbmcgdGhlIE5URlMgZmlsZXN5c3RlbSYjMzk7cyByb2J1c3RuZXNzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGNsdXN0ZXIgYWxsb2NhdGlvbiBhbmQgcnVubGlzdCBkZWNvbXByZXNzaW9uLiBgbnRmc19jbHVzdGVyX2FsbG9jYCBpbiBgbGNuYWxsb2MuY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgaW4gYHJ1bmxpc3QuY2AuLi4gcmlnaHQsIHRob3NlIGFyZSBrZXkgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaWNzIG9mIGhvdyBkYXRhIGlzIHN0b3JlZCBhbmQgcmV0cmlldmVkIG9uIGFuIE5URlMgdm9sdW1lLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIG9yIHBlcmhhcHMgdGhleSYjMzk7cmUgcHJvYWN0aXZlbHkgaGFyZGVuaW5nIGFnYWluc3QgYSB0aGVvcmV0aWNhbCBpc3N1ZS4gR290dGEgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zIGZvciBOVEZTIG5vdyB0byBzZWUgaG93IHRoaXMgaW1wYWN0cyBvdXIgc3BlY2lmaWMgdXNlIGNhc2UgYW5kIHdoYXQgZGVmYXVsdHMgd2UmIzM5O3JlIHJ1bm5pbmcgd2l0aC4gSSB3YW50IHRvIHNlZSB3aGF0IHRoaXMgdHJhbnNsYXRlcyB0bywgaW4gcHJhY3RpY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcbi0tXG5mcy9udGZzL0tjb25maWctMzQtXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG5mcy9udGZzL0tjb25maWctMzYtXHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDA4CgkJCQkJCQlvdXRwdXQ6IDY1CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTlRGUyBGaWxlc3lzdGVtIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgTlRGU19GU2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbi4gSSBrbm93IHRoZXJlJiMzOTtzIGFsc28gYE5URlMzX0ZTYCBpbiB0aGUga2VybmVsIG5vdywgYnV0IHRoaXMgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZnMvbnRmcy9gLCB3aGljaCBJIHJlY2FsbCBpcyB0aGUgb2xkZXIgTlRGUyBkcml2ZXIuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBvbGQgZHJpdmVyIGlzIHN0aWxsIHByZXNlbnQgaW4gdGhlIGtlcm5lbC4gKlllcyosIGl0IGlzLCBhcyBleHBlY3RlZC4gTm93IHRoYXQgSSYjMzk7dmUgcmUtZXN0YWJsaXNoZWQgdGhlIGNvbnRleHQgb2YgdGhlIG9sZGVyIGltcGxlbWVudGF0aW9uLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhpcyBwYXRjaC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgY2xvc2VseSBhdCB0aGUgYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgZnVuY3Rpb25zLCB3aGljaCBhcmUgdGhlIGtleSBhcmVhcyBmb3IgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2NsdXN0ZXJfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jPTE5MTE9aW50IG50ZnNfYXR0cl9tYWtlX25vbl9yZXNpZGVudChzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGNvbnN0IHUzMiBkYXRhX3NpemUpXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy0xOTk5LVx0XHQvKiBTdGFydCBieSBhbGxvY2F0aW5nIGNsdXN0ZXJzIHRvIGhvbGQgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4gKi9cbmZzL250ZnMvYXR0cmliLmM6MjAwMDpcdFx0cmwgPSBudGZzX2NsdXN0ZXJfYWxsb2Modm9sLCAwLFxuZnMvbnRmcy9hdHRyaWIuYy0yMDAxLVx0XHRcdFx0bnRmc19ieXRlc190b19jbHVzdGVyKHZvbCwgbmV3X3NpemUpLFxuLS1cbmZzL250ZnMvYXR0cmliLmM9NDMzMj1zdGF0aWMgaW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfZXhwYW5kKHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgczY0IG5ld3NpemUsXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy00NDc1LVxuZnMvbnRmcy9hdHRyaWIuYzo0NDc2Olx0XHRcdHJsID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCxcbmZzL250ZnMvYXR0cmliLmMtNDQ3Ny1cdFx0XHRcdFx0bnRmc19ieXRlc190b19jbHVzdGVyKHZvbCwgbmktXHUwMDNlYWxsb2NhdGVkX3NpemUpLFxuLS1cbmZzL250ZnMvYXR0cmliLmM9NDk3Mz1pbnQgbnRmc19hdHRyX21hcF9jbHVzdGVyKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHZjbl9zdGFydCwgczY0ICpsY25fc3RhcnQsXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy01MDY1LVxuZnMvbnRmcy9hdHRyaWIuYzo1MDY2Olx0cmxjID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgdmNuLCBjbHVfY291bnQsIGxjbl9zZWVrX2Zyb20sIERBVEFfWk9ORSxcbmZzL250ZnMvYXR0cmliLmMtNTA2Ny1cdFx0XHRmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XG4tLVxuZnMvbnRmcy9jb21wcmVzcy5jPTEyNzQ9c3RhdGljIGludCBudGZzX3dyaXRlX2NiKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHBvcywgc3RydWN0IHBhZ2UgKipwYWdlcyxcbi0tXG5mcy9udGZzL2NvbXByZXNzLmMtMTM4NC1cbmZzL250ZnMvY29tcHJlc3MuYzoxMzg1Olx0cmxjID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgbmV3X3ZjbiwgbmV3X2xlbmd0aCwgLTEsIERBVEFfWk9ORSxcbmZzL250ZnMvY29tcHJlc3MuYy0xMzg2LVx0XHRcdGZhbHNlLCB0cnVlLCB0cnVlKTtcbi0tXG5mcy9udGZzL2xjbmFsbG9jLmM9NjY9c3RhdGljIHM2NCBtYXhfZW1wdHlfYml0X3JhbmdlKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IHNpemUpXG4tLVxuZnMvbnRmcy9sY25hbGxvYy5jLTExOS0vKlxuZnMvbnRmcy9sY25hbGxvYy5jOjEyMDogKiBudGZzX2NsdXN0ZXJfYWxsb2MgLSBhbGxvY2F0ZSBjbHVzdGVycyBvbiBhbiBudGZzIHZvbHVtZVxuZnMvbnRmcy9sY25hbGxvYy5jLTEyMS0gKiBAdm9sOlx0XHRtb3VudGVkIG50ZnMgdm9sdW1lIG9uIHdoaWNoIHRvIGFsbG9jYXRlIGNsdXN0ZXJzXG4tLVxuZnMvbnRmcy9sY25hbGxvYy5jLTE4Mi0gKi9cbmZzL250ZnMvbGNuYWxsb2MuYzoxODM6c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19jbHVzdGVyX2FsbG9jKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLCBjb25zdCBzNjQgc3RhcnRfdmNuLFxuZnMvbnRmcy9sY25hbGxvYy5jLTE4NC1cdFx0Y29uc3QgczY0IGNvdW50LCBjb25zdCBzNjQgc3RhcnRfbGNuLFxuLS1cbmZzL250ZnMvbGNuYWxsb2MuaD0yMz1lbnVtIHtcbi0tXG5mcy9udGZzL2xjbmFsbG9jLmgtMjktXG5mcy9udGZzL2xjbmFsbG9jLmg6MzA6c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19jbHVzdGVyX2FsbG9jKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLFxuZnMvbnRmcy9sY25hbGxvYy5oLTMxLVx0XHRjb25zdCBzNjQgc3RhcnRfdmNuLCBjb25zdCBzNjQgY291bnQsIGNvbnN0IHM2NCBzdGFydF9sY24sXG4tLVxuZnMvbnRmcy9tZnQuYz0xMDUzPXN0YXRpYyBpbnQgbnRmc19tZnRfYml0bWFwX2V4dGVuZF9hbGxvY2F0aW9uX25vbG9jayhzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbClcbi0tXG5mcy9udGZzL21mdC5jLTExMzctXHRcdC8qIEFsbG9jYXRlIGEgY2x1c3RlciBmcm9tIHRoZSBEQVRBX1pPTkUuICovXG5mcy9udGZzL21mdC5jOjExMzg6XHRcdHJsMiA9IG50ZnNfY2x1c3Rlcl9hbGxvYyh2b2wsIHJsWzFdLnZjbiwgMSwgbGNuLCBEQVRBX1pPTkUsXG5mcy9udGZzL21mdC5jLTExMzktXHRcdFx0XHR0cnVlLCBmYWxzZSwgZmFsc2UpO1xuLS1cbmZzL250ZnMvbWZ0LmM9MTQ4Nj1zdGF0aWMgaW50IG50ZnNfbWZ0X2RhdGFfZXh0ZW5kX2FsbG9jYXRpb25fbm9sb2NrKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sKVxuLS1cbmZzL250ZnMvbWZ0LmMtMTU2Mi1cdGRvIHtcbmZzL250ZnMvbWZ0LmM6MTU2MzpcdFx0cmwyID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgb2xkX2xhc3RfdmNuLCBuciwgbGNuLCBNRlRfWk9ORSxcbmZzL250ZnMvbWZ0LmMtMTU2NC1cdFx0XHRcdHRydWUsIGZhbHNlLCBmYWxzZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jPTg2PWludCBudGZzX21hcF9ydW5saXN0X25vbG9jayhzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCB2Y24sIHN0cnVjdCBudGZzX2F0dHJfc2VhcmNoX2N0eCAqY3R4KVxuLS1cbmZzL250ZnMvYXR0cmliLmMtMTg3LVx0ICogd2UgdGhlbiB0cnkgdG8gbWFwIHRoZSBhbHJlYWR5IG1hcHBlZCBydW5saXN0IGZyYWdtZW50IGFuZFxuZnMvbnRmcy9hdHRyaWIuYzoxODg6XHQgKiBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcygpIGZhaWxzLlxuZnMvbnRmcy9hdHRyaWIuYy0xODktXHQgKi9cbi0tXG5mcy9udGZzL2F0dHJpYi5jLTE5NC1cdH1cbmZzL250ZnMvYXR0cmliLmM6MTk1Olx0cmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhuaS1cdTAwM2V2b2wsIGEsIFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QsIFx1MDAyNm5ld19ybF9jb3VudCk7XG5mcy9udGZzL2F0dHJpYi5jLTE5Ni1cdGlmIChJU19FUlIocmwpKVxuLS1cbmZzL250ZnMvYXR0cmliLmM9MjYyNT1pbnQgbnRmc19hdHRyX3JlY29yZF9ybShzdHJ1Y3QgbnRmc19hdHRyX3NlYXJjaF9jdHggKmN0eClcbi0tXG5mcy9udGZzL2F0dHJpYi5jLTI3MDMtXG5mcy9udGZzL2F0dHJpYi5jOjI3MDQ6XHRcdFx0YWxfcmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhiYXNlX25pLVx1MDAzZXZvbCxcbmZzL250ZnMvYXR0cmliLmMtMjcwNS1cdFx0XHRcdFx0Y3R4LVx1MDAzZWF0dHIsIE5VTEwsIFx1MDAyNm5ld19ybF9jb3VudCk7XG4tLVxuZnMvbnRmcy9hdHRyaWIuYz0zMjQ1PWludCBudGZzX2F0dHJfbWFwX3dob2xlX3J1bmxpc3Qoc3RydWN0IG50ZnNfaW5vZGUgKm5pKVxuLS1cbmZzL250ZnMvYXR0cmliLmMtMzI5Mi1cdFx0XHQvKiBEZWNvZGUgdGhlIHJ1bmxpc3QuICovXG5mcy9udGZzL2F0dHJpYi5jOjMyOTM6XHRcdFx0cmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhuaS1cdTAwM2V2b2wsIGEsIFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QsXG5mcy9udGZzL2F0dHJpYi5jLTMyOTQtXHRcdFx0XHRcdFx0XHQgICBcdTAwMjZuZXdfcmxfY291bnQpO1xuLS1cbmZzL250ZnMvaW5vZGUuYz0zMjM9c3RhdGljIGludCBudGZzX25vbl9yZXNpZGVudF9kZWFsbG9jX2NsdXN0ZXJzKHN0cnVjdCBudGZzX2lub2RlICpuaSlcbi0tXG5mcy9udGZzL2lub2RlLmMtMzUxLVxuZnMvbnRmcy9pbm9kZS5jOjM1MjpcdFx0XHRybCA9IG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKG5pLVx1MDAzZXZvbCwgYWN0eC1cdTAwM2VhdHRyLCBOVUxMLFxuZnMvbnRmcy9pbm9kZS5jLTM1My1cdFx0XHRcdFx0XHUwMDI2bmV3X3JsX2NvdW50KTtcbi0tXG5mcy9udGZzL2lub2RlLmM9MTgwNj1zdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IG1mdF9uaV9ydW5saXN0X2xvY2tfa2V5LCBtZnRfbmlfbXJlY19sb2NrX2tleTtcbi0tXG5mcy9udGZzL2lub2RlLmMtMTgyNi0gKiBlbHNlIGFuZCBpdGVyYXRpbmcgdXNpbmcgbnRmc19hdHRyX2xvb2t1cCgkREFUQSkgb3ZlciBhbGwgZXh0ZW50cy4gIEFzIGVhY2hcbmZzL250ZnMvaW5vZGUuYzoxODI3OiAqIGV4dGVudCBpcyBmb3VuZCwgd2UgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoKSBpbmNsdWRpbmcgdGhlIGltcGxpZWRcbmZzL250ZnMvaW5vZGUuYy0xODI4LSAqIG50ZnNfcnVubGlzdHNfbWVyZ2UoKS4gIEVhY2ggc3RlcCBvZiB0aGUgaXRlcmF0aW9uIG5lY2Vzc2FyaWx5IHByb3ZpZGVzXG4tLVxuZnMvbnRmcy9pbm9kZS5jPTE4MzQ9aW50IG50ZnNfcmVhZF9pbm9kZV9tb3VudChzdHJ1Y3QgaW5vZGUgKnZpKVxuLS1cbmZzL250ZnMvaW5vZGUuYy0xOTg0LVxuZnMvbnRmcy9pbm9kZS5jOjE5ODU6XHRcdFx0cmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyh2b2wsIGEsIE5VTEwsIFx1MDAyNm5ld19ybF9jb3VudCk7XG5mcy9udGZzL2lub2RlLmMtMTk4Ni1cdFx0XHRpZiAoSVNfRVJSKHJsKSkge1xuLS1cbmZzL250ZnMvaW5vZGUuYy0yMDgxLVx0XHQgKi9cbmZzL250ZnMvaW5vZGUuYzoyMDgyOlx0XHRucmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyh2b2wsIGEsIFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QsXG5mcy9udGZzL2lub2RlLmMtMjA4My1cdFx0XHRcdFx0XHQgICAgXHUwMDI2bmV3X3JsX2NvdW50KTtcbi0tXG5mcy9udGZzL2lub2RlLmMtMjA4NS1cdFx0XHRudGZzX2Vycm9yKHNiLFxuZnMvbnRmcy9pbm9kZS5jOjIwODY6XHRcdFx0XHRcJiMzNDtudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcygpIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkLlwmIzM0OyxcbmZzL250ZnMvaW5vZGUuYy0yMDg3LVx0XHRcdFx0UFRSX0VSUihucmwpKTtcbi0tXG5mcy9udGZzL3J1bmxpc3QuYz01MTg9c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19ydW5saXN0c19tZXJnZShzdHJ1Y3QgcnVubGlzdCAqZF9ydW5saXN0LFxuLS1cbmZzL250ZnMvcnVubGlzdC5jLTcxMy0vKlxuZnMvbnRmcy9ydW5saXN0LmM6NzE0OiAqIG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzIC0gY29udmVydCBtYXBwaW5nIHBhaXJzIGFycmF5IHRvIHJ1bmxpc3RcbmZzL250ZnMvcnVubGlzdC5jLTcxNS0gKiBAdm9sOiBudGZzIHZvbHVtZVxuLS1cbmZzL250ZnMvcnVubGlzdC5jLTczMC0gKi9cbmZzL250ZnMvcnVubGlzdC5jOjczMTpzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhjb25zdCBzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCxcbmZzL250ZnMvcnVubGlzdC5jLTczMi1cdFx0Y29uc3Qgc3RydWN0IGF0dHJfcmVjb3JkICphdHRyLCBzdHJ1Y3QgcnVubGlzdCAqb2xkX3J1bmxpc3QsXG4tLVxuZnMvbnRmcy9ydW5saXN0Lmg9Njg9c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19ydW5saXN0c19tZXJnZShzdHJ1Y3QgcnVubGlzdCAqZF9ydW5saXN0LFxuLS1cbmZzL250ZnMvcnVubGlzdC5oLTcwLVx0XHRzaXplX3QgKm5ld19ybF9jb3VudCk7XG5mcy9udGZzL3J1bmxpc3QuaDo3MTpzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhjb25zdCBzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCxcbmZzL250ZnMvcnVubGlzdC5oLTcyLVx0XHRjb25zdCBzdHJ1Y3QgYXR0cl9yZWNvcmQgKmF0dHIsIHN0cnVjdCBydW5saXN0ICpvbGRfcnVubGlzdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODI4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzIGluIHRoZSBOVEZTIEZpbGVzeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBpdCYjMzk7cyBmb2N1c2luZyBvbiBjb3JlIE5URlMgZnVuY3Rpb25zOiBgbnRmc19jbHVzdGVyX2FsbG9jYCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIGEgd2lkZSByYW5nZSBvZiBjcml0aWNhbCBvcGVyYXRpb25zIC0gdGhpbmdzIGxpa2UgYXR0cmlidXRlIG1hbmFnZW1lbnQsIGFsbG9jYXRpb24sIGFuZCBydW5saXN0IGhhbmRsaW5nLiBUaGF0IGFsb25lIG1ha2VzIHRoaXMgcGF0Y2ggYW4gYXR0cmFjdGl2ZSB0YXJnZXQgZm9yIGZ1enppbmc7IGFueSBib3VuZHMgY2hlY2sgaXNzdWVzIGhlcmUgY291bGQgaGF2ZSBwcmV0dHkgc2lnbmlmaWNhbnQgY29uc2VxdWVuY2VzLgoKU3BlY2lmaWNhbGx5LCBgbnRmc19jbHVzdGVyX2FsbG9jYCBpcyBjYWxsZWQgYnkgYSBidW5jaCBvZiBmdW5jdGlvbnMgdGhhdCBkZWFsIHdpdGggYWxsb2NhdGluZyBjbHVzdGVycywgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgaXMgaW52b2x2ZWQgaW4gcnVubGlzdCBtYXBwaW5nIGFuZCBkZWNvbXByZXNzaW9uLiBDb25zaWRlcmluZyB0aGUgcmVhY2ggb2YgdGhlc2UgZnVuY3Rpb25zLCBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcyB0aHJvdWdoIGZ1enppbmcgY291bGQgdW5jb3ZlciBzb21lIHJlYWxseSBuYXN0eSBlZGdlIGNhc2VzLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoYXQgd2UmIzM5O3JlIGdvaW5nIHRvIGZvY3VzIG9uLiBCYXNlZCBvbiB0aGUgcGF0Y2gsIGl0IHNlZW1zIGxpa2UgYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgYXJlIHRoZSBrZXkuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhleSBhcmUgbm90IHN0YXRpYyBvciBpbmxpbmUgLSBhbmQsIGxvb2tpbmcgaW4gYGZzL250ZnMvbGNuYWxsb2MuY2AgYW5kIGBmcy9udGZzL3J1bmxpc3QuY2AsIHRoZXkgYXJlIG5vdC4gVGhhdCYjMzk7cyBwZXJmZWN0LiBUaGlzIG1ha2VzIHRoZW0gZ29vZCBmb2N1cyBzeW1ib2xzIGZvciBteSBmdXp6aW5nIGNhbXBhaWduLgoKTmV4dCBzdGVwOiBsZXQmIzM5O3Mgc2NvcGUgb3V0IHRoZWlyIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIE5URlMgZmlsZXN5c3RlbS4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHRoZXNlIGZ1bmN0aW9ucyBvcGVyYXRlIGluIHRvIGNyZWF0ZSBlZmZlY3RpdmUgZnV6emluZyBoYXJuZXNzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcbmZzL250ZnMvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuZnMvbnRmcy9LY29uZmlnOjE1Olx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG5mcy9udGZzL0tjb25maWctMTYtXHRoZWxwXG4tLVxuZnMvbnRmcy9LY29uZmlnPTM1PWNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuZnMvbnRmcy9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG5mcy9udGZzL0tjb25maWc6Mzc6XHRkZXBlbmRzIG9uIE5URlNfRlNcbmZzL250ZnMvS2NvbmZpZy0zOC1cdHNlbGVjdCBGU19QT1NJWF9BQ0xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgwNgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLiBNeSBtaW5kJiMzOTtzIGJ1enppbmcuLi4gSSYjMzk7bSBkaXZpbmcgZGVlcCwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBmdW5kYW1lbnRhbC4gCgoqKlJldmlld2luZyB0aGUgQ29yZToqKgoKSG9sZCBvbiBhIHNlY29uZC4gQmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7dmUgZ290IHRoZSBlc3NlbnRpYWxzIGNvdmVyZWQuIEkgc2hvdWxkIHJlLWV2YWx1YXRlIHRoZSBjb3JlIG9mIHRoZSBmaWxlIHN5c3RlbSBpdHNlbGYuLi4gU3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgY2hlY2sgYE5URlNfRlNgLiBJdCYjMzk7cyBlYXN5IHRvIGdldCBsb3N0IGluIHRoZSBkZXRhaWxzIGFuZCBmb3JnZXQgdG8gZ3JvdW5kIHlvdXJzZWxmIHdpdGggYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByaW1hcnkgY29tcG9uZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcbi0tXG5mcy9udGZzL0tjb25maWctMzQtXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG5mcy9udGZzL0tjb25maWctMzYtXHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEyNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIC0gSW5pdGlhbCBTY2FuKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGltbWVkaWF0ZWx5IGludGVyZXN0ZWQgaW4gdGhlIHNldHVwIGZvciB0aGUgTlRGUyBmaWxlc3lzdGVtIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB1c3VhbGx5IHRvIGxvb2sgZm9yIHRoZSBiYXNpYyBzdHJ1Y3R1cmUuIEkgZXhwZWN0IHRvIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHM6IG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzLiBJJiMzOTtsbCB3YW50IHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGtleSBwYXJhbWV0ZXJzIHRoYXQgZGVmaW5lIHdoZXRoZXIgTlRGUyBzdXBwb3J0IGlzIGluY2x1ZGVkLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBBbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgYXJlIGFsd2F5cyBnb29kIHRvIGZsYWcgZWFybHkgYXMgd2VsbC4gTXkgYnJhaW4gaXMgYWxyZWFkeSBzdGFydGluZyB0byBmb3JtdWxhdGUgYW4gaW50ZXJuYWwgbWVudGFsIG1vZGVsIG9mIHRoZSBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDExOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5URlNfRlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IE5MU1xuICAgNTpcdFx0c2VsZWN0IEZTX0lPTUFQXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIE5URlMgaXMgdGhlIGZpbGUgc3lzdGVtIG9mIE1pY3Jvc29mdCBXaW5kb3dzIE5ULCAyMDAwLCBYUCBhbmQgMjAwMy5cbiAgIDg6XHRcdCAgVGhpcyBhbGxvd3MgeW91IHRvIG1vdW50IGRldmljZXMgZm9ybWF0dGVkIHdpdGggdGhlIG50ZnMgZmlsZSBzeXN0ZW0uXG4gICA5Olx0XG4gIDEwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuICAxMTpcdFx0ICBudGZzLlxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBOVEZTX0RFQlVHXG4gIDE0Olx0XHRib29sIFwmIzM0O05URlMgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbiAgMTU6XHRcdGRlcGVuZHMgb24gTlRGU19GU1xuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTlRGUyBmaWxlIHN5c3RlbSwgc2F5XG4gIDE4Olx0XHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3MgdG8gYmVcbiAgMTk6XHRcdCAgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0b1xuICAyMDpcdFx0ICBiZSB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLiAgTm90ZSB0aGF0IGRlYnVnZ2luZyBtZXNzYWdlcyBhcmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYxOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgTlRGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBOVEZTIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbi4gSSBzZWUgdGhhdCBgTlRGU19GU2AgaGFzIGBzZWxlY3QgTkxTYCBhbmQgYHNlbGVjdCBGU19JT01BUGAuIEhtbSwgdGhhdCYjMzk7cyB3aGF0IEkmIzM5O2QgZXhwZWN0LiBCdXQgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZy4uLiBpdCBkb2VzbiYjMzk7dCBoYXZlIGEgYGRlcGVuZHMgb25gIGNsYXVzZSwgd2hpY2ggc2VlbXMgYSBiaXQgb2RkLiBJJiMzOTttIHVzZWQgdG8gc2VlaW5nIGRlcGVuZGVuY2llcyBoZXJlLgoKV2FpdCBhIG1pbnV0ZSwgd2hhdCBhYm91dCB0aGUgYE5URlNfUldgIHN5bWJvbD8gRG9lcyB0aGF0IGNvbWUgaW50byBwbGF5PyBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZWFkLXdyaXRlIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIGFib3V0IGBOVEZTX1JXYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IG1pc3NpbmcgZGVwZW5kZW5jeSBhbmQgaG93IHRoaW5ncyBhcmUgYWN0dWFsbHkgdGllZCB0b2dldGhlci4gVGltZSB0byBkbyBzb21lIG1vcmUgcmVhZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIxOlx0XHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXG4gIDIyOlx0XHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxuICAyMzpcdFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXG4gIDI0Olx0XHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XG4gIDI1Olx0XHQgIGVjaG8gMSBcdTAwM2UgL3Byb2Mvc3lzL2ZzL250ZnMtZGVidWdcbiAgMjY6XHRcdCAgUmVwbGFjaW5nIHRoZSBcJiMzNDsxXCYjMzQ7IHdpdGggXCYjMzQ7MFwmIzM0OyB3b3VsZCBkaXNhYmxlIGRlYnVnIG1lc3NhZ2VzLlxuICAyNzpcdFxuICAyODpcdFx0ICBJZiB5b3UgbGVhdmUgZGVidWdnaW5nIG1lc3NhZ2VzIGRpc2FibGVkLCB0aGlzIHJlc3VsdHMgaW4gbGl0dGxlXG4gIDI5Olx0XHQgIG92ZXJoZWFkLCBidXQgZW5hYmxpbmcgZGVidWcgbWVzc2FnZXMgcmVzdWx0cyBpbiB2ZXJ5IHNpZ25pZmljYW50XG4gIDMwOlx0XHQgIHNsb3dkb3duIG9mIHRoZSBzeXN0ZW0uXG4gIDMxOlx0XG4gIDMyOlx0XHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcbiAgMzM6XHRcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG4gIDM4Olx0XHRzZWxlY3QgRlNfUE9TSVhfQUNMXG4gIDM5Olx0XHRoZWxwXG4gIDQwOlx0XHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjM3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgSSYjMzk7bSByZWFkeS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuIEhlcmUmIzM5O3MgYSBzdW1tYXJ5IGZyb20gbXkgcGVyc3BlY3RpdmU6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgQW50aWNpcGF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkmIzM5O20gZ29pbmcgdG8gcmVhZCBmdXJ0aGVyIGFuZCBhbmFseXplLiBJJiMzOTtsbCBuZWVkIHRvIGtlZXAgYW4gb3BlbiBtaW5kIGFuZCBiZSByZWFkeSB0byBkZWx2ZSBpbnRvIHRoZSBkZXRhaWxzLiBJJiMzOTttIGxvb2tpbmcgZm9yd2FyZCB0byB0aGUgY2hhbGxlbmdlIG9mIGFuYWx5emluZyBhbmQgc3VtbWFyaXppbmcgdGhlIGNvbmNlcHRzIGF0IGhhbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDExOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0MTpcdFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cbiAgNDI6XHRcbiAgNDM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBBQ0wgc3VwcG9ydCBmb3IgbnRmcywgcHJvdmlkaW5nIGZ1bmN0aW9uYWwgcGFyaXR5XG4gIDQ0Olx0XHQgIHdpdGggbnRmczMgZHJpdmllci5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgTk9URTogdGhpcyBpcyBsaW51eCBvbmx5IGZlYXR1cmUuIFdpbmRvd3Mgd2lsbCBpZ25vcmUgdGhlc2UgQUNMcy5cbiAgNDc6XHRcbiAgNDg6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ5NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJvdWJsZXNob290aW5nIGEgTWlzc2luZyBEcml2ZXIqKgoKT2theSwgaG9sZCBvbi4gSSB3YXMgZXhwZWN0aW5nIGBOVEZTX1JXYCB0byBiZSBwcmVzZW50LCBidXQgaXQmIzM5O3Mgbm90IHNob3dpbmcgdXAgYXMgaXQgc2hvdWxkLiBUaGlzIGlzbiYjMzk7dCBpZGVhbCwgYW5kIGl0IHRocm93cyBhIHdyZW5jaCBpbiBteSBleHBlY3RlZCB3b3JrZmxvdy4gTGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zIHlldCwgYnV0IEkgbmVlZCB0byBjb25maXJtIGl0cyBhYnNlbmNlIGRlZmluaXRpdmVseS4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGRpdmUgZGVlcGVyIGFuZCB2ZXJpZnkgdGhhdCB0aGUgZHJpdmVyIGlzbiYjMzk7dCBqdXN0IGhpZGRlbiBvciBtaXNjb25maWd1cmVkLCBhbmQgY29uZmlybSBpdCYjMzk7cyB0cnVseSBub3QgdGhlcmUuIFNvbWV0aGluZyBpc24mIzM5O3QgcXVpdGUgcmlnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDExOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TlRGU19SVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY4NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBOVEZTIERyaXZlciBSZW1vdmFsKioKClJpZ2h0LCBzbyBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgTlRGU19SV2AgYmVpbmcgZHJvcHBlZCBmcm9tIHRoZSBrZXJuZWwgYXJvdW5kIDIwMjQsIHdhc24mIzM5O3QgaXQ/IFRpbWUgZmxpZXMuLi4gb3IgbWF5YmUgSSYjMzk7bSBtaXNyZW1lbWJlcmluZy4gTGV0JiMzOTtzIG5vdCByZWx5IG9uIG1lbW9yeSwgdGhvdWdoLiBMZXQmIzM5O3MgYmUgcHJlY2lzZS4gV2hlcmUgd291bGQgSSBjb25maXJtIHRoYXQ/IFRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBmaWxlc3lzdGVtIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIElmIGl0JiMzOTtzIGdvbmUsIHRoZSBtYWtlZmlsZXMgd2lsbCB0ZWxsIG1lIHNvLiBUaGVyZWZvcmUgSSB3aWxsIGdvIHRvIGBmcy9udGZzL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWFnaWMgaGFwcGVucy4gQSBxdWljayBwZWVrIHRoZXJlIHdpbGwgZWl0aGVyIGNvbmZpcm0gbXkgc3VzcGljaW9uIGFib3V0IHRoZSByZW1vdmFsIG9yLCBpZiBpdCYjMzk7cyBzdGlsbCB0aGVyZSwgaWxsdW1pbmF0ZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBpdCYjMzk7cyBjb21waWxlZC4gVGhhdCBzaG91bGQgdGVsbCBtZSBldmVyeXRoaW5nIEkgbmVlZCB0byBrbm93IGFib3V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIE5URlMgcmVhZC13cml0ZSBzdXBwb3J0IHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL250ZnMvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0b2JqLSQoQ09ORklHX05URlNfRlMpICYjNDM7PSBudGZzLm9cbiAgIDQ6XHRcbiAgIDU6XHRudGZzLXkgOj0gYW9wcy5vIGF0dHJpYi5vIGNvbGxhdGUubyBkaXIubyBmaWxlLm8gaW5kZXgubyBpbm9kZS5vIFxcXG4gICA2Olx0XHQgIG1mdC5vIG1zdC5vIG5hbWVpLm8gcnVubGlzdC5vIHN1cGVyLm8gdW5pc3RyLm8gYXR0cmxpc3QubyBlYS5vIFxcXG4gICA3Olx0XHQgIHVwY2FzZS5vIGJpdG1hcC5vIGxjbmFsbG9jLm8gbG9nZmlsZS5vIHJlcGFyc2UubyBjb21wcmVzcy5vIFxcXG4gICA4Olx0XHQgIGlvbWFwLm8gZGVidWcubyBzeXNjdGwubyBvYmplY3RfaWQubyBiZGV2LWlvLm9cbiAgIDk6XHRcbiAgMTA6XHRjY2ZsYWdzLSQoQ09ORklHX05URlNfREVCVUcpICYjNDM7PSAtRERFQlVHXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDExOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNjQKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5URlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpBbHJpZ2h0LCBteSBhbmFseXNpcyBwb2ludHMgdG8gYSBzdHJhaWdodGZvcndhcmQgY29uZmlndXJhdGlvbiBoZXJlOiBgTlRGU19GU2AgaXMgYWxsIHdlIHRydWx5IG5lZWQuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgc29tZSBzcGVjaWZpYyBmaWxlcywgbGlrZSBgZnMvbnRmcy9sY25hbGxvYy5jYCBhbmQgYGZzL250ZnMvcnVubGlzdC5jYCwgYXMgcGFydCBvZiB0aGUgZnV6emluZyBzY29wZSwgd2hpY2ggbGVkIG1lIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgYG50ZnMteWAgbWF5IGJlIG5lY2Vzc2FyeS4gSG93ZXZlciwgYWZ0ZXIgZnVydGhlciByZWZsZWN0aW9uLCBgTlRGU19GU2AgYWxvbmUgc2hvdWxkIGNvdmVyIGV2ZXJ5dGhpbmcgd2Ugd2FudC4KClRvIHJlY2FwIGFuZCBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGlzIHdoYXQgSSYjMzk7dmUgZGV0ZXJtaW5lZDogVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmc7IEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoZSBtb3N0IGNyaXRpY2FsIHN5bWJvbHMgdG8gdGFyZ2V0IGZvciBmdXp6aW5nIGFyZSBgbnRmc19jbHVzdGVyX2FsbG9jYCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYC4gSSB3aWxsIGJlIGVuYWJsaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBgTlRGU19GU2AuIE15IHJlYXNvbmluZyBpcyB0aGlzOiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBjcnVjaWFsIGJvdW5kcyBjaGVja3Mgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRob3NlIHR3byBmdW5jdGlvbnMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZnVuZGFtZW50YWxseSBpbnZvbHZlZCBpbiBjb3JlIE5URlMgb3BlcmF0aW9ucyDigJMgYXR0cmlidXRlIGV4cGFuc2lvbiBhbmQgcnVubGlzdCBkZWNvbXByZXNzaW9uLiBUaGlzIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGRpcmVjdGx5IGltcGFjdHMgaG93IHRoZSBmaWxlc3lzdGVtIGhhbmRsZXMgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBvcGVyYXRpb25zLCBtYWtpbmcgaXQgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2NsdXN0ZXJfYWxsb2MmIzM0OywKICAgICYjMzQ7bnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tzIHRvIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGFuZCBgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NgIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgY29yZSBOVEZTIG9wZXJhdGlvbnMgbGlrZSBhdHRyaWJ1dGUgZXhwYW5zaW9uIGFuZCBydW5saXN0IGRlY29tcHJlc3Npb24sIHNvIHRoZXkgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2NsdXN0ZXJfYWxsb2MmIzM0OywKICAgICYjMzQ7bnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tzIHRvIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGFuZCBgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NgIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgY29yZSBOVEZTIG9wZXJhdGlvbnMgbGlrZSBhdHRyaWJ1dGUgZXhwYW5zaW9uIGFuZCBydW5saXN0IGRlY29tcHJlc3Npb24sIHNvIHRoZXkgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTowNS40MjkxNDMyMzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTExMzk5MzU1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19jbHVzdGVyX2FsbG9jXCIsXG4gICAgXCJudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNrcyB0byBgbnRmc19jbHVzdGVyX2FsbG9jYCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYCBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtIGRyaXZlci4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIGNvcmUgTlRGUyBvcGVyYXRpb25zIGxpa2UgYXR0cmlidXRlIGV4cGFuc2lvbiBhbmQgcnVubGlzdCBkZWNvbXByZXNzaW9uLCBzbyB0aGV5IGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTowNS40MjkxNDk1MTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNzI3Njk0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBhNTc3NmZkYzcxZWZiYjg2NTY2YmJkYmYxNDNhYzU5NTJjNGQzYTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTE6MDk6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9sY25hbGxvYy5jIGIvZnMvbnRmcy9sY25hbGxvYy5jXFxuaW5kZXggODM1YTA0MTAyM2EyYWMuLmFhMmUwMTdhNDM4NDRiIDEwMDY0NFxcbi0tLSBhL2ZzL250ZnMvbGNuYWxsb2MuY1xcbisrKyBiL2ZzL250ZnMvbGNuYWxsb2MuY1xcbkBAIC0yOTgsNyArMjk4LDEyIEBAIHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKm50ZnNfY2x1c3Rlcl9hbGxvYyhzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCwgY29uc3QgczY0IHN0XFxuIFxcdGNsdXN0ZXJzID0gY291bnQ7XFxuIFxcdHJscG9zID0gcmxzaXplID0gMDtcXG4gXFx0bWFwcGluZyA9IGxjbmJtcF92aS1cXHUwMDNlaV9tYXBwaW5nO1xcbi1cXHRpX3NpemUgPSBpX3NpemVfcmVhZChsY25ibXBfdmkpO1xcbitcXHQvKlxcbitcXHQgKiBsY25fZW1wdHlfYml0c19wZXJfcGFnZSBpcyBzaXplZCBmcm9tIG5yX2NsdXN0ZXJzLCBidXQgJEJpdG1hcCBjYW5cXG4rXFx0ICogY292ZXIgbW9yZSBjbHVzdGVycyB0aGFuIHRoYXQ7IGJvdW5kIHRoZSBzY2FuIGJ5IHRoZSBhcnJheS5cXG4rXFx0ICovXFxuK1xcdGlfc2l6ZSA9IG1pbl90KHM2NCwgaV9zaXplX3JlYWQobGNuYm1wX3ZpKSxcXG4rXFx0XFx0ICAgICAgICgoczY0KXZvbC1cXHUwMDNlbnJfY2x1c3RlcnMgKyA3KSBcXHUwMDNlXFx1MDAzZSAzKTtcXG4gXFx0d2hpbGUgKDEpIHtcXG4gXFx0XFx0bnRmc19kZWJ1ZyhcXFwiU3RhcnQgb2Ygb3V0ZXIgd2hpbGUgbG9vcDogZG9uZV96b25lcyAweCV4LCBzZWFyY2hfem9uZSAlaSwgcGFzcyAlaSwgem9uZV9zdGFydCAweCVsbHgsIHpvbmVfZW5kIDB4JWxseCwgYm1wX2luaXRpYWxfcG9zIDB4JWxseCwgYm1wX3BvcyAweCVsbHgsIHJscG9zICVpLCBybHNpemUgJWkuXFxcIixcXG4gXFx0XFx0XFx0XFx0ZG9uZV96b25lcywgc2VhcmNoX3pvbmUsIHBhc3MsXFxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvcnVubGlzdC5jIGIvZnMvbnRmcy9ydW5saXN0LmNcXG5pbmRleCBjYmI2NTc2Y2Y3MjU4Mi4uNzRmOTRiNGI2YzViYmEgMTAwNjQ0XFxuLS0tIGEvZnMvbnRmcy9ydW5saXN0LmNcXG4rKysgYi9mcy9udGZzL3J1bmxpc3QuY1xcbkBAIC04ODAsNiArODgwLDEzIEBAIHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKm50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKGNvbnN0IHN0cnVjdCBudGZzX3ZvbHVtZSAqXFxuIFxcdFxcdFxcdFxcdFxcdG50ZnNfZXJyb3Iodm9sLVxcdTAwM2VzYiwgXFxcImxjbiA9PSAtMVxcXCIpO1xcbiBcXHRcXHRcXHR9XFxuICNlbmRpZlxcbitcXHRcXHRcXHQvKiBDaGVjayBsY24gaXMgd2l0aGluIHRoZSB2b2x1bWUuICovXFxuK1xcdFxcdFxcdGlmICh1bmxpa2VseShsY24gXFx1MDAzZT0gKHM2NCl2b2wtXFx1MDAzZW5yX2NsdXN0ZXJzKSkge1xcbitcXHRcXHRcXHRcXHRudGZzX2Vycm9yKHZvbC1cXHUwMDNlc2IsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcXCJMQ04gXFx1MDAzZT0gbnJfY2x1c3RlcnMgaW4gbWFwcGluZyBwYWlycyBhcnJheS5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0Z290byBlcnJfb3V0O1xcbitcXHRcXHRcXHR9XFxuK1xcbiBcXHRcXHRcXHQvKiBDaGVjayBsY24gaXMgbm90IGJlbG93IC0xLiAqL1xcbiBcXHRcXHRcXHRpZiAodW5saWtlbHkobGNuIFxcdTAwM2MgLTEpKSB7XFxuIFxcdFxcdFxcdFxcdG50ZnNfZXJyb3Iodm9sLVxcdTAwM2VzYiwgXFxcIkludmFsaWQgczY0IFxcdTAwM2MgLTEgaW4gbWFwcGluZyBwYWlycyBhcnJheS5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6MDYuMDM3MjEwMjc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzg1MDU5MTgwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfY2x1c3Rlcl9hbGxvY1wiLFxuICAgIFwibnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja3MgdG8gYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBjb3JlIE5URlMgb3BlcmF0aW9ucyBsaWtlIGF0dHJpYnV0ZSBleHBhbnNpb24gYW5kIHJ1bmxpc3QgZGVjb21wcmVzc2lvbiwgc28gdGhleSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGE1Nzc2ZmRjNzFlZmJiODY1NjZiYmRiZjE0M2FjNTk1MmM0ZDNhN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDExOjA5OjA0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9sY25hbGxvYy5jIGIvZnMvbnRmcy9sY25hbGxvYy5jXG5pbmRleCA4MzVhMDQxMDIzYTJhYy4uYWEyZTAxN2E0Mzg0NGIgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2xjbmFsbG9jLmNcbisrKyBiL2ZzL250ZnMvbGNuYWxsb2MuY1xuQEAgLTI5OCw3ICsyOTgsMTIgQEAgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19jbHVzdGVyX2FsbG9jKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLCBjb25zdCBzNjQgc3RcbiBcdGNsdXN0ZXJzID0gY291bnQ7XG4gXHRybHBvcyA9IHJsc2l6ZSA9IDA7XG4gXHRtYXBwaW5nID0gbGNuYm1wX3ZpLVx1MDAzZWlfbWFwcGluZztcbi1cdGlfc2l6ZSA9IGlfc2l6ZV9yZWFkKGxjbmJtcF92aSk7XG4rXHQvKlxuK1x0ICogbGNuX2VtcHR5X2JpdHNfcGVyX3BhZ2UgaXMgc2l6ZWQgZnJvbSBucl9jbHVzdGVycywgYnV0ICRCaXRtYXAgY2FuXG4rXHQgKiBjb3ZlciBtb3JlIGNsdXN0ZXJzIHRoYW4gdGhhdDsgYm91bmQgdGhlIHNjYW4gYnkgdGhlIGFycmF5LlxuK1x0ICovXG4rXHRpX3NpemUgPSBtaW5fdChzNjQsIGlfc2l6ZV9yZWFkKGxjbmJtcF92aSksXG4rXHRcdCAgICAgICAoKHM2NCl2b2wtXHUwMDNlbnJfY2x1c3RlcnMgKyA3KSBcdTAwM2VcdTAwM2UgMyk7XG4gXHR3aGlsZSAoMSkge1xuIFx0XHRudGZzX2RlYnVnKFwiU3RhcnQgb2Ygb3V0ZXIgd2hpbGUgbG9vcDogZG9uZV96b25lcyAweCV4LCBzZWFyY2hfem9uZSAlaSwgcGFzcyAlaSwgem9uZV9zdGFydCAweCVsbHgsIHpvbmVfZW5kIDB4JWxseCwgYm1wX2luaXRpYWxfcG9zIDB4JWxseCwgYm1wX3BvcyAweCVsbHgsIHJscG9zICVpLCBybHNpemUgJWkuXCIsXG4gXHRcdFx0XHRkb25lX3pvbmVzLCBzZWFyY2hfem9uZSwgcGFzcyxcbmRpZmYgLS1naXQgYS9mcy9udGZzL3J1bmxpc3QuYyBiL2ZzL250ZnMvcnVubGlzdC5jXG5pbmRleCBjYmI2NTc2Y2Y3MjU4Mi4uNzRmOTRiNGI2YzViYmEgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL3J1bmxpc3QuY1xuKysrIGIvZnMvbnRmcy9ydW5saXN0LmNcbkBAIC04ODAsNiArODgwLDEzIEBAIHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKm50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKGNvbnN0IHN0cnVjdCBudGZzX3ZvbHVtZSAqXG4gXHRcdFx0XHRcdG50ZnNfZXJyb3Iodm9sLVx1MDAzZXNiLCBcImxjbiA9PSAtMVwiKTtcbiBcdFx0XHR9XG4gI2VuZGlmXG4rXHRcdFx0LyogQ2hlY2sgbGNuIGlzIHdpdGhpbiB0aGUgdm9sdW1lLiAqL1xuK1x0XHRcdGlmICh1bmxpa2VseShsY24gXHUwMDNlPSAoczY0KXZvbC1cdTAwM2Vucl9jbHVzdGVycykpIHtcbitcdFx0XHRcdG50ZnNfZXJyb3Iodm9sLVx1MDAzZXNiLFxuK1x0XHRcdFx0XHRcdFwiTENOIFx1MDAzZT0gbnJfY2x1c3RlcnMgaW4gbWFwcGluZyBwYWlycyBhcnJheS5cIik7XG4rXHRcdFx0XHRnb3RvIGVycl9vdXQ7XG4rXHRcdFx0fVxuK1xuIFx0XHRcdC8qIENoZWNrIGxjbiBpcyBub3QgYmVsb3cgLTEuICovXG4gXHRcdFx0aWYgKHVubGlrZWx5KGxjbiBcdTAwM2MgLTEpKSB7XG4gXHRcdFx0XHRudGZzX2Vycm9yKHZvbC1cdTAwM2VzYiwgXCJJbnZhbGlkIHM2NCBcdTAwM2MgLTEgaW4gbWFwcGluZyBwYWlycyBhcnJheS5cIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTowNi4wMzcyMTE4MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk0MDIxMDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTlRGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGZzL250ZnMvbGNuYWxsb2MuY2AgYW5kIGBmcy9udGZzL3J1bmxpc3QuY2AuIEludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGFkZCBib3VuZHMgY2hlY2tzLiBHb29kLCBnb29kLCB0aGF0J3Mgd2hhdCBJIHdhbnQgdG8gc2VlLiBUaGlzIGltcGxpZXMgdGhleSdyZSBib2xzdGVyaW5nIHRoZSBOVEZTIGZpbGVzeXN0ZW0ncyByb2J1c3RuZXNzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGNsdXN0ZXIgYWxsb2NhdGlvbiBhbmQgcnVubGlzdCBkZWNvbXByZXNzaW9uLiBgbnRmc19jbHVzdGVyX2FsbG9jYCBpbiBgbGNuYWxsb2MuY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgaW4gYHJ1bmxpc3QuY2AuLi4gcmlnaHQsIHRob3NlIGFyZSBrZXkgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaWNzIG9mIGhvdyBkYXRhIGlzIHN0b3JlZCBhbmQgcmV0cmlldmVkIG9uIGFuIE5URlMgdm9sdW1lLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIG9yIHBlcmhhcHMgdGhleSdyZSBwcm9hY3RpdmVseSBoYXJkZW5pbmcgYWdhaW5zdCBhIHRoZW9yZXRpY2FsIGlzc3VlLiBHb3R0YSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIE5URlMgbm93IHRvIHNlZSBob3cgdGhpcyBpbXBhY3RzIG91ciBzcGVjaWZpYyB1c2UgY2FzZSBhbmQgd2hhdCBkZWZhdWx0cyB3ZSdyZSBydW5uaW5nIHdpdGguIEkgd2FudCB0byBzZWUgd2hhdCB0aGlzIHRyYW5zbGF0ZXMgdG8sIGluIHByYWN0aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTE0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6MDkuODMxMjM1MTU2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjkzMTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xcbmZzL250ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcXG4tLVxcbmZzL250ZnMvS2NvbmZpZy0zNC1cXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuZnMvbnRmcy9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjA5Ljg5MDUzNDcyNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDIyNzQzNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOVEZTIEZpbGVzeXN0ZW0gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gYE5URlNfRlNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24uIEkga25vdyB0aGVyZSdzIGFsc28gYE5URlMzX0ZTYCBpbiB0aGUga2VybmVsIG5vdywgYnV0IHRoaXMgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZnMvbnRmcy9gLCB3aGljaCBJIHJlY2FsbCBpcyB0aGUgb2xkZXIgTlRGUyBkcml2ZXIuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIG9sZCBkcml2ZXIgaXMgc3RpbGwgcHJlc2VudCBpbiB0aGUga2VybmVsLiAqWWVzKiwgaXQgaXMsIGFzIGV4cGVjdGVkLiBOb3cgdGhhdCBJJ3ZlIHJlLWVzdGFibGlzaGVkIHRoZSBjb250ZXh0IG9mIHRoZSBvbGRlciBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIGZvY3VzIG9uIHRoaXMgcGF0Y2guIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgY2xvc2VseSBhdCB0aGUgYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgZnVuY3Rpb25zLCB3aGljaCBhcmUgdGhlIGtleSBhcmVhcyBmb3IgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwOCwiT3V0cHV0VG9rZW5zIjo2NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToxMy41MzI4MTExMjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3Nzc1OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19jbHVzdGVyX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvYXR0cmliLmM9MTkxMT1pbnQgbnRmc19hdHRyX21ha2Vfbm9uX3Jlc2lkZW50KHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgdTMyIGRhdGFfc2l6ZSlcXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtMTk5OS1cXHRcXHQvKiBTdGFydCBieSBhbGxvY2F0aW5nIGNsdXN0ZXJzIHRvIGhvbGQgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4gKi9cXG5mcy9udGZzL2F0dHJpYi5jOjIwMDA6XFx0XFx0cmwgPSBudGZzX2NsdXN0ZXJfYWxsb2Modm9sLCAwLFxcbmZzL250ZnMvYXR0cmliLmMtMjAwMS1cXHRcXHRcXHRcXHRudGZzX2J5dGVzX3RvX2NsdXN0ZXIodm9sLCBuZXdfc2l6ZSksXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jPTQzMzI9c3RhdGljIGludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2V4cGFuZChzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGNvbnN0IHM2NCBuZXdzaXplLFxcbi0tXFxuZnMvbnRmcy9hdHRyaWIuYy00NDc1LVxcbmZzL250ZnMvYXR0cmliLmM6NDQ3NjpcXHRcXHRcXHRybCA9IG50ZnNfY2x1c3Rlcl9hbGxvYyh2b2wsXFxuZnMvbnRmcy9hdHRyaWIuYy00NDc3LVxcdFxcdFxcdFxcdFxcdG50ZnNfYnl0ZXNfdG9fY2x1c3Rlcih2b2wsIG5pLVxcdTAwM2VhbGxvY2F0ZWRfc2l6ZSksXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jPTQ5NzM9aW50IG50ZnNfYXR0cl9tYXBfY2x1c3RlcihzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCB2Y25fc3RhcnQsIHM2NCAqbGNuX3N0YXJ0LFxcbi0tXFxuZnMvbnRmcy9hdHRyaWIuYy01MDY1LVxcbmZzL250ZnMvYXR0cmliLmM6NTA2NjpcXHRybGMgPSBudGZzX2NsdXN0ZXJfYWxsb2Modm9sLCB2Y24sIGNsdV9jb3VudCwgbGNuX3NlZWtfZnJvbSwgREFUQV9aT05FLFxcbmZzL250ZnMvYXR0cmliLmMtNTA2Ny1cXHRcXHRcXHRmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XFxuLS1cXG5mcy9udGZzL2NvbXByZXNzLmM9MTI3ND1zdGF0aWMgaW50IG50ZnNfd3JpdGVfY2Ioc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3QgcG9zLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLFxcbi0tXFxuZnMvbnRmcy9jb21wcmVzcy5jLTEzODQtXFxuZnMvbnRmcy9jb21wcmVzcy5jOjEzODU6XFx0cmxjID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgbmV3X3ZjbiwgbmV3X2xlbmd0aCwgLTEsIERBVEFfWk9ORSxcXG5mcy9udGZzL2NvbXByZXNzLmMtMTM4Ni1cXHRcXHRcXHRmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XFxuLS1cXG5mcy9udGZzL2xjbmFsbG9jLmM9NjY9c3RhdGljIHM2NCBtYXhfZW1wdHlfYml0X3JhbmdlKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IHNpemUpXFxuLS1cXG5mcy9udGZzL2xjbmFsbG9jLmMtMTE5LS8qXFxuZnMvbnRmcy9sY25hbGxvYy5jOjEyMDogKiBudGZzX2NsdXN0ZXJfYWxsb2MgLSBhbGxvY2F0ZSBjbHVzdGVycyBvbiBhbiBudGZzIHZvbHVtZVxcbmZzL250ZnMvbGNuYWxsb2MuYy0xMjEtICogQHZvbDpcXHRcXHRtb3VudGVkIG50ZnMgdm9sdW1lIG9uIHdoaWNoIHRvIGFsbG9jYXRlIGNsdXN0ZXJzXFxuLS1cXG5mcy9udGZzL2xjbmFsbG9jLmMtMTgyLSAqL1xcbmZzL250ZnMvbGNuYWxsb2MuYzoxODM6c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19jbHVzdGVyX2FsbG9jKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLCBjb25zdCBzNjQgc3RhcnRfdmNuLFxcbmZzL250ZnMvbGNuYWxsb2MuYy0xODQtXFx0XFx0Y29uc3QgczY0IGNvdW50LCBjb25zdCBzNjQgc3RhcnRfbGNuLFxcbi0tXFxuZnMvbnRmcy9sY25hbGxvYy5oPTIzPWVudW0ge1xcbi0tXFxuZnMvbnRmcy9sY25hbGxvYy5oLTI5LVxcbmZzL250ZnMvbGNuYWxsb2MuaDozMDpzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpudGZzX2NsdXN0ZXJfYWxsb2Moc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsXFxuZnMvbnRmcy9sY25hbGxvYy5oLTMxLVxcdFxcdGNvbnN0IHM2NCBzdGFydF92Y24sIGNvbnN0IHM2NCBjb3VudCwgY29uc3QgczY0IHN0YXJ0X2xjbixcXG4tLVxcbmZzL250ZnMvbWZ0LmM9MTA1Mz1zdGF0aWMgaW50IG50ZnNfbWZ0X2JpdG1hcF9leHRlbmRfYWxsb2NhdGlvbl9ub2xvY2soc3RydWN0IG50ZnNfdm9sdW1lICp2b2wpXFxuLS1cXG5mcy9udGZzL21mdC5jLTExMzctXFx0XFx0LyogQWxsb2NhdGUgYSBjbHVzdGVyIGZyb20gdGhlIERBVEFfWk9ORS4gKi9cXG5mcy9udGZzL21mdC5jOjExMzg6XFx0XFx0cmwyID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgcmxbMV0udmNuLCAxLCBsY24sIERBVEFfWk9ORSxcXG5mcy9udGZzL21mdC5jLTExMzktXFx0XFx0XFx0XFx0dHJ1ZSwgZmFsc2UsIGZhbHNlKTtcXG4tLVxcbmZzL250ZnMvbWZ0LmM9MTQ4Nj1zdGF0aWMgaW50IG50ZnNfbWZ0X2RhdGFfZXh0ZW5kX2FsbG9jYXRpb25fbm9sb2NrKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sKVxcbi0tXFxuZnMvbnRmcy9tZnQuYy0xNTYyLVxcdGRvIHtcXG5mcy9udGZzL21mdC5jOjE1NjM6XFx0XFx0cmwyID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgb2xkX2xhc3RfdmNuLCBuciwgbGNuLCBNRlRfWk9ORSxcXG5mcy9udGZzL21mdC5jLTE1NjQtXFx0XFx0XFx0XFx0dHJ1ZSwgZmFsc2UsIGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6MTMuNTkyNTkyOTQ5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTQ1MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvYXR0cmliLmM9ODY9aW50IG50ZnNfbWFwX3J1bmxpc3Rfbm9sb2NrKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHZjbiwgc3RydWN0IG50ZnNfYXR0cl9zZWFyY2hfY3R4ICpjdHgpXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jLTE4Ny1cXHQgKiB3ZSB0aGVuIHRyeSB0byBtYXAgdGhlIGFscmVhZHkgbWFwcGVkIHJ1bmxpc3QgZnJhZ21lbnQgYW5kXFxuZnMvbnRmcy9hdHRyaWIuYzoxODg6XFx0ICogbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoKSBmYWlscy5cXG5mcy9udGZzL2F0dHJpYi5jLTE4OS1cXHQgKi9cXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtMTk0LVxcdH1cXG5mcy9udGZzL2F0dHJpYi5jOjE5NTpcXHRybCA9IG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKG5pLVxcdTAwM2V2b2wsIGEsIFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdCwgXFx1MDAyNm5ld19ybF9jb3VudCk7XFxuZnMvbnRmcy9hdHRyaWIuYy0xOTYtXFx0aWYgKElTX0VSUihybCkpXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jPTI2MjU9aW50IG50ZnNfYXR0cl9yZWNvcmRfcm0oc3RydWN0IG50ZnNfYXR0cl9zZWFyY2hfY3R4ICpjdHgpXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jLTI3MDMtXFxuZnMvbnRmcy9hdHRyaWIuYzoyNzA0OlxcdFxcdFxcdGFsX3JsID0gbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoYmFzZV9uaS1cXHUwMDNldm9sLFxcbmZzL250ZnMvYXR0cmliLmMtMjcwNS1cXHRcXHRcXHRcXHRcXHRjdHgtXFx1MDAzZWF0dHIsIE5VTEwsIFxcdTAwMjZuZXdfcmxfY291bnQpO1xcbi0tXFxuZnMvbnRmcy9hdHRyaWIuYz0zMjQ1PWludCBudGZzX2F0dHJfbWFwX3dob2xlX3J1bmxpc3Qoc3RydWN0IG50ZnNfaW5vZGUgKm5pKVxcbi0tXFxuZnMvbnRmcy9hdHRyaWIuYy0zMjkyLVxcdFxcdFxcdC8qIERlY29kZSB0aGUgcnVubGlzdC4gKi9cXG5mcy9udGZzL2F0dHJpYi5jOjMyOTM6XFx0XFx0XFx0cmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhuaS1cXHUwMDNldm9sLCBhLCBcXHUwMDI2bmktXFx1MDAzZXJ1bmxpc3QsXFxuZnMvbnRmcy9hdHRyaWIuYy0zMjk0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZuZXdfcmxfY291bnQpO1xcbi0tXFxuZnMvbnRmcy9pbm9kZS5jPTMyMz1zdGF0aWMgaW50IG50ZnNfbm9uX3Jlc2lkZW50X2RlYWxsb2NfY2x1c3RlcnMoc3RydWN0IG50ZnNfaW5vZGUgKm5pKVxcbi0tXFxuZnMvbnRmcy9pbm9kZS5jLTM1MS1cXG5mcy9udGZzL2lub2RlLmM6MzUyOlxcdFxcdFxcdHJsID0gbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MobmktXFx1MDAzZXZvbCwgYWN0eC1cXHUwMDNlYXR0ciwgTlVMTCxcXG5mcy9udGZzL2lub2RlLmMtMzUzLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZuZXdfcmxfY291bnQpO1xcbi0tXFxuZnMvbnRmcy9pbm9kZS5jPTE4MDY9c3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBtZnRfbmlfcnVubGlzdF9sb2NrX2tleSwgbWZ0X25pX21yZWNfbG9ja19rZXk7XFxuLS1cXG5mcy9udGZzL2lub2RlLmMtMTgyNi0gKiBlbHNlIGFuZCBpdGVyYXRpbmcgdXNpbmcgbnRmc19hdHRyX2xvb2t1cCgkREFUQSkgb3ZlciBhbGwgZXh0ZW50cy4gIEFzIGVhY2hcXG5mcy9udGZzL2lub2RlLmM6MTgyNzogKiBleHRlbnQgaXMgZm91bmQsIHdlIG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKCkgaW5jbHVkaW5nIHRoZSBpbXBsaWVkXFxuZnMvbnRmcy9pbm9kZS5jLTE4MjgtICogbnRmc19ydW5saXN0c19tZXJnZSgpLiAgRWFjaCBzdGVwIG9mIHRoZSBpdGVyYXRpb24gbmVjZXNzYXJpbHkgcHJvdmlkZXNcXG4tLVxcbmZzL250ZnMvaW5vZGUuYz0xODM0PWludCBudGZzX3JlYWRfaW5vZGVfbW91bnQoc3RydWN0IGlub2RlICp2aSlcXG4tLVxcbmZzL250ZnMvaW5vZGUuYy0xOTg0LVxcbmZzL250ZnMvaW5vZGUuYzoxOTg1OlxcdFxcdFxcdHJsID0gbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3Modm9sLCBhLCBOVUxMLCBcXHUwMDI2bmV3X3JsX2NvdW50KTtcXG5mcy9udGZzL2lub2RlLmMtMTk4Ni1cXHRcXHRcXHRpZiAoSVNfRVJSKHJsKSkge1xcbi0tXFxuZnMvbnRmcy9pbm9kZS5jLTIwODEtXFx0XFx0ICovXFxuZnMvbnRmcy9pbm9kZS5jOjIwODI6XFx0XFx0bnJsID0gbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3Modm9sLCBhLCBcXHUwMDI2bmktXFx1MDAzZXJ1bmxpc3QsXFxuZnMvbnRmcy9pbm9kZS5jLTIwODMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZuZXdfcmxfY291bnQpO1xcbi0tXFxuZnMvbnRmcy9pbm9kZS5jLTIwODUtXFx0XFx0XFx0bnRmc19lcnJvcihzYixcXG5mcy9udGZzL2lub2RlLmM6MjA4NjpcXHRcXHRcXHRcXHRcXFwibnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoKSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZC5cXFwiLFxcbmZzL250ZnMvaW5vZGUuYy0yMDg3LVxcdFxcdFxcdFxcdFBUUl9FUlIobnJsKSk7XFxuLS1cXG5mcy9udGZzL3J1bmxpc3QuYz01MTg9c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19ydW5saXN0c19tZXJnZShzdHJ1Y3QgcnVubGlzdCAqZF9ydW5saXN0LFxcbi0tXFxuZnMvbnRmcy9ydW5saXN0LmMtNzEzLS8qXFxuZnMvbnRmcy9ydW5saXN0LmM6NzE0OiAqIG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzIC0gY29udmVydCBtYXBwaW5nIHBhaXJzIGFycmF5IHRvIHJ1bmxpc3RcXG5mcy9udGZzL3J1bmxpc3QuYy03MTUtICogQHZvbDogbnRmcyB2b2x1bWVcXG4tLVxcbmZzL250ZnMvcnVubGlzdC5jLTczMC0gKi9cXG5mcy9udGZzL3J1bmxpc3QuYzo3MzE6c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoY29uc3Qgc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsXFxuZnMvbnRmcy9ydW5saXN0LmMtNzMyLVxcdFxcdGNvbnN0IHN0cnVjdCBhdHRyX3JlY29yZCAqYXR0ciwgc3RydWN0IHJ1bmxpc3QgKm9sZF9ydW5saXN0LFxcbi0tXFxuZnMvbnRmcy9ydW5saXN0Lmg9Njg9c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19ydW5saXN0c19tZXJnZShzdHJ1Y3QgcnVubGlzdCAqZF9ydW5saXN0LFxcbi0tXFxuZnMvbnRmcy9ydW5saXN0LmgtNzAtXFx0XFx0c2l6ZV90ICpuZXdfcmxfY291bnQpO1xcbmZzL250ZnMvcnVubGlzdC5oOjcxOnN0cnVjdCBydW5saXN0X2VsZW1lbnQgKm50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKGNvbnN0IHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLFxcbmZzL250ZnMvcnVubGlzdC5oLTcyLVxcdFxcdGNvbnN0IHN0cnVjdCBhdHRyX3JlY29yZCAqYXR0ciwgc3RydWN0IHJ1bmxpc3QgKm9sZF9ydW5saXN0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToxMy42NDk1NDIzMzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDE3NjAxNzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzIGluIHRoZSBOVEZTIEZpbGVzeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgaXQncyBmb2N1c2luZyBvbiBjb3JlIE5URlMgZnVuY3Rpb25zOiBgbnRmc19jbHVzdGVyX2FsbG9jYCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIGEgd2lkZSByYW5nZSBvZiBjcml0aWNhbCBvcGVyYXRpb25zIC0gdGhpbmdzIGxpa2UgYXR0cmlidXRlIG1hbmFnZW1lbnQsIGFsbG9jYXRpb24sIGFuZCBydW5saXN0IGhhbmRsaW5nLiBUaGF0IGFsb25lIG1ha2VzIHRoaXMgcGF0Y2ggYW4gYXR0cmFjdGl2ZSB0YXJnZXQgZm9yIGZ1enppbmc7IGFueSBib3VuZHMgY2hlY2sgaXNzdWVzIGhlcmUgY291bGQgaGF2ZSBwcmV0dHkgc2lnbmlmaWNhbnQgY29uc2VxdWVuY2VzLlxuXG5TcGVjaWZpY2FsbHksIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGlzIGNhbGxlZCBieSBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBhbGxvY2F0aW5nIGNsdXN0ZXJzLCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYCBpcyBpbnZvbHZlZCBpbiBydW5saXN0IG1hcHBpbmcgYW5kIGRlY29tcHJlc3Npb24uIENvbnNpZGVyaW5nIHRoZSByZWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMsIGZpbmRpbmcgdnVsbmVyYWJpbGl0aWVzIHRocm91Z2ggZnV6emluZyBjb3VsZCB1bmNvdmVyIHNvbWUgcmVhbGx5IG5hc3R5IGVkZ2UgY2FzZXMuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHdoYXQgd2UncmUgZ29pbmcgdG8gZm9jdXMgb24uIEJhc2VkIG9uIHRoZSBwYXRjaCwgaXQgc2VlbXMgbGlrZSBgbnRmc19jbHVzdGVyX2FsbG9jYCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYCBhcmUgdGhlIGtleS4gTGV0J3MgbWFrZSBzdXJlIHRoZXkgYXJlIG5vdCBzdGF0aWMgb3IgaW5saW5lIC0gYW5kLCBsb29raW5nIGluIGBmcy9udGZzL2xjbmFsbG9jLmNgIGFuZCBgZnMvbnRmcy9ydW5saXN0LmNgLCB0aGV5IGFyZSBub3QuIFRoYXQncyBwZXJmZWN0LiBUaGlzIG1ha2VzIHRoZW0gZ29vZCBmb2N1cyBzeW1ib2xzIGZvciBteSBmdXp6aW5nIGNhbXBhaWduLlxuXG5OZXh0IHN0ZXA6IGxldCdzIHNjb3BlIG91dCB0aGVpciBkZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0uIFdlIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCB0aGVzZSBmdW5jdGlvbnMgb3BlcmF0ZSBpbiB0byBjcmVhdGUgZWZmZWN0aXZlIGZ1enppbmcgaGFybmVzc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODI4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToyMC4wNjcxNDU5NzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc5ODUyODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xcbmZzL250ZnMvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbmZzL250ZnMvS2NvbmZpZzoxNTpcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMTYtXFx0aGVscFxcbi0tXFxuZnMvbnRmcy9LY29uZmlnPTM1PWNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbmZzL250ZnMvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbmZzL250ZnMvS2NvbmZpZzozNzpcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMzgtXFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToyMC4zNDcwMDM4NzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk4NTU1MTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBNeSBtaW5kJ3MgYnV6emluZy4uLiBJJ20gZGl2aW5nIGRlZXAsIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBmdW5kYW1lbnRhbC4gXG5cbioqUmV2aWV3aW5nIHRoZSBDb3JlOioqXG5cbkhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhpcyByYWJiaXQgaG9sZSwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkndmUgZ290IHRoZSBlc3NlbnRpYWxzIGNvdmVyZWQuIEkgc2hvdWxkIHJlLWV2YWx1YXRlIHRoZSBjb3JlIG9mIHRoZSBmaWxlIHN5c3RlbSBpdHNlbGYuLi4gU3BlY2lmaWNhbGx5LCBsZXQncyBnbyBiYWNrIGFuZCBjaGVjayBgTlRGU19GU2AuIEl0J3MgZWFzeSB0byBnZXQgbG9zdCBpbiB0aGUgZGV0YWlscyBhbmQgZm9yZ2V0IHRvIGdyb3VuZCB5b3Vyc2VsZiB3aXRoIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcmltYXJ5IGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MDYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToyMy4zMzI1NTc3NDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTc4OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xcbmZzL250ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcXG4tLVxcbmZzL250ZnMvS2NvbmZpZy0zNC1cXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuZnMvbnRmcy9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjIzLjM5MjU0MzE3NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTg1OTAxOTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEtjb25maWcgRmlsZSAtIEluaXRpYWwgU2NhbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBmcy9udGZzL0tjb25maWdgIGZpbGUuIEknbSBpbW1lZGlhdGVseSBpbnRlcmVzdGVkIGluIHRoZSBzZXR1cCBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdXN1YWxseSB0byBsb29rIGZvciB0aGUgYmFzaWMgc3RydWN0dXJlLiBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHZhbHVlcy4gSSdsbCB3YW50IHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGtleSBwYXJhbWV0ZXJzIHRoYXQgZGVmaW5lIHdoZXRoZXIgTlRGUyBzdXBwb3J0IGlzIGluY2x1ZGVkLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBBbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgYXJlIGFsd2F5cyBnb29kIHRvIGZsYWcgZWFybHkgYXMgd2VsbC4gTXkgYnJhaW4gaXMgYWxyZWFkeSBzdGFydGluZyB0byBmb3JtdWxhdGUgYW4gaW50ZXJuYWwgbWVudGFsIG1vZGVsIG9mIHRoZSBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMjcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToyNi41Nzg0NDc0NjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTlRGU19GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk5URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdHNlbGVjdCBOTFNcXG4gICA1OlxcdFxcdHNlbGVjdCBGU19JT01BUFxcbiAgIDY6XFx0XFx0aGVscFxcbiAgIDc6XFx0XFx0ICBOVEZTIGlzIHRoZSBmaWxlIHN5c3RlbSBvZiBNaWNyb3NvZnQgV2luZG93cyBOVCwgMjAwMCwgWFAgYW5kIDIwMDMuXFxuICAgODpcXHRcXHQgIFRoaXMgYWxsb3dzIHlvdSB0byBtb3VudCBkZXZpY2VzIGZvcm1hdHRlZCB3aXRoIHRoZSBudGZzIGZpbGUgc3lzdGVtLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxcbiAgMTE6XFx0XFx0ICBudGZzLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRjb25maWcgTlRGU19ERUJVR1xcbiAgMTQ6XFx0XFx0Ym9vbCBcXFwiTlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFxcXCJcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gTlRGU19GU1xcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTlRGUyBmaWxlIHN5c3RlbSwgc2F5XFxuICAxODpcXHRcXHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3MgdG8gYmVcXG4gIDE5OlxcdFxcdCAgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0b1xcbiAgMjA6XFx0XFx0ICBiZSB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLiAgTm90ZSB0aGF0IGRlYnVnZ2luZyBtZXNzYWdlcyBhcmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6MjYuNTc4NTA5NDgzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Njg1MjAzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgTlRGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgbGV0IG1lIHNlZS4uLiBJJ20gbG9va2luZyBhdCB0aGUgTlRGUyBmaWxlc3lzdGVtIGNvbmZpZ3VyYXRpb24uIEkgc2VlIHRoYXQgYE5URlNfRlNgIGhhcyBgc2VsZWN0IE5MU2AgYW5kIGBzZWxlY3QgRlNfSU9NQVBgLiBIbW0sIHRoYXQncyB3aGF0IEknZCBleHBlY3QuIEJ1dCBJJ20gbWlzc2luZyBzb21ldGhpbmcuLi4gaXQgZG9lc24ndCBoYXZlIGEgYGRlcGVuZHMgb25gIGNsYXVzZSwgd2hpY2ggc2VlbXMgYSBiaXQgb2RkLiBJJ20gdXNlZCB0byBzZWVpbmcgZGVwZW5kZW5jaWVzIGhlcmUuXG5cbldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgdGhlIGBOVEZTX1JXYCBzeW1ib2w/IERvZXMgdGhhdCBjb21lIGludG8gcGxheT8gSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbSBnb2luZyB0byBoYXZlIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZWFkLXdyaXRlIGZ1bmN0aW9uYWxpdHkuIExldCdzIHNlZSB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIHNheXMgYWJvdXQgYE5URlNfUldgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgbWlzc2luZyBkZXBlbmRlbmN5IGFuZCBob3cgdGhpbmdzIGFyZSBhY3R1YWxseSB0aWVkIHRvZ2V0aGVyLiBUaW1lIHRvIGRvIHNvbWUgbW9yZSByZWFkaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjE5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTozMC4wNDcwMzE4NzlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIxOlxcdFxcdCAgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIFRvIGVuYWJsZSB0aGVtLCBzdXBwbHkgdGhlIG9wdGlvbiBkZWJ1Z19tc2dzPTFcXG4gIDIyOlxcdFxcdCAgYXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgd2hlbiBib290aW5nIHRoZSBrZXJuZWwgb3IgYXMgYW4gb3B0aW9uXFxuICAyMzpcXHRcXHQgIHRvIGluc21vZCB3aGVuIGxvYWRpbmcgdGhlIG50ZnMgbW9kdWxlLiAgT25jZSB0aGUgZHJpdmVyIGlzIGFjdGl2ZSxcXG4gIDI0OlxcdFxcdCAgeW91IGNhbiBlbmFibGUgZGVidWdnaW5nIG1lc3NhZ2VzIGJ5IGRvaW5nIChhcyByb290KTpcXG4gIDI1OlxcdFxcdCAgZWNobyAxIFxcdTAwM2UgL3Byb2Mvc3lzL2ZzL250ZnMtZGVidWdcXG4gIDI2OlxcdFxcdCAgUmVwbGFjaW5nIHRoZSBcXFwiMVxcXCIgd2l0aCBcXFwiMFxcXCIgd291bGQgZGlzYWJsZSBkZWJ1ZyBtZXNzYWdlcy5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0XFx0ICBJZiB5b3UgbGVhdmUgZGVidWdnaW5nIG1lc3NhZ2VzIGRpc2FibGVkLCB0aGlzIHJlc3VsdHMgaW4gbGl0dGxlXFxuICAyOTpcXHRcXHQgIG92ZXJoZWFkLCBidXQgZW5hYmxpbmcgZGVidWcgbWVzc2FnZXMgcmVzdWx0cyBpbiB2ZXJ5IHNpZ25pZmljYW50XFxuICAzMDpcXHRcXHQgIHNsb3dkb3duIG9mIHRoZSBzeXN0ZW0uXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgV2hlbiByZXBvcnRpbmcgYnVncywgcGxlYXNlIHRyeSB0byBoYXZlIGF2YWlsYWJsZSBhIGZ1bGwgZHVtcCBvZlxcbiAgMzM6XFx0XFx0ICBkZWJ1Z2dpbmcgbWVzc2FnZXMgd2hpbGUgdGhlIG1pc2JlaGF2aW91ciB3YXMgb2NjdXJyaW5nLlxcbiAgMzQ6XFx0XFxuICAzNTpcXHRjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG4gIDM2OlxcdFxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuICAzNzpcXHRcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG4gIDM4OlxcdFxcdHNlbGVjdCBGU19QT1NJWF9BQ0xcXG4gIDM5OlxcdFxcdGhlbHBcXG4gIDQwOlxcdFxcdCAgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgYWRkaXRpb25hbCBhY2Nlc3MgcmlnaHRzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjMwLjA0NzA5MDY0OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzMxNDQyMjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC4gSGVyZSdzIGEgc3VtbWFyeSBmcm9tIG15IHBlcnNwZWN0aXZlOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgQW50aWNpcGF0aW9uKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gcmVhZCBmdXJ0aGVyIGFuZCBhbmFseXplLiBJJ2xsIG5lZWQgdG8ga2VlcCBhbiBvcGVuIG1pbmQgYW5kIGJlIHJlYWR5IHRvIGRlbHZlIGludG8gdGhlIGRldGFpbHMuIEknbSBsb29raW5nIGZvcndhcmQgdG8gdGhlIGNoYWxsZW5nZSBvZiBhbmFseXppbmcgYW5kIHN1bW1hcml6aW5nIHRoZSBjb25jZXB0cyBhdCBoYW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjM3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjMyLjc3ODUzNDk2N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9udGZzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDE6XFx0XFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcXG4gIDQ0OlxcdFxcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTozMi43Nzg1OTQzNjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE0NjE3MDAxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcm91Ymxlc2hvb3RpbmcgYSBNaXNzaW5nIERyaXZlcioqXG5cbk9rYXksIGhvbGQgb24uIEkgd2FzIGV4cGVjdGluZyBgTlRGU19SV2AgdG8gYmUgcHJlc2VudCwgYnV0IGl0J3Mgbm90IHNob3dpbmcgdXAgYXMgaXQgc2hvdWxkLiBUaGlzIGlzbid0IGlkZWFsLCBhbmQgaXQgdGhyb3dzIGEgd3JlbmNoIGluIG15IGV4cGVjdGVkIHdvcmtmbG93LiBMZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucyB5ZXQsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpdHMgYWJzZW5jZSBkZWZpbml0aXZlbHkuIEknbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgZGVlcGVyIGFuZCB2ZXJpZnkgdGhhdCB0aGUgZHJpdmVyIGlzbid0IGp1c3QgaGlkZGVuIG9yIG1pc2NvbmZpZ3VyZWQsIGFuZCBjb25maXJtIGl0J3MgdHJ1bHkgbm90IHRoZXJlLiBTb21ldGhpbmcgaXNuJ3QgcXVpdGUgcmlnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0OTYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjM1LjkyNDc2NzE1OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMDQ5NDE0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOVEZTX1JXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTozNi4wNjQ4Mjc4MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NDk5MzU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTlRGUyBEcml2ZXIgUmVtb3ZhbCoqXG5cblJpZ2h0LCBzbyBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgTlRGU19SV2AgYmVpbmcgZHJvcHBlZCBmcm9tIHRoZSBrZXJuZWwgYXJvdW5kIDIwMjQsIHdhc24ndCBpdD8gVGltZSBmbGllcy4uLiBvciBtYXliZSBJJ20gbWlzcmVtZW1iZXJpbmcuIExldCdzIG5vdCByZWx5IG9uIG1lbW9yeSwgdGhvdWdoLiBMZXQncyBiZSBwcmVjaXNlLiBXaGVyZSB3b3VsZCBJIGNvbmZpcm0gdGhhdD8gVGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGZpbGVzeXN0ZW0gYnVpbGQgY29uZmlndXJhdGlvbi4gSWYgaXQncyBnb25lLCB0aGUgbWFrZWZpbGVzIHdpbGwgdGVsbCBtZSBzby4gVGhlcmVmb3JlIEkgd2lsbCBnbyB0byBgZnMvbnRmcy9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWFnaWMgaGFwcGVucy4gQSBxdWljayBwZWVrIHRoZXJlIHdpbGwgZWl0aGVyIGNvbmZpcm0gbXkgc3VzcGljaW9uIGFib3V0IHRoZSByZW1vdmFsIG9yLCBpZiBpdCdzIHN0aWxsIHRoZXJlLCBpbGx1bWluYXRlIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0J3MgY29tcGlsZWQuIFRoYXQgc2hvdWxkIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiBOVEZTIHJlYWQtd3JpdGUgc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY4NSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjM5LjMyOTgyMzcxN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9udGZzL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0XFxuICAgMzpcXHRvYmotJChDT05GSUdfTlRGU19GUykgKz0gbnRmcy5vXFxuICAgNDpcXHRcXG4gICA1OlxcdG50ZnMteSA6PSBhb3BzLm8gYXR0cmliLm8gY29sbGF0ZS5vIGRpci5vIGZpbGUubyBpbmRleC5vIGlub2RlLm8gXFxcXFxcbiAgIDY6XFx0XFx0ICBtZnQubyBtc3QubyBuYW1laS5vIHJ1bmxpc3QubyBzdXBlci5vIHVuaXN0ci5vIGF0dHJsaXN0Lm8gZWEubyBcXFxcXFxuICAgNzpcXHRcXHQgIHVwY2FzZS5vIGJpdG1hcC5vIGxjbmFsbG9jLm8gbG9nZmlsZS5vIHJlcGFyc2UubyBjb21wcmVzcy5vIFxcXFxcXG4gICA4OlxcdFxcdCAgaW9tYXAubyBkZWJ1Zy5vIHN5c2N0bC5vIG9iamVjdF9pZC5vIGJkZXYtaW8ub1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjY2ZsYWdzLSQoQ09ORklHX05URlNfREVCVUcpICs9IC1EREVCVUdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6MzkuMzI5ODgyOTI2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMzc0MTg5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTlRGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuQWxyaWdodCwgbXkgYW5hbHlzaXMgcG9pbnRzIHRvIGEgc3RyYWlnaHRmb3J3YXJkIGNvbmZpZ3VyYXRpb24gaGVyZTogYE5URlNfRlNgIGlzIGFsbCB3ZSB0cnVseSBuZWVkLiBJIGluaXRpYWxseSBjb25zaWRlcmVkIHNvbWUgc3BlY2lmaWMgZmlsZXMsIGxpa2UgYGZzL250ZnMvbGNuYWxsb2MuY2AgYW5kIGBmcy9udGZzL3J1bmxpc3QuY2AsIGFzIHBhcnQgb2YgdGhlIGZ1enppbmcgc2NvcGUsIHdoaWNoIGxlZCBtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0IGBudGZzLXlgIG1heSBiZSBuZWNlc3NhcnkuIEhvd2V2ZXIsIGFmdGVyIGZ1cnRoZXIgcmVmbGVjdGlvbiwgYE5URlNfRlNgIGFsb25lIHNob3VsZCBjb3ZlciBldmVyeXRoaW5nIHdlIHdhbnQuXG5cblRvIHJlY2FwIGFuZCBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGlzIHdoYXQgSSd2ZSBkZXRlcm1pbmVkOiBUaGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZzsgSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBUaGUgbW9zdCBjcml0aWNhbCBzeW1ib2xzIHRvIHRhcmdldCBmb3IgZnV6emluZyBhcmUgYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AuIEkgd2lsbCBiZSBlbmFibGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gYE5URlNfRlNgLiBNeSByZWFzb25pbmcgaXMgdGhpczogdGhlIHBhdGNoIGludHJvZHVjZXMgY3J1Y2lhbCBib3VuZHMgY2hlY2tzIHdpdGhpbiB0aGUgTlRGUyBmaWxlc3lzdGVtIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aG9zZSB0d28gZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGZ1bmRhbWVudGFsbHkgaW52b2x2ZWQgaW4gY29yZSBOVEZTIG9wZXJhdGlvbnMg4oCTIGF0dHJpYnV0ZSBleHBhbnNpb24gYW5kIHJ1bmxpc3QgZGVjb21wcmVzc2lvbi4gVGhpcyByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBkaXJlY3RseSBpbXBhY3RzIGhvdyB0aGUgZmlsZXN5c3RlbSBoYW5kbGVzIGNyaXRpY2FsIGRhdGEgc3RydWN0dXJlcyBhbmQgb3BlcmF0aW9ucywgbWFraW5nIGl0IGFuIGV4Y2VsbGVudCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNjQsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6NDQuNDY3MzA1NTM4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU4MjAxMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX2NsdXN0ZXJfYWxsb2NcIixcbiAgICBcIm50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tzIHRvIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGFuZCBgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NgIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgY29yZSBOVEZTIG9wZXJhdGlvbnMgbGlrZSBhdHRyaWJ1dGUgZXhwYW5zaW9uIGFuZCBydW5saXN0IGRlY29tcHJlc3Npb24sIHNvIHRoZXkgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfY2x1c3Rlcl9hbGxvY1wiLFxuICAgIFwibnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja3MgdG8gYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBjb3JlIE5URlMgb3BlcmF0aW9ucyBsaWtlIGF0dHJpYnV0ZSBleHBhbnNpb24gYW5kIHJ1bmxpc3QgZGVjb21wcmVzc2lvbiwgc28gdGhleSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowdtbjb[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-27 10:50:57 +0000 UTC FinishedAt: 2026-07-27 11:09:46 +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": "4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NTFS_FS" ], "series_id": "967545ce-ed80-477e-a1fd-7b58827f13a5" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "ntfs_cluster_alloc", "ntfs_mapping_pairs_decompress" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDExOjA5PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2NsdXN0ZXJfYWxsb2MmIzM0OywKICAgICYjMzQ7bnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tzIHRvIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGFuZCBgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NgIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgY29yZSBOVEZTIG9wZXJhdGlvbnMgbGlrZSBhdHRyaWJ1dGUgZXhwYW5zaW9uIGFuZCBydW5saXN0IGRlY29tcHJlc3Npb24sIHNvIHRoZXkgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCAwYTU3NzZmZGM3MWVmYmI4NjU2NmJiZGJmMTQzYWM1OTUyYzRkM2E3XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTE6MDk6MDQgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9sY25hbGxvYy5jIGIvZnMvbnRmcy9sY25hbGxvYy5jXG5pbmRleCA4MzVhMDQxMDIzYTJhYy4uYWEyZTAxN2E0Mzg0NGIgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2xjbmFsbG9jLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvbGNuYWxsb2MuY1xuQEAgLTI5OCw3ICYjNDM7Mjk4LDEyIEBAIHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKm50ZnNfY2x1c3Rlcl9hbGxvYyhzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCwgY29uc3QgczY0IHN0XG4gXHRjbHVzdGVycyA9IGNvdW50O1xuIFx0cmxwb3MgPSBybHNpemUgPSAwO1xuIFx0bWFwcGluZyA9IGxjbmJtcF92aS1cdTAwM2VpX21hcHBpbmc7XG4tXHRpX3NpemUgPSBpX3NpemVfcmVhZChsY25ibXBfdmkpO1xuJiM0MztcdC8qXG4mIzQzO1x0ICogbGNuX2VtcHR5X2JpdHNfcGVyX3BhZ2UgaXMgc2l6ZWQgZnJvbSBucl9jbHVzdGVycywgYnV0ICRCaXRtYXAgY2FuXG4mIzQzO1x0ICogY292ZXIgbW9yZSBjbHVzdGVycyB0aGFuIHRoYXQ7IGJvdW5kIHRoZSBzY2FuIGJ5IHRoZSBhcnJheS5cbiYjNDM7XHQgKi9cbiYjNDM7XHRpX3NpemUgPSBtaW5fdChzNjQsIGlfc2l6ZV9yZWFkKGxjbmJtcF92aSksXG4mIzQzO1x0XHQgICAgICAgKChzNjQpdm9sLVx1MDAzZW5yX2NsdXN0ZXJzICYjNDM7IDcpIFx1MDAzZVx1MDAzZSAzKTtcbiBcdHdoaWxlICgxKSB7XG4gXHRcdG50ZnNfZGVidWcoXCYjMzQ7U3RhcnQgb2Ygb3V0ZXIgd2hpbGUgbG9vcDogZG9uZV96b25lcyAweCV4LCBzZWFyY2hfem9uZSAlaSwgcGFzcyAlaSwgem9uZV9zdGFydCAweCVsbHgsIHpvbmVfZW5kIDB4JWxseCwgYm1wX2luaXRpYWxfcG9zIDB4JWxseCwgYm1wX3BvcyAweCVsbHgsIHJscG9zICVpLCBybHNpemUgJWkuXCYjMzQ7LFxuIFx0XHRcdFx0ZG9uZV96b25lcywgc2VhcmNoX3pvbmUsIHBhc3MsXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9ydW5saXN0LmMgYi9mcy9udGZzL3J1bmxpc3QuY1xuaW5kZXggY2JiNjU3NmNmNzI1ODIuLjc0Zjk0YjRiNmM1YmJhIDEwMDY0NFxuLS0tIGEvZnMvbnRmcy9ydW5saXN0LmNcbiYjNDM7JiM0MzsmIzQzOyBiL2ZzL250ZnMvcnVubGlzdC5jXG5AQCAtODgwLDYgJiM0Mzs4ODAsMTMgQEAgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoY29uc3Qgc3RydWN0IG50ZnNfdm9sdW1lICpcbiBcdFx0XHRcdFx0bnRmc19lcnJvcih2b2wtXHUwMDNlc2IsIFwmIzM0O2xjbiA9PSAtMVwmIzM0Oyk7XG4gXHRcdFx0fVxuICNlbmRpZlxuJiM0MztcdFx0XHQvKiBDaGVjayBsY24gaXMgd2l0aGluIHRoZSB2b2x1bWUuICovXG4mIzQzO1x0XHRcdGlmICh1bmxpa2VseShsY24gXHUwMDNlPSAoczY0KXZvbC1cdTAwM2Vucl9jbHVzdGVycykpIHtcbiYjNDM7XHRcdFx0XHRudGZzX2Vycm9yKHZvbC1cdTAwM2VzYixcbiYjNDM7XHRcdFx0XHRcdFx0XCYjMzQ7TENOIFx1MDAzZT0gbnJfY2x1c3RlcnMgaW4gbWFwcGluZyBwYWlycyBhcnJheS5cJiMzNDspO1xuJiM0MztcdFx0XHRcdGdvdG8gZXJyX291dDtcbiYjNDM7XHRcdFx0fVxuJiM0MztcbiBcdFx0XHQvKiBDaGVjayBsY24gaXMgbm90IGJlbG93IC0xLiAqL1xuIFx0XHRcdGlmICh1bmxpa2VseShsY24gXHUwMDNjIC0xKSkge1xuIFx0XHRcdFx0bnRmc19lcnJvcih2b2wtXHUwMDNlc2IsIFwmIzM0O0ludmFsaWQgczY0IFx1MDAzYyAtMSBpbiBtYXBwaW5nIHBhaXJzIGFycmF5LlwmIzM0Oyk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2NsdXN0ZXJfYWxsb2MmIzM0OywKICAgICYjMzQ7bnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tzIHRvIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGFuZCBgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NgIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgY29yZSBOVEZTIG9wZXJhdGlvbnMgbGlrZSBhdHRyaWJ1dGUgZXhwYW5zaW9uIGFuZCBydW5saXN0IGRlY29tcHJlc3Npb24sIHNvIHRoZXkgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCAwYTU3NzZmZGM3MWVmYmI4NjU2NmJiZGJmMTQzYWM1OTUyYzRkM2E3CkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIE1vbiBKdWwgMjcgMTE6MDk6MDQgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9mcy9udGZzL2xjbmFsbG9jLmMgYi9mcy9udGZzL2xjbmFsbG9jLmMKaW5kZXggODM1YTA0MTAyM2EyYWMuLmFhMmUwMTdhNDM4NDRiIDEwMDY0NAotLS0gYS9mcy9udGZzL2xjbmFsbG9jLmMKJiM0MzsmIzQzOyYjNDM7IGIvZnMvbnRmcy9sY25hbGxvYy5jCkBAIC0yOTgsNyAmIzQzOzI5OCwxMiBAQCBzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpudGZzX2NsdXN0ZXJfYWxsb2Moc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsIGNvbnN0IHM2NCBzdAogCWNsdXN0ZXJzID0gY291bnQ7CiAJcmxwb3MgPSBybHNpemUgPSAwOwogCW1hcHBpbmcgPSBsY25ibXBfdmktJmd0O2lfbWFwcGluZzsKLQlpX3NpemUgPSBpX3NpemVfcmVhZChsY25ibXBfdmkpOwomIzQzOwkvKgomIzQzOwkgKiBsY25fZW1wdHlfYml0c19wZXJfcGFnZSBpcyBzaXplZCBmcm9tIG5yX2NsdXN0ZXJzLCBidXQgJEJpdG1hcCBjYW4KJiM0MzsJICogY292ZXIgbW9yZSBjbHVzdGVycyB0aGFuIHRoYXQ7IGJvdW5kIHRoZSBzY2FuIGJ5IHRoZSBhcnJheS4KJiM0MzsJICovCiYjNDM7CWlfc2l6ZSA9IG1pbl90KHM2NCwgaV9zaXplX3JlYWQobGNuYm1wX3ZpKSwKJiM0MzsJCSAgICAgICAoKHM2NCl2b2wtJmd0O25yX2NsdXN0ZXJzICYjNDM7IDcpICZndDsmZ3Q7IDMpOwogCXdoaWxlICgxKSB7CiAJCW50ZnNfZGVidWcoJiMzNDtTdGFydCBvZiBvdXRlciB3aGlsZSBsb29wOiBkb25lX3pvbmVzIDB4JXgsIHNlYXJjaF96b25lICVpLCBwYXNzICVpLCB6b25lX3N0YXJ0IDB4JWxseCwgem9uZV9lbmQgMHglbGx4LCBibXBfaW5pdGlhbF9wb3MgMHglbGx4LCBibXBfcG9zIDB4JWxseCwgcmxwb3MgJWksIHJsc2l6ZSAlaS4mIzM0OywKIAkJCQlkb25lX3pvbmVzLCBzZWFyY2hfem9uZSwgcGFzcywKZGlmZiAtLWdpdCBhL2ZzL250ZnMvcnVubGlzdC5jIGIvZnMvbnRmcy9ydW5saXN0LmMKaW5kZXggY2JiNjU3NmNmNzI1ODIuLjc0Zjk0YjRiNmM1YmJhIDEwMDY0NAotLS0gYS9mcy9udGZzL3J1bmxpc3QuYwomIzQzOyYjNDM7JiM0MzsgYi9mcy9udGZzL3J1bmxpc3QuYwpAQCAtODgwLDYgJiM0Mzs4ODAsMTMgQEAgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoY29uc3Qgc3RydWN0IG50ZnNfdm9sdW1lICoKIAkJCQkJbnRmc19lcnJvcih2b2wtJmd0O3NiLCAmIzM0O2xjbiA9PSAtMSYjMzQ7KTsKIAkJCX0KICNlbmRpZgomIzQzOwkJCS8qIENoZWNrIGxjbiBpcyB3aXRoaW4gdGhlIHZvbHVtZS4gKi8KJiM0MzsJCQlpZiAodW5saWtlbHkobGNuICZndDs9IChzNjQpdm9sLSZndDtucl9jbHVzdGVycykpIHsKJiM0MzsJCQkJbnRmc19lcnJvcih2b2wtJmd0O3NiLAomIzQzOwkJCQkJCSYjMzQ7TENOICZndDs9IG5yX2NsdXN0ZXJzIGluIG1hcHBpbmcgcGFpcnMgYXJyYXkuJiMzNDspOwomIzQzOwkJCQlnb3RvIGVycl9vdXQ7CiYjNDM7CQkJfQomIzQzOwogCQkJLyogQ2hlY2sgbGNuIGlzIG5vdCBiZWxvdyAtMS4gKi8KIAkJCWlmICh1bmxpa2VseShsY24gJmx0OyAtMSkpIHsKIAkJCQludGZzX2Vycm9yKHZvbC0mZ3Q7c2IsICYjMzQ7SW52YWxpZCBzNjQgJmx0OyAtMSBpbiBtYXBwaW5nIHBhaXJzIGFycmF5LiYjMzQ7KTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjUxNAoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEwOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIE5URlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGZzL250ZnMvbGNuYWxsb2MuY2AgYW5kIGBmcy9udGZzL3J1bmxpc3QuY2AuIEludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGFkZCBib3VuZHMgY2hlY2tzLiBHb29kLCBnb29kLCB0aGF0JiMzOTtzIHdoYXQgSSB3YW50IHRvIHNlZS4gVGhpcyBpbXBsaWVzIHRoZXkmIzM5O3JlIGJvbHN0ZXJpbmcgdGhlIE5URlMgZmlsZXN5c3RlbSYjMzk7cyByb2J1c3RuZXNzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGNsdXN0ZXIgYWxsb2NhdGlvbiBhbmQgcnVubGlzdCBkZWNvbXByZXNzaW9uLiBgbnRmc19jbHVzdGVyX2FsbG9jYCBpbiBgbGNuYWxsb2MuY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgaW4gYHJ1bmxpc3QuY2AuLi4gcmlnaHQsIHRob3NlIGFyZSBrZXkgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaWNzIG9mIGhvdyBkYXRhIGlzIHN0b3JlZCBhbmQgcmV0cmlldmVkIG9uIGFuIE5URlMgdm9sdW1lLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIG9yIHBlcmhhcHMgdGhleSYjMzk7cmUgcHJvYWN0aXZlbHkgaGFyZGVuaW5nIGFnYWluc3QgYSB0aGVvcmV0aWNhbCBpc3N1ZS4gR290dGEgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zIGZvciBOVEZTIG5vdyB0byBzZWUgaG93IHRoaXMgaW1wYWN0cyBvdXIgc3BlY2lmaWMgdXNlIGNhc2UgYW5kIHdoYXQgZGVmYXVsdHMgd2UmIzM5O3JlIHJ1bm5pbmcgd2l0aC4gSSB3YW50IHRvIHNlZSB3aGF0IHRoaXMgdHJhbnNsYXRlcyB0bywgaW4gcHJhY3RpY2UuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcbi0tXG5mcy9udGZzL0tjb25maWctMzQtXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG5mcy9udGZzL0tjb25maWctMzYtXHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD41LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzMDA4CgkJCQkJCQlvdXRwdXQ6IDY1CgkJCQkJCQl0aG91Z2h0czogMTA0CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyB0aGUgTlRGUyBGaWxlc3lzdGVtIEltcGxlbWVudGF0aW9uKioKCk9rYXksIHNvIHRoZSBjb25maWd1cmF0aW9uIGlzIHNldCB0byBgTlRGU19GU2AsIHdoaWNoIGltbWVkaWF0ZWx5IGZsYWdzIG15IGF0dGVudGlvbi4gSSBrbm93IHRoZXJlJiMzOTtzIGFsc28gYE5URlMzX0ZTYCBpbiB0aGUga2VybmVsIG5vdywgYnV0IHRoaXMgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZnMvbnRmcy9gLCB3aGljaCBJIHJlY2FsbCBpcyB0aGUgb2xkZXIgTlRGUyBkcml2ZXIuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJiMzOTtsbCBxdWlja2x5IHZlcmlmeSB0aGF0IHRoZSBvbGQgZHJpdmVyIGlzIHN0aWxsIHByZXNlbnQgaW4gdGhlIGtlcm5lbC4gKlllcyosIGl0IGlzLCBhcyBleHBlY3RlZC4gTm93IHRoYXQgSSYjMzk7dmUgcmUtZXN0YWJsaXNoZWQgdGhlIGNvbnRleHQgb2YgdGhlIG9sZGVyIGltcGxlbWVudGF0aW9uLCBJIG5lZWQgdG8gZm9jdXMgb24gdGhpcyBwYXRjaC4gTGV0JiMzOTtzIHN0YXJ0IGJ5IGxvb2tpbmcgY2xvc2VseSBhdCB0aGUgYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgZnVuY3Rpb25zLCB3aGljaCBhcmUgdGhlIGtleSBhcmVhcyBmb3IgdGhpcyBwYXRjaC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD42LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtudGZzX2NsdXN0ZXJfYWxsb2MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jPTE5MTE9aW50IG50ZnNfYXR0cl9tYWtlX25vbl9yZXNpZGVudChzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGNvbnN0IHUzMiBkYXRhX3NpemUpXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy0xOTk5LVx0XHQvKiBTdGFydCBieSBhbGxvY2F0aW5nIGNsdXN0ZXJzIHRvIGhvbGQgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4gKi9cbmZzL250ZnMvYXR0cmliLmM6MjAwMDpcdFx0cmwgPSBudGZzX2NsdXN0ZXJfYWxsb2Modm9sLCAwLFxuZnMvbnRmcy9hdHRyaWIuYy0yMDAxLVx0XHRcdFx0bnRmc19ieXRlc190b19jbHVzdGVyKHZvbCwgbmV3X3NpemUpLFxuLS1cbmZzL250ZnMvYXR0cmliLmM9NDMzMj1zdGF0aWMgaW50IG50ZnNfbm9uX3Jlc2lkZW50X2F0dHJfZXhwYW5kKHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgczY0IG5ld3NpemUsXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy00NDc1LVxuZnMvbnRmcy9hdHRyaWIuYzo0NDc2Olx0XHRcdHJsID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCxcbmZzL250ZnMvYXR0cmliLmMtNDQ3Ny1cdFx0XHRcdFx0bnRmc19ieXRlc190b19jbHVzdGVyKHZvbCwgbmktXHUwMDNlYWxsb2NhdGVkX3NpemUpLFxuLS1cbmZzL250ZnMvYXR0cmliLmM9NDk3Mz1pbnQgbnRmc19hdHRyX21hcF9jbHVzdGVyKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHZjbl9zdGFydCwgczY0ICpsY25fc3RhcnQsXG4tLVxuZnMvbnRmcy9hdHRyaWIuYy01MDY1LVxuZnMvbnRmcy9hdHRyaWIuYzo1MDY2Olx0cmxjID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgdmNuLCBjbHVfY291bnQsIGxjbl9zZWVrX2Zyb20sIERBVEFfWk9ORSxcbmZzL250ZnMvYXR0cmliLmMtNTA2Ny1cdFx0XHRmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XG4tLVxuZnMvbnRmcy9jb21wcmVzcy5jPTEyNzQ9c3RhdGljIGludCBudGZzX3dyaXRlX2NiKHN0cnVjdCBudGZzX2lub2RlICpuaSwgbG9mZl90IHBvcywgc3RydWN0IHBhZ2UgKipwYWdlcyxcbi0tXG5mcy9udGZzL2NvbXByZXNzLmMtMTM4NC1cbmZzL250ZnMvY29tcHJlc3MuYzoxMzg1Olx0cmxjID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgbmV3X3ZjbiwgbmV3X2xlbmd0aCwgLTEsIERBVEFfWk9ORSxcbmZzL250ZnMvY29tcHJlc3MuYy0xMzg2LVx0XHRcdGZhbHNlLCB0cnVlLCB0cnVlKTtcbi0tXG5mcy9udGZzL2xjbmFsbG9jLmM9NjY9c3RhdGljIHM2NCBtYXhfZW1wdHlfYml0X3JhbmdlKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IHNpemUpXG4tLVxuZnMvbnRmcy9sY25hbGxvYy5jLTExOS0vKlxuZnMvbnRmcy9sY25hbGxvYy5jOjEyMDogKiBudGZzX2NsdXN0ZXJfYWxsb2MgLSBhbGxvY2F0ZSBjbHVzdGVycyBvbiBhbiBudGZzIHZvbHVtZVxuZnMvbnRmcy9sY25hbGxvYy5jLTEyMS0gKiBAdm9sOlx0XHRtb3VudGVkIG50ZnMgdm9sdW1lIG9uIHdoaWNoIHRvIGFsbG9jYXRlIGNsdXN0ZXJzXG4tLVxuZnMvbnRmcy9sY25hbGxvYy5jLTE4Mi0gKi9cbmZzL250ZnMvbGNuYWxsb2MuYzoxODM6c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19jbHVzdGVyX2FsbG9jKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLCBjb25zdCBzNjQgc3RhcnRfdmNuLFxuZnMvbnRmcy9sY25hbGxvYy5jLTE4NC1cdFx0Y29uc3QgczY0IGNvdW50LCBjb25zdCBzNjQgc3RhcnRfbGNuLFxuLS1cbmZzL250ZnMvbGNuYWxsb2MuaD0yMz1lbnVtIHtcbi0tXG5mcy9udGZzL2xjbmFsbG9jLmgtMjktXG5mcy9udGZzL2xjbmFsbG9jLmg6MzA6c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19jbHVzdGVyX2FsbG9jKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLFxuZnMvbnRmcy9sY25hbGxvYy5oLTMxLVx0XHRjb25zdCBzNjQgc3RhcnRfdmNuLCBjb25zdCBzNjQgY291bnQsIGNvbnN0IHM2NCBzdGFydF9sY24sXG4tLVxuZnMvbnRmcy9tZnQuYz0xMDUzPXN0YXRpYyBpbnQgbnRmc19tZnRfYml0bWFwX2V4dGVuZF9hbGxvY2F0aW9uX25vbG9jayhzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbClcbi0tXG5mcy9udGZzL21mdC5jLTExMzctXHRcdC8qIEFsbG9jYXRlIGEgY2x1c3RlciBmcm9tIHRoZSBEQVRBX1pPTkUuICovXG5mcy9udGZzL21mdC5jOjExMzg6XHRcdHJsMiA9IG50ZnNfY2x1c3Rlcl9hbGxvYyh2b2wsIHJsWzFdLnZjbiwgMSwgbGNuLCBEQVRBX1pPTkUsXG5mcy9udGZzL21mdC5jLTExMzktXHRcdFx0XHR0cnVlLCBmYWxzZSwgZmFsc2UpO1xuLS1cbmZzL250ZnMvbWZ0LmM9MTQ4Nj1zdGF0aWMgaW50IG50ZnNfbWZ0X2RhdGFfZXh0ZW5kX2FsbG9jYXRpb25fbm9sb2NrKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sKVxuLS1cbmZzL250ZnMvbWZ0LmMtMTU2Mi1cdGRvIHtcbmZzL250ZnMvbWZ0LmM6MTU2MzpcdFx0cmwyID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgb2xkX2xhc3RfdmNuLCBuciwgbGNuLCBNRlRfWk9ORSxcbmZzL250ZnMvbWZ0LmMtMTU2NC1cdFx0XHRcdHRydWUsIGZhbHNlLCBmYWxzZSk7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL2F0dHJpYi5jPTg2PWludCBudGZzX21hcF9ydW5saXN0X25vbG9jayhzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCB2Y24sIHN0cnVjdCBudGZzX2F0dHJfc2VhcmNoX2N0eCAqY3R4KVxuLS1cbmZzL250ZnMvYXR0cmliLmMtMTg3LVx0ICogd2UgdGhlbiB0cnkgdG8gbWFwIHRoZSBhbHJlYWR5IG1hcHBlZCBydW5saXN0IGZyYWdtZW50IGFuZFxuZnMvbnRmcy9hdHRyaWIuYzoxODg6XHQgKiBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcygpIGZhaWxzLlxuZnMvbnRmcy9hdHRyaWIuYy0xODktXHQgKi9cbi0tXG5mcy9udGZzL2F0dHJpYi5jLTE5NC1cdH1cbmZzL250ZnMvYXR0cmliLmM6MTk1Olx0cmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhuaS1cdTAwM2V2b2wsIGEsIFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QsIFx1MDAyNm5ld19ybF9jb3VudCk7XG5mcy9udGZzL2F0dHJpYi5jLTE5Ni1cdGlmIChJU19FUlIocmwpKVxuLS1cbmZzL250ZnMvYXR0cmliLmM9MjYyNT1pbnQgbnRmc19hdHRyX3JlY29yZF9ybShzdHJ1Y3QgbnRmc19hdHRyX3NlYXJjaF9jdHggKmN0eClcbi0tXG5mcy9udGZzL2F0dHJpYi5jLTI3MDMtXG5mcy9udGZzL2F0dHJpYi5jOjI3MDQ6XHRcdFx0YWxfcmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhiYXNlX25pLVx1MDAzZXZvbCxcbmZzL250ZnMvYXR0cmliLmMtMjcwNS1cdFx0XHRcdFx0Y3R4LVx1MDAzZWF0dHIsIE5VTEwsIFx1MDAyNm5ld19ybF9jb3VudCk7XG4tLVxuZnMvbnRmcy9hdHRyaWIuYz0zMjQ1PWludCBudGZzX2F0dHJfbWFwX3dob2xlX3J1bmxpc3Qoc3RydWN0IG50ZnNfaW5vZGUgKm5pKVxuLS1cbmZzL250ZnMvYXR0cmliLmMtMzI5Mi1cdFx0XHQvKiBEZWNvZGUgdGhlIHJ1bmxpc3QuICovXG5mcy9udGZzL2F0dHJpYi5jOjMyOTM6XHRcdFx0cmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhuaS1cdTAwM2V2b2wsIGEsIFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QsXG5mcy9udGZzL2F0dHJpYi5jLTMyOTQtXHRcdFx0XHRcdFx0XHQgICBcdTAwMjZuZXdfcmxfY291bnQpO1xuLS1cbmZzL250ZnMvaW5vZGUuYz0zMjM9c3RhdGljIGludCBudGZzX25vbl9yZXNpZGVudF9kZWFsbG9jX2NsdXN0ZXJzKHN0cnVjdCBudGZzX2lub2RlICpuaSlcbi0tXG5mcy9udGZzL2lub2RlLmMtMzUxLVxuZnMvbnRmcy9pbm9kZS5jOjM1MjpcdFx0XHRybCA9IG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKG5pLVx1MDAzZXZvbCwgYWN0eC1cdTAwM2VhdHRyLCBOVUxMLFxuZnMvbnRmcy9pbm9kZS5jLTM1My1cdFx0XHRcdFx0XHUwMDI2bmV3X3JsX2NvdW50KTtcbi0tXG5mcy9udGZzL2lub2RlLmM9MTgwNj1zdGF0aWMgc3RydWN0IGxvY2tfY2xhc3Nfa2V5IG1mdF9uaV9ydW5saXN0X2xvY2tfa2V5LCBtZnRfbmlfbXJlY19sb2NrX2tleTtcbi0tXG5mcy9udGZzL2lub2RlLmMtMTgyNi0gKiBlbHNlIGFuZCBpdGVyYXRpbmcgdXNpbmcgbnRmc19hdHRyX2xvb2t1cCgkREFUQSkgb3ZlciBhbGwgZXh0ZW50cy4gIEFzIGVhY2hcbmZzL250ZnMvaW5vZGUuYzoxODI3OiAqIGV4dGVudCBpcyBmb3VuZCwgd2UgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoKSBpbmNsdWRpbmcgdGhlIGltcGxpZWRcbmZzL250ZnMvaW5vZGUuYy0xODI4LSAqIG50ZnNfcnVubGlzdHNfbWVyZ2UoKS4gIEVhY2ggc3RlcCBvZiB0aGUgaXRlcmF0aW9uIG5lY2Vzc2FyaWx5IHByb3ZpZGVzXG4tLVxuZnMvbnRmcy9pbm9kZS5jPTE4MzQ9aW50IG50ZnNfcmVhZF9pbm9kZV9tb3VudChzdHJ1Y3QgaW5vZGUgKnZpKVxuLS1cbmZzL250ZnMvaW5vZGUuYy0xOTg0LVxuZnMvbnRmcy9pbm9kZS5jOjE5ODU6XHRcdFx0cmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyh2b2wsIGEsIE5VTEwsIFx1MDAyNm5ld19ybF9jb3VudCk7XG5mcy9udGZzL2lub2RlLmMtMTk4Ni1cdFx0XHRpZiAoSVNfRVJSKHJsKSkge1xuLS1cbmZzL250ZnMvaW5vZGUuYy0yMDgxLVx0XHQgKi9cbmZzL250ZnMvaW5vZGUuYzoyMDgyOlx0XHRucmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyh2b2wsIGEsIFx1MDAyNm5pLVx1MDAzZXJ1bmxpc3QsXG5mcy9udGZzL2lub2RlLmMtMjA4My1cdFx0XHRcdFx0XHQgICAgXHUwMDI2bmV3X3JsX2NvdW50KTtcbi0tXG5mcy9udGZzL2lub2RlLmMtMjA4NS1cdFx0XHRudGZzX2Vycm9yKHNiLFxuZnMvbnRmcy9pbm9kZS5jOjIwODY6XHRcdFx0XHRcJiMzNDtudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcygpIGZhaWxlZCB3aXRoIGVycm9yIGNvZGUgJWxkLlwmIzM0OyxcbmZzL250ZnMvaW5vZGUuYy0yMDg3LVx0XHRcdFx0UFRSX0VSUihucmwpKTtcbi0tXG5mcy9udGZzL3J1bmxpc3QuYz01MTg9c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19ydW5saXN0c19tZXJnZShzdHJ1Y3QgcnVubGlzdCAqZF9ydW5saXN0LFxuLS1cbmZzL250ZnMvcnVubGlzdC5jLTcxMy0vKlxuZnMvbnRmcy9ydW5saXN0LmM6NzE0OiAqIG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzIC0gY29udmVydCBtYXBwaW5nIHBhaXJzIGFycmF5IHRvIHJ1bmxpc3RcbmZzL250ZnMvcnVubGlzdC5jLTcxNS0gKiBAdm9sOiBudGZzIHZvbHVtZVxuLS1cbmZzL250ZnMvcnVubGlzdC5jLTczMC0gKi9cbmZzL250ZnMvcnVubGlzdC5jOjczMTpzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhjb25zdCBzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCxcbmZzL250ZnMvcnVubGlzdC5jLTczMi1cdFx0Y29uc3Qgc3RydWN0IGF0dHJfcmVjb3JkICphdHRyLCBzdHJ1Y3QgcnVubGlzdCAqb2xkX3J1bmxpc3QsXG4tLVxuZnMvbnRmcy9ydW5saXN0Lmg9Njg9c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19ydW5saXN0c19tZXJnZShzdHJ1Y3QgcnVubGlzdCAqZF9ydW5saXN0LFxuLS1cbmZzL250ZnMvcnVubGlzdC5oLTcwLVx0XHRzaXplX3QgKm5ld19ybF9jb3VudCk7XG5mcy9udGZzL3J1bmxpc3QuaDo3MTpzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhjb25zdCBzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCxcbmZzL250ZnMvcnVubGlzdC5oLTcyLVx0XHRjb25zdCBzdHJ1Y3QgYXR0cl9yZWNvcmQgKmF0dHIsIHN0cnVjdCBydW5saXN0ICpvbGRfcnVubGlzdCxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA1ODI4CgkJCQkJCQlvdXRwdXQ6IDI5CgkJCQkJCQl0aG91Z2h0czogNDY4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzIGluIHRoZSBOVEZTIEZpbGVzeXN0ZW0qKgoKT2theSwgc28gSSYjMzk7dmUgYmVlbiBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kLCByaWdodCBvZmYgdGhlIGJhdCwgSSBzZWUgdGhhdCBpdCYjMzk7cyBmb2N1c2luZyBvbiBjb3JlIE5URlMgZnVuY3Rpb25zOiBgbnRmc19jbHVzdGVyX2FsbG9jYCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIGEgd2lkZSByYW5nZSBvZiBjcml0aWNhbCBvcGVyYXRpb25zIC0gdGhpbmdzIGxpa2UgYXR0cmlidXRlIG1hbmFnZW1lbnQsIGFsbG9jYXRpb24sIGFuZCBydW5saXN0IGhhbmRsaW5nLiBUaGF0IGFsb25lIG1ha2VzIHRoaXMgcGF0Y2ggYW4gYXR0cmFjdGl2ZSB0YXJnZXQgZm9yIGZ1enppbmc7IGFueSBib3VuZHMgY2hlY2sgaXNzdWVzIGhlcmUgY291bGQgaGF2ZSBwcmV0dHkgc2lnbmlmaWNhbnQgY29uc2VxdWVuY2VzLgoKU3BlY2lmaWNhbGx5LCBgbnRmc19jbHVzdGVyX2FsbG9jYCBpcyBjYWxsZWQgYnkgYSBidW5jaCBvZiBmdW5jdGlvbnMgdGhhdCBkZWFsIHdpdGggYWxsb2NhdGluZyBjbHVzdGVycywgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgaXMgaW52b2x2ZWQgaW4gcnVubGlzdCBtYXBwaW5nIGFuZCBkZWNvbXByZXNzaW9uLiBDb25zaWRlcmluZyB0aGUgcmVhY2ggb2YgdGhlc2UgZnVuY3Rpb25zLCBmaW5kaW5nIHZ1bG5lcmFiaWxpdGllcyB0aHJvdWdoIGZ1enppbmcgY291bGQgdW5jb3ZlciBzb21lIHJlYWxseSBuYXN0eSBlZGdlIGNhc2VzLgoKTm93LCBsZXQmIzM5O3MgbmFpbCBkb3duIHdoYXQgd2UmIzM5O3JlIGdvaW5nIHRvIGZvY3VzIG9uLiBCYXNlZCBvbiB0aGUgcGF0Y2gsIGl0IHNlZW1zIGxpa2UgYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgYXJlIHRoZSBrZXkuIExldCYjMzk7cyBtYWtlIHN1cmUgdGhleSBhcmUgbm90IHN0YXRpYyBvciBpbmxpbmUgLSBhbmQsIGxvb2tpbmcgaW4gYGZzL250ZnMvbGNuYWxsb2MuY2AgYW5kIGBmcy9udGZzL3J1bmxpc3QuY2AsIHRoZXkgYXJlIG5vdC4gVGhhdCYjMzk7cyBwZXJmZWN0LiBUaGlzIG1ha2VzIHRoZW0gZ29vZCBmb2N1cyBzeW1ib2xzIGZvciBteSBmdXp6aW5nIGNhbXBhaWduLgoKTmV4dCBzdGVwOiBsZXQmIzM5O3Mgc2NvcGUgb3V0IHRoZWlyIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIE5URlMgZmlsZXN5c3RlbS4gV2UgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBjb250ZXh0IHRoZXNlIGZ1bmN0aW9ucyBvcGVyYXRlIGluIHRvIGNyZWF0ZSBlZmZlY3RpdmUgZnV6emluZyBoYXJuZXNzZXMuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvS2NvbmZpZyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcbmZzL250ZnMvS2NvbmZpZy0xNC1cdGJvb2wgXCYjMzQ7TlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFwmIzM0O1xuZnMvbnRmcy9LY29uZmlnOjE1Olx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG5mcy9udGZzL0tjb25maWctMTYtXHRoZWxwXG4tLVxuZnMvbnRmcy9LY29uZmlnPTM1PWNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxuZnMvbnRmcy9LY29uZmlnLTM2LVx0Ym9vbCBcJiMzNDtOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXCYjMzQ7XG5mcy9udGZzL0tjb25maWc6Mzc6XHRkZXBlbmRzIG9uIE5URlNfRlNcbmZzL250ZnMvS2NvbmZpZy0zOC1cdHNlbGVjdCBGU19QT1NJWF9BQ0xcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNjgwNgoJCQkJCQkJb3V0cHV0OiAzMQoJCQkJCQkJdGhvdWdodHM6IDEzCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3Mgc2VlLiBNeSBtaW5kJiMzOTtzIGJ1enppbmcuLi4gSSYjMzk7bSBkaXZpbmcgZGVlcCwgYW5kIEkgbmVlZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBhbnl0aGluZyBmdW5kYW1lbnRhbC4gCgoqKlJldmlld2luZyB0aGUgQ29yZToqKgoKSG9sZCBvbiBhIHNlY29uZC4gQmVmb3JlIEkgZ2V0IHRvbyBmYXIgZG93biB0aGlzIHJhYmJpdCBob2xlLCBJIG5lZWQgdG8gdGFrZSBhIHN0ZXAgYmFjayBhbmQgbWFrZSBhYnNvbHV0ZWx5IHN1cmUgSSYjMzk7dmUgZ290IHRoZSBlc3NlbnRpYWxzIGNvdmVyZWQuIEkgc2hvdWxkIHJlLWV2YWx1YXRlIHRoZSBjb3JlIG9mIHRoZSBmaWxlIHN5c3RlbSBpdHNlbGYuLi4gU3BlY2lmaWNhbGx5LCBsZXQmIzM5O3MgZ28gYmFjayBhbmQgY2hlY2sgYE5URlNfRlNgLiBJdCYjMzk7cyBlYXN5IHRvIGdldCBsb3N0IGluIHRoZSBkZXRhaWxzIGFuZCBmb3JnZXQgdG8gZ3JvdW5kIHlvdXJzZWxmIHdpdGggYSBjb21wcmVoZW5zaXZlIHVuZGVyc3RhbmRpbmcgb2YgdGhlIHByaW1hcnkgY29tcG9uZW50cy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5URlNfRlMmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnLTEtIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xuZnMvbnRmcy9LY29uZmlnLTMtXHR0cmlzdGF0ZSBcJiMzNDtOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcJiMzNDtcbi0tXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcbi0tXG5mcy9udGZzL0tjb25maWctMzQtXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXG5mcy9udGZzL0tjb25maWctMzYtXHRib29sIFwmIzM0O05URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzEyNwoJCQkJCQkJb3V0cHV0OiAzMwoJCQkJCQkJdGhvdWdodHM6IDE4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6CgoqKkFuYWx5emluZyB0aGUgS2NvbmZpZyBGaWxlIC0gSW5pdGlhbCBTY2FuKioKCkFscmlnaHQsIGxldCYjMzk7cyBkaXZlIGludG8gdGhpcyBgZnMvbnRmcy9LY29uZmlnYCBmaWxlLiBJJiMzOTttIGltbWVkaWF0ZWx5IGludGVyZXN0ZWQgaW4gdGhlIHNldHVwIGZvciB0aGUgTlRGUyBmaWxlc3lzdGVtIHdpdGhpbiB0aGUga2VybmVsIGNvbmZpZ3VyYXRpb24uIE15IGluaXRpYWwgYXNzZXNzbWVudCBpcyB1c3VhbGx5IHRvIGxvb2sgZm9yIHRoZSBiYXNpYyBzdHJ1Y3R1cmUuIEkgZXhwZWN0IHRvIHNlZSB0aGUgdXN1YWwgc3VzcGVjdHM6IG9wdGlvbnMsIGRlcGVuZGVuY2llcywgYW5kIGRlZmF1bHQgdmFsdWVzLiBJJiMzOTtsbCB3YW50IHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGtleSBwYXJhbWV0ZXJzIHRoYXQgZGVmaW5lIHdoZXRoZXIgTlRGUyBzdXBwb3J0IGlzIGluY2x1ZGVkLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBBbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgYXJlIGFsd2F5cyBnb29kIHRvIGZsYWcgZWFybHkgYXMgd2VsbC4gTXkgYnJhaW4gaXMgYWxyZWFkeSBzdGFydGluZyB0byBmb3JtdWxhdGUgYW4gaW50ZXJuYWwgbWVudGFsIG1vZGVsIG9mIHRoZSBtb2R1bGUuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTMvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDExOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgICAxOlx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XG4gICAyOlx0Y29uZmlnIE5URlNfRlNcbiAgIDM6XHRcdHRyaXN0YXRlIFwmIzM0O05URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFwmIzM0O1xuICAgNDpcdFx0c2VsZWN0IE5MU1xuICAgNTpcdFx0c2VsZWN0IEZTX0lPTUFQXG4gICA2Olx0XHRoZWxwXG4gICA3Olx0XHQgIE5URlMgaXMgdGhlIGZpbGUgc3lzdGVtIG9mIE1pY3Jvc29mdCBXaW5kb3dzIE5ULCAyMDAwLCBYUCBhbmQgMjAwMy5cbiAgIDg6XHRcdCAgVGhpcyBhbGxvd3MgeW91IHRvIG1vdW50IGRldmljZXMgZm9ybWF0dGVkIHdpdGggdGhlIG50ZnMgZmlsZSBzeXN0ZW0uXG4gICA5Olx0XG4gIDEwOlx0XHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxuICAxMTpcdFx0ICBudGZzLlxuICAxMjpcdFxuICAxMzpcdGNvbmZpZyBOVEZTX0RFQlVHXG4gIDE0Olx0XHRib29sIFwmIzM0O05URlMgZGVidWdnaW5nIHN1cHBvcnRcJiMzNDtcbiAgMTU6XHRcdGRlcGVuZHMgb24gTlRGU19GU1xuICAxNjpcdFx0aGVscFxuICAxNzpcdFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTlRGUyBmaWxlIHN5c3RlbSwgc2F5XG4gIDE4Olx0XHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3MgdG8gYmVcbiAgMTk6XHRcdCAgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0b1xuICAyMDpcdFx0ICBiZSB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLiAgTm90ZSB0aGF0IGRlYnVnZ2luZyBtZXNzYWdlcyBhcmVcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNzYxOQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDQ5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IGludGVycHJldGF0aW9uIG9mIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlLCBwcmVzZW50ZWQgaW4gdGhlIGZpcnN0IHBlcnNvbjoKCioqTmF2aWdhdGluZyB0aGUgTlRGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKgoKUmlnaHQsIGxldCBtZSBzZWUuLi4gSSYjMzk7bSBsb29raW5nIGF0IHRoZSBOVEZTIGZpbGVzeXN0ZW0gY29uZmlndXJhdGlvbi4gSSBzZWUgdGhhdCBgTlRGU19GU2AgaGFzIGBzZWxlY3QgTkxTYCBhbmQgYHNlbGVjdCBGU19JT01BUGAuIEhtbSwgdGhhdCYjMzk7cyB3aGF0IEkmIzM5O2QgZXhwZWN0LiBCdXQgSSYjMzk7bSBtaXNzaW5nIHNvbWV0aGluZy4uLiBpdCBkb2VzbiYjMzk7dCBoYXZlIGEgYGRlcGVuZHMgb25gIGNsYXVzZSwgd2hpY2ggc2VlbXMgYSBiaXQgb2RkLiBJJiMzOTttIHVzZWQgdG8gc2VlaW5nIGRlcGVuZGVuY2llcyBoZXJlLgoKV2FpdCBhIG1pbnV0ZSwgd2hhdCBhYm91dCB0aGUgYE5URlNfUldgIHN5bWJvbD8gRG9lcyB0aGF0IGNvbWUgaW50byBwbGF5PyBJIG5lZWQgdG8gZGlnIGRlZXBlci4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZWFkLXdyaXRlIGZ1bmN0aW9uYWxpdHkuIExldCYjMzk7cyBzZWUgd2hhdCB0aGUgZG9jdW1lbnRhdGlvbiBzYXlzIGFib3V0IGBOVEZTX1JXYC4gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGF0IG1pc3NpbmcgZGVwZW5kZW5jeSBhbmQgaG93IHRoaW5ncyBhcmUgYWN0dWFsbHkgdGllZCB0b2dldGhlci4gVGltZSB0byBkbyBzb21lIG1vcmUgcmVhZGluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5yZWFkLWZpbGU8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0ZpbGUmIzM0OzogJiMzNDtmcy9udGZzL0tjb25maWcmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAyMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgIDIxOlx0XHQgIGRpc2FibGVkIGJ5IGRlZmF1bHQuICBUbyBlbmFibGUgdGhlbSwgc3VwcGx5IHRoZSBvcHRpb24gZGVidWdfbXNncz0xXG4gIDIyOlx0XHQgIGF0IHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lIHdoZW4gYm9vdGluZyB0aGUga2VybmVsIG9yIGFzIGFuIG9wdGlvblxuICAyMzpcdFx0ICB0byBpbnNtb2Qgd2hlbiBsb2FkaW5nIHRoZSBudGZzIG1vZHVsZS4gIE9uY2UgdGhlIGRyaXZlciBpcyBhY3RpdmUsXG4gIDI0Olx0XHQgIHlvdSBjYW4gZW5hYmxlIGRlYnVnZ2luZyBtZXNzYWdlcyBieSBkb2luZyAoYXMgcm9vdCk6XG4gIDI1Olx0XHQgIGVjaG8gMSBcdTAwM2UgL3Byb2Mvc3lzL2ZzL250ZnMtZGVidWdcbiAgMjY6XHRcdCAgUmVwbGFjaW5nIHRoZSBcJiMzNDsxXCYjMzQ7IHdpdGggXCYjMzQ7MFwmIzM0OyB3b3VsZCBkaXNhYmxlIGRlYnVnIG1lc3NhZ2VzLlxuICAyNzpcdFxuICAyODpcdFx0ICBJZiB5b3UgbGVhdmUgZGVidWdnaW5nIG1lc3NhZ2VzIGRpc2FibGVkLCB0aGlzIHJlc3VsdHMgaW4gbGl0dGxlXG4gIDI5Olx0XHQgIG92ZXJoZWFkLCBidXQgZW5hYmxpbmcgZGVidWcgbWVzc2FnZXMgcmVzdWx0cyBpbiB2ZXJ5IHNpZ25pZmljYW50XG4gIDMwOlx0XHQgIHNsb3dkb3duIG9mIHRoZSBzeXN0ZW0uXG4gIDMxOlx0XG4gIDMyOlx0XHQgIFdoZW4gcmVwb3J0aW5nIGJ1Z3MsIHBsZWFzZSB0cnkgdG8gaGF2ZSBhdmFpbGFibGUgYSBmdWxsIGR1bXAgb2ZcbiAgMzM6XHRcdCAgZGVidWdnaW5nIG1lc3NhZ2VzIHdoaWxlIHRoZSBtaXNiZWhhdmlvdXIgd2FzIG9jY3VycmluZy5cbiAgMzQ6XHRcbiAgMzU6XHRjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcbiAgMzY6XHRcdGJvb2wgXCYjMzQ7TlRGUyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0c1wmIzM0O1xuICAzNzpcdFx0ZGVwZW5kcyBvbiBOVEZTX0ZTXG4gIDM4Olx0XHRzZWxlY3QgRlNfUE9TSVhfQUNMXG4gIDM5Olx0XHRoZWxwXG4gIDQwOlx0XHQgIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBzdXBwb3J0IGFkZGl0aW9uYWwgYWNjZXNzIHJpZ2h0c1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE2LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxMTowOTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA4MjM3CgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgSSYjMzk7bSByZWFkeS4gTGV0JiMzOTtzIHNlZSB3aGF0IHdlJiMzOTt2ZSBnb3QuIEhlcmUmIzM5O3MgYSBzdW1tYXJ5IGZyb20gbXkgcGVyc3BlY3RpdmU6CgoqKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgQW50aWNpcGF0aW9uKioKClJpZ2h0LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuIEkmIzM5O20gZ29pbmcgdG8gcmVhZCBmdXJ0aGVyIGFuZCBhbmFseXplLiBJJiMzOTtsbCBuZWVkIHRvIGtlZXAgYW4gb3BlbiBtaW5kIGFuZCBiZSByZWFkeSB0byBkZWx2ZSBpbnRvIHRoZSBkZXRhaWxzLiBJJiMzOTttIGxvb2tpbmcgZm9yd2FyZCB0byB0aGUgY2hhbGxlbmdlIG9mIGFuYWx5emluZyBhbmQgc3VtbWFyaXppbmcgdGhlIGNvbmNlcHRzIGF0IGhhbmQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDExOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZnMvbnRmcy9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogNDEsCiAgJiMzNDtMaW5lQ291bnQmIzM0OzogMjAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICA0MTpcdFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cbiAgNDI6XHRcbiAgNDM6XHRcdCAgVGhpcyBvcHRpb24gZW5hYmxlcyBBQ0wgc3VwcG9ydCBmb3IgbnRmcywgcHJvdmlkaW5nIGZ1bmN0aW9uYWwgcGFyaXR5XG4gIDQ0Olx0XHQgIHdpdGggbnRmczMgZHJpdmllci5cbiAgNDU6XHRcbiAgNDY6XHRcdCAgTk9URTogdGhpcyBpcyBsaW51eCBvbmx5IGZlYXR1cmUuIFdpbmRvd3Mgd2lsbCBpZ25vcmUgdGhlc2UgQUNMcy5cbiAgNDc6XHRcbiAgNDg6XHRcdCAgSWYgeW91IGRvbiYjMzk7dCBrbm93IHdoYXQgQWNjZXNzIENvbnRyb2wgTGlzdHMgYXJlLCBzYXkgTi5cbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODQ5NgoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDE3CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZToKCioqVHJvdWJsZXNob290aW5nIGEgTWlzc2luZyBEcml2ZXIqKgoKT2theSwgaG9sZCBvbi4gSSB3YXMgZXhwZWN0aW5nIGBOVEZTX1JXYCB0byBiZSBwcmVzZW50LCBidXQgaXQmIzM5O3Mgbm90IHNob3dpbmcgdXAgYXMgaXQgc2hvdWxkLiBUaGlzIGlzbiYjMzk7dCBpZGVhbCwgYW5kIGl0IHRocm93cyBhIHdyZW5jaCBpbiBteSBleHBlY3RlZCB3b3JrZmxvdy4gTGV0JiMzOTtzIG5vdCBqdW1wIHRvIGNvbmNsdXNpb25zIHlldCwgYnV0IEkgbmVlZCB0byBjb25maXJtIGl0cyBhYnNlbmNlIGRlZmluaXRpdmVseS4gSSYjMzk7bSBnb2luZyB0byBoYXZlIHRvIGRpdmUgZGVlcGVyIGFuZCB2ZXJpZnkgdGhhdCB0aGUgZHJpdmVyIGlzbiYjMzk7dCBqdXN0IGhpZGRlbiBvciBtaXNjb25maWd1cmVkLCBhbmQgY29uZmlybSBpdCYjMzk7cyB0cnVseSBub3QgdGhlcmUuIFNvbWV0aGluZyBpc24mIzM5O3QgcXVpdGUgcmlnaHQuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDExOjA5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5FcnJvcjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm5vIG1hdGNoZXM8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7TlRGU19SVyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2ZzL250ZnMvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O2Vycm9yJiMzNDs6ICYjMzQ7bm8gbWF0Y2hlcyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODY4NQoJCQkJCQkJb3V0cHV0OiAzMgoJCQkJCQkJdGhvdWdodHM6IDMyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipJbnZlc3RpZ2F0aW5nIHRoZSBOVEZTIERyaXZlciBSZW1vdmFsKioKClJpZ2h0LCBzbyBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgTlRGU19SV2AgYmVpbmcgZHJvcHBlZCBmcm9tIHRoZSBrZXJuZWwgYXJvdW5kIDIwMjQsIHdhc24mIzM5O3QgaXQ/IFRpbWUgZmxpZXMuLi4gb3IgbWF5YmUgSSYjMzk7bSBtaXNyZW1lbWJlcmluZy4gTGV0JiMzOTtzIG5vdCByZWx5IG9uIG1lbW9yeSwgdGhvdWdoLiBMZXQmIzM5O3MgYmUgcHJlY2lzZS4gV2hlcmUgd291bGQgSSBjb25maXJtIHRoYXQ/IFRoZSBvYnZpb3VzIHBsYWNlIHRvIHN0YXJ0IGlzIHRoZSBmaWxlc3lzdGVtIGJ1aWxkIGNvbmZpZ3VyYXRpb24uIElmIGl0JiMzOTtzIGdvbmUsIHRoZSBtYWtlZmlsZXMgd2lsbCB0ZWxsIG1lIHNvLiBUaGVyZWZvcmUgSSB3aWxsIGdvIHRvIGBmcy9udGZzL01ha2VmaWxlYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWFnaWMgaGFwcGVucy4gQSBxdWljayBwZWVrIHRoZXJlIHdpbGwgZWl0aGVyIGNvbmZpcm0gbXkgc3VzcGljaW9uIGFib3V0IHRoZSByZW1vdmFsIG9yLCBpZiBpdCYjMzk7cyBzdGlsbCB0aGVyZSwgaWxsdW1pbmF0ZSB0aGUgY29uZGl0aW9ucyB1bmRlciB3aGljaCBpdCYjMzk7cyBjb21waWxlZC4gVGhhdCBzaG91bGQgdGVsbCBtZSBldmVyeXRoaW5nIEkgbmVlZCB0byBrbm93IGFib3V0IHRoZSBjdXJyZW50IHN0YXRlIG9mIE5URlMgcmVhZC13cml0ZSBzdXBwb3J0IHdpdGhpbiB0aGUga2VybmVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIxLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yNyAxMTowOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O2ZzL250ZnMvTWFrZWZpbGUmIzM0OywKICAmIzM0O0ZpcnN0TGluZSYjMzQ7OiAxLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgIDE6XHQjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wXG4gICAyOlx0XG4gICAzOlx0b2JqLSQoQ09ORklHX05URlNfRlMpICYjNDM7PSBudGZzLm9cbiAgIDQ6XHRcbiAgIDU6XHRudGZzLXkgOj0gYW9wcy5vIGF0dHJpYi5vIGNvbGxhdGUubyBkaXIubyBmaWxlLm8gaW5kZXgubyBpbm9kZS5vIFxcXG4gICA2Olx0XHQgIG1mdC5vIG1zdC5vIG5hbWVpLm8gcnVubGlzdC5vIHN1cGVyLm8gdW5pc3RyLm8gYXR0cmxpc3QubyBlYS5vIFxcXG4gICA3Olx0XHQgIHVwY2FzZS5vIGJpdG1hcC5vIGxjbmFsbG9jLm8gbG9nZmlsZS5vIHJlcGFyc2UubyBjb21wcmVzcy5vIFxcXG4gICA4Olx0XHQgIGlvbWFwLm8gZGVidWcubyBzeXNjdGwubyBvYmplY3RfaWQubyBiZGV2LWlvLm9cbiAgIDk6XHRcbiAgMTA6XHRjY2ZsYWdzLSQoQ09ORklHX05URlNfREVCVUcpICYjNDM7PSAtRERFQlVHXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjIvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI3IDExOjA5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDkxNjQKCQkJCQkJCW91dHB1dDogMTE3CgkJCQkJCQl0aG91Z2h0czogMTcxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKk15IEFzc2Vzc21lbnQgb2YgdGhlIE5URlMgRmlsZXN5c3RlbSBQYXRjaCoqCgpBbHJpZ2h0LCBteSBhbmFseXNpcyBwb2ludHMgdG8gYSBzdHJhaWdodGZvcndhcmQgY29uZmlndXJhdGlvbiBoZXJlOiBgTlRGU19GU2AgaXMgYWxsIHdlIHRydWx5IG5lZWQuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgc29tZSBzcGVjaWZpYyBmaWxlcywgbGlrZSBgZnMvbnRmcy9sY25hbGxvYy5jYCBhbmQgYGZzL250ZnMvcnVubGlzdC5jYCwgYXMgcGFydCBvZiB0aGUgZnV6emluZyBzY29wZSwgd2hpY2ggbGVkIG1lIHRvIHRoZSBjb25jbHVzaW9uIHRoYXQgYG50ZnMteWAgbWF5IGJlIG5lY2Vzc2FyeS4gSG93ZXZlciwgYWZ0ZXIgZnVydGhlciByZWZsZWN0aW9uLCBgTlRGU19GU2AgYWxvbmUgc2hvdWxkIGNvdmVyIGV2ZXJ5dGhpbmcgd2Ugd2FudC4KClRvIHJlY2FwIGFuZCBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGlzIHdoYXQgSSYjMzk7dmUgZGV0ZXJtaW5lZDogVGhpcyBwYXRjaCBpcyBkZWZpbml0ZWx5IHdvcnRoIGZ1enppbmc7IEkmIzM5O20gc2V0dGluZyBgV29ydGhGdXp6aW5nYCB0byBgdHJ1ZWAuIFRoZSBtb3N0IGNyaXRpY2FsIHN5bWJvbHMgdG8gdGFyZ2V0IGZvciBmdXp6aW5nIGFyZSBgbnRmc19jbHVzdGVyX2FsbG9jYCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYC4gSSB3aWxsIGJlIGVuYWJsaW5nIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBgTlRGU19GU2AuIE15IHJlYXNvbmluZyBpcyB0aGlzOiB0aGUgcGF0Y2ggaW50cm9kdWNlcyBjcnVjaWFsIGJvdW5kcyBjaGVja3Mgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLCBzcGVjaWZpY2FsbHkgd2l0aGluIHRob3NlIHR3byBmdW5jdGlvbnMuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgZnVuZGFtZW50YWxseSBpbnZvbHZlZCBpbiBjb3JlIE5URlMgb3BlcmF0aW9ucyDigJMgYXR0cmlidXRlIGV4cGFuc2lvbiBhbmQgcnVubGlzdCBkZWNvbXByZXNzaW9uLiBUaGlzIHJlcHJlc2VudHMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGRpcmVjdGx5IGltcGFjdHMgaG93IHRoZSBmaWxlc3lzdGVtIGhhbmRsZXMgY3JpdGljYWwgZGF0YSBzdHJ1Y3R1cmVzIGFuZCBvcGVyYXRpb25zLCBtYWtpbmcgaXQgYW4gZXhjZWxsZW50IHRhcmdldCBmb3IgZnV6emluZy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjcgMTE6MDk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2NsdXN0ZXJfYWxsb2MmIzM0OywKICAgICYjMzQ7bnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tzIHRvIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGFuZCBgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NgIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgY29yZSBOVEZTIG9wZXJhdGlvbnMgbGlrZSBhdHRyaWJ1dGUgZXhwYW5zaW9uIGFuZCBydW5saXN0IGRlY29tcHJlc3Npb24sIHNvIHRoZXkgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05URlNfRlMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtudGZzX2NsdXN0ZXJfYWxsb2MmIzM0OywKICAgICYjMzQ7bnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tzIHRvIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGFuZCBgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NgIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgY29yZSBOVEZTIG9wZXJhdGlvbnMgbGlrZSBhdHRyaWJ1dGUgZXhwYW5zaW9uIGFuZCBydW5saXN0IGRlY29tcHJlc3Npb24sIHNvIHRoZXkgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTowNS40MjkxNDMyMzFaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjozOTExMzk5MzU1NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJOVEZTX0ZTXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwibnRmc19jbHVzdGVyX2FsbG9jXCIsXG4gICAgXCJudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIGFkZHMgYm91bmRzIGNoZWNrcyB0byBgbnRmc19jbHVzdGVyX2FsbG9jYCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYCBpbiB0aGUgTlRGUyBmaWxlc3lzdGVtIGRyaXZlci4gVGhlc2UgZnVuY3Rpb25zIGFyZSByZWFjaGFibGUgZHVyaW5nIGNvcmUgTlRGUyBvcGVyYXRpb25zIGxpa2UgYXR0cmlidXRlIGV4cGFuc2lvbiBhbmQgcnVubGlzdCBkZWNvbXByZXNzaW9uLCBzbyB0aGV5IGFyZSBmdW5jdGlvbmFsIGNoYW5nZXMgdGhhdCBzaG91bGQgYmUgZnV6emVkLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTowNS40MjkxNDk1MTFaIiwiU2VxIjoxLCJOZXN0aW5nIjoxLCJUeXBlIjoiYWN0aW9uIiwiTmFtZSI6InJlYWQtcGF0Y2gtZGlmZiIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjYwNzI3Njk0NCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDBhNTc3NmZkYzcxZWZiYjg2NTY2YmJkYmYxNDNhYzU5NTJjNGQzYTdcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIE1vbiBKdWwgMjcgMTE6MDk6MDQgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9sY25hbGxvYy5jIGIvZnMvbnRmcy9sY25hbGxvYy5jXFxuaW5kZXggODM1YTA0MTAyM2EyYWMuLmFhMmUwMTdhNDM4NDRiIDEwMDY0NFxcbi0tLSBhL2ZzL250ZnMvbGNuYWxsb2MuY1xcbisrKyBiL2ZzL250ZnMvbGNuYWxsb2MuY1xcbkBAIC0yOTgsNyArMjk4LDEyIEBAIHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKm50ZnNfY2x1c3Rlcl9hbGxvYyhzdHJ1Y3QgbnRmc192b2x1bWUgKnZvbCwgY29uc3QgczY0IHN0XFxuIFxcdGNsdXN0ZXJzID0gY291bnQ7XFxuIFxcdHJscG9zID0gcmxzaXplID0gMDtcXG4gXFx0bWFwcGluZyA9IGxjbmJtcF92aS1cXHUwMDNlaV9tYXBwaW5nO1xcbi1cXHRpX3NpemUgPSBpX3NpemVfcmVhZChsY25ibXBfdmkpO1xcbitcXHQvKlxcbitcXHQgKiBsY25fZW1wdHlfYml0c19wZXJfcGFnZSBpcyBzaXplZCBmcm9tIG5yX2NsdXN0ZXJzLCBidXQgJEJpdG1hcCBjYW5cXG4rXFx0ICogY292ZXIgbW9yZSBjbHVzdGVycyB0aGFuIHRoYXQ7IGJvdW5kIHRoZSBzY2FuIGJ5IHRoZSBhcnJheS5cXG4rXFx0ICovXFxuK1xcdGlfc2l6ZSA9IG1pbl90KHM2NCwgaV9zaXplX3JlYWQobGNuYm1wX3ZpKSxcXG4rXFx0XFx0ICAgICAgICgoczY0KXZvbC1cXHUwMDNlbnJfY2x1c3RlcnMgKyA3KSBcXHUwMDNlXFx1MDAzZSAzKTtcXG4gXFx0d2hpbGUgKDEpIHtcXG4gXFx0XFx0bnRmc19kZWJ1ZyhcXFwiU3RhcnQgb2Ygb3V0ZXIgd2hpbGUgbG9vcDogZG9uZV96b25lcyAweCV4LCBzZWFyY2hfem9uZSAlaSwgcGFzcyAlaSwgem9uZV9zdGFydCAweCVsbHgsIHpvbmVfZW5kIDB4JWxseCwgYm1wX2luaXRpYWxfcG9zIDB4JWxseCwgYm1wX3BvcyAweCVsbHgsIHJscG9zICVpLCBybHNpemUgJWkuXFxcIixcXG4gXFx0XFx0XFx0XFx0ZG9uZV96b25lcywgc2VhcmNoX3pvbmUsIHBhc3MsXFxuZGlmZiAtLWdpdCBhL2ZzL250ZnMvcnVubGlzdC5jIGIvZnMvbnRmcy9ydW5saXN0LmNcXG5pbmRleCBjYmI2NTc2Y2Y3MjU4Mi4uNzRmOTRiNGI2YzViYmEgMTAwNjQ0XFxuLS0tIGEvZnMvbnRmcy9ydW5saXN0LmNcXG4rKysgYi9mcy9udGZzL3J1bmxpc3QuY1xcbkBAIC04ODAsNiArODgwLDEzIEBAIHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKm50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKGNvbnN0IHN0cnVjdCBudGZzX3ZvbHVtZSAqXFxuIFxcdFxcdFxcdFxcdFxcdG50ZnNfZXJyb3Iodm9sLVxcdTAwM2VzYiwgXFxcImxjbiA9PSAtMVxcXCIpO1xcbiBcXHRcXHRcXHR9XFxuICNlbmRpZlxcbitcXHRcXHRcXHQvKiBDaGVjayBsY24gaXMgd2l0aGluIHRoZSB2b2x1bWUuICovXFxuK1xcdFxcdFxcdGlmICh1bmxpa2VseShsY24gXFx1MDAzZT0gKHM2NCl2b2wtXFx1MDAzZW5yX2NsdXN0ZXJzKSkge1xcbitcXHRcXHRcXHRcXHRudGZzX2Vycm9yKHZvbC1cXHUwMDNlc2IsXFxuK1xcdFxcdFxcdFxcdFxcdFxcdFxcXCJMQ04gXFx1MDAzZT0gbnJfY2x1c3RlcnMgaW4gbWFwcGluZyBwYWlycyBhcnJheS5cXFwiKTtcXG4rXFx0XFx0XFx0XFx0Z290byBlcnJfb3V0O1xcbitcXHRcXHRcXHR9XFxuK1xcbiBcXHRcXHRcXHQvKiBDaGVjayBsY24gaXMgbm90IGJlbG93IC0xLiAqL1xcbiBcXHRcXHRcXHRpZiAodW5saWtlbHkobGNuIFxcdTAwM2MgLTEpKSB7XFxuIFxcdFxcdFxcdFxcdG50ZnNfZXJyb3Iodm9sLVxcdTAwM2VzYiwgXFxcIkludmFsaWQgczY0IFxcdTAwM2MgLTEgaW4gbWFwcGluZyBwYWlycyBhcnJheS5cXFwiKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6MDYuMDM3MjEwMjc1WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6Mzg1MDU5MTgwMTEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfY2x1c3Rlcl9hbGxvY1wiLFxuICAgIFwibnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja3MgdG8gYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBjb3JlIE5URlMgb3BlcmF0aW9ucyBsaWtlIGF0dHJpYnV0ZSBleHBhbnNpb24gYW5kIHJ1bmxpc3QgZGVjb21wcmVzc2lvbiwgc28gdGhleSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgMGE1Nzc2ZmRjNzFlZmJiODY1NjZiYmRiZjE0M2FjNTk1MmM0ZDNhN1xuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBNb24gSnVsIDI3IDExOjA5OjA0IDIwMjYgKzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvZnMvbnRmcy9sY25hbGxvYy5jIGIvZnMvbnRmcy9sY25hbGxvYy5jXG5pbmRleCA4MzVhMDQxMDIzYTJhYy4uYWEyZTAxN2E0Mzg0NGIgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL2xjbmFsbG9jLmNcbisrKyBiL2ZzL250ZnMvbGNuYWxsb2MuY1xuQEAgLTI5OCw3ICsyOTgsMTIgQEAgc3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19jbHVzdGVyX2FsbG9jKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLCBjb25zdCBzNjQgc3RcbiBcdGNsdXN0ZXJzID0gY291bnQ7XG4gXHRybHBvcyA9IHJsc2l6ZSA9IDA7XG4gXHRtYXBwaW5nID0gbGNuYm1wX3ZpLVx1MDAzZWlfbWFwcGluZztcbi1cdGlfc2l6ZSA9IGlfc2l6ZV9yZWFkKGxjbmJtcF92aSk7XG4rXHQvKlxuK1x0ICogbGNuX2VtcHR5X2JpdHNfcGVyX3BhZ2UgaXMgc2l6ZWQgZnJvbSBucl9jbHVzdGVycywgYnV0ICRCaXRtYXAgY2FuXG4rXHQgKiBjb3ZlciBtb3JlIGNsdXN0ZXJzIHRoYW4gdGhhdDsgYm91bmQgdGhlIHNjYW4gYnkgdGhlIGFycmF5LlxuK1x0ICovXG4rXHRpX3NpemUgPSBtaW5fdChzNjQsIGlfc2l6ZV9yZWFkKGxjbmJtcF92aSksXG4rXHRcdCAgICAgICAoKHM2NCl2b2wtXHUwMDNlbnJfY2x1c3RlcnMgKyA3KSBcdTAwM2VcdTAwM2UgMyk7XG4gXHR3aGlsZSAoMSkge1xuIFx0XHRudGZzX2RlYnVnKFwiU3RhcnQgb2Ygb3V0ZXIgd2hpbGUgbG9vcDogZG9uZV96b25lcyAweCV4LCBzZWFyY2hfem9uZSAlaSwgcGFzcyAlaSwgem9uZV9zdGFydCAweCVsbHgsIHpvbmVfZW5kIDB4JWxseCwgYm1wX2luaXRpYWxfcG9zIDB4JWxseCwgYm1wX3BvcyAweCVsbHgsIHJscG9zICVpLCBybHNpemUgJWkuXCIsXG4gXHRcdFx0XHRkb25lX3pvbmVzLCBzZWFyY2hfem9uZSwgcGFzcyxcbmRpZmYgLS1naXQgYS9mcy9udGZzL3J1bmxpc3QuYyBiL2ZzL250ZnMvcnVubGlzdC5jXG5pbmRleCBjYmI2NTc2Y2Y3MjU4Mi4uNzRmOTRiNGI2YzViYmEgMTAwNjQ0XG4tLS0gYS9mcy9udGZzL3J1bmxpc3QuY1xuKysrIGIvZnMvbnRmcy9ydW5saXN0LmNcbkBAIC04ODAsNiArODgwLDEzIEBAIHN0cnVjdCBydW5saXN0X2VsZW1lbnQgKm50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKGNvbnN0IHN0cnVjdCBudGZzX3ZvbHVtZSAqXG4gXHRcdFx0XHRcdG50ZnNfZXJyb3Iodm9sLVx1MDAzZXNiLCBcImxjbiA9PSAtMVwiKTtcbiBcdFx0XHR9XG4gI2VuZGlmXG4rXHRcdFx0LyogQ2hlY2sgbGNuIGlzIHdpdGhpbiB0aGUgdm9sdW1lLiAqL1xuK1x0XHRcdGlmICh1bmxpa2VseShsY24gXHUwMDNlPSAoczY0KXZvbC1cdTAwM2Vucl9jbHVzdGVycykpIHtcbitcdFx0XHRcdG50ZnNfZXJyb3Iodm9sLVx1MDAzZXNiLFxuK1x0XHRcdFx0XHRcdFwiTENOIFx1MDAzZT0gbnJfY2x1c3RlcnMgaW4gbWFwcGluZyBwYWlycyBhcnJheS5cIik7XG4rXHRcdFx0XHRnb3RvIGVycl9vdXQ7XG4rXHRcdFx0fVxuK1xuIFx0XHRcdC8qIENoZWNrIGxjbiBpcyBub3QgYmVsb3cgLTEuICovXG4gXHRcdFx0aWYgKHVubGlrZWx5KGxjbiBcdTAwM2MgLTEpKSB7XG4gXHRcdFx0XHRudGZzX2Vycm9yKHZvbC1cdTAwM2VzYiwgXCJJbnZhbGlkIHM2NCBcdTAwM2MgLTEgaW4gbWFwcGluZyBwYWlycyBhcnJheS5cIik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTowNi4wMzcyMTE4MjRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozNzk0MDIxMDUyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgTlRGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgYSBwYXRjaCB0aGF0IHRvdWNoZXMgYGZzL250ZnMvbGNuYWxsb2MuY2AgYW5kIGBmcy9udGZzL3J1bmxpc3QuY2AuIEludGVyZXN0aW5nLiBTcGVjaWZpY2FsbHksIGl0IHNlZW1zIHRvIGFkZCBib3VuZHMgY2hlY2tzLiBHb29kLCBnb29kLCB0aGF0J3Mgd2hhdCBJIHdhbnQgdG8gc2VlLiBUaGlzIGltcGxpZXMgdGhleSdyZSBib2xzdGVyaW5nIHRoZSBOVEZTIGZpbGVzeXN0ZW0ncyByb2J1c3RuZXNzLCBzcGVjaWZpY2FsbHkgYXJvdW5kIGNsdXN0ZXIgYWxsb2NhdGlvbiBhbmQgcnVubGlzdCBkZWNvbXByZXNzaW9uLiBgbnRmc19jbHVzdGVyX2FsbG9jYCBpbiBgbGNuYWxsb2MuY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgaW4gYHJ1bmxpc3QuY2AuLi4gcmlnaHQsIHRob3NlIGFyZSBrZXkgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCB0aGUgZnVuZGFtZW50YWwgbWVjaGFuaWNzIG9mIGhvdyBkYXRhIGlzIHN0b3JlZCBhbmQgcmV0cmlldmVkIG9uIGFuIE5URlMgdm9sdW1lLiBUaGlzIHN1Z2dlc3RzIGEgcG90ZW50aWFsIHZ1bG5lcmFiaWxpdHksIG9yIHBlcmhhcHMgdGhleSdyZSBwcm9hY3RpdmVseSBoYXJkZW5pbmcgYWdhaW5zdCBhIHRoZW9yZXRpY2FsIGlzc3VlLiBHb3R0YSBjaGVjayB0aGUgY29uZmlnIG9wdGlvbnMgZm9yIE5URlMgbm93IHRvIHNlZSBob3cgdGhpcyBpbXBhY3RzIG91ciBzcGVjaWZpYyB1c2UgY2FzZSBhbmQgd2hhdCBkZWZhdWx0cyB3ZSdyZSBydW5uaW5nIHdpdGguIEkgd2FudCB0byBzZWUgd2hhdCB0aGlzIHRyYW5zbGF0ZXMgdG8sIGluIHByYWN0aWNlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyNTE0LCJPdXRwdXRUb2tlbnMiOjMxLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTA4LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6MDkuODMxMjM1MTU2WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MjkzMTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xcbmZzL250ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcXG4tLVxcbmZzL250ZnMvS2NvbmZpZy0zNC1cXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuZnMvbnRmcy9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjA5Ljg5MDUzNDcyNFoiLCJTZXEiOjUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM2NDIyNzQzNTksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBOVEZTIEZpbGVzeXN0ZW0gSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyB0aGUgY29uZmlndXJhdGlvbiBpcyBzZXQgdG8gYE5URlNfRlNgLCB3aGljaCBpbW1lZGlhdGVseSBmbGFncyBteSBhdHRlbnRpb24uIEkga25vdyB0aGVyZSdzIGFsc28gYE5URlMzX0ZTYCBpbiB0aGUga2VybmVsIG5vdywgYnV0IHRoaXMgcGF0Y2ggaXMgc3BlY2lmaWNhbGx5IHRhcmdldGluZyBgZnMvbnRmcy9gLCB3aGljaCBJIHJlY2FsbCBpcyB0aGUgb2xkZXIgTlRGUyBkcml2ZXIuIEp1c3QgdG8gYmUgYWJzb2x1dGVseSBzdXJlLCBJJ2xsIHF1aWNrbHkgdmVyaWZ5IHRoYXQgdGhlIG9sZCBkcml2ZXIgaXMgc3RpbGwgcHJlc2VudCBpbiB0aGUga2VybmVsLiAqWWVzKiwgaXQgaXMsIGFzIGV4cGVjdGVkLiBOb3cgdGhhdCBJJ3ZlIHJlLWVzdGFibGlzaGVkIHRoZSBjb250ZXh0IG9mIHRoZSBvbGRlciBpbXBsZW1lbnRhdGlvbiwgSSBuZWVkIHRvIGZvY3VzIG9uIHRoaXMgcGF0Y2guIExldCdzIHN0YXJ0IGJ5IGxvb2tpbmcgY2xvc2VseSBhdCB0aGUgYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgZnVuY3Rpb25zLCB3aGljaCBhcmUgdGhlIGtleSBhcmVhcyBmb3IgdGhpcyBwYXRjaC5cblxuXG4iLCJJbnB1dFRva2VucyI6MzAwOCwiT3V0cHV0VG9rZW5zIjo2NSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEwNCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToxMy41MzI4MTExMjJaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTk3Nzc1OTcsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibnRmc19jbHVzdGVyX2FsbG9jXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvYXR0cmliLmM9MTkxMT1pbnQgbnRmc19hdHRyX21ha2Vfbm9uX3Jlc2lkZW50KHN0cnVjdCBudGZzX2lub2RlICpuaSwgY29uc3QgdTMyIGRhdGFfc2l6ZSlcXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtMTk5OS1cXHRcXHQvKiBTdGFydCBieSBhbGxvY2F0aW5nIGNsdXN0ZXJzIHRvIGhvbGQgdGhlIGF0dHJpYnV0ZSB2YWx1ZS4gKi9cXG5mcy9udGZzL2F0dHJpYi5jOjIwMDA6XFx0XFx0cmwgPSBudGZzX2NsdXN0ZXJfYWxsb2Modm9sLCAwLFxcbmZzL250ZnMvYXR0cmliLmMtMjAwMS1cXHRcXHRcXHRcXHRudGZzX2J5dGVzX3RvX2NsdXN0ZXIodm9sLCBuZXdfc2l6ZSksXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jPTQzMzI9c3RhdGljIGludCBudGZzX25vbl9yZXNpZGVudF9hdHRyX2V4cGFuZChzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIGNvbnN0IHM2NCBuZXdzaXplLFxcbi0tXFxuZnMvbnRmcy9hdHRyaWIuYy00NDc1LVxcbmZzL250ZnMvYXR0cmliLmM6NDQ3NjpcXHRcXHRcXHRybCA9IG50ZnNfY2x1c3Rlcl9hbGxvYyh2b2wsXFxuZnMvbnRmcy9hdHRyaWIuYy00NDc3LVxcdFxcdFxcdFxcdFxcdG50ZnNfYnl0ZXNfdG9fY2x1c3Rlcih2b2wsIG5pLVxcdTAwM2VhbGxvY2F0ZWRfc2l6ZSksXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jPTQ5NzM9aW50IG50ZnNfYXR0cl9tYXBfY2x1c3RlcihzdHJ1Y3QgbnRmc19pbm9kZSAqbmksIHM2NCB2Y25fc3RhcnQsIHM2NCAqbGNuX3N0YXJ0LFxcbi0tXFxuZnMvbnRmcy9hdHRyaWIuYy01MDY1LVxcbmZzL250ZnMvYXR0cmliLmM6NTA2NjpcXHRybGMgPSBudGZzX2NsdXN0ZXJfYWxsb2Modm9sLCB2Y24sIGNsdV9jb3VudCwgbGNuX3NlZWtfZnJvbSwgREFUQV9aT05FLFxcbmZzL250ZnMvYXR0cmliLmMtNTA2Ny1cXHRcXHRcXHRmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XFxuLS1cXG5mcy9udGZzL2NvbXByZXNzLmM9MTI3ND1zdGF0aWMgaW50IG50ZnNfd3JpdGVfY2Ioc3RydWN0IG50ZnNfaW5vZGUgKm5pLCBsb2ZmX3QgcG9zLCBzdHJ1Y3QgcGFnZSAqKnBhZ2VzLFxcbi0tXFxuZnMvbnRmcy9jb21wcmVzcy5jLTEzODQtXFxuZnMvbnRmcy9jb21wcmVzcy5jOjEzODU6XFx0cmxjID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgbmV3X3ZjbiwgbmV3X2xlbmd0aCwgLTEsIERBVEFfWk9ORSxcXG5mcy9udGZzL2NvbXByZXNzLmMtMTM4Ni1cXHRcXHRcXHRmYWxzZSwgdHJ1ZSwgdHJ1ZSk7XFxuLS1cXG5mcy9udGZzL2xjbmFsbG9jLmM9NjY9c3RhdGljIHM2NCBtYXhfZW1wdHlfYml0X3JhbmdlKHVuc2lnbmVkIGNoYXIgKmJ1ZiwgaW50IHNpemUpXFxuLS1cXG5mcy9udGZzL2xjbmFsbG9jLmMtMTE5LS8qXFxuZnMvbnRmcy9sY25hbGxvYy5jOjEyMDogKiBudGZzX2NsdXN0ZXJfYWxsb2MgLSBhbGxvY2F0ZSBjbHVzdGVycyBvbiBhbiBudGZzIHZvbHVtZVxcbmZzL250ZnMvbGNuYWxsb2MuYy0xMjEtICogQHZvbDpcXHRcXHRtb3VudGVkIG50ZnMgdm9sdW1lIG9uIHdoaWNoIHRvIGFsbG9jYXRlIGNsdXN0ZXJzXFxuLS1cXG5mcy9udGZzL2xjbmFsbG9jLmMtMTgyLSAqL1xcbmZzL250ZnMvbGNuYWxsb2MuYzoxODM6c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19jbHVzdGVyX2FsbG9jKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLCBjb25zdCBzNjQgc3RhcnRfdmNuLFxcbmZzL250ZnMvbGNuYWxsb2MuYy0xODQtXFx0XFx0Y29uc3QgczY0IGNvdW50LCBjb25zdCBzNjQgc3RhcnRfbGNuLFxcbi0tXFxuZnMvbnRmcy9sY25hbGxvYy5oPTIzPWVudW0ge1xcbi0tXFxuZnMvbnRmcy9sY25hbGxvYy5oLTI5LVxcbmZzL250ZnMvbGNuYWxsb2MuaDozMDpzdHJ1Y3QgcnVubGlzdF9lbGVtZW50ICpudGZzX2NsdXN0ZXJfYWxsb2Moc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsXFxuZnMvbnRmcy9sY25hbGxvYy5oLTMxLVxcdFxcdGNvbnN0IHM2NCBzdGFydF92Y24sIGNvbnN0IHM2NCBjb3VudCwgY29uc3QgczY0IHN0YXJ0X2xjbixcXG4tLVxcbmZzL250ZnMvbWZ0LmM9MTA1Mz1zdGF0aWMgaW50IG50ZnNfbWZ0X2JpdG1hcF9leHRlbmRfYWxsb2NhdGlvbl9ub2xvY2soc3RydWN0IG50ZnNfdm9sdW1lICp2b2wpXFxuLS1cXG5mcy9udGZzL21mdC5jLTExMzctXFx0XFx0LyogQWxsb2NhdGUgYSBjbHVzdGVyIGZyb20gdGhlIERBVEFfWk9ORS4gKi9cXG5mcy9udGZzL21mdC5jOjExMzg6XFx0XFx0cmwyID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgcmxbMV0udmNuLCAxLCBsY24sIERBVEFfWk9ORSxcXG5mcy9udGZzL21mdC5jLTExMzktXFx0XFx0XFx0XFx0dHJ1ZSwgZmFsc2UsIGZhbHNlKTtcXG4tLVxcbmZzL250ZnMvbWZ0LmM9MTQ4Nj1zdGF0aWMgaW50IG50ZnNfbWZ0X2RhdGFfZXh0ZW5kX2FsbG9jYXRpb25fbm9sb2NrKHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sKVxcbi0tXFxuZnMvbnRmcy9tZnQuYy0xNTYyLVxcdGRvIHtcXG5mcy9udGZzL21mdC5jOjE1NjM6XFx0XFx0cmwyID0gbnRmc19jbHVzdGVyX2FsbG9jKHZvbCwgb2xkX2xhc3RfdmNuLCBuciwgbGNuLCBNRlRfWk9ORSxcXG5mcy9udGZzL21mdC5jLTE1NjQtXFx0XFx0XFx0XFx0dHJ1ZSwgZmFsc2UsIGZhbHNlKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6MTMuNTkyNTkyOTQ5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU2OTQ1MTE4LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvYXR0cmliLmM9ODY9aW50IG50ZnNfbWFwX3J1bmxpc3Rfbm9sb2NrKHN0cnVjdCBudGZzX2lub2RlICpuaSwgczY0IHZjbiwgc3RydWN0IG50ZnNfYXR0cl9zZWFyY2hfY3R4ICpjdHgpXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jLTE4Ny1cXHQgKiB3ZSB0aGVuIHRyeSB0byBtYXAgdGhlIGFscmVhZHkgbWFwcGVkIHJ1bmxpc3QgZnJhZ21lbnQgYW5kXFxuZnMvbnRmcy9hdHRyaWIuYzoxODg6XFx0ICogbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoKSBmYWlscy5cXG5mcy9udGZzL2F0dHJpYi5jLTE4OS1cXHQgKi9cXG4tLVxcbmZzL250ZnMvYXR0cmliLmMtMTk0LVxcdH1cXG5mcy9udGZzL2F0dHJpYi5jOjE5NTpcXHRybCA9IG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKG5pLVxcdTAwM2V2b2wsIGEsIFxcdTAwMjZuaS1cXHUwMDNlcnVubGlzdCwgXFx1MDAyNm5ld19ybF9jb3VudCk7XFxuZnMvbnRmcy9hdHRyaWIuYy0xOTYtXFx0aWYgKElTX0VSUihybCkpXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jPTI2MjU9aW50IG50ZnNfYXR0cl9yZWNvcmRfcm0oc3RydWN0IG50ZnNfYXR0cl9zZWFyY2hfY3R4ICpjdHgpXFxuLS1cXG5mcy9udGZzL2F0dHJpYi5jLTI3MDMtXFxuZnMvbnRmcy9hdHRyaWIuYzoyNzA0OlxcdFxcdFxcdGFsX3JsID0gbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoYmFzZV9uaS1cXHUwMDNldm9sLFxcbmZzL250ZnMvYXR0cmliLmMtMjcwNS1cXHRcXHRcXHRcXHRcXHRjdHgtXFx1MDAzZWF0dHIsIE5VTEwsIFxcdTAwMjZuZXdfcmxfY291bnQpO1xcbi0tXFxuZnMvbnRmcy9hdHRyaWIuYz0zMjQ1PWludCBudGZzX2F0dHJfbWFwX3dob2xlX3J1bmxpc3Qoc3RydWN0IG50ZnNfaW5vZGUgKm5pKVxcbi0tXFxuZnMvbnRmcy9hdHRyaWIuYy0zMjkyLVxcdFxcdFxcdC8qIERlY29kZSB0aGUgcnVubGlzdC4gKi9cXG5mcy9udGZzL2F0dHJpYi5jOjMyOTM6XFx0XFx0XFx0cmwgPSBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzcyhuaS1cXHUwMDNldm9sLCBhLCBcXHUwMDI2bmktXFx1MDAzZXJ1bmxpc3QsXFxuZnMvbnRmcy9hdHRyaWIuYy0zMjk0LVxcdFxcdFxcdFxcdFxcdFxcdFxcdCAgIFxcdTAwMjZuZXdfcmxfY291bnQpO1xcbi0tXFxuZnMvbnRmcy9pbm9kZS5jPTMyMz1zdGF0aWMgaW50IG50ZnNfbm9uX3Jlc2lkZW50X2RlYWxsb2NfY2x1c3RlcnMoc3RydWN0IG50ZnNfaW5vZGUgKm5pKVxcbi0tXFxuZnMvbnRmcy9pbm9kZS5jLTM1MS1cXG5mcy9udGZzL2lub2RlLmM6MzUyOlxcdFxcdFxcdHJsID0gbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MobmktXFx1MDAzZXZvbCwgYWN0eC1cXHUwMDNlYXR0ciwgTlVMTCxcXG5mcy9udGZzL2lub2RlLmMtMzUzLVxcdFxcdFxcdFxcdFxcdFxcdTAwMjZuZXdfcmxfY291bnQpO1xcbi0tXFxuZnMvbnRmcy9pbm9kZS5jPTE4MDY9c3RhdGljIHN0cnVjdCBsb2NrX2NsYXNzX2tleSBtZnRfbmlfcnVubGlzdF9sb2NrX2tleSwgbWZ0X25pX21yZWNfbG9ja19rZXk7XFxuLS1cXG5mcy9udGZzL2lub2RlLmMtMTgyNi0gKiBlbHNlIGFuZCBpdGVyYXRpbmcgdXNpbmcgbnRmc19hdHRyX2xvb2t1cCgkREFUQSkgb3ZlciBhbGwgZXh0ZW50cy4gIEFzIGVhY2hcXG5mcy9udGZzL2lub2RlLmM6MTgyNzogKiBleHRlbnQgaXMgZm91bmQsIHdlIG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKCkgaW5jbHVkaW5nIHRoZSBpbXBsaWVkXFxuZnMvbnRmcy9pbm9kZS5jLTE4MjgtICogbnRmc19ydW5saXN0c19tZXJnZSgpLiAgRWFjaCBzdGVwIG9mIHRoZSBpdGVyYXRpb24gbmVjZXNzYXJpbHkgcHJvdmlkZXNcXG4tLVxcbmZzL250ZnMvaW5vZGUuYz0xODM0PWludCBudGZzX3JlYWRfaW5vZGVfbW91bnQoc3RydWN0IGlub2RlICp2aSlcXG4tLVxcbmZzL250ZnMvaW5vZGUuYy0xOTg0LVxcbmZzL250ZnMvaW5vZGUuYzoxOTg1OlxcdFxcdFxcdHJsID0gbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3Modm9sLCBhLCBOVUxMLCBcXHUwMDI2bmV3X3JsX2NvdW50KTtcXG5mcy9udGZzL2lub2RlLmMtMTk4Ni1cXHRcXHRcXHRpZiAoSVNfRVJSKHJsKSkge1xcbi0tXFxuZnMvbnRmcy9pbm9kZS5jLTIwODEtXFx0XFx0ICovXFxuZnMvbnRmcy9pbm9kZS5jOjIwODI6XFx0XFx0bnJsID0gbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3Modm9sLCBhLCBcXHUwMDI2bmktXFx1MDAzZXJ1bmxpc3QsXFxuZnMvbnRmcy9pbm9kZS5jLTIwODMtXFx0XFx0XFx0XFx0XFx0XFx0ICAgIFxcdTAwMjZuZXdfcmxfY291bnQpO1xcbi0tXFxuZnMvbnRmcy9pbm9kZS5jLTIwODUtXFx0XFx0XFx0bnRmc19lcnJvcihzYixcXG5mcy9udGZzL2lub2RlLmM6MjA4NjpcXHRcXHRcXHRcXHRcXFwibnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoKSBmYWlsZWQgd2l0aCBlcnJvciBjb2RlICVsZC5cXFwiLFxcbmZzL250ZnMvaW5vZGUuYy0yMDg3LVxcdFxcdFxcdFxcdFBUUl9FUlIobnJsKSk7XFxuLS1cXG5mcy9udGZzL3J1bmxpc3QuYz01MTg9c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19ydW5saXN0c19tZXJnZShzdHJ1Y3QgcnVubGlzdCAqZF9ydW5saXN0LFxcbi0tXFxuZnMvbnRmcy9ydW5saXN0LmMtNzEzLS8qXFxuZnMvbnRmcy9ydW5saXN0LmM6NzE0OiAqIG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzIC0gY29udmVydCBtYXBwaW5nIHBhaXJzIGFycmF5IHRvIHJ1bmxpc3RcXG5mcy9udGZzL3J1bmxpc3QuYy03MTUtICogQHZvbDogbnRmcyB2b2x1bWVcXG4tLVxcbmZzL250ZnMvcnVubGlzdC5jLTczMC0gKi9cXG5mcy9udGZzL3J1bmxpc3QuYzo3MzE6c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3MoY29uc3Qgc3RydWN0IG50ZnNfdm9sdW1lICp2b2wsXFxuZnMvbnRmcy9ydW5saXN0LmMtNzMyLVxcdFxcdGNvbnN0IHN0cnVjdCBhdHRyX3JlY29yZCAqYXR0ciwgc3RydWN0IHJ1bmxpc3QgKm9sZF9ydW5saXN0LFxcbi0tXFxuZnMvbnRmcy9ydW5saXN0Lmg9Njg9c3RydWN0IHJ1bmxpc3RfZWxlbWVudCAqbnRmc19ydW5saXN0c19tZXJnZShzdHJ1Y3QgcnVubGlzdCAqZF9ydW5saXN0LFxcbi0tXFxuZnMvbnRmcy9ydW5saXN0LmgtNzAtXFx0XFx0c2l6ZV90ICpuZXdfcmxfY291bnQpO1xcbmZzL250ZnMvcnVubGlzdC5oOjcxOnN0cnVjdCBydW5saXN0X2VsZW1lbnQgKm50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzKGNvbnN0IHN0cnVjdCBudGZzX3ZvbHVtZSAqdm9sLFxcbmZzL250ZnMvcnVubGlzdC5oLTcyLVxcdFxcdGNvbnN0IHN0cnVjdCBhdHRyX3JlY29yZCAqYXR0ciwgc3RydWN0IHJ1bmxpc3QgKm9sZF9ydW5saXN0LFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToxMy42NDk1NDIzMzdaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2NDE3NjAxNzI1LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBQb3RlbnRpYWwgRnV6emluZyBUYXJnZXRzIGluIHRoZSBOVEZTIEZpbGVzeXN0ZW0qKlxuXG5Pa2F5LCBzbyBJJ3ZlIGJlZW4gbG9va2luZyBhdCB0aGlzIHBhdGNoIGFuZCwgcmlnaHQgb2ZmIHRoZSBiYXQsIEkgc2VlIHRoYXQgaXQncyBmb2N1c2luZyBvbiBjb3JlIE5URlMgZnVuY3Rpb25zOiBgbnRmc19jbHVzdGVyX2FsbG9jYCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYC4gVGhlc2UgYXJlIHJlYWNoYWJsZSBmcm9tIGEgd2lkZSByYW5nZSBvZiBjcml0aWNhbCBvcGVyYXRpb25zIC0gdGhpbmdzIGxpa2UgYXR0cmlidXRlIG1hbmFnZW1lbnQsIGFsbG9jYXRpb24sIGFuZCBydW5saXN0IGhhbmRsaW5nLiBUaGF0IGFsb25lIG1ha2VzIHRoaXMgcGF0Y2ggYW4gYXR0cmFjdGl2ZSB0YXJnZXQgZm9yIGZ1enppbmc7IGFueSBib3VuZHMgY2hlY2sgaXNzdWVzIGhlcmUgY291bGQgaGF2ZSBwcmV0dHkgc2lnbmlmaWNhbnQgY29uc2VxdWVuY2VzLlxuXG5TcGVjaWZpY2FsbHksIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGlzIGNhbGxlZCBieSBhIGJ1bmNoIG9mIGZ1bmN0aW9ucyB0aGF0IGRlYWwgd2l0aCBhbGxvY2F0aW5nIGNsdXN0ZXJzLCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYCBpcyBpbnZvbHZlZCBpbiBydW5saXN0IG1hcHBpbmcgYW5kIGRlY29tcHJlc3Npb24uIENvbnNpZGVyaW5nIHRoZSByZWFjaCBvZiB0aGVzZSBmdW5jdGlvbnMsIGZpbmRpbmcgdnVsbmVyYWJpbGl0aWVzIHRocm91Z2ggZnV6emluZyBjb3VsZCB1bmNvdmVyIHNvbWUgcmVhbGx5IG5hc3R5IGVkZ2UgY2FzZXMuXG5cbk5vdywgbGV0J3MgbmFpbCBkb3duIHdoYXQgd2UncmUgZ29pbmcgdG8gZm9jdXMgb24uIEJhc2VkIG9uIHRoZSBwYXRjaCwgaXQgc2VlbXMgbGlrZSBgbnRmc19jbHVzdGVyX2FsbG9jYCBhbmQgYG50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzYCBhcmUgdGhlIGtleS4gTGV0J3MgbWFrZSBzdXJlIHRoZXkgYXJlIG5vdCBzdGF0aWMgb3IgaW5saW5lIC0gYW5kLCBsb29raW5nIGluIGBmcy9udGZzL2xjbmFsbG9jLmNgIGFuZCBgZnMvbnRmcy9ydW5saXN0LmNgLCB0aGV5IGFyZSBub3QuIFRoYXQncyBwZXJmZWN0LiBUaGlzIG1ha2VzIHRoZW0gZ29vZCBmb2N1cyBzeW1ib2xzIGZvciBteSBmdXp6aW5nIGNhbXBhaWduLlxuXG5OZXh0IHN0ZXA6IGxldCdzIHNjb3BlIG91dCB0aGVpciBkZXBlbmRlbmNpZXMgd2l0aGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0uIFdlIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgY29udGV4dCB0aGVzZSBmdW5jdGlvbnMgb3BlcmF0ZSBpbiB0byBjcmVhdGUgZWZmZWN0aXZlIGZ1enppbmcgaGFybmVzc2VzLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1ODI4LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDY4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciIsImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToyMC4wNjcxNDU5NzJaIiwiU2VxIjo5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6Mjc5ODUyODA3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImRlcGVuZHMgb25cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZnMvbnRmcy9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImZzL250ZnMvS2NvbmZpZz0xMz1jb25maWcgTlRGU19ERUJVR1xcbmZzL250ZnMvS2NvbmZpZy0xNC1cXHRib29sIFxcXCJOVEZTIGRlYnVnZ2luZyBzdXBwb3J0XFxcIlxcbmZzL250ZnMvS2NvbmZpZzoxNTpcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMTYtXFx0aGVscFxcbi0tXFxuZnMvbnRmcy9LY29uZmlnPTM1PWNvbmZpZyBOVEZTX0ZTX1BPU0lYX0FDTFxcbmZzL250ZnMvS2NvbmZpZy0zNi1cXHRib29sIFxcXCJOVEZTIFBPU0lYIEFjY2VzcyBDb250cm9sIExpc3RzXFxcIlxcbmZzL250ZnMvS2NvbmZpZzozNzpcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG5mcy9udGZzL0tjb25maWctMzgtXFx0c2VsZWN0IEZTX1BPU0lYX0FDTFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToyMC4zNDcwMDM4NzlaIiwiU2VxIjoxMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjk4NTU1MTQzOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgbGV0J3Mgc2VlLiBNeSBtaW5kJ3MgYnV6emluZy4uLiBJJ20gZGl2aW5nIGRlZXAsIGFuZCBJIG5lZWQgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBhbnl0aGluZyBmdW5kYW1lbnRhbC4gXG5cbioqUmV2aWV3aW5nIHRoZSBDb3JlOioqXG5cbkhvbGQgb24gYSBzZWNvbmQuIEJlZm9yZSBJIGdldCB0b28gZmFyIGRvd24gdGhpcyByYWJiaXQgaG9sZSwgSSBuZWVkIHRvIHRha2UgYSBzdGVwIGJhY2sgYW5kIG1ha2UgYWJzb2x1dGVseSBzdXJlIEkndmUgZ290IHRoZSBlc3NlbnRpYWxzIGNvdmVyZWQuIEkgc2hvdWxkIHJlLWV2YWx1YXRlIHRoZSBjb3JlIG9mIHRoZSBmaWxlIHN5c3RlbSBpdHNlbGYuLi4gU3BlY2lmaWNhbGx5LCBsZXQncyBnbyBiYWNrIGFuZCBjaGVjayBgTlRGU19GU2AuIEl0J3MgZWFzeSB0byBnZXQgbG9zdCBpbiB0aGUgZGV0YWlscyBhbmQgZm9yZ2V0IHRvIGdyb3VuZCB5b3Vyc2VsZiB3aXRoIGEgY29tcHJlaGVuc2l2ZSB1bmRlcnN0YW5kaW5nIG9mIHRoZSBwcmltYXJ5IGNvbXBvbmVudHMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY4MDYsIk91dHB1dFRva2VucyI6MzEsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxMywiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToyMy4zMzI1NTc3NDdaIiwiU2VxIjoxMSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5OTc4OTI3LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBOVEZTX0ZTXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvS2NvbmZpZ1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJmcy9udGZzL0tjb25maWctMS0jIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHlcXG5mcy9udGZzL0tjb25maWc6Mjpjb25maWcgTlRGU19GU1xcbmZzL250ZnMvS2NvbmZpZy0zLVxcdHRyaXN0YXRlIFxcXCJOVEZTIGZpbGUgc3lzdGVtIHN1cHBvcnRcXFwiXFxuLS1cXG5mcy9udGZzL0tjb25maWc9MTM9Y29uZmlnIE5URlNfREVCVUdcXG4tLVxcbmZzL250ZnMvS2NvbmZpZy0zNC1cXG5mcy9udGZzL0tjb25maWc6MzU6Y29uZmlnIE5URlNfRlNfUE9TSVhfQUNMXFxuZnMvbnRmcy9LY29uZmlnLTM2LVxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjIzLjM5MjU0MzE3NFoiLCJTZXEiOjEyLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTg1OTAxOTg4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipBbmFseXppbmcgdGhlIEtjb25maWcgRmlsZSAtIEluaXRpYWwgU2NhbioqXG5cbkFscmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzIGBmcy9udGZzL0tjb25maWdgIGZpbGUuIEknbSBpbW1lZGlhdGVseSBpbnRlcmVzdGVkIGluIHRoZSBzZXR1cCBmb3IgdGhlIE5URlMgZmlsZXN5c3RlbSB3aXRoaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uLiBNeSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgdXN1YWxseSB0byBsb29rIGZvciB0aGUgYmFzaWMgc3RydWN0dXJlLiBJIGV4cGVjdCB0byBzZWUgdGhlIHVzdWFsIHN1c3BlY3RzOiBvcHRpb25zLCBkZXBlbmRlbmNpZXMsIGFuZCBkZWZhdWx0IHZhbHVlcy4gSSdsbCB3YW50IHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIGtleSBwYXJhbWV0ZXJzIHRoYXQgZGVmaW5lIHdoZXRoZXIgTlRGUyBzdXBwb3J0IGlzIGluY2x1ZGVkLCBhbmQgdW5kZXIgd2hhdCBjb25kaXRpb25zLiBBbnkgcGxhdGZvcm0tc3BlY2lmaWMgY29uc2lkZXJhdGlvbnMgYXJlIGFsd2F5cyBnb29kIHRvIGZsYWcgZWFybHkgYXMgd2VsbC4gTXkgYnJhaW4gaXMgYWxyZWFkeSBzdGFydGluZyB0byBmb3JtdWxhdGUgYW4gaW50ZXJuYWwgbWVudGFsIG1vZGVsIG9mIHRoZSBtb2R1bGUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjcxMjcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOCwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOToyNi41Nzg0NDc0NjNaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjA2NDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5XFxuICAgMjpcXHRjb25maWcgTlRGU19GU1xcbiAgIDM6XFx0XFx0dHJpc3RhdGUgXFxcIk5URlMgZmlsZSBzeXN0ZW0gc3VwcG9ydFxcXCJcXG4gICA0OlxcdFxcdHNlbGVjdCBOTFNcXG4gICA1OlxcdFxcdHNlbGVjdCBGU19JT01BUFxcbiAgIDY6XFx0XFx0aGVscFxcbiAgIDc6XFx0XFx0ICBOVEZTIGlzIHRoZSBmaWxlIHN5c3RlbSBvZiBNaWNyb3NvZnQgV2luZG93cyBOVCwgMjAwMCwgWFAgYW5kIDIwMDMuXFxuICAgODpcXHRcXHQgIFRoaXMgYWxsb3dzIHlvdSB0byBtb3VudCBkZXZpY2VzIGZvcm1hdHRlZCB3aXRoIHRoZSBudGZzIGZpbGUgc3lzdGVtLlxcbiAgIDk6XFx0XFxuICAxMDpcXHRcXHQgIFRvIGNvbXBpbGUgdGhpcyBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZTogdGhlIG1vZHVsZSB3aWxsIGJlIGNhbGxlZFxcbiAgMTE6XFx0XFx0ICBudGZzLlxcbiAgMTI6XFx0XFxuICAxMzpcXHRjb25maWcgTlRGU19ERUJVR1xcbiAgMTQ6XFx0XFx0Ym9vbCBcXFwiTlRGUyBkZWJ1Z2dpbmcgc3VwcG9ydFxcXCJcXG4gIDE1OlxcdFxcdGRlcGVuZHMgb24gTlRGU19GU1xcbiAgMTY6XFx0XFx0aGVscFxcbiAgMTc6XFx0XFx0ICBJZiB5b3UgYXJlIGV4cGVyaWVuY2luZyBhbnkgcHJvYmxlbXMgd2l0aCB0aGUgTlRGUyBmaWxlIHN5c3RlbSwgc2F5XFxuICAxODpcXHRcXHQgIFkgaGVyZS4gIFRoaXMgd2lsbCByZXN1bHQgaW4gYWRkaXRpb25hbCBjb25zaXN0ZW5jeSBjaGVja3MgdG8gYmVcXG4gIDE5OlxcdFxcdCAgcGVyZm9ybWVkIGJ5IHRoZSBkcml2ZXIgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIGRlYnVnZ2luZyBtZXNzYWdlcyB0b1xcbiAgMjA6XFx0XFx0ICBiZSB3cml0dGVuIHRvIHRoZSBzeXN0ZW0gbG9nLiAgTm90ZSB0aGF0IGRlYnVnZ2luZyBtZXNzYWdlcyBhcmVcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6MjYuNTc4NTA5NDgzWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjM0Njg1MjAzNTYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgcHJlc2VudGVkIGluIHRoZSBmaXJzdCBwZXJzb246XG5cbioqTmF2aWdhdGluZyB0aGUgTlRGUyBGaWxlc3lzdGVtIENvbmZpZ3VyYXRpb24qKlxuXG5SaWdodCwgbGV0IG1lIHNlZS4uLiBJJ20gbG9va2luZyBhdCB0aGUgTlRGUyBmaWxlc3lzdGVtIGNvbmZpZ3VyYXRpb24uIEkgc2VlIHRoYXQgYE5URlNfRlNgIGhhcyBgc2VsZWN0IE5MU2AgYW5kIGBzZWxlY3QgRlNfSU9NQVBgLiBIbW0sIHRoYXQncyB3aGF0IEknZCBleHBlY3QuIEJ1dCBJJ20gbWlzc2luZyBzb21ldGhpbmcuLi4gaXQgZG9lc24ndCBoYXZlIGEgYGRlcGVuZHMgb25gIGNsYXVzZSwgd2hpY2ggc2VlbXMgYSBiaXQgb2RkLiBJJ20gdXNlZCB0byBzZWVpbmcgZGVwZW5kZW5jaWVzIGhlcmUuXG5cbldhaXQgYSBtaW51dGUsIHdoYXQgYWJvdXQgdGhlIGBOVEZTX1JXYCBzeW1ib2w/IERvZXMgdGhhdCBjb21lIGludG8gcGxheT8gSSBuZWVkIHRvIGRpZyBkZWVwZXIuIEknbSBnb2luZyB0byBoYXZlIHRvIGNoZWNrIHRoZSBzdXJyb3VuZGluZyBjb250ZXh0IGFuZCBzZWUgaG93IGl0IGludGVyYWN0cyB3aXRoIHRoZSByZWFkLXdyaXRlIGZ1bmN0aW9uYWxpdHkuIExldCdzIHNlZSB3aGF0IHRoZSBkb2N1bWVudGF0aW9uIHNheXMgYWJvdXQgYE5URlNfUldgLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgaW1wbGljYXRpb25zIG9mIHRoYXQgbWlzc2luZyBkZXBlbmRlbmN5IGFuZCBob3cgdGhpbmdzIGFyZSBhY3R1YWxseSB0aWVkIHRvZ2V0aGVyLiBUaW1lIHRvIGRvIHNvbWUgbW9yZSByZWFkaW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjo3NjE5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDksIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTozMC4wNDcwMzE4NzlaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoicmVhZC1maWxlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTczNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZnMvbnRmcy9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIxLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgIDIxOlxcdFxcdCAgZGlzYWJsZWQgYnkgZGVmYXVsdC4gIFRvIGVuYWJsZSB0aGVtLCBzdXBwbHkgdGhlIG9wdGlvbiBkZWJ1Z19tc2dzPTFcXG4gIDIyOlxcdFxcdCAgYXQgdGhlIGtlcm5lbCBjb21tYW5kIGxpbmUgd2hlbiBib290aW5nIHRoZSBrZXJuZWwgb3IgYXMgYW4gb3B0aW9uXFxuICAyMzpcXHRcXHQgIHRvIGluc21vZCB3aGVuIGxvYWRpbmcgdGhlIG50ZnMgbW9kdWxlLiAgT25jZSB0aGUgZHJpdmVyIGlzIGFjdGl2ZSxcXG4gIDI0OlxcdFxcdCAgeW91IGNhbiBlbmFibGUgZGVidWdnaW5nIG1lc3NhZ2VzIGJ5IGRvaW5nIChhcyByb290KTpcXG4gIDI1OlxcdFxcdCAgZWNobyAxIFxcdTAwM2UgL3Byb2Mvc3lzL2ZzL250ZnMtZGVidWdcXG4gIDI2OlxcdFxcdCAgUmVwbGFjaW5nIHRoZSBcXFwiMVxcXCIgd2l0aCBcXFwiMFxcXCIgd291bGQgZGlzYWJsZSBkZWJ1ZyBtZXNzYWdlcy5cXG4gIDI3OlxcdFxcbiAgMjg6XFx0XFx0ICBJZiB5b3UgbGVhdmUgZGVidWdnaW5nIG1lc3NhZ2VzIGRpc2FibGVkLCB0aGlzIHJlc3VsdHMgaW4gbGl0dGxlXFxuICAyOTpcXHRcXHQgIG92ZXJoZWFkLCBidXQgZW5hYmxpbmcgZGVidWcgbWVzc2FnZXMgcmVzdWx0cyBpbiB2ZXJ5IHNpZ25pZmljYW50XFxuICAzMDpcXHRcXHQgIHNsb3dkb3duIG9mIHRoZSBzeXN0ZW0uXFxuICAzMTpcXHRcXG4gIDMyOlxcdFxcdCAgV2hlbiByZXBvcnRpbmcgYnVncywgcGxlYXNlIHRyeSB0byBoYXZlIGF2YWlsYWJsZSBhIGZ1bGwgZHVtcCBvZlxcbiAgMzM6XFx0XFx0ICBkZWJ1Z2dpbmcgbWVzc2FnZXMgd2hpbGUgdGhlIG1pc2JlaGF2aW91ciB3YXMgb2NjdXJyaW5nLlxcbiAgMzQ6XFx0XFxuICAzNTpcXHRjb25maWcgTlRGU19GU19QT1NJWF9BQ0xcXG4gIDM2OlxcdFxcdGJvb2wgXFxcIk5URlMgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHNcXFwiXFxuICAzNzpcXHRcXHRkZXBlbmRzIG9uIE5URlNfRlNcXG4gIDM4OlxcdFxcdHNlbGVjdCBGU19QT1NJWF9BQ0xcXG4gIDM5OlxcdFxcdGhlbHBcXG4gIDQwOlxcdFxcdCAgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMgKEFDTHMpIHN1cHBvcnQgYWRkaXRpb25hbCBhY2Nlc3MgcmlnaHRzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjMwLjA0NzA5MDY0OVoiLCJTZXEiOjE2LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyNzMxNDQyMjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBJJ20gcmVhZHkuIExldCdzIHNlZSB3aGF0IHdlJ3ZlIGdvdC4gSGVyZSdzIGEgc3VtbWFyeSBmcm9tIG15IHBlcnNwZWN0aXZlOlxuXG4qKkluaXRpYWwgQXNzZXNzbWVudCBhbmQgQW50aWNpcGF0aW9uKipcblxuUmlnaHQsIGxldCdzIGRpdmUgaW50byB0aGlzLiBJJ20gZ29pbmcgdG8gcmVhZCBmdXJ0aGVyIGFuZCBhbmFseXplLiBJJ2xsIG5lZWQgdG8ga2VlcCBhbiBvcGVuIG1pbmQgYW5kIGJlIHJlYWR5IHRvIGRlbHZlIGludG8gdGhlIGRldGFpbHMuIEknbSBsb29raW5nIGZvcndhcmQgdG8gdGhlIGNoYWxsZW5nZSBvZiBhbmFseXppbmcgYW5kIHN1bW1hcml6aW5nIHRoZSBjb25jZXB0cyBhdCBoYW5kLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjM3LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NiwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjMyLjc3ODUzNDk2N1oiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1ODEzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9udGZzL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogNDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgNDE6XFx0XFx0ICBmb3IgdXNlcnMgYW5kIGdyb3VwcyBiZXlvbmQgdGhlIHN0YW5kYXJkIG93bmVyL2dyb3VwL3dvcmxkIHNjaGVtZS5cXG4gIDQyOlxcdFxcbiAgNDM6XFx0XFx0ICBUaGlzIG9wdGlvbiBlbmFibGVzIEFDTCBzdXBwb3J0IGZvciBudGZzLCBwcm92aWRpbmcgZnVuY3Rpb25hbCBwYXJpdHlcXG4gIDQ0OlxcdFxcdCAgd2l0aCBudGZzMyBkcml2aWVyLlxcbiAgNDU6XFx0XFxuICA0NjpcXHRcXHQgIE5PVEU6IHRoaXMgaXMgbGludXggb25seSBmZWF0dXJlLiBXaW5kb3dzIHdpbGwgaWdub3JlIHRoZXNlIEFDTHMuXFxuICA0NzpcXHRcXG4gIDQ4OlxcdFxcdCAgSWYgeW91IGRvbid0IGtub3cgd2hhdCBBY2Nlc3MgQ29udHJvbCBMaXN0cyBhcmUsIHNheSBOLlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTozMi43Nzg1OTQzNjdaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzE0NjE3MDAxMSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IGF0dGVtcHQgYXQgc3VtbWFyaXppbmcgdGhlIHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipUcm91Ymxlc2hvb3RpbmcgYSBNaXNzaW5nIERyaXZlcioqXG5cbk9rYXksIGhvbGQgb24uIEkgd2FzIGV4cGVjdGluZyBgTlRGU19SV2AgdG8gYmUgcHJlc2VudCwgYnV0IGl0J3Mgbm90IHNob3dpbmcgdXAgYXMgaXQgc2hvdWxkLiBUaGlzIGlzbid0IGlkZWFsLCBhbmQgaXQgdGhyb3dzIGEgd3JlbmNoIGluIG15IGV4cGVjdGVkIHdvcmtmbG93LiBMZXQncyBub3QganVtcCB0byBjb25jbHVzaW9ucyB5ZXQsIGJ1dCBJIG5lZWQgdG8gY29uZmlybSBpdHMgYWJzZW5jZSBkZWZpbml0aXZlbHkuIEknbSBnb2luZyB0byBoYXZlIHRvIGRpdmUgZGVlcGVyIGFuZCB2ZXJpZnkgdGhhdCB0aGUgZHJpdmVyIGlzbid0IGp1c3QgaGlkZGVuIG9yIG1pc2NvbmZpZ3VyZWQsIGFuZCBjb25maXJtIGl0J3MgdHJ1bHkgbm90IHRoZXJlLiBTb21ldGhpbmcgaXNuJ3QgcXVpdGUgcmlnaHQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjg0OTYsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNywiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjM1LjkyNDc2NzE1OFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTQwMDQ5NDE0LCJFcnJvciI6Im5vIG1hdGNoZXMiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJOVEZTX1JXXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImZzL250ZnMvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcImVycm9yXCI6IFwibm8gbWF0Y2hlc1wiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yN1QxMTowOTozNi4wNjQ4Mjc4MDJaIiwiU2VxIjoyMCwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzI2NDk5MzU3NSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqSW52ZXN0aWdhdGluZyB0aGUgTlRGUyBEcml2ZXIgUmVtb3ZhbCoqXG5cblJpZ2h0LCBzbyBJIHNlZW0gdG8gcmVjYWxsIHNvbWV0aGluZyBhYm91dCBgTlRGU19SV2AgYmVpbmcgZHJvcHBlZCBmcm9tIHRoZSBrZXJuZWwgYXJvdW5kIDIwMjQsIHdhc24ndCBpdD8gVGltZSBmbGllcy4uLiBvciBtYXliZSBJJ20gbWlzcmVtZW1iZXJpbmcuIExldCdzIG5vdCByZWx5IG9uIG1lbW9yeSwgdGhvdWdoLiBMZXQncyBiZSBwcmVjaXNlLiBXaGVyZSB3b3VsZCBJIGNvbmZpcm0gdGhhdD8gVGhlIG9idmlvdXMgcGxhY2UgdG8gc3RhcnQgaXMgdGhlIGZpbGVzeXN0ZW0gYnVpbGQgY29uZmlndXJhdGlvbi4gSWYgaXQncyBnb25lLCB0aGUgbWFrZWZpbGVzIHdpbGwgdGVsbCBtZSBzby4gVGhlcmVmb3JlIEkgd2lsbCBnbyB0byBgZnMvbnRmcy9NYWtlZmlsZWAuIFRoYXQncyB3aGVyZSB0aGUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gbWFnaWMgaGFwcGVucy4gQSBxdWljayBwZWVrIHRoZXJlIHdpbGwgZWl0aGVyIGNvbmZpcm0gbXkgc3VzcGljaW9uIGFib3V0IHRoZSByZW1vdmFsIG9yLCBpZiBpdCdzIHN0aWxsIHRoZXJlLCBpbGx1bWluYXRlIHRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIGl0J3MgY29tcGlsZWQuIFRoYXQgc2hvdWxkIHRlbGwgbWUgZXZlcnl0aGluZyBJIG5lZWQgdG8ga25vdyBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiBOVEZTIHJlYWQtd3JpdGUgc3VwcG9ydCB3aXRoaW4gdGhlIGtlcm5lbC5cblxuXG4iLCJJbnB1dFRva2VucyI6ODY4NSwiT3V0cHV0VG9rZW5zIjozMiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjMyLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI3VDExOjA5OjM5LjMyOTgyMzcxN1oiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo1NzU1MSwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJmcy9udGZzL01ha2VmaWxlXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgIDE6XFx0IyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMFxcbiAgIDI6XFx0XFxuICAgMzpcXHRvYmotJChDT05GSUdfTlRGU19GUykgKz0gbnRmcy5vXFxuICAgNDpcXHRcXG4gICA1OlxcdG50ZnMteSA6PSBhb3BzLm8gYXR0cmliLm8gY29sbGF0ZS5vIGRpci5vIGZpbGUubyBpbmRleC5vIGlub2RlLm8gXFxcXFxcbiAgIDY6XFx0XFx0ICBtZnQubyBtc3QubyBuYW1laS5vIHJ1bmxpc3QubyBzdXBlci5vIHVuaXN0ci5vIGF0dHJsaXN0Lm8gZWEubyBcXFxcXFxuICAgNzpcXHRcXHQgIHVwY2FzZS5vIGJpdG1hcC5vIGxjbmFsbG9jLm8gbG9nZmlsZS5vIHJlcGFyc2UubyBjb21wcmVzcy5vIFxcXFxcXG4gICA4OlxcdFxcdCAgaW9tYXAubyBkZWJ1Zy5vIHN5c2N0bC5vIG9iamVjdF9pZC5vIGJkZXYtaW8ub1xcbiAgIDk6XFx0XFxuICAxMDpcXHRjY2ZsYWdzLSQoQ09ORklHX05URlNfREVCVUcpICs9IC1EREVCVUdcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6MzkuMzI5ODgyOTI2WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMzc0MTg5NDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqTXkgQXNzZXNzbWVudCBvZiB0aGUgTlRGUyBGaWxlc3lzdGVtIFBhdGNoKipcblxuQWxyaWdodCwgbXkgYW5hbHlzaXMgcG9pbnRzIHRvIGEgc3RyYWlnaHRmb3J3YXJkIGNvbmZpZ3VyYXRpb24gaGVyZTogYE5URlNfRlNgIGlzIGFsbCB3ZSB0cnVseSBuZWVkLiBJIGluaXRpYWxseSBjb25zaWRlcmVkIHNvbWUgc3BlY2lmaWMgZmlsZXMsIGxpa2UgYGZzL250ZnMvbGNuYWxsb2MuY2AgYW5kIGBmcy9udGZzL3J1bmxpc3QuY2AsIGFzIHBhcnQgb2YgdGhlIGZ1enppbmcgc2NvcGUsIHdoaWNoIGxlZCBtZSB0byB0aGUgY29uY2x1c2lvbiB0aGF0IGBudGZzLXlgIG1heSBiZSBuZWNlc3NhcnkuIEhvd2V2ZXIsIGFmdGVyIGZ1cnRoZXIgcmVmbGVjdGlvbiwgYE5URlNfRlNgIGFsb25lIHNob3VsZCBjb3ZlciBldmVyeXRoaW5nIHdlIHdhbnQuXG5cblRvIHJlY2FwIGFuZCBzb2xpZGlmeSBteSB1bmRlcnN0YW5kaW5nLCB0aGlzIGlzIHdoYXQgSSd2ZSBkZXRlcm1pbmVkOiBUaGlzIHBhdGNoIGlzIGRlZmluaXRlbHkgd29ydGggZnV6emluZzsgSSdtIHNldHRpbmcgYFdvcnRoRnV6emluZ2AgdG8gYHRydWVgLiBUaGUgbW9zdCBjcml0aWNhbCBzeW1ib2xzIHRvIHRhcmdldCBmb3IgZnV6emluZyBhcmUgYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AuIEkgd2lsbCBiZSBlbmFibGluZyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gYE5URlNfRlNgLiBNeSByZWFzb25pbmcgaXMgdGhpczogdGhlIHBhdGNoIGludHJvZHVjZXMgY3J1Y2lhbCBib3VuZHMgY2hlY2tzIHdpdGhpbiB0aGUgTlRGUyBmaWxlc3lzdGVtIGRyaXZlciwgc3BlY2lmaWNhbGx5IHdpdGhpbiB0aG9zZSB0d28gZnVuY3Rpb25zLiBUaGVzZSBmdW5jdGlvbnMgYXJlIGZ1bmRhbWVudGFsbHkgaW52b2x2ZWQgaW4gY29yZSBOVEZTIG9wZXJhdGlvbnMg4oCTIGF0dHJpYnV0ZSBleHBhbnNpb24gYW5kIHJ1bmxpc3QgZGVjb21wcmVzc2lvbi4gVGhpcyByZXByZXNlbnRzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBkaXJlY3RseSBpbXBhY3RzIGhvdyB0aGUgZmlsZXN5c3RlbSBoYW5kbGVzIGNyaXRpY2FsIGRhdGEgc3RydWN0dXJlcyBhbmQgb3BlcmF0aW9ucywgbWFraW5nIGl0IGFuIGV4Y2VsbGVudCB0YXJnZXQgZm9yIGZ1enppbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkxNjQsIk91dHB1dFRva2VucyI6MTE3LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTcxLCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjdUMTE6MDk6NDQuNDY3MzA1NTM4WiIsIlNlcSI6MjMsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NzU4MjAxMjYsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIk5URlNfRlNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJudGZzX2NsdXN0ZXJfYWxsb2NcIixcbiAgICBcIm50ZnNfbWFwcGluZ19wYWlyc19kZWNvbXByZXNzXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggYWRkcyBib3VuZHMgY2hlY2tzIHRvIGBudGZzX2NsdXN0ZXJfYWxsb2NgIGFuZCBgbnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NgIGluIHRoZSBOVEZTIGZpbGVzeXN0ZW0gZHJpdmVyLiBUaGVzZSBmdW5jdGlvbnMgYXJlIHJlYWNoYWJsZSBkdXJpbmcgY29yZSBOVEZTIG9wZXJhdGlvbnMgbGlrZSBhdHRyaWJ1dGUgZXhwYW5zaW9uIGFuZCBydW5saXN0IGRlY29tcHJlc3Npb24sIHNvIHRoZXkgYXJlIGZ1bmN0aW9uYWwgY2hhbmdlcyB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTlRGU19GU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm50ZnNfY2x1c3Rlcl9hbGxvY1wiLFxuICAgIFwibnRmc19tYXBwaW5nX3BhaXJzX2RlY29tcHJlc3NcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBhZGRzIGJvdW5kcyBjaGVja3MgdG8gYG50ZnNfY2x1c3Rlcl9hbGxvY2AgYW5kIGBudGZzX21hcHBpbmdfcGFpcnNfZGVjb21wcmVzc2AgaW4gdGhlIE5URlMgZmlsZXN5c3RlbSBkcml2ZXIuIFRoZXNlIGZ1bmN0aW9ucyBhcmUgcmVhY2hhYmxlIGR1cmluZyBjb3JlIE5URlMgb3BlcmF0aW9ucyBsaWtlIGF0dHJpYnV0ZSBleHBhbnNpb24gYW5kIHJ1bmxpc3QgZGVjb21wcmVzc2lvbiwgc28gdGhleSBhcmUgZnVuY3Rpb25hbCBjaGFuZ2VzIHRoYXQgc2hvdWxkIGJlIGZ1enplZC5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowdtbjb[1] Phase: Succeeded StartedAt: 2026-07-27 11:09:56 +0000 UTC FinishedAt: 2026-07-27 11:09:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-27 11:09:56 +0000 UTC FinishedAt: 2026-07-27 11:09:56 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2] Phase: Succeeded StartedAt: 2026-07-27 11:09:56 +0000 UTC FinishedAt: 2026-07-27 13:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:09:56 +0000 UTC FinishedAt: 2026-07-27 13:07:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:09:56 +0000 UTC FinishedAt: 2026-07-27 11:10:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:09:56 +0000 UTC FinishedAt: 2026-07-27 11:10:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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-workflowdtbjb/series-workflowdtbjb-convert-artifact-2463296431/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:10:06 +0000 UTC FinishedAt: 2026-07-27 11:39:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:10:06 +0000 UTC FinishedAt: 2026-07-27 11:39:27 +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:*8b79f65e-e54a-4026-82a3-a49ea6d332dc,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-workflowdtbjb/series-workflowdtbjb-convert-artifact-2463296431/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": "7e97070a-ccb0-42ba-9a05-45df53406600", "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-workflowdtbjb/series-workflowdtbjb-build-action-889221493/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:10:06 +0000 UTC FinishedAt: 2026-07-27 11:39:17 +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:*8b79f65e-e54a-4026-82a3-a49ea6d332dc,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-workflowdtbjb/series-workflowdtbjb-convert-artifact-2463296431/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": "7e97070a-ccb0-42ba-9a05-45df53406600", "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-workflowdtbjb/series-workflowdtbjb-build-action-889221493/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:39:27 +0000 UTC FinishedAt: 2026-07-27 11:39:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:39:27 +0000 UTC FinishedAt: 2026-07-27 11:39:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:39:27 +0000 UTC FinishedAt: 2026-07-27 11:39:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:39:27 +0000 UTC FinishedAt: 2026-07-27 11:39:32 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-workflowdtbjb/series-workflowdtbjb-convert-artifact-3764115454/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:39:37 +0000 UTC FinishedAt: 2026-07-27 11:42:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:39:37 +0000 UTC FinishedAt: 2026-07-27 11:41:53 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e97070a-ccb0-42ba-9a05-45df53406600,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-workflowdtbjb/series-workflowdtbjb-build-action-889221493/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-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:42:03 +0000 UTC FinishedAt: 2026-07-27 11:42:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:42:03 +0000 UTC FinishedAt: 2026-07-27 11:42:03 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:42:03 +0000 UTC FinishedAt: 2026-07-27 12:16:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:42:03 +0000 UTC FinishedAt: 2026-07-27 12:16:27 +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:*8b79f65e-e54a-4026-82a3-a49ea6d332dc,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-workflowdtbjb/series-workflowdtbjb-convert-artifact-3764115454/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": "3576e5e9-e208-4382-bec8-d0f8046293e3", "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-workflowdtbjb/series-workflowdtbjb-build-action-2563941458/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 11:42:03 +0000 UTC FinishedAt: 2026-07-27 12:16:17 +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:*8b79f65e-e54a-4026-82a3-a49ea6d332dc,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-workflowdtbjb/series-workflowdtbjb-convert-artifact-3764115454/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": "3576e5e9-e208-4382-bec8-d0f8046293e3", "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-workflowdtbjb/series-workflowdtbjb-build-action-2563941458/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:16:27 +0000 UTC FinishedAt: 2026-07-27 12:16:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:16:27 +0000 UTC FinishedAt: 2026-07-27 12:16:27 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:16:27 +0000 UTC FinishedAt: 2026-07-27 12:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:16:27 +0000 UTC FinishedAt: 2026-07-27 12:18:31 +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:*3576e5e9-e208-4382-bec8-d0f8046293e3,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-workflowdtbjb/series-workflowdtbjb-build-action-2563941458/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-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:18:41 +0000 UTC FinishedAt: 2026-07-27 13:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:18:41 +0000 UTC FinishedAt: 2026-07-27 13:07:34 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"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:*7e97070a-ccb0-42ba-9a05-45df53406600,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3576e5e9-e208-4382-bec8-d0f8046293e3,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-workflowdtbjb/series-workflowdtbjb-build-action-889221493/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-workflowdtbjb/series-workflowdtbjb-build-action-2563941458/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:18:41 +0000 UTC FinishedAt: 2026-07-27 12:18:51 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:18:41 +0000 UTC FinishedAt: 2026-07-27 12:18:48 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"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-workflowdtbjb/series-workflowdtbjb-convert-artifact-566576387/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:18:41 +0000 UTC FinishedAt: 2026-07-27 12:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:18:41 +0000 UTC FinishedAt: 2026-07-27 12:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:18:41 +0000 UTC FinishedAt: 2026-07-27 12:18:41 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:18:51 +0000 UTC FinishedAt: 2026-07-27 13:07:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowdtbjb[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"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/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["ntfs_cluster_alloc","ntfs_mapping_pairs_decompress"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"4235cb24ec1e8e96843f3671ba4da2a6ccca2c7b","config_name":"upstream-apparmor-kasan.config","enable_configs":["NTFS_FS"],"series_id":"967545ce-ed80-477e-a1fd-7b58827f13a5","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-27 12:18:51 +0000 UTC FinishedAt: 2026-07-27 13:07:24 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*7e97070a-ccb0-42ba-9a05-45df53406600,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*3576e5e9-e208-4382-bec8-d0f8046293e3,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-workflowdtbjb/series-workflowdtbjb-build-action-889221493/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-workflowdtbjb/series-workflowdtbjb-build-action-2563941458/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-workflowdtbjb/series-workflowdtbjb-convert-artifact-566576387/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,}