Name: series-workflowljkdw Phase: Succeeded StartedAt: 2026-07-29 05:01:39 +0000 UTC FinishedAt: 2026-07-29 09:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[0] Phase: Succeeded StartedAt: 2026-07-29 05:01:39 +0000 UTC FinishedAt: 2026-07-29 05:31:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[0].run-triage Phase: Succeeded StartedAt: 2026-07-29 05:01:39 +0000 UTC FinishedAt: 2026-07-29 05:31:46 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_PROTO_SCTP", "IP_SCTP", "NETFILTER_ADVANCED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_PROTO_SCTP", "IP_SCTP", "NETFILTER_ADVANCED" ], "series_id": "211abdd5-4444-4de8-8e4a-e06d8d5beaa5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_conntrack_sctp_packet" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9QUk9UT19TQ1RQJiMzNDssCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY29ubnRyYWNrX3NjdHBfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5Yzk2MjQ5YmFjOGVkMGFmZDA1ZGExN2U2MDcwM2ZjZDBiYWIwMDEzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDU6MzA6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jXG5pbmRleCA3ZTEwZmE2NWNiZGQzLi45OTc4ZWNkMDViMWU4IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcbkBAIC00MDcsOSAmIzQzOzQwNywxNyBAQCBpbnQgbmZfY29ubnRyYWNrX3NjdHBfcGFja2V0KHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHQvKiAoRCkgdnRhZyBtdXN0IGJlIHNhbWUgYXMgaW5pdF92dGFnIGFzIGZvdW5kIGluIElOSVRfQUNLICovXG4gXHRcdFx0aWYgKHNoLVx1MDAzZXZ0YWcgIT0gY3QtXHUwMDNlcHJvdG8uc2N0cC52dGFnW2Rpcl0pXG4gXHRcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4tXHRcdH0gZWxzZSBpZiAoc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSykge1xuLVx0XHRcdGN0LVx1MDAzZXByb3RvLnNjdHAuaW5pdFtkaXJdID0gMDtcbi1cdFx0XHRjdC1cdTAwM2Vwcm90by5zY3RwLmluaXRbIWRpcl0gPSAwO1xuJiM0MztcdFx0fSBlbHNlIGlmIChzY2gtXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLIHx8XG4mIzQzO1x0XHRcdCAgIHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0VSUk9SIHx8XG4mIzQzO1x0XHRcdCAgIHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOIHx8XG4mIzQzO1x0XHRcdCAgIHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOX0FDSykge1xuJiM0MztcdFx0XHRpZiAoY3QtXHUwMDNlcHJvdG8uc2N0cC52dGFnW2Rpcl0gXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICBzaC1cdTAwM2V2dGFnICE9IGN0LVx1MDAzZXByb3RvLnNjdHAudnRhZ1tkaXJdKVxuJiM0MztcdFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbiYjNDM7XHRcdFx0aWYgKHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9BQ0spIHtcbiYjNDM7XHRcdFx0XHRjdC1cdTAwM2Vwcm90by5zY3RwLmluaXRbZGlyXSA9IDA7XG4mIzQzO1x0XHRcdFx0Y3QtXHUwMDNlcHJvdG8uc2N0cC5pbml0WyFkaXJdID0gMDtcbiYjNDM7XHRcdFx0fVxuIFx0XHR9IGVsc2UgaWYgKHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0hFQVJUQkVBVCkge1xuIFx0XHRcdGlmIChjdC1cdTAwM2Vwcm90by5zY3RwLnZ0YWdbZGlyXSA9PSAwKSB7XG4gXHRcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtTZXR0aW5nICVkIHZ0YWcgJXggZm9yIGRpciAlZFxcblwmIzM0Oywgc2NoLVx1MDAzZXR5cGUsIHNoLVx1MDAzZXZ0YWcsIGRpcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9QUk9UT19TQ1RQJiMzNDssCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY29ubnRyYWNrX3NjdHBfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5Yzk2MjQ5YmFjOGVkMGFmZDA1ZGExN2U2MDcwM2ZjZDBiYWIwMDEzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMDU6MzA6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMKaW5kZXggN2UxMGZhNjVjYmRkMy4uOTk3OGVjZDA1YjFlOCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYwpAQCAtNDA3LDkgJiM0Mzs0MDcsMTcgQEAgaW50IG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCQkvKiAoRCkgdnRhZyBtdXN0IGJlIHNhbWUgYXMgaW5pdF92dGFnIGFzIGZvdW5kIGluIElOSVRfQUNLICovCiAJCQlpZiAoc2gtJmd0O3Z0YWcgIT0gY3QtJmd0O3Byb3RvLnNjdHAudnRhZ1tkaXJdKQogCQkJCWdvdG8gb3V0X3VubG9jazsKLQkJfSBlbHNlIGlmIChzY2gtJmd0O3R5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSykgewotCQkJY3QtJmd0O3Byb3RvLnNjdHAuaW5pdFtkaXJdID0gMDsKLQkJCWN0LSZndDtwcm90by5zY3RwLmluaXRbIWRpcl0gPSAwOwomIzQzOwkJfSBlbHNlIGlmIChzY2gtJmd0O3R5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSyB8fAomIzQzOwkJCSAgIHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9FUlJPUiB8fAomIzQzOwkJCSAgIHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9TSFVURE9XTiB8fAomIzQzOwkJCSAgIHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9TSFVURE9XTl9BQ0spIHsKJiM0MzsJCQlpZiAoY3QtJmd0O3Byb3RvLnNjdHAudnRhZ1tkaXJdICZhbXA7JmFtcDsKJiM0MzsJCQkgICAgc2gtJmd0O3Z0YWcgIT0gY3QtJmd0O3Byb3RvLnNjdHAudnRhZ1tkaXJdKQomIzQzOwkJCQlnb3RvIG91dF91bmxvY2s7CiYjNDM7CQkJaWYgKHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLKSB7CiYjNDM7CQkJCWN0LSZndDtwcm90by5zY3RwLmluaXRbZGlyXSA9IDA7CiYjNDM7CQkJCWN0LSZndDtwcm90by5zY3RwLmluaXRbIWRpcl0gPSAwOwomIzQzOwkJCX0KIAkJfSBlbHNlIGlmIChzY2gtJmd0O3R5cGUgPT0gU0NUUF9DSURfSEVBUlRCRUFUKSB7CiAJCQlpZiAoY3QtJmd0O3Byb3RvLnNjdHAudnRhZ1tkaXJdID09IDApIHsKIAkJCQlwcl9kZWJ1ZygmIzM0O1NldHRpbmcgJWQgdnRhZyAleCBmb3IgZGlyICVkXG4mIzM0Oywgc2NoLSZndDt0eXBlLCBzaC0mZ3Q7dnRhZywgZGlyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2NAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNDVFAgQ29ubnRyYWNrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2VzIGFyZSB0YXJnZXRpbmcgdGhlIGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGhvdyBuZXRmaWx0ZXImIzM5O3MgY29ubnRyYWNrIG1vZHVsZSBoYW5kbGVzIFNDVFAgcGFja2V0cywgZm9jdXNpbmcgb24gc2NydXRpbml6aW5nIHRoZSBgdnRhZ2AgZmllbGQgZm9yIGNlcnRhaW4gY2h1bmsgaWRlbnRpZmllcnM6IGBTQ1RQX0NJRF9DT09LSUVfQUNLYCwgYFNDVFBfQ0lEX0VSUk9SYCwgYFNDVFBfQ0lEX1NIVVRET1dOYCwgYW5kIGBTQ1RQX0NJRF9TSFVURE9XTl9BQ0tgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nOyBJIHdvbmRlciB3aGF0IHNwZWNpZmljIGFzcGVjdCBvZiBjb25uZWN0aW9uIHRyYWNraW5nIHRoaXMgaXMgYWltaW5nIHRvIGltcHJvdmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYmV0dGVyLCBlc3BlY2lhbGx5IHRoZSBjb250ZXh0IG9mIHRob3NlIHNwZWNpZmljIGNodW5rIHR5cGVzLgoKQmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBzaG91bGQgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQgbWUgcXVpY2tseSBydW4gYSBgZ2l0IGdyZXBgIHRvIGxvY2F0ZSB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O2xsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB3aGF0IGNvbmZpZ3VyYXRpb24ga25vYnMgYXJlIGludm9sdmVkIGluIGVuYWJsaW5nIHRoaXMgU0NUUCBwcm90b2NvbCBzdXBwb3J0LCBzcGVjaWZpY2FsbHkgYG5mX2Nvbm50cmFja19wcm90b19zY3RwLmNgLCBhbmQgaWYgdGhlIGNvbnRleHQgb2YgdGhpcyBjb25maWd1cmF0aW9uIGNoYW5nZXMgaGVscHMgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jb25udHJhY2tfcHJvdG9fc2N0cC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE1PW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfT1ZTKSAmIzQzOz0gbmZfY29ubnRyYWNrX292cy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE2Om5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DVF9QUk9UT19TQ1RQKSAmIzQzOz0gbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNy1uZl9jb25udHJhY2stJChDT05GSUdfTkZfQ1RfUFJPVE9fR1JFKSAmIzQzOz0gbmZfY29ubnRyYWNrX3Byb3RvX2dyZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipTQ1RQIENvbm5lY3Rpb24gVHJhY2tpbmcgLSBBIFF1aWNrIExvb2sqKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGF0IHRoZSBTQ1RQIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgZW5hYmxlZCBieSBgQ09ORklHX05GX0NUX1BST1RPX1NDVFBgLiAgVGhhdCYjMzk7cyBteSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpcyBpbmRlZWQgdGhlIGNhc2UuIExldCYjMzk7cyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUGAgaXMgZGVmaW5lZCBjb3JyZWN0bHkgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCBzcGVjaWZpY2FsbHkgaW4gYEtjb25maWdgLiBHb3R0YSBjb25maXJtIHRoYXQgZW5hYmxpbmcgU0NUUCBzdXBwb3J0IGFsc28gZW5hYmxlcyB0aGUgbmVjZXNzYXJ5IGNvbm5lY3Rpb24gdHJhY2tpbmcgaG9va3MuIFRoaXMgc2VlbXMgZmFpcmx5IGJhc2ljLCBidXQgaXQmIzM5O3MgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBzZXQgcHJvcGVybHkgYmVmb3JlIGRpZ2dpbmcgaW4gYW55IGRlZXBlci4gQSBtaXNjb25maWd1cmVkIGtlcm5lbCBpcyBuZXZlciBmdW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NUX1BST1RPX1NDVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTE5OD1jb25maWcgTkZfQ1RfUFJPVE9fR1JFXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIwMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMDE6Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMDItXHRib29sICYjMzk7U0NUUCBwcm90b2NvbCBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMzIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uLCBwcmVzZW50ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgU0NUUCBQcm90b2NvbCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE5GX0NUX1BST1RPX1NDVFBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBtb2R1bGVzLCBvciBzdWJzeXN0ZW1zIGRvZXMgdGhpcyByZWx5IG9uPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gcHJvcGVybHkgaW50ZWdyYXRlIG9yIGRlYnVnIGl0LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgbm90IGp1c3Qgd2hhdCBpbmNsdWRlcyBpdCwgYnV0IHdoYXQgKml0KiBuZWVkcyB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgY291bGQgaW52b2x2ZSBsb29raW5nIGF0IGNvcmUgbmV0d29ya2luZyBpbmZyYXN0cnVjdHVyZSwgY29ubmVjdGlvbiB0cmFja2luZyBtZWNoYW5pc21zLCBvciBldmVuIHNwZWNpZmljIFNDVFAgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gVW5kZXJzdGFuZGluZyB0aG9zZSBjb25uZWN0aW9ucyBpcyBlc3NlbnRpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGZ1bmN0aW9uIHdpdGhpbiB0aGUgd2lkZXIgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBjb25mbGljdHMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBtZWFucyB0cmFjaW5nIHRoZSBjb2RlJiMzOTtzIGxpbmVhZ2UsIGNoZWNraW5nIGRvY3VtZW50YXRpb24gYW5kIGRpdmluZyBpbnRvIHRoZSBjb2RlIHRvIGNoZWNrIGluY2x1ZGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMDA6XHRcbiAyMDE6XHRjb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxuIDIwMjpcdFx0Ym9vbCAmIzM5O1NDVFAgcHJvdG9jb2wgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0JiMzOTtcbiAyMDM6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMjA0Olx0XHRkZWZhdWx0IHlcbiAyMDU6XHRcdHNlbGVjdCBORVRfQ1JDMzJDXG4gMjA2Olx0XHRoZWxwXG4gMjA3Olx0XHQgIFdpdGggdGhpcyBvcHRpb24gZW5hYmxlZCwgdGhlIGxheWVyIDMgaW5kZXBlbmRlbnQgY29ubmVjdGlvblxuIDIwODpcdFx0ICB0cmFja2luZyBjb2RlIHdpbGwgYmUgYWJsZSB0byBkbyBzdGF0ZSB0cmFja2luZyBvbiBTQ1RQIGNvbm5lY3Rpb25zLlxuIDIwOTpcdFxuIDIxMDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuIDIxMTpcdFxuIDIxMjpcdGNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXG4gMjEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtBbWFuZGEgYmFja3VwIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiAyMTQ6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMjE1Olx0XHRzZWxlY3QgVEVYVFNFQVJDSFxuIDIxNjpcdFx0c2VsZWN0IFRFWFRTRUFSQ0hfS01QXG4gMjE3Olx0XHRoZWxwXG4gMjE4Olx0XHQgIElmIHlvdSBhcmUgcnVubmluZyB0aGUgQW1hbmRhIGJhY2t1cCBwYWNrYWdlIFx1MDAzY2h0dHA6Ly93d3cuYW1hbmRhLm9yZy9cdTAwM2VcbiAyMTk6XHRcdCAgb24gdGhpcyBtYWNoaW5lIG9yIG1hY2hpbmVzIHRoYXQgd2lsbCBiZSBNQVNRVUVSQURFRCB0aHJvdWdoIHRoaXNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODU4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVsdmluZyBpbnRvIHRoZSBLZXJuZWwmIzM5O3MgTmV0d29yayBGaWx0ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCYjMzk7cyBydW5uaW5nIHRocm91Z2ggbXkgaGVhZC4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24sIGBORVRGSUxURVJfQURWQU5DRURgLCBhbmQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGhpbmdlcyBvbiBpdHMgZGVwZW5kZW5jaWVzLiBCdXQgd2FpdCBhIG1pbnV0ZeKApiBJc24mIzM5O3QgYG5mX2Nvbm50cmFja2AgaW50cmluc2ljYWxseSBsaW5rZWQgdG8gYE5GX0NPTk5UUkFDS2A/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgcmVsYXRpb25zaGlwLiBUbyB0cnVseSB1bmRlcnN0YW5kIGhvdyBgTkVURklMVEVSX0FEVkFOQ0VEYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSwgSSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5GX0NPTk5UUkFDS2AuIFdoYXQgb3RoZXIgY29tcG9uZW50cyBkb2VzICp0aGF0KiByZWx5IG9uPyBHZXR0aW5nIHRoZSBkZXBlbmRlbmNpZXMgc3RyYWlnaHQgaXMgY3J1Y2lhbCBmb3Igb3B0aW1pemluZyB0aGlzIGtlcm5lbCBidWlsZCBhbmQgYXZvaWRpbmcgYW55IHVuZXhwZWN0ZWQgY29uZmxpY3RzIG9yIG1pc3NpbmcgZmVhdHVyZXMuIFRpbWUgdG8gZGlnIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDSyQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTc0PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19PU0Zcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODI6Y29uZmlnIE5GX0NPTk5UUkFDS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTgzLVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTcxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBhbmQgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiB0aGUgb3JpZ2luYWwgdGV4dDoKCioqRm9jdXNpbmcgSW46IExpbmUgODIgYW5kIEJleW9uZCoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIGp1bXAgYWhlYWQgYW5kIHplcm8gaW4gb24gbGluZSA4MiBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIEl0JiMzOTtzIG9mdGVuIHdoZXJlIHRoZSBtb3JlIG51YW5jZWQgb3IgcG90ZW50aWFsbHkgY3JpdGljYWwgYXJndW1lbnRzIHN0YXJ0IHRvIGNyeXN0YWxsaXplLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBrZXkgYXNzdW1wdGlvbnMsIHRoZSBjb3JlIGNsYWltcywgYW5kIHRoZSBzdXBwb3J0aW5nIGV2aWRlbmNlIHByZXNlbnRlZCBmcm9tIHRoaXMgcG9pbnQgZm9yd2FyZC4gV2hhdCYjMzk7cyB0aGUgY2VudHJhbCBuYXJyYXRpdmUgYmVpbmcgYnVpbHQgKmFmdGVyKiB0aGlzIHRocmVzaG9sZD8gQXJlIHRoZXJlIGFueSBsb2dpY2FsIGxlYXBzIG9yIHVuc3VwcG9ydGVkIGFzc2VydGlvbnMgZW1lcmdpbmcgYXQgdGhpcyBzdGFnZT8gSXMgdGhlIGF1dGhvciB0YWtpbmcgYSBzcGVjaWZpYyBwZXJzcGVjdGl2ZT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgYXJndW1lbnQgdGhhdCBhcmUgYmVpbmcgcHJvcG9zZWQ/IElzIHRoZXJlIGFub3RoZXIgYXJndW1lbnQsIHRoYXQgbWF5IGNoYWxsZW5nZSB0aGUgY2VudHJhbCBuYXJyYXRpdmUgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZD8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoZSBhdXRob3IgaXMgZGV2ZWxvcGluZyB0aGVpciBhcmd1bWVudCBmcm9tIHRoaXMgcG9pbnQgb24g4oCTIGFyZSB0aGV5IHNvbGlkaWZ5aW5nIHRoZWlyIGZvdW5kYXRpb24gb3Igc3RhcnRpbmcgdG8gc2hvdyBjcmFja3MgaW4gdGhlIGxvZ2ljPyBJJiMzOTttIGFudGljaXBhdGluZyBib3RoIHBvaW50cywgdGhhdCBlaXRoZXIgc29saWRpZnlpbmcgZXZpZGVuY2UgY2FuIGJlIGZvdW5kIG9yIHRoYXQgdGhlIGFyZ3VtZW50IGZhbGxzIGFwYXJ0LiBJJiMzOTtsbCBuZWVkIHRvIGRpc3NlY3QgZWFjaCBwb2ludCB0byBzZWUgaWYgdGhlIG92ZXJhbGwgdGhlc2lzIGhvbGRzIHdhdGVyLCBvciBpZiBuZXcgcGVyc3BlY3RpdmVzIG5lZWQgdG8gYmUgYnJvdWdodCBpbnRvIHRoZSBkaXNjdXNzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRcdCAgZm9yIHBhc3NpdmUgT1MgZmluZ2VycHJpbnQgdmlhIE5GTkVUTElOSy5cbiAgODE6XHRcbiAgODI6XHRjb25maWcgTkZfQ09OTlRSQUNLXG4gIDgzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4gIDg0Olx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAgODU6XHRcdHNlbGVjdCBORl9ERUZSQUdfSVBWNFxuICA4NjpcdFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2IGlmIElQVjYgIT0gblxuICA4NzpcdFx0aGVscFxuICA4ODpcdFx0ICBDb25uZWN0aW9uIHRyYWNraW5nIGtlZXBzIGEgcmVjb3JkIG9mIHdoYXQgcGFja2V0cyBoYXZlIHBhc3NlZFxuICA4OTpcdFx0ICB0aHJvdWdoIHlvdXIgbWFjaGluZSwgaW4gb3JkZXIgdG8gZmlndXJlIG91dCBob3cgdGhleSBhcmUgcmVsYXRlZFxuICA5MDpcdFx0ICBpbnRvIGNvbm5lY3Rpb25zLlxuICA5MTpcdFxuICA5MjpcdFx0ICBUaGlzIGlzIHJlcXVpcmVkIHRvIGRvIE1hc3F1ZXJhZGluZyBvciBvdGhlciBraW5kcyBvZiBOZXR3b3JrXG4gIDkzOlx0XHQgIEFkZHJlc3MgVHJhbnNsYXRpb24uICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuaGFuY2UgcGFja2V0XG4gIDk0Olx0XHQgIGZpbHRlcmluZyAoc2VlIGBDb25uZWN0aW9uIHN0YXRlIG1hdGNoIHN1cHBvcnQmIzM5OyBiZWxvdykuXG4gIDk1Olx0XG4gIDk2Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuICA5NzpcdFxuICA5ODpcdGNvbmZpZyBORl9MT0dfU1lTTE9HXG4gIDk5Olx0XHR0cmlzdGF0ZSBcJiMzNDtTeXNsb2cgcGFja2V0IGxvZ2dpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc1OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipTQ1RQIENvbm5lY3Rpb24gVHJhY2tpbmcgQ29uZmlndXJhdGlvbiAtIEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgZW5hYmxpbmcgU0NUUCBjb25uZWN0aW9uIHRyYWNraW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX1BST1RPX1NDVFBgIGFyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZm9jdXMgb24uIE5vdywgYSBrZXkgcXVlc3Rpb24gYXJpc2VzOiBkbyBJICphbHNvKiBuZWVkIHRvIGVuYWJsZSBgSVBfU0NUUGAgdG8gYWN0dWFsbHkgZ2VuZXJhdGUgYW5kIHNlbmQgU0NUUCB0cmFmZmljIGZvciB0ZXN0aW5nIHRoaXM/IEkgbmVlZCB0byBiZSBhYmxlIHRvICpzZW5kKiB0aGUgcGFja2V0cyBmb3IgdGhlIHRyYWNraW5nIHRvIHdvcmsuIEhtbW0sIGFjdHVhbGx5LCBsZXQgbWUgcmVwaHJhc2UgdGhhdCDigJMgYE5GX0NUX1BST1RPX1NDVFBgIGlzIHJlc3BvbnNpYmxlIGZvciAqdHJhY2tpbmcqIHRoZSBTQ1RQIHBhY2tldHMsIHNvLCBmdW5kYW1lbnRhbGx5LCB5ZXMsIEkgbmVlZCBhIG1lY2hhbmlzbSB0byBzZW5kIFNDVFAgcGFja2V0cy4gUmlnaHQuIFNvLCB0aGUgbW9yZSBwb2ludGVkIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiAqaXMqIGBJUF9TQ1RQYCB0aGUgY29ycmVjdCBtZWNoYW5pc20sIG9yIGlzIHRoZXJlIGFub3RoZXIgd2F5IHRvIGdldCBTQ1RQIHBhY2tldHMgb24gdGhlIHdpcmU/IExldCYjMzk7cyBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NDVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWctNS1cbm5ldC9zY3RwL0tjb25maWc6NjptZW51Y29uZmlnIElQX1NDVFBcbm5ldC9zY3RwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNjUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFNDVFAgQ29ubnRyYWNrIEZ1bmN0aW9uKioKCkFscmlnaHQsIHN0cmFpZ2h0IHRvIHRoZSBwb2ludDogYElQX1NDVFBgIHVuZXF1aXZvY2FsbHkgc2lnbmlmaWVzIHRoZSBTQ1RQIChTdHJlYW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2wpLCBub3RoaW5nIGFtYmlndW91cyB0aGVyZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGF0IGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUgaGFuZGxlcyBTQ1RQIHRyYWZmaWMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZyBhdCBhIGxvdyBsZXZlbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrX3NjdHBfcGFja2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYz0yOTU9c3RhdGljIGJvb2wgc2N0cF9lcnJvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYy0zMjYtLyogUmV0dXJucyB2ZXJkaWN0IGZvciBwYWNrZXQsIG9yIC1ORl9BQ0NFUFQgZm9yIGludmFsaWQuICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmM6MzI3OmludCBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jLTMyOC1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MzAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipTQ1RQIFBhY2tldCBIYW5kbGluZyBpbiBuZl9jb25udHJhY2s6IEEgUHJpbWUgRnV6emluZyBUYXJnZXQqKgoKQWxyaWdodCwgc28gdGhlIGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGZ1bmN0aW9uIGlzICp0aGUqIGVudHJ5IHBvaW50IGZvciBTQ1RQIHRyYWZmaWMgd2l0aGluIHRoZSBgbmZfY29ubnRyYWNrYCBmcmFtZXdvcmssIGFuZCB0aGF0JiMzOTtzIHByZWNpc2VseSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBHaXZlbiBpdHMgcm9sZSBhcyB0aGUgcHJpbWFyeSBTQ1RQIHBhY2tldCBoYW5kbGVyIGNhbGxlZCBieSBOZXRmaWx0ZXIsIGl04oCZcyBzY3JlYW1pbmcgJiMzNDtmdXp6IG1lLiYjMzQ7IFRoZSBzaGVlciB2b2x1bWUgb2YgdHJhZmZpYyBwb3RlbnRpYWxseSBmbG93aW5nIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBtYWtlcyBpdCBhIGhpZ2gtdmFsdWUgdGFyZ2V0IGZvciB1bmNvdmVyaW5nIHZ1bG5lcmFiaWxpdGllcy4gSXTigJlzIGVzc2VudGlhbGx5IHRoZSBnYXRla2VlcGVyLgoKQnV0IEkgY2FuJiMzOTt0IGp1c3QgZGl2ZSBpbi4gRmlyc3QsIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBhcmVhcyB3aXRoaW4gdGhpcyBtb2R1bGUgdGhhdCB3YXJyYW50IGZ1cnRoZXIgZXhhbWluYXRpb24uIEFsd2F5cyBzdGFydCB3aXRoIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50LCBidXQgaXQgd291bGQgYmUgYSBtaXN0YWtlIHRvIGFzc3VtZSB0aGVyZSBhcmVuJiMzOTt0IHJlbGF0ZWQgZnVuY3Rpb25zIGhhbmRsaW5nIGVkZ2UgY2FzZXMgb3Igc3BlY2lmaWMgU0NUUCBjb250cm9sIG1lc3NhZ2VzIHRoYXQgYWxzbyByZXF1aXJlIG15IGF0dGVudGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgaXMgaW4gcGxheSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzIwOlx0XHRyZXR1cm4gZmFsc2U7XG4gMzIxOlx0b3V0X2ludmFsaWQ6XG4gMzIyOlx0XHRuZl9sNHByb3RvX2xvZ19pbnZhbGlkKHNrYiwgc3RhdGUsIElQUFJPVE9fU0NUUCwgXCYjMzQ7JXNcJiMzNDssIGxvZ21zZyk7XG4gMzIzOlx0XHRyZXR1cm4gdHJ1ZTtcbiAzMjQ6XHR9XG4gMzI1Olx0XG4gMzI2Olx0LyogUmV0dXJucyB2ZXJkaWN0IGZvciBwYWNrZXQsIG9yIC1ORl9BQ0NFUFQgZm9yIGludmFsaWQuICovXG4gMzI3Olx0aW50IG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChzdHJ1Y3QgbmZfY29ubiAqY3QsXG4gMzI4Olx0XHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDMyOTpcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IGRhdGFvZmYsXG4gMzMwOlx0XHRcdFx0ICAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiAzMzE6XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSlcbiAzMzI6XHR7XG4gMzMzOlx0XHRlbnVtIHNjdHBfY29ubnRyYWNrIG5ld19zdGF0ZSwgb2xkX3N0YXRlO1xuIDMzNDpcdFx0ZW51bSBpcF9jb25udHJhY2tfZGlyIGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbiAzMzU6XHRcdGNvbnN0IHN0cnVjdCBzY3RwaGRyICpzaDtcbiAzMzY6XHRcdHN0cnVjdCBzY3RwaGRyIF9zY3RwaDtcbiAzMzc6XHRcdGNvbnN0IHN0cnVjdCBzY3RwX2NodW5raGRyICpzY2g7XG4gMzM4Olx0XHRzdHJ1Y3Qgc2N0cF9jaHVua2hkciBfc2NoO1xuIDMzOTpcdFx0dV9pbnQzMl90IG9mZnNldCwgY291bnQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTQ1RQIENvbm50cmFjayBQYWNrZXQgSGFuZGxlcioqCgpPa2F5LCBzbyB0aGUgYG5mX2Nvbm50cmFja19zY3RwX3BhY2tldGAgZnVuY3Rpb24gc2VlbXMgdG8gYmUgdGhlIGNlbnRyYWwgcGllY2UgaGVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhpcyBzcGVjaWZpYyBwYXRjaD8gSXQgYXBwZWFycyB0aGUgbW9kaWZpY2F0aW9uIGlzIGxpbWl0ZWQgdG8ganVzdCB0aGlzIG9uZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpOb3csIGEgY3JpdGljYWwgcXVlc3Rpb24gYXJpc2VzOiBpcyBgbmZfY29ubnRyYWNrX3NjdHBfcGFja2V0YCBhIHN0YXRpYyBmdW5jdGlvbj8gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgc291cmNlIGNvZGUuIEFoLCBoZXJlIHdlIGFyZSBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jYCwgYW5kIGl0JiMzOTtzIGRlZmluZWQgYXMgYGludCBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LCAuLi4pYC4gTm8sIGl0JiMzOTtzICpub3QqIHN0YXRpYy4gVGhpcyBtZWFucyBpdCYjMzk7cyBlaXRoZXIgZXhwb3J0ZWQgb3IgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLiBUaGlzIGlzIGltcG9ydGFudCBhcyB0aGlzIGltcGFjdHMgaG93IGNoYW5nZXMgcHJvcGFnYXRlLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGVyZSBpdCBpcyBjYWxsZWQsIGFzIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmM9MTk2OT1zdGF0aWMgaW50IG5mX2Nvbm50cmFja19oYW5kbGVfcGFja2V0KHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTk4OS1cdGNhc2UgSVBQUk9UT19TQ1RQOlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjE5OTA6XHRcdHJldHVybiBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoY3QsIHNrYiwgZGF0YW9mZixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xOTkxLVx0XHRcdFx0XHRcdGN0aW5mbywgc3RhdGUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYz0yOTU9c3RhdGljIGJvb2wgc2N0cF9lcnJvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYy0zMjYtLyogUmV0dXJucyB2ZXJkaWN0IGZvciBwYWNrZXQsIG9yIC1ORl9BQ0NFUFQgZm9yIGludmFsaWQuICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmM6MzI3OmludCBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jLTMyOC1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MjYKCQkJCQkJCW91dHB1dDogMTQwCgkJCQkJCQl0aG91Z2h0czogODM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBTQ1RQIENvbm50cmFjayBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgU0NUUCBjb25uZWN0aW9uIHRyYWNraW5nIGltcGxlbWVudGF0aW9uLiBUaGUgc3RhcnRpbmcgcG9pbnQgc2VlbXMgdG8gYmUgYG5mX2Nvbm50cmFja19oYW5kbGVfcGFja2V0YCB3aXRoaW4gYG5mX2Nvbm50cmFja19jb3JlLmNgLiBUaGlzIG1lYW5zIGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGlzIHRoZSBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24gaGVyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJdCYjMzk7cyBjbGVhciB0aGF0IHdlIG5lZWQgYE5GX0NPTk5UUkFDS2AgYW5kIGBORl9DVF9QUk9UT19TQ1RQYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgYWxzbyBzZWUgYElQX1NDVFBgIGFzIGNydWNpYWwsIGFuZCBJJiMzOTtsbCBleHBsYWluIHdoeSBpbiBhIG1vbWVudC4gIFdlJiMzOTtsbCBhbHNvIG5lZWQgYE5FVEZJTFRFUmAgYW5kIGBORVRGSUxURVJfQURWQU5DRURgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRob3NlIG5hbWVzLi4uIFllcywgYE5GX0NPTk5UUkFDS2AsIGBORl9DVF9QUk9UT19TQ1RQYCwgYW5kIGBJUF9TQ1RQYCBhcmUgYWxsIGNvcnJlY3QuCgpBIHF1aWNrIGxvb2sgY29uZmlybXMgdGhhdCBgTkZfQ1RfUFJPVE9fU0NUUGAgaXMgZGVmYXVsdCBlbmFibGVkIHdoZW4gYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgZW5hYmxlZCwgYnV0IGl0JiMzOTtzIGFsd2F5cyBiZXR0ZXIgdG8gYmUgZXhwbGljaXQsIHNvIHdlJiMzOTtsbCBlbnN1cmUgdGhhdCYjMzk7cyBzZXQgaW4gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uCgpSZWdhcmRpbmcgYElQX1NDVFBgLCBpdCBsb29rcyBsaWtlIGhhdmluZyB0aGUgU0NUUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiBwcmVzZW50IGlzIHVzZWZ1bC4gV2hpbGUgdG9vbHMgbGlrZSBzeXprYWxsZXIgY2FuIGluamVjdCByYXcgcGFja2V0cywgaGF2aW5nIGBJUF9TQ1RQYCBhbGxvd3MgZm9yIHRoZSB1c2Ugb2Ygc3RhbmRhcmQgc29ja2V0cyB0byBnZW5lcmF0ZSB2YWxpZCBTQ1RQIHRyYWZmaWMuIFRoaXMgaXMgb2Z0ZW4gZmFyIG1vcmUgZWZmZWN0aXZlIGZvciB0aG9yb3VnaGx5IHRlc3RpbmcgdGhlIGNvbm50cmFjayBsb2dpYyBhbmQgcmVhY2hpbmcgdGhvc2UgZGVlcGVyIHN0YXRlcy4gU28sIHllcywgaW5jbHVkaW5nIGBJUF9TQ1RQYCBpcyBkZWZpbml0ZWx5IHRoZSB3YXkgdG8gZ28gaGVyZS4KCk5vdywgbGV0JiMzOTtzIHJldmlzaXQgdGhlIHBhdGNoIHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGFjY3VyYXRlLgoKYGBgYwotCQl9IGVsc2UgaWYgKHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLKSB7Ci0JCQljdC0mZ3Q7cHJvdG8uc2N0cC5pbml0W2Rpcl0gPSAwOwotCQkJY3QtJmd0O3Byb3RvLnNjdHAuaW5pdFshZGlyXSA9IDA7CiYjNDM7CQl9IGVsc2UgaWYgKHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLIHx8CiYjNDM7CQkJICAgc2NoLSZndDt0eXBlID09IFNDVFBfQ0lEX0VSUk9SIHx8CiYjNDM7CQkJICAgc2NoLSZndDt0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOIHx8CiYjNDM7CQkJICAgc2NoLSZndDt0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOX0FDSykgewomIzQzOwkJCWlmIChjdC0mZ3Q7cHJvdG8uc2N0cC52dGFnW2Rpcl0gJmFtcDsmYW1wOwomIzQzOwkJCSAgICBzaC0mZ3Q7dnRhZyAhPSBjdC0mZ3Q7cHJvdG8uc2N0cC52dGFnW2Rpcl0pCiYjNDM7CQkJCWdvdG8gb3V0X3VubG9jazsKJiM0MzsJCQlpZiAoc2NoLSZndDt0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9BQ0spIHsKJiM0MzsJCQkJY3QtJmd0O3Byb3RvLnNjdHAuaW5pdFtkaXJdID0gMDsKJiM0MzsJCQkJY3QtJmd0O3Byb3RvLnNjdHAuaW5pdFshZGlyXSA9IDA7CiYjNDM7CQkJfQpgYGAKCk9rYXksIGNvbmZpcm1lZC4gVGhlIHBhdGNoIGZvY3VzZXMgb24gYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIFNDVFAgY29ubnRyYWNrIGxvZ2ljLiBJdCBhZGRzIHZ0YWcgdmFsaWRhdGlvbiBmb3IgdGhvc2Ugc3BlY2lmaWMgY2h1bmsgdHlwZXM6IGBTQ1RQX0NJRF9DT09LSUVfQUNLYCwgYFNDVFBfQ0lEX0VSUk9SYCwgYFNDVFBfQ0lEX1NIVVRET1dOYCwgYW5kIGBTQ1RQX0NJRF9TSFVURE9XTl9BQ0tgLgoKVG8gcmVjYXA6CiogICAqKkZvY3VzIHN5bWJvbDoqKiBgbmZfY29ubnRyYWNrX3NjdHBfcGFja2V0YAoqICAgKipSZXF1aXJlZCBjb25maWdzOioqIGBORl9DT05OVFJBQ0tgLCBgTkZfQ1RfUFJPVE9fU0NUUGAsIGBJUF9TQ1RQYCwgYE5FVEZJTFRFUmAsIGBORVRGSUxURVJfQURWQU5DRURgLgoKQWxsIGNvbmZpZ3VyYXRpb24gbmFtZXMgdmVyaWZpZWQuIFRoYXQgc2hvdWxkIHByb3ZpZGUgYSBzb2xpZCBiYXNpcyBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9yIHJlcHJvZHVjdGlvbiBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9QUk9UT19TQ1RQJiMzNDssCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY29ubnRyYWNrX3NjdHBfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9QUk9UT19TQ1RQJiMzNDssCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY29ubnRyYWNrX3NjdHBfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMDo0OC4wMjcwNjMyMjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzI5NDY0NjMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0NUX1BST1RPX1NDVFBcIixcbiAgICBcIklQX1NDVFBcIixcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX2Nvbm50cmFja19zY3RwX3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMwOjQ4LjAyNzA3MjQ2OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg4ODg3Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOWM5NjI0OWJhYzhlZDBhZmQwNWRhMTdlNjA3MDNmY2QwYmFiMDAxM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyOSAwNTozMDo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcXG5pbmRleCA3ZTEwZmE2NWNiZGQzLi45OTc4ZWNkMDViMWU4IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuY1xcbkBAIC00MDcsOSArNDA3LDE3IEBAIGludCBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LFxcbiBcXHRcXHRcXHQvKiAoRCkgdnRhZyBtdXN0IGJlIHNhbWUgYXMgaW5pdF92dGFnIGFzIGZvdW5kIGluIElOSVRfQUNLICovXFxuIFxcdFxcdFxcdGlmIChzaC1cXHUwMDNldnRhZyAhPSBjdC1cXHUwMDNlcHJvdG8uc2N0cC52dGFnW2Rpcl0pXFxuIFxcdFxcdFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4tXFx0XFx0fSBlbHNlIGlmIChzY2gtXFx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSykge1xcbi1cXHRcXHRcXHRjdC1cXHUwMDNlcHJvdG8uc2N0cC5pbml0W2Rpcl0gPSAwO1xcbi1cXHRcXHRcXHRjdC1cXHUwMDNlcHJvdG8uc2N0cC5pbml0WyFkaXJdID0gMDtcXG4rXFx0XFx0fSBlbHNlIGlmIChzY2gtXFx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSyB8fFxcbitcXHRcXHRcXHQgICBzY2gtXFx1MDAzZXR5cGUgPT0gU0NUUF9DSURfRVJST1IgfHxcXG4rXFx0XFx0XFx0ICAgc2NoLVxcdTAwM2V0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOIHx8XFxuK1xcdFxcdFxcdCAgIHNjaC1cXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9TSFVURE9XTl9BQ0spIHtcXG4rXFx0XFx0XFx0aWYgKGN0LVxcdTAwM2Vwcm90by5zY3RwLnZ0YWdbZGlyXSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgc2gtXFx1MDAzZXZ0YWcgIT0gY3QtXFx1MDAzZXByb3RvLnNjdHAudnRhZ1tkaXJdKVxcbitcXHRcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuK1xcdFxcdFxcdGlmIChzY2gtXFx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSykge1xcbitcXHRcXHRcXHRcXHRjdC1cXHUwMDNlcHJvdG8uc2N0cC5pbml0W2Rpcl0gPSAwO1xcbitcXHRcXHRcXHRcXHRjdC1cXHUwMDNlcHJvdG8uc2N0cC5pbml0WyFkaXJdID0gMDtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9IGVsc2UgaWYgKHNjaC1cXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9IRUFSVEJFQVQpIHtcXG4gXFx0XFx0XFx0aWYgKGN0LVxcdTAwM2Vwcm90by5zY3RwLnZ0YWdbZGlyXSA9PSAwKSB7XFxuIFxcdFxcdFxcdFxcdHByX2RlYnVnKFxcXCJTZXR0aW5nICVkIHZ0YWcgJXggZm9yIGRpciAlZFxcXFxuXFxcIiwgc2NoLVxcdTAwM2V0eXBlLCBzaC1cXHUwMDNldnRhZywgZGlyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzA6NDguNjE2ODE2NDc0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDY3MDQ4ODIzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9DVF9QUk9UT19TQ1RQXCIsXG4gICAgXCJJUF9TQ1RQXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMgZm9yIFNDVFAgcGFja2V0cywgc3BlY2lmaWNhbGx5IGFkZGluZyB2dGFnIHZhbGlkYXRpb24gZm9yIHNldmVyYWwgU0NUUCBjaHVuayB0eXBlcyAoQ09PS0lFX0FDSywgRVJST1IsIFNIVVRET1dOLCBTSFVURE9XTl9BQ0spLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBmaWx0ZXJpbmcgcGF0aCB0aGF0IGlzIHJlYWNoYWJsZSB3aGVuIHByb2Nlc3NpbmcgU0NUUCB0cmFmZmljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5Yzk2MjQ5YmFjOGVkMGFmZDA1ZGExN2U2MDcwM2ZjZDBiYWIwMDEzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDU6MzA6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcbmluZGV4IDdlMTBmYTY1Y2JkZDMuLjk5NzhlY2QwNWIxZTggMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuY1xuQEAgLTQwNyw5ICs0MDcsMTcgQEAgaW50IG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChzdHJ1Y3QgbmZfY29ubiAqY3QsXG4gXHRcdFx0LyogKEQpIHZ0YWcgbXVzdCBiZSBzYW1lIGFzIGluaXRfdnRhZyBhcyBmb3VuZCBpbiBJTklUX0FDSyAqL1xuIFx0XHRcdGlmIChzaC1cdTAwM2V2dGFnICE9IGN0LVx1MDAzZXByb3RvLnNjdHAudnRhZ1tkaXJdKVxuIFx0XHRcdFx0Z290byBvdXRfdW5sb2NrO1xuLVx0XHR9IGVsc2UgaWYgKHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9BQ0spIHtcbi1cdFx0XHRjdC1cdTAwM2Vwcm90by5zY3RwLmluaXRbZGlyXSA9IDA7XG4tXHRcdFx0Y3QtXHUwMDNlcHJvdG8uc2N0cC5pbml0WyFkaXJdID0gMDtcbitcdFx0fSBlbHNlIGlmIChzY2gtXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLIHx8XG4rXHRcdFx0ICAgc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfRVJST1IgfHxcbitcdFx0XHQgICBzY2gtXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9TSFVURE9XTiB8fFxuK1x0XHRcdCAgIHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOX0FDSykge1xuK1x0XHRcdGlmIChjdC1cdTAwM2Vwcm90by5zY3RwLnZ0YWdbZGlyXSBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgc2gtXHUwMDNldnRhZyAhPSBjdC1cdTAwM2Vwcm90by5zY3RwLnZ0YWdbZGlyXSlcbitcdFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbitcdFx0XHRpZiAoc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSykge1xuK1x0XHRcdFx0Y3QtXHUwMDNlcHJvdG8uc2N0cC5pbml0W2Rpcl0gPSAwO1xuK1x0XHRcdFx0Y3QtXHUwMDNlcHJvdG8uc2N0cC5pbml0WyFkaXJdID0gMDtcbitcdFx0XHR9XG4gXHRcdH0gZWxzZSBpZiAoc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfSEVBUlRCRUFUKSB7XG4gXHRcdFx0aWYgKGN0LVx1MDAzZXByb3RvLnNjdHAudnRhZ1tkaXJdID09IDApIHtcbiBcdFx0XHRcdHByX2RlYnVnKFwiU2V0dGluZyAlZCB2dGFnICV4IGZvciBkaXIgJWRcXG5cIiwgc2NoLVx1MDAzZXR5cGUsIHNoLVx1MDAzZXZ0YWcsIGRpcik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMDo0OC42MTY4MTc2OTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI5ODE2MjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0NUUCBDb25udHJhY2sgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2VzIGFyZSB0YXJnZXRpbmcgdGhlIGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGhvdyBuZXRmaWx0ZXIncyBjb25udHJhY2sgbW9kdWxlIGhhbmRsZXMgU0NUUCBwYWNrZXRzLCBmb2N1c2luZyBvbiBzY3J1dGluaXppbmcgdGhlIGB2dGFnYCBmaWVsZCBmb3IgY2VydGFpbiBjaHVuayBpZGVudGlmaWVyczogYFNDVFBfQ0lEX0NPT0tJRV9BQ0tgLCBgU0NUUF9DSURfRVJST1JgLCBgU0NUUF9DSURfU0hVVERPV05gLCBhbmQgYFNDVFBfQ0lEX1NIVVRET1dOX0FDS2AuIFRoYXQncyBpbnRlcmVzdGluZzsgSSB3b25kZXIgd2hhdCBzcGVjaWZpYyBhc3BlY3Qgb2YgY29ubmVjdGlvbiB0cmFja2luZyB0aGlzIGlzIGFpbWluZyB0byBpbXByb3ZlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGJldHRlciwgZXNwZWNpYWxseSB0aGUgY29udGV4dCBvZiB0aG9zZSBzcGVjaWZpYyBjaHVuayB0eXBlcy5cblxuQmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBzaG91bGQgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQgbWUgcXVpY2tseSBydW4gYSBgZ2l0IGdyZXBgIHRvIGxvY2F0ZSB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvYCBkaXJlY3RvcnkuIFRoYXQnbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoYXQgY29uZmlndXJhdGlvbiBrbm9icyBhcmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgdGhpcyBTQ1RQIHByb3RvY29sIHN1cHBvcnQsIHNwZWNpZmljYWxseSBgbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuY2AsIGFuZCBpZiB0aGUgY29udGV4dCBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBoZWxwcyB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY0LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzA6NTIuNzQ2NjM5OTkyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMzMzODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2Nvbm50cmFja19wcm90b19zY3RwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE1PW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfT1ZTKSArPSBuZl9jb25udHJhY2tfb3ZzLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE2Om5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DVF9QUk9UT19TQ1RQKSArPSBuZl9jb25udHJhY2tfcHJvdG9fc2N0cC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNy1uZl9jb25udHJhY2stJChDT05GSUdfTkZfQ1RfUFJPVE9fR1JFKSArPSBuZl9jb25udHJhY2tfcHJvdG9fZ3JlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzA6NTIuODE4OTg3Mjg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg4OTkyODY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqU0NUUCBDb25uZWN0aW9uIFRyYWNraW5nIC0gQSBRdWljayBMb29rKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGF0IHRoZSBTQ1RQIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgZW5hYmxlZCBieSBgQ09ORklHX05GX0NUX1BST1RPX1NDVFBgLiAgVGhhdCdzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGlzIGluZGVlZCB0aGUgY2FzZS4gTGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX05GX0NUX1BST1RPX1NDVFBgIGlzIGRlZmluZWQgY29ycmVjdGx5IGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGluIGBLY29uZmlnYC4gR290dGEgY29uZmlybSB0aGF0IGVuYWJsaW5nIFNDVFAgc3VwcG9ydCBhbHNvIGVuYWJsZXMgdGhlIG5lY2Vzc2FyeSBjb25uZWN0aW9uIHRyYWNraW5nIGhvb2tzLiBUaGlzIHNlZW1zIGZhaXJseSBiYXNpYywgYnV0IGl0J3MgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSBpdCdzIHNldCBwcm9wZXJseSBiZWZvcmUgZGlnZ2luZyBpbiBhbnkgZGVlcGVyLiBBIG1pc2NvbmZpZ3VyZWQga2VybmVsIGlzIG5ldmVyIGZ1bi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMwOjU1LjcwODkyMDgyMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTg0OTMyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ1RfUFJPVE9fU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTE5OD1jb25maWcgTkZfQ1RfUFJPVE9fR1JFXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjAwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMDE6Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjAyLVxcdGJvb2wgJ1NDVFAgcHJvdG9jb2wgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0J1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMDo1NS43NzQ3NzY4ODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIyNjI3MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgU0NUUCBQcm90b2NvbCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTkZfQ1RfUFJPVE9fU0NUUGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMsIG1vZHVsZXMsIG9yIHN1YnN5c3RlbXMgZG9lcyB0aGlzIHJlbHkgb24/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0byBwcm9wZXJseSBpbnRlZ3JhdGUgb3IgZGVidWcgaXQuIEknbGwgbmVlZCB0byBrbm93IG5vdCBqdXN0IHdoYXQgaW5jbHVkZXMgaXQsIGJ1dCB3aGF0ICppdCogbmVlZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGNvdWxkIGludm9sdmUgbG9va2luZyBhdCBjb3JlIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUsIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWVjaGFuaXNtcywgb3IgZXZlbiBzcGVjaWZpYyBTQ1RQIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIFVuZGVyc3RhbmRpbmcgdGhvc2UgY29ubmVjdGlvbnMgaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBmdW5jdGlvbiB3aXRoaW4gdGhlIHdpZGVyIHN5c3RlbS4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBjb25mbGljdHMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBtZWFucyB0cmFjaW5nIHRoZSBjb2RlJ3MgbGluZWFnZSwgY2hlY2tpbmcgZG9jdW1lbnRhdGlvbiBhbmQgZGl2aW5nIGludG8gdGhlIGNvZGUgdG8gY2hlY2sgaW5jbHVkZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMzIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMDo1OC44OTc0MDY3MjJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHRcXG4gMjAxOlxcdGNvbmZpZyBORl9DVF9QUk9UT19TQ1RQXFxuIDIwMjpcXHRcXHRib29sICdTQ1RQIHByb3RvY29sIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydCdcXG4gMjAzOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDIwNDpcXHRcXHRkZWZhdWx0IHlcXG4gMjA1OlxcdFxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuIDIwNjpcXHRcXHRoZWxwXFxuIDIwNzpcXHRcXHQgIFdpdGggdGhpcyBvcHRpb24gZW5hYmxlZCwgdGhlIGxheWVyIDMgaW5kZXBlbmRlbnQgY29ubmVjdGlvblxcbiAyMDg6XFx0XFx0ICB0cmFja2luZyBjb2RlIHdpbGwgYmUgYWJsZSB0byBkbyBzdGF0ZSB0cmFja2luZyBvbiBTQ1RQIGNvbm5lY3Rpb25zLlxcbiAyMDk6XFx0XFxuIDIxMDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuIDIxMTpcXHRcXG4gMjEyOlxcdGNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXFxuIDIxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiQW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbiAyMTQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcXG4gMjE1OlxcdFxcdHNlbGVjdCBURVhUU0VBUkNIXFxuIDIxNjpcXHRcXHRzZWxlY3QgVEVYVFNFQVJDSF9LTVBcXG4gMjE3OlxcdFxcdGhlbHBcXG4gMjE4OlxcdFxcdCAgSWYgeW91IGFyZSBydW5uaW5nIHRoZSBBbWFuZGEgYmFja3VwIHBhY2thZ2UgXFx1MDAzY2h0dHA6Ly93d3cuYW1hbmRhLm9yZy9cXHUwMDNlXFxuIDIxOTpcXHRcXHQgIG9uIHRoaXMgbWFjaGluZSBvciBtYWNoaW5lcyB0aGF0IHdpbGwgYmUgTUFTUVVFUkFERUQgdGhyb3VnaCB0aGlzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMwOjU4Ljg5NzU3MDI2MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MjU4NDYwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVsdmluZyBpbnRvIHRoZSBLZXJuZWwncyBOZXR3b3JrIEZpbHRlciBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCdzIHJ1bm5pbmcgdGhyb3VnaCBteSBoZWFkLiBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgTkVURklMVEVSX0FEVkFOQ0VEYCwgYW5kIG15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gaXRzIGRlcGVuZGVuY2llcy4gQnV0IHdhaXQgYSBtaW51dGXigKYgSXNuJ3QgYG5mX2Nvbm50cmFja2AgaW50cmluc2ljYWxseSBsaW5rZWQgdG8gYE5GX0NPTk5UUkFDS2A/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgcmVsYXRpb25zaGlwLiBUbyB0cnVseSB1bmRlcnN0YW5kIGhvdyBgTkVURklMVEVSX0FEVkFOQ0VEYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSwgSSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5GX0NPTk5UUkFDS2AuIFdoYXQgb3RoZXIgY29tcG9uZW50cyBkb2VzICp0aGF0KiByZWx5IG9uPyBHZXR0aW5nIHRoZSBkZXBlbmRlbmNpZXMgc3RyYWlnaHQgaXMgY3J1Y2lhbCBmb3Igb3B0aW1pemluZyB0aGlzIGtlcm5lbCBidWlsZCBhbmQgYXZvaWRpbmcgYW55IHVuZXhwZWN0ZWQgY29uZmxpY3RzIG9yIG1pc3NpbmcgZmVhdHVyZXMuIFRpbWUgdG8gZGlnIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzE6MDUuNTIzNDE5NTg2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM1OTE4NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDSyRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03ND1jb25maWcgTkVURklMVEVSX05FVExJTktfT1NGXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjgyOmNvbmZpZyBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODMtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMxOjA1LjYzNzAyNTQyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODMwNzEzNDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGFuZCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHRoZSBvcmlnaW5hbCB0ZXh0OlxuXG4qKkZvY3VzaW5nIEluOiBMaW5lIDgyIGFuZCBCZXlvbmQqKlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8ganVtcCBhaGVhZCBhbmQgemVybyBpbiBvbiBsaW5lIDgyIGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gSXQncyBvZnRlbiB3aGVyZSB0aGUgbW9yZSBudWFuY2VkIG9yIHBvdGVudGlhbGx5IGNyaXRpY2FsIGFyZ3VtZW50cyBzdGFydCB0byBjcnlzdGFsbGl6ZS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBrZXkgYXNzdW1wdGlvbnMsIHRoZSBjb3JlIGNsYWltcywgYW5kIHRoZSBzdXBwb3J0aW5nIGV2aWRlbmNlIHByZXNlbnRlZCBmcm9tIHRoaXMgcG9pbnQgZm9yd2FyZC4gV2hhdCdzIHRoZSBjZW50cmFsIG5hcnJhdGl2ZSBiZWluZyBidWlsdCAqYWZ0ZXIqIHRoaXMgdGhyZXNob2xkPyBBcmUgdGhlcmUgYW55IGxvZ2ljYWwgbGVhcHMgb3IgdW5zdXBwb3J0ZWQgYXNzZXJ0aW9ucyBlbWVyZ2luZyBhdCB0aGlzIHN0YWdlPyBJcyB0aGUgYXV0aG9yIHRha2luZyBhIHNwZWNpZmljIHBlcnNwZWN0aXZlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBhcmd1bWVudCB0aGF0IGFyZSBiZWluZyBwcm9wb3NlZD8gSXMgdGhlcmUgYW5vdGhlciBhcmd1bWVudCwgdGhhdCBtYXkgY2hhbGxlbmdlIHRoZSBjZW50cmFsIG5hcnJhdGl2ZSB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhlIGF1dGhvciBpcyBkZXZlbG9waW5nIHRoZWlyIGFyZ3VtZW50IGZyb20gdGhpcyBwb2ludCBvbiDigJMgYXJlIHRoZXkgc29saWRpZnlpbmcgdGhlaXIgZm91bmRhdGlvbiBvciBzdGFydGluZyB0byBzaG93IGNyYWNrcyBpbiB0aGUgbG9naWM/IEknbSBhbnRpY2lwYXRpbmcgYm90aCBwb2ludHMsIHRoYXQgZWl0aGVyIHNvbGlkaWZ5aW5nIGV2aWRlbmNlIGNhbiBiZSBmb3VuZCBvciB0aGF0IHRoZSBhcmd1bWVudCBmYWxscyBhcGFydC4gSSdsbCBuZWVkIHRvIGRpc3NlY3QgZWFjaCBwb2ludCB0byBzZWUgaWYgdGhlIG92ZXJhbGwgdGhlc2lzIGhvbGRzIHdhdGVyLCBvciBpZiBuZXcgcGVyc3BlY3RpdmVzIG5lZWQgdG8gYmUgYnJvdWdodCBpbnRvIHRoZSBkaXNjdXNzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzE6MDkuNDY3NzQzNzM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODA6XFx0XFx0ICBmb3IgcGFzc2l2ZSBPUyBmaW5nZXJwcmludCB2aWEgTkZORVRMSU5LLlxcbiAgODE6XFx0XFxuICA4MjpcXHRjb25maWcgTkZfQ09OTlRSQUNLXFxuICA4MzpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG4gIDg0OlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiAgODU6XFx0XFx0c2VsZWN0IE5GX0RFRlJBR19JUFY0XFxuICA4NjpcXHRcXHRzZWxlY3QgTkZfREVGUkFHX0lQVjYgaWYgSVBWNiAhPSBuXFxuICA4NzpcXHRcXHRoZWxwXFxuICA4ODpcXHRcXHQgIENvbm5lY3Rpb24gdHJhY2tpbmcga2VlcHMgYSByZWNvcmQgb2Ygd2hhdCBwYWNrZXRzIGhhdmUgcGFzc2VkXFxuICA4OTpcXHRcXHQgIHRocm91Z2ggeW91ciBtYWNoaW5lLCBpbiBvcmRlciB0byBmaWd1cmUgb3V0IGhvdyB0aGV5IGFyZSByZWxhdGVkXFxuICA5MDpcXHRcXHQgIGludG8gY29ubmVjdGlvbnMuXFxuICA5MTpcXHRcXG4gIDkyOlxcdFxcdCAgVGhpcyBpcyByZXF1aXJlZCB0byBkbyBNYXNxdWVyYWRpbmcgb3Igb3RoZXIga2luZHMgb2YgTmV0d29ya1xcbiAgOTM6XFx0XFx0ICBBZGRyZXNzIFRyYW5zbGF0aW9uLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBlbmhhbmNlIHBhY2tldFxcbiAgOTQ6XFx0XFx0ICBmaWx0ZXJpbmcgKHNlZSBgQ29ubmVjdGlvbiBzdGF0ZSBtYXRjaCBzdXBwb3J0JyBiZWxvdykuXFxuICA5NTpcXHRcXG4gIDk2OlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICA5NzpcXHRcXG4gIDk4OlxcdGNvbmZpZyBORl9MT0dfU1lTTE9HXFxuICA5OTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3lzbG9nIHBhY2tldCBsb2dnaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMTowOS40Njc4ODc5MzZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwOTExNjA5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKlNDVFAgQ29ubmVjdGlvbiBUcmFja2luZyBDb25maWd1cmF0aW9uIC0gSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgZW5hYmxpbmcgU0NUUCBjb25uZWN0aW9uIHRyYWNraW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX1BST1RPX1NDVFBgIGFyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZm9jdXMgb24uIE5vdywgYSBrZXkgcXVlc3Rpb24gYXJpc2VzOiBkbyBJICphbHNvKiBuZWVkIHRvIGVuYWJsZSBgSVBfU0NUUGAgdG8gYWN0dWFsbHkgZ2VuZXJhdGUgYW5kIHNlbmQgU0NUUCB0cmFmZmljIGZvciB0ZXN0aW5nIHRoaXM/IEkgbmVlZCB0byBiZSBhYmxlIHRvICpzZW5kKiB0aGUgcGFja2V0cyBmb3IgdGhlIHRyYWNraW5nIHRvIHdvcmsuIEhtbW0sIGFjdHVhbGx5LCBsZXQgbWUgcmVwaHJhc2UgdGhhdCDigJMgYE5GX0NUX1BST1RPX1NDVFBgIGlzIHJlc3BvbnNpYmxlIGZvciAqdHJhY2tpbmcqIHRoZSBTQ1RQIHBhY2tldHMsIHNvLCBmdW5kYW1lbnRhbGx5LCB5ZXMsIEkgbmVlZCBhIG1lY2hhbmlzbSB0byBzZW5kIFNDVFAgcGFja2V0cy4gUmlnaHQuIFNvLCB0aGUgbW9yZSBwb2ludGVkIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiAqaXMqIGBJUF9TQ1RQYCB0aGUgY29ycmVjdCBtZWNoYW5pc20sIG9yIGlzIHRoZXJlIGFub3RoZXIgd2F5IHRvIGdldCBTQ1RQIHBhY2tldHMgb24gdGhlIHdpcmU/IExldCdzIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzU5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMToxMy42NzcwMDgyMjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NjgzNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TQ1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvS2NvbmZpZy01LVxcbm5ldC9zY3RwL0tjb25maWc6NjptZW51Y29uZmlnIElQX1NDVFBcXG5uZXQvc2N0cC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlRoZSBTQ1RQIFByb3RvY29sXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMToxMy43MzQ2OTgxMTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxMTE1MTg2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBTQ1RQIENvbm50cmFjayBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHN0cmFpZ2h0IHRvIHRoZSBwb2ludDogYElQX1NDVFBgIHVuZXF1aXZvY2FsbHkgc2lnbmlmaWVzIHRoZSBTQ1RQIChTdHJlYW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2wpLCBub3RoaW5nIGFtYmlndW91cyB0aGVyZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGF0IGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGZ1bmN0aW9uLiBUaGF0J3MgdGhlIGNvcmUgb2YgaG93IHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZSBoYW5kbGVzIFNDVFAgdHJhZmZpYy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIGRvaW5nIGF0IGEgbG93IGxldmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTY1LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzE6MTYuNzQ1ODUzOTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTcxOTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2Nvbm50cmFja19zY3RwX3BhY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jPTI5NT1zdGF0aWMgYm9vbCBzY3RwX2Vycm9yKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMtMzI2LS8qIFJldHVybnMgdmVyZGljdCBmb3IgcGFja2V0LCBvciAtTkZfQUNDRVBUIGZvciBpbnZhbGlkLiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYzozMjc6aW50IG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jLTMyOC1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMxOjE2LjgwNTAzMjQyOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA3NjIxMjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipTQ1RQIFBhY2tldCBIYW5kbGluZyBpbiBuZl9jb25udHJhY2s6IEEgUHJpbWUgRnV6emluZyBUYXJnZXQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYG5mX2Nvbm50cmFja19zY3RwX3BhY2tldGAgZnVuY3Rpb24gaXMgKnRoZSogZW50cnkgcG9pbnQgZm9yIFNDVFAgdHJhZmZpYyB3aXRoaW4gdGhlIGBuZl9jb25udHJhY2tgIGZyYW1ld29yaywgYW5kIHRoYXQncyBwcmVjaXNlbHkgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gR2l2ZW4gaXRzIHJvbGUgYXMgdGhlIHByaW1hcnkgU0NUUCBwYWNrZXQgaGFuZGxlciBjYWxsZWQgYnkgTmV0ZmlsdGVyLCBpdOKAmXMgc2NyZWFtaW5nIFwiZnV6eiBtZS5cIiBUaGUgc2hlZXIgdm9sdW1lIG9mIHRyYWZmaWMgcG90ZW50aWFsbHkgZmxvd2luZyB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gbWFrZXMgaXQgYSBoaWdoLXZhbHVlIHRhcmdldCBmb3IgdW5jb3ZlcmluZyB2dWxuZXJhYmlsaXRpZXMuIEl04oCZcyBlc3NlbnRpYWxseSB0aGUgZ2F0ZWtlZXBlci5cblxuQnV0IEkgY2FuJ3QganVzdCBkaXZlIGluLiBGaXJzdCwgSSBuZWVkIHRvIG1ldGhvZGljYWxseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGFyZWFzIHdpdGhpbiB0aGlzIG1vZHVsZSB0aGF0IHdhcnJhbnQgZnVydGhlciBleGFtaW5hdGlvbi4gQWx3YXlzIHN0YXJ0IHdpdGggdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIGJ1dCBpdCB3b3VsZCBiZSBhIG1pc3Rha2UgdG8gYXNzdW1lIHRoZXJlIGFyZW4ndCByZWxhdGVkIGZ1bmN0aW9ucyBoYW5kbGluZyBlZGdlIGNhc2VzIG9yIHNwZWNpZmljIFNDVFAgY29udHJvbCBtZXNzYWdlcyB0aGF0IGFsc28gcmVxdWlyZSBteSBhdHRlbnRpb24uIExldCdzIHNlZSB3aGF0IGVsc2UgaXMgaW4gcGxheSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTMwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzE6MjAuNjEyNjU2NzU4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzIwOlxcdFxcdHJldHVybiBmYWxzZTtcXG4gMzIxOlxcdG91dF9pbnZhbGlkOlxcbiAzMjI6XFx0XFx0bmZfbDRwcm90b19sb2dfaW52YWxpZChza2IsIHN0YXRlLCBJUFBST1RPX1NDVFAsIFxcXCIlc1xcXCIsIGxvZ21zZyk7XFxuIDMyMzpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gMzI0OlxcdH1cXG4gMzI1OlxcdFxcbiAzMjY6XFx0LyogUmV0dXJucyB2ZXJkaWN0IGZvciBwYWNrZXQsIG9yIC1ORl9BQ0NFUFQgZm9yIGludmFsaWQuICovXFxuIDMyNzpcXHRpbnQgbmZfY29ubnRyYWNrX3NjdHBfcGFja2V0KHN0cnVjdCBuZl9jb25uICpjdCxcXG4gMzI4OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gMzI5OlxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGRhdGFvZmYsXFxuIDMzMDpcXHRcXHRcXHRcXHQgICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiAzMzE6XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXFxuIDMzMjpcXHR7XFxuIDMzMzpcXHRcXHRlbnVtIHNjdHBfY29ubnRyYWNrIG5ld19zdGF0ZSwgb2xkX3N0YXRlO1xcbiAzMzQ6XFx0XFx0ZW51bSBpcF9jb25udHJhY2tfZGlyIGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcXG4gMzM1OlxcdFxcdGNvbnN0IHN0cnVjdCBzY3RwaGRyICpzaDtcXG4gMzM2OlxcdFxcdHN0cnVjdCBzY3RwaGRyIF9zY3RwaDtcXG4gMzM3OlxcdFxcdGNvbnN0IHN0cnVjdCBzY3RwX2NodW5raGRyICpzY2g7XFxuIDMzODpcXHRcXHRzdHJ1Y3Qgc2N0cF9jaHVua2hkciBfc2NoO1xcbiAzMzk6XFx0XFx0dV9pbnQzMl90IG9mZnNldCwgY291bnQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMxOjIwLjYxMjc3MzUzOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDc0NzAyNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0NUUCBDb25udHJhY2sgUGFja2V0IEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyB0aGUgYG5mX2Nvbm50cmFja19zY3RwX3BhY2tldGAgZnVuY3Rpb24gc2VlbXMgdG8gYmUgdGhlIGNlbnRyYWwgcGllY2UgaGVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhpcyBzcGVjaWZpYyBwYXRjaD8gSXQgYXBwZWFycyB0aGUgbW9kaWZpY2F0aW9uIGlzIGxpbWl0ZWQgdG8ganVzdCB0aGlzIG9uZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuXG5cbk5vdywgYSBjcml0aWNhbCBxdWVzdGlvbiBhcmlzZXM6IGlzIGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGEgc3RhdGljIGZ1bmN0aW9uPyBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIGRlcGVuZGVuY2llcy4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIHNvdXJjZSBjb2RlLiBBaCwgaGVyZSB3ZSBhcmUgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuY2AsIGFuZCBpdCdzIGRlZmluZWQgYXMgYGludCBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LCAuLi4pYC4gTm8sIGl0J3MgKm5vdCogc3RhdGljLiBUaGlzIG1lYW5zIGl0J3MgZWl0aGVyIGV4cG9ydGVkIG9yIHVzZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4gVGhpcyBpcyBpbXBvcnRhbnQgYXMgdGhpcyBpbXBhY3RzIGhvdyBjaGFuZ2VzIHByb3BhZ2F0ZS4gSSBzaG91bGQgaW52ZXN0aWdhdGUgd2hlcmUgaXQgaXMgY2FsbGVkLCBhcyB0aGlzIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIxNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMxOjI0LjY4NzQ3OTQwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYyNTk1OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX3NjdHBfcGFja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xOTY5PXN0YXRpYyBpbnQgbmZfY29ubnRyYWNrX2hhbmRsZV9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE5ODktXFx0Y2FzZSBJUFBST1RPX1NDVFA6XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjE5OTA6XFx0XFx0cmV0dXJuIG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChjdCwgc2tiLCBkYXRhb2ZmLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xOTkxLVxcdFxcdFxcdFxcdFxcdFxcdGN0aW5mbywgc3RhdGUpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jPTI5NT1zdGF0aWMgYm9vbCBzY3RwX2Vycm9yKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMtMzI2LS8qIFJldHVybnMgdmVyZGljdCBmb3IgcGFja2V0LCBvciAtTkZfQUNDRVBUIGZvciBpbnZhbGlkLiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYzozMjc6aW50IG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jLTMyOC1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMxOjI0Ljc1Mzc0Njk3NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDQ1ODU1NTgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU0NUUCBDb25udHJhY2sgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBTQ1RQIGNvbm5lY3Rpb24gdHJhY2tpbmcgaW1wbGVtZW50YXRpb24uIFRoZSBzdGFydGluZyBwb2ludCBzZWVtcyB0byBiZSBgbmZfY29ubnRyYWNrX2hhbmRsZV9wYWNrZXRgIHdpdGhpbiBgbmZfY29ubnRyYWNrX2NvcmUuY2AuIFRoaXMgbWVhbnMgYG5mX2Nvbm50cmFja19zY3RwX3BhY2tldGAgaXMgdGhlIHN5bWJvbCB0byBjb25jZW50cmF0ZSBvbiBoZXJlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJdCdzIGNsZWFyIHRoYXQgd2UgbmVlZCBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX1BST1RPX1NDVFBgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBhbHNvIHNlZSBgSVBfU0NUUGAgYXMgY3J1Y2lhbCwgYW5kIEknbGwgZXhwbGFpbiB3aHkgaW4gYSBtb21lbnQuICBXZSdsbCBhbHNvIG5lZWQgYE5FVEZJTFRFUmAgYW5kIGBORVRGSUxURVJfQURWQU5DRURgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRob3NlIG5hbWVzLi4uIFllcywgYE5GX0NPTk5UUkFDS2AsIGBORl9DVF9QUk9UT19TQ1RQYCwgYW5kIGBJUF9TQ1RQYCBhcmUgYWxsIGNvcnJlY3QuXG5cbkEgcXVpY2sgbG9vayBjb25maXJtcyB0aGF0IGBORl9DVF9QUk9UT19TQ1RQYCBpcyBkZWZhdWx0IGVuYWJsZWQgd2hlbiBgTkVURklMVEVSX0FEVkFOQ0VEYCBpcyBlbmFibGVkLCBidXQgaXQncyBhbHdheXMgYmV0dGVyIHRvIGJlIGV4cGxpY2l0LCBzbyB3ZSdsbCBlbnN1cmUgdGhhdCdzIHNldCBpbiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi5cblxuUmVnYXJkaW5nIGBJUF9TQ1RQYCwgaXQgbG9va3MgbGlrZSBoYXZpbmcgdGhlIFNDVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gcHJlc2VudCBpcyB1c2VmdWwuIFdoaWxlIHRvb2xzIGxpa2Ugc3l6a2FsbGVyIGNhbiBpbmplY3QgcmF3IHBhY2tldHMsIGhhdmluZyBgSVBfU0NUUGAgYWxsb3dzIGZvciB0aGUgdXNlIG9mIHN0YW5kYXJkIHNvY2tldHMgdG8gZ2VuZXJhdGUgdmFsaWQgU0NUUCB0cmFmZmljLiBUaGlzIGlzIG9mdGVuIGZhciBtb3JlIGVmZmVjdGl2ZSBmb3IgdGhvcm91Z2hseSB0ZXN0aW5nIHRoZSBjb25udHJhY2sgbG9naWMgYW5kIHJlYWNoaW5nIHRob3NlIGRlZXBlciBzdGF0ZXMuIFNvLCB5ZXMsIGluY2x1ZGluZyBgSVBfU0NUUGAgaXMgZGVmaW5pdGVseSB0aGUgd2F5IHRvIGdvIGhlcmUuXG5cbk5vdywgbGV0J3MgcmV2aXNpdCB0aGUgcGF0Y2ggdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgaXMgYWNjdXJhdGUuXG5cbmBgYGNcbi1cdFx0fSBlbHNlIGlmIChzY2gtXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLKSB7XG4tXHRcdFx0Y3QtXHUwMDNlcHJvdG8uc2N0cC5pbml0W2Rpcl0gPSAwO1xuLVx0XHRcdGN0LVx1MDAzZXByb3RvLnNjdHAuaW5pdFshZGlyXSA9IDA7XG4rXHRcdH0gZWxzZSBpZiAoc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSyB8fFxuK1x0XHRcdCAgIHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0VSUk9SIHx8XG4rXHRcdFx0ICAgc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfU0hVVERPV04gfHxcbitcdFx0XHQgICBzY2gtXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9TSFVURE9XTl9BQ0spIHtcbitcdFx0XHRpZiAoY3QtXHUwMDNlcHJvdG8uc2N0cC52dGFnW2Rpcl0gXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgIHNoLVx1MDAzZXZ0YWcgIT0gY3QtXHUwMDNlcHJvdG8uc2N0cC52dGFnW2Rpcl0pXG4rXHRcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4rXHRcdFx0aWYgKHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9BQ0spIHtcbitcdFx0XHRcdGN0LVx1MDAzZXByb3RvLnNjdHAuaW5pdFtkaXJdID0gMDtcbitcdFx0XHRcdGN0LVx1MDAzZXByb3RvLnNjdHAuaW5pdFshZGlyXSA9IDA7XG4rXHRcdFx0fVxuYGBgXG5cbk9rYXksIGNvbmZpcm1lZC4gVGhlIHBhdGNoIGZvY3VzZXMgb24gYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIFNDVFAgY29ubnRyYWNrIGxvZ2ljLiBJdCBhZGRzIHZ0YWcgdmFsaWRhdGlvbiBmb3IgdGhvc2Ugc3BlY2lmaWMgY2h1bmsgdHlwZXM6IGBTQ1RQX0NJRF9DT09LSUVfQUNLYCwgYFNDVFBfQ0lEX0VSUk9SYCwgYFNDVFBfQ0lEX1NIVVRET1dOYCwgYW5kIGBTQ1RQX0NJRF9TSFVURE9XTl9BQ0tgLlxuXG5UbyByZWNhcDpcbiogICAqKkZvY3VzIHN5bWJvbDoqKiBgbmZfY29ubnRyYWNrX3NjdHBfcGFja2V0YFxuKiAgICoqUmVxdWlyZWQgY29uZmlnczoqKiBgTkZfQ09OTlRSQUNLYCwgYE5GX0NUX1BST1RPX1NDVFBgLCBgSVBfU0NUUGAsIGBORVRGSUxURVJgLCBgTkVURklMVEVSX0FEVkFOQ0VEYC5cblxuQWxsIGNvbmZpZ3VyYXRpb24gbmFtZXMgdmVyaWZpZWQuIFRoYXQgc2hvdWxkIHByb3ZpZGUgYSBzb2xpZCBiYXNpcyBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9yIHJlcHJvZHVjdGlvbiBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkyNiwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzE6MzUuMjEyMzA2NDE4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5Mzg3ODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0NUX1BST1RPX1NDVFBcIixcbiAgICBcIklQX1NDVFBcIixcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX2Nvbm50cmFja19zY3RwX3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9DVF9QUk9UT19TQ1RQXCIsXG4gICAgXCJJUF9TQ1RQXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMgZm9yIFNDVFAgcGFja2V0cywgc3BlY2lmaWNhbGx5IGFkZGluZyB2dGFnIHZhbGlkYXRpb24gZm9yIHNldmVyYWwgU0NUUCBjaHVuayB0eXBlcyAoQ09PS0lFX0FDSywgRVJST1IsIFNIVVRET1dOLCBTSFVURE9XTl9BQ0spLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBmaWx0ZXJpbmcgcGF0aCB0aGF0IGlzIHJlYWNoYWJsZSB3aGVuIHByb2Nlc3NpbmcgU0NUUCB0cmFmZmljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowljkdw[0].run-triage(0) Phase: Succeeded StartedAt: 2026-07-29 05:01:39 +0000 UTC FinishedAt: 2026-07-29 05:31:36 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_PROTO_SCTP", "IP_SCTP", "NETFILTER_ADVANCED" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "nf", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git", "commit_hash": "97ac08560d236ca17f6606d9e671118e5eae5721", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "NF_CONNTRACK", "NF_CT_PROTO_SCTP", "IP_SCTP", "NETFILTER_ADVANCED" ], "series_id": "211abdd5-4444-4de8-8e4a-e06d8d5beaa5" }, "track": "KASAN", "fuzz": { "focus": [ "net" ], "focus_symbols": [ "nf_conntrack_sctp_packet" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9QUk9UT19TQ1RQJiMzNDssCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY29ubnRyYWNrX3NjdHBfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA5Yzk2MjQ5YmFjOGVkMGFmZDA1ZGExN2U2MDcwM2ZjZDBiYWIwMDEzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDU6MzA6NDYgMjAyNiAmIzQzOzAwMDBcblxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xuXG5kaWZmIC0tZ2l0IGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jIGIvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jXG5pbmRleCA3ZTEwZmE2NWNiZGQzLi45OTc4ZWNkMDViMWU4IDEwMDY0NFxuLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jXG4mIzQzOyYjNDM7JiM0MzsgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcbkBAIC00MDcsOSAmIzQzOzQwNywxNyBAQCBpbnQgbmZfY29ubnRyYWNrX3NjdHBfcGFja2V0KHN0cnVjdCBuZl9jb25uICpjdCxcbiBcdFx0XHQvKiAoRCkgdnRhZyBtdXN0IGJlIHNhbWUgYXMgaW5pdF92dGFnIGFzIGZvdW5kIGluIElOSVRfQUNLICovXG4gXHRcdFx0aWYgKHNoLVx1MDAzZXZ0YWcgIT0gY3QtXHUwMDNlcHJvdG8uc2N0cC52dGFnW2Rpcl0pXG4gXHRcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4tXHRcdH0gZWxzZSBpZiAoc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSykge1xuLVx0XHRcdGN0LVx1MDAzZXByb3RvLnNjdHAuaW5pdFtkaXJdID0gMDtcbi1cdFx0XHRjdC1cdTAwM2Vwcm90by5zY3RwLmluaXRbIWRpcl0gPSAwO1xuJiM0MztcdFx0fSBlbHNlIGlmIChzY2gtXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLIHx8XG4mIzQzO1x0XHRcdCAgIHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0VSUk9SIHx8XG4mIzQzO1x0XHRcdCAgIHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOIHx8XG4mIzQzO1x0XHRcdCAgIHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOX0FDSykge1xuJiM0MztcdFx0XHRpZiAoY3QtXHUwMDNlcHJvdG8uc2N0cC52dGFnW2Rpcl0gXHUwMDI2XHUwMDI2XG4mIzQzO1x0XHRcdCAgICBzaC1cdTAwM2V2dGFnICE9IGN0LVx1MDAzZXByb3RvLnNjdHAudnRhZ1tkaXJdKVxuJiM0MztcdFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbiYjNDM7XHRcdFx0aWYgKHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9BQ0spIHtcbiYjNDM7XHRcdFx0XHRjdC1cdTAwM2Vwcm90by5zY3RwLmluaXRbZGlyXSA9IDA7XG4mIzQzO1x0XHRcdFx0Y3QtXHUwMDNlcHJvdG8uc2N0cC5pbml0WyFkaXJdID0gMDtcbiYjNDM7XHRcdFx0fVxuIFx0XHR9IGVsc2UgaWYgKHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0hFQVJUQkVBVCkge1xuIFx0XHRcdGlmIChjdC1cdTAwM2Vwcm90by5zY3RwLnZ0YWdbZGlyXSA9PSAwKSB7XG4gXHRcdFx0XHRwcl9kZWJ1ZyhcJiMzNDtTZXR0aW5nICVkIHZ0YWcgJXggZm9yIGRpciAlZFxcblwmIzM0Oywgc2NoLVx1MDAzZXR5cGUsIHNoLVx1MDAzZXZ0YWcsIGRpcik7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Mi8xPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzA8L3RkPgoJCQk8dGQ+YWdlbnQ8L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+YmVzdC1leHBlbnNpdmU8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9QUk9UT19TQ1RQJiMzNDssCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY29ubnRyYWNrX3NjdHBfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5JbnN0cnVjdGlvbjo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPllvdSBhcmUgYW4gZXhwZXJ0IExpbnV4IGtlcm5lbCBtYWludGFpbmVyLgpZb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZQppZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuCgpJTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW4KeW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5CnVzZSB5b3VyIGNvZGUgYWNjZXNzIHRvb2xzIHRvIGV4YW1pbmUgdGhlIGFjdHVhbCBzb3VyY2UgY29kZSBhbmQgY29uZmlybSBhbnkgYXNzdW1wdGlvbnMuCgpSZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOgotIE1vZGlmaWNhdGlvbnMgdG8gRG9jdW1lbnRhdGlvbi8sIEtjb25maWcgZmlsZXMsIG9yIGNvZGUgY29tbWVudHMuCi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuCi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LgotIENvZGUgcGF0aHMgdGhhdCBhcmUgaW1wb3NzaWJsZSB0byByZWFjaCBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMgbGlrZSBHQ0Ugb3IgUUVNVSwKICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuCi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsCiAgaW9uaWMsIGFtZGdwdSkgdGhhdCByZXF1aXJlIHBoeXNpY2FsIFBDSWUgaGFyZHdhcmUgY2FyZHMgbm90IGVtdWxhdGVkIGluIHN0YW5kYXJkIFFFTVUuCi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSkKICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuCgpJZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoCnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLgoKV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086CjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuCiAgIEF2b2lkIGxpc3RpbmcgZ2VuZXJpYyBob3QtcGF0aCBmdW5jdGlvbnMgdG8gcHJldmVudCBza2V3ZWQgdGVzdCBkaXN0cmlidXRpb25zLgogICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnMKICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuCjIuIElkZW50aWZ5IGFueSBzcGVjaWZpYyBDT05GSUdfIG9wdGlvbnMgcmVxdWlyZWQgdG8gcHJvcGVybHkgdGVzdCB0aGlzIG5ldy9tb2RpZmllZCBmZWF0dXJlLgogICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuCiAgIEFsc28gY2hlY2sgJiMzNDtkZXBlbmRzIG9uJiMzNDsgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzCiAgIG5lZWRlZCBmb3IgS2J1aWxkIHRvIGNvbXBpbGUgdGhlIGNvZGUgc3RhdGljYWxseSBpbnRvIHZtbGludXguIExpc3QgdGhlbSBpbiB0aGUgRW5hYmxlQ29uZmlncwogICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJiMzOTtDT05GSUdfJiMzOTsgcHJlZml4IChlLmcuLCByZXR1cm4gJiMzNDtORVRfSVBWNCYjMzQ7IGluc3RlYWQgb2YgJiMzNDtDT05GSUdfTkVUX0lQVjQmIzM0OykuClByZWZlciBjYWxsaW5nIHNldmVyYWwgdG9vbHMgYXQgdGhlIHNhbWUgdGltZSB0byBzYXZlIHJvdW5kLXRyaXBzLgoKClVzZSBzZXQtcmVzdWx0cyB0b29sIHRvIHByb3ZpZGUgcmVzdWx0cyBvZiB0aGUgYW5hbHlzaXMuCkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LgpJZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UHJvbXB0OjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Rm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6CmNvbW1pdCA5Yzk2MjQ5YmFjOGVkMGFmZDA1ZGExN2U2MDcwM2ZjZDBiYWIwMDEzCkF1dGhvcjogc3l6LWNsdXN0ZXIgJmx0O3RyaWFnZUBzeXprYWxsZXIuY29tJmd0OwpEYXRlOiAgIFdlZCBKdWwgMjkgMDU6MzA6NDYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMKaW5kZXggN2UxMGZhNjVjYmRkMy4uOTk3OGVjZDA1YjFlOCAxMDA2NDQKLS0tIGEvbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jCiYjNDM7JiM0MzsmIzQzOyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYwpAQCAtNDA3LDkgJiM0Mzs0MDcsMTcgQEAgaW50IG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChzdHJ1Y3QgbmZfY29ubiAqY3QsCiAJCQkvKiAoRCkgdnRhZyBtdXN0IGJlIHNhbWUgYXMgaW5pdF92dGFnIGFzIGZvdW5kIGluIElOSVRfQUNLICovCiAJCQlpZiAoc2gtJmd0O3Z0YWcgIT0gY3QtJmd0O3Byb3RvLnNjdHAudnRhZ1tkaXJdKQogCQkJCWdvdG8gb3V0X3VubG9jazsKLQkJfSBlbHNlIGlmIChzY2gtJmd0O3R5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSykgewotCQkJY3QtJmd0O3Byb3RvLnNjdHAuaW5pdFtkaXJdID0gMDsKLQkJCWN0LSZndDtwcm90by5zY3RwLmluaXRbIWRpcl0gPSAwOwomIzQzOwkJfSBlbHNlIGlmIChzY2gtJmd0O3R5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSyB8fAomIzQzOwkJCSAgIHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9FUlJPUiB8fAomIzQzOwkJCSAgIHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9TSFVURE9XTiB8fAomIzQzOwkJCSAgIHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9TSFVURE9XTl9BQ0spIHsKJiM0MzsJCQlpZiAoY3QtJmd0O3Byb3RvLnNjdHAudnRhZ1tkaXJdICZhbXA7JmFtcDsKJiM0MzsJCQkgICAgc2gtJmd0O3Z0YWcgIT0gY3QtJmd0O3Byb3RvLnNjdHAudnRhZ1tkaXJdKQomIzQzOwkJCQlnb3RvIG91dF91bmxvY2s7CiYjNDM7CQkJaWYgKHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLKSB7CiYjNDM7CQkJCWN0LSZndDtwcm90by5zY3RwLmluaXRbZGlyXSA9IDA7CiYjNDM7CQkJCWN0LSZndDtwcm90by5zY3RwLmluaXRbIWRpcl0gPSAwOwomIzQzOwkJCX0KIAkJfSBlbHNlIGlmIChzY2gtJmd0O3R5cGUgPT0gU0NUUF9DSURfSEVBUlRCRUFUKSB7CiAJCQlpZiAoY3QtJmd0O3Byb3RvLnNjdHAudnRhZ1tkaXJdID09IDApIHsKIAkJCQlwcl9kZWJ1ZygmIzM0O1NldHRpbmcgJWQgdnRhZyAleCBmb3IgZGlyICVkXG4mIzM0Oywgc2NoLSZndDt0eXBlLCBzaC0mZ3Q7dnRhZywgZGlyKTsKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjM2NAoJCQkJCQkJb3V0cHV0OiAzOQoJCQkJCQkJdGhvdWdodHM6IDE3NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgdGhlIFNDVFAgQ29ubnRyYWNrIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2VzIGFyZSB0YXJnZXRpbmcgdGhlIGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGhvdyBuZXRmaWx0ZXImIzM5O3MgY29ubnRyYWNrIG1vZHVsZSBoYW5kbGVzIFNDVFAgcGFja2V0cywgZm9jdXNpbmcgb24gc2NydXRpbml6aW5nIHRoZSBgdnRhZ2AgZmllbGQgZm9yIGNlcnRhaW4gY2h1bmsgaWRlbnRpZmllcnM6IGBTQ1RQX0NJRF9DT09LSUVfQUNLYCwgYFNDVFBfQ0lEX0VSUk9SYCwgYFNDVFBfQ0lEX1NIVVRET1dOYCwgYW5kIGBTQ1RQX0NJRF9TSFVURE9XTl9BQ0tgLiBUaGF0JiMzOTtzIGludGVyZXN0aW5nOyBJIHdvbmRlciB3aGF0IHNwZWNpZmljIGFzcGVjdCBvZiBjb25uZWN0aW9uIHRyYWNraW5nIHRoaXMgaXMgYWltaW5nIHRvIGltcHJvdmUuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoZSBpbXBsaWNhdGlvbnMgb2YgdGhpcyBjaGFuZ2UgYmV0dGVyLCBlc3BlY2lhbGx5IHRoZSBjb250ZXh0IG9mIHRob3NlIHNwZWNpZmljIGNodW5rIHR5cGVzLgoKQmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBzaG91bGQgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQgbWUgcXVpY2tseSBydW4gYSBgZ2l0IGdyZXBgIHRvIGxvY2F0ZSB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvYCBkaXJlY3RvcnkuIFRoYXQmIzM5O2xsIGdpdmUgbWUgYSBnb29kIGhhbmRsZSBvbiB3aGF0IGNvbmZpZ3VyYXRpb24ga25vYnMgYXJlIGludm9sdmVkIGluIGVuYWJsaW5nIHRoaXMgU0NUUCBwcm90b2NvbCBzdXBwb3J0LCBzcGVjaWZpY2FsbHkgYG5mX2Nvbm50cmFja19wcm90b19zY3RwLmNgLCBhbmQgaWYgdGhlIGNvbnRleHQgb2YgdGhpcyBjb25maWd1cmF0aW9uIGNoYW5nZXMgaGVscHMgdG8gdW5kZXJzdGFuZCB0aGUgcHVycG9zZSBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMDwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jb25udHJhY2tfcHJvdG9fc2N0cC5vJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9NYWtlZmlsZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE1PW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfT1ZTKSAmIzQzOz0gbmZfY29ubnRyYWNrX292cy5vXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE2Om5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DVF9QUk9UT19TQ1RQKSAmIzQzOz0gbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAub1xubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNy1uZl9jb25udHJhY2stJChDT05GSUdfTkZfQ1RfUFJPVE9fR1JFKSAmIzQzOz0gbmZfY29ubnRyYWNrX3Byb3RvX2dyZS5vXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzA8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMjk5NQoJCQkJCQkJb3V0cHV0OiAzNwoJCQkJCQkJdGhvdWdodHM6IDM4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQmIzM5O3MgaW50ZXJuYWwgbW9ub2xvZ3VlOgoKKipTQ1RQIENvbm5lY3Rpb24gVHJhY2tpbmcgLSBBIFF1aWNrIExvb2sqKgoKQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGF0IHRoZSBTQ1RQIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgZW5hYmxlZCBieSBgQ09ORklHX05GX0NUX1BST1RPX1NDVFBgLiAgVGhhdCYjMzk7cyBteSBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gdmVyaWZ5IHRoYXQgdGhpcyBpcyBpbmRlZWQgdGhlIGNhc2UuIExldCYjMzk7cyBxdWlja2x5IGRvdWJsZS1jaGVjayB0aGF0IGBDT05GSUdfTkZfQ1RfUFJPVE9fU0NUUGAgaXMgZGVmaW5lZCBjb3JyZWN0bHkgaW4gdGhlIGtlcm5lbCBjb25maWd1cmF0aW9uIGZpbGVzLCBzcGVjaWZpY2FsbHkgaW4gYEtjb25maWdgLiBHb3R0YSBjb25maXJtIHRoYXQgZW5hYmxpbmcgU0NUUCBzdXBwb3J0IGFsc28gZW5hYmxlcyB0aGUgbmVjZXNzYXJ5IGNvbm5lY3Rpb24gdHJhY2tpbmcgaG9va3MuIFRoaXMgc2VlbXMgZmFpcmx5IGJhc2ljLCBidXQgaXQmIzM5O3MgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSBpdCYjMzk7cyBzZXQgcHJvcGVybHkgYmVmb3JlIGRpZ2dpbmcgaW4gYW55IGRlZXBlci4gQSBtaXNjb25maWd1cmVkIGtlcm5lbCBpcyBuZXZlciBmdW4uCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ni8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzA8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NUX1BST1RPX1NDVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTE5OD1jb25maWcgTkZfQ1RfUFJPVE9fR1JFXG4tLVxubmV0L25ldGZpbHRlci9LY29uZmlnLTIwMC1cbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMDE6Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZy0yMDItXHRib29sICYjMzk7U0NUUCBwcm90b2NvbCBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnQmIzM5O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMwPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDMzMzIKCQkJCQkJCW91dHB1dDogMzUKCQkJCQkJCXRob3VnaHRzOiAxOQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+SGVyZSYjMzk7cyBteSBhbmFseXNpcyBvZiB0aGUgc2l0dWF0aW9uLCBwcmVzZW50ZWQgZnJvbSBteSBwZXJzcGVjdGl2ZSBhcyBhbiBleHBlcnQ6CgoqKkludmVzdGlnYXRpbmcgU0NUUCBQcm90b2NvbCBEZXBlbmRlbmNpZXMqKgoKT2theSwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgdGhlIGRlcGVuZGVuY2llcyBmb3IgYE5GX0NUX1BST1RPX1NDVFBgLiBNeSBpbW1lZGlhdGUgdGhvdWdodCBpcywgJiMzNDtXaGF0IG90aGVyIGtlcm5lbCBjb21wb25lbnRzLCBtb2R1bGVzLCBvciBzdWJzeXN0ZW1zIGRvZXMgdGhpcyByZWx5IG9uPyYjMzQ7IEkgbmVlZCB0byB1bmRlcnN0YW5kIHRoaXMgdG8gcHJvcGVybHkgaW50ZWdyYXRlIG9yIGRlYnVnIGl0LiBJJiMzOTtsbCBuZWVkIHRvIGtub3cgbm90IGp1c3Qgd2hhdCBpbmNsdWRlcyBpdCwgYnV0IHdoYXQgKml0KiBuZWVkcyB0byBmdW5jdGlvbiBjb3JyZWN0bHkuIFRoaXMgY291bGQgaW52b2x2ZSBsb29raW5nIGF0IGNvcmUgbmV0d29ya2luZyBpbmZyYXN0cnVjdHVyZSwgY29ubmVjdGlvbiB0cmFja2luZyBtZWNoYW5pc21zLCBvciBldmVuIHNwZWNpZmljIFNDVFAgaW1wbGVtZW50YXRpb24gZGV0YWlscy4gVW5kZXJzdGFuZGluZyB0aG9zZSBjb25uZWN0aW9ucyBpcyBlc3NlbnRpYWwgZm9yIHVuZGVyc3RhbmRpbmcgaXRzIGZ1bmN0aW9uIHdpdGhpbiB0aGUgd2lkZXIgc3lzdGVtLiBJJiMzOTtsbCBuZWVkIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBjb25mbGljdHMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBtZWFucyB0cmFjaW5nIHRoZSBjb2RlJiMzOTtzIGxpbmVhZ2UsIGNoZWNraW5nIGRvY3VtZW50YXRpb24gYW5kIGRpdmluZyBpbnRvIHRoZSBjb2RlIHRvIGNoZWNrIGluY2x1ZGVzLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjgvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMwPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMjAwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAyMDA6XHRcbiAyMDE6XHRjb25maWcgTkZfQ1RfUFJPVE9fU0NUUFxuIDIwMjpcdFx0Ym9vbCAmIzM5O1NDVFAgcHJvdG9jb2wgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0JiMzOTtcbiAyMDM6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMjA0Olx0XHRkZWZhdWx0IHlcbiAyMDU6XHRcdHNlbGVjdCBORVRfQ1JDMzJDXG4gMjA2Olx0XHRoZWxwXG4gMjA3Olx0XHQgIFdpdGggdGhpcyBvcHRpb24gZW5hYmxlZCwgdGhlIGxheWVyIDMgaW5kZXBlbmRlbnQgY29ubmVjdGlvblxuIDIwODpcdFx0ICB0cmFja2luZyBjb2RlIHdpbGwgYmUgYWJsZSB0byBkbyBzdGF0ZSB0cmFja2luZyBvbiBTQ1RQIGNvbm5lY3Rpb25zLlxuIDIwOTpcdFxuIDIxMDpcdFx0ICBJZiB1bnN1cmUsIHNheSBZLlxuIDIxMTpcdFxuIDIxMjpcdGNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXG4gMjEzOlx0XHR0cmlzdGF0ZSBcJiMzNDtBbWFuZGEgYmFja3VwIHByb3RvY29sIHN1cHBvcnRcJiMzNDtcbiAyMTQ6XHRcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXG4gMjE1Olx0XHRzZWxlY3QgVEVYVFNFQVJDSFxuIDIxNjpcdFx0c2VsZWN0IFRFWFRTRUFSQ0hfS01QXG4gMjE3Olx0XHRoZWxwXG4gMjE4Olx0XHQgIElmIHlvdSBhcmUgcnVubmluZyB0aGUgQW1hbmRhIGJhY2t1cCBwYWNrYWdlIFx1MDAzY2h0dHA6Ly93d3cuYW1hbmRhLm9yZy9cdTAwM2VcbiAyMTk6XHRcdCAgb24gdGhpcyBtYWNoaW5lIG9yIG1hY2hpbmVzIHRoYXQgd2lsbCBiZSBNQVNRVUVSQURFRCB0aHJvdWdoIHRoaXNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD45LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAzODU4CgkJCQkJCQlvdXRwdXQ6IDMzCgkJCQkJCQl0aG91Z2h0czogNDQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqRGVsdmluZyBpbnRvIHRoZSBLZXJuZWwmIzM5O3MgTmV0d29yayBGaWx0ZXIgRGVwZW5kZW5jaWVzKioKCk9rYXksIGhlcmUmIzM5O3Mgd2hhdCYjMzk7cyBydW5uaW5nIHRocm91Z2ggbXkgaGVhZC4gSSYjMzk7bSBsb29raW5nIGF0IHRoaXMgY29uZmlndXJhdGlvbiBvcHRpb24sIGBORVRGSUxURVJfQURWQU5DRURgLCBhbmQgbXkgaW5pdGlhbCBhc3Nlc3NtZW50IGhpbmdlcyBvbiBpdHMgZGVwZW5kZW5jaWVzLiBCdXQgd2FpdCBhIG1pbnV0ZeKApiBJc24mIzM5O3QgYG5mX2Nvbm50cmFja2AgaW50cmluc2ljYWxseSBsaW5rZWQgdG8gYE5GX0NPTk5UUkFDS2A/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgcmVsYXRpb25zaGlwLiBUbyB0cnVseSB1bmRlcnN0YW5kIGhvdyBgTkVURklMVEVSX0FEVkFOQ0VEYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSwgSSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5GX0NPTk5UUkFDS2AuIFdoYXQgb3RoZXIgY29tcG9uZW50cyBkb2VzICp0aGF0KiByZWx5IG9uPyBHZXR0aW5nIHRoZSBkZXBlbmRlbmNpZXMgc3RyYWlnaHQgaXMgY3J1Y2lhbCBmb3Igb3B0aW1pemluZyB0aGlzIGtlcm5lbCBidWlsZCBhbmQgYXZvaWRpbmcgYW55IHVuZXhwZWN0ZWQgY29uZmxpY3RzIG9yIG1pc3NpbmcgZmVhdHVyZXMuIFRpbWUgdG8gZGlnIGRlZXBlci4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIE5GX0NPTk5UUkFDSyQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL0tjb25maWcmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9LY29uZmlnPTc0PWNvbmZpZyBORVRGSUxURVJfTkVUTElOS19PU0Zcbi0tXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODEtXG5uZXQvbmV0ZmlsdGVyL0tjb25maWc6ODI6Y29uZmlnIE5GX0NPTk5UUkFDS1xubmV0L25ldGZpbHRlci9LY29uZmlnLTgzLVx0dHJpc3RhdGUgXCYjMzQ7TmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA0MTcxCgkJCQkJCQlvdXRwdXQ6IDM0CgkJCQkJCQl0aG91Z2h0czogMTAKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgdGhlIHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJiMzOTttIGFuIGV4cGVydCBhbmQgdGFraW5nIHRoZSBwZXJzcGVjdGl2ZSBvZiB0aGUgb3JpZ2luYWwgdGV4dDoKCioqRm9jdXNpbmcgSW46IExpbmUgODIgYW5kIEJleW9uZCoqCgpBbHJpZ2h0LCBJJiMzOTttIGdvaW5nIHRvIGp1bXAgYWhlYWQgYW5kIHplcm8gaW4gb24gbGluZSA4MiBhbmQgdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQuIEl0JiMzOTtzIG9mdGVuIHdoZXJlIHRoZSBtb3JlIG51YW5jZWQgb3IgcG90ZW50aWFsbHkgY3JpdGljYWwgYXJndW1lbnRzIHN0YXJ0IHRvIGNyeXN0YWxsaXplLiBJJiMzOTttIGxvb2tpbmcgZm9yIHRoZSBrZXkgYXNzdW1wdGlvbnMsIHRoZSBjb3JlIGNsYWltcywgYW5kIHRoZSBzdXBwb3J0aW5nIGV2aWRlbmNlIHByZXNlbnRlZCBmcm9tIHRoaXMgcG9pbnQgZm9yd2FyZC4gV2hhdCYjMzk7cyB0aGUgY2VudHJhbCBuYXJyYXRpdmUgYmVpbmcgYnVpbHQgKmFmdGVyKiB0aGlzIHRocmVzaG9sZD8gQXJlIHRoZXJlIGFueSBsb2dpY2FsIGxlYXBzIG9yIHVuc3VwcG9ydGVkIGFzc2VydGlvbnMgZW1lcmdpbmcgYXQgdGhpcyBzdGFnZT8gSXMgdGhlIGF1dGhvciB0YWtpbmcgYSBzcGVjaWZpYyBwZXJzcGVjdGl2ZT8gV2hhdCBhcmUgdGhlIGltcGxpY2F0aW9ucyBvZiB0aGUgYXJndW1lbnQgdGhhdCBhcmUgYmVpbmcgcHJvcG9zZWQ/IElzIHRoZXJlIGFub3RoZXIgYXJndW1lbnQsIHRoYXQgbWF5IGNoYWxsZW5nZSB0aGUgY2VudHJhbCBuYXJyYXRpdmUgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZD8gSSBuZWVkIHRvIGFuYWx5emUgaG93IHRoZSBhdXRob3IgaXMgZGV2ZWxvcGluZyB0aGVpciBhcmd1bWVudCBmcm9tIHRoaXMgcG9pbnQgb24g4oCTIGFyZSB0aGV5IHNvbGlkaWZ5aW5nIHRoZWlyIGZvdW5kYXRpb24gb3Igc3RhcnRpbmcgdG8gc2hvdyBjcmFja3MgaW4gdGhlIGxvZ2ljPyBJJiMzOTttIGFudGljaXBhdGluZyBib3RoIHBvaW50cywgdGhhdCBlaXRoZXIgc29saWRpZnlpbmcgZXZpZGVuY2UgY2FuIGJlIGZvdW5kIG9yIHRoYXQgdGhlIGFyZ3VtZW50IGZhbGxzIGFwYXJ0LiBJJiMzOTtsbCBuZWVkIHRvIGRpc3NlY3QgZWFjaCBwb2ludCB0byBzZWUgaWYgdGhlIG92ZXJhbGwgdGhlc2lzIGhvbGRzIHdhdGVyLCBvciBpZiBuZXcgcGVyc3BlY3RpdmVzIG5lZWQgdG8gYmUgYnJvdWdodCBpbnRvIHRoZSBkaXNjdXNzaW9uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvS2NvbmZpZyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDgwLAogICYjMzQ7TGluZUNvdW50JiMzNDs6IDIwCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtDb250ZW50cyYjMzQ7OiAmIzM0OyAgODA6XHRcdCAgZm9yIHBhc3NpdmUgT1MgZmluZ2VycHJpbnQgdmlhIE5GTkVUTElOSy5cbiAgODE6XHRcbiAgODI6XHRjb25maWcgTkZfQ09OTlRSQUNLXG4gIDgzOlx0XHR0cmlzdGF0ZSBcJiMzNDtOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0XCYjMzQ7XG4gIDg0Olx0XHRkZWZhdWx0IG0gaWYgTkVURklMVEVSX0FEVkFOQ0VEPW5cbiAgODU6XHRcdHNlbGVjdCBORl9ERUZSQUdfSVBWNFxuICA4NjpcdFx0c2VsZWN0IE5GX0RFRlJBR19JUFY2IGlmIElQVjYgIT0gblxuICA4NzpcdFx0aGVscFxuICA4ODpcdFx0ICBDb25uZWN0aW9uIHRyYWNraW5nIGtlZXBzIGEgcmVjb3JkIG9mIHdoYXQgcGFja2V0cyBoYXZlIHBhc3NlZFxuICA4OTpcdFx0ICB0aHJvdWdoIHlvdXIgbWFjaGluZSwgaW4gb3JkZXIgdG8gZmlndXJlIG91dCBob3cgdGhleSBhcmUgcmVsYXRlZFxuICA5MDpcdFx0ICBpbnRvIGNvbm5lY3Rpb25zLlxuICA5MTpcdFxuICA5MjpcdFx0ICBUaGlzIGlzIHJlcXVpcmVkIHRvIGRvIE1hc3F1ZXJhZGluZyBvciBvdGhlciBraW5kcyBvZiBOZXR3b3JrXG4gIDkzOlx0XHQgIEFkZHJlc3MgVHJhbnNsYXRpb24uICBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGVuaGFuY2UgcGFja2V0XG4gIDk0Olx0XHQgIGZpbHRlcmluZyAoc2VlIGBDb25uZWN0aW9uIHN0YXRlIG1hdGNoIHN1cHBvcnQmIzM5OyBiZWxvdykuXG4gIDk1Olx0XG4gIDk2Olx0XHQgIFRvIGNvbXBpbGUgaXQgYXMgYSBtb2R1bGUsIGNob29zZSBNIGhlcmUuICBJZiB1bnN1cmUsIHNheSBOLlxuICA5NzpcdFxuICA5ODpcdGNvbmZpZyBORl9MT0dfU1lTTE9HXG4gIDk5Olx0XHR0cmlzdGF0ZSBcJiMzNDtTeXNsb2cgcGFja2V0IGxvZ2dpbmdcJiMzNDtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDc1OQoJCQkJCQkJb3V0cHV0OiAzNAoJCQkJCQkJdGhvdWdodHM6IDkyCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOgoKKipTQ1RQIENvbm5lY3Rpb24gVHJhY2tpbmcgQ29uZmlndXJhdGlvbiAtIEluaXRpYWwgQXNzZXNzbWVudCoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgZW5hYmxpbmcgU0NUUCBjb25uZWN0aW9uIHRyYWNraW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX1BST1RPX1NDVFBgIGFyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZm9jdXMgb24uIE5vdywgYSBrZXkgcXVlc3Rpb24gYXJpc2VzOiBkbyBJICphbHNvKiBuZWVkIHRvIGVuYWJsZSBgSVBfU0NUUGAgdG8gYWN0dWFsbHkgZ2VuZXJhdGUgYW5kIHNlbmQgU0NUUCB0cmFmZmljIGZvciB0ZXN0aW5nIHRoaXM/IEkgbmVlZCB0byBiZSBhYmxlIHRvICpzZW5kKiB0aGUgcGFja2V0cyBmb3IgdGhlIHRyYWNraW5nIHRvIHdvcmsuIEhtbW0sIGFjdHVhbGx5LCBsZXQgbWUgcmVwaHJhc2UgdGhhdCDigJMgYE5GX0NUX1BST1RPX1NDVFBgIGlzIHJlc3BvbnNpYmxlIGZvciAqdHJhY2tpbmcqIHRoZSBTQ1RQIHBhY2tldHMsIHNvLCBmdW5kYW1lbnRhbGx5LCB5ZXMsIEkgbmVlZCBhIG1lY2hhbmlzbSB0byBzZW5kIFNDVFAgcGFja2V0cy4gUmlnaHQuIFNvLCB0aGUgbW9yZSBwb2ludGVkIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiAqaXMqIGBJUF9TQ1RQYCB0aGUgY29ycmVjdCBtZWNoYW5pc20sIG9yIGlzIHRoZXJlIGFub3RoZXIgd2F5IHRvIGdldCBTQ1RQIHBhY2tldHMgb24gdGhlIHdpcmU/IExldCYjMzk7cyBjaGVjay4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIElQX1NDVFAmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvc2N0cC9LY29uZmlnJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9zY3RwL0tjb25maWctNS1cbm5ldC9zY3RwL0tjb25maWc6NjptZW51Y29uZmlnIElQX1NDVFBcbm5ldC9zY3RwL0tjb25maWctNy1cdHRyaXN0YXRlIFwmIzM0O1RoZSBTQ1RQIFByb3RvY29sXCYjMzQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDUxNjUKCQkJCQkJCW91dHB1dDogNDkKCQkJCQkJCXRob3VnaHRzOiAzNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipBbmFseXppbmcgdGhlIFNDVFAgQ29ubnRyYWNrIEZ1bmN0aW9uKioKCkFscmlnaHQsIHN0cmFpZ2h0IHRvIHRoZSBwb2ludDogYElQX1NDVFBgIHVuZXF1aXZvY2FsbHkgc2lnbmlmaWVzIHRoZSBTQ1RQIChTdHJlYW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2wpLCBub3RoaW5nIGFtYmlndW91cyB0aGVyZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGF0IGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGZ1bmN0aW9uLiBUaGF0JiMzOTtzIHRoZSBjb3JlIG9mIGhvdyB0aGUgY29ubmVjdGlvbiB0cmFja2luZyBtb2R1bGUgaGFuZGxlcyBTQ1RQIHRyYWZmaWMuIEkgbmVlZCB0byB1bmRlcnN0YW5kIHdoYXQgdGhhdCBmdW5jdGlvbiBpcyBkb2luZyBhdCBhIGxvdyBsZXZlbC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7bmZfY29ubnRyYWNrX3NjdHBfcGFja2V0JiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7bmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYz0yOTU9c3RhdGljIGJvb2wgc2N0cF9lcnJvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYy0zMjYtLyogUmV0dXJucyB2ZXJkaWN0IGZvciBwYWNrZXQsIG9yIC1ORl9BQ0NFUFQgZm9yIGludmFsaWQuICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmM6MzI3OmludCBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jLTMyOC1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDU1MzAKCQkJCQkJCW91dHB1dDogNDYKCQkJCQkJCXRob3VnaHRzOiA2NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCB0YWlsb3JlZCBmb3IgYW4gZXhwZXJ0IGF1ZGllbmNlOgoKKipTQ1RQIFBhY2tldCBIYW5kbGluZyBpbiBuZl9jb25udHJhY2s6IEEgUHJpbWUgRnV6emluZyBUYXJnZXQqKgoKQWxyaWdodCwgc28gdGhlIGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGZ1bmN0aW9uIGlzICp0aGUqIGVudHJ5IHBvaW50IGZvciBTQ1RQIHRyYWZmaWMgd2l0aGluIHRoZSBgbmZfY29ubnRyYWNrYCBmcmFtZXdvcmssIGFuZCB0aGF0JiMzOTtzIHByZWNpc2VseSB3aGVyZSBJIG5lZWQgdG8gZm9jdXMgbXkgYXR0ZW50aW9uLiBHaXZlbiBpdHMgcm9sZSBhcyB0aGUgcHJpbWFyeSBTQ1RQIHBhY2tldCBoYW5kbGVyIGNhbGxlZCBieSBOZXRmaWx0ZXIsIGl04oCZcyBzY3JlYW1pbmcgJiMzNDtmdXp6IG1lLiYjMzQ7IFRoZSBzaGVlciB2b2x1bWUgb2YgdHJhZmZpYyBwb3RlbnRpYWxseSBmbG93aW5nIHRocm91Z2ggdGhpcyBmdW5jdGlvbiBtYWtlcyBpdCBhIGhpZ2gtdmFsdWUgdGFyZ2V0IGZvciB1bmNvdmVyaW5nIHZ1bG5lcmFiaWxpdGllcy4gSXTigJlzIGVzc2VudGlhbGx5IHRoZSBnYXRla2VlcGVyLgoKQnV0IEkgY2FuJiMzOTt0IGp1c3QgZGl2ZSBpbi4gRmlyc3QsIEkgbmVlZCB0byBtZXRob2RpY2FsbHkgY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBvdGhlciBhcmVhcyB3aXRoaW4gdGhpcyBtb2R1bGUgdGhhdCB3YXJyYW50IGZ1cnRoZXIgZXhhbWluYXRpb24uIEFsd2F5cyBzdGFydCB3aXRoIHRoZSBwcmltYXJ5IGVudHJ5IHBvaW50LCBidXQgaXQgd291bGQgYmUgYSBtaXN0YWtlIHRvIGFzc3VtZSB0aGVyZSBhcmVuJiMzOTt0IHJlbGF0ZWQgZnVuY3Rpb25zIGhhbmRsaW5nIGVkZ2UgY2FzZXMgb3Igc3BlY2lmaWMgU0NUUCBjb250cm9sIG1lc3NhZ2VzIHRoYXQgYWxzbyByZXF1aXJlIG15IGF0dGVudGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IGVsc2UgaXMgaW4gcGxheSBoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnJlYWQtZmlsZTwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RmlsZSYjMzQ7OiAmIzM0O25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYyYjMzQ7LAogICYjMzQ7Rmlyc3RMaW5lJiMzNDs6IDMyMCwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAyMAp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7Q29udGVudHMmIzM0OzogJiMzNDsgMzIwOlx0XHRyZXR1cm4gZmFsc2U7XG4gMzIxOlx0b3V0X2ludmFsaWQ6XG4gMzIyOlx0XHRuZl9sNHByb3RvX2xvZ19pbnZhbGlkKHNrYiwgc3RhdGUsIElQUFJPVE9fU0NUUCwgXCYjMzQ7JXNcJiMzNDssIGxvZ21zZyk7XG4gMzIzOlx0XHRyZXR1cm4gdHJ1ZTtcbiAzMjQ6XHR9XG4gMzI1Olx0XG4gMzI2Olx0LyogUmV0dXJucyB2ZXJkaWN0IGZvciBwYWNrZXQsIG9yIC1ORl9BQ0NFUFQgZm9yIGludmFsaWQuICovXG4gMzI3Olx0aW50IG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChzdHJ1Y3QgbmZfY29ubiAqY3QsXG4gMzI4Olx0XHRcdFx0ICAgICBzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuIDMyOTpcdFx0XHRcdCAgICAgdW5zaWduZWQgaW50IGRhdGFvZmYsXG4gMzMwOlx0XHRcdFx0ICAgICBlbnVtIGlwX2Nvbm50cmFja19pbmZvIGN0aW5mbyxcbiAzMzE6XHRcdFx0XHQgICAgIGNvbnN0IHN0cnVjdCBuZl9ob29rX3N0YXRlICpzdGF0ZSlcbiAzMzI6XHR7XG4gMzMzOlx0XHRlbnVtIHNjdHBfY29ubnRyYWNrIG5ld19zdGF0ZSwgb2xkX3N0YXRlO1xuIDMzNDpcdFx0ZW51bSBpcF9jb25udHJhY2tfZGlyIGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcbiAzMzU6XHRcdGNvbnN0IHN0cnVjdCBzY3RwaGRyICpzaDtcbiAzMzY6XHRcdHN0cnVjdCBzY3RwaGRyIF9zY3RwaDtcbiAzMzc6XHRcdGNvbnN0IHN0cnVjdCBzY3RwX2NodW5raGRyICpzY2g7XG4gMzM4Olx0XHRzdHJ1Y3Qgc2N0cF9jaHVua2hkciBfc2NoO1xuIDMzOTpcdFx0dV9pbnQzMl90IG9mZnNldCwgY291bnQ7XG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDYyMTYKCQkJCQkJCW91dHB1dDogMzYKCQkJCQkJCXRob3VnaHRzOiAxMjgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBTQ1RQIENvbm50cmFjayBQYWNrZXQgSGFuZGxlcioqCgpPa2F5LCBzbyB0aGUgYG5mX2Nvbm50cmFja19zY3RwX3BhY2tldGAgZnVuY3Rpb24gc2VlbXMgdG8gYmUgdGhlIGNlbnRyYWwgcGllY2UgaGVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhpcyBzcGVjaWZpYyBwYXRjaD8gSXQgYXBwZWFycyB0aGUgbW9kaWZpY2F0aW9uIGlzIGxpbWl0ZWQgdG8ganVzdCB0aGlzIG9uZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuCgpOb3csIGEgY3JpdGljYWwgcXVlc3Rpb24gYXJpc2VzOiBpcyBgbmZfY29ubnRyYWNrX3NjdHBfcGFja2V0YCBhIHN0YXRpYyBmdW5jdGlvbj8gSXQmIzM5O3MgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIHNjb3BlIGFuZCBwb3RlbnRpYWwgZGVwZW5kZW5jaWVzLiBMZXQgbWUgcXVpY2tseSBjaGVjayB0aGUgc291cmNlIGNvZGUuIEFoLCBoZXJlIHdlIGFyZSBpbiBgbmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jYCwgYW5kIGl0JiMzOTtzIGRlZmluZWQgYXMgYGludCBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LCAuLi4pYC4gTm8sIGl0JiMzOTtzICpub3QqIHN0YXRpYy4gVGhpcyBtZWFucyBpdCYjMzk7cyBlaXRoZXIgZXhwb3J0ZWQgb3IgdXNlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUga2VybmVsLiBUaGlzIGlzIGltcG9ydGFudCBhcyB0aGlzIGltcGFjdHMgaG93IGNoYW5nZXMgcHJvcGFnYXRlLiBJIHNob3VsZCBpbnZlc3RpZ2F0ZSB3aGVyZSBpdCBpcyBjYWxsZWQsIGFzIHRoaXMgaXMgZ29pbmcgdG8gYmUgaW1wb3J0YW50IHRvIHVuZGVyc3RhbmQgdGhlIGZ1bGwgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIwLzI8L3RkPgoJCQk8dGQ+MjAyNi8wNy8yOSAwNTozMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQmIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyLyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmM9MTk2OT1zdGF0aWMgaW50IG5mX2Nvbm50cmFja19oYW5kbGVfcGFja2V0KHN0cnVjdCBuZl9jb25uICpjdCxcbi0tXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19jb3JlLmMtMTk4OS1cdGNhc2UgSVBQUk9UT19TQ1RQOlxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjE5OTA6XHRcdHJldHVybiBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoY3QsIHNrYiwgZGF0YW9mZixcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xOTkxLVx0XHRcdFx0XHRcdGN0aW5mbywgc3RhdGUpO1xuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYz0yOTU9c3RhdGljIGJvb2wgc2N0cF9lcnJvcihzdHJ1Y3Qgc2tfYnVmZiAqc2tiLFxuLS1cbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYy0zMjYtLyogUmV0dXJucyB2ZXJkaWN0IGZvciBwYWNrZXQsIG9yIC1ORl9BQ0NFUFQgZm9yIGludmFsaWQuICovXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmM6MzI3OmludCBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jLTMyOC1cdFx0XHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MjEvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA3LzI5IDA1OjMxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDY5MjYKCQkJCQkJCW91dHB1dDogMTQwCgkJCQkJCQl0aG91Z2h0czogODM1CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4qKkFuYWx5emluZyBTQ1RQIENvbm50cmFjayBJbXBsZW1lbnRhdGlvbioqCgpPa2F5LCBzbyBJJiMzOTttIGRpZ2dpbmcgaW50byB0aGUgU0NUUCBjb25uZWN0aW9uIHRyYWNraW5nIGltcGxlbWVudGF0aW9uLiBUaGUgc3RhcnRpbmcgcG9pbnQgc2VlbXMgdG8gYmUgYG5mX2Nvbm50cmFja19oYW5kbGVfcGFja2V0YCB3aXRoaW4gYG5mX2Nvbm50cmFja19jb3JlLmNgLiBUaGlzIG1lYW5zIGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGlzIHRoZSBzeW1ib2wgdG8gY29uY2VudHJhdGUgb24gaGVyZS4KCk5vdywgbGV0JiMzOTtzIG5haWwgZG93biB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJdCYjMzk7cyBjbGVhciB0aGF0IHdlIG5lZWQgYE5GX0NPTk5UUkFDS2AgYW5kIGBORl9DVF9QUk9UT19TQ1RQYCwgd2hpY2ggbWFrZXMgc2Vuc2UuIEkgYWxzbyBzZWUgYElQX1NDVFBgIGFzIGNydWNpYWwsIGFuZCBJJiMzOTtsbCBleHBsYWluIHdoeSBpbiBhIG1vbWVudC4gIFdlJiMzOTtsbCBhbHNvIG5lZWQgYE5FVEZJTFRFUmAgYW5kIGBORVRGSUxURVJfQURWQU5DRURgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRob3NlIG5hbWVzLi4uIFllcywgYE5GX0NPTk5UUkFDS2AsIGBORl9DVF9QUk9UT19TQ1RQYCwgYW5kIGBJUF9TQ1RQYCBhcmUgYWxsIGNvcnJlY3QuCgpBIHF1aWNrIGxvb2sgY29uZmlybXMgdGhhdCBgTkZfQ1RfUFJPVE9fU0NUUGAgaXMgZGVmYXVsdCBlbmFibGVkIHdoZW4gYE5FVEZJTFRFUl9BRFZBTkNFRGAgaXMgZW5hYmxlZCwgYnV0IGl0JiMzOTtzIGFsd2F5cyBiZXR0ZXIgdG8gYmUgZXhwbGljaXQsIHNvIHdlJiMzOTtsbCBlbnN1cmUgdGhhdCYjMzk7cyBzZXQgaW4gdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24uCgpSZWdhcmRpbmcgYElQX1NDVFBgLCBpdCBsb29rcyBsaWtlIGhhdmluZyB0aGUgU0NUUCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbiBwcmVzZW50IGlzIHVzZWZ1bC4gV2hpbGUgdG9vbHMgbGlrZSBzeXprYWxsZXIgY2FuIGluamVjdCByYXcgcGFja2V0cywgaGF2aW5nIGBJUF9TQ1RQYCBhbGxvd3MgZm9yIHRoZSB1c2Ugb2Ygc3RhbmRhcmQgc29ja2V0cyB0byBnZW5lcmF0ZSB2YWxpZCBTQ1RQIHRyYWZmaWMuIFRoaXMgaXMgb2Z0ZW4gZmFyIG1vcmUgZWZmZWN0aXZlIGZvciB0aG9yb3VnaGx5IHRlc3RpbmcgdGhlIGNvbm50cmFjayBsb2dpYyBhbmQgcmVhY2hpbmcgdGhvc2UgZGVlcGVyIHN0YXRlcy4gU28sIHllcywgaW5jbHVkaW5nIGBJUF9TQ1RQYCBpcyBkZWZpbml0ZWx5IHRoZSB3YXkgdG8gZ28gaGVyZS4KCk5vdywgbGV0JiMzOTtzIHJldmlzaXQgdGhlIHBhdGNoIHRvIGVuc3VyZSBteSB1bmRlcnN0YW5kaW5nIGlzIGFjY3VyYXRlLgoKYGBgYwotCQl9IGVsc2UgaWYgKHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLKSB7Ci0JCQljdC0mZ3Q7cHJvdG8uc2N0cC5pbml0W2Rpcl0gPSAwOwotCQkJY3QtJmd0O3Byb3RvLnNjdHAuaW5pdFshZGlyXSA9IDA7CiYjNDM7CQl9IGVsc2UgaWYgKHNjaC0mZ3Q7dHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLIHx8CiYjNDM7CQkJICAgc2NoLSZndDt0eXBlID09IFNDVFBfQ0lEX0VSUk9SIHx8CiYjNDM7CQkJICAgc2NoLSZndDt0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOIHx8CiYjNDM7CQkJICAgc2NoLSZndDt0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOX0FDSykgewomIzQzOwkJCWlmIChjdC0mZ3Q7cHJvdG8uc2N0cC52dGFnW2Rpcl0gJmFtcDsmYW1wOwomIzQzOwkJCSAgICBzaC0mZ3Q7dnRhZyAhPSBjdC0mZ3Q7cHJvdG8uc2N0cC52dGFnW2Rpcl0pCiYjNDM7CQkJCWdvdG8gb3V0X3VubG9jazsKJiM0MzsJCQlpZiAoc2NoLSZndDt0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9BQ0spIHsKJiM0MzsJCQkJY3QtJmd0O3Byb3RvLnNjdHAuaW5pdFtkaXJdID0gMDsKJiM0MzsJCQkJY3QtJmd0O3Byb3RvLnNjdHAuaW5pdFshZGlyXSA9IDA7CiYjNDM7CQkJfQpgYGAKCk9rYXksIGNvbmZpcm1lZC4gVGhlIHBhdGNoIGZvY3VzZXMgb24gYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIFNDVFAgY29ubnRyYWNrIGxvZ2ljLiBJdCBhZGRzIHZ0YWcgdmFsaWRhdGlvbiBmb3IgdGhvc2Ugc3BlY2lmaWMgY2h1bmsgdHlwZXM6IGBTQ1RQX0NJRF9DT09LSUVfQUNLYCwgYFNDVFBfQ0lEX0VSUk9SYCwgYFNDVFBfQ0lEX1NIVVRET1dOYCwgYW5kIGBTQ1RQX0NJRF9TSFVURE9XTl9BQ0tgLgoKVG8gcmVjYXA6CiogICAqKkZvY3VzIHN5bWJvbDoqKiBgbmZfY29ubnRyYWNrX3NjdHBfcGFja2V0YAoqICAgKipSZXF1aXJlZCBjb25maWdzOioqIGBORl9DT05OVFJBQ0tgLCBgTkZfQ1RfUFJPVE9fU0NUUGAsIGBJUF9TQ1RQYCwgYE5FVEZJTFRFUmAsIGBORVRGSUxURVJfQURWQU5DRURgLgoKQWxsIGNvbmZpZ3VyYXRpb24gbmFtZXMgdmVyaWZpZWQuIFRoYXQgc2hvdWxkIHByb3ZpZGUgYSBzb2xpZCBiYXNpcyBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9yIHJlcHJvZHVjdGlvbiBvZiB0aGlzIGNoYW5nZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yMi8yPC90ZD4KCQkJPHRkPjIwMjYvMDcvMjkgMDU6MzE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9QUk9UT19TQ1RQJiMzNDssCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY29ubnRyYWNrX3NjdHBfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O05GX0NPTk5UUkFDSyYjMzQ7LAogICAgJiMzNDtORl9DVF9QUk9UT19TQ1RQJiMzNDssCiAgICAmIzM0O0lQX1NDVFAmIzM0OywKICAgICYjMzQ7TkVURklMVEVSX0FEVkFOQ0VEJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7bmZfY29ubnRyYWNrX3NjdHBfcGFja2V0JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPC90Ym9keT4KCTwvdGFibGU+CgoJPGRpdiBpZD0ibGxtX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5MTE0gQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBUb2tlbnM8L3RoPgoJCQkJCTx0aD5BdmcgVG9rZW5zPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9ImxsbV9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9InRvb2xfc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPlRvb2wgQ2FsbHMgU3VtbWFyeTo8L2NhcHRpb24+CgkJCTx0aGVhZD4KCQkJCTx0cj4KCQkJCQk8dGg+VG90YWwgQ2FsbHM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0idG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHkiPjwvdGJvZHk+CgkJPC90YWJsZT4KCTwvZGl2PgoKCTxkaXYgaWQ9ImR1cmF0aW9uX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCTxkaXYgaWQ9InRva2VuX2NoYXJ0X2RpdiIgc3R5bGU9IndpZHRoOiAxMDAlOyBtYXJnaW46IDIwcHggMDsgYm9yZGVyOiAxcHg7Ij48L2Rpdj4KCgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJodHRwczovL3d3dy5nb29nbGUuY29tL2pzYXBpIj48L3NjcmlwdD4KCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KCQlnb29nbGUubG9hZCgidmlzdWFsaXphdGlvbiIsICIxIiwge3BhY2thZ2VzOlsiY29yZWNoYXJ0Il19KTsKCQlnb29nbGUuc2V0T25Mb2FkQ2FsbGJhY2soZHJhd0NoYXJ0cyk7CgoJCWZ1bmN0aW9uIGRyYXdDaGFydHMoKSB7CgkJCWNvbnN0IHJhd0RhdGEgPSBbeyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMDo0OC4wMjcwNjMyMjlaIiwiU2VxIjowLCJOZXN0aW5nIjowLCJUeXBlIjoiZmxvdyIsIk5hbWUiOiJwYXRjaC10cmlhZ2UiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NzI5NDY0NjMwNCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0NUX1BST1RPX1NDVFBcIixcbiAgICBcIklQX1NDVFBcIixcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX2Nvbm50cmFja19zY3RwX3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMwOjQ4LjAyNzA3MjQ2OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTg4ODg3Mjk0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJQYXRjaERpZmZcIjogXCJjb21taXQgOWM5NjI0OWJhYzhlZDBhZmQwNWRhMTdlNjA3MDNmY2QwYmFiMDAxM1xcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXFx1MDAzZVxcbkRhdGU6ICAgV2VkIEp1bCAyOSAwNTozMDo0NiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcXG5pbmRleCA3ZTEwZmE2NWNiZGQzLi45OTc4ZWNkMDViMWU4IDEwMDY0NFxcbi0tLSBhL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuY1xcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuY1xcbkBAIC00MDcsOSArNDA3LDE3IEBAIGludCBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LFxcbiBcXHRcXHRcXHQvKiAoRCkgdnRhZyBtdXN0IGJlIHNhbWUgYXMgaW5pdF92dGFnIGFzIGZvdW5kIGluIElOSVRfQUNLICovXFxuIFxcdFxcdFxcdGlmIChzaC1cXHUwMDNldnRhZyAhPSBjdC1cXHUwMDNlcHJvdG8uc2N0cC52dGFnW2Rpcl0pXFxuIFxcdFxcdFxcdFxcdGdvdG8gb3V0X3VubG9jaztcXG4tXFx0XFx0fSBlbHNlIGlmIChzY2gtXFx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSykge1xcbi1cXHRcXHRcXHRjdC1cXHUwMDNlcHJvdG8uc2N0cC5pbml0W2Rpcl0gPSAwO1xcbi1cXHRcXHRcXHRjdC1cXHUwMDNlcHJvdG8uc2N0cC5pbml0WyFkaXJdID0gMDtcXG4rXFx0XFx0fSBlbHNlIGlmIChzY2gtXFx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSyB8fFxcbitcXHRcXHRcXHQgICBzY2gtXFx1MDAzZXR5cGUgPT0gU0NUUF9DSURfRVJST1IgfHxcXG4rXFx0XFx0XFx0ICAgc2NoLVxcdTAwM2V0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOIHx8XFxuK1xcdFxcdFxcdCAgIHNjaC1cXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9TSFVURE9XTl9BQ0spIHtcXG4rXFx0XFx0XFx0aWYgKGN0LVxcdTAwM2Vwcm90by5zY3RwLnZ0YWdbZGlyXSBcXHUwMDI2XFx1MDAyNlxcbitcXHRcXHRcXHQgICAgc2gtXFx1MDAzZXZ0YWcgIT0gY3QtXFx1MDAzZXByb3RvLnNjdHAudnRhZ1tkaXJdKVxcbitcXHRcXHRcXHRcXHRnb3RvIG91dF91bmxvY2s7XFxuK1xcdFxcdFxcdGlmIChzY2gtXFx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSykge1xcbitcXHRcXHRcXHRcXHRjdC1cXHUwMDNlcHJvdG8uc2N0cC5pbml0W2Rpcl0gPSAwO1xcbitcXHRcXHRcXHRcXHRjdC1cXHUwMDNlcHJvdG8uc2N0cC5pbml0WyFkaXJdID0gMDtcXG4rXFx0XFx0XFx0fVxcbiBcXHRcXHR9IGVsc2UgaWYgKHNjaC1cXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9IRUFSVEJFQVQpIHtcXG4gXFx0XFx0XFx0aWYgKGN0LVxcdTAwM2Vwcm90by5zY3RwLnZ0YWdbZGlyXSA9PSAwKSB7XFxuIFxcdFxcdFxcdFxcdHByX2RlYnVnKFxcXCJTZXR0aW5nICVkIHZ0YWcgJXggZm9yIGRpciAlZFxcXFxuXFxcIiwgc2NoLVxcdTAwM2V0eXBlLCBzaC1cXHUwMDNldnRhZywgZGlyKTtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzA6NDguNjE2ODE2NDc0WiIsIlNlcSI6MiwiTmVzdGluZyI6MSwiVHlwZSI6ImFnZW50IiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiYmVzdC1leHBlbnNpdmUiLCJEdXJhdGlvbiI6NDY3MDQ4ODIzMTgsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9DVF9QUk9UT19TQ1RQXCIsXG4gICAgXCJJUF9TQ1RQXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMgZm9yIFNDVFAgcGFja2V0cywgc3BlY2lmaWNhbGx5IGFkZGluZyB2dGFnIHZhbGlkYXRpb24gZm9yIHNldmVyYWwgU0NUUCBjaHVuayB0eXBlcyAoQ09PS0lFX0FDSywgRVJST1IsIFNIVVRET1dOLCBTSFVURE9XTl9BQ0spLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBmaWx0ZXJpbmcgcGF0aCB0aGF0IGlzIHJlYWNoYWJsZSB3aGVuIHByb2Nlc3NpbmcgU0NUUCB0cmFmZmljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA5Yzk2MjQ5YmFjOGVkMGFmZDA1ZGExN2U2MDcwM2ZjZDBiYWIwMDEzXG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBKdWwgMjkgMDU6MzA6NDYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMgYi9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcbmluZGV4IDdlMTBmYTY1Y2JkZDMuLjk5NzhlY2QwNWIxZTggMTAwNjQ0XG4tLS0gYS9uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcbisrKyBiL25ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuY1xuQEAgLTQwNyw5ICs0MDcsMTcgQEAgaW50IG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChzdHJ1Y3QgbmZfY29ubiAqY3QsXG4gXHRcdFx0LyogKEQpIHZ0YWcgbXVzdCBiZSBzYW1lIGFzIGluaXRfdnRhZyBhcyBmb3VuZCBpbiBJTklUX0FDSyAqL1xuIFx0XHRcdGlmIChzaC1cdTAwM2V2dGFnICE9IGN0LVx1MDAzZXByb3RvLnNjdHAudnRhZ1tkaXJdKVxuIFx0XHRcdFx0Z290byBvdXRfdW5sb2NrO1xuLVx0XHR9IGVsc2UgaWYgKHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9BQ0spIHtcbi1cdFx0XHRjdC1cdTAwM2Vwcm90by5zY3RwLmluaXRbZGlyXSA9IDA7XG4tXHRcdFx0Y3QtXHUwMDNlcHJvdG8uc2N0cC5pbml0WyFkaXJdID0gMDtcbitcdFx0fSBlbHNlIGlmIChzY2gtXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLIHx8XG4rXHRcdFx0ICAgc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfRVJST1IgfHxcbitcdFx0XHQgICBzY2gtXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9TSFVURE9XTiB8fFxuK1x0XHRcdCAgIHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX1NIVVRET1dOX0FDSykge1xuK1x0XHRcdGlmIChjdC1cdTAwM2Vwcm90by5zY3RwLnZ0YWdbZGlyXSBcdTAwMjZcdTAwMjZcbitcdFx0XHQgICAgc2gtXHUwMDNldnRhZyAhPSBjdC1cdTAwM2Vwcm90by5zY3RwLnZ0YWdbZGlyXSlcbitcdFx0XHRcdGdvdG8gb3V0X3VubG9jaztcbitcdFx0XHRpZiAoc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSykge1xuK1x0XHRcdFx0Y3QtXHUwMDNlcHJvdG8uc2N0cC5pbml0W2Rpcl0gPSAwO1xuK1x0XHRcdFx0Y3QtXHUwMDNlcHJvdG8uc2N0cC5pbml0WyFkaXJdID0gMDtcbitcdFx0XHR9XG4gXHRcdH0gZWxzZSBpZiAoc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfSEVBUlRCRUFUKSB7XG4gXHRcdFx0aWYgKGN0LVx1MDAzZXByb3RvLnNjdHAudnRhZ1tkaXJdID09IDApIHtcbiBcdFx0XHRcdHByX2RlYnVnKFwiU2V0dGluZyAlZCB2dGFnICV4IGZvciBkaXIgJWRcXG5cIiwgc2NoLVx1MDAzZXR5cGUsIHNoLVx1MDAzZXZ0YWcsIGRpcik7XG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMDo0OC42MTY4MTc2OTRaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MTI5ODE2MjA4LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0NUUCBDb25udHJhY2sgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoIHRoYXQgdHdlYWtzIGBuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNgLiBTcGVjaWZpY2FsbHksIHRoZSBjaGFuZ2VzIGFyZSB0YXJnZXRpbmcgdGhlIGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGZ1bmN0aW9uLiBJdCBzZWVtcyB0byBiZSByZWxhdGVkIHRvIGhvdyBuZXRmaWx0ZXIncyBjb25udHJhY2sgbW9kdWxlIGhhbmRsZXMgU0NUUCBwYWNrZXRzLCBmb2N1c2luZyBvbiBzY3J1dGluaXppbmcgdGhlIGB2dGFnYCBmaWVsZCBmb3IgY2VydGFpbiBjaHVuayBpZGVudGlmaWVyczogYFNDVFBfQ0lEX0NPT0tJRV9BQ0tgLCBgU0NUUF9DSURfRVJST1JgLCBgU0NUUF9DSURfU0hVVERPV05gLCBhbmQgYFNDVFBfQ0lEX1NIVVRET1dOX0FDS2AuIFRoYXQncyBpbnRlcmVzdGluZzsgSSB3b25kZXIgd2hhdCBzcGVjaWZpYyBhc3BlY3Qgb2YgY29ubmVjdGlvbiB0cmFja2luZyB0aGlzIGlzIGFpbWluZyB0byBpbXByb3ZlLiBJIG5lZWQgdG8gdW5kZXJzdGFuZCB0aGUgaW1wbGljYXRpb25zIG9mIHRoaXMgY2hhbmdlIGJldHRlciwgZXNwZWNpYWxseSB0aGUgY29udGV4dCBvZiB0aG9zZSBzcGVjaWZpYyBjaHVuayB0eXBlcy5cblxuQmVmb3JlIGRpdmluZyBpbnRvIHRoZSBjb2RlIGl0c2VsZiwgSSBzaG91bGQgY2hlY2sgdGhlIGNvbmZpZyBvcHRpb25zLiBMZXQgbWUgcXVpY2tseSBydW4gYSBgZ2l0IGdyZXBgIHRvIGxvY2F0ZSB0aGUgYE1ha2VmaWxlYCBpbiB0aGUgYG5ldC9uZXRmaWx0ZXIvYCBkaXJlY3RvcnkuIFRoYXQnbGwgZ2l2ZSBtZSBhIGdvb2QgaGFuZGxlIG9uIHdoYXQgY29uZmlndXJhdGlvbiBrbm9icyBhcmUgaW52b2x2ZWQgaW4gZW5hYmxpbmcgdGhpcyBTQ1RQIHByb3RvY29sIHN1cHBvcnQsIHNwZWNpZmljYWxseSBgbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuY2AsIGFuZCBpZiB0aGUgY29udGV4dCBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBoZWxwcyB0byB1bmRlcnN0YW5kIHRoZSBwdXJwb3NlIG9mIHRoaXMgY2hhbmdlLlxuXG5cbiIsIklucHV0VG9rZW5zIjoyMzY0LCJPdXRwdXRUb2tlbnMiOjM5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTc2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzA6NTIuNzQ2NjM5OTkyWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcyMzMzODQ2LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2Nvbm50cmFja19wcm90b19zY3RwLm9cIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9NYWtlZmlsZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJuZXQvbmV0ZmlsdGVyL01ha2VmaWxlPTE1PW5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DT05OVFJBQ0tfT1ZTKSArPSBuZl9jb25udHJhY2tfb3ZzLm9cXG5uZXQvbmV0ZmlsdGVyL01ha2VmaWxlOjE2Om5mX2Nvbm50cmFjay0kKENPTkZJR19ORl9DVF9QUk9UT19TQ1RQKSArPSBuZl9jb25udHJhY2tfcHJvdG9fc2N0cC5vXFxubmV0L25ldGZpbHRlci9NYWtlZmlsZS0xNy1uZl9jb25udHJhY2stJChDT05GSUdfTkZfQ1RfUFJPVE9fR1JFKSArPSBuZl9jb25udHJhY2tfcHJvdG9fZ3JlLm9cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzA6NTIuODE4OTg3Mjg4WiIsIlNlcSI6NSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Mjg4OTkyODY0MiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIGZyYW1lZCBhcyBhbiBleHBlcnQncyBpbnRlcm5hbCBtb25vbG9ndWU6XG5cbioqU0NUUCBDb25uZWN0aW9uIFRyYWNraW5nIC0gQSBRdWljayBMb29rKipcblxuQWxyaWdodCwgc28gdGhlIGNsdWUgaGVyZSBpcyB0aGF0IHRoZSBTQ1RQIGNvbm5lY3Rpb24gdHJhY2tpbmcgaXMgZW5hYmxlZCBieSBgQ09ORklHX05GX0NUX1BST1RPX1NDVFBgLiAgVGhhdCdzIG15IHN0YXJ0aW5nIHBvaW50LiBOb3csIEkgbmVlZCB0byB2ZXJpZnkgdGhhdCB0aGlzIGlzIGluZGVlZCB0aGUgY2FzZS4gTGV0J3MgcXVpY2tseSBkb3VibGUtY2hlY2sgdGhhdCBgQ09ORklHX05GX0NUX1BST1RPX1NDVFBgIGlzIGRlZmluZWQgY29ycmVjdGx5IGluIHRoZSBrZXJuZWwgY29uZmlndXJhdGlvbiBmaWxlcywgc3BlY2lmaWNhbGx5IGluIGBLY29uZmlnYC4gR290dGEgY29uZmlybSB0aGF0IGVuYWJsaW5nIFNDVFAgc3VwcG9ydCBhbHNvIGVuYWJsZXMgdGhlIG5lY2Vzc2FyeSBjb25uZWN0aW9uIHRyYWNraW5nIGhvb2tzLiBUaGlzIHNlZW1zIGZhaXJseSBiYXNpYywgYnV0IGl0J3MgaW1wb3J0YW50IHRvIG1ha2Ugc3VyZSBpdCdzIHNldCBwcm9wZXJseSBiZWZvcmUgZGlnZ2luZyBpbiBhbnkgZGVlcGVyLiBBIG1pc2NvbmZpZ3VyZWQga2VybmVsIGlzIG5ldmVyIGZ1bi5cblxuXG4iLCJJbnB1dFRva2VucyI6Mjk5NSwiT3V0cHV0VG9rZW5zIjozNywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjM4LCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMwOjU1LjcwODkyMDgyMVoiLCJTZXEiOjYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo2NTg0OTMyMywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJjb25maWcgTkZfQ1RfUFJPVE9fU0NUUFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnPTE5OD1jb25maWcgTkZfQ1RfUFJPVE9fR1JFXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjAwLVxcbm5ldC9uZXRmaWx0ZXIvS2NvbmZpZzoyMDE6Y29uZmlnIE5GX0NUX1BST1RPX1NDVFBcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctMjAyLVxcdGJvb2wgJ1NDVFAgcHJvdG9jb2wgY29ubmVjdGlvbiB0cmFja2luZyBzdXBwb3J0J1xcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMDo1NS43NzQ3NzY4ODNaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMTIyNjI3MDg5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbiwgcHJlc2VudGVkIGZyb20gbXkgcGVyc3BlY3RpdmUgYXMgYW4gZXhwZXJ0OlxuXG4qKkludmVzdGlnYXRpbmcgU0NUUCBQcm90b2NvbCBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBzbyBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgZGVwZW5kZW5jaWVzIGZvciBgTkZfQ1RfUFJPVE9fU0NUUGAuIE15IGltbWVkaWF0ZSB0aG91Z2h0IGlzLCBcIldoYXQgb3RoZXIga2VybmVsIGNvbXBvbmVudHMsIG1vZHVsZXMsIG9yIHN1YnN5c3RlbXMgZG9lcyB0aGlzIHJlbHkgb24/XCIgSSBuZWVkIHRvIHVuZGVyc3RhbmQgdGhpcyB0byBwcm9wZXJseSBpbnRlZ3JhdGUgb3IgZGVidWcgaXQuIEknbGwgbmVlZCB0byBrbm93IG5vdCBqdXN0IHdoYXQgaW5jbHVkZXMgaXQsIGJ1dCB3aGF0ICppdCogbmVlZHMgdG8gZnVuY3Rpb24gY29ycmVjdGx5LiBUaGlzIGNvdWxkIGludm9sdmUgbG9va2luZyBhdCBjb3JlIG5ldHdvcmtpbmcgaW5mcmFzdHJ1Y3R1cmUsIGNvbm5lY3Rpb24gdHJhY2tpbmcgbWVjaGFuaXNtcywgb3IgZXZlbiBzcGVjaWZpYyBTQ1RQIGltcGxlbWVudGF0aW9uIGRldGFpbHMuIFVuZGVyc3RhbmRpbmcgdGhvc2UgY29ubmVjdGlvbnMgaXMgZXNzZW50aWFsIGZvciB1bmRlcnN0YW5kaW5nIGl0cyBmdW5jdGlvbiB3aXRoaW4gdGhlIHdpZGVyIHN5c3RlbS4gSSdsbCBuZWVkIHRvIGlkZW50aWZ5IHBvdGVudGlhbCBjb25mbGljdHMgYW5kIGhvdyBpdCBpbnRlcmFjdHMgd2l0aCB0aGUgcmVzdCBvZiB0aGUgbmV0d29yayBzdGFjay4gVGhpcyBtZWFucyB0cmFjaW5nIHRoZSBjb2RlJ3MgbGluZWFnZSwgY2hlY2tpbmcgZG9jdW1lbnRhdGlvbiBhbmQgZGl2aW5nIGludG8gdGhlIGNvZGUgdG8gY2hlY2sgaW5jbHVkZXMuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjMzMzIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMDo1OC44OTc0MDY3MjJaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjEyNDAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDIwMCxcbiAgXCJMaW5lQ291bnRcIjogMjBcbn0iLCJSZXN1bHRzIjoie1xuICBcIkNvbnRlbnRzXCI6IFwiIDIwMDpcXHRcXG4gMjAxOlxcdGNvbmZpZyBORl9DVF9QUk9UT19TQ1RQXFxuIDIwMjpcXHRcXHRib29sICdTQ1RQIHByb3RvY29sIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydCdcXG4gMjAzOlxcdFxcdGRlcGVuZHMgb24gTkVURklMVEVSX0FEVkFOQ0VEXFxuIDIwNDpcXHRcXHRkZWZhdWx0IHlcXG4gMjA1OlxcdFxcdHNlbGVjdCBORVRfQ1JDMzJDXFxuIDIwNjpcXHRcXHRoZWxwXFxuIDIwNzpcXHRcXHQgIFdpdGggdGhpcyBvcHRpb24gZW5hYmxlZCwgdGhlIGxheWVyIDMgaW5kZXBlbmRlbnQgY29ubmVjdGlvblxcbiAyMDg6XFx0XFx0ICB0cmFja2luZyBjb2RlIHdpbGwgYmUgYWJsZSB0byBkbyBzdGF0ZSB0cmFja2luZyBvbiBTQ1RQIGNvbm5lY3Rpb25zLlxcbiAyMDk6XFx0XFxuIDIxMDpcXHRcXHQgIElmIHVuc3VyZSwgc2F5IFkuXFxuIDIxMTpcXHRcXG4gMjEyOlxcdGNvbmZpZyBORl9DT05OVFJBQ0tfQU1BTkRBXFxuIDIxMzpcXHRcXHR0cmlzdGF0ZSBcXFwiQW1hbmRhIGJhY2t1cCBwcm90b2NvbCBzdXBwb3J0XFxcIlxcbiAyMTQ6XFx0XFx0ZGVwZW5kcyBvbiBORVRGSUxURVJfQURWQU5DRURcXG4gMjE1OlxcdFxcdHNlbGVjdCBURVhUU0VBUkNIXFxuIDIxNjpcXHRcXHRzZWxlY3QgVEVYVFNFQVJDSF9LTVBcXG4gMjE3OlxcdFxcdGhlbHBcXG4gMjE4OlxcdFxcdCAgSWYgeW91IGFyZSBydW5uaW5nIHRoZSBBbWFuZGEgYmFja3VwIHBhY2thZ2UgXFx1MDAzY2h0dHA6Ly93d3cuYW1hbmRhLm9yZy9cXHUwMDNlXFxuIDIxOTpcXHRcXHQgIG9uIHRoaXMgbWFjaGluZSBvciBtYWNoaW5lcyB0aGF0IHdpbGwgYmUgTUFTUVVFUkFERUQgdGhyb3VnaCB0aGlzXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMwOjU4Ljg5NzU3MDI2MVoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MjU4NDYwNjQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGVsdmluZyBpbnRvIHRoZSBLZXJuZWwncyBOZXR3b3JrIEZpbHRlciBEZXBlbmRlbmNpZXMqKlxuXG5Pa2F5LCBoZXJlJ3Mgd2hhdCdzIHJ1bm5pbmcgdGhyb3VnaCBteSBoZWFkLiBJJ20gbG9va2luZyBhdCB0aGlzIGNvbmZpZ3VyYXRpb24gb3B0aW9uLCBgTkVURklMVEVSX0FEVkFOQ0VEYCwgYW5kIG15IGluaXRpYWwgYXNzZXNzbWVudCBoaW5nZXMgb24gaXRzIGRlcGVuZGVuY2llcy4gQnV0IHdhaXQgYSBtaW51dGXigKYgSXNuJ3QgYG5mX2Nvbm50cmFja2AgaW50cmluc2ljYWxseSBsaW5rZWQgdG8gYE5GX0NPTk5UUkFDS2A/IEkgbmVlZCB0byBjbGFyaWZ5IHRoYXQgcmVsYXRpb25zaGlwLiBUbyB0cnVseSB1bmRlcnN0YW5kIGhvdyBgTkVURklMVEVSX0FEVkFOQ0VEYCBmaXRzIGludG8gdGhlIGJyb2FkZXIgcGljdHVyZSwgSSBuZWVkIHRvIHRyYWNlIHRoZSBkZXBlbmRlbmNpZXMgb2YgYE5GX0NPTk5UUkFDS2AuIFdoYXQgb3RoZXIgY29tcG9uZW50cyBkb2VzICp0aGF0KiByZWx5IG9uPyBHZXR0aW5nIHRoZSBkZXBlbmRlbmNpZXMgc3RyYWlnaHQgaXMgY3J1Y2lhbCBmb3Igb3B0aW1pemluZyB0aGlzIGtlcm5lbCBidWlsZCBhbmQgYXZvaWRpbmcgYW55IHVuZXhwZWN0ZWQgY29uZmxpY3RzIG9yIG1pc3NpbmcgZmVhdHVyZXMuIFRpbWUgdG8gZGlnIGRlZXBlci5cblxuXG4iLCJJbnB1dFRva2VucyI6Mzg1OCwiT3V0cHV0VG9rZW5zIjozMywiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjQ0LCJUb29sQ2FsbHMiOlsicmVhZC1maWxlIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzE6MDUuNTIzNDE5NTg2WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxMTM1OTE4NDEsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIE5GX0NPTk5UUkFDSyRcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwibmV0L25ldGZpbHRlci9LY29uZmlnXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvS2NvbmZpZz03ND1jb25maWcgTkVURklMVEVSX05FVExJTktfT1NGXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODEtXFxubmV0L25ldGZpbHRlci9LY29uZmlnOjgyOmNvbmZpZyBORl9DT05OVFJBQ0tcXG5uZXQvbmV0ZmlsdGVyL0tjb25maWctODMtXFx0dHJpc3RhdGUgXFxcIk5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIHN1cHBvcnRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMxOjA1LjYzNzAyNTQyN1oiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODMwNzEzNDY5LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgdGhlIHN1bW1hcml6ZWQgdGhvdWdodCBwcm9jZXNzLCBhc3N1bWluZyBJJ20gYW4gZXhwZXJ0IGFuZCB0YWtpbmcgdGhlIHBlcnNwZWN0aXZlIG9mIHRoZSBvcmlnaW5hbCB0ZXh0OlxuXG4qKkZvY3VzaW5nIEluOiBMaW5lIDgyIGFuZCBCZXlvbmQqKlxuXG5BbHJpZ2h0LCBJJ20gZ29pbmcgdG8ganVtcCBhaGVhZCBhbmQgemVybyBpbiBvbiBsaW5lIDgyIGFuZCB0aGUgc3Vycm91bmRpbmcgY29udGV4dC4gSXQncyBvZnRlbiB3aGVyZSB0aGUgbW9yZSBudWFuY2VkIG9yIHBvdGVudGlhbGx5IGNyaXRpY2FsIGFyZ3VtZW50cyBzdGFydCB0byBjcnlzdGFsbGl6ZS4gSSdtIGxvb2tpbmcgZm9yIHRoZSBrZXkgYXNzdW1wdGlvbnMsIHRoZSBjb3JlIGNsYWltcywgYW5kIHRoZSBzdXBwb3J0aW5nIGV2aWRlbmNlIHByZXNlbnRlZCBmcm9tIHRoaXMgcG9pbnQgZm9yd2FyZC4gV2hhdCdzIHRoZSBjZW50cmFsIG5hcnJhdGl2ZSBiZWluZyBidWlsdCAqYWZ0ZXIqIHRoaXMgdGhyZXNob2xkPyBBcmUgdGhlcmUgYW55IGxvZ2ljYWwgbGVhcHMgb3IgdW5zdXBwb3J0ZWQgYXNzZXJ0aW9ucyBlbWVyZ2luZyBhdCB0aGlzIHN0YWdlPyBJcyB0aGUgYXV0aG9yIHRha2luZyBhIHNwZWNpZmljIHBlcnNwZWN0aXZlPyBXaGF0IGFyZSB0aGUgaW1wbGljYXRpb25zIG9mIHRoZSBhcmd1bWVudCB0aGF0IGFyZSBiZWluZyBwcm9wb3NlZD8gSXMgdGhlcmUgYW5vdGhlciBhcmd1bWVudCwgdGhhdCBtYXkgY2hhbGxlbmdlIHRoZSBjZW50cmFsIG5hcnJhdGl2ZSB0aGF0IHNob3VsZCBiZSBjb25zaWRlcmVkPyBJIG5lZWQgdG8gYW5hbHl6ZSBob3cgdGhlIGF1dGhvciBpcyBkZXZlbG9waW5nIHRoZWlyIGFyZ3VtZW50IGZyb20gdGhpcyBwb2ludCBvbiDigJMgYXJlIHRoZXkgc29saWRpZnlpbmcgdGhlaXIgZm91bmRhdGlvbiBvciBzdGFydGluZyB0byBzaG93IGNyYWNrcyBpbiB0aGUgbG9naWM/IEknbSBhbnRpY2lwYXRpbmcgYm90aCBwb2ludHMsIHRoYXQgZWl0aGVyIHNvbGlkaWZ5aW5nIGV2aWRlbmNlIGNhbiBiZSBmb3VuZCBvciB0aGF0IHRoZSBhcmd1bWVudCBmYWxscyBhcGFydC4gSSdsbCBuZWVkIHRvIGRpc3NlY3QgZWFjaCBwb2ludCB0byBzZWUgaWYgdGhlIG92ZXJhbGwgdGhlc2lzIGhvbGRzIHdhdGVyLCBvciBpZiBuZXcgcGVyc3BlY3RpdmVzIG5lZWQgdG8gYmUgYnJvdWdodCBpbnRvIHRoZSBkaXNjdXNzaW9uLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0MTcxLCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MTAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzE6MDkuNDY3NzQzNzM2WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE0MjU3MCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL0tjb25maWdcIixcbiAgXCJGaXJzdExpbmVcIjogODAsXG4gIFwiTGluZUNvdW50XCI6IDIwXG59IiwiUmVzdWx0cyI6IntcbiAgXCJDb250ZW50c1wiOiBcIiAgODA6XFx0XFx0ICBmb3IgcGFzc2l2ZSBPUyBmaW5nZXJwcmludCB2aWEgTkZORVRMSU5LLlxcbiAgODE6XFx0XFxuICA4MjpcXHRjb25maWcgTkZfQ09OTlRSQUNLXFxuICA4MzpcXHRcXHR0cmlzdGF0ZSBcXFwiTmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3VwcG9ydFxcXCJcXG4gIDg0OlxcdFxcdGRlZmF1bHQgbSBpZiBORVRGSUxURVJfQURWQU5DRUQ9blxcbiAgODU6XFx0XFx0c2VsZWN0IE5GX0RFRlJBR19JUFY0XFxuICA4NjpcXHRcXHRzZWxlY3QgTkZfREVGUkFHX0lQVjYgaWYgSVBWNiAhPSBuXFxuICA4NzpcXHRcXHRoZWxwXFxuICA4ODpcXHRcXHQgIENvbm5lY3Rpb24gdHJhY2tpbmcga2VlcHMgYSByZWNvcmQgb2Ygd2hhdCBwYWNrZXRzIGhhdmUgcGFzc2VkXFxuICA4OTpcXHRcXHQgIHRocm91Z2ggeW91ciBtYWNoaW5lLCBpbiBvcmRlciB0byBmaWd1cmUgb3V0IGhvdyB0aGV5IGFyZSByZWxhdGVkXFxuICA5MDpcXHRcXHQgIGludG8gY29ubmVjdGlvbnMuXFxuICA5MTpcXHRcXG4gIDkyOlxcdFxcdCAgVGhpcyBpcyByZXF1aXJlZCB0byBkbyBNYXNxdWVyYWRpbmcgb3Igb3RoZXIga2luZHMgb2YgTmV0d29ya1xcbiAgOTM6XFx0XFx0ICBBZGRyZXNzIFRyYW5zbGF0aW9uLiAgSXQgY2FuIGFsc28gYmUgdXNlZCB0byBlbmhhbmNlIHBhY2tldFxcbiAgOTQ6XFx0XFx0ICBmaWx0ZXJpbmcgKHNlZSBgQ29ubmVjdGlvbiBzdGF0ZSBtYXRjaCBzdXBwb3J0JyBiZWxvdykuXFxuICA5NTpcXHRcXG4gIDk2OlxcdFxcdCAgVG8gY29tcGlsZSBpdCBhcyBhIG1vZHVsZSwgY2hvb3NlIE0gaGVyZS4gIElmIHVuc3VyZSwgc2F5IE4uXFxuICA5NzpcXHRcXG4gIDk4OlxcdGNvbmZpZyBORl9MT0dfU1lTTE9HXFxuICA5OTpcXHRcXHR0cmlzdGF0ZSBcXFwiU3lzbG9nIHBhY2tldCBsb2dnaW5nXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMTowOS40Njc4ODc5MzZaIiwiU2VxIjoxMywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6NDIwOTExNjA5OCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiSGVyZSdzIG15IHRob3VnaHQgcHJvY2VzcywgYXMgaXQgc3RhbmRzOlxuXG4qKlNDVFAgQ29ubmVjdGlvbiBUcmFja2luZyBDb25maWd1cmF0aW9uIC0gSW5pdGlhbCBBc3Nlc3NtZW50KipcblxuT2theSwgc28gSSdtIGxvb2tpbmcgYXQgZW5hYmxpbmcgU0NUUCBjb25uZWN0aW9uIHRyYWNraW5nLiBNeSBpbml0aWFsIHRob3VnaHQgaXMgdGhhdCBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX1BST1RPX1NDVFBgIGFyZSB0aGUgY29yZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgdG8gZm9jdXMgb24uIE5vdywgYSBrZXkgcXVlc3Rpb24gYXJpc2VzOiBkbyBJICphbHNvKiBuZWVkIHRvIGVuYWJsZSBgSVBfU0NUUGAgdG8gYWN0dWFsbHkgZ2VuZXJhdGUgYW5kIHNlbmQgU0NUUCB0cmFmZmljIGZvciB0ZXN0aW5nIHRoaXM/IEkgbmVlZCB0byBiZSBhYmxlIHRvICpzZW5kKiB0aGUgcGFja2V0cyBmb3IgdGhlIHRyYWNraW5nIHRvIHdvcmsuIEhtbW0sIGFjdHVhbGx5LCBsZXQgbWUgcmVwaHJhc2UgdGhhdCDigJMgYE5GX0NUX1BST1RPX1NDVFBgIGlzIHJlc3BvbnNpYmxlIGZvciAqdHJhY2tpbmcqIHRoZSBTQ1RQIHBhY2tldHMsIHNvLCBmdW5kYW1lbnRhbGx5LCB5ZXMsIEkgbmVlZCBhIG1lY2hhbmlzbSB0byBzZW5kIFNDVFAgcGFja2V0cy4gUmlnaHQuIFNvLCB0aGUgbW9yZSBwb2ludGVkIHF1ZXN0aW9uIG5vdyBiZWNvbWVzOiAqaXMqIGBJUF9TQ1RQYCB0aGUgY29ycmVjdCBtZWNoYW5pc20sIG9yIGlzIHRoZXJlIGFub3RoZXIgd2F5IHRvIGdldCBTQ1RQIHBhY2tldHMgb24gdGhlIHdpcmU/IExldCdzIGNoZWNrLlxuXG5cbiIsIklucHV0VG9rZW5zIjo0NzU5LCJPdXRwdXRUb2tlbnMiOjM0LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6OTIsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMToxMy42NzcwMDgyMjRaIiwiU2VxIjoxNCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU3NjgzNDAwLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBJUF9TQ1RQXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9zY3RwL0tjb25maWdcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L3NjdHAvS2NvbmZpZy01LVxcbm5ldC9zY3RwL0tjb25maWc6NjptZW51Y29uZmlnIElQX1NDVFBcXG5uZXQvc2N0cC9LY29uZmlnLTctXFx0dHJpc3RhdGUgXFxcIlRoZSBTQ1RQIFByb3RvY29sXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wNy0yOVQwNTozMToxMy43MzQ2OTgxMTRaIiwiU2VxIjoxNSwiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6MzAxMTE1MTg2NiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiT2theSwgaGVyZSdzIG15IHRha2Ugb24gdGhvc2UgdGhvdWdodHMsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2U6XG5cbioqQW5hbHl6aW5nIHRoZSBTQ1RQIENvbm50cmFjayBGdW5jdGlvbioqXG5cbkFscmlnaHQsIHN0cmFpZ2h0IHRvIHRoZSBwb2ludDogYElQX1NDVFBgIHVuZXF1aXZvY2FsbHkgc2lnbmlmaWVzIHRoZSBTQ1RQIChTdHJlYW0gQ29udHJvbCBUcmFuc21pc3Npb24gUHJvdG9jb2wpLCBub3RoaW5nIGFtYmlndW91cyB0aGVyZS4gTXkgbWluZCBpbW1lZGlhdGVseSBqdW1wcyB0byB0aGF0IGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGZ1bmN0aW9uLiBUaGF0J3MgdGhlIGNvcmUgb2YgaG93IHRoZSBjb25uZWN0aW9uIHRyYWNraW5nIG1vZHVsZSBoYW5kbGVzIFNDVFAgdHJhZmZpYy4gSSBuZWVkIHRvIHVuZGVyc3RhbmQgd2hhdCB0aGF0IGZ1bmN0aW9uIGlzIGRvaW5nIGF0IGEgbG93IGxldmVsLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1MTY1LCJPdXRwdXRUb2tlbnMiOjQ5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzE6MTYuNzQ1ODUzOTdaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjU5MTcxOTc5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcIm5mX2Nvbm50cmFja19zY3RwX3BhY2tldFwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwibmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jPTI5NT1zdGF0aWMgYm9vbCBzY3RwX2Vycm9yKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMtMzI2LS8qIFJldHVybnMgdmVyZGljdCBmb3IgcGFja2V0LCBvciAtTkZfQUNDRVBUIGZvciBpbnZhbGlkLiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYzozMjc6aW50IG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jLTMyOC1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMxOjE2LjgwNTAzMjQyOVoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozODA3NjIxMjMwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSB0aG91Z2h0cywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZTpcblxuKipTQ1RQIFBhY2tldCBIYW5kbGluZyBpbiBuZl9jb25udHJhY2s6IEEgUHJpbWUgRnV6emluZyBUYXJnZXQqKlxuXG5BbHJpZ2h0LCBzbyB0aGUgYG5mX2Nvbm50cmFja19zY3RwX3BhY2tldGAgZnVuY3Rpb24gaXMgKnRoZSogZW50cnkgcG9pbnQgZm9yIFNDVFAgdHJhZmZpYyB3aXRoaW4gdGhlIGBuZl9jb25udHJhY2tgIGZyYW1ld29yaywgYW5kIHRoYXQncyBwcmVjaXNlbHkgd2hlcmUgSSBuZWVkIHRvIGZvY3VzIG15IGF0dGVudGlvbi4gR2l2ZW4gaXRzIHJvbGUgYXMgdGhlIHByaW1hcnkgU0NUUCBwYWNrZXQgaGFuZGxlciBjYWxsZWQgYnkgTmV0ZmlsdGVyLCBpdOKAmXMgc2NyZWFtaW5nIFwiZnV6eiBtZS5cIiBUaGUgc2hlZXIgdm9sdW1lIG9mIHRyYWZmaWMgcG90ZW50aWFsbHkgZmxvd2luZyB0aHJvdWdoIHRoaXMgZnVuY3Rpb24gbWFrZXMgaXQgYSBoaWdoLXZhbHVlIHRhcmdldCBmb3IgdW5jb3ZlcmluZyB2dWxuZXJhYmlsaXRpZXMuIEl04oCZcyBlc3NlbnRpYWxseSB0aGUgZ2F0ZWtlZXBlci5cblxuQnV0IEkgY2FuJ3QganVzdCBkaXZlIGluLiBGaXJzdCwgSSBuZWVkIHRvIG1ldGhvZGljYWxseSBjaGVjayBpZiB0aGVyZSBhcmUgYW55IG90aGVyIGFyZWFzIHdpdGhpbiB0aGlzIG1vZHVsZSB0aGF0IHdhcnJhbnQgZnVydGhlciBleGFtaW5hdGlvbi4gQWx3YXlzIHN0YXJ0IHdpdGggdGhlIHByaW1hcnkgZW50cnkgcG9pbnQsIGJ1dCBpdCB3b3VsZCBiZSBhIG1pc3Rha2UgdG8gYXNzdW1lIHRoZXJlIGFyZW4ndCByZWxhdGVkIGZ1bmN0aW9ucyBoYW5kbGluZyBlZGdlIGNhc2VzIG9yIHNwZWNpZmljIFNDVFAgY29udHJvbCBtZXNzYWdlcyB0aGF0IGFsc28gcmVxdWlyZSBteSBhdHRlbnRpb24uIExldCdzIHNlZSB3aGF0IGVsc2UgaXMgaW4gcGxheSBoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo1NTMwLCJPdXRwdXRUb2tlbnMiOjQ2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NjYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzE6MjAuNjEyNjU2NzU4WiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InJlYWQtZmlsZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjExMzgzMCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkZpbGVcIjogXCJuZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmNcIixcbiAgXCJGaXJzdExpbmVcIjogMzIwLFxuICBcIkxpbmVDb3VudFwiOiAyMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgMzIwOlxcdFxcdHJldHVybiBmYWxzZTtcXG4gMzIxOlxcdG91dF9pbnZhbGlkOlxcbiAzMjI6XFx0XFx0bmZfbDRwcm90b19sb2dfaW52YWxpZChza2IsIHN0YXRlLCBJUFBST1RPX1NDVFAsIFxcXCIlc1xcXCIsIGxvZ21zZyk7XFxuIDMyMzpcXHRcXHRyZXR1cm4gdHJ1ZTtcXG4gMzI0OlxcdH1cXG4gMzI1OlxcdFxcbiAzMjY6XFx0LyogUmV0dXJucyB2ZXJkaWN0IGZvciBwYWNrZXQsIG9yIC1ORl9BQ0NFUFQgZm9yIGludmFsaWQuICovXFxuIDMyNzpcXHRpbnQgbmZfY29ubnRyYWNrX3NjdHBfcGFja2V0KHN0cnVjdCBuZl9jb25uICpjdCxcXG4gMzI4OlxcdFxcdFxcdFxcdCAgICAgc3RydWN0IHNrX2J1ZmYgKnNrYixcXG4gMzI5OlxcdFxcdFxcdFxcdCAgICAgdW5zaWduZWQgaW50IGRhdGFvZmYsXFxuIDMzMDpcXHRcXHRcXHRcXHQgICAgIGVudW0gaXBfY29ubnRyYWNrX2luZm8gY3RpbmZvLFxcbiAzMzE6XFx0XFx0XFx0XFx0ICAgICBjb25zdCBzdHJ1Y3QgbmZfaG9va19zdGF0ZSAqc3RhdGUpXFxuIDMzMjpcXHR7XFxuIDMzMzpcXHRcXHRlbnVtIHNjdHBfY29ubnRyYWNrIG5ld19zdGF0ZSwgb2xkX3N0YXRlO1xcbiAzMzQ6XFx0XFx0ZW51bSBpcF9jb25udHJhY2tfZGlyIGRpciA9IENUSU5GTzJESVIoY3RpbmZvKTtcXG4gMzM1OlxcdFxcdGNvbnN0IHN0cnVjdCBzY3RwaGRyICpzaDtcXG4gMzM2OlxcdFxcdHN0cnVjdCBzY3RwaGRyIF9zY3RwaDtcXG4gMzM3OlxcdFxcdGNvbnN0IHN0cnVjdCBzY3RwX2NodW5raGRyICpzY2g7XFxuIDMzODpcXHRcXHRzdHJ1Y3Qgc2N0cF9jaHVua2hkciBfc2NoO1xcbiAzMzk6XFx0XFx0dV9pbnQzMl90IG9mZnNldCwgY291bnQ7XFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMxOjIwLjYxMjc3MzUzOFoiLCJTZXEiOjE5LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo0MDc0NzAyNTg2LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyB0aGUgU0NUUCBDb25udHJhY2sgUGFja2V0IEhhbmRsZXIqKlxuXG5Pa2F5LCBzbyB0aGUgYG5mX2Nvbm50cmFja19zY3RwX3BhY2tldGAgZnVuY3Rpb24gc2VlbXMgdG8gYmUgdGhlIGNlbnRyYWwgcGllY2UgaGVyZS4gTXkgZmlyc3QgdGhvdWdodCBpcywgYXJlIHRoZXJlIGFueSBvdGhlciBmdW5jdGlvbnMgaW52b2x2ZWQgaW4gdGhpcyBzcGVjaWZpYyBwYXRjaD8gSXQgYXBwZWFycyB0aGUgbW9kaWZpY2F0aW9uIGlzIGxpbWl0ZWQgdG8ganVzdCB0aGlzIG9uZSwgd2hpY2ggaXMgaW50ZXJlc3RpbmcuXG5cbk5vdywgYSBjcml0aWNhbCBxdWVzdGlvbiBhcmlzZXM6IGlzIGBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRgIGEgc3RhdGljIGZ1bmN0aW9uPyBJdCdzIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBzY29wZSBhbmQgcG90ZW50aWFsIGRlcGVuZGVuY2llcy4gTGV0IG1lIHF1aWNrbHkgY2hlY2sgdGhlIHNvdXJjZSBjb2RlLiBBaCwgaGVyZSB3ZSBhcmUgaW4gYG5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuY2AsIGFuZCBpdCdzIGRlZmluZWQgYXMgYGludCBuZl9jb25udHJhY2tfc2N0cF9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LCAuLi4pYC4gTm8sIGl0J3MgKm5vdCogc3RhdGljLiBUaGlzIG1lYW5zIGl0J3MgZWl0aGVyIGV4cG9ydGVkIG9yIHVzZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlIGtlcm5lbC4gVGhpcyBpcyBpbXBvcnRhbnQgYXMgdGhpcyBpbXBhY3RzIGhvdyBjaGFuZ2VzIHByb3BhZ2F0ZS4gSSBzaG91bGQgaW52ZXN0aWdhdGUgd2hlcmUgaXQgaXMgY2FsbGVkLCBhcyB0aGlzIGlzIGdvaW5nIHRvIGJlIGltcG9ydGFudCB0byB1bmRlcnN0YW5kIHRoZSBmdWxsIGltcGxpY2F0aW9ucyBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjIxNiwiT3V0cHV0VG9rZW5zIjozNiwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjEyOCwiVG9vbENhbGxzIjpbInJlYWQtZmlsZSJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMxOjI0LjY4NzQ3OTQwNFoiLCJTZXEiOjIwLCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NjYyNTk1OTIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwibmZfY29ubnRyYWNrX3NjdHBfcGFja2V0XCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcIm5ldC9uZXRmaWx0ZXIvXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcIm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYz0xOTY5PXN0YXRpYyBpbnQgbmZfY29ubnRyYWNrX2hhbmRsZV9wYWNrZXQoc3RydWN0IG5mX2Nvbm4gKmN0LFxcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jLTE5ODktXFx0Y2FzZSBJUFBST1RPX1NDVFA6XFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfY29yZS5jOjE5OTA6XFx0XFx0cmV0dXJuIG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChjdCwgc2tiLCBkYXRhb2ZmLFxcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX2NvcmUuYy0xOTkxLVxcdFxcdFxcdFxcdFxcdFxcdGN0aW5mbywgc3RhdGUpO1xcbi0tXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jPTI5NT1zdGF0aWMgYm9vbCBzY3RwX2Vycm9yKHN0cnVjdCBza19idWZmICpza2IsXFxuLS1cXG5uZXQvbmV0ZmlsdGVyL25mX2Nvbm50cmFja19wcm90b19zY3RwLmMtMzI2LS8qIFJldHVybnMgdmVyZGljdCBmb3IgcGFja2V0LCBvciAtTkZfQUNDRVBUIGZvciBpbnZhbGlkLiAqL1xcbm5ldC9uZXRmaWx0ZXIvbmZfY29ubnRyYWNrX3Byb3RvX3NjdHAuYzozMjc6aW50IG5mX2Nvbm50cmFja19zY3RwX3BhY2tldChzdHJ1Y3QgbmZfY29ubiAqY3QsXFxubmV0L25ldGZpbHRlci9uZl9jb25udHJhY2tfcHJvdG9fc2N0cC5jLTMyOC1cXHRcXHRcXHQgICAgIHN0cnVjdCBza19idWZmICpza2IsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA3LTI5VDA1OjMxOjI0Ljc1Mzc0Njk3NloiLCJTZXEiOjIxLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMDQ1ODU1NTgzMiwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXppbmcgU0NUUCBDb25udHJhY2sgSW1wbGVtZW50YXRpb24qKlxuXG5Pa2F5LCBzbyBJJ20gZGlnZ2luZyBpbnRvIHRoZSBTQ1RQIGNvbm5lY3Rpb24gdHJhY2tpbmcgaW1wbGVtZW50YXRpb24uIFRoZSBzdGFydGluZyBwb2ludCBzZWVtcyB0byBiZSBgbmZfY29ubnRyYWNrX2hhbmRsZV9wYWNrZXRgIHdpdGhpbiBgbmZfY29ubnRyYWNrX2NvcmUuY2AuIFRoaXMgbWVhbnMgYG5mX2Nvbm50cmFja19zY3RwX3BhY2tldGAgaXMgdGhlIHN5bWJvbCB0byBjb25jZW50cmF0ZSBvbiBoZXJlLlxuXG5Ob3csIGxldCdzIG5haWwgZG93biB0aGUgbmVjZXNzYXJ5IGNvbmZpZ3VyYXRpb25zLiBJdCdzIGNsZWFyIHRoYXQgd2UgbmVlZCBgTkZfQ09OTlRSQUNLYCBhbmQgYE5GX0NUX1BST1RPX1NDVFBgLCB3aGljaCBtYWtlcyBzZW5zZS4gSSBhbHNvIHNlZSBgSVBfU0NUUGAgYXMgY3J1Y2lhbCwgYW5kIEknbGwgZXhwbGFpbiB3aHkgaW4gYSBtb21lbnQuICBXZSdsbCBhbHNvIG5lZWQgYE5FVEZJTFRFUmAgYW5kIGBORVRGSUxURVJfQURWQU5DRURgLiBMZXQgbWUgZG91YmxlLWNoZWNrIHRob3NlIG5hbWVzLi4uIFllcywgYE5GX0NPTk5UUkFDS2AsIGBORl9DVF9QUk9UT19TQ1RQYCwgYW5kIGBJUF9TQ1RQYCBhcmUgYWxsIGNvcnJlY3QuXG5cbkEgcXVpY2sgbG9vayBjb25maXJtcyB0aGF0IGBORl9DVF9QUk9UT19TQ1RQYCBpcyBkZWZhdWx0IGVuYWJsZWQgd2hlbiBgTkVURklMVEVSX0FEVkFOQ0VEYCBpcyBlbmFibGVkLCBidXQgaXQncyBhbHdheXMgYmV0dGVyIHRvIGJlIGV4cGxpY2l0LCBzbyB3ZSdsbCBlbnN1cmUgdGhhdCdzIHNldCBpbiB0aGUgYnVpbGQgY29uZmlndXJhdGlvbi5cblxuUmVnYXJkaW5nIGBJUF9TQ1RQYCwgaXQgbG9va3MgbGlrZSBoYXZpbmcgdGhlIFNDVFAgcHJvdG9jb2wgaW1wbGVtZW50YXRpb24gcHJlc2VudCBpcyB1c2VmdWwuIFdoaWxlIHRvb2xzIGxpa2Ugc3l6a2FsbGVyIGNhbiBpbmplY3QgcmF3IHBhY2tldHMsIGhhdmluZyBgSVBfU0NUUGAgYWxsb3dzIGZvciB0aGUgdXNlIG9mIHN0YW5kYXJkIHNvY2tldHMgdG8gZ2VuZXJhdGUgdmFsaWQgU0NUUCB0cmFmZmljLiBUaGlzIGlzIG9mdGVuIGZhciBtb3JlIGVmZmVjdGl2ZSBmb3IgdGhvcm91Z2hseSB0ZXN0aW5nIHRoZSBjb25udHJhY2sgbG9naWMgYW5kIHJlYWNoaW5nIHRob3NlIGRlZXBlciBzdGF0ZXMuIFNvLCB5ZXMsIGluY2x1ZGluZyBgSVBfU0NUUGAgaXMgZGVmaW5pdGVseSB0aGUgd2F5IHRvIGdvIGhlcmUuXG5cbk5vdywgbGV0J3MgcmV2aXNpdCB0aGUgcGF0Y2ggdG8gZW5zdXJlIG15IHVuZGVyc3RhbmRpbmcgaXMgYWNjdXJhdGUuXG5cbmBgYGNcbi1cdFx0fSBlbHNlIGlmIChzY2gtXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9DT09LSUVfQUNLKSB7XG4tXHRcdFx0Y3QtXHUwMDNlcHJvdG8uc2N0cC5pbml0W2Rpcl0gPSAwO1xuLVx0XHRcdGN0LVx1MDAzZXByb3RvLnNjdHAuaW5pdFshZGlyXSA9IDA7XG4rXHRcdH0gZWxzZSBpZiAoc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfQ09PS0lFX0FDSyB8fFxuK1x0XHRcdCAgIHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0VSUk9SIHx8XG4rXHRcdFx0ICAgc2NoLVx1MDAzZXR5cGUgPT0gU0NUUF9DSURfU0hVVERPV04gfHxcbitcdFx0XHQgICBzY2gtXHUwMDNldHlwZSA9PSBTQ1RQX0NJRF9TSFVURE9XTl9BQ0spIHtcbitcdFx0XHRpZiAoY3QtXHUwMDNlcHJvdG8uc2N0cC52dGFnW2Rpcl0gXHUwMDI2XHUwMDI2XG4rXHRcdFx0ICAgIHNoLVx1MDAzZXZ0YWcgIT0gY3QtXHUwMDNlcHJvdG8uc2N0cC52dGFnW2Rpcl0pXG4rXHRcdFx0XHRnb3RvIG91dF91bmxvY2s7XG4rXHRcdFx0aWYgKHNjaC1cdTAwM2V0eXBlID09IFNDVFBfQ0lEX0NPT0tJRV9BQ0spIHtcbitcdFx0XHRcdGN0LVx1MDAzZXByb3RvLnNjdHAuaW5pdFtkaXJdID0gMDtcbitcdFx0XHRcdGN0LVx1MDAzZXByb3RvLnNjdHAuaW5pdFshZGlyXSA9IDA7XG4rXHRcdFx0fVxuYGBgXG5cbk9rYXksIGNvbmZpcm1lZC4gVGhlIHBhdGNoIGZvY3VzZXMgb24gYSBmdW5jdGlvbmFsIGNoYW5nZSB3aXRoaW4gdGhlIFNDVFAgY29ubnRyYWNrIGxvZ2ljLiBJdCBhZGRzIHZ0YWcgdmFsaWRhdGlvbiBmb3IgdGhvc2Ugc3BlY2lmaWMgY2h1bmsgdHlwZXM6IGBTQ1RQX0NJRF9DT09LSUVfQUNLYCwgYFNDVFBfQ0lEX0VSUk9SYCwgYFNDVFBfQ0lEX1NIVVRET1dOYCwgYW5kIGBTQ1RQX0NJRF9TSFVURE9XTl9BQ0tgLlxuXG5UbyByZWNhcDpcbiogICAqKkZvY3VzIHN5bWJvbDoqKiBgbmZfY29ubnRyYWNrX3NjdHBfcGFja2V0YFxuKiAgICoqUmVxdWlyZWQgY29uZmlnczoqKiBgTkZfQ09OTlRSQUNLYCwgYE5GX0NUX1BST1RPX1NDVFBgLCBgSVBfU0NUUGAsIGBORVRGSUxURVJgLCBgTkVURklMVEVSX0FEVkFOQ0VEYC5cblxuQWxsIGNvbmZpZ3VyYXRpb24gbmFtZXMgdmVyaWZpZWQuIFRoYXQgc2hvdWxkIHByb3ZpZGUgYSBzb2xpZCBiYXNpcyBmb3IgZnVydGhlciBpbnZlc3RpZ2F0aW9uIG9yIHJlcHJvZHVjdGlvbiBvZiB0aGlzIGNoYW5nZS5cblxuXG4iLCJJbnB1dFRva2VucyI6NjkyNiwiT3V0cHV0VG9rZW5zIjoxNDAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo4MzUsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDctMjlUMDU6MzE6MzUuMjEyMzA2NDE4WiIsIlNlcSI6MjIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTA5Mzg3ODM1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJORl9DT05OVFJBQ0tcIixcbiAgICBcIk5GX0NUX1BST1RPX1NDVFBcIixcbiAgICBcIklQX1NDVFBcIixcbiAgICBcIk5FVEZJTFRFUl9BRFZBTkNFRFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcIm5mX2Nvbm50cmFja19zY3RwX3BhY2tldFwiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsb2dpYyBmb3IgU0NUUCBwYWNrZXRzLCBzcGVjaWZpY2FsbHkgYWRkaW5nIHZ0YWcgdmFsaWRhdGlvbiBmb3Igc2V2ZXJhbCBTQ1RQIGNodW5rIHR5cGVzIChDT09LSUVfQUNLLCBFUlJPUiwgU0hVVERPV04sIFNIVVRET1dOX0FDSykuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiB0aGUgY29yZSBuZXR3b3JrIGZpbHRlcmluZyBwYXRoIHRoYXQgaXMgcmVhY2hhYmxlIHdoZW4gcHJvY2Vzc2luZyBTQ1RQIHRyYWZmaWMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiTkZfQ09OTlRSQUNLXCIsXG4gICAgXCJORl9DVF9QUk9UT19TQ1RQXCIsXG4gICAgXCJJUF9TQ1RQXCIsXG4gICAgXCJORVRGSUxURVJfQURWQU5DRURcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJuZl9jb25udHJhY2tfc2N0cF9wYWNrZXRcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgbG9naWMgZm9yIFNDVFAgcGFja2V0cywgc3BlY2lmaWNhbGx5IGFkZGluZyB2dGFnIHZhbGlkYXRpb24gZm9yIHNldmVyYWwgU0NUUCBjaHVuayB0eXBlcyAoQ09PS0lFX0FDSywgRVJST1IsIFNIVVRET1dOLCBTSFVURE9XTl9BQ0spLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gdGhlIGNvcmUgbmV0d29yayBmaWx0ZXJpbmcgcGF0aCB0aGF0IGlzIHJlYWNoYWJsZSB3aGVuIHByb2Nlc3NpbmcgU0NUUCB0cmFmZmljLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH1dOwoJCQlpZiAoIXJhd0RhdGEgfHwgcmF3RGF0YS5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpOwoJCQlkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKTsKCQkJZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdTdW1tYXJ5VGFibGVzKHJhd0RhdGEpIHsKCQkJY29uc3Qgc3RhdHMgPSB7CgkJCQlsbG06IHsgY291bnQ6IDAsIHRva2VuczogMCwgZHVyYXRpb246IDAgfSwKCQkJCXRvb2w6IHsgY291bnQ6IDAsIGR1cmF0aW9uOiAwIH0KCQkJfTsKCgkJCXJhd0RhdGEuZm9yRWFjaChzID0+IHsKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOyAKCQkJCWlmIChzLlR5cGUgPT09ICJsbG0iKSB7CgkJCQkJc3RhdHMubGxtLmNvdW50Kys7CgkJCQkJc3RhdHMubGxtLnRva2VucyArPSAocy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2Vucyk7CgkJCQkJc3RhdHMubGxtLmR1cmF0aW9uICs9IGR1cjsKCQkJCX0gZWxzZSBpZiAocy5UeXBlID09PSAidG9vbCIpIHsKCQkJCQlzdGF0cy50b29sLmNvdW50Kys7CgkJCQkJc3RhdHMudG9vbC5kdXJhdGlvbiArPSBkdXI7CgkJCQl9CgkJCX0pOwoKCQkJY29uc3QgYXZnTGxtRHVyID0gc3RhdHMubGxtLmNvdW50ID4gMCA/IChzdGF0cy5sbG0uZHVyYXRpb24gLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdMbG1Ub2tlbiA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLnRva2VucyAvIHN0YXRzLmxsbS5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgkJCWNvbnN0IGF2Z1Rvb2xEdXIgPSBzdGF0cy50b29sLmNvdW50ID4gMCA/IChzdGF0cy50b29sLmR1cmF0aW9uIC8gc3RhdHMudG9vbC5jb3VudCkudG9GaXhlZCgyKSA6IDA7CgoJCQljb25zdCBsbG1TdW1hcnlDZWxscyA9IFtzdGF0cy5sbG0uY291bnQsIHN0YXRzLmxsbS50b2tlbnMsIGF2Z0xsbVRva2VuLCBzdGF0cy5sbG0uZHVyYXRpb24sIGF2Z0xsbUR1cl07CgkJCWNvbnN0IHRvb2xTdW1tYXJ5Q2VsbHMgPSBbc3RhdHMudG9vbC5jb3VudCwgc3RhdHMudG9vbC5kdXJhdGlvbiwgYXZnVG9vbER1cl07CgoJCQljb25zdCBsbG1TdW1tYXJ5Qm9keSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsbG1fc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCWxsbVN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCBsbG1UciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RyJyk7CgkJCWxsbVN1bWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQlsbG1Uci5hcHBlbmRDaGlsZCh0ZCk7CgkJCX0pOwoJCQlsbG1TdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZChsbG1Ucik7CgoJCQljb25zdCB0b29sU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9vbF9zdW1tYXJ5X3N0YXRzX2JvZHknKTsKCQkJdG9vbFN1bW1hcnlCb2R5LmlubmVySFRNTCA9ICIiOwoJCQljb25zdCB0b29sVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQl0b29sU3VtbWFyeUNlbGxzLmZvckVhY2goY2VsbCA9PiB7CgkJCQljb25zdCB0ZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3RkJyk7CgkJCQl0ZC50ZXh0Q29udGVudCA9IGNlbGw7CgkJCQl0b29sVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJdG9vbFN1bW1hcnlCb2R5LmFwcGVuZENoaWxkKHRvb2xUcik7CgkJfQoKCQlmdW5jdGlvbiBkcmF3RHVyYXRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGZpbHRlcmVkU3RlcHMgPSByYXdEYXRhLmZpbHRlcihkID0+IFsibGxtIiwgInRvb2wiXS5pbmNsdWRlcyhkLlR5cGUpKTsKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnRHVyYXRpb24nKTsKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsgCgoJCQlmaWx0ZXJlZFN0ZXBzLmZvckVhY2gocyA9PiB7CgkJCQkKCQkJCWNvbnN0IGR1ciA9IHMuRHVyYXRpb24gLyAxMDAwMDAwMDAwOwoJCQkJbGV0IHRvb2x0aXAgPSBzLk5hbWU7CgkJCQlpZiAocy5UeXBlID09PSAibGxtIiAmJiBzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgkJCQlkYXRhLmFkZFJvdyhbYCR7cy5TZXF9YCwgZHVyLCB0b29sdGlwXSk7CgkJCX0pOwoKCQkJY29uc3Qgb3B0aW9ucyA9IHsKCQkJCXRpdGxlOiAnVGltZSBDb25zdW1wdGlvbiBvZiBMTE0vVG9vbCBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNL1Rvb2wgU3RlcHMnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnU2Vjb25kcycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZHVyYXRpb25fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd1Rva2VuQ29uc3VtcHRpb25DaGFydChyYXdEYXRhKSB7CgkJCWNvbnN0IGxsbVN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBkLlR5cGUgPT09ICJsbG0iKTsKCQkJaWYgKGxsbVN0ZXBzLmxlbmd0aCA9PT0gMCkgcmV0dXJuOwoKCQkJY29uc3QgZGF0YSA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5EYXRhVGFibGUoKTsKCQkJZGF0YS5hZGRDb2x1bW4oJ3N0cmluZycsICdTdGVwJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKCdudW1iZXInLCAnVG9rZW5zJyk7CQkJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3N0eWxlJ30pOwkKCQkJZGF0YS5hZGRDb2x1bW4oe3R5cGU6ICdzdHJpbmcnLCByb2xlOiAndG9vbHRpcCd9KTsJCgoJCQljb25zdCBhZ2VudENvbG9ycyA9IHt9OwoJCQljb25zdCBwYWxldHRlID0gWycjNDI4NUY0JywgJyNEQjQ0MzcnLCAnI0Y0QjQwMCcsICcjMEY5RDU4JywgJyNBQjQ3QkMnLCAnIzAwQUNDMSddOwoJCQlsZXQgY29sb3JJZHggPSAwOwoJCQljb25zdCBhZ2VudExMTUNvdW50cyA9IHt9OwoJCQlsbG1TdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJaWYgKCFhZ2VudENvbG9yc1tzLk5hbWVdKSB7CgkJCQkJYWdlbnRDb2xvcnNbcy5OYW1lXSA9IHBhbGV0dGVbY29sb3JJZHggJSBwYWxldHRlLmxlbmd0aF07CgkJCQkJY29sb3JJZHgrKzsKCQkJCX0KCgkJCQlhZ2VudExMTUNvdW50c1tzLk5hbWVdID0gKGFnZW50TExNQ291bnRzW3MuTmFtZV0gfHwgMCkgKyAxOwoJCQkJY29uc3QgbGFiZWwgPSBgJHtzLk5hbWV9LSR7YWdlbnRMTE1Db3VudHNbcy5OYW1lXX1gOwoJCQkJY29uc3QgdG90YWxUb2tlbnMgPSBzLklucHV0VG9rZW5zICsgcy5PdXRwdXRUb2tlbnMgKyBzLk91dHB1dFRob3VnaHRzVG9rZW5zOwoJCQkJY29uc3Qgc3R5bGUgPSBgY29sb3I6ICR7YWdlbnRDb2xvcnNbcy5OYW1lXX1gOwoJCQkJbGV0IHRvb2x0aXAgPSBgVG90YWwgVG9rZW5zOiAke3RvdGFsVG9rZW5zfVxuKEluOiAke3MuSW5wdXRUb2tlbnN9LCBPdXQ6ICR7cy5PdXRwdXRUb2tlbnN9LCBUaG91Z2h0czogJHtzLk91dHB1dFRob3VnaHRzVG9rZW5zfSlgOwoJCQkJaWYgKHMuVG9vbENhbGxzICYmIHMuVG9vbENhbGxzLmxlbmd0aCA+IDApIHsKCQkJCQl0b29sdGlwICs9IGBcblRvb2xzOiAke3MuVG9vbENhbGxzLmpvaW4oJywgJyl9YDsKCQkJCX0KCgkJCQlkYXRhLmFkZFJvdyhbbGFiZWwsIHRvdGFsVG9rZW5zLCBzdHlsZSwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1Rva2VuIENvbnN1bXB0aW9uIGJ5IExMTSBDYWxscycsCgkJCQloQXhpczogewoJCQkJCXRpdGxlOiAnTExNIENhbGwgU2VxdWVuY2UnLAoJCQkJfSwKCQkJCXZBeGlzOiB7IHRpdGxlOiAnQ29uc3VtZWQgVG9rZW5zJyB9LAoJCQkJbGVnZW5kOiB7IHBvc2l0aW9uOiAnbm9uZScgfSwKCQkJCWJhcjogeyBncm91cFdpZHRoOiAnNzUlJyB9LAoJCQkJY2hhcnRBcmVhOiB7IHdpZHRoOiAnODUlJywgaGVpZ2h0OiAnNzAlJyB9LAoJCQkJaGVpZ2h0OiA0MDAKCQkJfTsKCgkJCWNvbnN0IGNoYXJ0ID0gbmV3IGdvb2dsZS52aXN1YWxpemF0aW9uLkNvbHVtbkNoYXJ0KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0b2tlbl9jaGFydF9kaXYnKSk7CgkJCWNoYXJ0LmRyYXcoZGF0YSwgb3B0aW9ucyk7CgkJfQoJCWxldCBhbGxFeHBhbmRlZCA9IGZhbHNlOwoJCWZ1bmN0aW9uIHRvZ2dsZUFsbERldGFpbHMoKSB7CgkJCWFsbEV4cGFuZGVkID0gIWFsbEV4cGFuZGVkOwoJCQlkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkZXRhaWxzJykuZm9yRWFjaChkID0+IHsKCQkJCWlmIChhbGxFeHBhbmRlZCkgZC5zZXRBdHRyaWJ1dGUoJ29wZW4nLCAnJyk7CgkJCQllbHNlIGQucmVtb3ZlQXR0cmlidXRlKCdvcGVuJyk7CgkJCX0pOwoJCX0KCTwvc2NyaXB0PgoKCjwvYm9keT4KPC9odG1sPgo=" },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-workflowljkdw[1] Phase: Succeeded StartedAt: 2026-07-29 05:31:46 +0000 UTC FinishedAt: 2026-07-29 05:31:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-07-29 05:31:46 +0000 UTC FinishedAt: 2026-07-29 05:31:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2] Phase: Succeeded StartedAt: 2026-07-29 05:31:46 +0000 UTC FinishedAt: 2026-07-29 09:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-07-29 05:31:46 +0000 UTC FinishedAt: 2026-07-29 09:32:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-07-29 05:31:46 +0000 UTC FinishedAt: 2026-07-29 05:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-07-29 05:31:46 +0000 UTC FinishedAt: 2026-07-29 05:31:52 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowljkdw/series-workflowljkdw-convert-artifact-1718813232/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-07-29 05:32:10 +0000 UTC FinishedAt: 2026-07-29 06:00:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-07-29 05:32:10 +0000 UTC FinishedAt: 2026-07-29 06:00:26 +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:*6334c6c0-29b1-410c-a2b3-7db16ada5cfe,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-workflowljkdw/series-workflowljkdw-convert-artifact-1718813232/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": "24f7735a-74d4-43c3-875d-b15691a691a3", "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-workflowljkdw/series-workflowljkdw-build-action-4143116086/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-07-29 05:32:10 +0000 UTC FinishedAt: 2026-07-29 06:00:16 +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:*6334c6c0-29b1-410c-a2b3-7db16ada5cfe,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-workflowljkdw/series-workflowljkdw-convert-artifact-1718813232/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": "24f7735a-74d4-43c3-875d-b15691a691a3", "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-workflowljkdw/series-workflowljkdw-build-action-4143116086/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-07-29 06:00:26 +0000 UTC FinishedAt: 2026-07-29 06:00:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-07-29 06:00:26 +0000 UTC FinishedAt: 2026-07-29 06:00:26 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-07-29 06:00:26 +0000 UTC FinishedAt: 2026-07-29 06:00:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-07-29 06:00:26 +0000 UTC FinishedAt: 2026-07-29 06:00:30 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.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-workflowljkdw/series-workflowljkdw-convert-artifact-4207389975/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-07-29 06:00:36 +0000 UTC FinishedAt: 2026-07-29 06:02:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-07-29 06:00:36 +0000 UTC FinishedAt: 2026-07-29 06:02:31 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*24f7735a-74d4-43c3-875d-b15691a691a3,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-workflowljkdw/series-workflowljkdw-build-action-4143116086/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-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-07-29 06:02:40 +0000 UTC FinishedAt: 2026-07-29 06:02:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-07-29 06:02:40 +0000 UTC FinishedAt: 2026-07-29 06:02:40 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-07-29 06:02:40 +0000 UTC FinishedAt: 2026-07-29 06:27:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-07-29 06:02:40 +0000 UTC FinishedAt: 2026-07-29 06:27:25 +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:*6334c6c0-29b1-410c-a2b3-7db16ada5cfe,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-workflowljkdw/series-workflowljkdw-convert-artifact-4207389975/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": "477c826a-7f4e-4b3e-83ea-58562c846cec", "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-workflowljkdw/series-workflowljkdw-build-action-1253237595/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-07-29 06:02:40 +0000 UTC FinishedAt: 2026-07-29 06:26:47 +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:*6334c6c0-29b1-410c-a2b3-7db16ada5cfe,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-workflowljkdw/series-workflowljkdw-convert-artifact-4207389975/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": "477c826a-7f4e-4b3e-83ea-58562c846cec", "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-workflowljkdw/series-workflowljkdw-build-action-1253237595/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-07-29 06:27:25 +0000 UTC FinishedAt: 2026-07-29 06:27:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-07-29 06:27:25 +0000 UTC FinishedAt: 2026-07-29 06:27:25 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-07-29 06:27:25 +0000 UTC FinishedAt: 2026-07-29 06:29:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-07-29 06:27:26 +0000 UTC FinishedAt: 2026-07-29 06:29:24 +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:*477c826a-7f4e-4b3e-83ea-58562c846cec,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-workflowljkdw/series-workflowljkdw-build-action-1253237595/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-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-07-29 06:29:34 +0000 UTC FinishedAt: 2026-07-29 09:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-07-29 06:29:34 +0000 UTC FinishedAt: 2026-07-29 09:32:10 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"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:*24f7735a-74d4-43c3-875d-b15691a691a3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*477c826a-7f4e-4b3e-83ea-58562c846cec,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-workflowljkdw/series-workflowljkdw-build-action-4143116086/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-workflowljkdw/series-workflowljkdw-build-action-1253237595/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-07-29 06:29:34 +0000 UTC FinishedAt: 2026-07-29 06:29:48 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-07-29 06:29:34 +0000 UTC FinishedAt: 2026-07-29 06:29:39 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"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-workflowljkdw/series-workflowljkdw-convert-artifact-3301602768/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-07-29 06:29:34 +0000 UTC FinishedAt: 2026-07-29 06:29:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-07-29 06:29:34 +0000 UTC FinishedAt: 2026-07-29 06:29:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-07-29 06:29:34 +0000 UTC FinishedAt: 2026-07-29 06:29:34 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-07-29 06:29:48 +0000 UTC FinishedAt: 2026-07-29 09:32:10 +0000 UTC Input: nil Output: nil --------- Name: series-workflowljkdw[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-net-kasan-gce-corpus.db"],"focus":["net"],"focus_symbols":["nf_conntrack_sctp_packet"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"97ac08560d236ca17f6606d9e671118e5eae5721","config_name":"upstream-apparmor-kasan.config","enable_configs":["NF_CONNTRACK","NF_CT_PROTO_SCTP","IP_SCTP","NETFILTER_ADVANCED"],"series_id":"211abdd5-4444-4de8-8e4a-e06d8d5beaa5","tree_name":"nf","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/netfilter/nf.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-07-29 06:29:48 +0000 UTC FinishedAt: 2026-07-29 09:32:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*24f7735a-74d4-43c3-875d-b15691a691a3,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*477c826a-7f4e-4b3e-83ea-58562c846cec,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-workflowljkdw/series-workflowljkdw-build-action-4143116086/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-workflowljkdw/series-workflowljkdw-build-action-1253237595/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-workflowljkdw/series-workflowljkdw-convert-artifact-3301602768/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,}