Name: series-workflowjs8cn Phase: Succeeded StartedAt: 2026-08-02 03:43:47 +0000 UTC FinishedAt: 2026-08-02 04:50:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[0] Phase: Succeeded StartedAt: 2026-08-02 03:43:47 +0000 UTC FinishedAt: 2026-08-02 04:01:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[0].run-triage Phase: Succeeded StartedAt: 2026-08-02 03:43:47 +0000 UTC FinishedAt: 2026-08-02 04:01:58 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CRASH_ZEROIZE", "CRASH_DUMP", "SECRETMEM", "KEYS", "BIG_KEYS", "ENCRYPTED_KEYS", "TRUSTED_KEYS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CRASH_ZEROIZE", "CRASH_DUMP", "SECRETMEM", "KEYS", "BIG_KEYS", "ENCRYPTED_KEYS", "TRUSTED_KEYS" ], "series_id": "77e6fa34-a246-4cd0-9a52-90e481ae6f2e" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "crash_zeroize", "secretmem_crash_zeroize", "key_crash_zeroize", "big_key_zeroize", "encrypted_zeroize", "trusted_zeroize", "user_zeroize" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NSQVNIX1pFUk9JWkUmIzM0OywKICAgICYjMzQ7Q1JBU0hfRFVNUCYjMzQ7LAogICAgJiMzNDtTRUNSRVRNRU0mIzM0OywKICAgICYjMzQ7S0VZUyYjMzQ7LAogICAgJiMzNDtCSUdfS0VZUyYjMzQ7LAogICAgJiMzNDtFTkNSWVBURURfS0VZUyYjMzQ7LAogICAgJiMzNDtUUlVTVEVEX0tFWVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjcmFzaF96ZXJvaXplJiMzNDssCiAgICAmIzM0O3NlY3JldG1lbV9jcmFzaF96ZXJvaXplJiMzNDssCiAgICAmIzM0O2tleV9jcmFzaF96ZXJvaXplJiMzNDssCiAgICAmIzM0O2JpZ19rZXlfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDtlbmNyeXB0ZWRfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDt0cnVzdGVkX3plcm9pemUmIzM0OywKICAgICYjMzQ7dXNlcl96ZXJvaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmVhdHVyZSB0byB6ZXJvaXplIHNlbnNpdGl2ZSBzZWNyZXRzIChrZXlzIGFuZCBzZWNyZXRtZW0pIGR1cmluZyBhIGtlcm5lbCBwYW5pYy9jcmFzaC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBleGVjdXRlcyB3aGVuIGEgY3Jhc2gga2VybmVsIGlzIGxvYWRlZCBhbmQgYSBwYW5pYyBvY2N1cnMuIEZ1enppbmcgY2FuIGhlbHAgZW5zdXJlIHRoZXNlIHRlYXJkb3duIHBhdGhzIGRvIG5vdCBpbnRyb2R1Y2Ugc2Vjb25kYXJ5IGZhdWx0cyBvciBkZWFkbG9ja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YjQ0N2YxZDdjYTE2MDYxNTQxNjVmY2QwZWE0M2QxZGNiYWEwZTM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwNDowMDozNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL2tleGVjLmMgYi9kcml2ZXJzL29mL2tleGVjLmNcbmluZGV4IDAyOTkwM2I5ODZjYmQuLjM2NjM1ZjZjYjkwMDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL29mL2tleGVjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvb2Yva2V4ZWMuY1xuQEAgLTI0LDcgJiM0MzsyNCw3IEBAXG4gXG4gLypcbiAgKiBBZGRpdGlvbmFsIHNwYWNlIG5lZWRlZCBmb3IgdGhlIEZEVCBidWZmZXIgc28gdGhhdCB3ZSBjYW4gYWRkIGluaXRyZCxcbi0gKiBib290YXJncywga2FzbHItc2VlZCwgcm5nLXNlZWQsIHVzZWFibGUtbWVtb3J5LXJhbmdlIGFuZCBlbGZjb3JlaGRyLlxuJiM0MzsgKiBib290YXJncywga2FzbHItc2VlZCwgcm5nLXNlZWQsIHVzYWJsZS1tZW1vcnktcmFuZ2UgYW5kIGVsZmNvcmVoZHIuXG4gICovXG4gI2RlZmluZSBGRFRfRVhUUkFfU1BBQ0UgMHgxMDAwXG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jcmFzaF9jb3JlLmggYi9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaFxuaW5kZXggYmMwODcxMjRjZDc4ZS4uNWM3MjA3YzBiYmExNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaFxuQEAgLTUsNiAmIzQzOzUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbmthZ2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2VsZmNvcmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2VsZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L25vdGlmaWVyLmhcdTAwM2VcbiBcbiBzdHJ1Y3Qga2ltYWdlO1xuIFxuQEAgLTM0LDYgJiM0MzszNSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9rZXhlY19wcm90ZWN0X2NyYXNoa3Jlcyh2b2lkKSB7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9rZXhlY191bnByb3RlY3RfY3Jhc2hrcmVzKHZvaWQpIHsgfVxuICNlbmRpZlxuIFxuJiM0MzsjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbiYjNDM7ZXh0ZXJuIHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCBjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3Q7XG4mIzQzOyNlbmRpZlxuJiM0MztcbiAjaWZuZGVmIGFyY2hfY3Jhc2hfaGFuZGxlX2hvdHBsdWdfZXZlbnRcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9jcmFzaF9oYW5kbGVfaG90cGx1Z19ldmVudChzdHJ1Y3Qga2ltYWdlICppbWFnZSwgdm9pZCAqYXJnKSB7IH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmggYi9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmhcbmluZGV4IGJiOTdiZDNlNWFmNGYuLmZmMDk0NGNlMzY4ZjkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaFxuQEAgLTEyMiw2ICYjNDM7MTIyLDE1IEBAIHN0cnVjdCBrZXlfdHlwZSB7XG4gXHQvKiBjbGVhciB0aGUgZGF0YSBmcm9tIGEga2V5IChvcHRpb25hbCkgKi9cbiBcdHZvaWQgKCpkZXN0cm95KShzdHJ1Y3Qga2V5ICprZXkpO1xuIFxuJiM0MztcdC8qIHNjcnViIHRoZSBrZXkgbWF0ZXJpYWwgd2l0aG91dCBmcmVlJiMzOTtpbmcgKG9wdGlvbmFsKVxuJiM0MztcdCAqIC0gdXNlZCBmcm9tIENPTkZJR19DUkFTSF9aRVJPSVpFIGR1cmluZyBwYW5pYyB0byBrZWVwIGtleXMgb3V0IG9mXG4mIzQzO1x0ICogICBjcmFzaCBkdW1wc1xuJiM0MztcdCAqIC0gY2FsbGVkIGZyb20gdGhlIHBhbmljIHBhdGggd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kIHByZWVtcHRpb25cbiYjNDM7XHQgKiAgIGRpc2FibGVkXG4mIzQzO1x0ICogLSBtdXN0IG5vdCBzbGVlcCwgYWxsb2NhdGUsIGZyZWUgb3IgdGFrZSBsb2Nrc1xuJiM0MztcdCAqL1xuJiM0MztcdHZvaWQgKCp6ZXJvaXplKShzdHJ1Y3Qga2V5ICprZXkpO1xuJiM0MztcbiBcdC8qIGRlc2NyaWJlIGEga2V5ICovXG4gXHR2b2lkICgqZGVzY3JpYmUpKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwgc3RydWN0IHNlcV9maWxlICpwKTtcbiBcbmRpZmYgLS1naXQgYS9rZXJuZWwvS2NvbmZpZy5rZXhlYyBiL2tlcm5lbC9LY29uZmlnLmtleGVjXG5pbmRleCAxNTYzMjM1OGJjZjcxLi45MmFiMGE2OWM4ZWM2IDEwMDY0NFxuLS0tIGEva2VybmVsL0tjb25maWcua2V4ZWNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9LY29uZmlnLmtleGVjXG5AQCAtMTc5LDQgJiM0MzsxNzksMTIgQEAgY29uZmlnIENSQVNIX01BWF9NRU1PUllfUkFOR0VTXG4gXHQgIHRoZSBjb21wdXRhdGlvbiBiZWhpbmQgdGhlIHZhbHVlIHByb3ZpZGVkIHRocm91Z2ggdGhlXG4gXHQgIC9zeXMva2VybmVsL2NyYXNoX2VsZmNvcmVoZHJfc2l6ZSBhdHRyaWJ1dGUuXG4gXG4mIzQzO2NvbmZpZyBDUkFTSF9aRVJPSVpFXG4mIzQzO1x0Ym9vbCBcJiMzNDtaZXJvaXplIHNlY3JldHMgb24gcGFuaWNcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIENSQVNIX0RVTVBcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBXaXBlIHNlY3JldHMgKGUuZy4ga2VybmVsIGtleXJpbmcgYW5kIG1lbWZkX3NlY3JldCBwYWdlcykgb24gY3Jhc2ggb3IgcGFuaWMuXG4mIzQzO1xuJiM0MztcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjNDM7XG4gZW5kbWVudVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9jcmFzaF9jb3JlLmMgYi9rZXJuZWwvY3Jhc2hfY29yZS5jXG5pbmRleCAyYjM2YWE5ZmFkZTA2Li5kM2E3NzYzZTI3NTk5IDEwMDY0NFxuLS0tIGEva2VybmVsL2NyYXNoX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2NyYXNoX2NvcmUuY1xuQEAgLTIzLDYgJiM0MzsyMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2JqdG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhbmljLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vc2VjdGlvbnMuaFx1MDAzZVxuQEAgLTMzLDYgJiM0MzszNCwyMiBAQFxuIC8qIFBlciBjcHUgbWVtb3J5IGZvciBzdG9yaW5nIGNwdSBzdGF0ZXMgaW4gY2FzZSBvZiBzeXN0ZW0gY3Jhc2guICovXG4gbm90ZV9idWZfdCBfX3BlcmNwdSAqY3Jhc2hfbm90ZXM7XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRVxuJiM0MztBVE9NSUNfTk9USUZJRVJfSEVBRChjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QpO1xuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QpO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgY3Jhc2hfemVyb2l6ZSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0a3RpbWVfdCB6ZXJvaXplX3N0YXJ0ID0ga3RpbWVfZ2V0KCk7XG4mIzQzO1xuJiM0MztcdHByX2luZm8oXCYjMzQ7V2lwaW5nIHNlbnNpdGl2ZSBzZWNyZXRzLi4uXFxuXCYjMzQ7KTtcbiYjNDM7XHRhdG9taWNfbm90aWZpZXJfY2FsbF9jaGFpbihcdTAwMjZjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QsIDAsIE5VTEwpO1xuJiM0MztcdHByX2luZm8oXCYjMzQ7RG9uZSBpbiAlbGxkIHVzXFxuXCYjMzQ7LCBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgemVyb2l6ZV9zdGFydCkpO1xuJiM0Mzt9XG4mIzQzOyNlbHNlXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpIHsgfVxuJiM0MzsjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi9cbiYjNDM7XG4gLyogdGltZSB0byB3YWl0IGZvciBwb3NzaWJsZSBETUEgdG8gZmluaXNoIGJlZm9yZSBzdGFydGluZyB0aGUga2R1bXAga2VybmVsXG4gICogd2hlbiBhIENNQSByZXNlcnZhdGlvbiBpcyB1c2VkXG4gICovXG5AQCAtMTQyLDYgJiM0MzsxNTksNyBAQCB2b2lkIF9fbm9jbG9uZSBfX2NyYXNoX2tleGVjKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuIFx0XHRcdGNyYXNoX3NhdmVfdm1jb3JlaW5mbygpO1xuIFx0XHRcdG1hY2hpbmVfY3Jhc2hfc2h1dGRvd24oXHUwMDI2Zml4ZWRfcmVncyk7XG4gXHRcdFx0Y3Jhc2hfY21hX2NsZWFyX3BlbmRpbmdfZG1hKCk7XG4mIzQzO1x0XHRcdGNyYXNoX3plcm9pemUoKTtcbiBcdFx0XHRtYWNoaW5lX2tleGVjKGtleGVjX2NyYXNoX2ltYWdlKTtcbiBcdFx0fVxuIFx0XHRrZXhlY191bmxvY2soKTtcbmRpZmYgLS1naXQgYS9tbS9zZWNyZXRtZW0uYyBiL21tL3NlY3JldG1lbS5jXG5pbmRleCBkMjk4NjUwNzViNmVhLi41M2Y2MjlkNjYzM2MxIDEwMDY0NFxuLS0tIGEvbW0vc2VjcmV0bWVtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3NlY3JldG1lbS5jXG5AQCAtMTMsOSAmIzQzOzEzLDExIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0b3BzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcmludGsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9ub3RpZmllci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3lzY2FsbHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BzZXVkb19mcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2VjcmV0bWVtLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY3Jhc2hfY29yZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2V0X21lbW9yeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQvc2lnbmFsLmhcdTAwM2VcbiBcbkBAIC0xODcsNiAmIzQzOzE4OSw1MCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgc2VjcmV0bWVtX2lvcHMgPSB7XG4gXG4gc3RhdGljIHN0cnVjdCB2ZnNtb3VudCAqc2VjcmV0bWVtX21udDtcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19DUkFTSF9aRVJPSVpFXG4mIzQzOy8qIENhbGxlZCBmYXIgaW50byB2cGFuaWMgZnJvbSBjcmFzaF9jb3JlLmMgd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kXG4mIzQzOyAqIHByZWVtcHRpb24gZGlzYWJsZWRcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgc2VjcmV0bWVtX2NyYXNoX3plcm9pemUoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZ1xuJiM0MztcdFx0YWN0aW9uLCB2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHN1cGVyX2Jsb2NrICpzYjtcbiYjNDM7XHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xuJiM0MztcbiYjNDM7XHRpZiAoIXNlY3JldG1lbV9tbnQpXG4mIzQzO1x0XHRyZXR1cm4gTk9USUZZX0RPTkU7XG4mIzQzO1x0c2IgPSBzZWNyZXRtZW1fbW50LVx1MDAzZW1udF9zYjtcbiYjNDM7XG4mIzQzO1x0LyogSWYgdGhlIGxpc3Qgd2FzIG1vZGlmaWVkIGluIHRoZSBleGFjdCBtb21lbnQgd2UgcGFuaWMmIzM5O2VkLCBpdCBtaWdodCBiZVxuJiM0MztcdCAqIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSB0aGF0IHdvdWxkIGJlIHVuc2FmZSB0byBpdGVyYXRlLiBJZiB3ZSBjYW4mIzM5O3RcbiYjNDM7XHQgKiBnZXQgdGhlIGxvY2ssIHRvbyBiYWQsIHRoYXQmIzM5O3MgYWxsIHdlIGNhbiBkbyBoZXJlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghc3Bpbl90cnlsb2NrKFx1MDAyNnNiLVx1MDAzZXNfaW5vZGVfbGlzdF9sb2NrKSkge1xuJiM0MztcdFx0cHJfY3JpdChcJiMzNDtjcmFzaF96ZXJvaXplOiBjYW4mIzM5O3QgYWNxdWlyZSBzZWNyZXRtZW0gc3VwZXJibG9jayBsb2NrLlxcblwmIzM0O1xuJiM0MztcdFx0XHQgXCYjMzQ7Y3Jhc2hfemVyb2l6ZTogc2tpcHBpbmcgemVyb2l6aW5nIHNlY3JldG1lbS5cXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShpbm9kZSwgXHUwMDI2c2ItXHUwMDNlc19pbm9kZXMsIGlfc2JfbGlzdCkge1xuJiM0MztcdFx0WEFfU1RBVEUoeGFzLCBcdTAwMjZpbm9kZS1cdTAwM2VpX21hcHBpbmctXHUwMDNlaV9wYWdlcywgMCk7XG4mIzQzO1x0XHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuJiM0MztcbiYjNDM7XHRcdC8qIG5vIG5lZWQgZm9yIGxvY2tzIGlmIHdlJiMzOTtyZSBidXJuaW5nIGRvd24gdGhlIGhvdXNlIDopICovXG4mIzQzO1x0XHR4YXNfZm9yX2VhY2goXHUwMDI2eGFzLCBmb2xpbywgVUxPTkdfTUFYKSB7XG4mIzQzO1x0XHRcdGlmICh4YXNfcmV0cnkoXHUwMDI2eGFzLCBmb2xpbykgfHwgeGFfaXNfdmFsdWUoZm9saW8pKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0XHRpbm9kZS1cdTAwM2VpX21hcHBpbmctXHUwMDNlYV9vcHMtXHUwMDNlZnJlZV9mb2xpbyhmb2xpbyk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcdC8qIG9mZiB0byBrZXhlYygpISAqL1xuJiM0MztcdHJldHVybiBOT1RJRllfRE9ORTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBzZWNyZXRtZW1femVyb2l6ZV9uYiA9IHtcbiYjNDM7XHQubm90aWZpZXJfY2FsbCA9IHNlY3JldG1lbV9jcmFzaF96ZXJvaXplXG4mIzQzO307XG4mIzQzOyNlbmRpZiAvKiBDT05GSUdfQ1JBU0hfWkVST0laRSAqL1xuJiM0MztcbiBzdGF0aWMgc3RydWN0IGZpbGUgKnNlY3JldG1lbV9maWxlX2NyZWF0ZSh1bnNpZ25lZCBsb25nIGZsYWdzKVxuIHtcbiBcdHN0cnVjdCBmaWxlICpmaWxlO1xuQEAgLTI2Myw2ICYjNDM7MzA5LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IHNlY3JldG1lbV9pbml0KHZvaWQpXG4gXHRpZiAoSVNfRVJSKHNlY3JldG1lbV9tbnQpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihzZWNyZXRtZW1fbW50KTtcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19DUkFTSF9aRVJPSVpFXG4mIzQzO1x0YXRvbWljX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKFx1MDAyNmNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCwgXHUwMDI2c2VjcmV0bWVtX3plcm9pemVfbmIpO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gZnNfaW5pdGNhbGwoc2VjcmV0bWVtX2luaXQpO1xuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jIGIvc2VjdXJpdHkva2V5cy9iaWdfa2V5LmNcbmluZGV4IDI2OGY3MDJkZjM4MGUuLmFkODUzN2RkYTcwZmEgMTAwNjQ0XG4tLS0gYS9zZWN1cml0eS9rZXlzL2JpZ19rZXkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2VjdXJpdHkva2V5cy9iaWdfa2V5LmNcbkBAIC0zNSw2ICYjNDM7MzUsOCBAQCBzdHJ1Y3QgYmlnX2tleV9wYXlsb2FkIHtcbiAgKi9cbiAjZGVmaW5lIEJJR19LRVlfRklMRV9USFJFU0hPTEQgKHNpemVvZihzdHJ1Y3QgaW5vZGUpICYjNDM7IHNpemVvZihzdHJ1Y3QgZGVudHJ5KSlcbiBcbiYjNDM7c3RhdGljIHZvaWQgYmlnX2tleV96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSk7XG4mIzQzO1xuIC8qXG4gICogYmlnX2tleSBkZWZpbmVkIGtleXMgdGFrZSBhbiBhcmJpdHJhcnkgc3RyaW5nIGFzIHRoZSBkZXNjcmlwdGlvbiBhbmQgYW5cbiAgKiBhcmJpdHJhcnkgYmxvYiBvZiBkYXRhIGFzIHRoZSBwYXlsb2FkXG5AQCAtNDYsNiAmIzQzOzQ4LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX2JpZ19rZXkgPSB7XG4gXHQuaW5zdGFudGlhdGVcdFx0PSBnZW5lcmljX2tleV9pbnN0YW50aWF0ZSxcbiBcdC5yZXZva2VcdFx0XHQ9IGJpZ19rZXlfcmV2b2tlLFxuIFx0LmRlc3Ryb3lcdFx0PSBiaWdfa2V5X2Rlc3Ryb3ksXG4mIzQzO1x0Lnplcm9pemVcdFx0PSBiaWdfa2V5X3plcm9pemUsXG4gXHQuZGVzY3JpYmVcdFx0PSBiaWdfa2V5X2Rlc2NyaWJlLFxuIFx0LnJlYWRcdFx0XHQ9IGJpZ19rZXlfcmVhZCxcbiBcdC51cGRhdGVcdFx0XHQ9IGJpZ19rZXlfdXBkYXRlLFxuQEAgLTI3OSw2ICYjNDM7MjgyLDE4IEBAIGxvbmcgYmlnX2tleV9yZWFkKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwgY2hhciAqYnVmZmVyLCBzaXplX3QgYnVmbGVuKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGJpZ19rZXlfemVyb2l6ZShzdHJ1Y3Qga2V5ICprZXkpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYmlnX2tleV9wYXlsb2FkICpwYXlsb2FkID0gdG9fYmlnX2tleV9wYXlsb2FkKGtleS1cdTAwM2VwYXlsb2FkKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHBheWxvYWQtXHUwMDNlZGF0YSkge1xuJiM0MztcdFx0aWYgKHBheWxvYWQtXHUwMDNlbGVuZ3RoIFx1MDAzZSBCSUdfS0VZX0ZJTEVfVEhSRVNIT0xEKVxuJiM0MztcdFx0XHRtZW16ZXJvX2V4cGxpY2l0KHBheWxvYWQtXHUwMDNlZGF0YSwgQ0hBQ0hBMjBQT0xZMTMwNV9LRVlfU0laRSk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG1lbXplcm9fZXhwbGljaXQocGF5bG9hZC1cdTAwM2VkYXRhLCBwYXlsb2FkLVx1MDAzZWxlbmd0aCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIC8qXG4gICogUmVnaXN0ZXIga2V5IHR5cGVcbiAgKi9cbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzL2VuY3J5cHRlZC5jIGIvc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuY1xuaW5kZXggNTljYjc3YjIzN2IzNi4uOWY1NmZhOWI0YWFmNCAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNcbkBAIC05NzAsMTEgJiM0Mzs5NzAsMjMgQEAgc3RhdGljIHZvaWQgZW5jcnlwdGVkX2Rlc3Ryb3koc3RydWN0IGtleSAqa2V5KVxuIFx0a2ZyZWVfc2Vuc2l0aXZlKGtleS1cdTAwM2VwYXlsb2FkLmRhdGFbMF0pO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZW5jcnlwdGVkX3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGVuY3J5cHRlZF9rZXlfcGF5bG9hZCAqZXBheWxvYWQgPSBrZXktXHUwMDNlcGF5bG9hZC5kYXRhWzBdO1xuJiM0MztcbiYjNDM7XHRpZiAoIWVwYXlsb2FkKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRtZW16ZXJvX2V4cGxpY2l0KGVwYXlsb2FkLVx1MDAzZXBheWxvYWRfZGF0YSxcbiYjNDM7XHRcdFx0IGVwYXlsb2FkLVx1MDAzZXBheWxvYWRfZGF0YWxlbiAmIzQzOyBlcGF5bG9hZC1cdTAwM2VkYXRhYmxvYl9sZW4pO1xuJiM0Mzt9XG4mIzQzO1xuIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9lbmNyeXB0ZWQgPSB7XG4gXHQubmFtZSA9IFwmIzM0O2VuY3J5cHRlZFwmIzM0OyxcbiBcdC5pbnN0YW50aWF0ZSA9IGVuY3J5cHRlZF9pbnN0YW50aWF0ZSxcbiBcdC51cGRhdGUgPSBlbmNyeXB0ZWRfdXBkYXRlLFxuIFx0LmRlc3Ryb3kgPSBlbmNyeXB0ZWRfZGVzdHJveSxcbiYjNDM7XHQuemVyb2l6ZSA9IGVuY3J5cHRlZF96ZXJvaXplLFxuIFx0LmRlc2NyaWJlID0gdXNlcl9kZXNjcmliZSxcbiBcdC5yZWFkID0gZW5jcnlwdGVkX3JlYWQsXG4gfTtcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2tleS5jIGIvc2VjdXJpdHkva2V5cy9rZXkuY1xuaW5kZXggYjM0YTY0ZDgxZDQ3YS4uNTY3M2RjYzhjNWQyMyAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2tleXMva2V5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMva2V5LmNcbkBAIC0xMiw2ICYjNDM7MTIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlY3VyaXR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93b3JrcXVldWUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9jcmFzaF9jb3JlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yYW5kb20uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7aW50ZXJuYWwuaFwmIzM0O1xuQEAgLTEyNjgsNiAmIzQzOzEyNjksNDQgQEAgdm9pZCB1bnJlZ2lzdGVyX2tleV90eXBlKHN0cnVjdCBrZXlfdHlwZSAqa3R5cGUpXG4gfVxuIEVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9rZXlfdHlwZSk7XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRVxuJiM0MzsvKiBDYWxsZWQgZmFyIGludG8gdnBhbmljIGZyb20gY3Jhc2hfY29yZS5jIHdpdGggb3RoZXIgQ1BVcyBzdG9wcGVkIGFuZFxuJiM0MzsgKiBwcmVlbXB0aW9uIGRpc2FibGVkXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGtleV9jcmFzaF96ZXJvaXplKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgYWN0aW9uLFxuJiM0MztcdFx0dm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCByYl9ub2RlICpub2RlO1xuJiM0MztcbiYjNDM7XHQvKiBJZiB3ZSBjYW4mIzM5O3QgYWNxdWlyZSB0aGUgbG9jaywgdGhlIHJidHJlZSBtaWdodCBiZSBpbiBhbiBpbmNvbnNpc3RlbnRcbiYjNDM7XHQgKiBzdGF0ZS4gVGhhdCYjMzk7cyBhbGwgd2UgY2FuIGRvIHRoZW4sIGFzIHRoZXJlJiMzOTtzIG5vIHBvaW50IHRvIHdhaXRpbmdcbiYjNDM7XHQgKiBhdCB0aGlzIHN0YWdlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghc3Bpbl90cnlsb2NrKFx1MDAyNmtleV9zZXJpYWxfbG9jaykpIHtcbiYjNDM7XHRcdHByX2NyaXQoXCYjMzQ7Y3Jhc2hfemVyb2l6ZTogY2FuJiMzOTt0IGFjcXVpcmUga2V5X3NlcmlhbF9sb2NrLiBza2lwcGluZyBrZXlyaW5ncy5cXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Zm9yIChub2RlID0gcmJfZmlyc3QoXHUwMDI2a2V5X3NlcmlhbF90cmVlKTsgbm9kZTsgbm9kZSA9IHJiX25leHQobm9kZSkpIHtcbiYjNDM7XHRcdHN0cnVjdCBrZXkgKmtleSA9IHJiX2VudHJ5KG5vZGUsIHN0cnVjdCBrZXksIHNlcmlhbF9ub2RlKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoa2V5LVx1MDAzZXR5cGUgPT0gXHUwMDI2a2V5X3R5cGVfa2V5cmluZyB8fFxuJiM0MztcdFx0ICAgIGtleS1cdTAwM2VzdGF0ZSA9PSBLRVlfSVNfVU5JTlNUQU5USUFURUQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdC8qIGN1c3RvbSB6ZXJvaXplIHNpbmNlIGZyZWUmIzM5O2luZyBpc24mIzM5O3Qgc2FmZSBhdCB0aGlzIHBvaW50ICovXG4mIzQzO1x0XHRpZiAoa2V5LVx1MDAzZXR5cGUtXHUwMDNlemVyb2l6ZSlcbiYjNDM7XHRcdFx0a2V5LVx1MDAzZXR5cGUtXHUwMDNlemVyb2l6ZShrZXkpO1xuJiM0MztcdH1cbiYjNDM7XHQvKiBvZmYgdG8ga2V4ZWMoKSEgKi9cbiYjNDM7XHRyZXR1cm4gTk9USUZZX0RPTkU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sga2V5X2NyYXNoX3plcm9pemVfbmIgPSB7XG4mIzQzO1x0Lm5vdGlmaWVyX2NhbGwgPSBrZXlfY3Jhc2hfemVyb2l6ZVxuJiM0Mzt9O1xuJiM0MzsjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi9cbiYjNDM7XG4gLypcbiAgKiBJbml0aWFsaXNlIHRoZSBrZXkgbWFuYWdlbWVudCBzdGF0ZS5cbiAgKi9cbkBAIC0xMjkwLDQgJiM0MzsxMzI5LDkgQEAgdm9pZCBfX2luaXQga2V5X2luaXQodm9pZClcbiBcbiBcdHJiX2luc2VydF9jb2xvcihcdTAwMjZyb290X2tleV91c2VyLm5vZGUsXG4gXHRcdFx0XHUwMDI2a2V5X3VzZXJfdHJlZSk7XG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbiYjNDM7XHRhdG9taWNfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoXHUwMDI2Y3Jhc2hfemVyb2l6ZV9ub3RpZmllcl9saXN0LFxuJiM0MztcdFx0XHRcdTAwMjZrZXlfY3Jhc2hfemVyb2l6ZV9uYik7XG4mIzQzOyNlbmRpZlxuIH1cbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy90cnVzdGVkX2NvcmUuYyBiL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jXG5pbmRleCAwNTA5ZDk5NTVmMmE2Li5mMTU5ZmFlYWZlMjNhIDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jXG5AQCAtMzI1LDExICYjNDM7MzI1LDI1IEBAIHN0YXRpYyB2b2lkIHRydXN0ZWRfZGVzdHJveShzdHJ1Y3Qga2V5ICprZXkpXG4gXHRrZnJlZV9zZW5zaXRpdmUoa2V5LVx1MDAzZXBheWxvYWQuZGF0YVswXSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCB0cnVzdGVkX3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRydXN0ZWRfa2V5X3BheWxvYWQgKnAgPSBrZXktXHUwMDNlcGF5bG9hZC5kYXRhWzBdO1xuJiM0MztcbiYjNDM7XHRpZiAoIXApXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdG1lbXplcm9fZXhwbGljaXQocC1cdTAwM2VrZXksIHNpemVvZihwLVx1MDAzZWtleSkpO1xuJiM0MztcdG1lbXplcm9fZXhwbGljaXQocC1cdTAwM2VibG9iLCBzaXplb2YocC1cdTAwM2VibG9iKSk7XG4mIzQzO1x0cC1cdTAwM2VrZXlfbGVuID0gMDtcbiYjNDM7XHRwLVx1MDAzZWJsb2JfbGVuID0gMDtcbiYjNDM7fVxuJiM0MztcbiBzdHJ1Y3Qga2V5X3R5cGUga2V5X3R5cGVfdHJ1c3RlZCA9IHtcbiBcdC5uYW1lID0gXCYjMzQ7dHJ1c3RlZFwmIzM0OyxcbiBcdC5pbnN0YW50aWF0ZSA9IHRydXN0ZWRfaW5zdGFudGlhdGUsXG4gXHQudXBkYXRlID0gdHJ1c3RlZF91cGRhdGUsXG4gXHQuZGVzdHJveSA9IHRydXN0ZWRfZGVzdHJveSxcbiYjNDM7XHQuemVyb2l6ZSA9IHRydXN0ZWRfemVyb2l6ZSxcbiBcdC5kZXNjcmliZSA9IHVzZXJfZGVzY3JpYmUsXG4gXHQucmVhZCA9IHRydXN0ZWRfcmVhZCxcbiB9O1xuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmMgYi9zZWN1cml0eS9rZXlzL3VzZXJfZGVmaW5lZC5jXG5pbmRleCA2Zjg4YjUwN2Y5Mjc5Li5hZGU5NWRjMjQ4MWRmIDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY1xuQEAgLTE1LDYgJiM0MzsxNSw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7aW50ZXJuYWwuaFwmIzM0O1xuIFxuIHN0YXRpYyBpbnQgbG9nb25fdmV0X2Rlc2NyaXB0aW9uKGNvbnN0IGNoYXIgKmRlc2MpO1xuJiM0MztzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KTtcbiBcbiAvKlxuICAqIHVzZXIgZGVmaW5lZCBrZXlzIHRha2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgZGVzY3JpcHRpb24gYW5kIGFuXG5AQCAtMjgsNiAmIzQzOzI5LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX3VzZXIgPSB7XG4gXHQudXBkYXRlXHRcdFx0PSB1c2VyX3VwZGF0ZSxcbiBcdC5yZXZva2VcdFx0XHQ9IHVzZXJfcmV2b2tlLFxuIFx0LmRlc3Ryb3lcdFx0PSB1c2VyX2Rlc3Ryb3ksXG4mIzQzO1x0Lnplcm9pemVcdFx0PSB1c2VyX3plcm9pemUsXG4gXHQuZGVzY3JpYmVcdFx0PSB1c2VyX2Rlc2NyaWJlLFxuIFx0LnJlYWRcdFx0XHQ9IHVzZXJfcmVhZCxcbiB9O1xuQEAgLTQ4LDYgJiM0Mzs1MCw3IEBAIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9sb2dvbiA9IHtcbiBcdC51cGRhdGVcdFx0XHQ9IHVzZXJfdXBkYXRlLFxuIFx0LnJldm9rZVx0XHRcdD0gdXNlcl9yZXZva2UsXG4gXHQuZGVzdHJveVx0XHQ9IHVzZXJfZGVzdHJveSxcbiYjNDM7XHQuemVyb2l6ZVx0XHQ9IHVzZXJfemVyb2l6ZSxcbiBcdC5kZXNjcmliZVx0XHQ9IHVzZXJfZGVzY3JpYmUsXG4gXHQudmV0X2Rlc2NyaXB0aW9uXHQ9IGxvZ29uX3ZldF9kZXNjcmlwdGlvbixcbiB9O1xuQEAgLTE1Miw2ICYjNDM7MTU1LDE0IEBAIHZvaWQgdXNlcl9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSlcbiBcbiBFWFBPUlRfU1lNQk9MX0dQTCh1c2VyX2Rlc3Ryb3kpO1xuIFxuJiM0MztzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHVzZXJfa2V5X3BheWxvYWQgKnVwYXlsb2FkID0ga2V5LVx1MDAzZXBheWxvYWQuZGF0YVswXTtcbiYjNDM7XG4mIzQzO1x0aWYgKHVwYXlsb2FkKVxuJiM0MztcdFx0bWVtemVyb19leHBsaWNpdCh1cGF5bG9hZC1cdTAwM2VkYXRhLCB1cGF5bG9hZC1cdTAwM2VkYXRhbGVuKTtcbiYjNDM7fVxuJiM0MztcbiAvKlxuICAqIGRlc2NyaWJlIHRoZSB1c2VyIGtleVxuICAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDUkFTSF9aRVJPSVpFJiMzNDssCiAgICAmIzM0O0NSQVNIX0RVTVAmIzM0OywKICAgICYjMzQ7U0VDUkVUTUVNJiMzNDssCiAgICAmIzM0O0tFWVMmIzM0OywKICAgICYjMzQ7QklHX0tFWVMmIzM0OywKICAgICYjMzQ7RU5DUllQVEVEX0tFWVMmIzM0OywKICAgICYjMzQ7VFJVU1RFRF9LRVlTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3Jhc2hfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDtzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDtrZXlfY3Jhc2hfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDtiaWdfa2V5X3plcm9pemUmIzM0OywKICAgICYjMzQ7ZW5jcnlwdGVkX3plcm9pemUmIzM0OywKICAgICYjMzQ7dHJ1c3RlZF96ZXJvaXplJiMzNDssCiAgICAmIzM0O3VzZXJfemVyb2l6ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZlYXR1cmUgdG8gemVyb2l6ZSBzZW5zaXRpdmUgc2VjcmV0cyAoa2V5cyBhbmQgc2VjcmV0bWVtKSBkdXJpbmcgYSBrZXJuZWwgcGFuaWMvY3Jhc2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgZXhlY3V0ZXMgd2hlbiBhIGNyYXNoIGtlcm5lbCBpcyBsb2FkZWQgYW5kIGEgcGFuaWMgb2NjdXJzLiBGdXp6aW5nIGNhbiBoZWxwIGVuc3VyZSB0aGVzZSB0ZWFyZG93biBwYXRocyBkbyBub3QgaW50cm9kdWNlIHNlY29uZGFyeSBmYXVsdHMgb3IgZGVhZGxvY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWI0NDdmMWQ3Y2ExNjA2MTU0MTY1ZmNkMGVhNDNkMWRjYmFhMGUzOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMDQ6MDA6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL2tleGVjLmMgYi9kcml2ZXJzL29mL2tleGVjLmMKaW5kZXggMDI5OTAzYjk4NmNiZC4uMzY2MzVmNmNiOTAwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9vZi9rZXhlYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvb2Yva2V4ZWMuYwpAQCAtMjQsNyAmIzQzOzI0LDcgQEAKIAogLyoKICAqIEFkZGl0aW9uYWwgc3BhY2UgbmVlZGVkIGZvciB0aGUgRkRUIGJ1ZmZlciBzbyB0aGF0IHdlIGNhbiBhZGQgaW5pdHJkLAotICogYm9vdGFyZ3MsIGthc2xyLXNlZWQsIHJuZy1zZWVkLCB1c2VhYmxlLW1lbW9yeS1yYW5nZSBhbmQgZWxmY29yZWhkci4KJiM0MzsgKiBib290YXJncywga2FzbHItc2VlZCwgcm5nLXNlZWQsIHVzYWJsZS1tZW1vcnktcmFuZ2UgYW5kIGVsZmNvcmVoZHIuCiAgKi8KICNkZWZpbmUgRkRUX0VYVFJBX1NQQUNFIDB4MTAwMAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaCBiL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oCmluZGV4IGJjMDg3MTI0Y2Q3OGUuLjVjNzIwN2MwYmJhMTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oCkBAIC01LDYgJiM0Mzs1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9saW5rYWdlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZWxmY29yZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2VsZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ub3RpZmllci5oJmd0OwogCiBzdHJ1Y3Qga2ltYWdlOwogCkBAIC0zNCw2ICYjNDM7MzUsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfa2V4ZWNfcHJvdGVjdF9jcmFzaGtyZXModm9pZCkgeyB9CiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9rZXhlY191bnByb3RlY3RfY3Jhc2hrcmVzKHZvaWQpIHsgfQogI2VuZGlmCiAKJiM0MzsjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkUKJiM0MztleHRlcm4gc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdDsKJiM0MzsjZW5kaWYKJiM0MzsKICNpZm5kZWYgYXJjaF9jcmFzaF9oYW5kbGVfaG90cGx1Z19ldmVudAogc3RhdGljIGlubGluZSB2b2lkIGFyY2hfY3Jhc2hfaGFuZGxlX2hvdHBsdWdfZXZlbnQoc3RydWN0IGtpbWFnZSAqaW1hZ2UsIHZvaWQgKmFyZykgeyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaCBiL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaAppbmRleCBiYjk3YmQzZTVhZjRmLi5mZjA5NDRjZTM2OGY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9rZXktdHlwZS5oCkBAIC0xMjIsNiAmIzQzOzEyMiwxNSBAQCBzdHJ1Y3Qga2V5X3R5cGUgewogCS8qIGNsZWFyIHRoZSBkYXRhIGZyb20gYSBrZXkgKG9wdGlvbmFsKSAqLwogCXZvaWQgKCpkZXN0cm95KShzdHJ1Y3Qga2V5ICprZXkpOwogCiYjNDM7CS8qIHNjcnViIHRoZSBrZXkgbWF0ZXJpYWwgd2l0aG91dCBmcmVlJiMzOTtpbmcgKG9wdGlvbmFsKQomIzQzOwkgKiAtIHVzZWQgZnJvbSBDT05GSUdfQ1JBU0hfWkVST0laRSBkdXJpbmcgcGFuaWMgdG8ga2VlcCBrZXlzIG91dCBvZgomIzQzOwkgKiAgIGNyYXNoIGR1bXBzCiYjNDM7CSAqIC0gY2FsbGVkIGZyb20gdGhlIHBhbmljIHBhdGggd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kIHByZWVtcHRpb24KJiM0MzsJICogICBkaXNhYmxlZAomIzQzOwkgKiAtIG11c3Qgbm90IHNsZWVwLCBhbGxvY2F0ZSwgZnJlZSBvciB0YWtlIGxvY2tzCiYjNDM7CSAqLwomIzQzOwl2b2lkICgqemVyb2l6ZSkoc3RydWN0IGtleSAqa2V5KTsKJiM0MzsKIAkvKiBkZXNjcmliZSBhIGtleSAqLwogCXZvaWQgKCpkZXNjcmliZSkoY29uc3Qgc3RydWN0IGtleSAqa2V5LCBzdHJ1Y3Qgc2VxX2ZpbGUgKnApOwogCmRpZmYgLS1naXQgYS9rZXJuZWwvS2NvbmZpZy5rZXhlYyBiL2tlcm5lbC9LY29uZmlnLmtleGVjCmluZGV4IDE1NjMyMzU4YmNmNzEuLjkyYWIwYTY5YzhlYzYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9LY29uZmlnLmtleGVjCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9LY29uZmlnLmtleGVjCkBAIC0xNzksNCAmIzQzOzE3OSwxMiBAQCBjb25maWcgQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVMKIAkgIHRoZSBjb21wdXRhdGlvbiBiZWhpbmQgdGhlIHZhbHVlIHByb3ZpZGVkIHRocm91Z2ggdGhlCiAJICAvc3lzL2tlcm5lbC9jcmFzaF9lbGZjb3JlaGRyX3NpemUgYXR0cmlidXRlLgogCiYjNDM7Y29uZmlnIENSQVNIX1pFUk9JWkUKJiM0MzsJYm9vbCAmIzM0O1plcm9pemUgc2VjcmV0cyBvbiBwYW5pYyYjMzQ7CiYjNDM7CWRlcGVuZHMgb24gQ1JBU0hfRFVNUAomIzQzOwloZWxwCiYjNDM7CSAgV2lwZSBzZWNyZXRzIChlLmcuIGtlcm5lbCBrZXlyaW5nIGFuZCBtZW1mZF9zZWNyZXQgcGFnZXMpIG9uIGNyYXNoIG9yIHBhbmljLgomIzQzOwomIzQzOwkgIElmIHVuc3VyZSwgc2F5IE4uCiYjNDM7CiBlbmRtZW51CmRpZmYgLS1naXQgYS9rZXJuZWwvY3Jhc2hfY29yZS5jIGIva2VybmVsL2NyYXNoX2NvcmUuYwppbmRleCAyYjM2YWE5ZmFkZTA2Li5kM2E3NzYzZTI3NTk5IDEwMDY0NAotLS0gYS9rZXJuZWwvY3Jhc2hfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9jcmFzaF9jb3JlLmMKQEAgLTIzLDYgJiM0MzsyMyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvb2JqdG9vbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGFuaWMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdGltZWtlZXBpbmcuaCZndDsKIAogI2luY2x1ZGUgJmx0O2FzbS9wYWdlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL3NlY3Rpb25zLmgmZ3Q7CkBAIC0zMyw2ICYjNDM7MzQsMjIgQEAKIC8qIFBlciBjcHUgbWVtb3J5IGZvciBzdG9yaW5nIGNwdSBzdGF0ZXMgaW4gY2FzZSBvZiBzeXN0ZW0gY3Jhc2guICovCiBub3RlX2J1Zl90IF9fcGVyY3B1ICpjcmFzaF9ub3RlczsKIAomIzQzOyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRQomIzQzO0FUT01JQ19OT1RJRklFUl9IRUFEKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoY3Jhc2hfemVyb2l6ZV9ub3RpZmllcl9saXN0KTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpCiYjNDM7ewomIzQzOwlrdGltZV90IHplcm9pemVfc3RhcnQgPSBrdGltZV9nZXQoKTsKJiM0MzsKJiM0MzsJcHJfaW5mbygmIzM0O1dpcGluZyBzZW5zaXRpdmUgc2VjcmV0cy4uLlxuJiMzNDspOwomIzQzOwlhdG9taWNfbm90aWZpZXJfY2FsbF9jaGFpbigmYW1wO2NyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCwgMCwgTlVMTCk7CiYjNDM7CXByX2luZm8oJiMzNDtEb25lIGluICVsbGQgdXNcbiYjMzQ7LCBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgemVyb2l6ZV9zdGFydCkpOwomIzQzO30KJiM0MzsjZWxzZQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpIHsgfQomIzQzOyNlbmRpZiAvKiBDT05GSUdfQ1JBU0hfWkVST0laRSAqLwomIzQzOwogLyogdGltZSB0byB3YWl0IGZvciBwb3NzaWJsZSBETUEgdG8gZmluaXNoIGJlZm9yZSBzdGFydGluZyB0aGUga2R1bXAga2VybmVsCiAgKiB3aGVuIGEgQ01BIHJlc2VydmF0aW9uIGlzIHVzZWQKICAqLwpAQCAtMTQyLDYgJiM0MzsxNTksNyBAQCB2b2lkIF9fbm9jbG9uZSBfX2NyYXNoX2tleGVjKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCQkJY3Jhc2hfc2F2ZV92bWNvcmVpbmZvKCk7CiAJCQltYWNoaW5lX2NyYXNoX3NodXRkb3duKCZhbXA7Zml4ZWRfcmVncyk7CiAJCQljcmFzaF9jbWFfY2xlYXJfcGVuZGluZ19kbWEoKTsKJiM0MzsJCQljcmFzaF96ZXJvaXplKCk7CiAJCQltYWNoaW5lX2tleGVjKGtleGVjX2NyYXNoX2ltYWdlKTsKIAkJfQogCQlrZXhlY191bmxvY2soKTsKZGlmZiAtLWdpdCBhL21tL3NlY3JldG1lbS5jIGIvbW0vc2VjcmV0bWVtLmMKaW5kZXggZDI5ODY1MDc1YjZlYS4uNTNmNjI5ZDY2MzNjMSAxMDA2NDQKLS0tIGEvbW0vc2VjcmV0bWVtLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vc2VjcmV0bWVtLmMKQEAgLTEzLDkgJiM0MzsxMywxMSBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2JpdG9wcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3ByaW50ay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BhZ2VtYXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbm90aWZpZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zeXNjYWxscy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BzZXVkb19mcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NlY3JldG1lbS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jcmFzaF9jb3JlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2V0X21lbW9yeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NjaGVkL3NpZ25hbC5oJmd0OwogCkBAIC0xODcsNiAmIzQzOzE4OSw1MCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgc2VjcmV0bWVtX2lvcHMgPSB7CiAKIHN0YXRpYyBzdHJ1Y3QgdmZzbW91bnQgKnNlY3JldG1lbV9tbnQ7CiAKJiM0MzsjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkUKJiM0MzsvKiBDYWxsZWQgZmFyIGludG8gdnBhbmljIGZyb20gY3Jhc2hfY29yZS5jIHdpdGggb3RoZXIgQ1BVcyBzdG9wcGVkIGFuZAomIzQzOyAqIHByZWVtcHRpb24gZGlzYWJsZWQKJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IHNlY3JldG1lbV9jcmFzaF96ZXJvaXplKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcKJiM0MzsJCWFjdGlvbiwgdm9pZCAqZGF0YSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBzdXBlcl9ibG9jayAqc2I7CiYjNDM7CXN0cnVjdCBpbm9kZSAqaW5vZGU7CiYjNDM7CiYjNDM7CWlmICghc2VjcmV0bWVtX21udCkKJiM0MzsJCXJldHVybiBOT1RJRllfRE9ORTsKJiM0MzsJc2IgPSBzZWNyZXRtZW1fbW50LSZndDttbnRfc2I7CiYjNDM7CiYjNDM7CS8qIElmIHRoZSBsaXN0IHdhcyBtb2RpZmllZCBpbiB0aGUgZXhhY3QgbW9tZW50IHdlIHBhbmljJiMzOTtlZCwgaXQgbWlnaHQgYmUKJiM0MzsJICogaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIHRoYXQgd291bGQgYmUgdW5zYWZlIHRvIGl0ZXJhdGUuIElmIHdlIGNhbiYjMzk7dAomIzQzOwkgKiBnZXQgdGhlIGxvY2ssIHRvbyBiYWQsIHRoYXQmIzM5O3MgYWxsIHdlIGNhbiBkbyBoZXJlLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFzcGluX3RyeWxvY2soJmFtcDtzYi0mZ3Q7c19pbm9kZV9saXN0X2xvY2spKSB7CiYjNDM7CQlwcl9jcml0KCYjMzQ7Y3Jhc2hfemVyb2l6ZTogY2FuJiMzOTt0IGFjcXVpcmUgc2VjcmV0bWVtIHN1cGVyYmxvY2sgbG9jay5cbiYjMzQ7CiYjNDM7CQkJICYjMzQ7Y3Jhc2hfemVyb2l6ZTogc2tpcHBpbmcgemVyb2l6aW5nIHNlY3JldG1lbS5cbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBOT1RJRllfRE9ORTsKJiM0MzsJfQomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGlub2RlLCAmYW1wO3NiLSZndDtzX2lub2RlcywgaV9zYl9saXN0KSB7CiYjNDM7CQlYQV9TVEFURSh4YXMsICZhbXA7aW5vZGUtJmd0O2lfbWFwcGluZy0mZ3Q7aV9wYWdlcywgMCk7CiYjNDM7CQlzdHJ1Y3QgZm9saW8gKmZvbGlvOwomIzQzOwomIzQzOwkJLyogbm8gbmVlZCBmb3IgbG9ja3MgaWYgd2UmIzM5O3JlIGJ1cm5pbmcgZG93biB0aGUgaG91c2UgOikgKi8KJiM0MzsJCXhhc19mb3JfZWFjaCgmYW1wO3hhcywgZm9saW8sIFVMT05HX01BWCkgewomIzQzOwkJCWlmICh4YXNfcmV0cnkoJmFtcDt4YXMsIGZvbGlvKSB8fCB4YV9pc192YWx1ZShmb2xpbykpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwkJCWlub2RlLSZndDtpX21hcHBpbmctJmd0O2Ffb3BzLSZndDtmcmVlX2ZvbGlvKGZvbGlvKTsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwkvKiBvZmYgdG8ga2V4ZWMoKSEgKi8KJiM0MzsJcmV0dXJuIE5PVElGWV9ET05FOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHNlY3JldG1lbV96ZXJvaXplX25iID0gewomIzQzOwkubm90aWZpZXJfY2FsbCA9IHNlY3JldG1lbV9jcmFzaF96ZXJvaXplCiYjNDM7fTsKJiM0MzsjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi8KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgZmlsZSAqc2VjcmV0bWVtX2ZpbGVfY3JlYXRlKHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiB7CiAJc3RydWN0IGZpbGUgKmZpbGU7CkBAIC0yNjMsNiAmIzQzOzMwOSwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBzZWNyZXRtZW1faW5pdCh2b2lkKQogCWlmIChJU19FUlIoc2VjcmV0bWVtX21udCkpCiAJCXJldHVybiBQVFJfRVJSKHNlY3JldG1lbV9tbnQpOwogCiYjNDM7I2lmZGVmIENPTkZJR19DUkFTSF9aRVJPSVpFCiYjNDM7CWF0b21pY19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcigmYW1wO2NyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCwgJmFtcDtzZWNyZXRtZW1femVyb2l6ZV9uYik7CiYjNDM7I2VuZGlmCiYjNDM7CiAJcmV0dXJuIDA7CiB9CiBmc19pbml0Y2FsbChzZWNyZXRtZW1faW5pdCk7CmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2JpZ19rZXkuYyBiL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jCmluZGV4IDI2OGY3MDJkZjM4MGUuLmFkODUzN2RkYTcwZmEgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jCkBAIC0zNSw2ICYjNDM7MzUsOCBAQCBzdHJ1Y3QgYmlnX2tleV9wYXlsb2FkIHsKICAqLwogI2RlZmluZSBCSUdfS0VZX0ZJTEVfVEhSRVNIT0xEIChzaXplb2Yoc3RydWN0IGlub2RlKSAmIzQzOyBzaXplb2Yoc3RydWN0IGRlbnRyeSkpCiAKJiM0MztzdGF0aWMgdm9pZCBiaWdfa2V5X3plcm9pemUoc3RydWN0IGtleSAqa2V5KTsKJiM0MzsKIC8qCiAgKiBiaWdfa2V5IGRlZmluZWQga2V5cyB0YWtlIGFuIGFyYml0cmFyeSBzdHJpbmcgYXMgdGhlIGRlc2NyaXB0aW9uIGFuZCBhbgogICogYXJiaXRyYXJ5IGJsb2Igb2YgZGF0YSBhcyB0aGUgcGF5bG9hZApAQCAtNDYsNiAmIzQzOzQ4LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX2JpZ19rZXkgPSB7CiAJLmluc3RhbnRpYXRlCQk9IGdlbmVyaWNfa2V5X2luc3RhbnRpYXRlLAogCS5yZXZva2UJCQk9IGJpZ19rZXlfcmV2b2tlLAogCS5kZXN0cm95CQk9IGJpZ19rZXlfZGVzdHJveSwKJiM0MzsJLnplcm9pemUJCT0gYmlnX2tleV96ZXJvaXplLAogCS5kZXNjcmliZQkJPSBiaWdfa2V5X2Rlc2NyaWJlLAogCS5yZWFkCQkJPSBiaWdfa2V5X3JlYWQsCiAJLnVwZGF0ZQkJCT0gYmlnX2tleV91cGRhdGUsCkBAIC0yNzksNiAmIzQzOzI4MiwxOCBAQCBsb25nIGJpZ19rZXlfcmVhZChjb25zdCBzdHJ1Y3Qga2V5ICprZXksIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmxlbikKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHZvaWQgYmlnX2tleV96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBiaWdfa2V5X3BheWxvYWQgKnBheWxvYWQgPSB0b19iaWdfa2V5X3BheWxvYWQoa2V5LSZndDtwYXlsb2FkKTsKJiM0MzsKJiM0MzsJaWYgKHBheWxvYWQtJmd0O2RhdGEpIHsKJiM0MzsJCWlmIChwYXlsb2FkLSZndDtsZW5ndGggJmd0OyBCSUdfS0VZX0ZJTEVfVEhSRVNIT0xEKQomIzQzOwkJCW1lbXplcm9fZXhwbGljaXQocGF5bG9hZC0mZ3Q7ZGF0YSwgQ0hBQ0hBMjBQT0xZMTMwNV9LRVlfU0laRSk7CiYjNDM7CQllbHNlCiYjNDM7CQkJbWVtemVyb19leHBsaWNpdChwYXlsb2FkLSZndDtkYXRhLCBwYXlsb2FkLSZndDtsZW5ndGgpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyoKICAqIFJlZ2lzdGVyIGtleSB0eXBlCiAgKi8KZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmMgYi9zZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzL2VuY3J5cHRlZC5jCmluZGV4IDU5Y2I3N2IyMzdiMzYuLjlmNTZmYTliNGFhZjQgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuYwpAQCAtOTcwLDExICYjNDM7OTcwLDIzIEBAIHN0YXRpYyB2b2lkIGVuY3J5cHRlZF9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSkKIAlrZnJlZV9zZW5zaXRpdmUoa2V5LSZndDtwYXlsb2FkLmRhdGFbMF0pOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZW5jcnlwdGVkX3plcm9pemUoc3RydWN0IGtleSAqa2V5KQomIzQzO3sKJiM0MzsJc3RydWN0IGVuY3J5cHRlZF9rZXlfcGF5bG9hZCAqZXBheWxvYWQgPSBrZXktJmd0O3BheWxvYWQuZGF0YVswXTsKJiM0MzsKJiM0MzsJaWYgKCFlcGF5bG9hZCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJbWVtemVyb19leHBsaWNpdChlcGF5bG9hZC0mZ3Q7cGF5bG9hZF9kYXRhLAomIzQzOwkJCSBlcGF5bG9hZC0mZ3Q7cGF5bG9hZF9kYXRhbGVuICYjNDM7IGVwYXlsb2FkLSZndDtkYXRhYmxvYl9sZW4pOwomIzQzO30KJiM0MzsKIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9lbmNyeXB0ZWQgPSB7CiAJLm5hbWUgPSAmIzM0O2VuY3J5cHRlZCYjMzQ7LAogCS5pbnN0YW50aWF0ZSA9IGVuY3J5cHRlZF9pbnN0YW50aWF0ZSwKIAkudXBkYXRlID0gZW5jcnlwdGVkX3VwZGF0ZSwKIAkuZGVzdHJveSA9IGVuY3J5cHRlZF9kZXN0cm95LAomIzQzOwkuemVyb2l6ZSA9IGVuY3J5cHRlZF96ZXJvaXplLAogCS5kZXNjcmliZSA9IHVzZXJfZGVzY3JpYmUsCiAJLnJlYWQgPSBlbmNyeXB0ZWRfcmVhZCwKIH07CmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2tleS5jIGIvc2VjdXJpdHkva2V5cy9rZXkuYwppbmRleCBiMzRhNjRkODFkNDdhLi41NjczZGNjOGM1ZDIzIDEwMDY0NAotLS0gYS9zZWN1cml0eS9rZXlzL2tleS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMva2V5LmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NlY3VyaXR5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvd29ya3F1ZXVlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NyYXNoX2NvcmUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yYW5kb20uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICYjMzQ7aW50ZXJuYWwuaCYjMzQ7CkBAIC0xMjY4LDYgJiM0MzsxMjY5LDQ0IEBAIHZvaWQgdW5yZWdpc3Rlcl9rZXlfdHlwZShzdHJ1Y3Qga2V5X3R5cGUgKmt0eXBlKQogfQogRVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX2tleV90eXBlKTsKIAomIzQzOyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRQomIzQzOy8qIENhbGxlZCBmYXIgaW50byB2cGFuaWMgZnJvbSBjcmFzaF9jb3JlLmMgd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kCiYjNDM7ICogcHJlZW1wdGlvbiBkaXNhYmxlZAomIzQzOyAqLwomIzQzO3N0YXRpYyBpbnQga2V5X2NyYXNoX3plcm9pemUoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyBhY3Rpb24sCiYjNDM7CQl2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJc3RydWN0IHJiX25vZGUgKm5vZGU7CiYjNDM7CiYjNDM7CS8qIElmIHdlIGNhbiYjMzk7dCBhY3F1aXJlIHRoZSBsb2NrLCB0aGUgcmJ0cmVlIG1pZ2h0IGJlIGluIGFuIGluY29uc2lzdGVudAomIzQzOwkgKiBzdGF0ZS4gVGhhdCYjMzk7cyBhbGwgd2UgY2FuIGRvIHRoZW4sIGFzIHRoZXJlJiMzOTtzIG5vIHBvaW50IHRvIHdhaXRpbmcKJiM0MzsJICogYXQgdGhpcyBzdGFnZS4KJiM0MzsJICovCiYjNDM7CWlmICghc3Bpbl90cnlsb2NrKCZhbXA7a2V5X3NlcmlhbF9sb2NrKSkgewomIzQzOwkJcHJfY3JpdCgmIzM0O2NyYXNoX3plcm9pemU6IGNhbiYjMzk7dCBhY3F1aXJlIGtleV9zZXJpYWxfbG9jay4gc2tpcHBpbmcga2V5cmluZ3MuXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gTk9USUZZX0RPTkU7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChub2RlID0gcmJfZmlyc3QoJmFtcDtrZXlfc2VyaWFsX3RyZWUpOyBub2RlOyBub2RlID0gcmJfbmV4dChub2RlKSkgewomIzQzOwkJc3RydWN0IGtleSAqa2V5ID0gcmJfZW50cnkobm9kZSwgc3RydWN0IGtleSwgc2VyaWFsX25vZGUpOwomIzQzOwomIzQzOwkJaWYgKGtleS0mZ3Q7dHlwZSA9PSAmYW1wO2tleV90eXBlX2tleXJpbmcgfHwKJiM0MzsJCSAgICBrZXktJmd0O3N0YXRlID09IEtFWV9JU19VTklOU1RBTlRJQVRFRCkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCS8qIGN1c3RvbSB6ZXJvaXplIHNpbmNlIGZyZWUmIzM5O2luZyBpc24mIzM5O3Qgc2FmZSBhdCB0aGlzIHBvaW50ICovCiYjNDM7CQlpZiAoa2V5LSZndDt0eXBlLSZndDt6ZXJvaXplKQomIzQzOwkJCWtleS0mZ3Q7dHlwZS0mZ3Q7emVyb2l6ZShrZXkpOwomIzQzOwl9CiYjNDM7CS8qIG9mZiB0byBrZXhlYygpISAqLwomIzQzOwlyZXR1cm4gTk9USUZZX0RPTkU7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sga2V5X2NyYXNoX3plcm9pemVfbmIgPSB7CiYjNDM7CS5ub3RpZmllcl9jYWxsID0ga2V5X2NyYXNoX3plcm9pemUKJiM0Mzt9OwomIzQzOyNlbmRpZiAvKiBDT05GSUdfQ1JBU0hfWkVST0laRSAqLwomIzQzOwogLyoKICAqIEluaXRpYWxpc2UgdGhlIGtleSBtYW5hZ2VtZW50IHN0YXRlLgogICovCkBAIC0xMjkwLDQgJiM0MzsxMzI5LDkgQEAgdm9pZCBfX2luaXQga2V5X2luaXQodm9pZCkKIAogCXJiX2luc2VydF9jb2xvcigmYW1wO3Jvb3Rfa2V5X3VzZXIubm9kZSwKIAkJCSZhbXA7a2V5X3VzZXJfdHJlZSk7CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19DUkFTSF9aRVJPSVpFCiYjNDM7CWF0b21pY19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcigmYW1wO2NyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCwKJiM0MzsJCQkmYW1wO2tleV9jcmFzaF96ZXJvaXplX25iKTsKJiM0MzsjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jIGIvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmMKaW5kZXggMDUwOWQ5OTU1ZjJhNi4uZjE1OWZhZWFmZTIzYSAxMDA2NDQKLS0tIGEvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmMKQEAgLTMyNSwxMSAmIzQzOzMyNSwyNSBAQCBzdGF0aWMgdm9pZCB0cnVzdGVkX2Rlc3Ryb3koc3RydWN0IGtleSAqa2V5KQogCWtmcmVlX3NlbnNpdGl2ZShrZXktJmd0O3BheWxvYWQuZGF0YVswXSk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB0cnVzdGVkX3plcm9pemUoc3RydWN0IGtleSAqa2V5KQomIzQzO3sKJiM0MzsJc3RydWN0IHRydXN0ZWRfa2V5X3BheWxvYWQgKnAgPSBrZXktJmd0O3BheWxvYWQuZGF0YVswXTsKJiM0MzsKJiM0MzsJaWYgKCFwKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltZW16ZXJvX2V4cGxpY2l0KHAtJmd0O2tleSwgc2l6ZW9mKHAtJmd0O2tleSkpOwomIzQzOwltZW16ZXJvX2V4cGxpY2l0KHAtJmd0O2Jsb2IsIHNpemVvZihwLSZndDtibG9iKSk7CiYjNDM7CXAtJmd0O2tleV9sZW4gPSAwOwomIzQzOwlwLSZndDtibG9iX2xlbiA9IDA7CiYjNDM7fQomIzQzOwogc3RydWN0IGtleV90eXBlIGtleV90eXBlX3RydXN0ZWQgPSB7CiAJLm5hbWUgPSAmIzM0O3RydXN0ZWQmIzM0OywKIAkuaW5zdGFudGlhdGUgPSB0cnVzdGVkX2luc3RhbnRpYXRlLAogCS51cGRhdGUgPSB0cnVzdGVkX3VwZGF0ZSwKIAkuZGVzdHJveSA9IHRydXN0ZWRfZGVzdHJveSwKJiM0MzsJLnplcm9pemUgPSB0cnVzdGVkX3plcm9pemUsCiAJLmRlc2NyaWJlID0gdXNlcl9kZXNjcmliZSwKIAkucmVhZCA9IHRydXN0ZWRfcmVhZCwKIH07CmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3VzZXJfZGVmaW5lZC5jIGIvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuYwppbmRleCA2Zjg4YjUwN2Y5Mjc5Li5hZGU5NWRjMjQ4MWRmIDEwMDY0NAotLS0gYS9zZWN1cml0eS9rZXlzL3VzZXJfZGVmaW5lZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmMKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAjaW5jbHVkZSAmIzM0O2ludGVybmFsLmgmIzM0OwogCiBzdGF0aWMgaW50IGxvZ29uX3ZldF9kZXNjcmlwdGlvbihjb25zdCBjaGFyICpkZXNjKTsKJiM0MztzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KTsKIAogLyoKICAqIHVzZXIgZGVmaW5lZCBrZXlzIHRha2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgZGVzY3JpcHRpb24gYW5kIGFuCkBAIC0yOCw2ICYjNDM7MjksNyBAQCBzdHJ1Y3Qga2V5X3R5cGUga2V5X3R5cGVfdXNlciA9IHsKIAkudXBkYXRlCQkJPSB1c2VyX3VwZGF0ZSwKIAkucmV2b2tlCQkJPSB1c2VyX3Jldm9rZSwKIAkuZGVzdHJveQkJPSB1c2VyX2Rlc3Ryb3ksCiYjNDM7CS56ZXJvaXplCQk9IHVzZXJfemVyb2l6ZSwKIAkuZGVzY3JpYmUJCT0gdXNlcl9kZXNjcmliZSwKIAkucmVhZAkJCT0gdXNlcl9yZWFkLAogfTsKQEAgLTQ4LDYgJiM0Mzs1MCw3IEBAIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9sb2dvbiA9IHsKIAkudXBkYXRlCQkJPSB1c2VyX3VwZGF0ZSwKIAkucmV2b2tlCQkJPSB1c2VyX3Jldm9rZSwKIAkuZGVzdHJveQkJPSB1c2VyX2Rlc3Ryb3ksCiYjNDM7CS56ZXJvaXplCQk9IHVzZXJfemVyb2l6ZSwKIAkuZGVzY3JpYmUJCT0gdXNlcl9kZXNjcmliZSwKIAkudmV0X2Rlc2NyaXB0aW9uCT0gbG9nb25fdmV0X2Rlc2NyaXB0aW9uLAogfTsKQEAgLTE1Miw2ICYjNDM7MTU1LDE0IEBAIHZvaWQgdXNlcl9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSkKIAogRVhQT1JUX1NZTUJPTF9HUEwodXNlcl9kZXN0cm95KTsKIAomIzQzO3N0YXRpYyB2b2lkIHVzZXJfemVyb2l6ZShzdHJ1Y3Qga2V5ICprZXkpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdXNlcl9rZXlfcGF5bG9hZCAqdXBheWxvYWQgPSBrZXktJmd0O3BheWxvYWQuZGF0YVswXTsKJiM0MzsKJiM0MzsJaWYgKHVwYXlsb2FkKQomIzQzOwkJbWVtemVyb19leHBsaWNpdCh1cGF5bG9hZC0mZ3Q7ZGF0YSwgdXBheWxvYWQtJmd0O2RhdGFsZW4pOwomIzQzO30KJiM0MzsKIC8qCiAgKiBkZXNjcmliZSB0aGUgdXNlciBrZXkKICAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTc0CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzI1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgJiMzOTtDT05GSUdfQ1JBU0hfWkVST0laRSYjMzk7IEZlYXR1cmUgZm9yIEZ1enppbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBhIG5ldyBmZWF0dXJlLCBgQ09ORklHX0NSQVNIX1pFUk9JWkVgLCBkZXNpZ25lZCB0byB6ZXJvIG91dCBzZW5zaXRpdmUgZGF0YSAoc2VjcmV0cywga2V5cywgZXRjLikgZHVyaW5nIGEgcGFuaWMgb3Iga2VybmVsIGNyYXNoLiBUaGUgY29yZSBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkgbGllcyB3aXRoaW4gYGtlcm5lbC9jcmFzaF9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2NyYXNoX2tleGVjYCBmdW5jdGlvbiwgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gYGtleGVjX2NyYXNoX2ltYWdlYCBpcyBub24tTlVMTC4gVGhpcyBpbmRpY2F0ZXMgdGhlIHByZXNlbmNlIG9mIGEgY3Jhc2gga2VybmVsIGxvYWRlZCB1c2luZyBga2V4ZWNfbG9hZGAgb3IgYGtleGVjX2ZpbGVfbG9hZGAgd2l0aCBgS0VYRUNfT05fQ1JBU0hgLiBUaGlzIGZ1bmN0aW9uIGNhbGxzIGBjcmFzaF96ZXJvaXplKClgLCB3aGljaCBpdGVyYXRlcyBvdmVyIGEgbGlzdCBvZiBub3RpZmllcnMgcmVnaXN0ZXJlZCBieSBzdWJzeXN0ZW1zIGxpa2UgYHNlY3JldG1lbWAgYW5kIGBrZXlzYCwgdWx0aW1hdGVseSB6ZXJvaW5nIG91dCBzcGVjaWZpYyBtZW1vcnkgcmVnaW9ucy4KClRoZSBrZXkgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIGVmZmVjdGl2ZWx5IGZ1enplZCBieSBzeXprYWxsZXI/IFN5emthbGxlciYjMzk7cyB1c3VhbCB3b3JrZmxvdyBhdm9pZHMgcGFuaWNzIGJlY2F1c2UgdGhleSYjMzk7cmUgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgYnVncywgYW5kIHRoZSBmdXp6ZXIgbG9zZXMgY29udHJvbCBvbmNlIGEgcGFuaWMgb2NjdXJzIChyZWJvb3RzIHRoZSBWTSwgbG9zaW5nIHRoZSBzZXNzaW9uKS4gVGhlIGFpbSBpcyB0byBmaW5kIG5vcm1hbCBrZXJuZWwgYnVncy4gSWYgYSBwYW5pYyAqZG9lcyogaGFwcGVuLCB0aGUgZnV6emVyIGxvZ3MgdGhlIGNyYXNoIGFuZCByZXN0YXJ0cywgZWZmZWN0aXZlbHkgbm90IGZ1enppbmcgdGhlIHBhbmljIGhhbmRsZXIgaXRzZWxmLgoKVGhlIGBjcmFzaF96ZXJvaXplYCBjb2RlIHBhdGggaXMgcmVhY2hhYmxlICpvbmx5KiBpZiBhIGNyYXNoIGtlcm5lbCBpcyBsb2FkZWQgKmFuZCogYSBwYW5pYyBpcyB0cmlnZ2VyZWQuIFdoaWxlIHN5emthbGxlciAqY291bGQqIHBvdGVudGlhbGx5IHVzZSBga2V4ZWNfbG9hZGAgdG8gbG9hZCBhIGNyYXNoIGtlcm5lbCBhbmQgdGhlbiB0cmlnZ2VyIGEgcGFuaWMgdmlhIFN5c1JxLWMgb3IgYSBjcmFmdGVkIHN5c3RlbSBjYWxsIChvciBieSB0cmlnZ2VyaW5nIGEgYnVnIHdpdGggY3Jhc2gpLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgdXN1YWxseSBkbyB0aGlzLiBJdCYjMzk7cyBub3QgdGhlIHByaW1hcnkgZm9jdXMuIEZ1enppbmcgcGFuaWMgaGFuZGxlcnMgaXMgbmljaGUgYmVjYXVzZSB0aGUgZnV6emVyIGxvc2VzIGNvbnRyb2wgYWZ0ZXIgdGhlIHBhbmljOyB0aGlzIG1ha2VzIGVmZmVjdGl2ZSBjb3ZlcmFnZS1ndWlkZWQgZnV6emluZyBkaWZmaWN1bHQuCgpUaGUgbm90aWZpZXJzIHdpdGhpbiB0aGlzIHBhdGNoIGFyZSBgc2VjcmV0bWVtX2NyYXNoX3plcm9pemVgIGFuZCB2YXJpb3VzIGBrZXlfY3Jhc2hfemVyb2l6ZWAgZnVuY3Rpb25zLiBUaGV5JiMzOTtyZSBleGVjdXRlZCBpbiB0aGUgcGFuaWMgY29udGV4dC4gVG8gZnV6eiB0aGVtLCB3ZSYjMzk7ZCBuZWVkIHRvIGxvYWQgYSBjcmFzaCBrZXJuZWwsIHRyaWdnZXIgYSBwYW5pYywgYW5kIGVuc3VyZSBzZWNyZXRzIG9yIGtleSBtYXRlcmlhbCBhcmUgYWxsb2NhdGVkLiBUaGUgcHJvbXB0IGFsc28gc3RhdGVzIHRvIGV4Y2x1ZGUgY2VydGFpbiBzY2VuYXJpb3MgbGlrZSBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBldGMuLCB0aGF0IG9ubHkgZXhlY3V0ZSBkdXJpbmcgZHJpdmVyIHVuYmluZGluZy4gVGhpcyBjYXNlIGlzIHNpbWlsYXIsIGJlY2F1c2UgaXQmIzM5O3Mgb25seSBleGVjdXRlZCBvbiBjcmFzaC4KClRoZSBwcm9tcHQsIGhvd2V2ZXIsIGZvY3VzZXMgb24gKnJlYWNoYWJpbGl0eSosIGFuZCB0aGlzIGlzIHJlYWNoYWJsZSwgKmV2ZW4gaWYgaGFyZCB0byBmdXp6Ki4gQ29kZSB0aGF0IGlzIGV4cGxpY2l0bHkgdW5yZWFjaGFibGUsIG9yIHRoYXQgb25seSBleGVjdXRlcyBpbiB1bnZpcnR1YWxpemFibGUgZW52aXJvbm1lbnRzLCBpcyB3aGF0IGlzIHRvIGJlIGV4Y2x1ZGVkLgoKU28sIHdoaWxlIGl0IGlzICpkaWZmaWN1bHQqIHRvIGZ1enogdGhpcyBwYXRoIHVzaW5nIHN5emthbGxlcuKAmXMgY3VycmVudCB3b3JrZmxvdyAoYmVjYXVzZSBpdCByZXF1aXJlcyBkZWxpYmVyYXRlIHBhbmljIHRyaWdnZXJpbmcgYW5kIGEgZGlmZmVyZW50IHNldHVwKSwgaXQmIzM5O3MgKnRlY2huaWNhbGx5KiByZWFjaGFibGUuIFRoZSBmZWF0dXJlIGlzIGZ1bmN0aW9uYWwsIGFuZCB0aGlzIGNvZGUgemVyb2l6ZXMgbWVtb3J5IGZvciBzZWN1cml0eSBwdXJwb3Nlcy4gVGhlcmVmb3JlLCBldmVuIHRob3VnaCB0aGUgcHJpbWFyeSBmdXp6aW5nIGJlbmVmaXQgaXMgbG93ZXIsIGl0IHNob3VsZCBiZSBtYXJrZWQgYXMgcG90ZW50aWFsbHkgZnV6emVkIGJlY2F1c2UgaXQgbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMuIFRodXMsIG15IGNvbmNsdXNpb24gaXMgdGhhdCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIHN5emthbGxlciB0byB0YXJnZXQgdGhpcywgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5OiBgQ09ORklHX0NSQVNIX1pFUk9JWkVgLCBgQ09ORklHX0NSQVNIX0RVTVBgLCBgQ09ORklHX0tFWEVDX0NPUkVgLCBhbmQgcHJvYmFibHkgYENPTkZJR19TRUNSRVRNRU1gLCBgQ09ORklHX0tFWVNgLCBgQ09ORklHX0VOQ1JZUFRFRF9LRVlTYCwgYENPTkZJR19UUlVTVEVEX0tFWVNgIGFuZCBgQ09ORklHX0JJR19LRVlTYC4KClRoZSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBzeW1ib2xzIGZvciBmdXp6aW5nIGFyZTogYGNyYXNoX3plcm9pemVgLCBgc2VjcmV0bWVtX2NyYXNoX3plcm9pemVgLCBga2V5X2NyYXNoX3plcm9pemVgLCBgYmlnX2tleV96ZXJvaXplYCwgYGVuY3J5cHRlZF96ZXJvaXplYCwgYHRydXN0ZWRfemVyb2l6ZWAsIGFuZCBgdXNlcl96ZXJvaXplYC4gSG93ZXZlciwgYGNyYXNoX3plcm9pemVgIGlzIHN0YXRpYyBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBUaGUgb3RoZXJzIGFyZSBmdW5jdGlvbiBwb2ludGVycy4KCldoaWxlIHRoZSBwcmltYXJ5IGdvYWwgb2Ygc3l6a2FsbGVyIGlzIHRvIGZpbmQgYnVncyBpbiAqbm9ybWFsKiBrZXJuZWwgb3BlcmF0aW9uLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBpcyBzZWN1cml0eS1yZWxldmFudC4gSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgIHdpdGggdGhlIGxpc3Qgb2Ygc3ltYm9scyBhbmQgY29uZmlncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0VDUkVUTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTMzOD1jb25maWcgTUVNRkRfQ1JFQVRFXG4tLVxubW0vS2NvbmZpZy0xMzQwLVxubW0vS2NvbmZpZzoxMzQxOmNvbmZpZyBTRUNSRVRNRU1cbm1tL0tjb25maWctMTM0Mi1cdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzc3CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBrZXkgY29uY2VwdHMuCgoqKlZlcmlmeWluZyBLZXkgU2VjdXJpdHkgTWVhc3VyZXMqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgYXNzZXNzbWVudCBvZiBgU0VDUkVUTUVNYCBjaGVja3Mgb3V0IOKAkyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gbWV0aG9kaWNhbGx5IHJldmlldyB0aGUgb3RoZXIga2V5IGFyZWFzIHdlIGRpc2N1c3NlZDogYEJJR19LRVlTYCwgYEVOQ1JZUFRFRF9LRVlTYCwgYW5kIGBUUlVTVEVEX0tFWVNgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBpbXBsZW1lbnRhdGlvbiBhbGlnbnMgd2l0aCBiZXN0IHByYWN0aWNlcyBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gZ2FwcyBpbiB0aGUgb3ZlcmFsbCBzZWN1cml0eSBwb3N0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgZWFjaCB0byBjb25maXJtIHRoZXkgYXJlIGNvbmZpZ3VyZWQgYW5kIG9wZXJhdGluZyBpbiB0aGUgbW9zdCBzZWN1cmUgd2F5IHBvc3NpYmxlLCBhbmQgdGhhdCB0aGV5IGFyZSBhcHByb3ByaWF0ZWx5IGludGVncmF0ZWQgYW5kIG1hbmFnZWQuIFRoZSBnb2FsIGlzIGEgY29tcHJlaGVuc2l2ZSBhbmQgcm9idXN0IHNlY3VyaXR5IG1vZGVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCSUdfS0VZUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzZWN1cml0eS9rZXlzL0tjb25maWc9NDM9Y29uZmlnIFBFUlNJU1RFTlRfS0VZUklOR1Ncbi0tXG5zZWN1cml0eS9rZXlzL0tjb25maWctNTgtXG5zZWN1cml0eS9rZXlzL0tjb25maWc6NTk6Y29uZmlnIEJJR19LRVlTXG5zZWN1cml0eS9rZXlzL0tjb25maWctNjAtXHRib29sIFwmIzM0O0xhcmdlIHBheWxvYWQga2V5c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDUyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRU5DUllQVEVEX0tFWVMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2VjdXJpdHkva2V5cy9LY29uZmlnPTgyPWVuZGlmXG5zZWN1cml0eS9rZXlzL0tjb25maWctODMtXG5zZWN1cml0eS9rZXlzL0tjb25maWc6ODQ6Y29uZmlnIEVOQ1JZUFRFRF9LRVlTXG5zZWN1cml0eS9rZXlzL0tjb25maWctODUtXHR0cmlzdGF0ZSBcJiMzNDtFTkNSWVBURUQgS0VZU1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTQ1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRSVVNURURfS0VZUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzZWN1cml0eS9rZXlzL0tjb25maWc9NTk9Y29uZmlnIEJJR19LRVlTXG4tLVxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTY5LVxuc2VjdXJpdHkva2V5cy9LY29uZmlnOjcwOmNvbmZpZyBUUlVTVEVEX0tFWVNcbnNlY3VyaXR5L2tleXMvS2NvbmZpZy03MS1cdHRyaXN0YXRlIFwmIzM0O1RSVVNURUQgS0VZU1wmIzM0O1xuLS1cbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWc9ND1jb25maWcgSEFWRV9UUlVTVEVEX0tFWVNfREVCVUdcbi0tXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTYtXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjc6Y29uZmlnIFRSVVNURURfS0VZU19ERUJVR1xuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy04LVx0Ym9vbCBcJiMzNDtEZWJ1ZyB0cnVzdGVkIGtleXNcJiMzNDtcbi0tXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTIxLVxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZzoyMjpjb25maWcgVFJVU1RFRF9LRVlTX1RQTVxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy0yMy1cdGJvb2wgXCYjMzQ7VFBNLWJhc2VkIHRydXN0ZWQga2V5c1wmIzM0O1xuLS1cbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWctNDAtXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjQxOmNvbmZpZyBUUlVTVEVEX0tFWVNfVEVFXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtURUUtYmFzZWQgdHJ1c3RlZCBrZXlzXCYjMzQ7XG4tLVxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy01MC1cbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWc6NTE6Y29uZmlnIFRSVVNURURfS0VZU19DQUFNXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTUyLVx0Ym9vbCBcJiMzNDtDQUFNLWJhc2VkIHRydXN0ZWQga2V5c1wmIzM0O1xuLS1cbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWctNjEtXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjYyOmNvbmZpZyBUUlVTVEVEX0tFWVNfRENQXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTYzLVx0Ym9vbCBcJiMzNDtEQ1AtYmFzZWQgdHJ1c3RlZCBrZXlzXCYjMzQ7XG4tLVxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy03MC1cbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWc6NzE6Y29uZmlnIFRSVVNURURfS0VZU19QS1dNXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTcyLVx0Ym9vbCBcJiMzNDtQS1dNLWJhc2VkIHRydXN0ZWQga2V5c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY0NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycyoqCgpBbHJpZ2h0LCB0aGUgYFRSVVNURURfS0VZU2Agc2V0dGluZyBhcHBlYXJzIHRvIGJlIGFzIGV4cGVjdGVkOyB0aGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCBsZXQmIzM5O3MgcGl2b3QgYW5kIHZlcmlmeSB0aGUgdmFsaWRpdHkgb2YgdGhlIGBDUkFTSF9EVU1QYCBjb25maWd1cmF0aW9uIHBhcmFtZXRlci4gSXMgdGhpcyB0aGUgc3BlY2lmaWMgY29uZmlnIHdlJiMzOTtyZSBhY3R1YWxseSBsb29raW5nIGZvcj8gTmVlZCB0byBjb25maXJtIGl0JiMzOTtzIGJlaGF2aW5nIGFzIGludGVuZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ1JBU0hfRFVNUCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvS2NvbmZpZy5rZXhlYz04OT1jb25maWcgS0VYRUNfSlVNUFxuLS1cbmtlcm5lbC9LY29uZmlnLmtleGVjLTk2LVxua2VybmVsL0tjb25maWcua2V4ZWM6OTc6Y29uZmlnIENSQVNIX0RVTVBcbmtlcm5lbC9LY29uZmlnLmtleGVjLTk4LVx0Ym9vbCBcJiMzNDtrZXJuZWwgY3Jhc2ggZHVtcHNcJiMzNDtcbi0tXG5rZXJuZWwvS2NvbmZpZy5rZXhlYz0xMjk9Y29uZmlnIENSQVNIX0RNX0NSWVBUX0NPTkZJR1Ncbi0tXG5rZXJuZWwvS2NvbmZpZy5rZXhlYy0xMzUtXG5rZXJuZWwvS2NvbmZpZy5rZXhlYzoxMzY6Y29uZmlnIENSQVNIX0RVTVBfS1VOSVRfVEVTVFxua2VybmVsL0tjb25maWcua2V4ZWMtMTM3LVx0dHJpc3RhdGUgXCYjMzQ7VW5pdCBUZXN0cyBmb3Iga2VybmVsIGNyYXNoIGR1bXBzXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NTgKCQkJCQkJCW91dHB1dDogMTYKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqCgpSaWdodCwgYENSQVNIX0RVTVBgLCBjb25maXJtZWQuIFRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgZmxhZy4gQW5kIGdvb2QsIGBDUkFTSF9aRVJPSVpFYCBpcyB0aGUgbmV3IHNldHRpbmcgdG8gZW1wbG95LgoKTm93LCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHNjYW4gdG8gbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IG90aGVyIGNydWNpYWwgY29uZmlndXJhdGlvbnMuIEFoYSwgeWVzLCB3ZSBjYW4mIzM5O3QgZm9yZ2V0IGBLRVlTYC4gV2UmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCB0aGF0IG9uZSBmb3IgdGhlIGtleSBtYW5hZ2VtZW50IHNldHVwLiBPa2F5LCBtb3Zpbmcgb24uLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtFWVMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jbG9ja3NvdXJjZS9LY29uZmlnPTI0Mj1jb25maWcgTlNQSVJFX1RJTUVSXG4tLVxuZHJpdmVycy9jbG9ja3NvdXJjZS9LY29uZmlnLTI0Ny1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvS2NvbmZpZzoyNDg6Y29uZmlnIEtFWVNUT05FX1RJTUVSXG5kcml2ZXJzL2Nsb2Nrc291cmNlL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtLZXlzdG9uZSB0aW1lciBkcml2ZXJcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4tLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc9MzkzPWNvbmZpZyBJUlFfQ1JPU1NCQVJcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy00MDAtXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo0MDE6Y29uZmlnIEtFWVNUT05FX0lSUVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNDAyLVx0dHJpc3RhdGUgXCYjMzQ7S2V5c3RvbmUgMiBJUlEgY29udHJvbGxlciBJUFwmIzM0O1xuLS1cbmRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnPTEyMT1jb25maWcgREE4WFhfUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnLTE0MS1cbmRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnOjE0Mjpjb25maWcgS0VZU1RPTkVfUkVNT1RFUFJPQ1xuZHJpdmVycy9yZW1vdGVwcm9jL0tjb25maWctMTQzLVx0dHJpc3RhdGUgXCYjMzQ7S2V5c3RvbmUgUmVtb3RlcHJvYyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZz05PWlmIFNPQ19USVxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy0xMC1cbmRyaXZlcnMvc29jL3RpL0tjb25maWc6MTE6Y29uZmlnIEtFWVNUT05FX05BVklHQVRPUl9RTVNTXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnLTEyLVx0dHJpc3RhdGUgXCYjMzQ7S2V5c3RvbmUgUXVldWUgTWFuYWdlciBTdWIgU3lzdGVtXCYjMzQ7XG4tLVxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy0yMi1cbmRyaXZlcnMvc29jL3RpL0tjb25maWc6MjM6Y29uZmlnIEtFWVNUT05FX05BVklHQVRPUl9ETUFcbmRyaXZlcnMvc29jL3RpL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUSSBLZXlzdG9uZSBOYXZpZ2F0b3IgUGFja2V0IERNQSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvcGh5L0tjb25maWc9MjM9Y29uZmlnIEZTTF9VU0IyX09UR1xuLS1cbmRyaXZlcnMvdXNiL3BoeS9LY29uZmlnLTMwLVxuZHJpdmVycy91c2IvcGh5L0tjb25maWc6MzE6Y29uZmlnIEtFWVNUT05FX1VTQl9QSFlcbmRyaXZlcnMvdXNiL3BoeS9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7S2V5c3RvbmUgVVNCIFBIWSBEcml2ZXJcJiMzNDtcbi0tXG5zZWN1cml0eS9rZXlzL0tjb25maWctNS1cbnNlY3VyaXR5L2tleXMvS2NvbmZpZzo2Om1lbnVjb25maWcgS0VZU1xuc2VjdXJpdHkva2V5cy9LY29uZmlnLTctXHRib29sIFwmIzM0O0VuYWJsZSBhY2Nlc3Mga2V5IHJldGVudGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuc2VjdXJpdHkva2V5cy9LY29uZmlnPTI0PWlmIEtFWVNcbnNlY3VyaXR5L2tleXMvS2NvbmZpZy0yNS1cbnNlY3VyaXR5L2tleXMvS2NvbmZpZzoyNjpjb25maWcgS0VZU19SRVFVRVNUX0NBQ0hFXG5zZWN1cml0eS9rZXlzL0tjb25maWctMjctXHRib29sIFwmIzM0O0VuYWJsZSB0ZW1wb3JhcnkgY2FjaGluZyBvZiB0aGUgbGFzdCByZXF1ZXN0X2tleSgpIHJlc3VsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjczOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDczNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBaZXJvaXplIEZ1bmN0aW9uIFN5bWJvbHMgZm9yIEZ1enppbmcqKgoKT2theSwgc28gdGhlIGluaXRpYWwgYXNzZXNzbWVudCBpcyBjb3JyZWN0OiBgS0VZU2AgaXMgZGVmaW5pdGVseSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZS4gTm93LCBJIG5lZWQgdG8gbGlzdCB0aGUgc3ltYm9scyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHplcm9pemUgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O3ZlIGlkZW50aWZpZWQ6IGBjcmFzaF96ZXJvaXplYCwgYHNlY3JldG1lbV9jcmFzaF96ZXJvaXplYCwgYGtleV9jcmFzaF96ZXJvaXplYCwgYGJpZ19rZXlfemVyb2l6ZWAsIGBlbmNyeXB0ZWRfemVyb2l6ZWAsIGB0cnVzdGVkX3plcm9pemVgLCBhbmQgYHVzZXJfemVyb2l6ZWAuCgpBaGEhIE5vdyBJIHJlbWVtYmVyIHRoZSBzdGF0aWMgZGVmaW5pdGlvbnMuIGB1c2VyX3plcm9pemVgIGlzIHN0YXRpYyBpbiBgc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY2AsIGBiaWdfa2V5X3plcm9pemVgIGlzIHN0YXRpYyBpbiBgc2VjdXJpdHkva2V5cy9iaWdfa2V5LmNgLCBgZW5jcnlwdGVkX3plcm9pemVgIGlzIHN0YXRpYyBpbiBgc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuY2AsIGB0cnVzdGVkX3plcm9pemVgIGlzIHN0YXRpYyBpbiBgc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmNgLCBgc2VjcmV0bWVtX2NyYXNoX3plcm9pemVgIGlzIHN0YXRpYyBpbiBgbW0vc2VjcmV0bWVtLmNgLCBga2V5X2NyYXNoX3plcm9pemVgIGlzIHN0YXRpYyBpbiBgc2VjdXJpdHkva2V5cy9rZXkuY2AsIGFuZCBmaW5hbGx5LCBgY3Jhc2hfemVyb2l6ZWAgaXMgc3RhdGljIGluIGBrZXJuZWwvY3Jhc2hfY29yZS5jYC4KClJpZ2h0LCB0aGUgcHJvbXB0IGlzIHB1c2hpbmcgbWUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gSG93ZXZlciwgdGhlc2UgemVyb2l6ZSBmdW5jdGlvbnMgYXJlICp1c2VkKiB2aWEgZnVuY3Rpb24gcG9pbnRlcnMuIFRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4sIHdoaWNoIG1lYW5zIHRoZSBjb21waWxlciAqd29uJiMzOTt0KiBpbmxpbmUgdGhlbS4gVGhleSYjMzk7bGwgaGF2ZSB0aGVpciBvd24gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gU28sIHRoZSBzdGF0aWMgZGVjbGFyYXRpb25zIGFyZW4mIzM5O3QgYSBjb25jZXJuIGhlcmUuCgpXYWl0LCBgY3Jhc2hfemVyb2l6ZWAgaXMgY2FsbGVkIGRpcmVjdGx5LCBidXQgaXQgaXNuJiMzOTt0IGFuIGludGVybmFsIGhlbHBlciBmdW5jdGlvbi4gSSBoYXZlIHRvIHRoaW5rLCBpdCAqbWlnaHQqIGJlIGlubGluZWQgaW50byBgX19jcmFzaF9rZXhlY2AuCgpIb3dldmVyLCB0aGUgcHJvYmxlbSBzYXlzIG5vdCB0byBpbmNsdWRlIGZ1bmN0aW9ucyB3aGljaCBhcmUgd2VsbC1rbm93biwgYW5kIGBfX2NyYXNoX2tleGVjYCBzZWVtcyB3ZWxsIGtub3duLiBTbywgSSB3aWxsIHN0aWNrIHRvIGp1c3QgdGhlIHplcm9pemUgZnVuY3Rpb25zLgoKSSYjMzk7dmUgc2Nhbm5lZCB0aGUgY29kZWJhc2UgYW5kIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHBhbmljLXRpbWUgc2VjcmV0IHdpcGluZyBsb2dpYyB0aGF0IG5lZWQgdG8gYmUgbGlzdGVkLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBteSBkZWNpc2lvbiBvbiBgV29ydGhGdXp6aW5nYC4gVGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IGZ1bmN0aW9uYWwgbG9naWM6IHdpcGluZyBzZWNyZXRzIG9uIGEgcGFuaWMuIFRoaXMgaXMgYSBzZWN1cml0eSBmZWF0dXJlLCB0cmlnZ2VyZWQgcHJpbWFyaWx5IGJ5IGBrZXhlY19sb2FkYCBjb21iaW5lZCB3aXRoIGEgcGFuaWMuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoYXQgaXQgZG9lc24mIzM5O3QgY3Jhc2ggaW4gdW5leHBlY3RlZCB3YXlzIG9yIGludHJvZHVjZSBkZWFkbG9ja3MsIGFsdGhvdWdoIGl0IGlzIGEgcGFuaWMgaGFuZGxlci4gVGhlIHNwaW5sb2NrIGxvZ2ljIGlzIHRoZXJlIHNwZWNpZmljYWxseSB0byBhdm9pZCBkZWFkbG9ja3MuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBzdGljayB3aXRoIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpTbywgdGhlIGNvbmZpZ3VyYXRpb25zIGFuZCBzeW1ib2xzIGFyZToKCioqQ29uZmlnczoqKgpgQ1JBU0hfWkVST0laRWAKYENSQVNIX0RVTVBgCmBTRUNSRVRNRU1gCmBLRVlTYApgQklHX0tFWVNgCmBFTkNSWVBURURfS0VZU2AKYFRSVVNURURfS0VZU2AKCioqU3ltYm9sczoqKgpgY3Jhc2hfemVyb2l6ZWAKYHNlY3JldG1lbV9jcmFzaF96ZXJvaXplYApga2V5X2NyYXNoX3plcm9pemVgCmBiaWdfa2V5X3plcm9pemVgCmBlbmNyeXB0ZWRfemVyb2l6ZWAKYHRydXN0ZWRfemVyb2l6ZWAKYHVzZXJfemVyb2l6ZWAKCkxldCYjMzk7cyBkb3VibGUgY2hlY2suLi4gV2hpbGUgaXQmIzM5O3MgcHJvYmFibHkgbm90IGlubGluZWQgYmVjYXVzZSBpdCBpcyBjYWxsZWQgZGlyZWN0bHkgYW5kIGlzbiYjMzk7dCB1c2VkIGFzIGEgaGVscGVyIGZ1bmN0aW9uLiBJIHdpbGwgYWRkIGBfX2NyYXNoX2tleGVjYCBqdXN0IGluIGNhc2UsIGJ1dCBsZXQgbWUgY2hlY2sgYWdhaW4gdG8gYmUgc3VyZS4uLiBMZXQgbWUgZG8gYSBxdWljayBzY2FuIG9mIGBfX2NyYXNoX2tleGVjYC4uLiBPa2F5LCBJJiMzOTttIGdvaW5nIHRvIHN0aWNrIHRvIHRoZSB6ZXJvaXplIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljIHZvaWQgY3Jhc2hfemVyb2l6ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvY3Jhc2hfY29yZS5jPTM5PUVYUE9SVF9TWU1CT0xfR1BMKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7XG5rZXJuZWwvY3Jhc2hfY29yZS5jLTQwLVxua2VybmVsL2NyYXNoX2NvcmUuYzo0MTpzdGF0aWMgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpXG5rZXJuZWwvY3Jhc2hfY29yZS5jLTQyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzNTUKCQkJCQkJCW91dHB1dDogMTkzCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IFByb2Nlc3NpbmcgUGlwZWxpbmUqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRhdGEsIGFuZCB0aGUgaW1tZWRpYXRlIGltcHJlc3Npb24gaXMgdGhhdCBpdCYjMzk7cyBlc3NlbnRpYWxseSBhIGZpeGVkIHNuYXBzaG90IOKAkyBzdGF0aWMuIEl0IGNvdWxkIGJlIGVtYmVkZGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgc3Vycm91bmRpbmcgY29udGV4dCAoaW5saW5lZCksIGJ1dCBmcm9tIG15IHBlcnNwZWN0aXZlLCB0aGF0JiMzOTtzIG5vdCBjcml0aWNhbC4gVGhlIGltcG9ydGFudCB0aGluZyBpcyBpdHMgaW1tdXRhYmlsaXR5IGF0IHRoaXMgc3RhZ2UuIEkgZG9uJiMzOTt0IG5lZWQgdG8gd29ycnkgYWJvdXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIG9yIGR5bmFtaWMgdXBkYXRpbmcgZm9yIHRoZSBuZXh0IHN0ZXAuCgpNeSBuZXh0IG9wZXJhdGlvbiB3aWxsIGJlIHRvIHVzZSBhIGRlc2lnbmF0ZWQgZnVuY3Rpb24gb3IgbWV0aG9kLiBJJiMzOTtsbCBpbnZva2UsIG9yIGNhbGwsICBgc2V0LXJlc3VsdHNgLiBUaGlzIGZ1bmN0aW9uIGxpa2VseSBoYW5kbGVzIHRoZSBjb3JlIHByb2Nlc3Mgb2YgaW50ZWdyYXRpbmcgdGhlIHN0YXRpYyBkYXRhLCB0aGUgaW1tdXRhYmxlIGRhdGEsICBpbnRvIHRoZSByZXN0IG9mIHRoZSBjdXJyZW50IHN0YXRlIGFuZCB0aGVuIHVwZGF0aW5nIHRoZSB3b3JraW5nIHJlc3VsdHMuIFRoaXMgY291bGQgaW52b2x2ZSBhbnl0aGluZyBmcm9tIHNpbXBseSBhc3NpZ25pbmcgdGhlIGRhdGEgdG8gYSB2YXJpYWJsZSwgY2FjaGluZyB0aGUgcmVzdWx0LCBvciBwYXNzaW5nIGl0IHRvIHRoZSBuZXh0IG9wZXJhdGlvbiBpbiBhIGJpZ2dlciBwaXBlbGluZS4gVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpY3Mgb2YgYHNldC1yZXN1bHRzYCBhcmUgbm90IGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgY29udGV4dCwgb25seSBpdHMgZXhwZWN0ZWQgcHVycG9zZS4gVGhlIGN1cnJlbnQgZm9jdXMgaXMgdG8gZ2V0IHRoZSBzdGF0aWMgaW5wdXQgaW50byB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q1JBU0hfWkVST0laRSYjMzQ7LAogICAgJiMzNDtDUkFTSF9EVU1QJiMzNDssCiAgICAmIzM0O1NFQ1JFVE1FTSYjMzQ7LAogICAgJiMzNDtLRVlTJiMzNDssCiAgICAmIzM0O0JJR19LRVlTJiMzNDssCiAgICAmIzM0O0VOQ1JZUFRFRF9LRVlTJiMzNDssCiAgICAmIzM0O1RSVVNURURfS0VZUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7c2VjcmV0bWVtX2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7a2V5X2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7YmlnX2tleV96ZXJvaXplJiMzNDssCiAgICAmIzM0O2VuY3J5cHRlZF96ZXJvaXplJiMzNDssCiAgICAmIzM0O3RydXN0ZWRfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDt1c2VyX3plcm9pemUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmZWF0dXJlIHRvIHplcm9pemUgc2Vuc2l0aXZlIHNlY3JldHMgKGtleXMgYW5kIHNlY3JldG1lbSkgZHVyaW5nIGEga2VybmVsIHBhbmljL2NyYXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGV4ZWN1dGVzIHdoZW4gYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkIGFuZCBhIHBhbmljIG9jY3Vycy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlc2UgdGVhcmRvd24gcGF0aHMgZG8gbm90IGludHJvZHVjZSBzZWNvbmRhcnkgZmF1bHRzIG9yIGRlYWRsb2Nrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q1JBU0hfWkVST0laRSYjMzQ7LAogICAgJiMzNDtDUkFTSF9EVU1QJiMzNDssCiAgICAmIzM0O1NFQ1JFVE1FTSYjMzQ7LAogICAgJiMzNDtLRVlTJiMzNDssCiAgICAmIzM0O0JJR19LRVlTJiMzNDssCiAgICAmIzM0O0VOQ1JZUFRFRF9LRVlTJiMzNDssCiAgICAmIzM0O1RSVVNURURfS0VZUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7c2VjcmV0bWVtX2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7a2V5X2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7YmlnX2tleV96ZXJvaXplJiMzNDssCiAgICAmIzM0O2VuY3J5cHRlZF96ZXJvaXplJiMzNDssCiAgICAmIzM0O3RydXN0ZWRfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDt1c2VyX3plcm9pemUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmZWF0dXJlIHRvIHplcm9pemUgc2Vuc2l0aXZlIHNlY3JldHMgKGtleXMgYW5kIHNlY3JldG1lbSkgZHVyaW5nIGEga2VybmVsIHBhbmljL2NyYXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGV4ZWN1dGVzIHdoZW4gYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkIGFuZCBhIHBhbmljIG9jY3Vycy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlc2UgdGVhcmRvd24gcGF0aHMgZG8gbm90IGludHJvZHVjZSBzZWNvbmRhcnkgZmF1bHRzIG9yIGRlYWRsb2Nrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA0OjAwOjM2Ljg1NjA0NjQzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMjY3MzM3ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNSQVNIX1pFUk9JWkVcIixcbiAgICBcIkNSQVNIX0RVTVBcIixcbiAgICBcIlNFQ1JFVE1FTVwiLFxuICAgIFwiS0VZU1wiLFxuICAgIFwiQklHX0tFWVNcIixcbiAgICBcIkVOQ1JZUFRFRF9LRVlTXCIsXG4gICAgXCJUUlVTVEVEX0tFWVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjcmFzaF96ZXJvaXplXCIsXG4gICAgXCJzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZVwiLFxuICAgIFwia2V5X2NyYXNoX3plcm9pemVcIixcbiAgICBcImJpZ19rZXlfemVyb2l6ZVwiLFxuICAgIFwiZW5jcnlwdGVkX3plcm9pemVcIixcbiAgICBcInRydXN0ZWRfemVyb2l6ZVwiLFxuICAgIFwidXNlcl96ZXJvaXplXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmZWF0dXJlIHRvIHplcm9pemUgc2Vuc2l0aXZlIHNlY3JldHMgKGtleXMgYW5kIHNlY3JldG1lbSkgZHVyaW5nIGEga2VybmVsIHBhbmljL2NyYXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGV4ZWN1dGVzIHdoZW4gYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkIGFuZCBhIHBhbmljIG9jY3Vycy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlc2UgdGVhcmRvd24gcGF0aHMgZG8gbm90IGludHJvZHVjZSBzZWNvbmRhcnkgZmF1bHRzIG9yIGRlYWRsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDA6MzYuODU2MDUzNTUzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk4MzIxMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YjQ0N2YxZDdjYTE2MDYxNTQxNjVmY2QwZWE0M2QxZGNiYWEwZTM5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMDQ6MDA6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9rZXhlYy5jIGIvZHJpdmVycy9vZi9rZXhlYy5jXFxuaW5kZXggMDI5OTAzYjk4NmNiZC4uMzY2MzVmNmNiOTAwOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL29mL2tleGVjLmNcXG4rKysgYi9kcml2ZXJzL29mL2tleGVjLmNcXG5AQCAtMjQsNyArMjQsNyBAQFxcbiBcXG4gLypcXG4gICogQWRkaXRpb25hbCBzcGFjZSBuZWVkZWQgZm9yIHRoZSBGRFQgYnVmZmVyIHNvIHRoYXQgd2UgY2FuIGFkZCBpbml0cmQsXFxuLSAqIGJvb3RhcmdzLCBrYXNsci1zZWVkLCBybmctc2VlZCwgdXNlYWJsZS1tZW1vcnktcmFuZ2UgYW5kIGVsZmNvcmVoZHIuXFxuKyAqIGJvb3RhcmdzLCBrYXNsci1zZWVkLCBybmctc2VlZCwgdXNhYmxlLW1lbW9yeS1yYW5nZSBhbmQgZWxmY29yZWhkci5cXG4gICovXFxuICNkZWZpbmUgRkRUX0VYVFJBX1NQQUNFIDB4MTAwMFxcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jcmFzaF9jb3JlLmggYi9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaFxcbmluZGV4IGJjMDg3MTI0Y2Q3OGUuLjVjNzIwN2MwYmJhMTQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9jcmFzaF9jb3JlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaFxcbkBAIC01LDYgKzUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbGlua2FnZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZWxmY29yZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZWxmLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9ub3RpZmllci5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IGtpbWFnZTtcXG4gXFxuQEAgLTM0LDYgKzM1LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2tleGVjX3Byb3RlY3RfY3Jhc2hrcmVzKHZvaWQpIHsgfVxcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9rZXhlY191bnByb3RlY3RfY3Jhc2hrcmVzKHZvaWQpIHsgfVxcbiAjZW5kaWZcXG4gXFxuKyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRVxcbitleHRlcm4gc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdDtcXG4rI2VuZGlmXFxuK1xcbiAjaWZuZGVmIGFyY2hfY3Jhc2hfaGFuZGxlX2hvdHBsdWdfZXZlbnRcXG4gc3RhdGljIGlubGluZSB2b2lkIGFyY2hfY3Jhc2hfaGFuZGxlX2hvdHBsdWdfZXZlbnQoc3RydWN0IGtpbWFnZSAqaW1hZ2UsIHZvaWQgKmFyZykgeyB9XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmggYi9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmhcXG5pbmRleCBiYjk3YmQzZTVhZjRmLi5mZjA5NDRjZTM2OGY5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaFxcbisrKyBiL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaFxcbkBAIC0xMjIsNiArMTIyLDE1IEBAIHN0cnVjdCBrZXlfdHlwZSB7XFxuIFxcdC8qIGNsZWFyIHRoZSBkYXRhIGZyb20gYSBrZXkgKG9wdGlvbmFsKSAqL1xcbiBcXHR2b2lkICgqZGVzdHJveSkoc3RydWN0IGtleSAqa2V5KTtcXG4gXFxuK1xcdC8qIHNjcnViIHRoZSBrZXkgbWF0ZXJpYWwgd2l0aG91dCBmcmVlJ2luZyAob3B0aW9uYWwpXFxuK1xcdCAqIC0gdXNlZCBmcm9tIENPTkZJR19DUkFTSF9aRVJPSVpFIGR1cmluZyBwYW5pYyB0byBrZWVwIGtleXMgb3V0IG9mXFxuK1xcdCAqICAgY3Jhc2ggZHVtcHNcXG4rXFx0ICogLSBjYWxsZWQgZnJvbSB0aGUgcGFuaWMgcGF0aCB3aXRoIG90aGVyIENQVXMgc3RvcHBlZCBhbmQgcHJlZW1wdGlvblxcbitcXHQgKiAgIGRpc2FibGVkXFxuK1xcdCAqIC0gbXVzdCBub3Qgc2xlZXAsIGFsbG9jYXRlLCBmcmVlIG9yIHRha2UgbG9ja3NcXG4rXFx0ICovXFxuK1xcdHZvaWQgKCp6ZXJvaXplKShzdHJ1Y3Qga2V5ICprZXkpO1xcbitcXG4gXFx0LyogZGVzY3JpYmUgYSBrZXkgKi9cXG4gXFx0dm9pZCAoKmRlc2NyaWJlKShjb25zdCBzdHJ1Y3Qga2V5ICprZXksIHN0cnVjdCBzZXFfZmlsZSAqcCk7XFxuIFxcbmRpZmYgLS1naXQgYS9rZXJuZWwvS2NvbmZpZy5rZXhlYyBiL2tlcm5lbC9LY29uZmlnLmtleGVjXFxuaW5kZXggMTU2MzIzNThiY2Y3MS4uOTJhYjBhNjljOGVjNiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvS2NvbmZpZy5rZXhlY1xcbisrKyBiL2tlcm5lbC9LY29uZmlnLmtleGVjXFxuQEAgLTE3OSw0ICsxNzksMTIgQEAgY29uZmlnIENSQVNIX01BWF9NRU1PUllfUkFOR0VTXFxuIFxcdCAgdGhlIGNvbXB1dGF0aW9uIGJlaGluZCB0aGUgdmFsdWUgcHJvdmlkZWQgdGhyb3VnaCB0aGVcXG4gXFx0ICAvc3lzL2tlcm5lbC9jcmFzaF9lbGZjb3JlaGRyX3NpemUgYXR0cmlidXRlLlxcbiBcXG4rY29uZmlnIENSQVNIX1pFUk9JWkVcXG4rXFx0Ym9vbCBcXFwiWmVyb2l6ZSBzZWNyZXRzIG9uIHBhbmljXFxcIlxcbitcXHRkZXBlbmRzIG9uIENSQVNIX0RVTVBcXG4rXFx0aGVscFxcbitcXHQgIFdpcGUgc2VjcmV0cyAoZS5nLiBrZXJuZWwga2V5cmluZyBhbmQgbWVtZmRfc2VjcmV0IHBhZ2VzKSBvbiBjcmFzaCBvciBwYW5pYy5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4rXFxuIGVuZG1lbnVcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2NyYXNoX2NvcmUuYyBiL2tlcm5lbC9jcmFzaF9jb3JlLmNcXG5pbmRleCAyYjM2YWE5ZmFkZTA2Li5kM2E3NzYzZTI3NTk5IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9jcmFzaF9jb3JlLmNcXG4rKysgYi9rZXJuZWwvY3Jhc2hfY29yZS5jXFxuQEAgLTIzLDYgKzIzLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29ianRvb2wuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wYW5pYy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vcGFnZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3NlY3Rpb25zLmhcXHUwMDNlXFxuQEAgLTMzLDYgKzM0LDIyIEBAXFxuIC8qIFBlciBjcHUgbWVtb3J5IGZvciBzdG9yaW5nIGNwdSBzdGF0ZXMgaW4gY2FzZSBvZiBzeXN0ZW0gY3Jhc2guICovXFxuIG5vdGVfYnVmX3QgX19wZXJjcHUgKmNyYXNoX25vdGVzO1xcbiBcXG4rI2lmZGVmIENPTkZJR19DUkFTSF9aRVJPSVpFXFxuK0FUT01JQ19OT1RJRklFUl9IRUFEKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7XFxuK0VYUE9SVF9TWU1CT0xfR1BMKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7XFxuK1xcbitzdGF0aWMgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpXFxuK3tcXG4rXFx0a3RpbWVfdCB6ZXJvaXplX3N0YXJ0ID0ga3RpbWVfZ2V0KCk7XFxuK1xcbitcXHRwcl9pbmZvKFxcXCJXaXBpbmcgc2Vuc2l0aXZlIHNlY3JldHMuLi5cXFxcblxcXCIpO1xcbitcXHRhdG9taWNfbm90aWZpZXJfY2FsbF9jaGFpbihcXHUwMDI2Y3Jhc2hfemVyb2l6ZV9ub3RpZmllcl9saXN0LCAwLCBOVUxMKTtcXG4rXFx0cHJfaW5mbyhcXFwiRG9uZSBpbiAlbGxkIHVzXFxcXG5cXFwiLCBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgemVyb2l6ZV9zdGFydCkpO1xcbit9XFxuKyNlbHNlXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpIHsgfVxcbisjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi9cXG4rXFxuIC8qIHRpbWUgdG8gd2FpdCBmb3IgcG9zc2libGUgRE1BIHRvIGZpbmlzaCBiZWZvcmUgc3RhcnRpbmcgdGhlIGtkdW1wIGtlcm5lbFxcbiAgKiB3aGVuIGEgQ01BIHJlc2VydmF0aW9uIGlzIHVzZWRcXG4gICovXFxuQEAgLTE0Miw2ICsxNTksNyBAQCB2b2lkIF9fbm9jbG9uZSBfX2NyYXNoX2tleGVjKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbiBcXHRcXHRcXHRjcmFzaF9zYXZlX3ZtY29yZWluZm8oKTtcXG4gXFx0XFx0XFx0bWFjaGluZV9jcmFzaF9zaHV0ZG93bihcXHUwMDI2Zml4ZWRfcmVncyk7XFxuIFxcdFxcdFxcdGNyYXNoX2NtYV9jbGVhcl9wZW5kaW5nX2RtYSgpO1xcbitcXHRcXHRcXHRjcmFzaF96ZXJvaXplKCk7XFxuIFxcdFxcdFxcdG1hY2hpbmVfa2V4ZWMoa2V4ZWNfY3Jhc2hfaW1hZ2UpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGtleGVjX3VubG9jaygpO1xcbmRpZmYgLS1naXQgYS9tbS9zZWNyZXRtZW0uYyBiL21tL3NlY3JldG1lbS5jXFxuaW5kZXggZDI5ODY1MDc1YjZlYS4uNTNmNjI5ZDY2MzNjMSAxMDA2NDRcXG4tLS0gYS9tbS9zZWNyZXRtZW0uY1xcbisrKyBiL21tL3NlY3JldG1lbS5jXFxuQEAgLTEzLDkgKzEzLDExIEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRvcHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ByaW50ay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGFnZW1hcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbm90aWZpZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N5c2NhbGxzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wc2V1ZG9fZnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NlY3JldG1lbS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY3Jhc2hfY29yZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2V0X21lbW9yeS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQvc2lnbmFsLmhcXHUwMDNlXFxuIFxcbkBAIC0xODcsNiArMTg5LDUwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBzZWNyZXRtZW1faW9wcyA9IHtcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgdmZzbW91bnQgKnNlY3JldG1lbV9tbnQ7XFxuIFxcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcXG4rLyogQ2FsbGVkIGZhciBpbnRvIHZwYW5pYyBmcm9tIGNyYXNoX2NvcmUuYyB3aXRoIG90aGVyIENQVXMgc3RvcHBlZCBhbmRcXG4rICogcHJlZW1wdGlvbiBkaXNhYmxlZFxcbisgKi9cXG4rc3RhdGljIGludCBzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nXFxuK1xcdFxcdGFjdGlvbiwgdm9pZCAqZGF0YSlcXG4re1xcbitcXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiO1xcbitcXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xcbitcXG4rXFx0aWYgKCFzZWNyZXRtZW1fbW50KVxcbitcXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuK1xcdHNiID0gc2VjcmV0bWVtX21udC1cXHUwMDNlbW50X3NiO1xcbitcXG4rXFx0LyogSWYgdGhlIGxpc3Qgd2FzIG1vZGlmaWVkIGluIHRoZSBleGFjdCBtb21lbnQgd2UgcGFuaWMnZWQsIGl0IG1pZ2h0IGJlXFxuK1xcdCAqIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSB0aGF0IHdvdWxkIGJlIHVuc2FmZSB0byBpdGVyYXRlLiBJZiB3ZSBjYW4ndFxcbitcXHQgKiBnZXQgdGhlIGxvY2ssIHRvbyBiYWQsIHRoYXQncyBhbGwgd2UgY2FuIGRvIGhlcmUuXFxuK1xcdCAqL1xcbitcXHRpZiAoIXNwaW5fdHJ5bG9jayhcXHUwMDI2c2ItXFx1MDAzZXNfaW5vZGVfbGlzdF9sb2NrKSkge1xcbitcXHRcXHRwcl9jcml0KFxcXCJjcmFzaF96ZXJvaXplOiBjYW4ndCBhY3F1aXJlIHNlY3JldG1lbSBzdXBlcmJsb2NrIGxvY2suXFxcXG5cXFwiXFxuK1xcdFxcdFxcdCBcXFwiY3Jhc2hfemVyb2l6ZTogc2tpcHBpbmcgemVyb2l6aW5nIHNlY3JldG1lbS5cXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuK1xcdH1cXG4rXFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkoaW5vZGUsIFxcdTAwMjZzYi1cXHUwMDNlc19pbm9kZXMsIGlfc2JfbGlzdCkge1xcbitcXHRcXHRYQV9TVEFURSh4YXMsIFxcdTAwMjZpbm9kZS1cXHUwMDNlaV9tYXBwaW5nLVxcdTAwM2VpX3BhZ2VzLCAwKTtcXG4rXFx0XFx0c3RydWN0IGZvbGlvICpmb2xpbztcXG4rXFxuK1xcdFxcdC8qIG5vIG5lZWQgZm9yIGxvY2tzIGlmIHdlJ3JlIGJ1cm5pbmcgZG93biB0aGUgaG91c2UgOikgKi9cXG4rXFx0XFx0eGFzX2Zvcl9lYWNoKFxcdTAwMjZ4YXMsIGZvbGlvLCBVTE9OR19NQVgpIHtcXG4rXFx0XFx0XFx0aWYgKHhhc19yZXRyeShcXHUwMDI2eGFzLCBmb2xpbykgfHwgeGFfaXNfdmFsdWUoZm9saW8pKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0XFx0aW5vZGUtXFx1MDAzZWlfbWFwcGluZy1cXHUwMDNlYV9vcHMtXFx1MDAzZWZyZWVfZm9saW8oZm9saW8pO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFx0Lyogb2ZmIHRvIGtleGVjKCkhICovXFxuK1xcdHJldHVybiBOT1RJRllfRE9ORTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBzZWNyZXRtZW1femVyb2l6ZV9uYiA9IHtcXG4rXFx0Lm5vdGlmaWVyX2NhbGwgPSBzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZVxcbit9O1xcbisjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi9cXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgZmlsZSAqc2VjcmV0bWVtX2ZpbGVfY3JlYXRlKHVuc2lnbmVkIGxvbmcgZmxhZ3MpXFxuIHtcXG4gXFx0c3RydWN0IGZpbGUgKmZpbGU7XFxuQEAgLTI2Myw2ICszMDksMTAgQEAgc3RhdGljIGludCBfX2luaXQgc2VjcmV0bWVtX2luaXQodm9pZClcXG4gXFx0aWYgKElTX0VSUihzZWNyZXRtZW1fbW50KSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoc2VjcmV0bWVtX21udCk7XFxuIFxcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcXG4rXFx0YXRvbWljX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKFxcdTAwMjZjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QsIFxcdTAwMjZzZWNyZXRtZW1femVyb2l6ZV9uYik7XFxuKyNlbmRpZlxcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gZnNfaW5pdGNhbGwoc2VjcmV0bWVtX2luaXQpO1xcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2JpZ19rZXkuYyBiL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jXFxuaW5kZXggMjY4ZjcwMmRmMzgwZS4uYWQ4NTM3ZGRhNzBmYSAxMDA2NDRcXG4tLS0gYS9zZWN1cml0eS9rZXlzL2JpZ19rZXkuY1xcbisrKyBiL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jXFxuQEAgLTM1LDYgKzM1LDggQEAgc3RydWN0IGJpZ19rZXlfcGF5bG9hZCB7XFxuICAqL1xcbiAjZGVmaW5lIEJJR19LRVlfRklMRV9USFJFU0hPTEQgKHNpemVvZihzdHJ1Y3QgaW5vZGUpICsgc2l6ZW9mKHN0cnVjdCBkZW50cnkpKVxcbiBcXG4rc3RhdGljIHZvaWQgYmlnX2tleV96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSk7XFxuK1xcbiAvKlxcbiAgKiBiaWdfa2V5IGRlZmluZWQga2V5cyB0YWtlIGFuIGFyYml0cmFyeSBzdHJpbmcgYXMgdGhlIGRlc2NyaXB0aW9uIGFuZCBhblxcbiAgKiBhcmJpdHJhcnkgYmxvYiBvZiBkYXRhIGFzIHRoZSBwYXlsb2FkXFxuQEAgLTQ2LDYgKzQ4LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX2JpZ19rZXkgPSB7XFxuIFxcdC5pbnN0YW50aWF0ZVxcdFxcdD0gZ2VuZXJpY19rZXlfaW5zdGFudGlhdGUsXFxuIFxcdC5yZXZva2VcXHRcXHRcXHQ9IGJpZ19rZXlfcmV2b2tlLFxcbiBcXHQuZGVzdHJveVxcdFxcdD0gYmlnX2tleV9kZXN0cm95LFxcbitcXHQuemVyb2l6ZVxcdFxcdD0gYmlnX2tleV96ZXJvaXplLFxcbiBcXHQuZGVzY3JpYmVcXHRcXHQ9IGJpZ19rZXlfZGVzY3JpYmUsXFxuIFxcdC5yZWFkXFx0XFx0XFx0PSBiaWdfa2V5X3JlYWQsXFxuIFxcdC51cGRhdGVcXHRcXHRcXHQ9IGJpZ19rZXlfdXBkYXRlLFxcbkBAIC0yNzksNiArMjgyLDE4IEBAIGxvbmcgYmlnX2tleV9yZWFkKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwgY2hhciAqYnVmZmVyLCBzaXplX3QgYnVmbGVuKVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBiaWdfa2V5X3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxcbit7XFxuK1xcdHN0cnVjdCBiaWdfa2V5X3BheWxvYWQgKnBheWxvYWQgPSB0b19iaWdfa2V5X3BheWxvYWQoa2V5LVxcdTAwM2VwYXlsb2FkKTtcXG4rXFxuK1xcdGlmIChwYXlsb2FkLVxcdTAwM2VkYXRhKSB7XFxuK1xcdFxcdGlmIChwYXlsb2FkLVxcdTAwM2VsZW5ndGggXFx1MDAzZSBCSUdfS0VZX0ZJTEVfVEhSRVNIT0xEKVxcbitcXHRcXHRcXHRtZW16ZXJvX2V4cGxpY2l0KHBheWxvYWQtXFx1MDAzZWRhdGEsIENIQUNIQTIwUE9MWTEzMDVfS0VZX1NJWkUpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdG1lbXplcm9fZXhwbGljaXQocGF5bG9hZC1cXHUwMDNlZGF0YSwgcGF5bG9hZC1cXHUwMDNlbGVuZ3RoKTtcXG4rXFx0fVxcbit9XFxuK1xcbiAvKlxcbiAgKiBSZWdpc3RlciBrZXkgdHlwZVxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuYyBiL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNcXG5pbmRleCA1OWNiNzdiMjM3YjM2Li45ZjU2ZmE5YjRhYWY0IDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNcXG4rKysgYi9zZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzL2VuY3J5cHRlZC5jXFxuQEAgLTk3MCwxMSArOTcwLDIzIEBAIHN0YXRpYyB2b2lkIGVuY3J5cHRlZF9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSlcXG4gXFx0a2ZyZWVfc2Vuc2l0aXZlKGtleS1cXHUwMDNlcGF5bG9hZC5kYXRhWzBdKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgZW5jcnlwdGVkX3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxcbit7XFxuK1xcdHN0cnVjdCBlbmNyeXB0ZWRfa2V5X3BheWxvYWQgKmVwYXlsb2FkID0ga2V5LVxcdTAwM2VwYXlsb2FkLmRhdGFbMF07XFxuK1xcbitcXHRpZiAoIWVwYXlsb2FkKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRtZW16ZXJvX2V4cGxpY2l0KGVwYXlsb2FkLVxcdTAwM2VwYXlsb2FkX2RhdGEsXFxuK1xcdFxcdFxcdCBlcGF5bG9hZC1cXHUwMDNlcGF5bG9hZF9kYXRhbGVuICsgZXBheWxvYWQtXFx1MDAzZWRhdGFibG9iX2xlbik7XFxuK31cXG4rXFxuIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9lbmNyeXB0ZWQgPSB7XFxuIFxcdC5uYW1lID0gXFxcImVuY3J5cHRlZFxcXCIsXFxuIFxcdC5pbnN0YW50aWF0ZSA9IGVuY3J5cHRlZF9pbnN0YW50aWF0ZSxcXG4gXFx0LnVwZGF0ZSA9IGVuY3J5cHRlZF91cGRhdGUsXFxuIFxcdC5kZXN0cm95ID0gZW5jcnlwdGVkX2Rlc3Ryb3ksXFxuK1xcdC56ZXJvaXplID0gZW5jcnlwdGVkX3plcm9pemUsXFxuIFxcdC5kZXNjcmliZSA9IHVzZXJfZGVzY3JpYmUsXFxuIFxcdC5yZWFkID0gZW5jcnlwdGVkX3JlYWQsXFxuIH07XFxuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMva2V5LmMgYi9zZWN1cml0eS9rZXlzL2tleS5jXFxuaW5kZXggYjM0YTY0ZDgxZDQ3YS4uNTY3M2RjYzhjNWQyMyAxMDA2NDRcXG4tLS0gYS9zZWN1cml0eS9rZXlzL2tleS5jXFxuKysrIGIvc2VjdXJpdHkva2V5cy9rZXkuY1xcbkBAIC0xMiw2ICsxMiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWN1cml0eS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jcmFzaF9jb3JlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yYW5kb20uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vyci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiaW50ZXJuYWwuaFxcXCJcXG5AQCAtMTI2OCw2ICsxMjY5LDQ0IEBAIHZvaWQgdW5yZWdpc3Rlcl9rZXlfdHlwZShzdHJ1Y3Qga2V5X3R5cGUgKmt0eXBlKVxcbiB9XFxuIEVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9rZXlfdHlwZSk7XFxuIFxcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcXG4rLyogQ2FsbGVkIGZhciBpbnRvIHZwYW5pYyBmcm9tIGNyYXNoX2NvcmUuYyB3aXRoIG90aGVyIENQVXMgc3RvcHBlZCBhbmRcXG4rICogcHJlZW1wdGlvbiBkaXNhYmxlZFxcbisgKi9cXG4rc3RhdGljIGludCBrZXlfY3Jhc2hfemVyb2l6ZShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGFjdGlvbixcXG4rXFx0XFx0dm9pZCAqZGF0YSlcXG4re1xcbitcXHRzdHJ1Y3QgcmJfbm9kZSAqbm9kZTtcXG4rXFxuK1xcdC8qIElmIHdlIGNhbid0IGFjcXVpcmUgdGhlIGxvY2ssIHRoZSByYnRyZWUgbWlnaHQgYmUgaW4gYW4gaW5jb25zaXN0ZW50XFxuK1xcdCAqIHN0YXRlLiBUaGF0J3MgYWxsIHdlIGNhbiBkbyB0aGVuLCBhcyB0aGVyZSdzIG5vIHBvaW50IHRvIHdhaXRpbmdcXG4rXFx0ICogYXQgdGhpcyBzdGFnZS5cXG4rXFx0ICovXFxuK1xcdGlmICghc3Bpbl90cnlsb2NrKFxcdTAwMjZrZXlfc2VyaWFsX2xvY2spKSB7XFxuK1xcdFxcdHByX2NyaXQoXFxcImNyYXNoX3plcm9pemU6IGNhbid0IGFjcXVpcmUga2V5X3NlcmlhbF9sb2NrLiBza2lwcGluZyBrZXlyaW5ncy5cXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAobm9kZSA9IHJiX2ZpcnN0KFxcdTAwMjZrZXlfc2VyaWFsX3RyZWUpOyBub2RlOyBub2RlID0gcmJfbmV4dChub2RlKSkge1xcbitcXHRcXHRzdHJ1Y3Qga2V5ICprZXkgPSByYl9lbnRyeShub2RlLCBzdHJ1Y3Qga2V5LCBzZXJpYWxfbm9kZSk7XFxuK1xcbitcXHRcXHRpZiAoa2V5LVxcdTAwM2V0eXBlID09IFxcdTAwMjZrZXlfdHlwZV9rZXlyaW5nIHx8XFxuK1xcdFxcdCAgICBrZXktXFx1MDAzZXN0YXRlID09IEtFWV9JU19VTklOU1RBTlRJQVRFRClcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHQvKiBjdXN0b20gemVyb2l6ZSBzaW5jZSBmcmVlJ2luZyBpc24ndCBzYWZlIGF0IHRoaXMgcG9pbnQgKi9cXG4rXFx0XFx0aWYgKGtleS1cXHUwMDNldHlwZS1cXHUwMDNlemVyb2l6ZSlcXG4rXFx0XFx0XFx0a2V5LVxcdTAwM2V0eXBlLVxcdTAwM2V6ZXJvaXplKGtleSk7XFxuK1xcdH1cXG4rXFx0Lyogb2ZmIHRvIGtleGVjKCkhICovXFxuK1xcdHJldHVybiBOT1RJRllfRE9ORTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBrZXlfY3Jhc2hfemVyb2l6ZV9uYiA9IHtcXG4rXFx0Lm5vdGlmaWVyX2NhbGwgPSBrZXlfY3Jhc2hfemVyb2l6ZVxcbit9O1xcbisjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi9cXG4rXFxuIC8qXFxuICAqIEluaXRpYWxpc2UgdGhlIGtleSBtYW5hZ2VtZW50IHN0YXRlLlxcbiAgKi9cXG5AQCAtMTI5MCw0ICsxMzI5LDkgQEAgdm9pZCBfX2luaXQga2V5X2luaXQodm9pZClcXG4gXFxuIFxcdHJiX2luc2VydF9jb2xvcihcXHUwMDI2cm9vdF9rZXlfdXNlci5ub2RlLFxcbiBcXHRcXHRcXHRcXHUwMDI2a2V5X3VzZXJfdHJlZSk7XFxuK1xcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcXG4rXFx0YXRvbWljX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKFxcdTAwMjZjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QsXFxuK1xcdFxcdFxcdFxcdTAwMjZrZXlfY3Jhc2hfemVyb2l6ZV9uYik7XFxuKyNlbmRpZlxcbiB9XFxuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jIGIvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmNcXG5pbmRleCAwNTA5ZDk5NTVmMmE2Li5mMTU5ZmFlYWZlMjNhIDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jXFxuKysrIGIvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmNcXG5AQCAtMzI1LDExICszMjUsMjUgQEAgc3RhdGljIHZvaWQgdHJ1c3RlZF9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSlcXG4gXFx0a2ZyZWVfc2Vuc2l0aXZlKGtleS1cXHUwMDNlcGF5bG9hZC5kYXRhWzBdKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgdHJ1c3RlZF96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSlcXG4re1xcbitcXHRzdHJ1Y3QgdHJ1c3RlZF9rZXlfcGF5bG9hZCAqcCA9IGtleS1cXHUwMDNlcGF5bG9hZC5kYXRhWzBdO1xcbitcXG4rXFx0aWYgKCFwKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRtZW16ZXJvX2V4cGxpY2l0KHAtXFx1MDAzZWtleSwgc2l6ZW9mKHAtXFx1MDAzZWtleSkpO1xcbitcXHRtZW16ZXJvX2V4cGxpY2l0KHAtXFx1MDAzZWJsb2IsIHNpemVvZihwLVxcdTAwM2VibG9iKSk7XFxuK1xcdHAtXFx1MDAzZWtleV9sZW4gPSAwO1xcbitcXHRwLVxcdTAwM2VibG9iX2xlbiA9IDA7XFxuK31cXG4rXFxuIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV90cnVzdGVkID0ge1xcbiBcXHQubmFtZSA9IFxcXCJ0cnVzdGVkXFxcIixcXG4gXFx0Lmluc3RhbnRpYXRlID0gdHJ1c3RlZF9pbnN0YW50aWF0ZSxcXG4gXFx0LnVwZGF0ZSA9IHRydXN0ZWRfdXBkYXRlLFxcbiBcXHQuZGVzdHJveSA9IHRydXN0ZWRfZGVzdHJveSxcXG4rXFx0Lnplcm9pemUgPSB0cnVzdGVkX3plcm9pemUsXFxuIFxcdC5kZXNjcmliZSA9IHVzZXJfZGVzY3JpYmUsXFxuIFxcdC5yZWFkID0gdHJ1c3RlZF9yZWFkLFxcbiB9O1xcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3VzZXJfZGVmaW5lZC5jIGIvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY1xcbmluZGV4IDZmODhiNTA3ZjkyNzkuLmFkZTk1ZGMyNDgxZGYgMTAwNjQ0XFxuLS0tIGEvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY1xcbisrKyBiL3NlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmNcXG5AQCAtMTUsNiArMTUsNyBAQFxcbiAjaW5jbHVkZSBcXFwiaW50ZXJuYWwuaFxcXCJcXG4gXFxuIHN0YXRpYyBpbnQgbG9nb25fdmV0X2Rlc2NyaXB0aW9uKGNvbnN0IGNoYXIgKmRlc2MpO1xcbitzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KTtcXG4gXFxuIC8qXFxuICAqIHVzZXIgZGVmaW5lZCBrZXlzIHRha2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgZGVzY3JpcHRpb24gYW5kIGFuXFxuQEAgLTI4LDYgKzI5LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX3VzZXIgPSB7XFxuIFxcdC51cGRhdGVcXHRcXHRcXHQ9IHVzZXJfdXBkYXRlLFxcbiBcXHQucmV2b2tlXFx0XFx0XFx0PSB1c2VyX3Jldm9rZSxcXG4gXFx0LmRlc3Ryb3lcXHRcXHQ9IHVzZXJfZGVzdHJveSxcXG4rXFx0Lnplcm9pemVcXHRcXHQ9IHVzZXJfemVyb2l6ZSxcXG4gXFx0LmRlc2NyaWJlXFx0XFx0PSB1c2VyX2Rlc2NyaWJlLFxcbiBcXHQucmVhZFxcdFxcdFxcdD0gdXNlcl9yZWFkLFxcbiB9O1xcbkBAIC00OCw2ICs1MCw3IEBAIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9sb2dvbiA9IHtcXG4gXFx0LnVwZGF0ZVxcdFxcdFxcdD0gdXNlcl91cGRhdGUsXFxuIFxcdC5yZXZva2VcXHRcXHRcXHQ9IHVzZXJfcmV2b2tlLFxcbiBcXHQuZGVzdHJveVxcdFxcdD0gdXNlcl9kZXN0cm95LFxcbitcXHQuemVyb2l6ZVxcdFxcdD0gdXNlcl96ZXJvaXplLFxcbiBcXHQuZGVzY3JpYmVcXHRcXHQ9IHVzZXJfZGVzY3JpYmUsXFxuIFxcdC52ZXRfZGVzY3JpcHRpb25cXHQ9IGxvZ29uX3ZldF9kZXNjcmlwdGlvbixcXG4gfTtcXG5AQCAtMTUyLDYgKzE1NSwxNCBAQCB2b2lkIHVzZXJfZGVzdHJveShzdHJ1Y3Qga2V5ICprZXkpXFxuIFxcbiBFWFBPUlRfU1lNQk9MX0dQTCh1c2VyX2Rlc3Ryb3kpO1xcbiBcXG4rc3RhdGljIHZvaWQgdXNlcl96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSlcXG4re1xcbitcXHRzdHJ1Y3QgdXNlcl9rZXlfcGF5bG9hZCAqdXBheWxvYWQgPSBrZXktXFx1MDAzZXBheWxvYWQuZGF0YVswXTtcXG4rXFxuK1xcdGlmICh1cGF5bG9hZClcXG4rXFx0XFx0bWVtemVyb19leHBsaWNpdCh1cGF5bG9hZC1cXHUwMDNlZGF0YSwgdXBheWxvYWQtXFx1MDAzZWRhdGFsZW4pO1xcbit9XFxuK1xcbiAvKlxcbiAgKiBkZXNjcmliZSB0aGUgdXNlciBrZXlcXG4gICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA0OjAwOjM3LjMyNjY2NzQyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY5Nzk2NzA2MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNSQVNIX1pFUk9JWkVcIixcbiAgICBcIkNSQVNIX0RVTVBcIixcbiAgICBcIlNFQ1JFVE1FTVwiLFxuICAgIFwiS0VZU1wiLFxuICAgIFwiQklHX0tFWVNcIixcbiAgICBcIkVOQ1JZUFRFRF9LRVlTXCIsXG4gICAgXCJUUlVTVEVEX0tFWVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjcmFzaF96ZXJvaXplXCIsXG4gICAgXCJzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZVwiLFxuICAgIFwia2V5X2NyYXNoX3plcm9pemVcIixcbiAgICBcImJpZ19rZXlfemVyb2l6ZVwiLFxuICAgIFwiZW5jcnlwdGVkX3plcm9pemVcIixcbiAgICBcInRydXN0ZWRfemVyb2l6ZVwiLFxuICAgIFwidXNlcl96ZXJvaXplXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmZWF0dXJlIHRvIHplcm9pemUgc2Vuc2l0aXZlIHNlY3JldHMgKGtleXMgYW5kIHNlY3JldG1lbSkgZHVyaW5nIGEga2VybmVsIHBhbmljL2NyYXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGV4ZWN1dGVzIHdoZW4gYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkIGFuZCBhIHBhbmljIG9jY3Vycy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlc2UgdGVhcmRvd24gcGF0aHMgZG8gbm90IGludHJvZHVjZSBzZWNvbmRhcnkgZmF1bHRzIG9yIGRlYWRsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWI0NDdmMWQ3Y2ExNjA2MTU0MTY1ZmNkMGVhNDNkMWRjYmFhMGUzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMDQ6MDA6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL2tleGVjLmMgYi9kcml2ZXJzL29mL2tleGVjLmNcbmluZGV4IDAyOTkwM2I5ODZjYmQuLjM2NjM1ZjZjYjkwMDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL29mL2tleGVjLmNcbisrKyBiL2RyaXZlcnMvb2Yva2V4ZWMuY1xuQEAgLTI0LDcgKzI0LDcgQEBcbiBcbiAvKlxuICAqIEFkZGl0aW9uYWwgc3BhY2UgbmVlZGVkIGZvciB0aGUgRkRUIGJ1ZmZlciBzbyB0aGF0IHdlIGNhbiBhZGQgaW5pdHJkLFxuLSAqIGJvb3RhcmdzLCBrYXNsci1zZWVkLCBybmctc2VlZCwgdXNlYWJsZS1tZW1vcnktcmFuZ2UgYW5kIGVsZmNvcmVoZHIuXG4rICogYm9vdGFyZ3MsIGthc2xyLXNlZWQsIHJuZy1zZWVkLCB1c2FibGUtbWVtb3J5LXJhbmdlIGFuZCBlbGZjb3JlaGRyLlxuICAqL1xuICNkZWZpbmUgRkRUX0VYVFJBX1NQQUNFIDB4MTAwMFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oIGIvaW5jbHVkZS9saW51eC9jcmFzaF9jb3JlLmhcbmluZGV4IGJjMDg3MTI0Y2Q3OGUuLjVjNzIwN2MwYmJhMTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaFxuKysrIGIvaW5jbHVkZS9saW51eC9jcmFzaF9jb3JlLmhcbkBAIC01LDYgKzUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbmthZ2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2VsZmNvcmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2VsZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbm90aWZpZXIuaFx1MDAzZVxuIFxuIHN0cnVjdCBraW1hZ2U7XG4gXG5AQCAtMzQsNiArMzUsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfa2V4ZWNfcHJvdGVjdF9jcmFzaGtyZXModm9pZCkgeyB9XG4gc3RhdGljIGlubGluZSB2b2lkIGFyY2hfa2V4ZWNfdW5wcm90ZWN0X2NyYXNoa3Jlcyh2b2lkKSB7IH1cbiAjZW5kaWZcbiBcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbitleHRlcm4gc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdDtcbisjZW5kaWZcbitcbiAjaWZuZGVmIGFyY2hfY3Jhc2hfaGFuZGxlX2hvdHBsdWdfZXZlbnRcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9jcmFzaF9oYW5kbGVfaG90cGx1Z19ldmVudChzdHJ1Y3Qga2ltYWdlICppbWFnZSwgdm9pZCAqYXJnKSB7IH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmggYi9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmhcbmluZGV4IGJiOTdiZDNlNWFmNGYuLmZmMDk0NGNlMzY4ZjkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmhcbisrKyBiL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaFxuQEAgLTEyMiw2ICsxMjIsMTUgQEAgc3RydWN0IGtleV90eXBlIHtcbiBcdC8qIGNsZWFyIHRoZSBkYXRhIGZyb20gYSBrZXkgKG9wdGlvbmFsKSAqL1xuIFx0dm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBrZXkgKmtleSk7XG4gXG4rXHQvKiBzY3J1YiB0aGUga2V5IG1hdGVyaWFsIHdpdGhvdXQgZnJlZSdpbmcgKG9wdGlvbmFsKVxuK1x0ICogLSB1c2VkIGZyb20gQ09ORklHX0NSQVNIX1pFUk9JWkUgZHVyaW5nIHBhbmljIHRvIGtlZXAga2V5cyBvdXQgb2ZcbitcdCAqICAgY3Jhc2ggZHVtcHNcbitcdCAqIC0gY2FsbGVkIGZyb20gdGhlIHBhbmljIHBhdGggd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kIHByZWVtcHRpb25cbitcdCAqICAgZGlzYWJsZWRcbitcdCAqIC0gbXVzdCBub3Qgc2xlZXAsIGFsbG9jYXRlLCBmcmVlIG9yIHRha2UgbG9ja3NcbitcdCAqL1xuK1x0dm9pZCAoKnplcm9pemUpKHN0cnVjdCBrZXkgKmtleSk7XG4rXG4gXHQvKiBkZXNjcmliZSBhIGtleSAqL1xuIFx0dm9pZCAoKmRlc2NyaWJlKShjb25zdCBzdHJ1Y3Qga2V5ICprZXksIHN0cnVjdCBzZXFfZmlsZSAqcCk7XG4gXG5kaWZmIC0tZ2l0IGEva2VybmVsL0tjb25maWcua2V4ZWMgYi9rZXJuZWwvS2NvbmZpZy5rZXhlY1xuaW5kZXggMTU2MzIzNThiY2Y3MS4uOTJhYjBhNjljOGVjNiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9LY29uZmlnLmtleGVjXG4rKysgYi9rZXJuZWwvS2NvbmZpZy5rZXhlY1xuQEAgLTE3OSw0ICsxNzksMTIgQEAgY29uZmlnIENSQVNIX01BWF9NRU1PUllfUkFOR0VTXG4gXHQgIHRoZSBjb21wdXRhdGlvbiBiZWhpbmQgdGhlIHZhbHVlIHByb3ZpZGVkIHRocm91Z2ggdGhlXG4gXHQgIC9zeXMva2VybmVsL2NyYXNoX2VsZmNvcmVoZHJfc2l6ZSBhdHRyaWJ1dGUuXG4gXG4rY29uZmlnIENSQVNIX1pFUk9JWkVcbitcdGJvb2wgXCJaZXJvaXplIHNlY3JldHMgb24gcGFuaWNcIlxuK1x0ZGVwZW5kcyBvbiBDUkFTSF9EVU1QXG4rXHRoZWxwXG4rXHQgIFdpcGUgc2VjcmV0cyAoZS5nLiBrZXJuZWwga2V5cmluZyBhbmQgbWVtZmRfc2VjcmV0IHBhZ2VzKSBvbiBjcmFzaCBvciBwYW5pYy5cbitcbitcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbitcbiBlbmRtZW51XG5kaWZmIC0tZ2l0IGEva2VybmVsL2NyYXNoX2NvcmUuYyBiL2tlcm5lbC9jcmFzaF9jb3JlLmNcbmluZGV4IDJiMzZhYTlmYWRlMDYuLmQzYTc3NjNlMjc1OTkgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvY3Jhc2hfY29yZS5jXG4rKysgYi9rZXJuZWwvY3Jhc2hfY29yZS5jXG5AQCAtMjMsNiArMjMsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29ianRvb2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wYW5pYy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vc2VjdGlvbnMuaFx1MDAzZVxuQEAgLTMzLDYgKzM0LDIyIEBAXG4gLyogUGVyIGNwdSBtZW1vcnkgZm9yIHN0b3JpbmcgY3B1IHN0YXRlcyBpbiBjYXNlIG9mIHN5c3RlbSBjcmFzaC4gKi9cbiBub3RlX2J1Zl90IF9fcGVyY3B1ICpjcmFzaF9ub3RlcztcbiBcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbitBVE9NSUNfTk9USUZJRVJfSEVBRChjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QpO1xuK0VYUE9SVF9TWU1CT0xfR1BMKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7XG4rXG4rc3RhdGljIHZvaWQgY3Jhc2hfemVyb2l6ZSh2b2lkKVxuK3tcbitcdGt0aW1lX3QgemVyb2l6ZV9zdGFydCA9IGt0aW1lX2dldCgpO1xuK1xuK1x0cHJfaW5mbyhcIldpcGluZyBzZW5zaXRpdmUgc2VjcmV0cy4uLlxcblwiKTtcbitcdGF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluKFx1MDAyNmNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCwgMCwgTlVMTCk7XG4rXHRwcl9pbmZvKFwiRG9uZSBpbiAlbGxkIHVzXFxuXCIsIGt0aW1lX3VzX2RlbHRhKGt0aW1lX2dldCgpLCB6ZXJvaXplX3N0YXJ0KSk7XG4rfVxuKyNlbHNlXG4rc3RhdGljIGlubGluZSB2b2lkIGNyYXNoX3plcm9pemUodm9pZCkgeyB9XG4rI2VuZGlmIC8qIENPTkZJR19DUkFTSF9aRVJPSVpFICovXG4rXG4gLyogdGltZSB0byB3YWl0IGZvciBwb3NzaWJsZSBETUEgdG8gZmluaXNoIGJlZm9yZSBzdGFydGluZyB0aGUga2R1bXAga2VybmVsXG4gICogd2hlbiBhIENNQSByZXNlcnZhdGlvbiBpcyB1c2VkXG4gICovXG5AQCAtMTQyLDYgKzE1OSw3IEBAIHZvaWQgX19ub2Nsb25lIF9fY3Jhc2hfa2V4ZWMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4gXHRcdFx0Y3Jhc2hfc2F2ZV92bWNvcmVpbmZvKCk7XG4gXHRcdFx0bWFjaGluZV9jcmFzaF9zaHV0ZG93bihcdTAwMjZmaXhlZF9yZWdzKTtcbiBcdFx0XHRjcmFzaF9jbWFfY2xlYXJfcGVuZGluZ19kbWEoKTtcbitcdFx0XHRjcmFzaF96ZXJvaXplKCk7XG4gXHRcdFx0bWFjaGluZV9rZXhlYyhrZXhlY19jcmFzaF9pbWFnZSk7XG4gXHRcdH1cbiBcdFx0a2V4ZWNfdW5sb2NrKCk7XG5kaWZmIC0tZ2l0IGEvbW0vc2VjcmV0bWVtLmMgYi9tbS9zZWNyZXRtZW0uY1xuaW5kZXggZDI5ODY1MDc1YjZlYS4uNTNmNjI5ZDY2MzNjMSAxMDA2NDRcbi0tLSBhL21tL3NlY3JldG1lbS5jXG4rKysgYi9tbS9zZWNyZXRtZW0uY1xuQEAgLTEzLDkgKzEzLDExIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0b3BzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcmludGsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L25vdGlmaWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zeXNjYWxscy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHNldWRvX2ZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zZWNyZXRtZW0uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NyYXNoX2NvcmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NldF9tZW1vcnkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NjaGVkL3NpZ25hbC5oXHUwMDNlXG4gXG5AQCAtMTg3LDYgKzE4OSw1MCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgc2VjcmV0bWVtX2lvcHMgPSB7XG4gXG4gc3RhdGljIHN0cnVjdCB2ZnNtb3VudCAqc2VjcmV0bWVtX21udDtcbiBcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbisvKiBDYWxsZWQgZmFyIGludG8gdnBhbmljIGZyb20gY3Jhc2hfY29yZS5jIHdpdGggb3RoZXIgQ1BVcyBzdG9wcGVkIGFuZFxuKyAqIHByZWVtcHRpb24gZGlzYWJsZWRcbisgKi9cbitzdGF0aWMgaW50IHNlY3JldG1lbV9jcmFzaF96ZXJvaXplKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmdcbitcdFx0YWN0aW9uLCB2b2lkICpkYXRhKVxuK3tcbitcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2I7XG4rXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xuK1xuK1x0aWYgKCFzZWNyZXRtZW1fbW50KVxuK1x0XHRyZXR1cm4gTk9USUZZX0RPTkU7XG4rXHRzYiA9IHNlY3JldG1lbV9tbnQtXHUwMDNlbW50X3NiO1xuK1xuK1x0LyogSWYgdGhlIGxpc3Qgd2FzIG1vZGlmaWVkIGluIHRoZSBleGFjdCBtb21lbnQgd2UgcGFuaWMnZWQsIGl0IG1pZ2h0IGJlXG4rXHQgKiBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgdGhhdCB3b3VsZCBiZSB1bnNhZmUgdG8gaXRlcmF0ZS4gSWYgd2UgY2FuJ3RcbitcdCAqIGdldCB0aGUgbG9jaywgdG9vIGJhZCwgdGhhdCdzIGFsbCB3ZSBjYW4gZG8gaGVyZS5cbitcdCAqL1xuK1x0aWYgKCFzcGluX3RyeWxvY2soXHUwMDI2c2ItXHUwMDNlc19pbm9kZV9saXN0X2xvY2spKSB7XG4rXHRcdHByX2NyaXQoXCJjcmFzaF96ZXJvaXplOiBjYW4ndCBhY3F1aXJlIHNlY3JldG1lbSBzdXBlcmJsb2NrIGxvY2suXFxuXCJcbitcdFx0XHQgXCJjcmFzaF96ZXJvaXplOiBza2lwcGluZyB6ZXJvaXppbmcgc2VjcmV0bWVtLlxcblwiKTtcbitcdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuK1x0fVxuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShpbm9kZSwgXHUwMDI2c2ItXHUwMDNlc19pbm9kZXMsIGlfc2JfbGlzdCkge1xuK1x0XHRYQV9TVEFURSh4YXMsIFx1MDAyNmlub2RlLVx1MDAzZWlfbWFwcGluZy1cdTAwM2VpX3BhZ2VzLCAwKTtcbitcdFx0c3RydWN0IGZvbGlvICpmb2xpbztcbitcbitcdFx0Lyogbm8gbmVlZCBmb3IgbG9ja3MgaWYgd2UncmUgYnVybmluZyBkb3duIHRoZSBob3VzZSA6KSAqL1xuK1x0XHR4YXNfZm9yX2VhY2goXHUwMDI2eGFzLCBmb2xpbywgVUxPTkdfTUFYKSB7XG4rXHRcdFx0aWYgKHhhc19yZXRyeShcdTAwMjZ4YXMsIGZvbGlvKSB8fCB4YV9pc192YWx1ZShmb2xpbykpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRpbm9kZS1cdTAwM2VpX21hcHBpbmctXHUwMDNlYV9vcHMtXHUwMDNlZnJlZV9mb2xpbyhmb2xpbyk7XG4rXHRcdH1cbitcdH1cbitcdC8qIG9mZiB0byBrZXhlYygpISAqL1xuK1x0cmV0dXJuIE5PVElGWV9ET05FO1xuK31cbitcbitzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHNlY3JldG1lbV96ZXJvaXplX25iID0ge1xuK1x0Lm5vdGlmaWVyX2NhbGwgPSBzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZVxuK307XG4rI2VuZGlmIC8qIENPTkZJR19DUkFTSF9aRVJPSVpFICovXG4rXG4gc3RhdGljIHN0cnVjdCBmaWxlICpzZWNyZXRtZW1fZmlsZV9jcmVhdGUodW5zaWduZWQgbG9uZyBmbGFncylcbiB7XG4gXHRzdHJ1Y3QgZmlsZSAqZmlsZTtcbkBAIC0yNjMsNiArMzA5LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IHNlY3JldG1lbV9pbml0KHZvaWQpXG4gXHRpZiAoSVNfRVJSKHNlY3JldG1lbV9tbnQpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihzZWNyZXRtZW1fbW50KTtcbiBcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbitcdGF0b21pY19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihcdTAwMjZjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QsIFx1MDAyNnNlY3JldG1lbV96ZXJvaXplX25iKTtcbisjZW5kaWZcbitcbiBcdHJldHVybiAwO1xuIH1cbiBmc19pbml0Y2FsbChzZWNyZXRtZW1faW5pdCk7XG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9iaWdfa2V5LmMgYi9zZWN1cml0eS9rZXlzL2JpZ19rZXkuY1xuaW5kZXggMjY4ZjcwMmRmMzgwZS4uYWQ4NTM3ZGRhNzBmYSAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jXG4rKysgYi9zZWN1cml0eS9rZXlzL2JpZ19rZXkuY1xuQEAgLTM1LDYgKzM1LDggQEAgc3RydWN0IGJpZ19rZXlfcGF5bG9hZCB7XG4gICovXG4gI2RlZmluZSBCSUdfS0VZX0ZJTEVfVEhSRVNIT0xEIChzaXplb2Yoc3RydWN0IGlub2RlKSArIHNpemVvZihzdHJ1Y3QgZGVudHJ5KSlcbiBcbitzdGF0aWMgdm9pZCBiaWdfa2V5X3plcm9pemUoc3RydWN0IGtleSAqa2V5KTtcbitcbiAvKlxuICAqIGJpZ19rZXkgZGVmaW5lZCBrZXlzIHRha2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgZGVzY3JpcHRpb24gYW5kIGFuXG4gICogYXJiaXRyYXJ5IGJsb2Igb2YgZGF0YSBhcyB0aGUgcGF5bG9hZFxuQEAgLTQ2LDYgKzQ4LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX2JpZ19rZXkgPSB7XG4gXHQuaW5zdGFudGlhdGVcdFx0PSBnZW5lcmljX2tleV9pbnN0YW50aWF0ZSxcbiBcdC5yZXZva2VcdFx0XHQ9IGJpZ19rZXlfcmV2b2tlLFxuIFx0LmRlc3Ryb3lcdFx0PSBiaWdfa2V5X2Rlc3Ryb3ksXG4rXHQuemVyb2l6ZVx0XHQ9IGJpZ19rZXlfemVyb2l6ZSxcbiBcdC5kZXNjcmliZVx0XHQ9IGJpZ19rZXlfZGVzY3JpYmUsXG4gXHQucmVhZFx0XHRcdD0gYmlnX2tleV9yZWFkLFxuIFx0LnVwZGF0ZVx0XHRcdD0gYmlnX2tleV91cGRhdGUsXG5AQCAtMjc5LDYgKzI4MiwxOCBAQCBsb25nIGJpZ19rZXlfcmVhZChjb25zdCBzdHJ1Y3Qga2V5ICprZXksIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmxlbilcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGJpZ19rZXlfemVyb2l6ZShzdHJ1Y3Qga2V5ICprZXkpXG4re1xuK1x0c3RydWN0IGJpZ19rZXlfcGF5bG9hZCAqcGF5bG9hZCA9IHRvX2JpZ19rZXlfcGF5bG9hZChrZXktXHUwMDNlcGF5bG9hZCk7XG4rXG4rXHRpZiAocGF5bG9hZC1cdTAwM2VkYXRhKSB7XG4rXHRcdGlmIChwYXlsb2FkLVx1MDAzZWxlbmd0aCBcdTAwM2UgQklHX0tFWV9GSUxFX1RIUkVTSE9MRClcbitcdFx0XHRtZW16ZXJvX2V4cGxpY2l0KHBheWxvYWQtXHUwMDNlZGF0YSwgQ0hBQ0hBMjBQT0xZMTMwNV9LRVlfU0laRSk7XG4rXHRcdGVsc2VcbitcdFx0XHRtZW16ZXJvX2V4cGxpY2l0KHBheWxvYWQtXHUwMDNlZGF0YSwgcGF5bG9hZC1cdTAwM2VsZW5ndGgpO1xuK1x0fVxuK31cbitcbiAvKlxuICAqIFJlZ2lzdGVyIGtleSB0eXBlXG4gICovXG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuYyBiL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNcbmluZGV4IDU5Y2I3N2IyMzdiMzYuLjlmNTZmYTliNGFhZjQgMTAwNjQ0XG4tLS0gYS9zZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzL2VuY3J5cHRlZC5jXG4rKysgYi9zZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzL2VuY3J5cHRlZC5jXG5AQCAtOTcwLDExICs5NzAsMjMgQEAgc3RhdGljIHZvaWQgZW5jcnlwdGVkX2Rlc3Ryb3koc3RydWN0IGtleSAqa2V5KVxuIFx0a2ZyZWVfc2Vuc2l0aXZlKGtleS1cdTAwM2VwYXlsb2FkLmRhdGFbMF0pO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBlbmNyeXB0ZWRfemVyb2l6ZShzdHJ1Y3Qga2V5ICprZXkpXG4re1xuK1x0c3RydWN0IGVuY3J5cHRlZF9rZXlfcGF5bG9hZCAqZXBheWxvYWQgPSBrZXktXHUwMDNlcGF5bG9hZC5kYXRhWzBdO1xuK1xuK1x0aWYgKCFlcGF5bG9hZClcbitcdFx0cmV0dXJuO1xuK1xuK1x0bWVtemVyb19leHBsaWNpdChlcGF5bG9hZC1cdTAwM2VwYXlsb2FkX2RhdGEsXG4rXHRcdFx0IGVwYXlsb2FkLVx1MDAzZXBheWxvYWRfZGF0YWxlbiArIGVwYXlsb2FkLVx1MDAzZWRhdGFibG9iX2xlbik7XG4rfVxuK1xuIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9lbmNyeXB0ZWQgPSB7XG4gXHQubmFtZSA9IFwiZW5jcnlwdGVkXCIsXG4gXHQuaW5zdGFudGlhdGUgPSBlbmNyeXB0ZWRfaW5zdGFudGlhdGUsXG4gXHQudXBkYXRlID0gZW5jcnlwdGVkX3VwZGF0ZSxcbiBcdC5kZXN0cm95ID0gZW5jcnlwdGVkX2Rlc3Ryb3ksXG4rXHQuemVyb2l6ZSA9IGVuY3J5cHRlZF96ZXJvaXplLFxuIFx0LmRlc2NyaWJlID0gdXNlcl9kZXNjcmliZSxcbiBcdC5yZWFkID0gZW5jcnlwdGVkX3JlYWQsXG4gfTtcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2tleS5jIGIvc2VjdXJpdHkva2V5cy9rZXkuY1xuaW5kZXggYjM0YTY0ZDgxZDQ3YS4uNTY3M2RjYzhjNWQyMyAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2tleXMva2V5LmNcbisrKyBiL3NlY3VyaXR5L2tleXMva2V5LmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2VjdXJpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY3Jhc2hfY29yZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmFuZG9tLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFwiaW50ZXJuYWwuaFwiXG5AQCAtMTI2OCw2ICsxMjY5LDQ0IEBAIHZvaWQgdW5yZWdpc3Rlcl9rZXlfdHlwZShzdHJ1Y3Qga2V5X3R5cGUgKmt0eXBlKVxuIH1cbiBFWFBPUlRfU1lNQk9MKHVucmVnaXN0ZXJfa2V5X3R5cGUpO1xuIFxuKyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRVxuKy8qIENhbGxlZCBmYXIgaW50byB2cGFuaWMgZnJvbSBjcmFzaF9jb3JlLmMgd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kXG4rICogcHJlZW1wdGlvbiBkaXNhYmxlZFxuKyAqL1xuK3N0YXRpYyBpbnQga2V5X2NyYXNoX3plcm9pemUoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyBhY3Rpb24sXG4rXHRcdHZvaWQgKmRhdGEpXG4re1xuK1x0c3RydWN0IHJiX25vZGUgKm5vZGU7XG4rXG4rXHQvKiBJZiB3ZSBjYW4ndCBhY3F1aXJlIHRoZSBsb2NrLCB0aGUgcmJ0cmVlIG1pZ2h0IGJlIGluIGFuIGluY29uc2lzdGVudFxuK1x0ICogc3RhdGUuIFRoYXQncyBhbGwgd2UgY2FuIGRvIHRoZW4sIGFzIHRoZXJlJ3Mgbm8gcG9pbnQgdG8gd2FpdGluZ1xuK1x0ICogYXQgdGhpcyBzdGFnZS5cbitcdCAqL1xuK1x0aWYgKCFzcGluX3RyeWxvY2soXHUwMDI2a2V5X3NlcmlhbF9sb2NrKSkge1xuK1x0XHRwcl9jcml0KFwiY3Jhc2hfemVyb2l6ZTogY2FuJ3QgYWNxdWlyZSBrZXlfc2VyaWFsX2xvY2suIHNraXBwaW5nIGtleXJpbmdzLlxcblwiKTtcbitcdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuK1x0fVxuK1xuK1x0Zm9yIChub2RlID0gcmJfZmlyc3QoXHUwMDI2a2V5X3NlcmlhbF90cmVlKTsgbm9kZTsgbm9kZSA9IHJiX25leHQobm9kZSkpIHtcbitcdFx0c3RydWN0IGtleSAqa2V5ID0gcmJfZW50cnkobm9kZSwgc3RydWN0IGtleSwgc2VyaWFsX25vZGUpO1xuK1xuK1x0XHRpZiAoa2V5LVx1MDAzZXR5cGUgPT0gXHUwMDI2a2V5X3R5cGVfa2V5cmluZyB8fFxuK1x0XHQgICAga2V5LVx1MDAzZXN0YXRlID09IEtFWV9JU19VTklOU1RBTlRJQVRFRClcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0LyogY3VzdG9tIHplcm9pemUgc2luY2UgZnJlZSdpbmcgaXNuJ3Qgc2FmZSBhdCB0aGlzIHBvaW50ICovXG4rXHRcdGlmIChrZXktXHUwMDNldHlwZS1cdTAwM2V6ZXJvaXplKVxuK1x0XHRcdGtleS1cdTAwM2V0eXBlLVx1MDAzZXplcm9pemUoa2V5KTtcbitcdH1cbitcdC8qIG9mZiB0byBrZXhlYygpISAqL1xuK1x0cmV0dXJuIE5PVElGWV9ET05FO1xuK31cbitcbitzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGtleV9jcmFzaF96ZXJvaXplX25iID0ge1xuK1x0Lm5vdGlmaWVyX2NhbGwgPSBrZXlfY3Jhc2hfemVyb2l6ZVxuK307XG4rI2VuZGlmIC8qIENPTkZJR19DUkFTSF9aRVJPSVpFICovXG4rXG4gLypcbiAgKiBJbml0aWFsaXNlIHRoZSBrZXkgbWFuYWdlbWVudCBzdGF0ZS5cbiAgKi9cbkBAIC0xMjkwLDQgKzEzMjksOSBAQCB2b2lkIF9faW5pdCBrZXlfaW5pdCh2b2lkKVxuIFxuIFx0cmJfaW5zZXJ0X2NvbG9yKFx1MDAyNnJvb3Rfa2V5X3VzZXIubm9kZSxcbiBcdFx0XHRcdTAwMjZrZXlfdXNlcl90cmVlKTtcbitcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbitcdGF0b21pY19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihcdTAwMjZjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QsXG4rXHRcdFx0XHUwMDI2a2V5X2NyYXNoX3plcm9pemVfbmIpO1xuKyNlbmRpZlxuIH1cbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy90cnVzdGVkX2NvcmUuYyBiL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jXG5pbmRleCAwNTA5ZDk5NTVmMmE2Li5mMTU5ZmFlYWZlMjNhIDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmNcbisrKyBiL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jXG5AQCAtMzI1LDExICszMjUsMjUgQEAgc3RhdGljIHZvaWQgdHJ1c3RlZF9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSlcbiBcdGtmcmVlX3NlbnNpdGl2ZShrZXktXHUwMDNlcGF5bG9hZC5kYXRhWzBdKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdHJ1c3RlZF96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSlcbit7XG4rXHRzdHJ1Y3QgdHJ1c3RlZF9rZXlfcGF5bG9hZCAqcCA9IGtleS1cdTAwM2VwYXlsb2FkLmRhdGFbMF07XG4rXG4rXHRpZiAoIXApXG4rXHRcdHJldHVybjtcbitcbitcdG1lbXplcm9fZXhwbGljaXQocC1cdTAwM2VrZXksIHNpemVvZihwLVx1MDAzZWtleSkpO1xuK1x0bWVtemVyb19leHBsaWNpdChwLVx1MDAzZWJsb2IsIHNpemVvZihwLVx1MDAzZWJsb2IpKTtcbitcdHAtXHUwMDNla2V5X2xlbiA9IDA7XG4rXHRwLVx1MDAzZWJsb2JfbGVuID0gMDtcbit9XG4rXG4gc3RydWN0IGtleV90eXBlIGtleV90eXBlX3RydXN0ZWQgPSB7XG4gXHQubmFtZSA9IFwidHJ1c3RlZFwiLFxuIFx0Lmluc3RhbnRpYXRlID0gdHJ1c3RlZF9pbnN0YW50aWF0ZSxcbiBcdC51cGRhdGUgPSB0cnVzdGVkX3VwZGF0ZSxcbiBcdC5kZXN0cm95ID0gdHJ1c3RlZF9kZXN0cm95LFxuK1x0Lnplcm9pemUgPSB0cnVzdGVkX3plcm9pemUsXG4gXHQuZGVzY3JpYmUgPSB1c2VyX2Rlc2NyaWJlLFxuIFx0LnJlYWQgPSB0cnVzdGVkX3JlYWQsXG4gfTtcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3VzZXJfZGVmaW5lZC5jIGIvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY1xuaW5kZXggNmY4OGI1MDdmOTI3OS4uYWRlOTVkYzI0ODFkZiAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmNcbisrKyBiL3NlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmNcbkBAIC0xNSw2ICsxNSw3IEBAXG4gI2luY2x1ZGUgXCJpbnRlcm5hbC5oXCJcbiBcbiBzdGF0aWMgaW50IGxvZ29uX3ZldF9kZXNjcmlwdGlvbihjb25zdCBjaGFyICpkZXNjKTtcbitzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KTtcbiBcbiAvKlxuICAqIHVzZXIgZGVmaW5lZCBrZXlzIHRha2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgZGVzY3JpcHRpb24gYW5kIGFuXG5AQCAtMjgsNiArMjksNyBAQCBzdHJ1Y3Qga2V5X3R5cGUga2V5X3R5cGVfdXNlciA9IHtcbiBcdC51cGRhdGVcdFx0XHQ9IHVzZXJfdXBkYXRlLFxuIFx0LnJldm9rZVx0XHRcdD0gdXNlcl9yZXZva2UsXG4gXHQuZGVzdHJveVx0XHQ9IHVzZXJfZGVzdHJveSxcbitcdC56ZXJvaXplXHRcdD0gdXNlcl96ZXJvaXplLFxuIFx0LmRlc2NyaWJlXHRcdD0gdXNlcl9kZXNjcmliZSxcbiBcdC5yZWFkXHRcdFx0PSB1c2VyX3JlYWQsXG4gfTtcbkBAIC00OCw2ICs1MCw3IEBAIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9sb2dvbiA9IHtcbiBcdC51cGRhdGVcdFx0XHQ9IHVzZXJfdXBkYXRlLFxuIFx0LnJldm9rZVx0XHRcdD0gdXNlcl9yZXZva2UsXG4gXHQuZGVzdHJveVx0XHQ9IHVzZXJfZGVzdHJveSxcbitcdC56ZXJvaXplXHRcdD0gdXNlcl96ZXJvaXplLFxuIFx0LmRlc2NyaWJlXHRcdD0gdXNlcl9kZXNjcmliZSxcbiBcdC52ZXRfZGVzY3JpcHRpb25cdD0gbG9nb25fdmV0X2Rlc2NyaXB0aW9uLFxuIH07XG5AQCAtMTUyLDYgKzE1NSwxNCBAQCB2b2lkIHVzZXJfZGVzdHJveShzdHJ1Y3Qga2V5ICprZXkpXG4gXG4gRVhQT1JUX1NZTUJPTF9HUEwodXNlcl9kZXN0cm95KTtcbiBcbitzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxuK3tcbitcdHN0cnVjdCB1c2VyX2tleV9wYXlsb2FkICp1cGF5bG9hZCA9IGtleS1cdTAwM2VwYXlsb2FkLmRhdGFbMF07XG4rXG4rXHRpZiAodXBheWxvYWQpXG4rXHRcdG1lbXplcm9fZXhwbGljaXQodXBheWxvYWQtXHUwMDNlZGF0YSwgdXBheWxvYWQtXHUwMDNlZGF0YWxlbik7XG4rfVxuK1xuIC8qXG4gICogZGVzY3JpYmUgdGhlIHVzZXIga2V5XG4gICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNDowMDozNy4zMjY2Njg5MTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc1NjgzNDEyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgJ0NPTkZJR19DUkFTSF9aRVJPSVpFJyBGZWF0dXJlIGZvciBGdXp6aW5nKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgbmV3IGZlYXR1cmUsIGBDT05GSUdfQ1JBU0hfWkVST0laRWAsIGRlc2lnbmVkIHRvIHplcm8gb3V0IHNlbnNpdGl2ZSBkYXRhIChzZWNyZXRzLCBrZXlzLCBldGMuKSBkdXJpbmcgYSBwYW5pYyBvciBrZXJuZWwgY3Jhc2guIFRoZSBjb3JlIG9mIHRoaXMgZnVuY3Rpb25hbGl0eSBsaWVzIHdpdGhpbiBga2VybmVsL2NyYXNoX2NvcmUuY2AsIHNwZWNpZmljYWxseSB0aGUgYF9fY3Jhc2hfa2V4ZWNgIGZ1bmN0aW9uLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBga2V4ZWNfY3Jhc2hfaW1hZ2VgIGlzIG5vbi1OVUxMLiBUaGlzIGluZGljYXRlcyB0aGUgcHJlc2VuY2Ugb2YgYSBjcmFzaCBrZXJuZWwgbG9hZGVkIHVzaW5nIGBrZXhlY19sb2FkYCBvciBga2V4ZWNfZmlsZV9sb2FkYCB3aXRoIGBLRVhFQ19PTl9DUkFTSGAuIFRoaXMgZnVuY3Rpb24gY2FsbHMgYGNyYXNoX3plcm9pemUoKWAsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYSBsaXN0IG9mIG5vdGlmaWVycyByZWdpc3RlcmVkIGJ5IHN1YnN5c3RlbXMgbGlrZSBgc2VjcmV0bWVtYCBhbmQgYGtleXNgLCB1bHRpbWF0ZWx5IHplcm9pbmcgb3V0IHNwZWNpZmljIG1lbW9yeSByZWdpb25zLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBiZSBlZmZlY3RpdmVseSBmdXp6ZWQgYnkgc3l6a2FsbGVyPyBTeXprYWxsZXIncyB1c3VhbCB3b3JrZmxvdyBhdm9pZHMgcGFuaWNzIGJlY2F1c2UgdGhleSdyZSBnZW5lcmFsbHkgY29uc2lkZXJlZCBidWdzLCBhbmQgdGhlIGZ1enplciBsb3NlcyBjb250cm9sIG9uY2UgYSBwYW5pYyBvY2N1cnMgKHJlYm9vdHMgdGhlIFZNLCBsb3NpbmcgdGhlIHNlc3Npb24pLiBUaGUgYWltIGlzIHRvIGZpbmQgbm9ybWFsIGtlcm5lbCBidWdzLiBJZiBhIHBhbmljICpkb2VzKiBoYXBwZW4sIHRoZSBmdXp6ZXIgbG9ncyB0aGUgY3Jhc2ggYW5kIHJlc3RhcnRzLCBlZmZlY3RpdmVseSBub3QgZnV6emluZyB0aGUgcGFuaWMgaGFuZGxlciBpdHNlbGYuXG5cblRoZSBgY3Jhc2hfemVyb2l6ZWAgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSAqb25seSogaWYgYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkICphbmQqIGEgcGFuaWMgaXMgdHJpZ2dlcmVkLiBXaGlsZSBzeXprYWxsZXIgKmNvdWxkKiBwb3RlbnRpYWxseSB1c2UgYGtleGVjX2xvYWRgIHRvIGxvYWQgYSBjcmFzaCBrZXJuZWwgYW5kIHRoZW4gdHJpZ2dlciBhIHBhbmljIHZpYSBTeXNScS1jIG9yIGEgY3JhZnRlZCBzeXN0ZW0gY2FsbCAob3IgYnkgdHJpZ2dlcmluZyBhIGJ1ZyB3aXRoIGNyYXNoKSwgc3l6a2FsbGVyIGRvZXNuJ3QgdXN1YWxseSBkbyB0aGlzLiBJdCdzIG5vdCB0aGUgcHJpbWFyeSBmb2N1cy4gRnV6emluZyBwYW5pYyBoYW5kbGVycyBpcyBuaWNoZSBiZWNhdXNlIHRoZSBmdXp6ZXIgbG9zZXMgY29udHJvbCBhZnRlciB0aGUgcGFuaWM7IHRoaXMgbWFrZXMgZWZmZWN0aXZlIGNvdmVyYWdlLWd1aWRlZCBmdXp6aW5nIGRpZmZpY3VsdC5cblxuVGhlIG5vdGlmaWVycyB3aXRoaW4gdGhpcyBwYXRjaCBhcmUgYHNlY3JldG1lbV9jcmFzaF96ZXJvaXplYCBhbmQgdmFyaW91cyBga2V5X2NyYXNoX3plcm9pemVgIGZ1bmN0aW9ucy4gVGhleSdyZSBleGVjdXRlZCBpbiB0aGUgcGFuaWMgY29udGV4dC4gVG8gZnV6eiB0aGVtLCB3ZSdkIG5lZWQgdG8gbG9hZCBhIGNyYXNoIGtlcm5lbCwgdHJpZ2dlciBhIHBhbmljLCBhbmQgZW5zdXJlIHNlY3JldHMgb3Iga2V5IG1hdGVyaWFsIGFyZSBhbGxvY2F0ZWQuIFRoZSBwcm9tcHQgYWxzbyBzdGF0ZXMgdG8gZXhjbHVkZSBjZXJ0YWluIHNjZW5hcmlvcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIGV0Yy4sIHRoYXQgb25seSBleGVjdXRlIGR1cmluZyBkcml2ZXIgdW5iaW5kaW5nLiBUaGlzIGNhc2UgaXMgc2ltaWxhciwgYmVjYXVzZSBpdCdzIG9ubHkgZXhlY3V0ZWQgb24gY3Jhc2guXG5cblRoZSBwcm9tcHQsIGhvd2V2ZXIsIGZvY3VzZXMgb24gKnJlYWNoYWJpbGl0eSosIGFuZCB0aGlzIGlzIHJlYWNoYWJsZSwgKmV2ZW4gaWYgaGFyZCB0byBmdXp6Ki4gQ29kZSB0aGF0IGlzIGV4cGxpY2l0bHkgdW5yZWFjaGFibGUsIG9yIHRoYXQgb25seSBleGVjdXRlcyBpbiB1bnZpcnR1YWxpemFibGUgZW52aXJvbm1lbnRzLCBpcyB3aGF0IGlzIHRvIGJlIGV4Y2x1ZGVkLlxuXG5Tbywgd2hpbGUgaXQgaXMgKmRpZmZpY3VsdCogdG8gZnV6eiB0aGlzIHBhdGggdXNpbmcgc3l6a2FsbGVy4oCZcyBjdXJyZW50IHdvcmtmbG93IChiZWNhdXNlIGl0IHJlcXVpcmVzIGRlbGliZXJhdGUgcGFuaWMgdHJpZ2dlcmluZyBhbmQgYSBkaWZmZXJlbnQgc2V0dXApLCBpdCdzICp0ZWNobmljYWxseSogcmVhY2hhYmxlLiBUaGUgZmVhdHVyZSBpcyBmdW5jdGlvbmFsLCBhbmQgdGhpcyBjb2RlIHplcm9pemVzIG1lbW9yeSBmb3Igc2VjdXJpdHkgcHVycG9zZXMuIFRoZXJlZm9yZSwgZXZlbiB0aG91Z2ggdGhlIHByaW1hcnkgZnV6emluZyBiZW5lZml0IGlzIGxvd2VyLCBpdCBzaG91bGQgYmUgbWFya2VkIGFzIHBvdGVudGlhbGx5IGZ1enplZCBiZWNhdXNlIGl0IG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljLiBUaHVzLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgYFdvcnRoRnV6emluZz10cnVlYC5cblxuRm9yIHN5emthbGxlciB0byB0YXJnZXQgdGhpcywgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5OiBgQ09ORklHX0NSQVNIX1pFUk9JWkVgLCBgQ09ORklHX0NSQVNIX0RVTVBgLCBgQ09ORklHX0tFWEVDX0NPUkVgLCBhbmQgcHJvYmFibHkgYENPTkZJR19TRUNSRVRNRU1gLCBgQ09ORklHX0tFWVNgLCBgQ09ORklHX0VOQ1JZUFRFRF9LRVlTYCwgYENPTkZJR19UUlVTVEVEX0tFWVNgIGFuZCBgQ09ORklHX0JJR19LRVlTYC5cblxuVGhlIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIHN5bWJvbHMgZm9yIGZ1enppbmcgYXJlOiBgY3Jhc2hfemVyb2l6ZWAsIGBzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZWAsIGBrZXlfY3Jhc2hfemVyb2l6ZWAsIGBiaWdfa2V5X3plcm9pemVgLCBgZW5jcnlwdGVkX3plcm9pemVgLCBgdHJ1c3RlZF96ZXJvaXplYCwgYW5kIGB1c2VyX3plcm9pemVgLiBIb3dldmVyLCBgY3Jhc2hfemVyb2l6ZWAgaXMgc3RhdGljIHNvIGl0IG1pZ2h0IGJlIGlubGluZWQuIFRoZSBvdGhlcnMgYXJlIGZ1bmN0aW9uIHBvaW50ZXJzLlxuXG5XaGlsZSB0aGUgcHJpbWFyeSBnb2FsIG9mIHN5emthbGxlciBpcyB0byBmaW5kIGJ1Z3MgaW4gKm5vcm1hbCoga2VybmVsIG9wZXJhdGlvbiwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgaXMgc2VjdXJpdHktcmVsZXZhbnQuIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYCB3aXRoIHRoZSBsaXN0IG9mIHN5bWJvbHMgYW5kIGNvbmZpZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NzQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjUwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MDYuMDgzNTA1ODk5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDMzMTIwNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNFQ1JFVE1FTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTEzMzg9Y29uZmlnIE1FTUZEX0NSRUFURVxcbi0tXFxubW0vS2NvbmZpZy0xMzQwLVxcbm1tL0tjb25maWc6MTM0MTpjb25maWcgU0VDUkVUTUVNXFxubW0vS2NvbmZpZy0xMzQyLVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNDowMTowNy44ODY4MjI5MDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU0NjE3MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBrZXkgY29uY2VwdHMuXG5cbioqVmVyaWZ5aW5nIEtleSBTZWN1cml0eSBNZWFzdXJlcyoqXG5cbkFscmlnaHQsIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgYFNFQ1JFVE1FTWAgY2hlY2tzIG91dCDigJMgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gbWV0aG9kaWNhbGx5IHJldmlldyB0aGUgb3RoZXIga2V5IGFyZWFzIHdlIGRpc2N1c3NlZDogYEJJR19LRVlTYCwgYEVOQ1JZUFRFRF9LRVlTYCwgYW5kIGBUUlVTVEVEX0tFWVNgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBpbXBsZW1lbnRhdGlvbiBhbGlnbnMgd2l0aCBiZXN0IHByYWN0aWNlcyBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gZ2FwcyBpbiB0aGUgb3ZlcmFsbCBzZWN1cml0eSBwb3N0dXJlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHNwZWNpZmljcyBvZiBlYWNoIHRvIGNvbmZpcm0gdGhleSBhcmUgY29uZmlndXJlZCBhbmQgb3BlcmF0aW5nIGluIHRoZSBtb3N0IHNlY3VyZSB3YXkgcG9zc2libGUsIGFuZCB0aGF0IHRoZXkgYXJlIGFwcHJvcHJpYXRlbHkgaW50ZWdyYXRlZCBhbmQgbWFuYWdlZC4gVGhlIGdvYWwgaXMgYSBjb21wcmVoZW5zaXZlIGFuZCByb2J1c3Qgc2VjdXJpdHkgbW9kZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzc3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MTAuOTQxNDQyNjA2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Mjk4NzQ4NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJJR19LRVlTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNlY3VyaXR5L2tleXMvS2NvbmZpZz00Mz1jb25maWcgUEVSU0lTVEVOVF9LRVlSSU5HU1xcbi0tXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTU4LVxcbnNlY3VyaXR5L2tleXMvS2NvbmZpZzo1OTpjb25maWcgQklHX0tFWVNcXG5zZWN1cml0eS9rZXlzL0tjb25maWctNjAtXFx0Ym9vbCBcXFwiTGFyZ2UgcGF5bG9hZCBrZXlzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNDowMToxMi43NzEzMjc2MjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjUyNTc3MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MTEwNTIsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA0OjAxOjE0LjQyMzkwNzM1MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg5MDYzMjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFTkNSWVBURURfS0VZU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzZWN1cml0eS9rZXlzL0tjb25maWc9ODI9ZW5kaWZcXG5zZWN1cml0eS9rZXlzL0tjb25maWctODMtXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnOjg0OmNvbmZpZyBFTkNSWVBURURfS0VZU1xcbnNlY3VyaXR5L2tleXMvS2NvbmZpZy04NS1cXHR0cmlzdGF0ZSBcXFwiRU5DUllQVEVEIEtFWVNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA0OjAxOjE2LjExMjk3NTY4M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NTgwMTE4NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoxMTE0NSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MTcuODcwOTkwMTc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjUzNTgwNjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUUlVTVEVEX0tFWVNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2VjdXJpdHkva2V5cy9LY29uZmlnPTU5PWNvbmZpZyBCSUdfS0VZU1xcbi0tXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTY5LVxcbnNlY3VyaXR5L2tleXMvS2NvbmZpZzo3MDpjb25maWcgVFJVU1RFRF9LRVlTXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTcxLVxcdHRyaXN0YXRlIFxcXCJUUlVTVEVEIEtFWVNcXFwiXFxuLS1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnPTQ9Y29uZmlnIEhBVkVfVFJVU1RFRF9LRVlTX0RFQlVHXFxuLS1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTYtXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZzo3OmNvbmZpZyBUUlVTVEVEX0tFWVNfREVCVUdcXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTgtXFx0Ym9vbCBcXFwiRGVidWcgdHJ1c3RlZCBrZXlzXFxcIlxcbi0tXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy0yMS1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjIyOmNvbmZpZyBUUlVTVEVEX0tFWVNfVFBNXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy0yMy1cXHRib29sIFxcXCJUUE0tYmFzZWQgdHJ1c3RlZCBrZXlzXFxcIlxcbi0tXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy00MC1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjQxOmNvbmZpZyBUUlVTVEVEX0tFWVNfVEVFXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJURUUtYmFzZWQgdHJ1c3RlZCBrZXlzXFxcIlxcbi0tXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy01MC1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjUxOmNvbmZpZyBUUlVTVEVEX0tFWVNfQ0FBTVxcbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWctNTItXFx0Ym9vbCBcXFwiQ0FBTS1iYXNlZCB0cnVzdGVkIGtleXNcXFwiXFxuLS1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTYxLVxcbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWc6NjI6Y29uZmlnIFRSVVNURURfS0VZU19EQ1BcXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTYzLVxcdGJvb2wgXFxcIkRDUC1iYXNlZCB0cnVzdGVkIGtleXNcXFwiXFxuLS1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTcwLVxcbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWc6NzE6Y29uZmlnIFRSVVNURURfS0VZU19QS1dNXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy03Mi1cXHRib29sIFxcXCJQS1dNLWJhc2VkIHRydXN0ZWQga2V5c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MTkuNTI0NTgxNDMzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjgxNjE3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGluaXRpYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycyoqXG5cbkFscmlnaHQsIHRoZSBgVFJVU1RFRF9LRVlTYCBzZXR0aW5nIGFwcGVhcnMgdG8gYmUgYXMgZXhwZWN0ZWQ7IHRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBOb3csIGxldCdzIHBpdm90IGFuZCB2ZXJpZnkgdGhlIHZhbGlkaXR5IG9mIHRoZSBgQ1JBU0hfRFVNUGAgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuIElzIHRoaXMgdGhlIHNwZWNpZmljIGNvbmZpZyB3ZSdyZSBhY3R1YWxseSBsb29raW5nIGZvcj8gTmVlZCB0byBjb25maXJtIGl0J3MgYmVoYXZpbmcgYXMgaW50ZW5kZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjQ2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MjIuNDUyNzQ2NzM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY0OTA5Mzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDUkFTSF9EVU1QXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9LY29uZmlnLmtleGVjPTg5PWNvbmZpZyBLRVhFQ19KVU1QXFxuLS1cXG5rZXJuZWwvS2NvbmZpZy5rZXhlYy05Ni1cXG5rZXJuZWwvS2NvbmZpZy5rZXhlYzo5Nzpjb25maWcgQ1JBU0hfRFVNUFxcbmtlcm5lbC9LY29uZmlnLmtleGVjLTk4LVxcdGJvb2wgXFxcImtlcm5lbCBjcmFzaCBkdW1wc1xcXCJcXG4tLVxcbmtlcm5lbC9LY29uZmlnLmtleGVjPTEyOT1jb25maWcgQ1JBU0hfRE1fQ1JZUFRfQ09ORklHU1xcbi0tXFxua2VybmVsL0tjb25maWcua2V4ZWMtMTM1LVxcbmtlcm5lbC9LY29uZmlnLmtleGVjOjEzNjpjb25maWcgQ1JBU0hfRFVNUF9LVU5JVF9URVNUXFxua2VybmVsL0tjb25maWcua2V4ZWMtMTM3LVxcdHRyaXN0YXRlIFxcXCJVbml0IFRlc3RzIGZvciBrZXJuZWwgY3Jhc2ggZHVtcHNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MjQuMDE3NjYyNjIzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4Nzk1OTQyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkNvbmZpZ3VyYXRpb24gQ2hlY2tsaXN0KipcblxuUmlnaHQsIGBDUkFTSF9EVU1QYCwgY29uZmlybWVkLiBUaGF0J3MgdGhlIGNvcnJlY3QgZmxhZy4gQW5kIGdvb2QsIGBDUkFTSF9aRVJPSVpFYCBpcyB0aGUgbmV3IHNldHRpbmcgdG8gZW1wbG95LlxuXG5Ob3csIGxldCdzIGp1c3QgZG8gYSBxdWljayBzY2FuIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlbid0IG92ZXJsb29rZWQgYW55IG90aGVyIGNydWNpYWwgY29uZmlndXJhdGlvbnMuIEFoYSwgeWVzLCB3ZSBjYW4ndCBmb3JnZXQgYEtFWVNgLiBXZSdsbCBkZWZpbml0ZWx5IG5lZWQgdGhhdCBvbmUgZm9yIHRoZSBrZXkgbWFuYWdlbWVudCBzZXR1cC4gT2theSwgbW92aW5nIG9uLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTU4LCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MjYuODk3MjYwNTk4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjcxNDU3ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLRVlTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY2xvY2tzb3VyY2UvS2NvbmZpZz0yNDI9Y29uZmlnIE5TUElSRV9USU1FUlxcbi0tXFxuZHJpdmVycy9jbG9ja3NvdXJjZS9LY29uZmlnLTI0Ny1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL0tjb25maWc6MjQ4OmNvbmZpZyBLRVlTVE9ORV9USU1FUlxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiS2V5c3RvbmUgdGltZXIgZHJpdmVyXFxcIiBpZiBDT01QSUxFX1RFU1RcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnPTM5Mz1jb25maWcgSVJRX0NST1NTQkFSXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy00MDAtXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc6NDAxOmNvbmZpZyBLRVlTVE9ORV9JUlFcXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy00MDItXFx0dHJpc3RhdGUgXFxcIktleXN0b25lIDIgSVJRIGNvbnRyb2xsZXIgSVBcXFwiXFxuLS1cXG5kcml2ZXJzL3JlbW90ZXByb2MvS2NvbmZpZz0xMjE9Y29uZmlnIERBOFhYX1JFTU9URVBST0NcXG4tLVxcbmRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnLTE0MS1cXG5kcml2ZXJzL3JlbW90ZXByb2MvS2NvbmZpZzoxNDI6Y29uZmlnIEtFWVNUT05FX1JFTU9URVBST0NcXG5kcml2ZXJzL3JlbW90ZXByb2MvS2NvbmZpZy0xNDMtXFx0dHJpc3RhdGUgXFxcIktleXN0b25lIFJlbW90ZXByb2Mgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvc29jL3RpL0tjb25maWc9OT1pZiBTT0NfVElcXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnLTEwLVxcbmRyaXZlcnMvc29jL3RpL0tjb25maWc6MTE6Y29uZmlnIEtFWVNUT05FX05BVklHQVRPUl9RTVNTXFxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy0xMi1cXHR0cmlzdGF0ZSBcXFwiS2V5c3RvbmUgUXVldWUgTWFuYWdlciBTdWIgU3lzdGVtXFxcIlxcbi0tXFxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnOjIzOmNvbmZpZyBLRVlTVE9ORV9OQVZJR0FUT1JfRE1BXFxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVEkgS2V5c3RvbmUgTmF2aWdhdG9yIFBhY2tldCBETUEgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3BoeS9LY29uZmlnPTIzPWNvbmZpZyBGU0xfVVNCMl9PVEdcXG4tLVxcbmRyaXZlcnMvdXNiL3BoeS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvdXNiL3BoeS9LY29uZmlnOjMxOmNvbmZpZyBLRVlTVE9ORV9VU0JfUEhZXFxuZHJpdmVycy91c2IvcGh5L0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIktleXN0b25lIFVTQiBQSFkgRHJpdmVyXFxcIlxcbi0tXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTUtXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnOjY6bWVudWNvbmZpZyBLRVlTXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTctXFx0Ym9vbCBcXFwiRW5hYmxlIGFjY2VzcyBrZXkgcmV0ZW50aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5zZWN1cml0eS9rZXlzL0tjb25maWc9MjQ9aWYgS0VZU1xcbnNlY3VyaXR5L2tleXMvS2NvbmZpZy0yNS1cXG5zZWN1cml0eS9rZXlzL0tjb25maWc6MjY6Y29uZmlnIEtFWVNfUkVRVUVTVF9DQUNIRVxcbnNlY3VyaXR5L2tleXMvS2NvbmZpZy0yNy1cXHRib29sIFxcXCJFbmFibGUgdGVtcG9yYXJ5IGNhY2hpbmcgb2YgdGhlIGxhc3QgcmVxdWVzdF9rZXkoKSByZXN1bHRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA0OjAxOjI4LjU2ODcyNDE3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTg0ODg4OTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFplcm9pemUgRnVuY3Rpb24gU3ltYm9scyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdDogYEtFWVNgIGlzIGRlZmluaXRlbHkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIE5vdywgSSBuZWVkIHRvIGxpc3QgdGhlIHN5bWJvbHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSB6ZXJvaXplIGZ1bmN0aW9ucy4gTGV0J3Mgc2VlLi4uIEkndmUgaWRlbnRpZmllZDogYGNyYXNoX3plcm9pemVgLCBgc2VjcmV0bWVtX2NyYXNoX3plcm9pemVgLCBga2V5X2NyYXNoX3plcm9pemVgLCBgYmlnX2tleV96ZXJvaXplYCwgYGVuY3J5cHRlZF96ZXJvaXplYCwgYHRydXN0ZWRfemVyb2l6ZWAsIGFuZCBgdXNlcl96ZXJvaXplYC5cblxuQWhhISBOb3cgSSByZW1lbWJlciB0aGUgc3RhdGljIGRlZmluaXRpb25zLiBgdXNlcl96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYHNlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmNgLCBgYmlnX2tleV96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYHNlY3VyaXR5L2tleXMvYmlnX2tleS5jYCwgYGVuY3J5cHRlZF96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYHNlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNgLCBgdHJ1c3RlZF96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYHNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jYCwgYHNlY3JldG1lbV9jcmFzaF96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYG1tL3NlY3JldG1lbS5jYCwgYGtleV9jcmFzaF96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYHNlY3VyaXR5L2tleXMva2V5LmNgLCBhbmQgZmluYWxseSwgYGNyYXNoX3plcm9pemVgIGlzIHN0YXRpYyBpbiBga2VybmVsL2NyYXNoX2NvcmUuY2AuXG5cblJpZ2h0LCB0aGUgcHJvbXB0IGlzIHB1c2hpbmcgbWUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gSG93ZXZlciwgdGhlc2UgemVyb2l6ZSBmdW5jdGlvbnMgYXJlICp1c2VkKiB2aWEgZnVuY3Rpb24gcG9pbnRlcnMuIFRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4sIHdoaWNoIG1lYW5zIHRoZSBjb21waWxlciAqd29uJ3QqIGlubGluZSB0aGVtLiBUaGV5J2xsIGhhdmUgdGhlaXIgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFNvLCB0aGUgc3RhdGljIGRlY2xhcmF0aW9ucyBhcmVuJ3QgYSBjb25jZXJuIGhlcmUuXG5cbldhaXQsIGBjcmFzaF96ZXJvaXplYCBpcyBjYWxsZWQgZGlyZWN0bHksIGJ1dCBpdCBpc24ndCBhbiBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24uIEkgaGF2ZSB0byB0aGluaywgaXQgKm1pZ2h0KiBiZSBpbmxpbmVkIGludG8gYF9fY3Jhc2hfa2V4ZWNgLlxuXG5Ib3dldmVyLCB0aGUgcHJvYmxlbSBzYXlzIG5vdCB0byBpbmNsdWRlIGZ1bmN0aW9ucyB3aGljaCBhcmUgd2VsbC1rbm93biwgYW5kIGBfX2NyYXNoX2tleGVjYCBzZWVtcyB3ZWxsIGtub3duLiBTbywgSSB3aWxsIHN0aWNrIHRvIGp1c3QgdGhlIHplcm9pemUgZnVuY3Rpb25zLlxuXG5JJ3ZlIHNjYW5uZWQgdGhlIGNvZGViYXNlIGFuZCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHBhbmljLXRpbWUgc2VjcmV0IHdpcGluZyBsb2dpYyB0aGF0IG5lZWQgdG8gYmUgbGlzdGVkLlxuXG5Ob3csIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgZGVjaXNpb24gb24gYFdvcnRoRnV6emluZ2AuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBmdW5jdGlvbmFsIGxvZ2ljOiB3aXBpbmcgc2VjcmV0cyBvbiBhIHBhbmljLiBUaGlzIGlzIGEgc2VjdXJpdHkgZmVhdHVyZSwgdHJpZ2dlcmVkIHByaW1hcmlseSBieSBga2V4ZWNfbG9hZGAgY29tYmluZWQgd2l0aCBhIHBhbmljLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGF0IGl0IGRvZXNuJ3QgY3Jhc2ggaW4gdW5leHBlY3RlZCB3YXlzIG9yIGludHJvZHVjZSBkZWFkbG9ja3MsIGFsdGhvdWdoIGl0IGlzIGEgcGFuaWMgaGFuZGxlci4gVGhlIHNwaW5sb2NrIGxvZ2ljIGlzIHRoZXJlIHNwZWNpZmljYWxseSB0byBhdm9pZCBkZWFkbG9ja3MuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJ2xsIHN0aWNrIHdpdGggYFdvcnRoRnV6emluZz10cnVlYC5cblxuU28sIHRoZSBjb25maWd1cmF0aW9ucyBhbmQgc3ltYm9scyBhcmU6XG5cbioqQ29uZmlnczoqKlxuYENSQVNIX1pFUk9JWkVgXG5gQ1JBU0hfRFVNUGBcbmBTRUNSRVRNRU1gXG5gS0VZU2BcbmBCSUdfS0VZU2BcbmBFTkNSWVBURURfS0VZU2BcbmBUUlVTVEVEX0tFWVNgXG5cbioqU3ltYm9sczoqKlxuYGNyYXNoX3plcm9pemVgXG5gc2VjcmV0bWVtX2NyYXNoX3plcm9pemVgXG5ga2V5X2NyYXNoX3plcm9pemVgXG5gYmlnX2tleV96ZXJvaXplYFxuYGVuY3J5cHRlZF96ZXJvaXplYFxuYHRydXN0ZWRfemVyb2l6ZWBcbmB1c2VyX3plcm9pemVgXG5cbkxldCdzIGRvdWJsZSBjaGVjay4uLiBXaGlsZSBpdCdzIHByb2JhYmx5IG5vdCBpbmxpbmVkIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGRpcmVjdGx5IGFuZCBpc24ndCB1c2VkIGFzIGEgaGVscGVyIGZ1bmN0aW9uLiBJIHdpbGwgYWRkIGBfX2NyYXNoX2tleGVjYCBqdXN0IGluIGNhc2UsIGJ1dCBsZXQgbWUgY2hlY2sgYWdhaW4gdG8gYmUgc3VyZS4uLiBMZXQgbWUgZG8gYSBxdWljayBzY2FuIG9mIGBfX2NyYXNoX2tleGVjYC4uLiBPa2F5LCBJJ20gZ29pbmcgdG8gc3RpY2sgdG8gdGhlIHplcm9pemUgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjczOSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNDowMTozOC43NTM2MTU3MzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Njg3NjczNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhdGljIHZvaWQgY3Jhc2hfemVyb2l6ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvY3Jhc2hfY29yZS5jPTM5PUVYUE9SVF9TWU1CT0xfR1BMKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7XFxua2VybmVsL2NyYXNoX2NvcmUuYy00MC1cXG5rZXJuZWwvY3Jhc2hfY29yZS5jOjQxOnN0YXRpYyB2b2lkIGNyYXNoX3plcm9pemUodm9pZClcXG5rZXJuZWwvY3Jhc2hfY29yZS5jLTQyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6NDAuNDIyMzg4NzU2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MjI0MjE1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipNeSBQcm9jZXNzaW5nIFBpcGVsaW5lKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZGF0YSwgYW5kIHRoZSBpbW1lZGlhdGUgaW1wcmVzc2lvbiBpcyB0aGF0IGl0J3MgZXNzZW50aWFsbHkgYSBmaXhlZCBzbmFwc2hvdCDigJMgc3RhdGljLiBJdCBjb3VsZCBiZSBlbWJlZGRlZCBkaXJlY3RseSB3aXRoaW4gdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgKGlubGluZWQpLCBidXQgZnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhhdCdzIG5vdCBjcml0aWNhbC4gVGhlIGltcG9ydGFudCB0aGluZyBpcyBpdHMgaW1tdXRhYmlsaXR5IGF0IHRoaXMgc3RhZ2UuIEkgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBleHRlcm5hbCBkZXBlbmRlbmNpZXMgb3IgZHluYW1pYyB1cGRhdGluZyBmb3IgdGhlIG5leHQgc3RlcC5cblxuTXkgbmV4dCBvcGVyYXRpb24gd2lsbCBiZSB0byB1c2UgYSBkZXNpZ25hdGVkIGZ1bmN0aW9uIG9yIG1ldGhvZC4gSSdsbCBpbnZva2UsIG9yIGNhbGwsICBgc2V0LXJlc3VsdHNgLiBUaGlzIGZ1bmN0aW9uIGxpa2VseSBoYW5kbGVzIHRoZSBjb3JlIHByb2Nlc3Mgb2YgaW50ZWdyYXRpbmcgdGhlIHN0YXRpYyBkYXRhLCB0aGUgaW1tdXRhYmxlIGRhdGEsICBpbnRvIHRoZSByZXN0IG9mIHRoZSBjdXJyZW50IHN0YXRlIGFuZCB0aGVuIHVwZGF0aW5nIHRoZSB3b3JraW5nIHJlc3VsdHMuIFRoaXMgY291bGQgaW52b2x2ZSBhbnl0aGluZyBmcm9tIHNpbXBseSBhc3NpZ25pbmcgdGhlIGRhdGEgdG8gYSB2YXJpYWJsZSwgY2FjaGluZyB0aGUgcmVzdWx0LCBvciBwYXNzaW5nIGl0IHRvIHRoZSBuZXh0IG9wZXJhdGlvbiBpbiBhIGJpZ2dlciBwaXBlbGluZS4gVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpY3Mgb2YgYHNldC1yZXN1bHRzYCBhcmUgbm90IGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgY29udGV4dCwgb25seSBpdHMgZXhwZWN0ZWQgcHVycG9zZS4gVGhlIGN1cnJlbnQgZm9jdXMgaXMgdG8gZ2V0IHRoZSBzdGF0aWMgaW5wdXQgaW50byB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM1NSwiT3V0cHV0VG9rZW5zIjoxOTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNDowMTo0Ny4wNDQ4MTI4MzlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODU0Nzc2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ1JBU0hfWkVST0laRVwiLFxuICAgIFwiQ1JBU0hfRFVNUFwiLFxuICAgIFwiU0VDUkVUTUVNXCIsXG4gICAgXCJLRVlTXCIsXG4gICAgXCJCSUdfS0VZU1wiLFxuICAgIFwiRU5DUllQVEVEX0tFWVNcIixcbiAgICBcIlRSVVNURURfS0VZU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNyYXNoX3plcm9pemVcIixcbiAgICBcInNlY3JldG1lbV9jcmFzaF96ZXJvaXplXCIsXG4gICAgXCJrZXlfY3Jhc2hfemVyb2l6ZVwiLFxuICAgIFwiYmlnX2tleV96ZXJvaXplXCIsXG4gICAgXCJlbmNyeXB0ZWRfemVyb2l6ZVwiLFxuICAgIFwidHJ1c3RlZF96ZXJvaXplXCIsXG4gICAgXCJ1c2VyX3plcm9pemVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZlYXR1cmUgdG8gemVyb2l6ZSBzZW5zaXRpdmUgc2VjcmV0cyAoa2V5cyBhbmQgc2VjcmV0bWVtKSBkdXJpbmcgYSBrZXJuZWwgcGFuaWMvY3Jhc2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgZXhlY3V0ZXMgd2hlbiBhIGNyYXNoIGtlcm5lbCBpcyBsb2FkZWQgYW5kIGEgcGFuaWMgb2NjdXJzLiBGdXp6aW5nIGNhbiBoZWxwIGVuc3VyZSB0aGVzZSB0ZWFyZG93biBwYXRocyBkbyBub3QgaW50cm9kdWNlIHNlY29uZGFyeSBmYXVsdHMgb3IgZGVhZGxvY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNSQVNIX1pFUk9JWkVcIixcbiAgICBcIkNSQVNIX0RVTVBcIixcbiAgICBcIlNFQ1JFVE1FTVwiLFxuICAgIFwiS0VZU1wiLFxuICAgIFwiQklHX0tFWVNcIixcbiAgICBcIkVOQ1JZUFRFRF9LRVlTXCIsXG4gICAgXCJUUlVTVEVEX0tFWVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjcmFzaF96ZXJvaXplXCIsXG4gICAgXCJzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZVwiLFxuICAgIFwia2V5X2NyYXNoX3plcm9pemVcIixcbiAgICBcImJpZ19rZXlfemVyb2l6ZVwiLFxuICAgIFwiZW5jcnlwdGVkX3plcm9pemVcIixcbiAgICBcInRydXN0ZWRfemVyb2l6ZVwiLFxuICAgIFwidXNlcl96ZXJvaXplXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmZWF0dXJlIHRvIHplcm9pemUgc2Vuc2l0aXZlIHNlY3JldHMgKGtleXMgYW5kIHNlY3JldG1lbSkgZHVyaW5nIGEga2VybmVsIHBhbmljL2NyYXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGV4ZWN1dGVzIHdoZW4gYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkIGFuZCBhIHBhbmljIG9jY3Vycy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlc2UgdGVhcmRvd24gcGF0aHMgZG8gbm90IGludHJvZHVjZSBzZWNvbmRhcnkgZmF1bHRzIG9yIGRlYWRsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjs8cn[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-02 03:43:47 +0000 UTC FinishedAt: 2026-08-02 04:01:49 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CRASH_ZEROIZE", "CRASH_DUMP", "SECRETMEM", "KEYS", "BIG_KEYS", "ENCRYPTED_KEYS", "TRUSTED_KEYS" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "linux-next", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next", "commit_hash": "415606a7be939835db9b0d6b711887586646346d", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "CRASH_ZEROIZE", "CRASH_DUMP", "SECRETMEM", "KEYS", "BIG_KEYS", "ENCRYPTED_KEYS", "TRUSTED_KEYS" ], "series_id": "77e6fa34-a246-4cd0-9a52-90e481ae6f2e" }, "track": "KASAN", "fuzz": { "focus": null, "focus_symbols": [ "crash_zeroize", "secretmem_crash_zeroize", "key_crash_zeroize", "big_key_zeroize", "encrypted_zeroize", "trusted_zeroize", "user_zeroize" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db" ], "skip_cover_check": true, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAwPC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MW08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0NSQVNIX1pFUk9JWkUmIzM0OywKICAgICYjMzQ7Q1JBU0hfRFVNUCYjMzQ7LAogICAgJiMzNDtTRUNSRVRNRU0mIzM0OywKICAgICYjMzQ7S0VZUyYjMzQ7LAogICAgJiMzNDtCSUdfS0VZUyYjMzQ7LAogICAgJiMzNDtFTkNSWVBURURfS0VZUyYjMzQ7LAogICAgJiMzNDtUUlVTVEVEX0tFWVMmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtjcmFzaF96ZXJvaXplJiMzNDssCiAgICAmIzM0O3NlY3JldG1lbV9jcmFzaF96ZXJvaXplJiMzNDssCiAgICAmIzM0O2tleV9jcmFzaF96ZXJvaXplJiMzNDssCiAgICAmIzM0O2JpZ19rZXlfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDtlbmNyeXB0ZWRfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDt0cnVzdGVkX3plcm9pemUmIzM0OywKICAgICYjMzQ7dXNlcl96ZXJvaXplJiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIGludHJvZHVjZXMgYSBuZXcgZmVhdHVyZSB0byB6ZXJvaXplIHNlbnNpdGl2ZSBzZWNyZXRzIChrZXlzIGFuZCBzZWNyZXRtZW0pIGR1cmluZyBhIGtlcm5lbCBwYW5pYy9jcmFzaC4gVGhpcyBpcyBmdW5jdGlvbmFsIGNvZGUgdGhhdCBleGVjdXRlcyB3aGVuIGEgY3Jhc2gga2VybmVsIGlzIGxvYWRlZCBhbmQgYSBwYW5pYyBvY2N1cnMuIEZ1enppbmcgY2FuIGhlbHAgZW5zdXJlIHRoZXNlIHRlYXJkb3duIHBhdGhzIGRvIG5vdCBpbnRyb2R1Y2Ugc2Vjb25kYXJ5IGZhdWx0cyBvciBkZWFkbG9ja3MuJiMzNDssCiAgJiMzNDtXb3J0aEZ1enppbmcmIzM0OzogdHJ1ZQp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MS8xPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDA8L3RkPgoJCQk8dGQ+YWN0aW9uPC90ZD4KCQkJPHRkPnJlYWQtcGF0Y2gtZGlmZjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O1BhdGNoRGlmZiYjMzQ7OiAmIzM0O2NvbW1pdCA1YjQ0N2YxZDdjYTE2MDYxNTQxNjVmY2QwZWE0M2QxZGNiYWEwZTM5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFN1biBBdWcgMiAwNDowMDozNiAyMDI2ICYjNDM7MDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL2tleGVjLmMgYi9kcml2ZXJzL29mL2tleGVjLmNcbmluZGV4IDAyOTkwM2I5ODZjYmQuLjM2NjM1ZjZjYjkwMDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL29mL2tleGVjLmNcbiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvb2Yva2V4ZWMuY1xuQEAgLTI0LDcgJiM0MzsyNCw3IEBAXG4gXG4gLypcbiAgKiBBZGRpdGlvbmFsIHNwYWNlIG5lZWRlZCBmb3IgdGhlIEZEVCBidWZmZXIgc28gdGhhdCB3ZSBjYW4gYWRkIGluaXRyZCxcbi0gKiBib290YXJncywga2FzbHItc2VlZCwgcm5nLXNlZWQsIHVzZWFibGUtbWVtb3J5LXJhbmdlIGFuZCBlbGZjb3JlaGRyLlxuJiM0MzsgKiBib290YXJncywga2FzbHItc2VlZCwgcm5nLXNlZWQsIHVzYWJsZS1tZW1vcnktcmFuZ2UgYW5kIGVsZmNvcmVoZHIuXG4gICovXG4gI2RlZmluZSBGRFRfRVhUUkFfU1BBQ0UgMHgxMDAwXG4gXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jcmFzaF9jb3JlLmggYi9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaFxuaW5kZXggYmMwODcxMjRjZDc4ZS4uNWM3MjA3YzBiYmExNCAxMDA2NDRcbi0tLSBhL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oXG4mIzQzOyYjNDM7JiM0MzsgYi9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaFxuQEAgLTUsNiAmIzQzOzUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbmthZ2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2VsZmNvcmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2VsZi5oXHUwMDNlXG4mIzQzOyNpbmNsdWRlIFx1MDAzY2xpbnV4L25vdGlmaWVyLmhcdTAwM2VcbiBcbiBzdHJ1Y3Qga2ltYWdlO1xuIFxuQEAgLTM0LDYgJiM0MzszNSwxMCBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9rZXhlY19wcm90ZWN0X2NyYXNoa3Jlcyh2b2lkKSB7IH1cbiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9rZXhlY191bnByb3RlY3RfY3Jhc2hrcmVzKHZvaWQpIHsgfVxuICNlbmRpZlxuIFxuJiM0MzsjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbiYjNDM7ZXh0ZXJuIHN0cnVjdCBhdG9taWNfbm90aWZpZXJfaGVhZCBjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3Q7XG4mIzQzOyNlbmRpZlxuJiM0MztcbiAjaWZuZGVmIGFyY2hfY3Jhc2hfaGFuZGxlX2hvdHBsdWdfZXZlbnRcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9jcmFzaF9oYW5kbGVfaG90cGx1Z19ldmVudChzdHJ1Y3Qga2ltYWdlICppbWFnZSwgdm9pZCAqYXJnKSB7IH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmggYi9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmhcbmluZGV4IGJiOTdiZDNlNWFmNGYuLmZmMDk0NGNlMzY4ZjkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmhcbiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaFxuQEAgLTEyMiw2ICYjNDM7MTIyLDE1IEBAIHN0cnVjdCBrZXlfdHlwZSB7XG4gXHQvKiBjbGVhciB0aGUgZGF0YSBmcm9tIGEga2V5IChvcHRpb25hbCkgKi9cbiBcdHZvaWQgKCpkZXN0cm95KShzdHJ1Y3Qga2V5ICprZXkpO1xuIFxuJiM0MztcdC8qIHNjcnViIHRoZSBrZXkgbWF0ZXJpYWwgd2l0aG91dCBmcmVlJiMzOTtpbmcgKG9wdGlvbmFsKVxuJiM0MztcdCAqIC0gdXNlZCBmcm9tIENPTkZJR19DUkFTSF9aRVJPSVpFIGR1cmluZyBwYW5pYyB0byBrZWVwIGtleXMgb3V0IG9mXG4mIzQzO1x0ICogICBjcmFzaCBkdW1wc1xuJiM0MztcdCAqIC0gY2FsbGVkIGZyb20gdGhlIHBhbmljIHBhdGggd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kIHByZWVtcHRpb25cbiYjNDM7XHQgKiAgIGRpc2FibGVkXG4mIzQzO1x0ICogLSBtdXN0IG5vdCBzbGVlcCwgYWxsb2NhdGUsIGZyZWUgb3IgdGFrZSBsb2Nrc1xuJiM0MztcdCAqL1xuJiM0MztcdHZvaWQgKCp6ZXJvaXplKShzdHJ1Y3Qga2V5ICprZXkpO1xuJiM0MztcbiBcdC8qIGRlc2NyaWJlIGEga2V5ICovXG4gXHR2b2lkICgqZGVzY3JpYmUpKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwgc3RydWN0IHNlcV9maWxlICpwKTtcbiBcbmRpZmYgLS1naXQgYS9rZXJuZWwvS2NvbmZpZy5rZXhlYyBiL2tlcm5lbC9LY29uZmlnLmtleGVjXG5pbmRleCAxNTYzMjM1OGJjZjcxLi45MmFiMGE2OWM4ZWM2IDEwMDY0NFxuLS0tIGEva2VybmVsL0tjb25maWcua2V4ZWNcbiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9LY29uZmlnLmtleGVjXG5AQCAtMTc5LDQgJiM0MzsxNzksMTIgQEAgY29uZmlnIENSQVNIX01BWF9NRU1PUllfUkFOR0VTXG4gXHQgIHRoZSBjb21wdXRhdGlvbiBiZWhpbmQgdGhlIHZhbHVlIHByb3ZpZGVkIHRocm91Z2ggdGhlXG4gXHQgIC9zeXMva2VybmVsL2NyYXNoX2VsZmNvcmVoZHJfc2l6ZSBhdHRyaWJ1dGUuXG4gXG4mIzQzO2NvbmZpZyBDUkFTSF9aRVJPSVpFXG4mIzQzO1x0Ym9vbCBcJiMzNDtaZXJvaXplIHNlY3JldHMgb24gcGFuaWNcJiMzNDtcbiYjNDM7XHRkZXBlbmRzIG9uIENSQVNIX0RVTVBcbiYjNDM7XHRoZWxwXG4mIzQzO1x0ICBXaXBlIHNlY3JldHMgKGUuZy4ga2VybmVsIGtleXJpbmcgYW5kIG1lbWZkX3NlY3JldCBwYWdlcykgb24gY3Jhc2ggb3IgcGFuaWMuXG4mIzQzO1xuJiM0MztcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbiYjNDM7XG4gZW5kbWVudVxuZGlmZiAtLWdpdCBhL2tlcm5lbC9jcmFzaF9jb3JlLmMgYi9rZXJuZWwvY3Jhc2hfY29yZS5jXG5pbmRleCAyYjM2YWE5ZmFkZTA2Li5kM2E3NzYzZTI3NTk5IDEwMDY0NFxuLS0tIGEva2VybmVsL2NyYXNoX2NvcmUuY1xuJiM0MzsmIzQzOyYjNDM7IGIva2VybmVsL2NyYXNoX2NvcmUuY1xuQEAgLTIzLDYgJiM0MzsyMyw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvb2JqdG9vbC5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvZGVsYXkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhbmljLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vc2VjdGlvbnMuaFx1MDAzZVxuQEAgLTMzLDYgJiM0MzszNCwyMiBAQFxuIC8qIFBlciBjcHUgbWVtb3J5IGZvciBzdG9yaW5nIGNwdSBzdGF0ZXMgaW4gY2FzZSBvZiBzeXN0ZW0gY3Jhc2guICovXG4gbm90ZV9idWZfdCBfX3BlcmNwdSAqY3Jhc2hfbm90ZXM7XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRVxuJiM0MztBVE9NSUNfTk9USUZJRVJfSEVBRChjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QpO1xuJiM0MztFWFBPUlRfU1lNQk9MX0dQTChjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QpO1xuJiM0MztcbiYjNDM7c3RhdGljIHZvaWQgY3Jhc2hfemVyb2l6ZSh2b2lkKVxuJiM0Mzt7XG4mIzQzO1x0a3RpbWVfdCB6ZXJvaXplX3N0YXJ0ID0ga3RpbWVfZ2V0KCk7XG4mIzQzO1xuJiM0MztcdHByX2luZm8oXCYjMzQ7V2lwaW5nIHNlbnNpdGl2ZSBzZWNyZXRzLi4uXFxuXCYjMzQ7KTtcbiYjNDM7XHRhdG9taWNfbm90aWZpZXJfY2FsbF9jaGFpbihcdTAwMjZjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QsIDAsIE5VTEwpO1xuJiM0MztcdHByX2luZm8oXCYjMzQ7RG9uZSBpbiAlbGxkIHVzXFxuXCYjMzQ7LCBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgemVyb2l6ZV9zdGFydCkpO1xuJiM0Mzt9XG4mIzQzOyNlbHNlXG4mIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpIHsgfVxuJiM0MzsjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi9cbiYjNDM7XG4gLyogdGltZSB0byB3YWl0IGZvciBwb3NzaWJsZSBETUEgdG8gZmluaXNoIGJlZm9yZSBzdGFydGluZyB0aGUga2R1bXAga2VybmVsXG4gICogd2hlbiBhIENNQSByZXNlcnZhdGlvbiBpcyB1c2VkXG4gICovXG5AQCAtMTQyLDYgJiM0MzsxNTksNyBAQCB2b2lkIF9fbm9jbG9uZSBfX2NyYXNoX2tleGVjKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxuIFx0XHRcdGNyYXNoX3NhdmVfdm1jb3JlaW5mbygpO1xuIFx0XHRcdG1hY2hpbmVfY3Jhc2hfc2h1dGRvd24oXHUwMDI2Zml4ZWRfcmVncyk7XG4gXHRcdFx0Y3Jhc2hfY21hX2NsZWFyX3BlbmRpbmdfZG1hKCk7XG4mIzQzO1x0XHRcdGNyYXNoX3plcm9pemUoKTtcbiBcdFx0XHRtYWNoaW5lX2tleGVjKGtleGVjX2NyYXNoX2ltYWdlKTtcbiBcdFx0fVxuIFx0XHRrZXhlY191bmxvY2soKTtcbmRpZmYgLS1naXQgYS9tbS9zZWNyZXRtZW0uYyBiL21tL3NlY3JldG1lbS5jXG5pbmRleCBkMjk4NjUwNzViNmVhLi41M2Y2MjlkNjYzM2MxIDEwMDY0NFxuLS0tIGEvbW0vc2VjcmV0bWVtLmNcbiYjNDM7JiM0MzsmIzQzOyBiL21tL3NlY3JldG1lbS5jXG5AQCAtMTMsOSAmIzQzOzEzLDExIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0b3BzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcmludGsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9ub3RpZmllci5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc3lzY2FsbHMuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BzZXVkb19mcy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2VjcmV0bWVtLmhcdTAwM2VcbiYjNDM7I2luY2x1ZGUgXHUwMDNjbGludXgvY3Jhc2hfY29yZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2V0X21lbW9yeS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2NoZWQvc2lnbmFsLmhcdTAwM2VcbiBcbkBAIC0xODcsNiAmIzQzOzE4OSw1MCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgc2VjcmV0bWVtX2lvcHMgPSB7XG4gXG4gc3RhdGljIHN0cnVjdCB2ZnNtb3VudCAqc2VjcmV0bWVtX21udDtcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19DUkFTSF9aRVJPSVpFXG4mIzQzOy8qIENhbGxlZCBmYXIgaW50byB2cGFuaWMgZnJvbSBjcmFzaF9jb3JlLmMgd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kXG4mIzQzOyAqIHByZWVtcHRpb24gZGlzYWJsZWRcbiYjNDM7ICovXG4mIzQzO3N0YXRpYyBpbnQgc2VjcmV0bWVtX2NyYXNoX3plcm9pemUoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZ1xuJiM0MztcdFx0YWN0aW9uLCB2b2lkICpkYXRhKVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHN1cGVyX2Jsb2NrICpzYjtcbiYjNDM7XHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xuJiM0MztcbiYjNDM7XHRpZiAoIXNlY3JldG1lbV9tbnQpXG4mIzQzO1x0XHRyZXR1cm4gTk9USUZZX0RPTkU7XG4mIzQzO1x0c2IgPSBzZWNyZXRtZW1fbW50LVx1MDAzZW1udF9zYjtcbiYjNDM7XG4mIzQzO1x0LyogSWYgdGhlIGxpc3Qgd2FzIG1vZGlmaWVkIGluIHRoZSBleGFjdCBtb21lbnQgd2UgcGFuaWMmIzM5O2VkLCBpdCBtaWdodCBiZVxuJiM0MztcdCAqIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSB0aGF0IHdvdWxkIGJlIHVuc2FmZSB0byBpdGVyYXRlLiBJZiB3ZSBjYW4mIzM5O3RcbiYjNDM7XHQgKiBnZXQgdGhlIGxvY2ssIHRvbyBiYWQsIHRoYXQmIzM5O3MgYWxsIHdlIGNhbiBkbyBoZXJlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghc3Bpbl90cnlsb2NrKFx1MDAyNnNiLVx1MDAzZXNfaW5vZGVfbGlzdF9sb2NrKSkge1xuJiM0MztcdFx0cHJfY3JpdChcJiMzNDtjcmFzaF96ZXJvaXplOiBjYW4mIzM5O3QgYWNxdWlyZSBzZWNyZXRtZW0gc3VwZXJibG9jayBsb2NrLlxcblwmIzM0O1xuJiM0MztcdFx0XHQgXCYjMzQ7Y3Jhc2hfemVyb2l6ZTogc2tpcHBpbmcgemVyb2l6aW5nIHNlY3JldG1lbS5cXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0bGlzdF9mb3JfZWFjaF9lbnRyeShpbm9kZSwgXHUwMDI2c2ItXHUwMDNlc19pbm9kZXMsIGlfc2JfbGlzdCkge1xuJiM0MztcdFx0WEFfU1RBVEUoeGFzLCBcdTAwMjZpbm9kZS1cdTAwM2VpX21hcHBpbmctXHUwMDNlaV9wYWdlcywgMCk7XG4mIzQzO1x0XHRzdHJ1Y3QgZm9saW8gKmZvbGlvO1xuJiM0MztcbiYjNDM7XHRcdC8qIG5vIG5lZWQgZm9yIGxvY2tzIGlmIHdlJiMzOTtyZSBidXJuaW5nIGRvd24gdGhlIGhvdXNlIDopICovXG4mIzQzO1x0XHR4YXNfZm9yX2VhY2goXHUwMDI2eGFzLCBmb2xpbywgVUxPTkdfTUFYKSB7XG4mIzQzO1x0XHRcdGlmICh4YXNfcmV0cnkoXHUwMDI2eGFzLCBmb2xpbykgfHwgeGFfaXNfdmFsdWUoZm9saW8pKVxuJiM0MztcdFx0XHRcdGNvbnRpbnVlO1xuJiM0MztcdFx0XHRpbm9kZS1cdTAwM2VpX21hcHBpbmctXHUwMDNlYV9vcHMtXHUwMDNlZnJlZV9mb2xpbyhmb2xpbyk7XG4mIzQzO1x0XHR9XG4mIzQzO1x0fVxuJiM0MztcdC8qIG9mZiB0byBrZXhlYygpISAqL1xuJiM0MztcdHJldHVybiBOT1RJRllfRE9ORTtcbiYjNDM7fVxuJiM0MztcbiYjNDM7c3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBzZWNyZXRtZW1femVyb2l6ZV9uYiA9IHtcbiYjNDM7XHQubm90aWZpZXJfY2FsbCA9IHNlY3JldG1lbV9jcmFzaF96ZXJvaXplXG4mIzQzO307XG4mIzQzOyNlbmRpZiAvKiBDT05GSUdfQ1JBU0hfWkVST0laRSAqL1xuJiM0MztcbiBzdGF0aWMgc3RydWN0IGZpbGUgKnNlY3JldG1lbV9maWxlX2NyZWF0ZSh1bnNpZ25lZCBsb25nIGZsYWdzKVxuIHtcbiBcdHN0cnVjdCBmaWxlICpmaWxlO1xuQEAgLTI2Myw2ICYjNDM7MzA5LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IHNlY3JldG1lbV9pbml0KHZvaWQpXG4gXHRpZiAoSVNfRVJSKHNlY3JldG1lbV9tbnQpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihzZWNyZXRtZW1fbW50KTtcbiBcbiYjNDM7I2lmZGVmIENPTkZJR19DUkFTSF9aRVJPSVpFXG4mIzQzO1x0YXRvbWljX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKFx1MDAyNmNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCwgXHUwMDI2c2VjcmV0bWVtX3plcm9pemVfbmIpO1xuJiM0MzsjZW5kaWZcbiYjNDM7XG4gXHRyZXR1cm4gMDtcbiB9XG4gZnNfaW5pdGNhbGwoc2VjcmV0bWVtX2luaXQpO1xuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jIGIvc2VjdXJpdHkva2V5cy9iaWdfa2V5LmNcbmluZGV4IDI2OGY3MDJkZjM4MGUuLmFkODUzN2RkYTcwZmEgMTAwNjQ0XG4tLS0gYS9zZWN1cml0eS9rZXlzL2JpZ19rZXkuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2VjdXJpdHkva2V5cy9iaWdfa2V5LmNcbkBAIC0zNSw2ICYjNDM7MzUsOCBAQCBzdHJ1Y3QgYmlnX2tleV9wYXlsb2FkIHtcbiAgKi9cbiAjZGVmaW5lIEJJR19LRVlfRklMRV9USFJFU0hPTEQgKHNpemVvZihzdHJ1Y3QgaW5vZGUpICYjNDM7IHNpemVvZihzdHJ1Y3QgZGVudHJ5KSlcbiBcbiYjNDM7c3RhdGljIHZvaWQgYmlnX2tleV96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSk7XG4mIzQzO1xuIC8qXG4gICogYmlnX2tleSBkZWZpbmVkIGtleXMgdGFrZSBhbiBhcmJpdHJhcnkgc3RyaW5nIGFzIHRoZSBkZXNjcmlwdGlvbiBhbmQgYW5cbiAgKiBhcmJpdHJhcnkgYmxvYiBvZiBkYXRhIGFzIHRoZSBwYXlsb2FkXG5AQCAtNDYsNiAmIzQzOzQ4LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX2JpZ19rZXkgPSB7XG4gXHQuaW5zdGFudGlhdGVcdFx0PSBnZW5lcmljX2tleV9pbnN0YW50aWF0ZSxcbiBcdC5yZXZva2VcdFx0XHQ9IGJpZ19rZXlfcmV2b2tlLFxuIFx0LmRlc3Ryb3lcdFx0PSBiaWdfa2V5X2Rlc3Ryb3ksXG4mIzQzO1x0Lnplcm9pemVcdFx0PSBiaWdfa2V5X3plcm9pemUsXG4gXHQuZGVzY3JpYmVcdFx0PSBiaWdfa2V5X2Rlc2NyaWJlLFxuIFx0LnJlYWRcdFx0XHQ9IGJpZ19rZXlfcmVhZCxcbiBcdC51cGRhdGVcdFx0XHQ9IGJpZ19rZXlfdXBkYXRlLFxuQEAgLTI3OSw2ICYjNDM7MjgyLDE4IEBAIGxvbmcgYmlnX2tleV9yZWFkKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwgY2hhciAqYnVmZmVyLCBzaXplX3QgYnVmbGVuKVxuIFx0cmV0dXJuIHJldDtcbiB9XG4gXG4mIzQzO3N0YXRpYyB2b2lkIGJpZ19rZXlfemVyb2l6ZShzdHJ1Y3Qga2V5ICprZXkpXG4mIzQzO3tcbiYjNDM7XHRzdHJ1Y3QgYmlnX2tleV9wYXlsb2FkICpwYXlsb2FkID0gdG9fYmlnX2tleV9wYXlsb2FkKGtleS1cdTAwM2VwYXlsb2FkKTtcbiYjNDM7XG4mIzQzO1x0aWYgKHBheWxvYWQtXHUwMDNlZGF0YSkge1xuJiM0MztcdFx0aWYgKHBheWxvYWQtXHUwMDNlbGVuZ3RoIFx1MDAzZSBCSUdfS0VZX0ZJTEVfVEhSRVNIT0xEKVxuJiM0MztcdFx0XHRtZW16ZXJvX2V4cGxpY2l0KHBheWxvYWQtXHUwMDNlZGF0YSwgQ0hBQ0hBMjBQT0xZMTMwNV9LRVlfU0laRSk7XG4mIzQzO1x0XHRlbHNlXG4mIzQzO1x0XHRcdG1lbXplcm9fZXhwbGljaXQocGF5bG9hZC1cdTAwM2VkYXRhLCBwYXlsb2FkLVx1MDAzZWxlbmd0aCk7XG4mIzQzO1x0fVxuJiM0Mzt9XG4mIzQzO1xuIC8qXG4gICogUmVnaXN0ZXIga2V5IHR5cGVcbiAgKi9cbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzL2VuY3J5cHRlZC5jIGIvc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuY1xuaW5kZXggNTljYjc3YjIzN2IzNi4uOWY1NmZhOWI0YWFmNCAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNcbkBAIC05NzAsMTEgJiM0Mzs5NzAsMjMgQEAgc3RhdGljIHZvaWQgZW5jcnlwdGVkX2Rlc3Ryb3koc3RydWN0IGtleSAqa2V5KVxuIFx0a2ZyZWVfc2Vuc2l0aXZlKGtleS1cdTAwM2VwYXlsb2FkLmRhdGFbMF0pO1xuIH1cbiBcbiYjNDM7c3RhdGljIHZvaWQgZW5jcnlwdGVkX3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IGVuY3J5cHRlZF9rZXlfcGF5bG9hZCAqZXBheWxvYWQgPSBrZXktXHUwMDNlcGF5bG9hZC5kYXRhWzBdO1xuJiM0MztcbiYjNDM7XHRpZiAoIWVwYXlsb2FkKVxuJiM0MztcdFx0cmV0dXJuO1xuJiM0MztcbiYjNDM7XHRtZW16ZXJvX2V4cGxpY2l0KGVwYXlsb2FkLVx1MDAzZXBheWxvYWRfZGF0YSxcbiYjNDM7XHRcdFx0IGVwYXlsb2FkLVx1MDAzZXBheWxvYWRfZGF0YWxlbiAmIzQzOyBlcGF5bG9hZC1cdTAwM2VkYXRhYmxvYl9sZW4pO1xuJiM0Mzt9XG4mIzQzO1xuIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9lbmNyeXB0ZWQgPSB7XG4gXHQubmFtZSA9IFwmIzM0O2VuY3J5cHRlZFwmIzM0OyxcbiBcdC5pbnN0YW50aWF0ZSA9IGVuY3J5cHRlZF9pbnN0YW50aWF0ZSxcbiBcdC51cGRhdGUgPSBlbmNyeXB0ZWRfdXBkYXRlLFxuIFx0LmRlc3Ryb3kgPSBlbmNyeXB0ZWRfZGVzdHJveSxcbiYjNDM7XHQuemVyb2l6ZSA9IGVuY3J5cHRlZF96ZXJvaXplLFxuIFx0LmRlc2NyaWJlID0gdXNlcl9kZXNjcmliZSxcbiBcdC5yZWFkID0gZW5jcnlwdGVkX3JlYWQsXG4gfTtcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2tleS5jIGIvc2VjdXJpdHkva2V5cy9rZXkuY1xuaW5kZXggYjM0YTY0ZDgxZDQ3YS4uNTY3M2RjYzhjNWQyMyAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2tleXMva2V5LmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMva2V5LmNcbkBAIC0xMiw2ICYjNDM7MTIsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NsYWIuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NlY3VyaXR5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC93b3JrcXVldWUuaFx1MDAzZVxuJiM0MzsjaW5jbHVkZSBcdTAwM2NsaW51eC9jcmFzaF9jb3JlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9yYW5kb20uaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2Vyci5oXHUwMDNlXG4gI2luY2x1ZGUgXCYjMzQ7aW50ZXJuYWwuaFwmIzM0O1xuQEAgLTEyNjgsNiAmIzQzOzEyNjksNDQgQEAgdm9pZCB1bnJlZ2lzdGVyX2tleV90eXBlKHN0cnVjdCBrZXlfdHlwZSAqa3R5cGUpXG4gfVxuIEVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9rZXlfdHlwZSk7XG4gXG4mIzQzOyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRVxuJiM0MzsvKiBDYWxsZWQgZmFyIGludG8gdnBhbmljIGZyb20gY3Jhc2hfY29yZS5jIHdpdGggb3RoZXIgQ1BVcyBzdG9wcGVkIGFuZFxuJiM0MzsgKiBwcmVlbXB0aW9uIGRpc2FibGVkXG4mIzQzOyAqL1xuJiM0MztzdGF0aWMgaW50IGtleV9jcmFzaF96ZXJvaXplKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcgYWN0aW9uLFxuJiM0MztcdFx0dm9pZCAqZGF0YSlcbiYjNDM7e1xuJiM0MztcdHN0cnVjdCByYl9ub2RlICpub2RlO1xuJiM0MztcbiYjNDM7XHQvKiBJZiB3ZSBjYW4mIzM5O3QgYWNxdWlyZSB0aGUgbG9jaywgdGhlIHJidHJlZSBtaWdodCBiZSBpbiBhbiBpbmNvbnNpc3RlbnRcbiYjNDM7XHQgKiBzdGF0ZS4gVGhhdCYjMzk7cyBhbGwgd2UgY2FuIGRvIHRoZW4sIGFzIHRoZXJlJiMzOTtzIG5vIHBvaW50IHRvIHdhaXRpbmdcbiYjNDM7XHQgKiBhdCB0aGlzIHN0YWdlLlxuJiM0MztcdCAqL1xuJiM0MztcdGlmICghc3Bpbl90cnlsb2NrKFx1MDAyNmtleV9zZXJpYWxfbG9jaykpIHtcbiYjNDM7XHRcdHByX2NyaXQoXCYjMzQ7Y3Jhc2hfemVyb2l6ZTogY2FuJiMzOTt0IGFjcXVpcmUga2V5X3NlcmlhbF9sb2NrLiBza2lwcGluZyBrZXlyaW5ncy5cXG5cJiMzNDspO1xuJiM0MztcdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuJiM0MztcdH1cbiYjNDM7XG4mIzQzO1x0Zm9yIChub2RlID0gcmJfZmlyc3QoXHUwMDI2a2V5X3NlcmlhbF90cmVlKTsgbm9kZTsgbm9kZSA9IHJiX25leHQobm9kZSkpIHtcbiYjNDM7XHRcdHN0cnVjdCBrZXkgKmtleSA9IHJiX2VudHJ5KG5vZGUsIHN0cnVjdCBrZXksIHNlcmlhbF9ub2RlKTtcbiYjNDM7XG4mIzQzO1x0XHRpZiAoa2V5LVx1MDAzZXR5cGUgPT0gXHUwMDI2a2V5X3R5cGVfa2V5cmluZyB8fFxuJiM0MztcdFx0ICAgIGtleS1cdTAwM2VzdGF0ZSA9PSBLRVlfSVNfVU5JTlNUQU5USUFURUQpXG4mIzQzO1x0XHRcdGNvbnRpbnVlO1xuJiM0MztcbiYjNDM7XHRcdC8qIGN1c3RvbSB6ZXJvaXplIHNpbmNlIGZyZWUmIzM5O2luZyBpc24mIzM5O3Qgc2FmZSBhdCB0aGlzIHBvaW50ICovXG4mIzQzO1x0XHRpZiAoa2V5LVx1MDAzZXR5cGUtXHUwMDNlemVyb2l6ZSlcbiYjNDM7XHRcdFx0a2V5LVx1MDAzZXR5cGUtXHUwMDNlemVyb2l6ZShrZXkpO1xuJiM0MztcdH1cbiYjNDM7XHQvKiBvZmYgdG8ga2V4ZWMoKSEgKi9cbiYjNDM7XHRyZXR1cm4gTk9USUZZX0RPTkU7XG4mIzQzO31cbiYjNDM7XG4mIzQzO3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sga2V5X2NyYXNoX3plcm9pemVfbmIgPSB7XG4mIzQzO1x0Lm5vdGlmaWVyX2NhbGwgPSBrZXlfY3Jhc2hfemVyb2l6ZVxuJiM0Mzt9O1xuJiM0MzsjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi9cbiYjNDM7XG4gLypcbiAgKiBJbml0aWFsaXNlIHRoZSBrZXkgbWFuYWdlbWVudCBzdGF0ZS5cbiAgKi9cbkBAIC0xMjkwLDQgJiM0MzsxMzI5LDkgQEAgdm9pZCBfX2luaXQga2V5X2luaXQodm9pZClcbiBcbiBcdHJiX2luc2VydF9jb2xvcihcdTAwMjZyb290X2tleV91c2VyLm5vZGUsXG4gXHRcdFx0XHUwMDI2a2V5X3VzZXJfdHJlZSk7XG4mIzQzO1xuJiM0MzsjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbiYjNDM7XHRhdG9taWNfbm90aWZpZXJfY2hhaW5fcmVnaXN0ZXIoXHUwMDI2Y3Jhc2hfemVyb2l6ZV9ub3RpZmllcl9saXN0LFxuJiM0MztcdFx0XHRcdTAwMjZrZXlfY3Jhc2hfemVyb2l6ZV9uYik7XG4mIzQzOyNlbmRpZlxuIH1cbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy90cnVzdGVkX2NvcmUuYyBiL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jXG5pbmRleCAwNTA5ZDk5NTVmMmE2Li5mMTU5ZmFlYWZlMjNhIDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmNcbiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jXG5AQCAtMzI1LDExICYjNDM7MzI1LDI1IEBAIHN0YXRpYyB2b2lkIHRydXN0ZWRfZGVzdHJveShzdHJ1Y3Qga2V5ICprZXkpXG4gXHRrZnJlZV9zZW5zaXRpdmUoa2V5LVx1MDAzZXBheWxvYWQuZGF0YVswXSk7XG4gfVxuIFxuJiM0MztzdGF0aWMgdm9pZCB0cnVzdGVkX3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHRydXN0ZWRfa2V5X3BheWxvYWQgKnAgPSBrZXktXHUwMDNlcGF5bG9hZC5kYXRhWzBdO1xuJiM0MztcbiYjNDM7XHRpZiAoIXApXG4mIzQzO1x0XHRyZXR1cm47XG4mIzQzO1xuJiM0MztcdG1lbXplcm9fZXhwbGljaXQocC1cdTAwM2VrZXksIHNpemVvZihwLVx1MDAzZWtleSkpO1xuJiM0MztcdG1lbXplcm9fZXhwbGljaXQocC1cdTAwM2VibG9iLCBzaXplb2YocC1cdTAwM2VibG9iKSk7XG4mIzQzO1x0cC1cdTAwM2VrZXlfbGVuID0gMDtcbiYjNDM7XHRwLVx1MDAzZWJsb2JfbGVuID0gMDtcbiYjNDM7fVxuJiM0MztcbiBzdHJ1Y3Qga2V5X3R5cGUga2V5X3R5cGVfdHJ1c3RlZCA9IHtcbiBcdC5uYW1lID0gXCYjMzQ7dHJ1c3RlZFwmIzM0OyxcbiBcdC5pbnN0YW50aWF0ZSA9IHRydXN0ZWRfaW5zdGFudGlhdGUsXG4gXHQudXBkYXRlID0gdHJ1c3RlZF91cGRhdGUsXG4gXHQuZGVzdHJveSA9IHRydXN0ZWRfZGVzdHJveSxcbiYjNDM7XHQuemVyb2l6ZSA9IHRydXN0ZWRfemVyb2l6ZSxcbiBcdC5kZXNjcmliZSA9IHVzZXJfZGVzY3JpYmUsXG4gXHQucmVhZCA9IHRydXN0ZWRfcmVhZCxcbiB9O1xuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmMgYi9zZWN1cml0eS9rZXlzL3VzZXJfZGVmaW5lZC5jXG5pbmRleCA2Zjg4YjUwN2Y5Mjc5Li5hZGU5NWRjMjQ4MWRmIDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY1xuJiM0MzsmIzQzOyYjNDM7IGIvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY1xuQEAgLTE1LDYgJiM0MzsxNSw3IEBAXG4gI2luY2x1ZGUgXCYjMzQ7aW50ZXJuYWwuaFwmIzM0O1xuIFxuIHN0YXRpYyBpbnQgbG9nb25fdmV0X2Rlc2NyaXB0aW9uKGNvbnN0IGNoYXIgKmRlc2MpO1xuJiM0MztzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KTtcbiBcbiAvKlxuICAqIHVzZXIgZGVmaW5lZCBrZXlzIHRha2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgZGVzY3JpcHRpb24gYW5kIGFuXG5AQCAtMjgsNiAmIzQzOzI5LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX3VzZXIgPSB7XG4gXHQudXBkYXRlXHRcdFx0PSB1c2VyX3VwZGF0ZSxcbiBcdC5yZXZva2VcdFx0XHQ9IHVzZXJfcmV2b2tlLFxuIFx0LmRlc3Ryb3lcdFx0PSB1c2VyX2Rlc3Ryb3ksXG4mIzQzO1x0Lnplcm9pemVcdFx0PSB1c2VyX3plcm9pemUsXG4gXHQuZGVzY3JpYmVcdFx0PSB1c2VyX2Rlc2NyaWJlLFxuIFx0LnJlYWRcdFx0XHQ9IHVzZXJfcmVhZCxcbiB9O1xuQEAgLTQ4LDYgJiM0Mzs1MCw3IEBAIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9sb2dvbiA9IHtcbiBcdC51cGRhdGVcdFx0XHQ9IHVzZXJfdXBkYXRlLFxuIFx0LnJldm9rZVx0XHRcdD0gdXNlcl9yZXZva2UsXG4gXHQuZGVzdHJveVx0XHQ9IHVzZXJfZGVzdHJveSxcbiYjNDM7XHQuemVyb2l6ZVx0XHQ9IHVzZXJfemVyb2l6ZSxcbiBcdC5kZXNjcmliZVx0XHQ9IHVzZXJfZGVzY3JpYmUsXG4gXHQudmV0X2Rlc2NyaXB0aW9uXHQ9IGxvZ29uX3ZldF9kZXNjcmlwdGlvbixcbiB9O1xuQEAgLTE1Miw2ICYjNDM7MTU1LDE0IEBAIHZvaWQgdXNlcl9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSlcbiBcbiBFWFBPUlRfU1lNQk9MX0dQTCh1c2VyX2Rlc3Ryb3kpO1xuIFxuJiM0MztzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxuJiM0Mzt7XG4mIzQzO1x0c3RydWN0IHVzZXJfa2V5X3BheWxvYWQgKnVwYXlsb2FkID0ga2V5LVx1MDAzZXBheWxvYWQuZGF0YVswXTtcbiYjNDM7XG4mIzQzO1x0aWYgKHVwYXlsb2FkKVxuJiM0MztcdFx0bWVtemVyb19leHBsaWNpdCh1cGF5bG9hZC1cdTAwM2VkYXRhLCB1cGF5bG9hZC1cdTAwM2VkYXRhbGVuKTtcbiYjNDM7fVxuJiM0MztcbiAvKlxuICAqIGRlc2NyaWJlIHRoZSB1c2VyIGtleVxuICAqL1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjIvMTwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAwPC90ZD4KCQkJPHRkPmFnZW50PC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjFtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmJlc3QtZXhwZW5zaXZlPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0VuYWJsZUNvbmZpZ3MmIzM0OzogWwogICAgJiMzNDtDUkFTSF9aRVJPSVpFJiMzNDssCiAgICAmIzM0O0NSQVNIX0RVTVAmIzM0OywKICAgICYjMzQ7U0VDUkVUTUVNJiMzNDssCiAgICAmIzM0O0tFWVMmIzM0OywKICAgICYjMzQ7QklHX0tFWVMmIzM0OywKICAgICYjMzQ7RU5DUllQVEVEX0tFWVMmIzM0OywKICAgICYjMzQ7VFJVU1RFRF9LRVlTJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7Y3Jhc2hfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDtzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDtrZXlfY3Jhc2hfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDtiaWdfa2V5X3plcm9pemUmIzM0OywKICAgICYjMzQ7ZW5jcnlwdGVkX3plcm9pemUmIzM0OywKICAgICYjMzQ7dHJ1c3RlZF96ZXJvaXplJiMzNDssCiAgICAmIzM0O3VzZXJfemVyb2l6ZSYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZlYXR1cmUgdG8gemVyb2l6ZSBzZW5zaXRpdmUgc2VjcmV0cyAoa2V5cyBhbmQgc2VjcmV0bWVtKSBkdXJpbmcgYSBrZXJuZWwgcGFuaWMvY3Jhc2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgZXhlY3V0ZXMgd2hlbiBhIGNyYXNoIGtlcm5lbCBpcyBsb2FkZWQgYW5kIGEgcGFuaWMgb2NjdXJzLiBGdXp6aW5nIGNhbiBoZWxwIGVuc3VyZSB0aGVzZSB0ZWFyZG93biBwYXRocyBkbyBub3QgaW50cm9kdWNlIHNlY29uZGFyeSBmYXVsdHMgb3IgZGVhZGxvY2tzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNWI0NDdmMWQ3Y2ExNjA2MTU0MTY1ZmNkMGVhNDNkMWRjYmFhMGUzOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBTdW4gQXVnIDIgMDQ6MDA6MzYgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL2tleGVjLmMgYi9kcml2ZXJzL29mL2tleGVjLmMKaW5kZXggMDI5OTAzYjk4NmNiZC4uMzY2MzVmNmNiOTAwOSAxMDA2NDQKLS0tIGEvZHJpdmVycy9vZi9rZXhlYy5jCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvb2Yva2V4ZWMuYwpAQCAtMjQsNyAmIzQzOzI0LDcgQEAKIAogLyoKICAqIEFkZGl0aW9uYWwgc3BhY2UgbmVlZGVkIGZvciB0aGUgRkRUIGJ1ZmZlciBzbyB0aGF0IHdlIGNhbiBhZGQgaW5pdHJkLAotICogYm9vdGFyZ3MsIGthc2xyLXNlZWQsIHJuZy1zZWVkLCB1c2VhYmxlLW1lbW9yeS1yYW5nZSBhbmQgZWxmY29yZWhkci4KJiM0MzsgKiBib290YXJncywga2FzbHItc2VlZCwgcm5nLXNlZWQsIHVzYWJsZS1tZW1vcnktcmFuZ2UgYW5kIGVsZmNvcmVoZHIuCiAgKi8KICNkZWZpbmUgRkRUX0VYVFJBX1NQQUNFIDB4MTAwMAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaCBiL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oCmluZGV4IGJjMDg3MTI0Y2Q3OGUuLjVjNzIwN2MwYmJhMTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oCiYjNDM7JiM0MzsmIzQzOyBiL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oCkBAIC01LDYgJiM0Mzs1LDcgQEAKICNpbmNsdWRlICZsdDtsaW51eC9saW5rYWdlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvZWxmY29yZS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2VsZi5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9ub3RpZmllci5oJmd0OwogCiBzdHJ1Y3Qga2ltYWdlOwogCkBAIC0zNCw2ICYjNDM7MzUsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfa2V4ZWNfcHJvdGVjdF9jcmFzaGtyZXModm9pZCkgeyB9CiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9rZXhlY191bnByb3RlY3RfY3Jhc2hrcmVzKHZvaWQpIHsgfQogI2VuZGlmCiAKJiM0MzsjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkUKJiM0MztleHRlcm4gc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdDsKJiM0MzsjZW5kaWYKJiM0MzsKICNpZm5kZWYgYXJjaF9jcmFzaF9oYW5kbGVfaG90cGx1Z19ldmVudAogc3RhdGljIGlubGluZSB2b2lkIGFyY2hfY3Jhc2hfaGFuZGxlX2hvdHBsdWdfZXZlbnQoc3RydWN0IGtpbWFnZSAqaW1hZ2UsIHZvaWQgKmFyZykgeyB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaCBiL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaAppbmRleCBiYjk3YmQzZTVhZjRmLi5mZjA5NDRjZTM2OGY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmgKJiM0MzsmIzQzOyYjNDM7IGIvaW5jbHVkZS9saW51eC9rZXktdHlwZS5oCkBAIC0xMjIsNiAmIzQzOzEyMiwxNSBAQCBzdHJ1Y3Qga2V5X3R5cGUgewogCS8qIGNsZWFyIHRoZSBkYXRhIGZyb20gYSBrZXkgKG9wdGlvbmFsKSAqLwogCXZvaWQgKCpkZXN0cm95KShzdHJ1Y3Qga2V5ICprZXkpOwogCiYjNDM7CS8qIHNjcnViIHRoZSBrZXkgbWF0ZXJpYWwgd2l0aG91dCBmcmVlJiMzOTtpbmcgKG9wdGlvbmFsKQomIzQzOwkgKiAtIHVzZWQgZnJvbSBDT05GSUdfQ1JBU0hfWkVST0laRSBkdXJpbmcgcGFuaWMgdG8ga2VlcCBrZXlzIG91dCBvZgomIzQzOwkgKiAgIGNyYXNoIGR1bXBzCiYjNDM7CSAqIC0gY2FsbGVkIGZyb20gdGhlIHBhbmljIHBhdGggd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kIHByZWVtcHRpb24KJiM0MzsJICogICBkaXNhYmxlZAomIzQzOwkgKiAtIG11c3Qgbm90IHNsZWVwLCBhbGxvY2F0ZSwgZnJlZSBvciB0YWtlIGxvY2tzCiYjNDM7CSAqLwomIzQzOwl2b2lkICgqemVyb2l6ZSkoc3RydWN0IGtleSAqa2V5KTsKJiM0MzsKIAkvKiBkZXNjcmliZSBhIGtleSAqLwogCXZvaWQgKCpkZXNjcmliZSkoY29uc3Qgc3RydWN0IGtleSAqa2V5LCBzdHJ1Y3Qgc2VxX2ZpbGUgKnApOwogCmRpZmYgLS1naXQgYS9rZXJuZWwvS2NvbmZpZy5rZXhlYyBiL2tlcm5lbC9LY29uZmlnLmtleGVjCmluZGV4IDE1NjMyMzU4YmNmNzEuLjkyYWIwYTY5YzhlYzYgMTAwNjQ0Ci0tLSBhL2tlcm5lbC9LY29uZmlnLmtleGVjCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9LY29uZmlnLmtleGVjCkBAIC0xNzksNCAmIzQzOzE3OSwxMiBAQCBjb25maWcgQ1JBU0hfTUFYX01FTU9SWV9SQU5HRVMKIAkgIHRoZSBjb21wdXRhdGlvbiBiZWhpbmQgdGhlIHZhbHVlIHByb3ZpZGVkIHRocm91Z2ggdGhlCiAJICAvc3lzL2tlcm5lbC9jcmFzaF9lbGZjb3JlaGRyX3NpemUgYXR0cmlidXRlLgogCiYjNDM7Y29uZmlnIENSQVNIX1pFUk9JWkUKJiM0MzsJYm9vbCAmIzM0O1plcm9pemUgc2VjcmV0cyBvbiBwYW5pYyYjMzQ7CiYjNDM7CWRlcGVuZHMgb24gQ1JBU0hfRFVNUAomIzQzOwloZWxwCiYjNDM7CSAgV2lwZSBzZWNyZXRzIChlLmcuIGtlcm5lbCBrZXlyaW5nIGFuZCBtZW1mZF9zZWNyZXQgcGFnZXMpIG9uIGNyYXNoIG9yIHBhbmljLgomIzQzOwomIzQzOwkgIElmIHVuc3VyZSwgc2F5IE4uCiYjNDM7CiBlbmRtZW51CmRpZmYgLS1naXQgYS9rZXJuZWwvY3Jhc2hfY29yZS5jIGIva2VybmVsL2NyYXNoX2NvcmUuYwppbmRleCAyYjM2YWE5ZmFkZTA2Li5kM2E3NzYzZTI3NTk5IDEwMDY0NAotLS0gYS9rZXJuZWwvY3Jhc2hfY29yZS5jCiYjNDM7JiM0MzsmIzQzOyBiL2tlcm5lbC9jcmFzaF9jb3JlLmMKQEAgLTIzLDYgJiM0MzsyMyw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvb2JqdG9vbC5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L2RlbGF5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvcGFuaWMuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvdGltZWtlZXBpbmcuaCZndDsKIAogI2luY2x1ZGUgJmx0O2FzbS9wYWdlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7YXNtL3NlY3Rpb25zLmgmZ3Q7CkBAIC0zMyw2ICYjNDM7MzQsMjIgQEAKIC8qIFBlciBjcHUgbWVtb3J5IGZvciBzdG9yaW5nIGNwdSBzdGF0ZXMgaW4gY2FzZSBvZiBzeXN0ZW0gY3Jhc2guICovCiBub3RlX2J1Zl90IF9fcGVyY3B1ICpjcmFzaF9ub3RlczsKIAomIzQzOyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRQomIzQzO0FUT01JQ19OT1RJRklFUl9IRUFEKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7CiYjNDM7RVhQT1JUX1NZTUJPTF9HUEwoY3Jhc2hfemVyb2l6ZV9ub3RpZmllcl9saXN0KTsKJiM0MzsKJiM0MztzdGF0aWMgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpCiYjNDM7ewomIzQzOwlrdGltZV90IHplcm9pemVfc3RhcnQgPSBrdGltZV9nZXQoKTsKJiM0MzsKJiM0MzsJcHJfaW5mbygmIzM0O1dpcGluZyBzZW5zaXRpdmUgc2VjcmV0cy4uLlxuJiMzNDspOwomIzQzOwlhdG9taWNfbm90aWZpZXJfY2FsbF9jaGFpbigmYW1wO2NyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCwgMCwgTlVMTCk7CiYjNDM7CXByX2luZm8oJiMzNDtEb25lIGluICVsbGQgdXNcbiYjMzQ7LCBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgemVyb2l6ZV9zdGFydCkpOwomIzQzO30KJiM0MzsjZWxzZQomIzQzO3N0YXRpYyBpbmxpbmUgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpIHsgfQomIzQzOyNlbmRpZiAvKiBDT05GSUdfQ1JBU0hfWkVST0laRSAqLwomIzQzOwogLyogdGltZSB0byB3YWl0IGZvciBwb3NzaWJsZSBETUEgdG8gZmluaXNoIGJlZm9yZSBzdGFydGluZyB0aGUga2R1bXAga2VybmVsCiAgKiB3aGVuIGEgQ01BIHJlc2VydmF0aW9uIGlzIHVzZWQKICAqLwpAQCAtMTQyLDYgJiM0MzsxNTksNyBAQCB2b2lkIF9fbm9jbG9uZSBfX2NyYXNoX2tleGVjKHN0cnVjdCBwdF9yZWdzICpyZWdzKQogCQkJY3Jhc2hfc2F2ZV92bWNvcmVpbmZvKCk7CiAJCQltYWNoaW5lX2NyYXNoX3NodXRkb3duKCZhbXA7Zml4ZWRfcmVncyk7CiAJCQljcmFzaF9jbWFfY2xlYXJfcGVuZGluZ19kbWEoKTsKJiM0MzsJCQljcmFzaF96ZXJvaXplKCk7CiAJCQltYWNoaW5lX2tleGVjKGtleGVjX2NyYXNoX2ltYWdlKTsKIAkJfQogCQlrZXhlY191bmxvY2soKTsKZGlmZiAtLWdpdCBhL21tL3NlY3JldG1lbS5jIGIvbW0vc2VjcmV0bWVtLmMKaW5kZXggZDI5ODY1MDc1YjZlYS4uNTNmNjI5ZDY2MzNjMSAxMDA2NDQKLS0tIGEvbW0vc2VjcmV0bWVtLmMKJiM0MzsmIzQzOyYjNDM7IGIvbW0vc2VjcmV0bWVtLmMKQEAgLTEzLDkgJiM0MzsxMywxMSBAQAogI2luY2x1ZGUgJmx0O2xpbnV4L2JpdG9wcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3ByaW50ay5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BhZ2VtYXAuaCZndDsKJiM0MzsjaW5jbHVkZSAmbHQ7bGludXgvbm90aWZpZXIuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9zeXNjYWxscy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3BzZXVkb19mcy5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NlY3JldG1lbS5oJmd0OwomIzQzOyNpbmNsdWRlICZsdDtsaW51eC9jcmFzaF9jb3JlLmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvc2V0X21lbW9yeS5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NjaGVkL3NpZ25hbC5oJmd0OwogCkBAIC0xODcsNiAmIzQzOzE4OSw1MCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgc2VjcmV0bWVtX2lvcHMgPSB7CiAKIHN0YXRpYyBzdHJ1Y3QgdmZzbW91bnQgKnNlY3JldG1lbV9tbnQ7CiAKJiM0MzsjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkUKJiM0MzsvKiBDYWxsZWQgZmFyIGludG8gdnBhbmljIGZyb20gY3Jhc2hfY29yZS5jIHdpdGggb3RoZXIgQ1BVcyBzdG9wcGVkIGFuZAomIzQzOyAqIHByZWVtcHRpb24gZGlzYWJsZWQKJiM0MzsgKi8KJiM0MztzdGF0aWMgaW50IHNlY3JldG1lbV9jcmFzaF96ZXJvaXplKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmcKJiM0MzsJCWFjdGlvbiwgdm9pZCAqZGF0YSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBzdXBlcl9ibG9jayAqc2I7CiYjNDM7CXN0cnVjdCBpbm9kZSAqaW5vZGU7CiYjNDM7CiYjNDM7CWlmICghc2VjcmV0bWVtX21udCkKJiM0MzsJCXJldHVybiBOT1RJRllfRE9ORTsKJiM0MzsJc2IgPSBzZWNyZXRtZW1fbW50LSZndDttbnRfc2I7CiYjNDM7CiYjNDM7CS8qIElmIHRoZSBsaXN0IHdhcyBtb2RpZmllZCBpbiB0aGUgZXhhY3QgbW9tZW50IHdlIHBhbmljJiMzOTtlZCwgaXQgbWlnaHQgYmUKJiM0MzsJICogaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIHRoYXQgd291bGQgYmUgdW5zYWZlIHRvIGl0ZXJhdGUuIElmIHdlIGNhbiYjMzk7dAomIzQzOwkgKiBnZXQgdGhlIGxvY2ssIHRvbyBiYWQsIHRoYXQmIzM5O3MgYWxsIHdlIGNhbiBkbyBoZXJlLgomIzQzOwkgKi8KJiM0MzsJaWYgKCFzcGluX3RyeWxvY2soJmFtcDtzYi0mZ3Q7c19pbm9kZV9saXN0X2xvY2spKSB7CiYjNDM7CQlwcl9jcml0KCYjMzQ7Y3Jhc2hfemVyb2l6ZTogY2FuJiMzOTt0IGFjcXVpcmUgc2VjcmV0bWVtIHN1cGVyYmxvY2sgbG9jay5cbiYjMzQ7CiYjNDM7CQkJICYjMzQ7Y3Jhc2hfemVyb2l6ZTogc2tpcHBpbmcgemVyb2l6aW5nIHNlY3JldG1lbS5cbiYjMzQ7KTsKJiM0MzsJCXJldHVybiBOT1RJRllfRE9ORTsKJiM0MzsJfQomIzQzOwomIzQzOwlsaXN0X2Zvcl9lYWNoX2VudHJ5KGlub2RlLCAmYW1wO3NiLSZndDtzX2lub2RlcywgaV9zYl9saXN0KSB7CiYjNDM7CQlYQV9TVEFURSh4YXMsICZhbXA7aW5vZGUtJmd0O2lfbWFwcGluZy0mZ3Q7aV9wYWdlcywgMCk7CiYjNDM7CQlzdHJ1Y3QgZm9saW8gKmZvbGlvOwomIzQzOwomIzQzOwkJLyogbm8gbmVlZCBmb3IgbG9ja3MgaWYgd2UmIzM5O3JlIGJ1cm5pbmcgZG93biB0aGUgaG91c2UgOikgKi8KJiM0MzsJCXhhc19mb3JfZWFjaCgmYW1wO3hhcywgZm9saW8sIFVMT05HX01BWCkgewomIzQzOwkJCWlmICh4YXNfcmV0cnkoJmFtcDt4YXMsIGZvbGlvKSB8fCB4YV9pc192YWx1ZShmb2xpbykpCiYjNDM7CQkJCWNvbnRpbnVlOwomIzQzOwkJCWlub2RlLSZndDtpX21hcHBpbmctJmd0O2Ffb3BzLSZndDtmcmVlX2ZvbGlvKGZvbGlvKTsKJiM0MzsJCX0KJiM0MzsJfQomIzQzOwkvKiBvZmYgdG8ga2V4ZWMoKSEgKi8KJiM0MzsJcmV0dXJuIE5PVElGWV9ET05FOwomIzQzO30KJiM0MzsKJiM0MztzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHNlY3JldG1lbV96ZXJvaXplX25iID0gewomIzQzOwkubm90aWZpZXJfY2FsbCA9IHNlY3JldG1lbV9jcmFzaF96ZXJvaXplCiYjNDM7fTsKJiM0MzsjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi8KJiM0MzsKIHN0YXRpYyBzdHJ1Y3QgZmlsZSAqc2VjcmV0bWVtX2ZpbGVfY3JlYXRlKHVuc2lnbmVkIGxvbmcgZmxhZ3MpCiB7CiAJc3RydWN0IGZpbGUgKmZpbGU7CkBAIC0yNjMsNiAmIzQzOzMwOSwxMCBAQCBzdGF0aWMgaW50IF9faW5pdCBzZWNyZXRtZW1faW5pdCh2b2lkKQogCWlmIChJU19FUlIoc2VjcmV0bWVtX21udCkpCiAJCXJldHVybiBQVFJfRVJSKHNlY3JldG1lbV9tbnQpOwogCiYjNDM7I2lmZGVmIENPTkZJR19DUkFTSF9aRVJPSVpFCiYjNDM7CWF0b21pY19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcigmYW1wO2NyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCwgJmFtcDtzZWNyZXRtZW1femVyb2l6ZV9uYik7CiYjNDM7I2VuZGlmCiYjNDM7CiAJcmV0dXJuIDA7CiB9CiBmc19pbml0Y2FsbChzZWNyZXRtZW1faW5pdCk7CmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2JpZ19rZXkuYyBiL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jCmluZGV4IDI2OGY3MDJkZjM4MGUuLmFkODUzN2RkYTcwZmEgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jCkBAIC0zNSw2ICYjNDM7MzUsOCBAQCBzdHJ1Y3QgYmlnX2tleV9wYXlsb2FkIHsKICAqLwogI2RlZmluZSBCSUdfS0VZX0ZJTEVfVEhSRVNIT0xEIChzaXplb2Yoc3RydWN0IGlub2RlKSAmIzQzOyBzaXplb2Yoc3RydWN0IGRlbnRyeSkpCiAKJiM0MztzdGF0aWMgdm9pZCBiaWdfa2V5X3plcm9pemUoc3RydWN0IGtleSAqa2V5KTsKJiM0MzsKIC8qCiAgKiBiaWdfa2V5IGRlZmluZWQga2V5cyB0YWtlIGFuIGFyYml0cmFyeSBzdHJpbmcgYXMgdGhlIGRlc2NyaXB0aW9uIGFuZCBhbgogICogYXJiaXRyYXJ5IGJsb2Igb2YgZGF0YSBhcyB0aGUgcGF5bG9hZApAQCAtNDYsNiAmIzQzOzQ4LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX2JpZ19rZXkgPSB7CiAJLmluc3RhbnRpYXRlCQk9IGdlbmVyaWNfa2V5X2luc3RhbnRpYXRlLAogCS5yZXZva2UJCQk9IGJpZ19rZXlfcmV2b2tlLAogCS5kZXN0cm95CQk9IGJpZ19rZXlfZGVzdHJveSwKJiM0MzsJLnplcm9pemUJCT0gYmlnX2tleV96ZXJvaXplLAogCS5kZXNjcmliZQkJPSBiaWdfa2V5X2Rlc2NyaWJlLAogCS5yZWFkCQkJPSBiaWdfa2V5X3JlYWQsCiAJLnVwZGF0ZQkJCT0gYmlnX2tleV91cGRhdGUsCkBAIC0yNzksNiAmIzQzOzI4MiwxOCBAQCBsb25nIGJpZ19rZXlfcmVhZChjb25zdCBzdHJ1Y3Qga2V5ICprZXksIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmxlbikKIAlyZXR1cm4gcmV0OwogfQogCiYjNDM7c3RhdGljIHZvaWQgYmlnX2tleV96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSkKJiM0Mzt7CiYjNDM7CXN0cnVjdCBiaWdfa2V5X3BheWxvYWQgKnBheWxvYWQgPSB0b19iaWdfa2V5X3BheWxvYWQoa2V5LSZndDtwYXlsb2FkKTsKJiM0MzsKJiM0MzsJaWYgKHBheWxvYWQtJmd0O2RhdGEpIHsKJiM0MzsJCWlmIChwYXlsb2FkLSZndDtsZW5ndGggJmd0OyBCSUdfS0VZX0ZJTEVfVEhSRVNIT0xEKQomIzQzOwkJCW1lbXplcm9fZXhwbGljaXQocGF5bG9hZC0mZ3Q7ZGF0YSwgQ0hBQ0hBMjBQT0xZMTMwNV9LRVlfU0laRSk7CiYjNDM7CQllbHNlCiYjNDM7CQkJbWVtemVyb19leHBsaWNpdChwYXlsb2FkLSZndDtkYXRhLCBwYXlsb2FkLSZndDtsZW5ndGgpOwomIzQzOwl9CiYjNDM7fQomIzQzOwogLyoKICAqIFJlZ2lzdGVyIGtleSB0eXBlCiAgKi8KZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmMgYi9zZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzL2VuY3J5cHRlZC5jCmluZGV4IDU5Y2I3N2IyMzdiMzYuLjlmNTZmYTliNGFhZjQgMTAwNjQ0Ci0tLSBhL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuYwpAQCAtOTcwLDExICYjNDM7OTcwLDIzIEBAIHN0YXRpYyB2b2lkIGVuY3J5cHRlZF9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSkKIAlrZnJlZV9zZW5zaXRpdmUoa2V5LSZndDtwYXlsb2FkLmRhdGFbMF0pOwogfQogCiYjNDM7c3RhdGljIHZvaWQgZW5jcnlwdGVkX3plcm9pemUoc3RydWN0IGtleSAqa2V5KQomIzQzO3sKJiM0MzsJc3RydWN0IGVuY3J5cHRlZF9rZXlfcGF5bG9hZCAqZXBheWxvYWQgPSBrZXktJmd0O3BheWxvYWQuZGF0YVswXTsKJiM0MzsKJiM0MzsJaWYgKCFlcGF5bG9hZCkKJiM0MzsJCXJldHVybjsKJiM0MzsKJiM0MzsJbWVtemVyb19leHBsaWNpdChlcGF5bG9hZC0mZ3Q7cGF5bG9hZF9kYXRhLAomIzQzOwkJCSBlcGF5bG9hZC0mZ3Q7cGF5bG9hZF9kYXRhbGVuICYjNDM7IGVwYXlsb2FkLSZndDtkYXRhYmxvYl9sZW4pOwomIzQzO30KJiM0MzsKIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9lbmNyeXB0ZWQgPSB7CiAJLm5hbWUgPSAmIzM0O2VuY3J5cHRlZCYjMzQ7LAogCS5pbnN0YW50aWF0ZSA9IGVuY3J5cHRlZF9pbnN0YW50aWF0ZSwKIAkudXBkYXRlID0gZW5jcnlwdGVkX3VwZGF0ZSwKIAkuZGVzdHJveSA9IGVuY3J5cHRlZF9kZXN0cm95LAomIzQzOwkuemVyb2l6ZSA9IGVuY3J5cHRlZF96ZXJvaXplLAogCS5kZXNjcmliZSA9IHVzZXJfZGVzY3JpYmUsCiAJLnJlYWQgPSBlbmNyeXB0ZWRfcmVhZCwKIH07CmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2tleS5jIGIvc2VjdXJpdHkva2V5cy9rZXkuYwppbmRleCBiMzRhNjRkODFkNDdhLi41NjczZGNjOGM1ZDIzIDEwMDY0NAotLS0gYS9zZWN1cml0eS9rZXlzL2tleS5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMva2V5LmMKQEAgLTEyLDYgJiM0MzsxMiw3IEBACiAjaW5jbHVkZSAmbHQ7bGludXgvc2xhYi5oJmd0OwogI2luY2x1ZGUgJmx0O2xpbnV4L3NlY3VyaXR5LmgmZ3Q7CiAjaW5jbHVkZSAmbHQ7bGludXgvd29ya3F1ZXVlLmgmZ3Q7CiYjNDM7I2luY2x1ZGUgJmx0O2xpbnV4L2NyYXNoX2NvcmUuaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9yYW5kb20uaCZndDsKICNpbmNsdWRlICZsdDtsaW51eC9lcnIuaCZndDsKICNpbmNsdWRlICYjMzQ7aW50ZXJuYWwuaCYjMzQ7CkBAIC0xMjY4LDYgJiM0MzsxMjY5LDQ0IEBAIHZvaWQgdW5yZWdpc3Rlcl9rZXlfdHlwZShzdHJ1Y3Qga2V5X3R5cGUgKmt0eXBlKQogfQogRVhQT1JUX1NZTUJPTCh1bnJlZ2lzdGVyX2tleV90eXBlKTsKIAomIzQzOyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRQomIzQzOy8qIENhbGxlZCBmYXIgaW50byB2cGFuaWMgZnJvbSBjcmFzaF9jb3JlLmMgd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kCiYjNDM7ICogcHJlZW1wdGlvbiBkaXNhYmxlZAomIzQzOyAqLwomIzQzO3N0YXRpYyBpbnQga2V5X2NyYXNoX3plcm9pemUoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyBhY3Rpb24sCiYjNDM7CQl2b2lkICpkYXRhKQomIzQzO3sKJiM0MzsJc3RydWN0IHJiX25vZGUgKm5vZGU7CiYjNDM7CiYjNDM7CS8qIElmIHdlIGNhbiYjMzk7dCBhY3F1aXJlIHRoZSBsb2NrLCB0aGUgcmJ0cmVlIG1pZ2h0IGJlIGluIGFuIGluY29uc2lzdGVudAomIzQzOwkgKiBzdGF0ZS4gVGhhdCYjMzk7cyBhbGwgd2UgY2FuIGRvIHRoZW4sIGFzIHRoZXJlJiMzOTtzIG5vIHBvaW50IHRvIHdhaXRpbmcKJiM0MzsJICogYXQgdGhpcyBzdGFnZS4KJiM0MzsJICovCiYjNDM7CWlmICghc3Bpbl90cnlsb2NrKCZhbXA7a2V5X3NlcmlhbF9sb2NrKSkgewomIzQzOwkJcHJfY3JpdCgmIzM0O2NyYXNoX3plcm9pemU6IGNhbiYjMzk7dCBhY3F1aXJlIGtleV9zZXJpYWxfbG9jay4gc2tpcHBpbmcga2V5cmluZ3MuXG4mIzM0Oyk7CiYjNDM7CQlyZXR1cm4gTk9USUZZX0RPTkU7CiYjNDM7CX0KJiM0MzsKJiM0MzsJZm9yIChub2RlID0gcmJfZmlyc3QoJmFtcDtrZXlfc2VyaWFsX3RyZWUpOyBub2RlOyBub2RlID0gcmJfbmV4dChub2RlKSkgewomIzQzOwkJc3RydWN0IGtleSAqa2V5ID0gcmJfZW50cnkobm9kZSwgc3RydWN0IGtleSwgc2VyaWFsX25vZGUpOwomIzQzOwomIzQzOwkJaWYgKGtleS0mZ3Q7dHlwZSA9PSAmYW1wO2tleV90eXBlX2tleXJpbmcgfHwKJiM0MzsJCSAgICBrZXktJmd0O3N0YXRlID09IEtFWV9JU19VTklOU1RBTlRJQVRFRCkKJiM0MzsJCQljb250aW51ZTsKJiM0MzsKJiM0MzsJCS8qIGN1c3RvbSB6ZXJvaXplIHNpbmNlIGZyZWUmIzM5O2luZyBpc24mIzM5O3Qgc2FmZSBhdCB0aGlzIHBvaW50ICovCiYjNDM7CQlpZiAoa2V5LSZndDt0eXBlLSZndDt6ZXJvaXplKQomIzQzOwkJCWtleS0mZ3Q7dHlwZS0mZ3Q7emVyb2l6ZShrZXkpOwomIzQzOwl9CiYjNDM7CS8qIG9mZiB0byBrZXhlYygpISAqLwomIzQzOwlyZXR1cm4gTk9USUZZX0RPTkU7CiYjNDM7fQomIzQzOwomIzQzO3N0YXRpYyBzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sga2V5X2NyYXNoX3plcm9pemVfbmIgPSB7CiYjNDM7CS5ub3RpZmllcl9jYWxsID0ga2V5X2NyYXNoX3plcm9pemUKJiM0Mzt9OwomIzQzOyNlbmRpZiAvKiBDT05GSUdfQ1JBU0hfWkVST0laRSAqLwomIzQzOwogLyoKICAqIEluaXRpYWxpc2UgdGhlIGtleSBtYW5hZ2VtZW50IHN0YXRlLgogICovCkBAIC0xMjkwLDQgJiM0MzsxMzI5LDkgQEAgdm9pZCBfX2luaXQga2V5X2luaXQodm9pZCkKIAogCXJiX2luc2VydF9jb2xvcigmYW1wO3Jvb3Rfa2V5X3VzZXIubm9kZSwKIAkJCSZhbXA7a2V5X3VzZXJfdHJlZSk7CiYjNDM7CiYjNDM7I2lmZGVmIENPTkZJR19DUkFTSF9aRVJPSVpFCiYjNDM7CWF0b21pY19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcigmYW1wO2NyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCwKJiM0MzsJCQkmYW1wO2tleV9jcmFzaF96ZXJvaXplX25iKTsKJiM0MzsjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jIGIvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmMKaW5kZXggMDUwOWQ5OTU1ZjJhNi4uZjE1OWZhZWFmZTIzYSAxMDA2NDQKLS0tIGEvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmMKJiM0MzsmIzQzOyYjNDM7IGIvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmMKQEAgLTMyNSwxMSAmIzQzOzMyNSwyNSBAQCBzdGF0aWMgdm9pZCB0cnVzdGVkX2Rlc3Ryb3koc3RydWN0IGtleSAqa2V5KQogCWtmcmVlX3NlbnNpdGl2ZShrZXktJmd0O3BheWxvYWQuZGF0YVswXSk7CiB9CiAKJiM0MztzdGF0aWMgdm9pZCB0cnVzdGVkX3plcm9pemUoc3RydWN0IGtleSAqa2V5KQomIzQzO3sKJiM0MzsJc3RydWN0IHRydXN0ZWRfa2V5X3BheWxvYWQgKnAgPSBrZXktJmd0O3BheWxvYWQuZGF0YVswXTsKJiM0MzsKJiM0MzsJaWYgKCFwKQomIzQzOwkJcmV0dXJuOwomIzQzOwomIzQzOwltZW16ZXJvX2V4cGxpY2l0KHAtJmd0O2tleSwgc2l6ZW9mKHAtJmd0O2tleSkpOwomIzQzOwltZW16ZXJvX2V4cGxpY2l0KHAtJmd0O2Jsb2IsIHNpemVvZihwLSZndDtibG9iKSk7CiYjNDM7CXAtJmd0O2tleV9sZW4gPSAwOwomIzQzOwlwLSZndDtibG9iX2xlbiA9IDA7CiYjNDM7fQomIzQzOwogc3RydWN0IGtleV90eXBlIGtleV90eXBlX3RydXN0ZWQgPSB7CiAJLm5hbWUgPSAmIzM0O3RydXN0ZWQmIzM0OywKIAkuaW5zdGFudGlhdGUgPSB0cnVzdGVkX2luc3RhbnRpYXRlLAogCS51cGRhdGUgPSB0cnVzdGVkX3VwZGF0ZSwKIAkuZGVzdHJveSA9IHRydXN0ZWRfZGVzdHJveSwKJiM0MzsJLnplcm9pemUgPSB0cnVzdGVkX3plcm9pemUsCiAJLmRlc2NyaWJlID0gdXNlcl9kZXNjcmliZSwKIAkucmVhZCA9IHRydXN0ZWRfcmVhZCwKIH07CmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3VzZXJfZGVmaW5lZC5jIGIvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuYwppbmRleCA2Zjg4YjUwN2Y5Mjc5Li5hZGU5NWRjMjQ4MWRmIDEwMDY0NAotLS0gYS9zZWN1cml0eS9rZXlzL3VzZXJfZGVmaW5lZC5jCiYjNDM7JiM0MzsmIzQzOyBiL3NlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmMKQEAgLTE1LDYgJiM0MzsxNSw3IEBACiAjaW5jbHVkZSAmIzM0O2ludGVybmFsLmgmIzM0OwogCiBzdGF0aWMgaW50IGxvZ29uX3ZldF9kZXNjcmlwdGlvbihjb25zdCBjaGFyICpkZXNjKTsKJiM0MztzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KTsKIAogLyoKICAqIHVzZXIgZGVmaW5lZCBrZXlzIHRha2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgZGVzY3JpcHRpb24gYW5kIGFuCkBAIC0yOCw2ICYjNDM7MjksNyBAQCBzdHJ1Y3Qga2V5X3R5cGUga2V5X3R5cGVfdXNlciA9IHsKIAkudXBkYXRlCQkJPSB1c2VyX3VwZGF0ZSwKIAkucmV2b2tlCQkJPSB1c2VyX3Jldm9rZSwKIAkuZGVzdHJveQkJPSB1c2VyX2Rlc3Ryb3ksCiYjNDM7CS56ZXJvaXplCQk9IHVzZXJfemVyb2l6ZSwKIAkuZGVzY3JpYmUJCT0gdXNlcl9kZXNjcmliZSwKIAkucmVhZAkJCT0gdXNlcl9yZWFkLAogfTsKQEAgLTQ4LDYgJiM0Mzs1MCw3IEBAIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9sb2dvbiA9IHsKIAkudXBkYXRlCQkJPSB1c2VyX3VwZGF0ZSwKIAkucmV2b2tlCQkJPSB1c2VyX3Jldm9rZSwKIAkuZGVzdHJveQkJPSB1c2VyX2Rlc3Ryb3ksCiYjNDM7CS56ZXJvaXplCQk9IHVzZXJfemVyb2l6ZSwKIAkuZGVzY3JpYmUJCT0gdXNlcl9kZXNjcmliZSwKIAkudmV0X2Rlc2NyaXB0aW9uCT0gbG9nb25fdmV0X2Rlc2NyaXB0aW9uLAogfTsKQEAgLTE1Miw2ICYjNDM7MTU1LDE0IEBAIHZvaWQgdXNlcl9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSkKIAogRVhQT1JUX1NZTUJPTF9HUEwodXNlcl9kZXN0cm95KTsKIAomIzQzO3N0YXRpYyB2b2lkIHVzZXJfemVyb2l6ZShzdHJ1Y3Qga2V5ICprZXkpCiYjNDM7ewomIzQzOwlzdHJ1Y3QgdXNlcl9rZXlfcGF5bG9hZCAqdXBheWxvYWQgPSBrZXktJmd0O3BheWxvYWQuZGF0YVswXTsKJiM0MzsKJiM0MzsJaWYgKHVwYXlsb2FkKQomIzQzOwkJbWVtemVyb19leHBsaWNpdCh1cGF5bG9hZC0mZ3Q7ZGF0YSwgdXBheWxvYWQtJmd0O2RhdGFsZW4pOwomIzQzO30KJiM0MzsKIC8qCiAgKiBkZXNjcmliZSB0aGUgdXNlciBrZXkKICAqLwo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4zLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMDwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiA2NTc0CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMzI1MAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXNpcyBvZiB0aGUgJiMzOTtDT05GSUdfQ1JBU0hfWkVST0laRSYjMzk7IEZlYXR1cmUgZm9yIEZ1enppbmcqKgoKQWxyaWdodCwgbGV0JiMzOTtzIGJyZWFrIHRoaXMgZG93bi4gV2UgaGF2ZSBhIG5ldyBmZWF0dXJlLCBgQ09ORklHX0NSQVNIX1pFUk9JWkVgLCBkZXNpZ25lZCB0byB6ZXJvIG91dCBzZW5zaXRpdmUgZGF0YSAoc2VjcmV0cywga2V5cywgZXRjLikgZHVyaW5nIGEgcGFuaWMgb3Iga2VybmVsIGNyYXNoLiBUaGUgY29yZSBvZiB0aGlzIGZ1bmN0aW9uYWxpdHkgbGllcyB3aXRoaW4gYGtlcm5lbC9jcmFzaF9jb3JlLmNgLCBzcGVjaWZpY2FsbHkgdGhlIGBfX2NyYXNoX2tleGVjYCBmdW5jdGlvbiwgd2hpY2ggaXMgdHJpZ2dlcmVkIHdoZW4gYGtleGVjX2NyYXNoX2ltYWdlYCBpcyBub24tTlVMTC4gVGhpcyBpbmRpY2F0ZXMgdGhlIHByZXNlbmNlIG9mIGEgY3Jhc2gga2VybmVsIGxvYWRlZCB1c2luZyBga2V4ZWNfbG9hZGAgb3IgYGtleGVjX2ZpbGVfbG9hZGAgd2l0aCBgS0VYRUNfT05fQ1JBU0hgLiBUaGlzIGZ1bmN0aW9uIGNhbGxzIGBjcmFzaF96ZXJvaXplKClgLCB3aGljaCBpdGVyYXRlcyBvdmVyIGEgbGlzdCBvZiBub3RpZmllcnMgcmVnaXN0ZXJlZCBieSBzdWJzeXN0ZW1zIGxpa2UgYHNlY3JldG1lbWAgYW5kIGBrZXlzYCwgdWx0aW1hdGVseSB6ZXJvaW5nIG91dCBzcGVjaWZpYyBtZW1vcnkgcmVnaW9ucy4KClRoZSBrZXkgcXVlc3Rpb24gaXMsIGNhbiB0aGlzIGJlIGVmZmVjdGl2ZWx5IGZ1enplZCBieSBzeXprYWxsZXI/IFN5emthbGxlciYjMzk7cyB1c3VhbCB3b3JrZmxvdyBhdm9pZHMgcGFuaWNzIGJlY2F1c2UgdGhleSYjMzk7cmUgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgYnVncywgYW5kIHRoZSBmdXp6ZXIgbG9zZXMgY29udHJvbCBvbmNlIGEgcGFuaWMgb2NjdXJzIChyZWJvb3RzIHRoZSBWTSwgbG9zaW5nIHRoZSBzZXNzaW9uKS4gVGhlIGFpbSBpcyB0byBmaW5kIG5vcm1hbCBrZXJuZWwgYnVncy4gSWYgYSBwYW5pYyAqZG9lcyogaGFwcGVuLCB0aGUgZnV6emVyIGxvZ3MgdGhlIGNyYXNoIGFuZCByZXN0YXJ0cywgZWZmZWN0aXZlbHkgbm90IGZ1enppbmcgdGhlIHBhbmljIGhhbmRsZXIgaXRzZWxmLgoKVGhlIGBjcmFzaF96ZXJvaXplYCBjb2RlIHBhdGggaXMgcmVhY2hhYmxlICpvbmx5KiBpZiBhIGNyYXNoIGtlcm5lbCBpcyBsb2FkZWQgKmFuZCogYSBwYW5pYyBpcyB0cmlnZ2VyZWQuIFdoaWxlIHN5emthbGxlciAqY291bGQqIHBvdGVudGlhbGx5IHVzZSBga2V4ZWNfbG9hZGAgdG8gbG9hZCBhIGNyYXNoIGtlcm5lbCBhbmQgdGhlbiB0cmlnZ2VyIGEgcGFuaWMgdmlhIFN5c1JxLWMgb3IgYSBjcmFmdGVkIHN5c3RlbSBjYWxsIChvciBieSB0cmlnZ2VyaW5nIGEgYnVnIHdpdGggY3Jhc2gpLCBzeXprYWxsZXIgZG9lc24mIzM5O3QgdXN1YWxseSBkbyB0aGlzLiBJdCYjMzk7cyBub3QgdGhlIHByaW1hcnkgZm9jdXMuIEZ1enppbmcgcGFuaWMgaGFuZGxlcnMgaXMgbmljaGUgYmVjYXVzZSB0aGUgZnV6emVyIGxvc2VzIGNvbnRyb2wgYWZ0ZXIgdGhlIHBhbmljOyB0aGlzIG1ha2VzIGVmZmVjdGl2ZSBjb3ZlcmFnZS1ndWlkZWQgZnV6emluZyBkaWZmaWN1bHQuCgpUaGUgbm90aWZpZXJzIHdpdGhpbiB0aGlzIHBhdGNoIGFyZSBgc2VjcmV0bWVtX2NyYXNoX3plcm9pemVgIGFuZCB2YXJpb3VzIGBrZXlfY3Jhc2hfemVyb2l6ZWAgZnVuY3Rpb25zLiBUaGV5JiMzOTtyZSBleGVjdXRlZCBpbiB0aGUgcGFuaWMgY29udGV4dC4gVG8gZnV6eiB0aGVtLCB3ZSYjMzk7ZCBuZWVkIHRvIGxvYWQgYSBjcmFzaCBrZXJuZWwsIHRyaWdnZXIgYSBwYW5pYywgYW5kIGVuc3VyZSBzZWNyZXRzIG9yIGtleSBtYXRlcmlhbCBhcmUgYWxsb2NhdGVkLiBUaGUgcHJvbXB0IGFsc28gc3RhdGVzIHRvIGV4Y2x1ZGUgY2VydGFpbiBzY2VuYXJpb3MgbGlrZSBgLnJlbW92ZWAsIGAuc2h1dGRvd25gLCBldGMuLCB0aGF0IG9ubHkgZXhlY3V0ZSBkdXJpbmcgZHJpdmVyIHVuYmluZGluZy4gVGhpcyBjYXNlIGlzIHNpbWlsYXIsIGJlY2F1c2UgaXQmIzM5O3Mgb25seSBleGVjdXRlZCBvbiBjcmFzaC4KClRoZSBwcm9tcHQsIGhvd2V2ZXIsIGZvY3VzZXMgb24gKnJlYWNoYWJpbGl0eSosIGFuZCB0aGlzIGlzIHJlYWNoYWJsZSwgKmV2ZW4gaWYgaGFyZCB0byBmdXp6Ki4gQ29kZSB0aGF0IGlzIGV4cGxpY2l0bHkgdW5yZWFjaGFibGUsIG9yIHRoYXQgb25seSBleGVjdXRlcyBpbiB1bnZpcnR1YWxpemFibGUgZW52aXJvbm1lbnRzLCBpcyB3aGF0IGlzIHRvIGJlIGV4Y2x1ZGVkLgoKU28sIHdoaWxlIGl0IGlzICpkaWZmaWN1bHQqIHRvIGZ1enogdGhpcyBwYXRoIHVzaW5nIHN5emthbGxlcuKAmXMgY3VycmVudCB3b3JrZmxvdyAoYmVjYXVzZSBpdCByZXF1aXJlcyBkZWxpYmVyYXRlIHBhbmljIHRyaWdnZXJpbmcgYW5kIGEgZGlmZmVyZW50IHNldHVwKSwgaXQmIzM5O3MgKnRlY2huaWNhbGx5KiByZWFjaGFibGUuIFRoZSBmZWF0dXJlIGlzIGZ1bmN0aW9uYWwsIGFuZCB0aGlzIGNvZGUgemVyb2l6ZXMgbWVtb3J5IGZvciBzZWN1cml0eSBwdXJwb3Nlcy4gVGhlcmVmb3JlLCBldmVuIHRob3VnaCB0aGUgcHJpbWFyeSBmdXp6aW5nIGJlbmVmaXQgaXMgbG93ZXIsIGl0IHNob3VsZCBiZSBtYXJrZWQgYXMgcG90ZW50aWFsbHkgZnV6emVkIGJlY2F1c2UgaXQgbW9kaWZpZXMgY29yZSBrZXJuZWwgbG9naWMuIFRodXMsIG15IGNvbmNsdXNpb24gaXMgdGhhdCBgV29ydGhGdXp6aW5nPXRydWVgLgoKRm9yIHN5emthbGxlciB0byB0YXJnZXQgdGhpcywgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5OiBgQ09ORklHX0NSQVNIX1pFUk9JWkVgLCBgQ09ORklHX0NSQVNIX0RVTVBgLCBgQ09ORklHX0tFWEVDX0NPUkVgLCBhbmQgcHJvYmFibHkgYENPTkZJR19TRUNSRVRNRU1gLCBgQ09ORklHX0tFWVNgLCBgQ09ORklHX0VOQ1JZUFRFRF9LRVlTYCwgYENPTkZJR19UUlVTVEVEX0tFWVNgIGFuZCBgQ09ORklHX0JJR19LRVlTYC4KClRoZSBwb3RlbnRpYWxseSBpbnRlcmVzdGluZyBzeW1ib2xzIGZvciBmdXp6aW5nIGFyZTogYGNyYXNoX3plcm9pemVgLCBgc2VjcmV0bWVtX2NyYXNoX3plcm9pemVgLCBga2V5X2NyYXNoX3plcm9pemVgLCBgYmlnX2tleV96ZXJvaXplYCwgYGVuY3J5cHRlZF96ZXJvaXplYCwgYHRydXN0ZWRfemVyb2l6ZWAsIGFuZCBgdXNlcl96ZXJvaXplYC4gSG93ZXZlciwgYGNyYXNoX3plcm9pemVgIGlzIHN0YXRpYyBzbyBpdCBtaWdodCBiZSBpbmxpbmVkLiBUaGUgb3RoZXJzIGFyZSBmdW5jdGlvbiBwb2ludGVycy4KCldoaWxlIHRoZSBwcmltYXJ5IGdvYWwgb2Ygc3l6a2FsbGVyIGlzIHRvIGZpbmQgYnVncyBpbiAqbm9ybWFsKiBrZXJuZWwgb3BlcmF0aW9uLCB0aGlzIHBhdGNoIGludHJvZHVjZXMgYSBmdW5jdGlvbmFsIGNoYW5nZSB0aGF0IGNhbiBiZSByZWFjaGVkIGFuZCBpcyBzZWN1cml0eS1yZWxldmFudC4gSSB3aWxsIHJldHVybiBgV29ydGhGdXp6aW5nPXRydWVgIHdpdGggdGhlIGxpc3Qgb2Ygc3ltYm9scyBhbmQgY29uZmlncy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD40LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgU0VDUkVUTUVNJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O21tL0tjb25maWc9MTMzOD1jb25maWcgTUVNRkRfQ1JFQVRFXG4tLVxubW0vS2NvbmZpZy0xMzQwLVxubW0vS2NvbmZpZzoxMzQxOmNvbmZpZyBTRUNSRVRNRU1cbm1tL0tjb25maWctMTM0Mi1cdGRlZmF1bHQgeVxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjUvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDEwNzc3CgkJCQkJCQlvdXRwdXQ6IDE4CgkJCQkJCQl0aG91Z2h0czogMzQKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgdGFrZSBvbiB0aG9zZSBrZXkgY29uY2VwdHMuCgoqKlZlcmlmeWluZyBLZXkgU2VjdXJpdHkgTWVhc3VyZXMqKgoKQWxyaWdodCwgdGhlIGluaXRpYWwgYXNzZXNzbWVudCBvZiBgU0VDUkVUTUVNYCBjaGVja3Mgb3V0IOKAkyB0aGF0JiMzOTtzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gbWV0aG9kaWNhbGx5IHJldmlldyB0aGUgb3RoZXIga2V5IGFyZWFzIHdlIGRpc2N1c3NlZDogYEJJR19LRVlTYCwgYEVOQ1JZUFRFRF9LRVlTYCwgYW5kIGBUUlVTVEVEX0tFWVNgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBpbXBsZW1lbnRhdGlvbiBhbGlnbnMgd2l0aCBiZXN0IHByYWN0aWNlcyBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gZ2FwcyBpbiB0aGUgb3ZlcmFsbCBzZWN1cml0eSBwb3N0dXJlLiBJJiMzOTtsbCBuZWVkIHRvIGRpZyBpbnRvIHRoZSBzcGVjaWZpY3Mgb2YgZWFjaCB0byBjb25maXJtIHRoZXkgYXJlIGNvbmZpZ3VyZWQgYW5kIG9wZXJhdGluZyBpbiB0aGUgbW9zdCBzZWN1cmUgd2F5IHBvc3NpYmxlLCBhbmQgdGhhdCB0aGV5IGFyZSBhcHByb3ByaWF0ZWx5IGludGVncmF0ZWQgYW5kIG1hbmFnZWQuIFRoZSBnb2FsIGlzIGEgY29tcHJlaGVuc2l2ZSBhbmQgcm9idXN0IHNlY3VyaXR5IG1vZGVsLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAxPC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2NvbmZpZyBCSUdfS0VZUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzZWN1cml0eS9rZXlzL0tjb25maWc9NDM9Y29uZmlnIFBFUlNJU1RFTlRfS0VZUklOR1Ncbi0tXG5zZWN1cml0eS9rZXlzL0tjb25maWctNTgtXG5zZWN1cml0eS9rZXlzL0tjb25maWc6NTk6Y29uZmlnIEJJR19LRVlTXG5zZWN1cml0eS9rZXlzL0tjb25maWctNjAtXHRib29sIFwmIzM0O0xhcmdlIHBheWxvYWQga2V5c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMDUyCgkJCQkJCQlvdXRwdXQ6IDIwCgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD44LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgRU5DUllQVEVEX0tFWVMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7c2VjdXJpdHkva2V5cy9LY29uZmlnPTgyPWVuZGlmXG5zZWN1cml0eS9rZXlzL0tjb25maWctODMtXG5zZWN1cml0eS9rZXlzL0tjb25maWc6ODQ6Y29uZmlnIEVOQ1JZUFRFRF9LRVlTXG5zZWN1cml0eS9rZXlzL0tjb25maWctODUtXHR0cmlzdGF0ZSBcJiMzNDtFTkNSWVBURUQgS0VZU1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzAyIDA0OjAxPC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExMTQ1CgkJCQkJCQlvdXRwdXQ6IDE5CgkJCQkJCQl0aG91Z2h0czogMAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIFRSVVNURURfS0VZUyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtzZWN1cml0eS9rZXlzL0tjb25maWc9NTk9Y29uZmlnIEJJR19LRVlTXG4tLVxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTY5LVxuc2VjdXJpdHkva2V5cy9LY29uZmlnOjcwOmNvbmZpZyBUUlVTVEVEX0tFWVNcbnNlY3VyaXR5L2tleXMvS2NvbmZpZy03MS1cdHRyaXN0YXRlIFwmIzM0O1RSVVNURUQgS0VZU1wmIzM0O1xuLS1cbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWc9ND1jb25maWcgSEFWRV9UUlVTVEVEX0tFWVNfREVCVUdcbi0tXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTYtXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjc6Y29uZmlnIFRSVVNURURfS0VZU19ERUJVR1xuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy04LVx0Ym9vbCBcJiMzNDtEZWJ1ZyB0cnVzdGVkIGtleXNcJiMzNDtcbi0tXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTIxLVxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZzoyMjpjb25maWcgVFJVU1RFRF9LRVlTX1RQTVxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy0yMy1cdGJvb2wgXCYjMzQ7VFBNLWJhc2VkIHRydXN0ZWQga2V5c1wmIzM0O1xuLS1cbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWctNDAtXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjQxOmNvbmZpZyBUUlVTVEVEX0tFWVNfVEVFXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTQyLVx0Ym9vbCBcJiMzNDtURUUtYmFzZWQgdHJ1c3RlZCBrZXlzXCYjMzQ7XG4tLVxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy01MC1cbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWc6NTE6Y29uZmlnIFRSVVNURURfS0VZU19DQUFNXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTUyLVx0Ym9vbCBcJiMzNDtDQUFNLWJhc2VkIHRydXN0ZWQga2V5c1wmIzM0O1xuLS1cbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWctNjEtXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjYyOmNvbmZpZyBUUlVTVEVEX0tFWVNfRENQXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTYzLVx0Ym9vbCBcJiMzNDtEQ1AtYmFzZWQgdHJ1c3RlZCBrZXlzXCYjMzQ7XG4tLVxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy03MC1cbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWc6NzE6Y29uZmlnIFRSVVNURURfS0VZU19QS1dNXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTcyLVx0Ym9vbCBcJiMzNDtQS1dNLWJhc2VkIHRydXN0ZWQga2V5c1wmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjExLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMTY0NgoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDI5CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBoZXJlJiMzOTtzIG15IHRha2Ugb24gdGhvc2UgaW5pdGlhbCB0aG91Z2h0czoKCioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycyoqCgpBbHJpZ2h0LCB0aGUgYFRSVVNURURfS0VZU2Agc2V0dGluZyBhcHBlYXJzIHRvIGJlIGFzIGV4cGVjdGVkOyB0aGF0IHNlZW1zIHN0cmFpZ2h0Zm9yd2FyZC4gTm93LCBsZXQmIzM5O3MgcGl2b3QgYW5kIHZlcmlmeSB0aGUgdmFsaWRpdHkgb2YgdGhlIGBDUkFTSF9EVU1QYCBjb25maWd1cmF0aW9uIHBhcmFtZXRlci4gSXMgdGhpcyB0aGUgc3BlY2lmaWMgY29uZmlnIHdlJiMzOTtyZSBhY3R1YWxseSBsb29raW5nIGZvcj8gTmVlZCB0byBjb25maXJtIGl0JiMzOTtzIGJlaGF2aW5nIGFzIGludGVuZGVkLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtjb25maWcgQ1JBU0hfRFVNUCYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvS2NvbmZpZy5rZXhlYz04OT1jb25maWcgS0VYRUNfSlVNUFxuLS1cbmtlcm5lbC9LY29uZmlnLmtleGVjLTk2LVxua2VybmVsL0tjb25maWcua2V4ZWM6OTc6Y29uZmlnIENSQVNIX0RVTVBcbmtlcm5lbC9LY29uZmlnLmtleGVjLTk4LVx0Ym9vbCBcJiMzNDtrZXJuZWwgY3Jhc2ggZHVtcHNcJiMzNDtcbi0tXG5rZXJuZWwvS2NvbmZpZy5rZXhlYz0xMjk9Y29uZmlnIENSQVNIX0RNX0NSWVBUX0NPTkZJR1Ncbi0tXG5rZXJuZWwvS2NvbmZpZy5rZXhlYy0xMzUtXG5rZXJuZWwvS2NvbmZpZy5rZXhlYzoxMzY6Y29uZmlnIENSQVNIX0RVTVBfS1VOSVRfVEVTVFxua2VybmVsL0tjb25maWcua2V4ZWMtMTM3LVx0dHJpc3RhdGUgXCYjMzQ7VW5pdCBUZXN0cyBmb3Iga2VybmVsIGNyYXNoIGR1bXBzXCYjMzQ7IGlmICFLVU5JVF9BTExfVEVTVFNcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTE5NTgKCQkJCQkJCW91dHB1dDogMTYKCQkJCQkJCXRob3VnaHRzOiA0OAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+T2theSwgaGVyZSYjMzk7cyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOgoKKipDb25maWd1cmF0aW9uIENoZWNrbGlzdCoqCgpSaWdodCwgYENSQVNIX0RVTVBgLCBjb25maXJtZWQuIFRoYXQmIzM5O3MgdGhlIGNvcnJlY3QgZmxhZy4gQW5kIGdvb2QsIGBDUkFTSF9aRVJPSVpFYCBpcyB0aGUgbmV3IHNldHRpbmcgdG8gZW1wbG95LgoKTm93LCBsZXQmIzM5O3MganVzdCBkbyBhIHF1aWNrIHNjYW4gdG8gbWFrZSBzdXJlIHdlIGhhdmVuJiMzOTt0IG92ZXJsb29rZWQgYW55IG90aGVyIGNydWNpYWwgY29uZmlndXJhdGlvbnMuIEFoYSwgeWVzLCB3ZSBjYW4mIzM5O3QgZm9yZ2V0IGBLRVlTYC4gV2UmIzM5O2xsIGRlZmluaXRlbHkgbmVlZCB0aGF0IG9uZSBmb3IgdGhlIGtleSBtYW5hZ2VtZW50IHNldHVwLiBPa2F5LCBtb3Zpbmcgb24uLi4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Y29uZmlnIEtFWVMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9jbG9ja3NvdXJjZS9LY29uZmlnPTI0Mj1jb25maWcgTlNQSVJFX1RJTUVSXG4tLVxuZHJpdmVycy9jbG9ja3NvdXJjZS9LY29uZmlnLTI0Ny1cbmRyaXZlcnMvY2xvY2tzb3VyY2UvS2NvbmZpZzoyNDg6Y29uZmlnIEtFWVNUT05FX1RJTUVSXG5kcml2ZXJzL2Nsb2Nrc291cmNlL0tjb25maWctMjQ5LVx0Ym9vbCBcJiMzNDtLZXlzdG9uZSB0aW1lciBkcml2ZXJcJiMzNDsgaWYgQ09NUElMRV9URVNUXG4tLVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc9MzkzPWNvbmZpZyBJUlFfQ1JPU1NCQVJcbi0tXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy00MDAtXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZzo0MDE6Y29uZmlnIEtFWVNUT05FX0lSUVxuZHJpdmVycy9pcnFjaGlwL0tjb25maWctNDAyLVx0dHJpc3RhdGUgXCYjMzQ7S2V5c3RvbmUgMiBJUlEgY29udHJvbGxlciBJUFwmIzM0O1xuLS1cbmRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnPTEyMT1jb25maWcgREE4WFhfUkVNT1RFUFJPQ1xuLS1cbmRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnLTE0MS1cbmRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnOjE0Mjpjb25maWcgS0VZU1RPTkVfUkVNT1RFUFJPQ1xuZHJpdmVycy9yZW1vdGVwcm9jL0tjb25maWctMTQzLVx0dHJpc3RhdGUgXCYjMzQ7S2V5c3RvbmUgUmVtb3RlcHJvYyBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZz05PWlmIFNPQ19USVxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy0xMC1cbmRyaXZlcnMvc29jL3RpL0tjb25maWc6MTE6Y29uZmlnIEtFWVNUT05FX05BVklHQVRPUl9RTVNTXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnLTEyLVx0dHJpc3RhdGUgXCYjMzQ7S2V5c3RvbmUgUXVldWUgTWFuYWdlciBTdWIgU3lzdGVtXCYjMzQ7XG4tLVxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy0yMi1cbmRyaXZlcnMvc29jL3RpL0tjb25maWc6MjM6Y29uZmlnIEtFWVNUT05FX05BVklHQVRPUl9ETUFcbmRyaXZlcnMvc29jL3RpL0tjb25maWctMjQtXHR0cmlzdGF0ZSBcJiMzNDtUSSBLZXlzdG9uZSBOYXZpZ2F0b3IgUGFja2V0IERNQSBzdXBwb3J0XCYjMzQ7XG4tLVxuZHJpdmVycy91c2IvcGh5L0tjb25maWc9MjM9Y29uZmlnIEZTTF9VU0IyX09UR1xuLS1cbmRyaXZlcnMvdXNiL3BoeS9LY29uZmlnLTMwLVxuZHJpdmVycy91c2IvcGh5L0tjb25maWc6MzE6Y29uZmlnIEtFWVNUT05FX1VTQl9QSFlcbmRyaXZlcnMvdXNiL3BoeS9LY29uZmlnLTMyLVx0dHJpc3RhdGUgXCYjMzQ7S2V5c3RvbmUgVVNCIFBIWSBEcml2ZXJcJiMzNDtcbi0tXG5zZWN1cml0eS9rZXlzL0tjb25maWctNS1cbnNlY3VyaXR5L2tleXMvS2NvbmZpZzo2Om1lbnVjb25maWcgS0VZU1xuc2VjdXJpdHkva2V5cy9LY29uZmlnLTctXHRib29sIFwmIzM0O0VuYWJsZSBhY2Nlc3Mga2V5IHJldGVudGlvbiBzdXBwb3J0XCYjMzQ7XG4tLVxuc2VjdXJpdHkva2V5cy9LY29uZmlnPTI0PWlmIEtFWVNcbnNlY3VyaXR5L2tleXMvS2NvbmZpZy0yNS1cbnNlY3VyaXR5L2tleXMvS2NvbmZpZzoyNjpjb25maWcgS0VZU19SRVFVRVNUX0NBQ0hFXG5zZWN1cml0eS9rZXlzL0tjb25maWctMjctXHRib29sIFwmIzM0O0VuYWJsZSB0ZW1wb3JhcnkgY2FjaGluZyBvZiB0aGUgbGFzdCByZXF1ZXN0X2tleSgpIHJlc3VsdFwmIzM0O1xuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE1LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD5sbG08L3RkPgoJCQk8dGQ+cGF0Y2gtZXZhbHVhdG9yPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCTxiPk1vZGVsOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+Z2VtaW5pLTMuMS1wcm8tcHJldmlldzwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5Ub2tlbnM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT4KCQkJCQkJCWlucHV0OiAxMjczOQoJCQkJCQkJb3V0cHV0OiAyMAoJCQkJCQkJdGhvdWdodHM6IDczNQoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipNeSBBbmFseXNpcyBvZiBaZXJvaXplIEZ1bmN0aW9uIFN5bWJvbHMgZm9yIEZ1enppbmcqKgoKT2theSwgc28gdGhlIGluaXRpYWwgYXNzZXNzbWVudCBpcyBjb3JyZWN0OiBgS0VZU2AgaXMgZGVmaW5pdGVseSB0aGUgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBvcHRpb24gaGVyZS4gTm93LCBJIG5lZWQgdG8gbGlzdCB0aGUgc3ltYm9scyB0aGF0IGFyZSBhc3NvY2lhdGVkIHdpdGggdGhlIHplcm9pemUgZnVuY3Rpb25zLiBMZXQmIzM5O3Mgc2VlLi4uIEkmIzM5O3ZlIGlkZW50aWZpZWQ6IGBjcmFzaF96ZXJvaXplYCwgYHNlY3JldG1lbV9jcmFzaF96ZXJvaXplYCwgYGtleV9jcmFzaF96ZXJvaXplYCwgYGJpZ19rZXlfemVyb2l6ZWAsIGBlbmNyeXB0ZWRfemVyb2l6ZWAsIGB0cnVzdGVkX3plcm9pemVgLCBhbmQgYHVzZXJfemVyb2l6ZWAuCgpBaGEhIE5vdyBJIHJlbWVtYmVyIHRoZSBzdGF0aWMgZGVmaW5pdGlvbnMuIGB1c2VyX3plcm9pemVgIGlzIHN0YXRpYyBpbiBgc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY2AsIGBiaWdfa2V5X3plcm9pemVgIGlzIHN0YXRpYyBpbiBgc2VjdXJpdHkva2V5cy9iaWdfa2V5LmNgLCBgZW5jcnlwdGVkX3plcm9pemVgIGlzIHN0YXRpYyBpbiBgc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuY2AsIGB0cnVzdGVkX3plcm9pemVgIGlzIHN0YXRpYyBpbiBgc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmNgLCBgc2VjcmV0bWVtX2NyYXNoX3plcm9pemVgIGlzIHN0YXRpYyBpbiBgbW0vc2VjcmV0bWVtLmNgLCBga2V5X2NyYXNoX3plcm9pemVgIGlzIHN0YXRpYyBpbiBgc2VjdXJpdHkva2V5cy9rZXkuY2AsIGFuZCBmaW5hbGx5LCBgY3Jhc2hfemVyb2l6ZWAgaXMgc3RhdGljIGluIGBrZXJuZWwvY3Jhc2hfY29yZS5jYC4KClJpZ2h0LCB0aGUgcHJvbXB0IGlzIHB1c2hpbmcgbWUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gSG93ZXZlciwgdGhlc2UgemVyb2l6ZSBmdW5jdGlvbnMgYXJlICp1c2VkKiB2aWEgZnVuY3Rpb24gcG9pbnRlcnMuIFRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4sIHdoaWNoIG1lYW5zIHRoZSBjb21waWxlciAqd29uJiMzOTt0KiBpbmxpbmUgdGhlbS4gVGhleSYjMzk7bGwgaGF2ZSB0aGVpciBvd24gZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3Nlcy4gU28sIHRoZSBzdGF0aWMgZGVjbGFyYXRpb25zIGFyZW4mIzM5O3QgYSBjb25jZXJuIGhlcmUuCgpXYWl0LCBgY3Jhc2hfemVyb2l6ZWAgaXMgY2FsbGVkIGRpcmVjdGx5LCBidXQgaXQgaXNuJiMzOTt0IGFuIGludGVybmFsIGhlbHBlciBmdW5jdGlvbi4gSSBoYXZlIHRvIHRoaW5rLCBpdCAqbWlnaHQqIGJlIGlubGluZWQgaW50byBgX19jcmFzaF9rZXhlY2AuCgpIb3dldmVyLCB0aGUgcHJvYmxlbSBzYXlzIG5vdCB0byBpbmNsdWRlIGZ1bmN0aW9ucyB3aGljaCBhcmUgd2VsbC1rbm93biwgYW5kIGBfX2NyYXNoX2tleGVjYCBzZWVtcyB3ZWxsIGtub3duLiBTbywgSSB3aWxsIHN0aWNrIHRvIGp1c3QgdGhlIHplcm9pemUgZnVuY3Rpb25zLgoKSSYjMzk7dmUgc2Nhbm5lZCB0aGUgY29kZWJhc2UgYW5kIHRoZXJlIGFyZW4mIzM5O3QgYW55IG90aGVyIGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHBhbmljLXRpbWUgc2VjcmV0IHdpcGluZyBsb2dpYyB0aGF0IG5lZWQgdG8gYmUgbGlzdGVkLgoKTm93LCBJJiMzOTttIGdvaW5nIHRvIGRvdWJsZS1jaGVjayBteSBkZWNpc2lvbiBvbiBgV29ydGhGdXp6aW5nYC4gVGhlIHBhdGNoIGludHJvZHVjZXMgbmV3IGZ1bmN0aW9uYWwgbG9naWM6IHdpcGluZyBzZWNyZXRzIG9uIGEgcGFuaWMuIFRoaXMgaXMgYSBzZWN1cml0eSBmZWF0dXJlLCB0cmlnZ2VyZWQgcHJpbWFyaWx5IGJ5IGBrZXhlY19sb2FkYCBjb21iaW5lZCB3aXRoIGEgcGFuaWMuIEl0IGlzIHdvcnRoIGZ1enppbmcgdG8gZW5zdXJlIHRoYXQgaXQgZG9lc24mIzM5O3QgY3Jhc2ggaW4gdW5leHBlY3RlZCB3YXlzIG9yIGludHJvZHVjZSBkZWFkbG9ja3MsIGFsdGhvdWdoIGl0IGlzIGEgcGFuaWMgaGFuZGxlci4gVGhlIHNwaW5sb2NrIGxvZ2ljIGlzIHRoZXJlIHNwZWNpZmljYWxseSB0byBhdm9pZCBkZWFkbG9ja3MuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJiMzOTtsbCBzdGljayB3aXRoIGBXb3J0aEZ1enppbmc9dHJ1ZWAuCgpTbywgdGhlIGNvbmZpZ3VyYXRpb25zIGFuZCBzeW1ib2xzIGFyZToKCioqQ29uZmlnczoqKgpgQ1JBU0hfWkVST0laRWAKYENSQVNIX0RVTVBgCmBTRUNSRVRNRU1gCmBLRVlTYApgQklHX0tFWVNgCmBFTkNSWVBURURfS0VZU2AKYFRSVVNURURfS0VZU2AKCioqU3ltYm9sczoqKgpgY3Jhc2hfemVyb2l6ZWAKYHNlY3JldG1lbV9jcmFzaF96ZXJvaXplYApga2V5X2NyYXNoX3plcm9pemVgCmBiaWdfa2V5X3plcm9pemVgCmBlbmNyeXB0ZWRfemVyb2l6ZWAKYHRydXN0ZWRfemVyb2l6ZWAKYHVzZXJfemVyb2l6ZWAKCkxldCYjMzk7cyBkb3VibGUgY2hlY2suLi4gV2hpbGUgaXQmIzM5O3MgcHJvYmFibHkgbm90IGlubGluZWQgYmVjYXVzZSBpdCBpcyBjYWxsZWQgZGlyZWN0bHkgYW5kIGlzbiYjMzk7dCB1c2VkIGFzIGEgaGVscGVyIGZ1bmN0aW9uLiBJIHdpbGwgYWRkIGBfX2NyYXNoX2tleGVjYCBqdXN0IGluIGNhc2UsIGJ1dCBsZXQgbWUgY2hlY2sgYWdhaW4gdG8gYmUgc3VyZS4uLiBMZXQgbWUgZG8gYSBxdWljayBzY2FuIG9mIGBfX2NyYXNoX2tleGVjYC4uLiBPa2F5LCBJJiMzOTttIGdvaW5nIHRvIHN0aWNrIHRvIHRoZSB6ZXJvaXplIGZ1bmN0aW9ucy4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDE8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7c3RhdGljIHZvaWQgY3Jhc2hfemVyb2l6ZSYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtrZXJuZWwvY3Jhc2hfY29yZS5jPTM5PUVYUE9SVF9TWU1CT0xfR1BMKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7XG5rZXJuZWwvY3Jhc2hfY29yZS5jLTQwLVxua2VybmVsL2NyYXNoX2NvcmUuYzo0MTpzdGF0aWMgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpXG5rZXJuZWwvY3Jhc2hfY29yZS5jLTQyLXtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDIgMDQ6MDE8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTQzNTUKCQkJCQkJCW91dHB1dDogMTkzCgkJCQkJCQl0aG91Z2h0czogMjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPk9rYXksIGhlcmUmIzM5O3MgbXkgaW50ZXJwcmV0YXRpb24gb2YgdGhhdCB0aG91Z2h0IHByb2Nlc3MsIHRhaWxvcmVkIGZvciBhbiBleHBlcnQgYXVkaWVuY2UsIGFuZCB3cml0dGVuIGluIHRoZSBmaXJzdCBwZXJzb246CgoqKk15IFByb2Nlc3NpbmcgUGlwZWxpbmUqKgoKUmlnaHQsIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIGRhdGEsIGFuZCB0aGUgaW1tZWRpYXRlIGltcHJlc3Npb24gaXMgdGhhdCBpdCYjMzk7cyBlc3NlbnRpYWxseSBhIGZpeGVkIHNuYXBzaG90IOKAkyBzdGF0aWMuIEl0IGNvdWxkIGJlIGVtYmVkZGVkIGRpcmVjdGx5IHdpdGhpbiB0aGUgc3Vycm91bmRpbmcgY29udGV4dCAoaW5saW5lZCksIGJ1dCBmcm9tIG15IHBlcnNwZWN0aXZlLCB0aGF0JiMzOTtzIG5vdCBjcml0aWNhbC4gVGhlIGltcG9ydGFudCB0aGluZyBpcyBpdHMgaW1tdXRhYmlsaXR5IGF0IHRoaXMgc3RhZ2UuIEkgZG9uJiMzOTt0IG5lZWQgdG8gd29ycnkgYWJvdXQgZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIG9yIGR5bmFtaWMgdXBkYXRpbmcgZm9yIHRoZSBuZXh0IHN0ZXAuCgpNeSBuZXh0IG9wZXJhdGlvbiB3aWxsIGJlIHRvIHVzZSBhIGRlc2lnbmF0ZWQgZnVuY3Rpb24gb3IgbWV0aG9kLiBJJiMzOTtsbCBpbnZva2UsIG9yIGNhbGwsICBgc2V0LXJlc3VsdHNgLiBUaGlzIGZ1bmN0aW9uIGxpa2VseSBoYW5kbGVzIHRoZSBjb3JlIHByb2Nlc3Mgb2YgaW50ZWdyYXRpbmcgdGhlIHN0YXRpYyBkYXRhLCB0aGUgaW1tdXRhYmxlIGRhdGEsICBpbnRvIHRoZSByZXN0IG9mIHRoZSBjdXJyZW50IHN0YXRlIGFuZCB0aGVuIHVwZGF0aW5nIHRoZSB3b3JraW5nIHJlc3VsdHMuIFRoaXMgY291bGQgaW52b2x2ZSBhbnl0aGluZyBmcm9tIHNpbXBseSBhc3NpZ25pbmcgdGhlIGRhdGEgdG8gYSB2YXJpYWJsZSwgY2FjaGluZyB0aGUgcmVzdWx0LCBvciBwYXNzaW5nIGl0IHRvIHRoZSBuZXh0IG9wZXJhdGlvbiBpbiBhIGJpZ2dlciBwaXBlbGluZS4gVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpY3Mgb2YgYHNldC1yZXN1bHRzYCBhcmUgbm90IGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgY29udGV4dCwgb25seSBpdHMgZXhwZWN0ZWQgcHVycG9zZS4gVGhlIGN1cnJlbnQgZm9jdXMgaXMgdG8gZ2V0IHRoZSBzdGF0aWMgaW5wdXQgaW50byB0aGUgc3lzdGVtLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjE4LzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wMiAwNDowMTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPnNldC1yZXN1bHRzPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q1JBU0hfWkVST0laRSYjMzQ7LAogICAgJiMzNDtDUkFTSF9EVU1QJiMzNDssCiAgICAmIzM0O1NFQ1JFVE1FTSYjMzQ7LAogICAgJiMzNDtLRVlTJiMzNDssCiAgICAmIzM0O0JJR19LRVlTJiMzNDssCiAgICAmIzM0O0VOQ1JZUFRFRF9LRVlTJiMzNDssCiAgICAmIzM0O1RSVVNURURfS0VZUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7c2VjcmV0bWVtX2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7a2V5X2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7YmlnX2tleV96ZXJvaXplJiMzNDssCiAgICAmIzM0O2VuY3J5cHRlZF96ZXJvaXplJiMzNDssCiAgICAmIzM0O3RydXN0ZWRfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDt1c2VyX3plcm9pemUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmZWF0dXJlIHRvIHplcm9pemUgc2Vuc2l0aXZlIHNlY3JldHMgKGtleXMgYW5kIHNlY3JldG1lbSkgZHVyaW5nIGEga2VybmVsIHBhbmljL2NyYXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGV4ZWN1dGVzIHdoZW4gYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkIGFuZCBhIHBhbmljIG9jY3Vycy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlc2UgdGVhcmRvd24gcGF0aHMgZG8gbm90IGludHJvZHVjZSBzZWNvbmRhcnkgZmF1bHRzIG9yIGRlYWRsb2Nrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7Q1JBU0hfWkVST0laRSYjMzQ7LAogICAgJiMzNDtDUkFTSF9EVU1QJiMzNDssCiAgICAmIzM0O1NFQ1JFVE1FTSYjMzQ7LAogICAgJiMzNDtLRVlTJiMzNDssCiAgICAmIzM0O0JJR19LRVlTJiMzNDssCiAgICAmIzM0O0VOQ1JZUFRFRF9LRVlTJiMzNDssCiAgICAmIzM0O1RSVVNURURfS0VZUyYjMzQ7CiAgXSwKICAmIzM0O0ZvY3VzU3ltYm9scyYjMzQ7OiBbCiAgICAmIzM0O2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7c2VjcmV0bWVtX2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7a2V5X2NyYXNoX3plcm9pemUmIzM0OywKICAgICYjMzQ7YmlnX2tleV96ZXJvaXplJiMzNDssCiAgICAmIzM0O2VuY3J5cHRlZF96ZXJvaXplJiMzNDssCiAgICAmIzM0O3RydXN0ZWRfemVyb2l6ZSYjMzQ7LAogICAgJiMzNDt1c2VyX3plcm9pemUmIzM0OwogIF0sCiAgJiMzNDtSZWFzb25pbmcmIzM0OzogJiMzNDtUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmZWF0dXJlIHRvIHplcm9pemUgc2Vuc2l0aXZlIHNlY3JldHMgKGtleXMgYW5kIHNlY3JldG1lbSkgZHVyaW5nIGEga2VybmVsIHBhbmljL2NyYXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGV4ZWN1dGVzIHdoZW4gYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkIGFuZCBhIHBhbmljIG9jY3Vycy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlc2UgdGVhcmRvd24gcGF0aHMgZG8gbm90IGludHJvZHVjZSBzZWNvbmRhcnkgZmF1bHRzIG9yIGRlYWRsb2Nrcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8L3Rib2R5PgoJPC90YWJsZT4KCgk8ZGl2IGlkPSJsbG1fc3VtbWFyeV90YWJsZV9kaXYiIHN0eWxlPSJtYXJnaW46IDIwcHggMDsiPgoJCTx0YWJsZSBjbGFzcz0ibGlzdF90YWJsZSI+CgkJCTxjYXB0aW9uPkxMTSBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIFRva2VuczwvdGg+CgkJCQkJPHRoPkF2ZyBUb2tlbnM8L3RoPgoJCQkJCTx0aD5Ub3RhbCBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJCTx0aD5BdmcgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCTwvdHI+CgkJCTwvdGhlYWQ+CgkJCTx0Ym9keSBpZD0ibGxtX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0idG9vbF9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+VG9vbCBDYWxscyBTdW1tYXJ5OjwvY2FwdGlvbj4KCQkJPHRoZWFkPgoJCQkJPHRyPgoJCQkJCTx0aD5Ub3RhbCBDYWxsczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJ0b29sX3N1bW1hcnlfc3RhdHNfYm9keSI+PC90Ym9keT4KCQk8L3RhYmxlPgoJPC9kaXY+CgoJPGRpdiBpZD0iZHVyYXRpb25fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoJPGRpdiBpZD0idG9rZW5fY2hhcnRfZGl2IiBzdHlsZT0id2lkdGg6IDEwMCU7IG1hcmdpbjogMjBweCAwOyBib3JkZXI6IDFweDsiPjwvZGl2PgoKCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vd3d3Lmdvb2dsZS5jb20vanNhcGkiPjwvc2NyaXB0PgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgoJCWdvb2dsZS5sb2FkKCJ2aXN1YWxpemF0aW9uIiwgIjEiLCB7cGFja2FnZXM6WyJjb3JlY2hhcnQiXX0pOwoJCWdvb2dsZS5zZXRPbkxvYWRDYWxsYmFjayhkcmF3Q2hhcnRzKTsKCgkJZnVuY3Rpb24gZHJhd0NoYXJ0cygpIHsKCQkJY29uc3QgcmF3RGF0YSA9IFt7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA0OjAwOjM2Ljg1NjA0NjQzM1oiLCJTZXEiOjAsIk5lc3RpbmciOjAsIlR5cGUiOiJmbG93IiwiTmFtZSI6InBhdGNoLXRyaWFnZSIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjcwMjY3MzM3ODYzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNSQVNIX1pFUk9JWkVcIixcbiAgICBcIkNSQVNIX0RVTVBcIixcbiAgICBcIlNFQ1JFVE1FTVwiLFxuICAgIFwiS0VZU1wiLFxuICAgIFwiQklHX0tFWVNcIixcbiAgICBcIkVOQ1JZUFRFRF9LRVlTXCIsXG4gICAgXCJUUlVTVEVEX0tFWVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjcmFzaF96ZXJvaXplXCIsXG4gICAgXCJzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZVwiLFxuICAgIFwia2V5X2NyYXNoX3plcm9pemVcIixcbiAgICBcImJpZ19rZXlfemVyb2l6ZVwiLFxuICAgIFwiZW5jcnlwdGVkX3plcm9pemVcIixcbiAgICBcInRydXN0ZWRfemVyb2l6ZVwiLFxuICAgIFwidXNlcl96ZXJvaXplXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmZWF0dXJlIHRvIHplcm9pemUgc2Vuc2l0aXZlIHNlY3JldHMgKGtleXMgYW5kIHNlY3JldG1lbSkgZHVyaW5nIGEga2VybmVsIHBhbmljL2NyYXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGV4ZWN1dGVzIHdoZW4gYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkIGFuZCBhIHBhbmljIG9jY3Vycy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlc2UgdGVhcmRvd24gcGF0aHMgZG8gbm90IGludHJvZHVjZSBzZWNvbmRhcnkgZmF1bHRzIG9yIGRlYWRsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDA6MzYuODU2MDUzNTUzWiIsIlNlcSI6MSwiTmVzdGluZyI6MSwiVHlwZSI6ImFjdGlvbiIsIk5hbWUiOiJyZWFkLXBhdGNoLWRpZmYiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Njk4MzIxMDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIlBhdGNoRGlmZlwiOiBcImNvbW1pdCA1YjQ0N2YxZDdjYTE2MDYxNTQxNjVmY2QwZWE0M2QxZGNiYWEwZTM5XFxuQXV0aG9yOiBzeXotY2x1c3RlciBcXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cXHUwMDNlXFxuRGF0ZTogICBTdW4gQXVnIDIgMDQ6MDA6MzYgMjAyNiArMDAwMFxcblxcbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcXG5cXG5kaWZmIC0tZ2l0IGEvZHJpdmVycy9vZi9rZXhlYy5jIGIvZHJpdmVycy9vZi9rZXhlYy5jXFxuaW5kZXggMDI5OTAzYjk4NmNiZC4uMzY2MzVmNmNiOTAwOSAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL29mL2tleGVjLmNcXG4rKysgYi9kcml2ZXJzL29mL2tleGVjLmNcXG5AQCAtMjQsNyArMjQsNyBAQFxcbiBcXG4gLypcXG4gICogQWRkaXRpb25hbCBzcGFjZSBuZWVkZWQgZm9yIHRoZSBGRFQgYnVmZmVyIHNvIHRoYXQgd2UgY2FuIGFkZCBpbml0cmQsXFxuLSAqIGJvb3RhcmdzLCBrYXNsci1zZWVkLCBybmctc2VlZCwgdXNlYWJsZS1tZW1vcnktcmFuZ2UgYW5kIGVsZmNvcmVoZHIuXFxuKyAqIGJvb3RhcmdzLCBrYXNsci1zZWVkLCBybmctc2VlZCwgdXNhYmxlLW1lbW9yeS1yYW5nZSBhbmQgZWxmY29yZWhkci5cXG4gICovXFxuICNkZWZpbmUgRkRUX0VYVFJBX1NQQUNFIDB4MTAwMFxcbiBcXG5kaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9jcmFzaF9jb3JlLmggYi9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaFxcbmluZGV4IGJjMDg3MTI0Y2Q3OGUuLjVjNzIwN2MwYmJhMTQgMTAwNjQ0XFxuLS0tIGEvaW5jbHVkZS9saW51eC9jcmFzaF9jb3JlLmhcXG4rKysgYi9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaFxcbkBAIC01LDYgKzUsNyBAQFxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvbGlua2FnZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZWxmY29yZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvZWxmLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9ub3RpZmllci5oXFx1MDAzZVxcbiBcXG4gc3RydWN0IGtpbWFnZTtcXG4gXFxuQEAgLTM0LDYgKzM1LDEwIEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBhcmNoX2tleGVjX3Byb3RlY3RfY3Jhc2hrcmVzKHZvaWQpIHsgfVxcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9rZXhlY191bnByb3RlY3RfY3Jhc2hrcmVzKHZvaWQpIHsgfVxcbiAjZW5kaWZcXG4gXFxuKyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRVxcbitleHRlcm4gc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdDtcXG4rI2VuZGlmXFxuK1xcbiAjaWZuZGVmIGFyY2hfY3Jhc2hfaGFuZGxlX2hvdHBsdWdfZXZlbnRcXG4gc3RhdGljIGlubGluZSB2b2lkIGFyY2hfY3Jhc2hfaGFuZGxlX2hvdHBsdWdfZXZlbnQoc3RydWN0IGtpbWFnZSAqaW1hZ2UsIHZvaWQgKmFyZykgeyB9XFxuICNlbmRpZlxcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmggYi9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmhcXG5pbmRleCBiYjk3YmQzZTVhZjRmLi5mZjA5NDRjZTM2OGY5IDEwMDY0NFxcbi0tLSBhL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaFxcbisrKyBiL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaFxcbkBAIC0xMjIsNiArMTIyLDE1IEBAIHN0cnVjdCBrZXlfdHlwZSB7XFxuIFxcdC8qIGNsZWFyIHRoZSBkYXRhIGZyb20gYSBrZXkgKG9wdGlvbmFsKSAqL1xcbiBcXHR2b2lkICgqZGVzdHJveSkoc3RydWN0IGtleSAqa2V5KTtcXG4gXFxuK1xcdC8qIHNjcnViIHRoZSBrZXkgbWF0ZXJpYWwgd2l0aG91dCBmcmVlJ2luZyAob3B0aW9uYWwpXFxuK1xcdCAqIC0gdXNlZCBmcm9tIENPTkZJR19DUkFTSF9aRVJPSVpFIGR1cmluZyBwYW5pYyB0byBrZWVwIGtleXMgb3V0IG9mXFxuK1xcdCAqICAgY3Jhc2ggZHVtcHNcXG4rXFx0ICogLSBjYWxsZWQgZnJvbSB0aGUgcGFuaWMgcGF0aCB3aXRoIG90aGVyIENQVXMgc3RvcHBlZCBhbmQgcHJlZW1wdGlvblxcbitcXHQgKiAgIGRpc2FibGVkXFxuK1xcdCAqIC0gbXVzdCBub3Qgc2xlZXAsIGFsbG9jYXRlLCBmcmVlIG9yIHRha2UgbG9ja3NcXG4rXFx0ICovXFxuK1xcdHZvaWQgKCp6ZXJvaXplKShzdHJ1Y3Qga2V5ICprZXkpO1xcbitcXG4gXFx0LyogZGVzY3JpYmUgYSBrZXkgKi9cXG4gXFx0dm9pZCAoKmRlc2NyaWJlKShjb25zdCBzdHJ1Y3Qga2V5ICprZXksIHN0cnVjdCBzZXFfZmlsZSAqcCk7XFxuIFxcbmRpZmYgLS1naXQgYS9rZXJuZWwvS2NvbmZpZy5rZXhlYyBiL2tlcm5lbC9LY29uZmlnLmtleGVjXFxuaW5kZXggMTU2MzIzNThiY2Y3MS4uOTJhYjBhNjljOGVjNiAxMDA2NDRcXG4tLS0gYS9rZXJuZWwvS2NvbmZpZy5rZXhlY1xcbisrKyBiL2tlcm5lbC9LY29uZmlnLmtleGVjXFxuQEAgLTE3OSw0ICsxNzksMTIgQEAgY29uZmlnIENSQVNIX01BWF9NRU1PUllfUkFOR0VTXFxuIFxcdCAgdGhlIGNvbXB1dGF0aW9uIGJlaGluZCB0aGUgdmFsdWUgcHJvdmlkZWQgdGhyb3VnaCB0aGVcXG4gXFx0ICAvc3lzL2tlcm5lbC9jcmFzaF9lbGZjb3JlaGRyX3NpemUgYXR0cmlidXRlLlxcbiBcXG4rY29uZmlnIENSQVNIX1pFUk9JWkVcXG4rXFx0Ym9vbCBcXFwiWmVyb2l6ZSBzZWNyZXRzIG9uIHBhbmljXFxcIlxcbitcXHRkZXBlbmRzIG9uIENSQVNIX0RVTVBcXG4rXFx0aGVscFxcbitcXHQgIFdpcGUgc2VjcmV0cyAoZS5nLiBrZXJuZWwga2V5cmluZyBhbmQgbWVtZmRfc2VjcmV0IHBhZ2VzKSBvbiBjcmFzaCBvciBwYW5pYy5cXG4rXFxuK1xcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG4rXFxuIGVuZG1lbnVcXG5kaWZmIC0tZ2l0IGEva2VybmVsL2NyYXNoX2NvcmUuYyBiL2tlcm5lbC9jcmFzaF9jb3JlLmNcXG5pbmRleCAyYjM2YWE5ZmFkZTA2Li5kM2E3NzYzZTI3NTk5IDEwMDY0NFxcbi0tLSBhL2tlcm5lbC9jcmFzaF9jb3JlLmNcXG4rKysgYi9rZXJuZWwvY3Jhc2hfY29yZS5jXFxuQEAgLTIzLDYgKzIzLDcgQEBcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L29ianRvb2wuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2RlbGF5LmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wYW5pYy5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFxcdTAwM2VcXG4gXFxuICNpbmNsdWRlIFxcdTAwM2Nhc20vcGFnZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjYXNtL3NlY3Rpb25zLmhcXHUwMDNlXFxuQEAgLTMzLDYgKzM0LDIyIEBAXFxuIC8qIFBlciBjcHUgbWVtb3J5IGZvciBzdG9yaW5nIGNwdSBzdGF0ZXMgaW4gY2FzZSBvZiBzeXN0ZW0gY3Jhc2guICovXFxuIG5vdGVfYnVmX3QgX19wZXJjcHUgKmNyYXNoX25vdGVzO1xcbiBcXG4rI2lmZGVmIENPTkZJR19DUkFTSF9aRVJPSVpFXFxuK0FUT01JQ19OT1RJRklFUl9IRUFEKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7XFxuK0VYUE9SVF9TWU1CT0xfR1BMKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7XFxuK1xcbitzdGF0aWMgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpXFxuK3tcXG4rXFx0a3RpbWVfdCB6ZXJvaXplX3N0YXJ0ID0ga3RpbWVfZ2V0KCk7XFxuK1xcbitcXHRwcl9pbmZvKFxcXCJXaXBpbmcgc2Vuc2l0aXZlIHNlY3JldHMuLi5cXFxcblxcXCIpO1xcbitcXHRhdG9taWNfbm90aWZpZXJfY2FsbF9jaGFpbihcXHUwMDI2Y3Jhc2hfemVyb2l6ZV9ub3RpZmllcl9saXN0LCAwLCBOVUxMKTtcXG4rXFx0cHJfaW5mbyhcXFwiRG9uZSBpbiAlbGxkIHVzXFxcXG5cXFwiLCBrdGltZV91c19kZWx0YShrdGltZV9nZXQoKSwgemVyb2l6ZV9zdGFydCkpO1xcbit9XFxuKyNlbHNlXFxuK3N0YXRpYyBpbmxpbmUgdm9pZCBjcmFzaF96ZXJvaXplKHZvaWQpIHsgfVxcbisjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi9cXG4rXFxuIC8qIHRpbWUgdG8gd2FpdCBmb3IgcG9zc2libGUgRE1BIHRvIGZpbmlzaCBiZWZvcmUgc3RhcnRpbmcgdGhlIGtkdW1wIGtlcm5lbFxcbiAgKiB3aGVuIGEgQ01BIHJlc2VydmF0aW9uIGlzIHVzZWRcXG4gICovXFxuQEAgLTE0Miw2ICsxNTksNyBAQCB2b2lkIF9fbm9jbG9uZSBfX2NyYXNoX2tleGVjKHN0cnVjdCBwdF9yZWdzICpyZWdzKVxcbiBcXHRcXHRcXHRjcmFzaF9zYXZlX3ZtY29yZWluZm8oKTtcXG4gXFx0XFx0XFx0bWFjaGluZV9jcmFzaF9zaHV0ZG93bihcXHUwMDI2Zml4ZWRfcmVncyk7XFxuIFxcdFxcdFxcdGNyYXNoX2NtYV9jbGVhcl9wZW5kaW5nX2RtYSgpO1xcbitcXHRcXHRcXHRjcmFzaF96ZXJvaXplKCk7XFxuIFxcdFxcdFxcdG1hY2hpbmVfa2V4ZWMoa2V4ZWNfY3Jhc2hfaW1hZ2UpO1xcbiBcXHRcXHR9XFxuIFxcdFxcdGtleGVjX3VubG9jaygpO1xcbmRpZmYgLS1naXQgYS9tbS9zZWNyZXRtZW0uYyBiL21tL3NlY3JldG1lbS5jXFxuaW5kZXggZDI5ODY1MDc1YjZlYS4uNTNmNjI5ZDY2MzNjMSAxMDA2NDRcXG4tLS0gYS9tbS9zZWNyZXRtZW0uY1xcbisrKyBiL21tL3NlY3JldG1lbS5jXFxuQEAgLTEzLDkgKzEzLDExIEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9iaXRvcHMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3ByaW50ay5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvcGFnZW1hcC5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvbm90aWZpZXIuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3N5c2NhbGxzLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9wc2V1ZG9fZnMuaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L3NlY3JldG1lbS5oXFx1MDAzZVxcbisjaW5jbHVkZSBcXHUwMDNjbGludXgvY3Jhc2hfY29yZS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2V0X21lbW9yeS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvc2NoZWQvc2lnbmFsLmhcXHUwMDNlXFxuIFxcbkBAIC0xODcsNiArMTg5LDUwIEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgaW5vZGVfb3BlcmF0aW9ucyBzZWNyZXRtZW1faW9wcyA9IHtcXG4gXFxuIHN0YXRpYyBzdHJ1Y3QgdmZzbW91bnQgKnNlY3JldG1lbV9tbnQ7XFxuIFxcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcXG4rLyogQ2FsbGVkIGZhciBpbnRvIHZwYW5pYyBmcm9tIGNyYXNoX2NvcmUuYyB3aXRoIG90aGVyIENQVXMgc3RvcHBlZCBhbmRcXG4rICogcHJlZW1wdGlvbiBkaXNhYmxlZFxcbisgKi9cXG4rc3RhdGljIGludCBzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nXFxuK1xcdFxcdGFjdGlvbiwgdm9pZCAqZGF0YSlcXG4re1xcbitcXHRzdHJ1Y3Qgc3VwZXJfYmxvY2sgKnNiO1xcbitcXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xcbitcXG4rXFx0aWYgKCFzZWNyZXRtZW1fbW50KVxcbitcXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuK1xcdHNiID0gc2VjcmV0bWVtX21udC1cXHUwMDNlbW50X3NiO1xcbitcXG4rXFx0LyogSWYgdGhlIGxpc3Qgd2FzIG1vZGlmaWVkIGluIHRoZSBleGFjdCBtb21lbnQgd2UgcGFuaWMnZWQsIGl0IG1pZ2h0IGJlXFxuK1xcdCAqIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZSB0aGF0IHdvdWxkIGJlIHVuc2FmZSB0byBpdGVyYXRlLiBJZiB3ZSBjYW4ndFxcbitcXHQgKiBnZXQgdGhlIGxvY2ssIHRvbyBiYWQsIHRoYXQncyBhbGwgd2UgY2FuIGRvIGhlcmUuXFxuK1xcdCAqL1xcbitcXHRpZiAoIXNwaW5fdHJ5bG9jayhcXHUwMDI2c2ItXFx1MDAzZXNfaW5vZGVfbGlzdF9sb2NrKSkge1xcbitcXHRcXHRwcl9jcml0KFxcXCJjcmFzaF96ZXJvaXplOiBjYW4ndCBhY3F1aXJlIHNlY3JldG1lbSBzdXBlcmJsb2NrIGxvY2suXFxcXG5cXFwiXFxuK1xcdFxcdFxcdCBcXFwiY3Jhc2hfemVyb2l6ZTogc2tpcHBpbmcgemVyb2l6aW5nIHNlY3JldG1lbS5cXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuK1xcdH1cXG4rXFxuK1xcdGxpc3RfZm9yX2VhY2hfZW50cnkoaW5vZGUsIFxcdTAwMjZzYi1cXHUwMDNlc19pbm9kZXMsIGlfc2JfbGlzdCkge1xcbitcXHRcXHRYQV9TVEFURSh4YXMsIFxcdTAwMjZpbm9kZS1cXHUwMDNlaV9tYXBwaW5nLVxcdTAwM2VpX3BhZ2VzLCAwKTtcXG4rXFx0XFx0c3RydWN0IGZvbGlvICpmb2xpbztcXG4rXFxuK1xcdFxcdC8qIG5vIG5lZWQgZm9yIGxvY2tzIGlmIHdlJ3JlIGJ1cm5pbmcgZG93biB0aGUgaG91c2UgOikgKi9cXG4rXFx0XFx0eGFzX2Zvcl9lYWNoKFxcdTAwMjZ4YXMsIGZvbGlvLCBVTE9OR19NQVgpIHtcXG4rXFx0XFx0XFx0aWYgKHhhc19yZXRyeShcXHUwMDI2eGFzLCBmb2xpbykgfHwgeGFfaXNfdmFsdWUoZm9saW8pKVxcbitcXHRcXHRcXHRcXHRjb250aW51ZTtcXG4rXFx0XFx0XFx0aW5vZGUtXFx1MDAzZWlfbWFwcGluZy1cXHUwMDNlYV9vcHMtXFx1MDAzZWZyZWVfZm9saW8oZm9saW8pO1xcbitcXHRcXHR9XFxuK1xcdH1cXG4rXFx0Lyogb2ZmIHRvIGtleGVjKCkhICovXFxuK1xcdHJldHVybiBOT1RJRllfRE9ORTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBzZWNyZXRtZW1femVyb2l6ZV9uYiA9IHtcXG4rXFx0Lm5vdGlmaWVyX2NhbGwgPSBzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZVxcbit9O1xcbisjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi9cXG4rXFxuIHN0YXRpYyBzdHJ1Y3QgZmlsZSAqc2VjcmV0bWVtX2ZpbGVfY3JlYXRlKHVuc2lnbmVkIGxvbmcgZmxhZ3MpXFxuIHtcXG4gXFx0c3RydWN0IGZpbGUgKmZpbGU7XFxuQEAgLTI2Myw2ICszMDksMTAgQEAgc3RhdGljIGludCBfX2luaXQgc2VjcmV0bWVtX2luaXQodm9pZClcXG4gXFx0aWYgKElTX0VSUihzZWNyZXRtZW1fbW50KSlcXG4gXFx0XFx0cmV0dXJuIFBUUl9FUlIoc2VjcmV0bWVtX21udCk7XFxuIFxcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcXG4rXFx0YXRvbWljX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKFxcdTAwMjZjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QsIFxcdTAwMjZzZWNyZXRtZW1femVyb2l6ZV9uYik7XFxuKyNlbmRpZlxcbitcXG4gXFx0cmV0dXJuIDA7XFxuIH1cXG4gZnNfaW5pdGNhbGwoc2VjcmV0bWVtX2luaXQpO1xcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2JpZ19rZXkuYyBiL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jXFxuaW5kZXggMjY4ZjcwMmRmMzgwZS4uYWQ4NTM3ZGRhNzBmYSAxMDA2NDRcXG4tLS0gYS9zZWN1cml0eS9rZXlzL2JpZ19rZXkuY1xcbisrKyBiL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jXFxuQEAgLTM1LDYgKzM1LDggQEAgc3RydWN0IGJpZ19rZXlfcGF5bG9hZCB7XFxuICAqL1xcbiAjZGVmaW5lIEJJR19LRVlfRklMRV9USFJFU0hPTEQgKHNpemVvZihzdHJ1Y3QgaW5vZGUpICsgc2l6ZW9mKHN0cnVjdCBkZW50cnkpKVxcbiBcXG4rc3RhdGljIHZvaWQgYmlnX2tleV96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSk7XFxuK1xcbiAvKlxcbiAgKiBiaWdfa2V5IGRlZmluZWQga2V5cyB0YWtlIGFuIGFyYml0cmFyeSBzdHJpbmcgYXMgdGhlIGRlc2NyaXB0aW9uIGFuZCBhblxcbiAgKiBhcmJpdHJhcnkgYmxvYiBvZiBkYXRhIGFzIHRoZSBwYXlsb2FkXFxuQEAgLTQ2LDYgKzQ4LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX2JpZ19rZXkgPSB7XFxuIFxcdC5pbnN0YW50aWF0ZVxcdFxcdD0gZ2VuZXJpY19rZXlfaW5zdGFudGlhdGUsXFxuIFxcdC5yZXZva2VcXHRcXHRcXHQ9IGJpZ19rZXlfcmV2b2tlLFxcbiBcXHQuZGVzdHJveVxcdFxcdD0gYmlnX2tleV9kZXN0cm95LFxcbitcXHQuemVyb2l6ZVxcdFxcdD0gYmlnX2tleV96ZXJvaXplLFxcbiBcXHQuZGVzY3JpYmVcXHRcXHQ9IGJpZ19rZXlfZGVzY3JpYmUsXFxuIFxcdC5yZWFkXFx0XFx0XFx0PSBiaWdfa2V5X3JlYWQsXFxuIFxcdC51cGRhdGVcXHRcXHRcXHQ9IGJpZ19rZXlfdXBkYXRlLFxcbkBAIC0yNzksNiArMjgyLDE4IEBAIGxvbmcgYmlnX2tleV9yZWFkKGNvbnN0IHN0cnVjdCBrZXkgKmtleSwgY2hhciAqYnVmZmVyLCBzaXplX3QgYnVmbGVuKVxcbiBcXHRyZXR1cm4gcmV0O1xcbiB9XFxuIFxcbitzdGF0aWMgdm9pZCBiaWdfa2V5X3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxcbit7XFxuK1xcdHN0cnVjdCBiaWdfa2V5X3BheWxvYWQgKnBheWxvYWQgPSB0b19iaWdfa2V5X3BheWxvYWQoa2V5LVxcdTAwM2VwYXlsb2FkKTtcXG4rXFxuK1xcdGlmIChwYXlsb2FkLVxcdTAwM2VkYXRhKSB7XFxuK1xcdFxcdGlmIChwYXlsb2FkLVxcdTAwM2VsZW5ndGggXFx1MDAzZSBCSUdfS0VZX0ZJTEVfVEhSRVNIT0xEKVxcbitcXHRcXHRcXHRtZW16ZXJvX2V4cGxpY2l0KHBheWxvYWQtXFx1MDAzZWRhdGEsIENIQUNIQTIwUE9MWTEzMDVfS0VZX1NJWkUpO1xcbitcXHRcXHRlbHNlXFxuK1xcdFxcdFxcdG1lbXplcm9fZXhwbGljaXQocGF5bG9hZC1cXHUwMDNlZGF0YSwgcGF5bG9hZC1cXHUwMDNlbGVuZ3RoKTtcXG4rXFx0fVxcbit9XFxuK1xcbiAvKlxcbiAgKiBSZWdpc3RlciBrZXkgdHlwZVxcbiAgKi9cXG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuYyBiL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNcXG5pbmRleCA1OWNiNzdiMjM3YjM2Li45ZjU2ZmE5YjRhYWY0IDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNcXG4rKysgYi9zZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzL2VuY3J5cHRlZC5jXFxuQEAgLTk3MCwxMSArOTcwLDIzIEBAIHN0YXRpYyB2b2lkIGVuY3J5cHRlZF9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSlcXG4gXFx0a2ZyZWVfc2Vuc2l0aXZlKGtleS1cXHUwMDNlcGF5bG9hZC5kYXRhWzBdKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgZW5jcnlwdGVkX3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxcbit7XFxuK1xcdHN0cnVjdCBlbmNyeXB0ZWRfa2V5X3BheWxvYWQgKmVwYXlsb2FkID0ga2V5LVxcdTAwM2VwYXlsb2FkLmRhdGFbMF07XFxuK1xcbitcXHRpZiAoIWVwYXlsb2FkKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRtZW16ZXJvX2V4cGxpY2l0KGVwYXlsb2FkLVxcdTAwM2VwYXlsb2FkX2RhdGEsXFxuK1xcdFxcdFxcdCBlcGF5bG9hZC1cXHUwMDNlcGF5bG9hZF9kYXRhbGVuICsgZXBheWxvYWQtXFx1MDAzZWRhdGFibG9iX2xlbik7XFxuK31cXG4rXFxuIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9lbmNyeXB0ZWQgPSB7XFxuIFxcdC5uYW1lID0gXFxcImVuY3J5cHRlZFxcXCIsXFxuIFxcdC5pbnN0YW50aWF0ZSA9IGVuY3J5cHRlZF9pbnN0YW50aWF0ZSxcXG4gXFx0LnVwZGF0ZSA9IGVuY3J5cHRlZF91cGRhdGUsXFxuIFxcdC5kZXN0cm95ID0gZW5jcnlwdGVkX2Rlc3Ryb3ksXFxuK1xcdC56ZXJvaXplID0gZW5jcnlwdGVkX3plcm9pemUsXFxuIFxcdC5kZXNjcmliZSA9IHVzZXJfZGVzY3JpYmUsXFxuIFxcdC5yZWFkID0gZW5jcnlwdGVkX3JlYWQsXFxuIH07XFxuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMva2V5LmMgYi9zZWN1cml0eS9rZXlzL2tleS5jXFxuaW5kZXggYjM0YTY0ZDgxZDQ3YS4uNTY3M2RjYzhjNWQyMyAxMDA2NDRcXG4tLS0gYS9zZWN1cml0eS9rZXlzL2tleS5jXFxuKysrIGIvc2VjdXJpdHkva2V5cy9rZXkuY1xcbkBAIC0xMiw2ICsxMiw3IEBAXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zbGFiLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9zZWN1cml0eS5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXHUwMDNjbGludXgvd29ya3F1ZXVlLmhcXHUwMDNlXFxuKyNpbmNsdWRlIFxcdTAwM2NsaW51eC9jcmFzaF9jb3JlLmhcXHUwMDNlXFxuICNpbmNsdWRlIFxcdTAwM2NsaW51eC9yYW5kb20uaFxcdTAwM2VcXG4gI2luY2x1ZGUgXFx1MDAzY2xpbnV4L2Vyci5oXFx1MDAzZVxcbiAjaW5jbHVkZSBcXFwiaW50ZXJuYWwuaFxcXCJcXG5AQCAtMTI2OCw2ICsxMjY5LDQ0IEBAIHZvaWQgdW5yZWdpc3Rlcl9rZXlfdHlwZShzdHJ1Y3Qga2V5X3R5cGUgKmt0eXBlKVxcbiB9XFxuIEVYUE9SVF9TWU1CT0wodW5yZWdpc3Rlcl9rZXlfdHlwZSk7XFxuIFxcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcXG4rLyogQ2FsbGVkIGZhciBpbnRvIHZwYW5pYyBmcm9tIGNyYXNoX2NvcmUuYyB3aXRoIG90aGVyIENQVXMgc3RvcHBlZCBhbmRcXG4rICogcHJlZW1wdGlvbiBkaXNhYmxlZFxcbisgKi9cXG4rc3RhdGljIGludCBrZXlfY3Jhc2hfemVyb2l6ZShzdHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKm5iLCB1bnNpZ25lZCBsb25nIGFjdGlvbixcXG4rXFx0XFx0dm9pZCAqZGF0YSlcXG4re1xcbitcXHRzdHJ1Y3QgcmJfbm9kZSAqbm9kZTtcXG4rXFxuK1xcdC8qIElmIHdlIGNhbid0IGFjcXVpcmUgdGhlIGxvY2ssIHRoZSByYnRyZWUgbWlnaHQgYmUgaW4gYW4gaW5jb25zaXN0ZW50XFxuK1xcdCAqIHN0YXRlLiBUaGF0J3MgYWxsIHdlIGNhbiBkbyB0aGVuLCBhcyB0aGVyZSdzIG5vIHBvaW50IHRvIHdhaXRpbmdcXG4rXFx0ICogYXQgdGhpcyBzdGFnZS5cXG4rXFx0ICovXFxuK1xcdGlmICghc3Bpbl90cnlsb2NrKFxcdTAwMjZrZXlfc2VyaWFsX2xvY2spKSB7XFxuK1xcdFxcdHByX2NyaXQoXFxcImNyYXNoX3plcm9pemU6IGNhbid0IGFjcXVpcmUga2V5X3NlcmlhbF9sb2NrLiBza2lwcGluZyBrZXlyaW5ncy5cXFxcblxcXCIpO1xcbitcXHRcXHRyZXR1cm4gTk9USUZZX0RPTkU7XFxuK1xcdH1cXG4rXFxuK1xcdGZvciAobm9kZSA9IHJiX2ZpcnN0KFxcdTAwMjZrZXlfc2VyaWFsX3RyZWUpOyBub2RlOyBub2RlID0gcmJfbmV4dChub2RlKSkge1xcbitcXHRcXHRzdHJ1Y3Qga2V5ICprZXkgPSByYl9lbnRyeShub2RlLCBzdHJ1Y3Qga2V5LCBzZXJpYWxfbm9kZSk7XFxuK1xcbitcXHRcXHRpZiAoa2V5LVxcdTAwM2V0eXBlID09IFxcdTAwMjZrZXlfdHlwZV9rZXlyaW5nIHx8XFxuK1xcdFxcdCAgICBrZXktXFx1MDAzZXN0YXRlID09IEtFWV9JU19VTklOU1RBTlRJQVRFRClcXG4rXFx0XFx0XFx0Y29udGludWU7XFxuK1xcbitcXHRcXHQvKiBjdXN0b20gemVyb2l6ZSBzaW5jZSBmcmVlJ2luZyBpc24ndCBzYWZlIGF0IHRoaXMgcG9pbnQgKi9cXG4rXFx0XFx0aWYgKGtleS1cXHUwMDNldHlwZS1cXHUwMDNlemVyb2l6ZSlcXG4rXFx0XFx0XFx0a2V5LVxcdTAwM2V0eXBlLVxcdTAwM2V6ZXJvaXplKGtleSk7XFxuK1xcdH1cXG4rXFx0Lyogb2ZmIHRvIGtleGVjKCkhICovXFxuK1xcdHJldHVybiBOT1RJRllfRE9ORTtcXG4rfVxcbitcXG4rc3RhdGljIHN0cnVjdCBub3RpZmllcl9ibG9jayBrZXlfY3Jhc2hfemVyb2l6ZV9uYiA9IHtcXG4rXFx0Lm5vdGlmaWVyX2NhbGwgPSBrZXlfY3Jhc2hfemVyb2l6ZVxcbit9O1xcbisjZW5kaWYgLyogQ09ORklHX0NSQVNIX1pFUk9JWkUgKi9cXG4rXFxuIC8qXFxuICAqIEluaXRpYWxpc2UgdGhlIGtleSBtYW5hZ2VtZW50IHN0YXRlLlxcbiAgKi9cXG5AQCAtMTI5MCw0ICsxMzI5LDkgQEAgdm9pZCBfX2luaXQga2V5X2luaXQodm9pZClcXG4gXFxuIFxcdHJiX2luc2VydF9jb2xvcihcXHUwMDI2cm9vdF9rZXlfdXNlci5ub2RlLFxcbiBcXHRcXHRcXHRcXHUwMDI2a2V5X3VzZXJfdHJlZSk7XFxuK1xcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcXG4rXFx0YXRvbWljX25vdGlmaWVyX2NoYWluX3JlZ2lzdGVyKFxcdTAwMjZjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QsXFxuK1xcdFxcdFxcdFxcdTAwMjZrZXlfY3Jhc2hfemVyb2l6ZV9uYik7XFxuKyNlbmRpZlxcbiB9XFxuZGlmZiAtLWdpdCBhL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jIGIvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmNcXG5pbmRleCAwNTA5ZDk5NTVmMmE2Li5mMTU5ZmFlYWZlMjNhIDEwMDY0NFxcbi0tLSBhL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jXFxuKysrIGIvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmNcXG5AQCAtMzI1LDExICszMjUsMjUgQEAgc3RhdGljIHZvaWQgdHJ1c3RlZF9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSlcXG4gXFx0a2ZyZWVfc2Vuc2l0aXZlKGtleS1cXHUwMDNlcGF5bG9hZC5kYXRhWzBdKTtcXG4gfVxcbiBcXG4rc3RhdGljIHZvaWQgdHJ1c3RlZF96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSlcXG4re1xcbitcXHRzdHJ1Y3QgdHJ1c3RlZF9rZXlfcGF5bG9hZCAqcCA9IGtleS1cXHUwMDNlcGF5bG9hZC5kYXRhWzBdO1xcbitcXG4rXFx0aWYgKCFwKVxcbitcXHRcXHRyZXR1cm47XFxuK1xcbitcXHRtZW16ZXJvX2V4cGxpY2l0KHAtXFx1MDAzZWtleSwgc2l6ZW9mKHAtXFx1MDAzZWtleSkpO1xcbitcXHRtZW16ZXJvX2V4cGxpY2l0KHAtXFx1MDAzZWJsb2IsIHNpemVvZihwLVxcdTAwM2VibG9iKSk7XFxuK1xcdHAtXFx1MDAzZWtleV9sZW4gPSAwO1xcbitcXHRwLVxcdTAwM2VibG9iX2xlbiA9IDA7XFxuK31cXG4rXFxuIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV90cnVzdGVkID0ge1xcbiBcXHQubmFtZSA9IFxcXCJ0cnVzdGVkXFxcIixcXG4gXFx0Lmluc3RhbnRpYXRlID0gdHJ1c3RlZF9pbnN0YW50aWF0ZSxcXG4gXFx0LnVwZGF0ZSA9IHRydXN0ZWRfdXBkYXRlLFxcbiBcXHQuZGVzdHJveSA9IHRydXN0ZWRfZGVzdHJveSxcXG4rXFx0Lnplcm9pemUgPSB0cnVzdGVkX3plcm9pemUsXFxuIFxcdC5kZXNjcmliZSA9IHVzZXJfZGVzY3JpYmUsXFxuIFxcdC5yZWFkID0gdHJ1c3RlZF9yZWFkLFxcbiB9O1xcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3VzZXJfZGVmaW5lZC5jIGIvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY1xcbmluZGV4IDZmODhiNTA3ZjkyNzkuLmFkZTk1ZGMyNDgxZGYgMTAwNjQ0XFxuLS0tIGEvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY1xcbisrKyBiL3NlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmNcXG5AQCAtMTUsNiArMTUsNyBAQFxcbiAjaW5jbHVkZSBcXFwiaW50ZXJuYWwuaFxcXCJcXG4gXFxuIHN0YXRpYyBpbnQgbG9nb25fdmV0X2Rlc2NyaXB0aW9uKGNvbnN0IGNoYXIgKmRlc2MpO1xcbitzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KTtcXG4gXFxuIC8qXFxuICAqIHVzZXIgZGVmaW5lZCBrZXlzIHRha2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgZGVzY3JpcHRpb24gYW5kIGFuXFxuQEAgLTI4LDYgKzI5LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX3VzZXIgPSB7XFxuIFxcdC51cGRhdGVcXHRcXHRcXHQ9IHVzZXJfdXBkYXRlLFxcbiBcXHQucmV2b2tlXFx0XFx0XFx0PSB1c2VyX3Jldm9rZSxcXG4gXFx0LmRlc3Ryb3lcXHRcXHQ9IHVzZXJfZGVzdHJveSxcXG4rXFx0Lnplcm9pemVcXHRcXHQ9IHVzZXJfemVyb2l6ZSxcXG4gXFx0LmRlc2NyaWJlXFx0XFx0PSB1c2VyX2Rlc2NyaWJlLFxcbiBcXHQucmVhZFxcdFxcdFxcdD0gdXNlcl9yZWFkLFxcbiB9O1xcbkBAIC00OCw2ICs1MCw3IEBAIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9sb2dvbiA9IHtcXG4gXFx0LnVwZGF0ZVxcdFxcdFxcdD0gdXNlcl91cGRhdGUsXFxuIFxcdC5yZXZva2VcXHRcXHRcXHQ9IHVzZXJfcmV2b2tlLFxcbiBcXHQuZGVzdHJveVxcdFxcdD0gdXNlcl9kZXN0cm95LFxcbitcXHQuemVyb2l6ZVxcdFxcdD0gdXNlcl96ZXJvaXplLFxcbiBcXHQuZGVzY3JpYmVcXHRcXHQ9IHVzZXJfZGVzY3JpYmUsXFxuIFxcdC52ZXRfZGVzY3JpcHRpb25cXHQ9IGxvZ29uX3ZldF9kZXNjcmlwdGlvbixcXG4gfTtcXG5AQCAtMTUyLDYgKzE1NSwxNCBAQCB2b2lkIHVzZXJfZGVzdHJveShzdHJ1Y3Qga2V5ICprZXkpXFxuIFxcbiBFWFBPUlRfU1lNQk9MX0dQTCh1c2VyX2Rlc3Ryb3kpO1xcbiBcXG4rc3RhdGljIHZvaWQgdXNlcl96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSlcXG4re1xcbitcXHRzdHJ1Y3QgdXNlcl9rZXlfcGF5bG9hZCAqdXBheWxvYWQgPSBrZXktXFx1MDAzZXBheWxvYWQuZGF0YVswXTtcXG4rXFxuK1xcdGlmICh1cGF5bG9hZClcXG4rXFx0XFx0bWVtemVyb19leHBsaWNpdCh1cGF5bG9hZC1cXHUwMDNlZGF0YSwgdXBheWxvYWQtXFx1MDAzZWRhdGFsZW4pO1xcbit9XFxuK1xcbiAvKlxcbiAgKiBkZXNjcmliZSB0aGUgdXNlciBrZXlcXG4gICovXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA0OjAwOjM3LjMyNjY2NzQyMloiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjY5Nzk2NzA2MDczLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNSQVNIX1pFUk9JWkVcIixcbiAgICBcIkNSQVNIX0RVTVBcIixcbiAgICBcIlNFQ1JFVE1FTVwiLFxuICAgIFwiS0VZU1wiLFxuICAgIFwiQklHX0tFWVNcIixcbiAgICBcIkVOQ1JZUFRFRF9LRVlTXCIsXG4gICAgXCJUUlVTVEVEX0tFWVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjcmFzaF96ZXJvaXplXCIsXG4gICAgXCJzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZVwiLFxuICAgIFwia2V5X2NyYXNoX3plcm9pemVcIixcbiAgICBcImJpZ19rZXlfemVyb2l6ZVwiLFxuICAgIFwiZW5jcnlwdGVkX3plcm9pemVcIixcbiAgICBcInRydXN0ZWRfemVyb2l6ZVwiLFxuICAgIFwidXNlcl96ZXJvaXplXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmZWF0dXJlIHRvIHplcm9pemUgc2Vuc2l0aXZlIHNlY3JldHMgKGtleXMgYW5kIHNlY3JldG1lbSkgZHVyaW5nIGEga2VybmVsIHBhbmljL2NyYXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGV4ZWN1dGVzIHdoZW4gYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkIGFuZCBhIHBhbmljIG9jY3Vycy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlc2UgdGVhcmRvd24gcGF0aHMgZG8gbm90IGludHJvZHVjZSBzZWNvbmRhcnkgZmF1bHRzIG9yIGRlYWRsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiWW91IGFyZSBhbiBleHBlcnQgTGludXgga2VybmVsIG1haW50YWluZXIuXG5Zb3VyIGpvYiBpcyB0byByZXZpZXcgYSBwcm92aWRlZCBwYXRjaCBzZXJpZXMgYW5kIGRldGVybWluZVxuaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLlxuXG5JTVBPUlRBTlQ6IFRoZSBjaGFuZ2VzIGhhdmUgQUxSRUFEWSBiZWVuIGFwcGxpZWQgYW5kIGNvbW1pdHRlZCBhcyB0aGUgSEVBRCBjb21taXQgaW5cbnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseVxudXNlIHlvdXIgY29kZSBhY2Nlc3MgdG9vbHMgdG8gZXhhbWluZSB0aGUgYWN0dWFsIHNvdXJjZSBjb2RlIGFuZCBjb25maXJtIGFueSBhc3N1bXB0aW9ucy5cblxuUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczpcbi0gTW9kaWZpY2F0aW9ucyB0byBEb2N1bWVudGF0aW9uLywgS2NvbmZpZyBmaWxlcywgb3IgY29kZSBjb21tZW50cy5cbi0gUHVyZWx5IGRlY29yYXRpdmUgY2hhbmdlcywgc3VjaCBhcyBsb2dnaW5nIChlLmcuLCBwcl9lcnIsIHByaW50aykgb3IgdHJhY2Vwb2ludHMuXG4tIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy5cbi0gQ29kZSBwYXRocyB0aGF0IGFyZSBpbXBvc3NpYmxlIHRvIHJlYWNoIGluIHZpcnR1YWxpemVkIGVudmlyb25tZW50cyBsaWtlIEdDRSBvciBRRU1VLFxuICBldmVuIHdoZW4gdXRpbGl6aW5nIHNvZnR3YXJlLWVtdWxhdGVkIGhhcmR3YXJlIChlLmcuLCB1c2IgZ2FkZ2V0LCBtYWM4MDIxMV9od3NpbSkuXG4tIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLFxuICBpb25pYywgYW1kZ3B1KSB0aGF0IHJlcXVpcmUgcGh5c2ljYWwgUENJZSBoYXJkd2FyZSBjYXJkcyBub3QgZW11bGF0ZWQgaW4gc3RhbmRhcmQgUUVNVS5cbi0gRHJpdmVyIC5yZW1vdmUsIC5zaHV0ZG93biwgb3IgcGNpX3VucmVnaXN0ZXJfZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcyAoZS5nLiwgaWdiX3JlbW92ZSlcbiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLlxuXG5JZiBpdCBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMsIGRyaXZlcnMsIG9yIGFyY2hpdGVjdHVyZXMsIHVzZSB5b3VyIGNvZGUgc2VhcmNoXG50b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuV2hlbiByZXR1cm5pbmcgV29ydGhGdXp6aW5nPXRydWUsIHlvdSBNVVNUIEFMU086XG4xLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLlxuICAgQXZvaWQgbGlzdGluZyBnZW5lcmljIGhvdC1wYXRoIGZ1bmN0aW9ucyB0byBwcmV2ZW50IHNrZXdlZCB0ZXN0IGRpc3RyaWJ1dGlvbnMuXG4gICBQcmVmZXIgbm9uLXN0YXRpYywgbm9uLWlubGluZWQgQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb25zIG92ZXIgaW50ZXJuYWwgc3RhdGljIGhlbHBlciBmdW5jdGlvbnNcbiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLlxuMi4gSWRlbnRpZnkgYW55IHNwZWNpZmljIENPTkZJR18gb3B0aW9ucyByZXF1aXJlZCB0byBwcm9wZXJseSB0ZXN0IHRoaXMgbmV3L21vZGlmaWVkIGZlYXR1cmUuXG4gICBHbyBhbmQgbG9vayBpbnRvIHRoZSBLY29uZmlnIGZpbGVzIGFuZCBjaGVjayBmb3IgaWZkZWZzIGFyb3VuZCB0aGUgY29kZSwgZG8gbm90IG1ha2UgYXNzdW1wdGlvbnMuXG4gICBBbHNvIGNoZWNrIFwiZGVwZW5kcyBvblwiIGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlnc1xuICAgbmVlZGVkIGZvciBLYnVpbGQgdG8gY29tcGlsZSB0aGUgY29kZSBzdGF0aWNhbGx5IGludG8gdm1saW51eC4gTGlzdCB0aGVtIGluIHRoZSBFbmFibGVDb25maWdzXG4gICBvdXRwdXQgYXJyYXksIGFuZCBETyBOT1QgYWRkIGEgJ0NPTkZJR18nIHByZWZpeCAoZS5nLiwgcmV0dXJuIFwiTkVUX0lQVjRcIiBpbnN0ZWFkIG9mIFwiQ09ORklHX05FVF9JUFY0XCIpLlxuUHJlZmVyIGNhbGxpbmcgc2V2ZXJhbCB0b29scyBhdCB0aGUgc2FtZSB0aW1lIHRvIHNhdmUgcm91bmQtdHJpcHMuXG5cblxuVXNlIHNldC1yZXN1bHRzIHRvb2wgdG8gcHJvdmlkZSByZXN1bHRzIG9mIHRoZSBhbmFseXNpcy5cbkl0IG11c3QgYmUgY2FsbGVkIGV4YWN0bHkgb25jZSBiZWZvcmUgdGhlIGZpbmFsIHJlcGx5LlxuSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLlxuIiwiUHJvbXB0IjoiRm9yIHlvdXIgY29udmVuaWVuY2UsIGhlcmUgaXMgdGhlIGRpZmYgb2YgdGhlIGNoYW5nZXM6XG5jb21taXQgNWI0NDdmMWQ3Y2ExNjA2MTU0MTY1ZmNkMGVhNDNkMWRjYmFhMGUzOVxuQXV0aG9yOiBzeXotY2x1c3RlciBcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVx1MDAzZVxuRGF0ZTogICBTdW4gQXVnIDIgMDQ6MDA6MzYgMjAyNiArMDAwMFxuXG4gICAgc3l6LWNsdXN0ZXI6IGFwcGxpZWQgcGF0Y2ggdW5kZXIgcmV2aWV3XG5cbmRpZmYgLS1naXQgYS9kcml2ZXJzL29mL2tleGVjLmMgYi9kcml2ZXJzL29mL2tleGVjLmNcbmluZGV4IDAyOTkwM2I5ODZjYmQuLjM2NjM1ZjZjYjkwMDkgMTAwNjQ0XG4tLS0gYS9kcml2ZXJzL29mL2tleGVjLmNcbisrKyBiL2RyaXZlcnMvb2Yva2V4ZWMuY1xuQEAgLTI0LDcgKzI0LDcgQEBcbiBcbiAvKlxuICAqIEFkZGl0aW9uYWwgc3BhY2UgbmVlZGVkIGZvciB0aGUgRkRUIGJ1ZmZlciBzbyB0aGF0IHdlIGNhbiBhZGQgaW5pdHJkLFxuLSAqIGJvb3RhcmdzLCBrYXNsci1zZWVkLCBybmctc2VlZCwgdXNlYWJsZS1tZW1vcnktcmFuZ2UgYW5kIGVsZmNvcmVoZHIuXG4rICogYm9vdGFyZ3MsIGthc2xyLXNlZWQsIHJuZy1zZWVkLCB1c2FibGUtbWVtb3J5LXJhbmdlIGFuZCBlbGZjb3JlaGRyLlxuICAqL1xuICNkZWZpbmUgRkRUX0VYVFJBX1NQQUNFIDB4MTAwMFxuIFxuZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvY3Jhc2hfY29yZS5oIGIvaW5jbHVkZS9saW51eC9jcmFzaF9jb3JlLmhcbmluZGV4IGJjMDg3MTI0Y2Q3OGUuLjVjNzIwN2MwYmJhMTQgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2NyYXNoX2NvcmUuaFxuKysrIGIvaW5jbHVkZS9saW51eC9jcmFzaF9jb3JlLmhcbkBAIC01LDYgKzUsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2xpbmthZ2UuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2VsZmNvcmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2VsZi5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvbm90aWZpZXIuaFx1MDAzZVxuIFxuIHN0cnVjdCBraW1hZ2U7XG4gXG5AQCAtMzQsNiArMzUsMTAgQEAgc3RhdGljIGlubGluZSB2b2lkIGFyY2hfa2V4ZWNfcHJvdGVjdF9jcmFzaGtyZXModm9pZCkgeyB9XG4gc3RhdGljIGlubGluZSB2b2lkIGFyY2hfa2V4ZWNfdW5wcm90ZWN0X2NyYXNoa3Jlcyh2b2lkKSB7IH1cbiAjZW5kaWZcbiBcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbitleHRlcm4gc3RydWN0IGF0b21pY19ub3RpZmllcl9oZWFkIGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdDtcbisjZW5kaWZcbitcbiAjaWZuZGVmIGFyY2hfY3Jhc2hfaGFuZGxlX2hvdHBsdWdfZXZlbnRcbiBzdGF0aWMgaW5saW5lIHZvaWQgYXJjaF9jcmFzaF9oYW5kbGVfaG90cGx1Z19ldmVudChzdHJ1Y3Qga2ltYWdlICppbWFnZSwgdm9pZCAqYXJnKSB7IH1cbiAjZW5kaWZcbmRpZmYgLS1naXQgYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmggYi9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmhcbmluZGV4IGJiOTdiZDNlNWFmNGYuLmZmMDk0NGNlMzY4ZjkgMTAwNjQ0XG4tLS0gYS9pbmNsdWRlL2xpbnV4L2tleS10eXBlLmhcbisrKyBiL2luY2x1ZGUvbGludXgva2V5LXR5cGUuaFxuQEAgLTEyMiw2ICsxMjIsMTUgQEAgc3RydWN0IGtleV90eXBlIHtcbiBcdC8qIGNsZWFyIHRoZSBkYXRhIGZyb20gYSBrZXkgKG9wdGlvbmFsKSAqL1xuIFx0dm9pZCAoKmRlc3Ryb3kpKHN0cnVjdCBrZXkgKmtleSk7XG4gXG4rXHQvKiBzY3J1YiB0aGUga2V5IG1hdGVyaWFsIHdpdGhvdXQgZnJlZSdpbmcgKG9wdGlvbmFsKVxuK1x0ICogLSB1c2VkIGZyb20gQ09ORklHX0NSQVNIX1pFUk9JWkUgZHVyaW5nIHBhbmljIHRvIGtlZXAga2V5cyBvdXQgb2ZcbitcdCAqICAgY3Jhc2ggZHVtcHNcbitcdCAqIC0gY2FsbGVkIGZyb20gdGhlIHBhbmljIHBhdGggd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kIHByZWVtcHRpb25cbitcdCAqICAgZGlzYWJsZWRcbitcdCAqIC0gbXVzdCBub3Qgc2xlZXAsIGFsbG9jYXRlLCBmcmVlIG9yIHRha2UgbG9ja3NcbitcdCAqL1xuK1x0dm9pZCAoKnplcm9pemUpKHN0cnVjdCBrZXkgKmtleSk7XG4rXG4gXHQvKiBkZXNjcmliZSBhIGtleSAqL1xuIFx0dm9pZCAoKmRlc2NyaWJlKShjb25zdCBzdHJ1Y3Qga2V5ICprZXksIHN0cnVjdCBzZXFfZmlsZSAqcCk7XG4gXG5kaWZmIC0tZ2l0IGEva2VybmVsL0tjb25maWcua2V4ZWMgYi9rZXJuZWwvS2NvbmZpZy5rZXhlY1xuaW5kZXggMTU2MzIzNThiY2Y3MS4uOTJhYjBhNjljOGVjNiAxMDA2NDRcbi0tLSBhL2tlcm5lbC9LY29uZmlnLmtleGVjXG4rKysgYi9rZXJuZWwvS2NvbmZpZy5rZXhlY1xuQEAgLTE3OSw0ICsxNzksMTIgQEAgY29uZmlnIENSQVNIX01BWF9NRU1PUllfUkFOR0VTXG4gXHQgIHRoZSBjb21wdXRhdGlvbiBiZWhpbmQgdGhlIHZhbHVlIHByb3ZpZGVkIHRocm91Z2ggdGhlXG4gXHQgIC9zeXMva2VybmVsL2NyYXNoX2VsZmNvcmVoZHJfc2l6ZSBhdHRyaWJ1dGUuXG4gXG4rY29uZmlnIENSQVNIX1pFUk9JWkVcbitcdGJvb2wgXCJaZXJvaXplIHNlY3JldHMgb24gcGFuaWNcIlxuK1x0ZGVwZW5kcyBvbiBDUkFTSF9EVU1QXG4rXHRoZWxwXG4rXHQgIFdpcGUgc2VjcmV0cyAoZS5nLiBrZXJuZWwga2V5cmluZyBhbmQgbWVtZmRfc2VjcmV0IHBhZ2VzKSBvbiBjcmFzaCBvciBwYW5pYy5cbitcbitcdCAgSWYgdW5zdXJlLCBzYXkgTi5cbitcbiBlbmRtZW51XG5kaWZmIC0tZ2l0IGEva2VybmVsL2NyYXNoX2NvcmUuYyBiL2tlcm5lbC9jcmFzaF9jb3JlLmNcbmluZGV4IDJiMzZhYTlmYWRlMDYuLmQzYTc3NjNlMjc1OTkgMTAwNjQ0XG4tLS0gYS9rZXJuZWwvY3Jhc2hfY29yZS5jXG4rKysgYi9rZXJuZWwvY3Jhc2hfY29yZS5jXG5AQCAtMjMsNiArMjMsNyBAQFxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L29ianRvb2wuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L2RlbGF5LmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wYW5pYy5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvdGltZWtlZXBpbmcuaFx1MDAzZVxuIFxuICNpbmNsdWRlIFx1MDAzY2FzbS9wYWdlLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2Nhc20vc2VjdGlvbnMuaFx1MDAzZVxuQEAgLTMzLDYgKzM0LDIyIEBAXG4gLyogUGVyIGNwdSBtZW1vcnkgZm9yIHN0b3JpbmcgY3B1IHN0YXRlcyBpbiBjYXNlIG9mIHN5c3RlbSBjcmFzaC4gKi9cbiBub3RlX2J1Zl90IF9fcGVyY3B1ICpjcmFzaF9ub3RlcztcbiBcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbitBVE9NSUNfTk9USUZJRVJfSEVBRChjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QpO1xuK0VYUE9SVF9TWU1CT0xfR1BMKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7XG4rXG4rc3RhdGljIHZvaWQgY3Jhc2hfemVyb2l6ZSh2b2lkKVxuK3tcbitcdGt0aW1lX3QgemVyb2l6ZV9zdGFydCA9IGt0aW1lX2dldCgpO1xuK1xuK1x0cHJfaW5mbyhcIldpcGluZyBzZW5zaXRpdmUgc2VjcmV0cy4uLlxcblwiKTtcbitcdGF0b21pY19ub3RpZmllcl9jYWxsX2NoYWluKFx1MDAyNmNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCwgMCwgTlVMTCk7XG4rXHRwcl9pbmZvKFwiRG9uZSBpbiAlbGxkIHVzXFxuXCIsIGt0aW1lX3VzX2RlbHRhKGt0aW1lX2dldCgpLCB6ZXJvaXplX3N0YXJ0KSk7XG4rfVxuKyNlbHNlXG4rc3RhdGljIGlubGluZSB2b2lkIGNyYXNoX3plcm9pemUodm9pZCkgeyB9XG4rI2VuZGlmIC8qIENPTkZJR19DUkFTSF9aRVJPSVpFICovXG4rXG4gLyogdGltZSB0byB3YWl0IGZvciBwb3NzaWJsZSBETUEgdG8gZmluaXNoIGJlZm9yZSBzdGFydGluZyB0aGUga2R1bXAga2VybmVsXG4gICogd2hlbiBhIENNQSByZXNlcnZhdGlvbiBpcyB1c2VkXG4gICovXG5AQCAtMTQyLDYgKzE1OSw3IEBAIHZvaWQgX19ub2Nsb25lIF9fY3Jhc2hfa2V4ZWMoc3RydWN0IHB0X3JlZ3MgKnJlZ3MpXG4gXHRcdFx0Y3Jhc2hfc2F2ZV92bWNvcmVpbmZvKCk7XG4gXHRcdFx0bWFjaGluZV9jcmFzaF9zaHV0ZG93bihcdTAwMjZmaXhlZF9yZWdzKTtcbiBcdFx0XHRjcmFzaF9jbWFfY2xlYXJfcGVuZGluZ19kbWEoKTtcbitcdFx0XHRjcmFzaF96ZXJvaXplKCk7XG4gXHRcdFx0bWFjaGluZV9rZXhlYyhrZXhlY19jcmFzaF9pbWFnZSk7XG4gXHRcdH1cbiBcdFx0a2V4ZWNfdW5sb2NrKCk7XG5kaWZmIC0tZ2l0IGEvbW0vc2VjcmV0bWVtLmMgYi9tbS9zZWNyZXRtZW0uY1xuaW5kZXggZDI5ODY1MDc1YjZlYS4uNTNmNjI5ZDY2MzNjMSAxMDA2NDRcbi0tLSBhL21tL3NlY3JldG1lbS5jXG4rKysgYi9tbS9zZWNyZXRtZW0uY1xuQEAgLTEzLDkgKzEzLDExIEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvYml0b3BzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9wcmludGsuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3BhZ2VtYXAuaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L25vdGlmaWVyLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zeXNjYWxscy5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcHNldWRvX2ZzLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9zZWNyZXRtZW0uaFx1MDAzZVxuKyNpbmNsdWRlIFx1MDAzY2xpbnV4L2NyYXNoX2NvcmUuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NldF9tZW1vcnkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3NjaGVkL3NpZ25hbC5oXHUwMDNlXG4gXG5AQCAtMTg3LDYgKzE4OSw1MCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGlub2RlX29wZXJhdGlvbnMgc2VjcmV0bWVtX2lvcHMgPSB7XG4gXG4gc3RhdGljIHN0cnVjdCB2ZnNtb3VudCAqc2VjcmV0bWVtX21udDtcbiBcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbisvKiBDYWxsZWQgZmFyIGludG8gdnBhbmljIGZyb20gY3Jhc2hfY29yZS5jIHdpdGggb3RoZXIgQ1BVcyBzdG9wcGVkIGFuZFxuKyAqIHByZWVtcHRpb24gZGlzYWJsZWRcbisgKi9cbitzdGF0aWMgaW50IHNlY3JldG1lbV9jcmFzaF96ZXJvaXplKHN0cnVjdCBub3RpZmllcl9ibG9jayAqbmIsIHVuc2lnbmVkIGxvbmdcbitcdFx0YWN0aW9uLCB2b2lkICpkYXRhKVxuK3tcbitcdHN0cnVjdCBzdXBlcl9ibG9jayAqc2I7XG4rXHRzdHJ1Y3QgaW5vZGUgKmlub2RlO1xuK1xuK1x0aWYgKCFzZWNyZXRtZW1fbW50KVxuK1x0XHRyZXR1cm4gTk9USUZZX0RPTkU7XG4rXHRzYiA9IHNlY3JldG1lbV9tbnQtXHUwMDNlbW50X3NiO1xuK1xuK1x0LyogSWYgdGhlIGxpc3Qgd2FzIG1vZGlmaWVkIGluIHRoZSBleGFjdCBtb21lbnQgd2UgcGFuaWMnZWQsIGl0IG1pZ2h0IGJlXG4rXHQgKiBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgdGhhdCB3b3VsZCBiZSB1bnNhZmUgdG8gaXRlcmF0ZS4gSWYgd2UgY2FuJ3RcbitcdCAqIGdldCB0aGUgbG9jaywgdG9vIGJhZCwgdGhhdCdzIGFsbCB3ZSBjYW4gZG8gaGVyZS5cbitcdCAqL1xuK1x0aWYgKCFzcGluX3RyeWxvY2soXHUwMDI2c2ItXHUwMDNlc19pbm9kZV9saXN0X2xvY2spKSB7XG4rXHRcdHByX2NyaXQoXCJjcmFzaF96ZXJvaXplOiBjYW4ndCBhY3F1aXJlIHNlY3JldG1lbSBzdXBlcmJsb2NrIGxvY2suXFxuXCJcbitcdFx0XHQgXCJjcmFzaF96ZXJvaXplOiBza2lwcGluZyB6ZXJvaXppbmcgc2VjcmV0bWVtLlxcblwiKTtcbitcdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuK1x0fVxuK1xuK1x0bGlzdF9mb3JfZWFjaF9lbnRyeShpbm9kZSwgXHUwMDI2c2ItXHUwMDNlc19pbm9kZXMsIGlfc2JfbGlzdCkge1xuK1x0XHRYQV9TVEFURSh4YXMsIFx1MDAyNmlub2RlLVx1MDAzZWlfbWFwcGluZy1cdTAwM2VpX3BhZ2VzLCAwKTtcbitcdFx0c3RydWN0IGZvbGlvICpmb2xpbztcbitcbitcdFx0Lyogbm8gbmVlZCBmb3IgbG9ja3MgaWYgd2UncmUgYnVybmluZyBkb3duIHRoZSBob3VzZSA6KSAqL1xuK1x0XHR4YXNfZm9yX2VhY2goXHUwMDI2eGFzLCBmb2xpbywgVUxPTkdfTUFYKSB7XG4rXHRcdFx0aWYgKHhhc19yZXRyeShcdTAwMjZ4YXMsIGZvbGlvKSB8fCB4YV9pc192YWx1ZShmb2xpbykpXG4rXHRcdFx0XHRjb250aW51ZTtcbitcdFx0XHRpbm9kZS1cdTAwM2VpX21hcHBpbmctXHUwMDNlYV9vcHMtXHUwMDNlZnJlZV9mb2xpbyhmb2xpbyk7XG4rXHRcdH1cbitcdH1cbitcdC8qIG9mZiB0byBrZXhlYygpISAqL1xuK1x0cmV0dXJuIE5PVElGWV9ET05FO1xuK31cbitcbitzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHNlY3JldG1lbV96ZXJvaXplX25iID0ge1xuK1x0Lm5vdGlmaWVyX2NhbGwgPSBzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZVxuK307XG4rI2VuZGlmIC8qIENPTkZJR19DUkFTSF9aRVJPSVpFICovXG4rXG4gc3RhdGljIHN0cnVjdCBmaWxlICpzZWNyZXRtZW1fZmlsZV9jcmVhdGUodW5zaWduZWQgbG9uZyBmbGFncylcbiB7XG4gXHRzdHJ1Y3QgZmlsZSAqZmlsZTtcbkBAIC0yNjMsNiArMzA5LDEwIEBAIHN0YXRpYyBpbnQgX19pbml0IHNlY3JldG1lbV9pbml0KHZvaWQpXG4gXHRpZiAoSVNfRVJSKHNlY3JldG1lbV9tbnQpKVxuIFx0XHRyZXR1cm4gUFRSX0VSUihzZWNyZXRtZW1fbW50KTtcbiBcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbitcdGF0b21pY19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihcdTAwMjZjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QsIFx1MDAyNnNlY3JldG1lbV96ZXJvaXplX25iKTtcbisjZW5kaWZcbitcbiBcdHJldHVybiAwO1xuIH1cbiBmc19pbml0Y2FsbChzZWNyZXRtZW1faW5pdCk7XG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9iaWdfa2V5LmMgYi9zZWN1cml0eS9rZXlzL2JpZ19rZXkuY1xuaW5kZXggMjY4ZjcwMmRmMzgwZS4uYWQ4NTM3ZGRhNzBmYSAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2tleXMvYmlnX2tleS5jXG4rKysgYi9zZWN1cml0eS9rZXlzL2JpZ19rZXkuY1xuQEAgLTM1LDYgKzM1LDggQEAgc3RydWN0IGJpZ19rZXlfcGF5bG9hZCB7XG4gICovXG4gI2RlZmluZSBCSUdfS0VZX0ZJTEVfVEhSRVNIT0xEIChzaXplb2Yoc3RydWN0IGlub2RlKSArIHNpemVvZihzdHJ1Y3QgZGVudHJ5KSlcbiBcbitzdGF0aWMgdm9pZCBiaWdfa2V5X3plcm9pemUoc3RydWN0IGtleSAqa2V5KTtcbitcbiAvKlxuICAqIGJpZ19rZXkgZGVmaW5lZCBrZXlzIHRha2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgZGVzY3JpcHRpb24gYW5kIGFuXG4gICogYXJiaXRyYXJ5IGJsb2Igb2YgZGF0YSBhcyB0aGUgcGF5bG9hZFxuQEAgLTQ2LDYgKzQ4LDcgQEAgc3RydWN0IGtleV90eXBlIGtleV90eXBlX2JpZ19rZXkgPSB7XG4gXHQuaW5zdGFudGlhdGVcdFx0PSBnZW5lcmljX2tleV9pbnN0YW50aWF0ZSxcbiBcdC5yZXZva2VcdFx0XHQ9IGJpZ19rZXlfcmV2b2tlLFxuIFx0LmRlc3Ryb3lcdFx0PSBiaWdfa2V5X2Rlc3Ryb3ksXG4rXHQuemVyb2l6ZVx0XHQ9IGJpZ19rZXlfemVyb2l6ZSxcbiBcdC5kZXNjcmliZVx0XHQ9IGJpZ19rZXlfZGVzY3JpYmUsXG4gXHQucmVhZFx0XHRcdD0gYmlnX2tleV9yZWFkLFxuIFx0LnVwZGF0ZVx0XHRcdD0gYmlnX2tleV91cGRhdGUsXG5AQCAtMjc5LDYgKzI4MiwxOCBAQCBsb25nIGJpZ19rZXlfcmVhZChjb25zdCBzdHJ1Y3Qga2V5ICprZXksIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGJ1ZmxlbilcbiBcdHJldHVybiByZXQ7XG4gfVxuIFxuK3N0YXRpYyB2b2lkIGJpZ19rZXlfemVyb2l6ZShzdHJ1Y3Qga2V5ICprZXkpXG4re1xuK1x0c3RydWN0IGJpZ19rZXlfcGF5bG9hZCAqcGF5bG9hZCA9IHRvX2JpZ19rZXlfcGF5bG9hZChrZXktXHUwMDNlcGF5bG9hZCk7XG4rXG4rXHRpZiAocGF5bG9hZC1cdTAwM2VkYXRhKSB7XG4rXHRcdGlmIChwYXlsb2FkLVx1MDAzZWxlbmd0aCBcdTAwM2UgQklHX0tFWV9GSUxFX1RIUkVTSE9MRClcbitcdFx0XHRtZW16ZXJvX2V4cGxpY2l0KHBheWxvYWQtXHUwMDNlZGF0YSwgQ0hBQ0hBMjBQT0xZMTMwNV9LRVlfU0laRSk7XG4rXHRcdGVsc2VcbitcdFx0XHRtZW16ZXJvX2V4cGxpY2l0KHBheWxvYWQtXHUwMDNlZGF0YSwgcGF5bG9hZC1cdTAwM2VsZW5ndGgpO1xuK1x0fVxuK31cbitcbiAvKlxuICAqIFJlZ2lzdGVyIGtleSB0eXBlXG4gICovXG5kaWZmIC0tZ2l0IGEvc2VjdXJpdHkva2V5cy9lbmNyeXB0ZWQta2V5cy9lbmNyeXB0ZWQuYyBiL3NlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNcbmluZGV4IDU5Y2I3N2IyMzdiMzYuLjlmNTZmYTliNGFhZjQgMTAwNjQ0XG4tLS0gYS9zZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzL2VuY3J5cHRlZC5jXG4rKysgYi9zZWN1cml0eS9rZXlzL2VuY3J5cHRlZC1rZXlzL2VuY3J5cHRlZC5jXG5AQCAtOTcwLDExICs5NzAsMjMgQEAgc3RhdGljIHZvaWQgZW5jcnlwdGVkX2Rlc3Ryb3koc3RydWN0IGtleSAqa2V5KVxuIFx0a2ZyZWVfc2Vuc2l0aXZlKGtleS1cdTAwM2VwYXlsb2FkLmRhdGFbMF0pO1xuIH1cbiBcbitzdGF0aWMgdm9pZCBlbmNyeXB0ZWRfemVyb2l6ZShzdHJ1Y3Qga2V5ICprZXkpXG4re1xuK1x0c3RydWN0IGVuY3J5cHRlZF9rZXlfcGF5bG9hZCAqZXBheWxvYWQgPSBrZXktXHUwMDNlcGF5bG9hZC5kYXRhWzBdO1xuK1xuK1x0aWYgKCFlcGF5bG9hZClcbitcdFx0cmV0dXJuO1xuK1xuK1x0bWVtemVyb19leHBsaWNpdChlcGF5bG9hZC1cdTAwM2VwYXlsb2FkX2RhdGEsXG4rXHRcdFx0IGVwYXlsb2FkLVx1MDAzZXBheWxvYWRfZGF0YWxlbiArIGVwYXlsb2FkLVx1MDAzZWRhdGFibG9iX2xlbik7XG4rfVxuK1xuIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9lbmNyeXB0ZWQgPSB7XG4gXHQubmFtZSA9IFwiZW5jcnlwdGVkXCIsXG4gXHQuaW5zdGFudGlhdGUgPSBlbmNyeXB0ZWRfaW5zdGFudGlhdGUsXG4gXHQudXBkYXRlID0gZW5jcnlwdGVkX3VwZGF0ZSxcbiBcdC5kZXN0cm95ID0gZW5jcnlwdGVkX2Rlc3Ryb3ksXG4rXHQuemVyb2l6ZSA9IGVuY3J5cHRlZF96ZXJvaXplLFxuIFx0LmRlc2NyaWJlID0gdXNlcl9kZXNjcmliZSxcbiBcdC5yZWFkID0gZW5jcnlwdGVkX3JlYWQsXG4gfTtcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL2tleS5jIGIvc2VjdXJpdHkva2V5cy9rZXkuY1xuaW5kZXggYjM0YTY0ZDgxZDQ3YS4uNTY3M2RjYzhjNWQyMyAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2tleXMva2V5LmNcbisrKyBiL3NlY3VyaXR5L2tleXMva2V5LmNcbkBAIC0xMiw2ICsxMiw3IEBAXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2xhYi5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvc2VjdXJpdHkuaFx1MDAzZVxuICNpbmNsdWRlIFx1MDAzY2xpbnV4L3dvcmtxdWV1ZS5oXHUwMDNlXG4rI2luY2x1ZGUgXHUwMDNjbGludXgvY3Jhc2hfY29yZS5oXHUwMDNlXG4gI2luY2x1ZGUgXHUwMDNjbGludXgvcmFuZG9tLmhcdTAwM2VcbiAjaW5jbHVkZSBcdTAwM2NsaW51eC9lcnIuaFx1MDAzZVxuICNpbmNsdWRlIFwiaW50ZXJuYWwuaFwiXG5AQCAtMTI2OCw2ICsxMjY5LDQ0IEBAIHZvaWQgdW5yZWdpc3Rlcl9rZXlfdHlwZShzdHJ1Y3Qga2V5X3R5cGUgKmt0eXBlKVxuIH1cbiBFWFBPUlRfU1lNQk9MKHVucmVnaXN0ZXJfa2V5X3R5cGUpO1xuIFxuKyNpZmRlZiBDT05GSUdfQ1JBU0hfWkVST0laRVxuKy8qIENhbGxlZCBmYXIgaW50byB2cGFuaWMgZnJvbSBjcmFzaF9jb3JlLmMgd2l0aCBvdGhlciBDUFVzIHN0b3BwZWQgYW5kXG4rICogcHJlZW1wdGlvbiBkaXNhYmxlZFxuKyAqL1xuK3N0YXRpYyBpbnQga2V5X2NyYXNoX3plcm9pemUoc3RydWN0IG5vdGlmaWVyX2Jsb2NrICpuYiwgdW5zaWduZWQgbG9uZyBhY3Rpb24sXG4rXHRcdHZvaWQgKmRhdGEpXG4re1xuK1x0c3RydWN0IHJiX25vZGUgKm5vZGU7XG4rXG4rXHQvKiBJZiB3ZSBjYW4ndCBhY3F1aXJlIHRoZSBsb2NrLCB0aGUgcmJ0cmVlIG1pZ2h0IGJlIGluIGFuIGluY29uc2lzdGVudFxuK1x0ICogc3RhdGUuIFRoYXQncyBhbGwgd2UgY2FuIGRvIHRoZW4sIGFzIHRoZXJlJ3Mgbm8gcG9pbnQgdG8gd2FpdGluZ1xuK1x0ICogYXQgdGhpcyBzdGFnZS5cbitcdCAqL1xuK1x0aWYgKCFzcGluX3RyeWxvY2soXHUwMDI2a2V5X3NlcmlhbF9sb2NrKSkge1xuK1x0XHRwcl9jcml0KFwiY3Jhc2hfemVyb2l6ZTogY2FuJ3QgYWNxdWlyZSBrZXlfc2VyaWFsX2xvY2suIHNraXBwaW5nIGtleXJpbmdzLlxcblwiKTtcbitcdFx0cmV0dXJuIE5PVElGWV9ET05FO1xuK1x0fVxuK1xuK1x0Zm9yIChub2RlID0gcmJfZmlyc3QoXHUwMDI2a2V5X3NlcmlhbF90cmVlKTsgbm9kZTsgbm9kZSA9IHJiX25leHQobm9kZSkpIHtcbitcdFx0c3RydWN0IGtleSAqa2V5ID0gcmJfZW50cnkobm9kZSwgc3RydWN0IGtleSwgc2VyaWFsX25vZGUpO1xuK1xuK1x0XHRpZiAoa2V5LVx1MDAzZXR5cGUgPT0gXHUwMDI2a2V5X3R5cGVfa2V5cmluZyB8fFxuK1x0XHQgICAga2V5LVx1MDAzZXN0YXRlID09IEtFWV9JU19VTklOU1RBTlRJQVRFRClcbitcdFx0XHRjb250aW51ZTtcbitcbitcdFx0LyogY3VzdG9tIHplcm9pemUgc2luY2UgZnJlZSdpbmcgaXNuJ3Qgc2FmZSBhdCB0aGlzIHBvaW50ICovXG4rXHRcdGlmIChrZXktXHUwMDNldHlwZS1cdTAwM2V6ZXJvaXplKVxuK1x0XHRcdGtleS1cdTAwM2V0eXBlLVx1MDAzZXplcm9pemUoa2V5KTtcbitcdH1cbitcdC8qIG9mZiB0byBrZXhlYygpISAqL1xuK1x0cmV0dXJuIE5PVElGWV9ET05FO1xuK31cbitcbitzdGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIGtleV9jcmFzaF96ZXJvaXplX25iID0ge1xuK1x0Lm5vdGlmaWVyX2NhbGwgPSBrZXlfY3Jhc2hfemVyb2l6ZVxuK307XG4rI2VuZGlmIC8qIENPTkZJR19DUkFTSF9aRVJPSVpFICovXG4rXG4gLypcbiAgKiBJbml0aWFsaXNlIHRoZSBrZXkgbWFuYWdlbWVudCBzdGF0ZS5cbiAgKi9cbkBAIC0xMjkwLDQgKzEzMjksOSBAQCB2b2lkIF9faW5pdCBrZXlfaW5pdCh2b2lkKVxuIFxuIFx0cmJfaW5zZXJ0X2NvbG9yKFx1MDAyNnJvb3Rfa2V5X3VzZXIubm9kZSxcbiBcdFx0XHRcdTAwMjZrZXlfdXNlcl90cmVlKTtcbitcbisjaWZkZWYgQ09ORklHX0NSQVNIX1pFUk9JWkVcbitcdGF0b21pY19ub3RpZmllcl9jaGFpbl9yZWdpc3RlcihcdTAwMjZjcmFzaF96ZXJvaXplX25vdGlmaWVyX2xpc3QsXG4rXHRcdFx0XHUwMDI2a2V5X2NyYXNoX3plcm9pemVfbmIpO1xuKyNlbmRpZlxuIH1cbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy90cnVzdGVkX2NvcmUuYyBiL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jXG5pbmRleCAwNTA5ZDk5NTVmMmE2Li5mMTU5ZmFlYWZlMjNhIDEwMDY0NFxuLS0tIGEvc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvdHJ1c3RlZF9jb3JlLmNcbisrKyBiL3NlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jXG5AQCAtMzI1LDExICszMjUsMjUgQEAgc3RhdGljIHZvaWQgdHJ1c3RlZF9kZXN0cm95KHN0cnVjdCBrZXkgKmtleSlcbiBcdGtmcmVlX3NlbnNpdGl2ZShrZXktXHUwMDNlcGF5bG9hZC5kYXRhWzBdKTtcbiB9XG4gXG4rc3RhdGljIHZvaWQgdHJ1c3RlZF96ZXJvaXplKHN0cnVjdCBrZXkgKmtleSlcbit7XG4rXHRzdHJ1Y3QgdHJ1c3RlZF9rZXlfcGF5bG9hZCAqcCA9IGtleS1cdTAwM2VwYXlsb2FkLmRhdGFbMF07XG4rXG4rXHRpZiAoIXApXG4rXHRcdHJldHVybjtcbitcbitcdG1lbXplcm9fZXhwbGljaXQocC1cdTAwM2VrZXksIHNpemVvZihwLVx1MDAzZWtleSkpO1xuK1x0bWVtemVyb19leHBsaWNpdChwLVx1MDAzZWJsb2IsIHNpemVvZihwLVx1MDAzZWJsb2IpKTtcbitcdHAtXHUwMDNla2V5X2xlbiA9IDA7XG4rXHRwLVx1MDAzZWJsb2JfbGVuID0gMDtcbit9XG4rXG4gc3RydWN0IGtleV90eXBlIGtleV90eXBlX3RydXN0ZWQgPSB7XG4gXHQubmFtZSA9IFwidHJ1c3RlZFwiLFxuIFx0Lmluc3RhbnRpYXRlID0gdHJ1c3RlZF9pbnN0YW50aWF0ZSxcbiBcdC51cGRhdGUgPSB0cnVzdGVkX3VwZGF0ZSxcbiBcdC5kZXN0cm95ID0gdHJ1c3RlZF9kZXN0cm95LFxuK1x0Lnplcm9pemUgPSB0cnVzdGVkX3plcm9pemUsXG4gXHQuZGVzY3JpYmUgPSB1c2VyX2Rlc2NyaWJlLFxuIFx0LnJlYWQgPSB0cnVzdGVkX3JlYWQsXG4gfTtcbmRpZmYgLS1naXQgYS9zZWN1cml0eS9rZXlzL3VzZXJfZGVmaW5lZC5jIGIvc2VjdXJpdHkva2V5cy91c2VyX2RlZmluZWQuY1xuaW5kZXggNmY4OGI1MDdmOTI3OS4uYWRlOTVkYzI0ODFkZiAxMDA2NDRcbi0tLSBhL3NlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmNcbisrKyBiL3NlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmNcbkBAIC0xNSw2ICsxNSw3IEBAXG4gI2luY2x1ZGUgXCJpbnRlcm5hbC5oXCJcbiBcbiBzdGF0aWMgaW50IGxvZ29uX3ZldF9kZXNjcmlwdGlvbihjb25zdCBjaGFyICpkZXNjKTtcbitzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KTtcbiBcbiAvKlxuICAqIHVzZXIgZGVmaW5lZCBrZXlzIHRha2UgYW4gYXJiaXRyYXJ5IHN0cmluZyBhcyB0aGUgZGVzY3JpcHRpb24gYW5kIGFuXG5AQCAtMjgsNiArMjksNyBAQCBzdHJ1Y3Qga2V5X3R5cGUga2V5X3R5cGVfdXNlciA9IHtcbiBcdC51cGRhdGVcdFx0XHQ9IHVzZXJfdXBkYXRlLFxuIFx0LnJldm9rZVx0XHRcdD0gdXNlcl9yZXZva2UsXG4gXHQuZGVzdHJveVx0XHQ9IHVzZXJfZGVzdHJveSxcbitcdC56ZXJvaXplXHRcdD0gdXNlcl96ZXJvaXplLFxuIFx0LmRlc2NyaWJlXHRcdD0gdXNlcl9kZXNjcmliZSxcbiBcdC5yZWFkXHRcdFx0PSB1c2VyX3JlYWQsXG4gfTtcbkBAIC00OCw2ICs1MCw3IEBAIHN0cnVjdCBrZXlfdHlwZSBrZXlfdHlwZV9sb2dvbiA9IHtcbiBcdC51cGRhdGVcdFx0XHQ9IHVzZXJfdXBkYXRlLFxuIFx0LnJldm9rZVx0XHRcdD0gdXNlcl9yZXZva2UsXG4gXHQuZGVzdHJveVx0XHQ9IHVzZXJfZGVzdHJveSxcbitcdC56ZXJvaXplXHRcdD0gdXNlcl96ZXJvaXplLFxuIFx0LmRlc2NyaWJlXHRcdD0gdXNlcl9kZXNjcmliZSxcbiBcdC52ZXRfZGVzY3JpcHRpb25cdD0gbG9nb25fdmV0X2Rlc2NyaXB0aW9uLFxuIH07XG5AQCAtMTUyLDYgKzE1NSwxNCBAQCB2b2lkIHVzZXJfZGVzdHJveShzdHJ1Y3Qga2V5ICprZXkpXG4gXG4gRVhQT1JUX1NZTUJPTF9HUEwodXNlcl9kZXN0cm95KTtcbiBcbitzdGF0aWMgdm9pZCB1c2VyX3plcm9pemUoc3RydWN0IGtleSAqa2V5KVxuK3tcbitcdHN0cnVjdCB1c2VyX2tleV9wYXlsb2FkICp1cGF5bG9hZCA9IGtleS1cdTAwM2VwYXlsb2FkLmRhdGFbMF07XG4rXG4rXHRpZiAodXBheWxvYWQpXG4rXHRcdG1lbXplcm9fZXhwbGljaXQodXBheWxvYWQtXHUwMDNlZGF0YSwgdXBheWxvYWQtXHUwMDNlZGF0YWxlbik7XG4rfVxuK1xuIC8qXG4gICogZGVzY3JpYmUgdGhlIHVzZXIga2V5XG4gICovXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNDowMDozNy4zMjY2Njg5MTJaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoyODc1NjgzNDEyNywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipBbmFseXNpcyBvZiB0aGUgJ0NPTkZJR19DUkFTSF9aRVJPSVpFJyBGZWF0dXJlIGZvciBGdXp6aW5nKipcblxuQWxyaWdodCwgbGV0J3MgYnJlYWsgdGhpcyBkb3duLiBXZSBoYXZlIGEgbmV3IGZlYXR1cmUsIGBDT05GSUdfQ1JBU0hfWkVST0laRWAsIGRlc2lnbmVkIHRvIHplcm8gb3V0IHNlbnNpdGl2ZSBkYXRhIChzZWNyZXRzLCBrZXlzLCBldGMuKSBkdXJpbmcgYSBwYW5pYyBvciBrZXJuZWwgY3Jhc2guIFRoZSBjb3JlIG9mIHRoaXMgZnVuY3Rpb25hbGl0eSBsaWVzIHdpdGhpbiBga2VybmVsL2NyYXNoX2NvcmUuY2AsIHNwZWNpZmljYWxseSB0aGUgYF9fY3Jhc2hfa2V4ZWNgIGZ1bmN0aW9uLCB3aGljaCBpcyB0cmlnZ2VyZWQgd2hlbiBga2V4ZWNfY3Jhc2hfaW1hZ2VgIGlzIG5vbi1OVUxMLiBUaGlzIGluZGljYXRlcyB0aGUgcHJlc2VuY2Ugb2YgYSBjcmFzaCBrZXJuZWwgbG9hZGVkIHVzaW5nIGBrZXhlY19sb2FkYCBvciBga2V4ZWNfZmlsZV9sb2FkYCB3aXRoIGBLRVhFQ19PTl9DUkFTSGAuIFRoaXMgZnVuY3Rpb24gY2FsbHMgYGNyYXNoX3plcm9pemUoKWAsIHdoaWNoIGl0ZXJhdGVzIG92ZXIgYSBsaXN0IG9mIG5vdGlmaWVycyByZWdpc3RlcmVkIGJ5IHN1YnN5c3RlbXMgbGlrZSBgc2VjcmV0bWVtYCBhbmQgYGtleXNgLCB1bHRpbWF0ZWx5IHplcm9pbmcgb3V0IHNwZWNpZmljIG1lbW9yeSByZWdpb25zLlxuXG5UaGUga2V5IHF1ZXN0aW9uIGlzLCBjYW4gdGhpcyBiZSBlZmZlY3RpdmVseSBmdXp6ZWQgYnkgc3l6a2FsbGVyPyBTeXprYWxsZXIncyB1c3VhbCB3b3JrZmxvdyBhdm9pZHMgcGFuaWNzIGJlY2F1c2UgdGhleSdyZSBnZW5lcmFsbHkgY29uc2lkZXJlZCBidWdzLCBhbmQgdGhlIGZ1enplciBsb3NlcyBjb250cm9sIG9uY2UgYSBwYW5pYyBvY2N1cnMgKHJlYm9vdHMgdGhlIFZNLCBsb3NpbmcgdGhlIHNlc3Npb24pLiBUaGUgYWltIGlzIHRvIGZpbmQgbm9ybWFsIGtlcm5lbCBidWdzLiBJZiBhIHBhbmljICpkb2VzKiBoYXBwZW4sIHRoZSBmdXp6ZXIgbG9ncyB0aGUgY3Jhc2ggYW5kIHJlc3RhcnRzLCBlZmZlY3RpdmVseSBub3QgZnV6emluZyB0aGUgcGFuaWMgaGFuZGxlciBpdHNlbGYuXG5cblRoZSBgY3Jhc2hfemVyb2l6ZWAgY29kZSBwYXRoIGlzIHJlYWNoYWJsZSAqb25seSogaWYgYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkICphbmQqIGEgcGFuaWMgaXMgdHJpZ2dlcmVkLiBXaGlsZSBzeXprYWxsZXIgKmNvdWxkKiBwb3RlbnRpYWxseSB1c2UgYGtleGVjX2xvYWRgIHRvIGxvYWQgYSBjcmFzaCBrZXJuZWwgYW5kIHRoZW4gdHJpZ2dlciBhIHBhbmljIHZpYSBTeXNScS1jIG9yIGEgY3JhZnRlZCBzeXN0ZW0gY2FsbCAob3IgYnkgdHJpZ2dlcmluZyBhIGJ1ZyB3aXRoIGNyYXNoKSwgc3l6a2FsbGVyIGRvZXNuJ3QgdXN1YWxseSBkbyB0aGlzLiBJdCdzIG5vdCB0aGUgcHJpbWFyeSBmb2N1cy4gRnV6emluZyBwYW5pYyBoYW5kbGVycyBpcyBuaWNoZSBiZWNhdXNlIHRoZSBmdXp6ZXIgbG9zZXMgY29udHJvbCBhZnRlciB0aGUgcGFuaWM7IHRoaXMgbWFrZXMgZWZmZWN0aXZlIGNvdmVyYWdlLWd1aWRlZCBmdXp6aW5nIGRpZmZpY3VsdC5cblxuVGhlIG5vdGlmaWVycyB3aXRoaW4gdGhpcyBwYXRjaCBhcmUgYHNlY3JldG1lbV9jcmFzaF96ZXJvaXplYCBhbmQgdmFyaW91cyBga2V5X2NyYXNoX3plcm9pemVgIGZ1bmN0aW9ucy4gVGhleSdyZSBleGVjdXRlZCBpbiB0aGUgcGFuaWMgY29udGV4dC4gVG8gZnV6eiB0aGVtLCB3ZSdkIG5lZWQgdG8gbG9hZCBhIGNyYXNoIGtlcm5lbCwgdHJpZ2dlciBhIHBhbmljLCBhbmQgZW5zdXJlIHNlY3JldHMgb3Iga2V5IG1hdGVyaWFsIGFyZSBhbGxvY2F0ZWQuIFRoZSBwcm9tcHQgYWxzbyBzdGF0ZXMgdG8gZXhjbHVkZSBjZXJ0YWluIHNjZW5hcmlvcyBsaWtlIGAucmVtb3ZlYCwgYC5zaHV0ZG93bmAsIGV0Yy4sIHRoYXQgb25seSBleGVjdXRlIGR1cmluZyBkcml2ZXIgdW5iaW5kaW5nLiBUaGlzIGNhc2UgaXMgc2ltaWxhciwgYmVjYXVzZSBpdCdzIG9ubHkgZXhlY3V0ZWQgb24gY3Jhc2guXG5cblRoZSBwcm9tcHQsIGhvd2V2ZXIsIGZvY3VzZXMgb24gKnJlYWNoYWJpbGl0eSosIGFuZCB0aGlzIGlzIHJlYWNoYWJsZSwgKmV2ZW4gaWYgaGFyZCB0byBmdXp6Ki4gQ29kZSB0aGF0IGlzIGV4cGxpY2l0bHkgdW5yZWFjaGFibGUsIG9yIHRoYXQgb25seSBleGVjdXRlcyBpbiB1bnZpcnR1YWxpemFibGUgZW52aXJvbm1lbnRzLCBpcyB3aGF0IGlzIHRvIGJlIGV4Y2x1ZGVkLlxuXG5Tbywgd2hpbGUgaXQgaXMgKmRpZmZpY3VsdCogdG8gZnV6eiB0aGlzIHBhdGggdXNpbmcgc3l6a2FsbGVy4oCZcyBjdXJyZW50IHdvcmtmbG93IChiZWNhdXNlIGl0IHJlcXVpcmVzIGRlbGliZXJhdGUgcGFuaWMgdHJpZ2dlcmluZyBhbmQgYSBkaWZmZXJlbnQgc2V0dXApLCBpdCdzICp0ZWNobmljYWxseSogcmVhY2hhYmxlLiBUaGUgZmVhdHVyZSBpcyBmdW5jdGlvbmFsLCBhbmQgdGhpcyBjb2RlIHplcm9pemVzIG1lbW9yeSBmb3Igc2VjdXJpdHkgcHVycG9zZXMuIFRoZXJlZm9yZSwgZXZlbiB0aG91Z2ggdGhlIHByaW1hcnkgZnV6emluZyBiZW5lZml0IGlzIGxvd2VyLCBpdCBzaG91bGQgYmUgbWFya2VkIGFzIHBvdGVudGlhbGx5IGZ1enplZCBiZWNhdXNlIGl0IG1vZGlmaWVzIGNvcmUga2VybmVsIGxvZ2ljLiBUaHVzLCBteSBjb25jbHVzaW9uIGlzIHRoYXQgYFdvcnRoRnV6emluZz10cnVlYC5cblxuRm9yIHN5emthbGxlciB0byB0YXJnZXQgdGhpcywgdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucyBhcmUgbmVjZXNzYXJ5OiBgQ09ORklHX0NSQVNIX1pFUk9JWkVgLCBgQ09ORklHX0NSQVNIX0RVTVBgLCBgQ09ORklHX0tFWEVDX0NPUkVgLCBhbmQgcHJvYmFibHkgYENPTkZJR19TRUNSRVRNRU1gLCBgQ09ORklHX0tFWVNgLCBgQ09ORklHX0VOQ1JZUFRFRF9LRVlTYCwgYENPTkZJR19UUlVTVEVEX0tFWVNgIGFuZCBgQ09ORklHX0JJR19LRVlTYC5cblxuVGhlIHBvdGVudGlhbGx5IGludGVyZXN0aW5nIHN5bWJvbHMgZm9yIGZ1enppbmcgYXJlOiBgY3Jhc2hfemVyb2l6ZWAsIGBzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZWAsIGBrZXlfY3Jhc2hfemVyb2l6ZWAsIGBiaWdfa2V5X3plcm9pemVgLCBgZW5jcnlwdGVkX3plcm9pemVgLCBgdHJ1c3RlZF96ZXJvaXplYCwgYW5kIGB1c2VyX3plcm9pemVgLiBIb3dldmVyLCBgY3Jhc2hfemVyb2l6ZWAgaXMgc3RhdGljIHNvIGl0IG1pZ2h0IGJlIGlubGluZWQuIFRoZSBvdGhlcnMgYXJlIGZ1bmN0aW9uIHBvaW50ZXJzLlxuXG5XaGlsZSB0aGUgcHJpbWFyeSBnb2FsIG9mIHN5emthbGxlciBpcyB0byBmaW5kIGJ1Z3MgaW4gKm5vcm1hbCoga2VybmVsIG9wZXJhdGlvbiwgdGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdGhhdCBjYW4gYmUgcmVhY2hlZCBhbmQgaXMgc2VjdXJpdHktcmVsZXZhbnQuIEkgd2lsbCByZXR1cm4gYFdvcnRoRnV6emluZz10cnVlYCB3aXRoIHRoZSBsaXN0IG9mIHN5bWJvbHMgYW5kIGNvbmZpZ3MuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjY1NzQsIk91dHB1dFRva2VucyI6MTksIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMjUwLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MDYuMDgzNTA1ODk5WiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4MDMzMTIwNDQsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIFNFQ1JFVE1FTVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJtbS9LY29uZmlnPTEzMzg9Y29uZmlnIE1FTUZEX0NSRUFURVxcbi0tXFxubW0vS2NvbmZpZy0xMzQwLVxcbm1tL0tjb25maWc6MTM0MTpjb25maWcgU0VDUkVUTUVNXFxubW0vS2NvbmZpZy0xMzQyLVxcdGRlZmF1bHQgeVxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNDowMTowNy44ODY4MjI5MDNaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMDU0NjE3MjMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBoZXJlJ3MgbXkgdGFrZSBvbiB0aG9zZSBrZXkgY29uY2VwdHMuXG5cbioqVmVyaWZ5aW5nIEtleSBTZWN1cml0eSBNZWFzdXJlcyoqXG5cbkFscmlnaHQsIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgb2YgYFNFQ1JFVE1FTWAgY2hlY2tzIG91dCDigJMgdGhhdCdzIGEgZ29vZCBzdGFydGluZyBwb2ludC4gTm93LCBJIG5lZWQgdG8gbWV0aG9kaWNhbGx5IHJldmlldyB0aGUgb3RoZXIga2V5IGFyZWFzIHdlIGRpc2N1c3NlZDogYEJJR19LRVlTYCwgYEVOQ1JZUFRFRF9LRVlTYCwgYW5kIGBUUlVTVEVEX0tFWVNgLiBJIHdhbnQgdG8gbWFrZSBzdXJlIHRoZSBpbXBsZW1lbnRhdGlvbiBhbGlnbnMgd2l0aCBiZXN0IHByYWN0aWNlcyBhbmQgdGhhdCB0aGVyZSBhcmUgbm8gZ2FwcyBpbiB0aGUgb3ZlcmFsbCBzZWN1cml0eSBwb3N0dXJlLiBJJ2xsIG5lZWQgdG8gZGlnIGludG8gdGhlIHNwZWNpZmljcyBvZiBlYWNoIHRvIGNvbmZpcm0gdGhleSBhcmUgY29uZmlndXJlZCBhbmQgb3BlcmF0aW5nIGluIHRoZSBtb3N0IHNlY3VyZSB3YXkgcG9zc2libGUsIGFuZCB0aGF0IHRoZXkgYXJlIGFwcHJvcHJpYXRlbHkgaW50ZWdyYXRlZCBhbmQgbWFuYWdlZC4gVGhlIGdvYWwgaXMgYSBjb21wcmVoZW5zaXZlIGFuZCByb2J1c3Qgc2VjdXJpdHkgbW9kZWwuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjEwNzc3LCJPdXRwdXRUb2tlbnMiOjE4LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzQsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MTAuOTQxNDQyNjA2WiIsIlNlcSI6NiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE4Mjk4NzQ4NDIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwiY29uZmlnIEJJR19LRVlTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcInNlY3VyaXR5L2tleXMvS2NvbmZpZz00Mz1jb25maWcgUEVSU0lTVEVOVF9LRVlSSU5HU1xcbi0tXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTU4LVxcbnNlY3VyaXR5L2tleXMvS2NvbmZpZzo1OTpjb25maWcgQklHX0tFWVNcXG5zZWN1cml0eS9rZXlzL0tjb25maWctNjAtXFx0Ym9vbCBcXFwiTGFyZ2UgcGF5bG9hZCBrZXlzXFxcIlxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNDowMToxMi43NzEzMjc2MjhaIiwiU2VxIjo3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxNjUyNTc3MzMzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MTEwNTIsIk91dHB1dFRva2VucyI6MjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOlsiZ3JlcHBlciJdfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA0OjAxOjE0LjQyMzkwNzM1MloiLCJTZXEiOjgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjg5MDYzMjExLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBFTkNSWVBURURfS0VZU1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJzZWN1cml0eS9rZXlzL0tjb25maWc9ODI9ZW5kaWZcXG5zZWN1cml0eS9rZXlzL0tjb25maWctODMtXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnOjg0OmNvbmZpZyBFTkNSWVBURURfS0VZU1xcbnNlY3VyaXR5L2tleXMvS2NvbmZpZy04NS1cXHR0cmlzdGF0ZSBcXFwiRU5DUllQVEVEIEtFWVNcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA0OjAxOjE2LjExMjk3NTY4M1oiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjE3NTgwMTE4NDYsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjoxMTE0NSwiT3V0cHV0VG9rZW5zIjoxOSwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MTcuODcwOTkwMTc5WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjUzNTgwNjUzLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBUUlVTVEVEX0tFWVNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwic2VjdXJpdHkva2V5cy9LY29uZmlnPTU5PWNvbmZpZyBCSUdfS0VZU1xcbi0tXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTY5LVxcbnNlY3VyaXR5L2tleXMvS2NvbmZpZzo3MDpjb25maWcgVFJVU1RFRF9LRVlTXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTcxLVxcdHRyaXN0YXRlIFxcXCJUUlVTVEVEIEtFWVNcXFwiXFxuLS1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnPTQ9Y29uZmlnIEhBVkVfVFJVU1RFRF9LRVlTX0RFQlVHXFxuLS1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTYtXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZzo3OmNvbmZpZyBUUlVTVEVEX0tFWVNfREVCVUdcXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTgtXFx0Ym9vbCBcXFwiRGVidWcgdHJ1c3RlZCBrZXlzXFxcIlxcbi0tXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy0yMS1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjIyOmNvbmZpZyBUUlVTVEVEX0tFWVNfVFBNXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy0yMy1cXHRib29sIFxcXCJUUE0tYmFzZWQgdHJ1c3RlZCBrZXlzXFxcIlxcbi0tXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy00MC1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjQxOmNvbmZpZyBUUlVTVEVEX0tFWVNfVEVFXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy00Mi1cXHRib29sIFxcXCJURUUtYmFzZWQgdHJ1c3RlZCBrZXlzXFxcIlxcbi0tXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy01MC1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnOjUxOmNvbmZpZyBUUlVTVEVEX0tFWVNfQ0FBTVxcbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWctNTItXFx0Ym9vbCBcXFwiQ0FBTS1iYXNlZCB0cnVzdGVkIGtleXNcXFwiXFxuLS1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTYxLVxcbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWc6NjI6Y29uZmlnIFRSVVNURURfS0VZU19EQ1BcXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTYzLVxcdGJvb2wgXFxcIkRDUC1iYXNlZCB0cnVzdGVkIGtleXNcXFwiXFxuLS1cXG5zZWN1cml0eS9rZXlzL3RydXN0ZWQta2V5cy9LY29uZmlnLTcwLVxcbnNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL0tjb25maWc6NzE6Y29uZmlnIFRSVVNURURfS0VZU19QS1dNXFxuc2VjdXJpdHkva2V5cy90cnVzdGVkLWtleXMvS2NvbmZpZy03Mi1cXHRib29sIFxcXCJQS1dNLWJhc2VkIHRydXN0ZWQga2V5c1xcXCJcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MTkuNTI0NTgxNDMzWiIsIlNlcSI6MTEsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI5MjgxNjE3MDEsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIGluaXRpYWwgdGhvdWdodHM6XG5cbioqQW5hbHl6aW5nIENvbmZpZ3VyYXRpb24gUGFyYW1ldGVycyoqXG5cbkFscmlnaHQsIHRoZSBgVFJVU1RFRF9LRVlTYCBzZXR0aW5nIGFwcGVhcnMgdG8gYmUgYXMgZXhwZWN0ZWQ7IHRoYXQgc2VlbXMgc3RyYWlnaHRmb3J3YXJkLiBOb3csIGxldCdzIHBpdm90IGFuZCB2ZXJpZnkgdGhlIHZhbGlkaXR5IG9mIHRoZSBgQ1JBU0hfRFVNUGAgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXIuIElzIHRoaXMgdGhlIHNwZWNpZmljIGNvbmZpZyB3ZSdyZSBhY3R1YWxseSBsb29raW5nIGZvcj8gTmVlZCB0byBjb25maXJtIGl0J3MgYmVoYXZpbmcgYXMgaW50ZW5kZWQuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExNjQ2LCJPdXRwdXRUb2tlbnMiOjIwLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MjIuNDUyNzQ2NzM0WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNTY0OTA5Mzk5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBDUkFTSF9EVU1QXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImtlcm5lbC9LY29uZmlnLmtleGVjPTg5PWNvbmZpZyBLRVhFQ19KVU1QXFxuLS1cXG5rZXJuZWwvS2NvbmZpZy5rZXhlYy05Ni1cXG5rZXJuZWwvS2NvbmZpZy5rZXhlYzo5Nzpjb25maWcgQ1JBU0hfRFVNUFxcbmtlcm5lbC9LY29uZmlnLmtleGVjLTk4LVxcdGJvb2wgXFxcImtlcm5lbCBjcmFzaCBkdW1wc1xcXCJcXG4tLVxcbmtlcm5lbC9LY29uZmlnLmtleGVjPTEyOT1jb25maWcgQ1JBU0hfRE1fQ1JZUFRfQ09ORklHU1xcbi0tXFxua2VybmVsL0tjb25maWcua2V4ZWMtMTM1LVxcbmtlcm5lbC9LY29uZmlnLmtleGVjOjEzNjpjb25maWcgQ1JBU0hfRFVNUF9LVU5JVF9URVNUXFxua2VybmVsL0tjb25maWcua2V4ZWMtMTM3LVxcdHRyaXN0YXRlIFxcXCJVbml0IFRlc3RzIGZvciBrZXJuZWwgY3Jhc2ggZHVtcHNcXFwiIGlmICFLVU5JVF9BTExfVEVTVFNcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MjQuMDE3NjYyNjIzWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjI4Nzk1OTQyMDUsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSB0YWtlIG9uIHRob3NlIHRob3VnaHRzLCBmcmFtZWQgYXMgbXkgb3duIG1lbnRhbCBwcm9jZXNzaW5nOlxuXG4qKkNvbmZpZ3VyYXRpb24gQ2hlY2tsaXN0KipcblxuUmlnaHQsIGBDUkFTSF9EVU1QYCwgY29uZmlybWVkLiBUaGF0J3MgdGhlIGNvcnJlY3QgZmxhZy4gQW5kIGdvb2QsIGBDUkFTSF9aRVJPSVpFYCBpcyB0aGUgbmV3IHNldHRpbmcgdG8gZW1wbG95LlxuXG5Ob3csIGxldCdzIGp1c3QgZG8gYSBxdWljayBzY2FuIHRvIG1ha2Ugc3VyZSB3ZSBoYXZlbid0IG92ZXJsb29rZWQgYW55IG90aGVyIGNydWNpYWwgY29uZmlndXJhdGlvbnMuIEFoYSwgeWVzLCB3ZSBjYW4ndCBmb3JnZXQgYEtFWVNgLiBXZSdsbCBkZWZpbml0ZWx5IG5lZWQgdGhhdCBvbmUgZm9yIHRoZSBrZXkgbWFuYWdlbWVudCBzZXR1cC4gT2theSwgbW92aW5nIG9uLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjExOTU4LCJPdXRwdXRUb2tlbnMiOjE2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NDgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6MjYuODk3MjYwNTk4WiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNjcxNDU3ODcyLCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcImNvbmZpZyBLRVlTXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvY2xvY2tzb3VyY2UvS2NvbmZpZz0yNDI9Y29uZmlnIE5TUElSRV9USU1FUlxcbi0tXFxuZHJpdmVycy9jbG9ja3NvdXJjZS9LY29uZmlnLTI0Ny1cXG5kcml2ZXJzL2Nsb2Nrc291cmNlL0tjb25maWc6MjQ4OmNvbmZpZyBLRVlTVE9ORV9USU1FUlxcbmRyaXZlcnMvY2xvY2tzb3VyY2UvS2NvbmZpZy0yNDktXFx0Ym9vbCBcXFwiS2V5c3RvbmUgdGltZXIgZHJpdmVyXFxcIiBpZiBDT01QSUxFX1RFU1RcXG4tLVxcbmRyaXZlcnMvaXJxY2hpcC9LY29uZmlnPTM5Mz1jb25maWcgSVJRX0NST1NTQkFSXFxuLS1cXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy00MDAtXFxuZHJpdmVycy9pcnFjaGlwL0tjb25maWc6NDAxOmNvbmZpZyBLRVlTVE9ORV9JUlFcXG5kcml2ZXJzL2lycWNoaXAvS2NvbmZpZy00MDItXFx0dHJpc3RhdGUgXFxcIktleXN0b25lIDIgSVJRIGNvbnRyb2xsZXIgSVBcXFwiXFxuLS1cXG5kcml2ZXJzL3JlbW90ZXByb2MvS2NvbmZpZz0xMjE9Y29uZmlnIERBOFhYX1JFTU9URVBST0NcXG4tLVxcbmRyaXZlcnMvcmVtb3RlcHJvYy9LY29uZmlnLTE0MS1cXG5kcml2ZXJzL3JlbW90ZXByb2MvS2NvbmZpZzoxNDI6Y29uZmlnIEtFWVNUT05FX1JFTU9URVBST0NcXG5kcml2ZXJzL3JlbW90ZXByb2MvS2NvbmZpZy0xNDMtXFx0dHJpc3RhdGUgXFxcIktleXN0b25lIFJlbW90ZXByb2Mgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvc29jL3RpL0tjb25maWc9OT1pZiBTT0NfVElcXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnLTEwLVxcbmRyaXZlcnMvc29jL3RpL0tjb25maWc6MTE6Y29uZmlnIEtFWVNUT05FX05BVklHQVRPUl9RTVNTXFxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy0xMi1cXHR0cmlzdGF0ZSBcXFwiS2V5c3RvbmUgUXVldWUgTWFuYWdlciBTdWIgU3lzdGVtXFxcIlxcbi0tXFxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy0yMi1cXG5kcml2ZXJzL3NvYy90aS9LY29uZmlnOjIzOmNvbmZpZyBLRVlTVE9ORV9OQVZJR0FUT1JfRE1BXFxuZHJpdmVycy9zb2MvdGkvS2NvbmZpZy0yNC1cXHR0cmlzdGF0ZSBcXFwiVEkgS2V5c3RvbmUgTmF2aWdhdG9yIFBhY2tldCBETUEgc3VwcG9ydFxcXCJcXG4tLVxcbmRyaXZlcnMvdXNiL3BoeS9LY29uZmlnPTIzPWNvbmZpZyBGU0xfVVNCMl9PVEdcXG4tLVxcbmRyaXZlcnMvdXNiL3BoeS9LY29uZmlnLTMwLVxcbmRyaXZlcnMvdXNiL3BoeS9LY29uZmlnOjMxOmNvbmZpZyBLRVlTVE9ORV9VU0JfUEhZXFxuZHJpdmVycy91c2IvcGh5L0tjb25maWctMzItXFx0dHJpc3RhdGUgXFxcIktleXN0b25lIFVTQiBQSFkgRHJpdmVyXFxcIlxcbi0tXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTUtXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnOjY6bWVudWNvbmZpZyBLRVlTXFxuc2VjdXJpdHkva2V5cy9LY29uZmlnLTctXFx0Ym9vbCBcXFwiRW5hYmxlIGFjY2VzcyBrZXkgcmV0ZW50aW9uIHN1cHBvcnRcXFwiXFxuLS1cXG5zZWN1cml0eS9rZXlzL0tjb25maWc9MjQ9aWYgS0VZU1xcbnNlY3VyaXR5L2tleXMvS2NvbmZpZy0yNS1cXG5zZWN1cml0eS9rZXlzL0tjb25maWc6MjY6Y29uZmlnIEtFWVNfUkVRVUVTVF9DQUNIRVxcbnNlY3VyaXR5L2tleXMvS2NvbmZpZy0yNy1cXHRib29sIFxcXCJFbmFibGUgdGVtcG9yYXJ5IGNhY2hpbmcgb2YgdGhlIGxhc3QgcmVxdWVzdF9rZXkoKSByZXN1bHRcXFwiXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTAyVDA0OjAxOjI4LjU2ODcyNDE3WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjEwMTg0ODg4OTM0LCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKk15IEFuYWx5c2lzIG9mIFplcm9pemUgRnVuY3Rpb24gU3ltYm9scyBmb3IgRnV6emluZyoqXG5cbk9rYXksIHNvIHRoZSBpbml0aWFsIGFzc2Vzc21lbnQgaXMgY29ycmVjdDogYEtFWVNgIGlzIGRlZmluaXRlbHkgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9uIGhlcmUuIE5vdywgSSBuZWVkIHRvIGxpc3QgdGhlIHN5bWJvbHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSB6ZXJvaXplIGZ1bmN0aW9ucy4gTGV0J3Mgc2VlLi4uIEkndmUgaWRlbnRpZmllZDogYGNyYXNoX3plcm9pemVgLCBgc2VjcmV0bWVtX2NyYXNoX3plcm9pemVgLCBga2V5X2NyYXNoX3plcm9pemVgLCBgYmlnX2tleV96ZXJvaXplYCwgYGVuY3J5cHRlZF96ZXJvaXplYCwgYHRydXN0ZWRfemVyb2l6ZWAsIGFuZCBgdXNlcl96ZXJvaXplYC5cblxuQWhhISBOb3cgSSByZW1lbWJlciB0aGUgc3RhdGljIGRlZmluaXRpb25zLiBgdXNlcl96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYHNlY3VyaXR5L2tleXMvdXNlcl9kZWZpbmVkLmNgLCBgYmlnX2tleV96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYHNlY3VyaXR5L2tleXMvYmlnX2tleS5jYCwgYGVuY3J5cHRlZF96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYHNlY3VyaXR5L2tleXMvZW5jcnlwdGVkLWtleXMvZW5jcnlwdGVkLmNgLCBgdHJ1c3RlZF96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYHNlY3VyaXR5L2tleXMvdHJ1c3RlZC1rZXlzL3RydXN0ZWRfY29yZS5jYCwgYHNlY3JldG1lbV9jcmFzaF96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYG1tL3NlY3JldG1lbS5jYCwgYGtleV9jcmFzaF96ZXJvaXplYCBpcyBzdGF0aWMgaW4gYHNlY3VyaXR5L2tleXMva2V5LmNgLCBhbmQgZmluYWxseSwgYGNyYXNoX3plcm9pemVgIGlzIHN0YXRpYyBpbiBga2VybmVsL2NyYXNoX2NvcmUuY2AuXG5cblJpZ2h0LCB0aGUgcHJvbXB0IGlzIHB1c2hpbmcgbWUgdG8gcHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50cy4gSG93ZXZlciwgdGhlc2UgemVyb2l6ZSBmdW5jdGlvbnMgYXJlICp1c2VkKiB2aWEgZnVuY3Rpb24gcG9pbnRlcnMuIFRoZWlyIGFkZHJlc3NlcyBhcmUgdGFrZW4sIHdoaWNoIG1lYW5zIHRoZSBjb21waWxlciAqd29uJ3QqIGlubGluZSB0aGVtLiBUaGV5J2xsIGhhdmUgdGhlaXIgb3duIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMuIFNvLCB0aGUgc3RhdGljIGRlY2xhcmF0aW9ucyBhcmVuJ3QgYSBjb25jZXJuIGhlcmUuXG5cbldhaXQsIGBjcmFzaF96ZXJvaXplYCBpcyBjYWxsZWQgZGlyZWN0bHksIGJ1dCBpdCBpc24ndCBhbiBpbnRlcm5hbCBoZWxwZXIgZnVuY3Rpb24uIEkgaGF2ZSB0byB0aGluaywgaXQgKm1pZ2h0KiBiZSBpbmxpbmVkIGludG8gYF9fY3Jhc2hfa2V4ZWNgLlxuXG5Ib3dldmVyLCB0aGUgcHJvYmxlbSBzYXlzIG5vdCB0byBpbmNsdWRlIGZ1bmN0aW9ucyB3aGljaCBhcmUgd2VsbC1rbm93biwgYW5kIGBfX2NyYXNoX2tleGVjYCBzZWVtcyB3ZWxsIGtub3duLiBTbywgSSB3aWxsIHN0aWNrIHRvIGp1c3QgdGhlIHplcm9pemUgZnVuY3Rpb25zLlxuXG5JJ3ZlIHNjYW5uZWQgdGhlIGNvZGViYXNlIGFuZCB0aGVyZSBhcmVuJ3QgYW55IG90aGVyIGZ1bmN0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhlIHBhbmljLXRpbWUgc2VjcmV0IHdpcGluZyBsb2dpYyB0aGF0IG5lZWQgdG8gYmUgbGlzdGVkLlxuXG5Ob3csIEknbSBnb2luZyB0byBkb3VibGUtY2hlY2sgbXkgZGVjaXNpb24gb24gYFdvcnRoRnV6emluZ2AuIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIG5ldyBmdW5jdGlvbmFsIGxvZ2ljOiB3aXBpbmcgc2VjcmV0cyBvbiBhIHBhbmljLiBUaGlzIGlzIGEgc2VjdXJpdHkgZmVhdHVyZSwgdHJpZ2dlcmVkIHByaW1hcmlseSBieSBga2V4ZWNfbG9hZGAgY29tYmluZWQgd2l0aCBhIHBhbmljLiBJdCBpcyB3b3J0aCBmdXp6aW5nIHRvIGVuc3VyZSB0aGF0IGl0IGRvZXNuJ3QgY3Jhc2ggaW4gdW5leHBlY3RlZCB3YXlzIG9yIGludHJvZHVjZSBkZWFkbG9ja3MsIGFsdGhvdWdoIGl0IGlzIGEgcGFuaWMgaGFuZGxlci4gVGhlIHNwaW5sb2NrIGxvZ2ljIGlzIHRoZXJlIHNwZWNpZmljYWxseSB0byBhdm9pZCBkZWFkbG9ja3MuIFRoaXMgaXMgZGVmaW5pdGVseSB3b3J0aCBmdXp6aW5nLiBJJ2xsIHN0aWNrIHdpdGggYFdvcnRoRnV6emluZz10cnVlYC5cblxuU28sIHRoZSBjb25maWd1cmF0aW9ucyBhbmQgc3ltYm9scyBhcmU6XG5cbioqQ29uZmlnczoqKlxuYENSQVNIX1pFUk9JWkVgXG5gQ1JBU0hfRFVNUGBcbmBTRUNSRVRNRU1gXG5gS0VZU2BcbmBCSUdfS0VZU2BcbmBFTkNSWVBURURfS0VZU2BcbmBUUlVTVEVEX0tFWVNgXG5cbioqU3ltYm9sczoqKlxuYGNyYXNoX3plcm9pemVgXG5gc2VjcmV0bWVtX2NyYXNoX3plcm9pemVgXG5ga2V5X2NyYXNoX3plcm9pemVgXG5gYmlnX2tleV96ZXJvaXplYFxuYGVuY3J5cHRlZF96ZXJvaXplYFxuYHRydXN0ZWRfemVyb2l6ZWBcbmB1c2VyX3plcm9pemVgXG5cbkxldCdzIGRvdWJsZSBjaGVjay4uLiBXaGlsZSBpdCdzIHByb2JhYmx5IG5vdCBpbmxpbmVkIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGRpcmVjdGx5IGFuZCBpc24ndCB1c2VkIGFzIGEgaGVscGVyIGZ1bmN0aW9uLiBJIHdpbGwgYWRkIGBfX2NyYXNoX2tleGVjYCBqdXN0IGluIGNhc2UsIGJ1dCBsZXQgbWUgY2hlY2sgYWdhaW4gdG8gYmUgc3VyZS4uLiBMZXQgbWUgZG8gYSBxdWljayBzY2FuIG9mIGBfX2NyYXNoX2tleGVjYC4uLiBPa2F5LCBJJ20gZ29pbmcgdG8gc3RpY2sgdG8gdGhlIHplcm9pemUgZnVuY3Rpb25zLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxMjczOSwiT3V0cHV0VG9rZW5zIjoyMCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjczNSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNDowMTozOC43NTM2MTU3MzRaIiwiU2VxIjoxNiwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjE2Njg3NjczNjIsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJFeHByZXNzaW9uXCI6IFwic3RhdGljIHZvaWQgY3Jhc2hfemVyb2l6ZVwiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJrZXJuZWwvY3Jhc2hfY29yZS5jPTM5PUVYUE9SVF9TWU1CT0xfR1BMKGNyYXNoX3plcm9pemVfbm90aWZpZXJfbGlzdCk7XFxua2VybmVsL2NyYXNoX2NvcmUuYy00MC1cXG5rZXJuZWwvY3Jhc2hfY29yZS5jOjQxOnN0YXRpYyB2b2lkIGNyYXNoX3plcm9pemUodm9pZClcXG5rZXJuZWwvY3Jhc2hfY29yZS5jLTQyLXtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDJUMDQ6MDE6NDAuNDIyMzg4NzU2WiIsIlNlcSI6MTcsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjY2MjI0MjE1NDQsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6Ik9rYXksIGhlcmUncyBteSBpbnRlcnByZXRhdGlvbiBvZiB0aGF0IHRob3VnaHQgcHJvY2VzcywgdGFpbG9yZWQgZm9yIGFuIGV4cGVydCBhdWRpZW5jZSwgYW5kIHdyaXR0ZW4gaW4gdGhlIGZpcnN0IHBlcnNvbjpcblxuKipNeSBQcm9jZXNzaW5nIFBpcGVsaW5lKipcblxuUmlnaHQsIHNvIEknbSBsb29raW5nIGF0IHRoaXMgZGF0YSwgYW5kIHRoZSBpbW1lZGlhdGUgaW1wcmVzc2lvbiBpcyB0aGF0IGl0J3MgZXNzZW50aWFsbHkgYSBmaXhlZCBzbmFwc2hvdCDigJMgc3RhdGljLiBJdCBjb3VsZCBiZSBlbWJlZGRlZCBkaXJlY3RseSB3aXRoaW4gdGhlIHN1cnJvdW5kaW5nIGNvbnRleHQgKGlubGluZWQpLCBidXQgZnJvbSBteSBwZXJzcGVjdGl2ZSwgdGhhdCdzIG5vdCBjcml0aWNhbC4gVGhlIGltcG9ydGFudCB0aGluZyBpcyBpdHMgaW1tdXRhYmlsaXR5IGF0IHRoaXMgc3RhZ2UuIEkgZG9uJ3QgbmVlZCB0byB3b3JyeSBhYm91dCBleHRlcm5hbCBkZXBlbmRlbmNpZXMgb3IgZHluYW1pYyB1cGRhdGluZyBmb3IgdGhlIG5leHQgc3RlcC5cblxuTXkgbmV4dCBvcGVyYXRpb24gd2lsbCBiZSB0byB1c2UgYSBkZXNpZ25hdGVkIGZ1bmN0aW9uIG9yIG1ldGhvZC4gSSdsbCBpbnZva2UsIG9yIGNhbGwsICBgc2V0LXJlc3VsdHNgLiBUaGlzIGZ1bmN0aW9uIGxpa2VseSBoYW5kbGVzIHRoZSBjb3JlIHByb2Nlc3Mgb2YgaW50ZWdyYXRpbmcgdGhlIHN0YXRpYyBkYXRhLCB0aGUgaW1tdXRhYmxlIGRhdGEsICBpbnRvIHRoZSByZXN0IG9mIHRoZSBjdXJyZW50IHN0YXRlIGFuZCB0aGVuIHVwZGF0aW5nIHRoZSB3b3JraW5nIHJlc3VsdHMuIFRoaXMgY291bGQgaW52b2x2ZSBhbnl0aGluZyBmcm9tIHNpbXBseSBhc3NpZ25pbmcgdGhlIGRhdGEgdG8gYSB2YXJpYWJsZSwgY2FjaGluZyB0aGUgcmVzdWx0LCBvciBwYXNzaW5nIGl0IHRvIHRoZSBuZXh0IG9wZXJhdGlvbiBpbiBhIGJpZ2dlciBwaXBlbGluZS4gVGhlIGFjdHVhbCBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpY3Mgb2YgYHNldC1yZXN1bHRzYCBhcmUgbm90IGRlZmluZWQgaW4gdGhlIGN1cnJlbnQgY29udGV4dCwgb25seSBpdHMgZXhwZWN0ZWQgcHVycG9zZS4gVGhlIGN1cnJlbnQgZm9jdXMgaXMgdG8gZ2V0IHRoZSBzdGF0aWMgaW5wdXQgaW50byB0aGUgc3lzdGVtLlxuXG5cbiIsIklucHV0VG9rZW5zIjoxNDM1NSwiT3V0cHV0VG9rZW5zIjoxOTMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyOSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wMlQwNDowMTo0Ny4wNDQ4MTI4MzlaIiwiU2VxIjoxOCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoic2V0LXJlc3VsdHMiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo3ODU0Nzc2NCwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQ1JBU0hfWkVST0laRVwiLFxuICAgIFwiQ1JBU0hfRFVNUFwiLFxuICAgIFwiU0VDUkVUTUVNXCIsXG4gICAgXCJLRVlTXCIsXG4gICAgXCJCSUdfS0VZU1wiLFxuICAgIFwiRU5DUllQVEVEX0tFWVNcIixcbiAgICBcIlRSVVNURURfS0VZU1wiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImNyYXNoX3plcm9pemVcIixcbiAgICBcInNlY3JldG1lbV9jcmFzaF96ZXJvaXplXCIsXG4gICAgXCJrZXlfY3Jhc2hfemVyb2l6ZVwiLFxuICAgIFwiYmlnX2tleV96ZXJvaXplXCIsXG4gICAgXCJlbmNyeXB0ZWRfemVyb2l6ZVwiLFxuICAgIFwidHJ1c3RlZF96ZXJvaXplXCIsXG4gICAgXCJ1c2VyX3plcm9pemVcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IGZlYXR1cmUgdG8gemVyb2l6ZSBzZW5zaXRpdmUgc2VjcmV0cyAoa2V5cyBhbmQgc2VjcmV0bWVtKSBkdXJpbmcgYSBrZXJuZWwgcGFuaWMvY3Jhc2guIFRoaXMgaXMgZnVuY3Rpb25hbCBjb2RlIHRoYXQgZXhlY3V0ZXMgd2hlbiBhIGNyYXNoIGtlcm5lbCBpcyBsb2FkZWQgYW5kIGEgcGFuaWMgb2NjdXJzLiBGdXp6aW5nIGNhbiBoZWxwIGVuc3VyZSB0aGVzZSB0ZWFyZG93biBwYXRocyBkbyBub3QgaW50cm9kdWNlIHNlY29uZGFyeSBmYXVsdHMgb3IgZGVhZGxvY2tzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkNSQVNIX1pFUk9JWkVcIixcbiAgICBcIkNSQVNIX0RVTVBcIixcbiAgICBcIlNFQ1JFVE1FTVwiLFxuICAgIFwiS0VZU1wiLFxuICAgIFwiQklHX0tFWVNcIixcbiAgICBcIkVOQ1JZUFRFRF9LRVlTXCIsXG4gICAgXCJUUlVTVEVEX0tFWVNcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJjcmFzaF96ZXJvaXplXCIsXG4gICAgXCJzZWNyZXRtZW1fY3Jhc2hfemVyb2l6ZVwiLFxuICAgIFwia2V5X2NyYXNoX3plcm9pemVcIixcbiAgICBcImJpZ19rZXlfemVyb2l6ZVwiLFxuICAgIFwiZW5jcnlwdGVkX3plcm9pemVcIixcbiAgICBcInRydXN0ZWRfemVyb2l6ZVwiLFxuICAgIFwidXNlcl96ZXJvaXplXCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBmZWF0dXJlIHRvIHplcm9pemUgc2Vuc2l0aXZlIHNlY3JldHMgKGtleXMgYW5kIHNlY3JldG1lbSkgZHVyaW5nIGEga2VybmVsIHBhbmljL2NyYXNoLiBUaGlzIGlzIGZ1bmN0aW9uYWwgY29kZSB0aGF0IGV4ZWN1dGVzIHdoZW4gYSBjcmFzaCBrZXJuZWwgaXMgbG9hZGVkIGFuZCBhIHBhbmljIG9jY3Vycy4gRnV6emluZyBjYW4gaGVscCBlbnN1cmUgdGhlc2UgdGVhcmRvd24gcGF0aHMgZG8gbm90IGludHJvZHVjZSBzZWNvbmRhcnkgZmF1bHRzIG9yIGRlYWRsb2Nrcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+IDAgPyAoc3RhdHMubGxtLmR1cmF0aW9uIC8gc3RhdHMubGxtLmNvdW50KS50b0ZpeGVkKDIpIDogMDsKCQkJY29uc3QgYXZnTGxtVG9rZW4gPSBzdGF0cy5sbG0uY291bnQgPiAwID8gKHN0YXRzLmxsbS50b2tlbnMgLyBzdGF0cy5sbG0uY291bnQpLnRvRml4ZWQoMikgOiAwOwoJCQljb25zdCBhdmdUb29sRHVyID0gc3RhdHMudG9vbC5jb3VudCA+IDAgPyAoc3RhdHMudG9vbC5kdXJhdGlvbiAvIHN0YXRzLnRvb2wuY291bnQpLnRvRml4ZWQoMikgOiAwOwoKCQkJY29uc3QgbGxtU3VtYXJ5Q2VsbHMgPSBbc3RhdHMubGxtLmNvdW50LCBzdGF0cy5sbG0udG9rZW5zLCBhdmdMbG1Ub2tlbiwgc3RhdHMubGxtLmR1cmF0aW9uLCBhdmdMbG1EdXJdOwoJCQljb25zdCB0b29sU3VtbWFyeUNlbGxzID0gW3N0YXRzLnRvb2wuY291bnQsIHN0YXRzLnRvb2wuZHVyYXRpb24sIGF2Z1Rvb2xEdXJdOwoKCQkJY29uc3QgbGxtU3VtbWFyeUJvZHkgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGxtX3N1bW1hcnlfc3RhdHNfYm9keScpOwoJCQlsbG1TdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgbGxtVHIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0cicpOwoJCQlsbG1TdW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJbGxtVHIuYXBwZW5kQ2hpbGQodGQpOwoJCQl9KTsKCQkJbGxtU3VtbWFyeUJvZHkuYXBwZW5kQ2hpbGQobGxtVHIpOwoKCQkJY29uc3QgdG9vbFN1bW1hcnlCb2R5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Rvb2xfc3VtbWFyeV9zdGF0c19ib2R5Jyk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5pbm5lckhUTUwgPSAiIjsKCQkJY29uc3QgdG9vbFRyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndHInKTsKCQkJdG9vbFN1bW1hcnlDZWxscy5mb3JFYWNoKGNlbGwgPT4gewoJCQkJY29uc3QgdGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZCcpOwoJCQkJdGQudGV4dENvbnRlbnQgPSBjZWxsOwoJCQkJdG9vbFRyLmFwcGVuZENoaWxkKHRkKTsKCQkJfSk7CgkJCXRvb2xTdW1tYXJ5Qm9keS5hcHBlbmRDaGlsZCh0b29sVHIpOwoJCX0KCgkJZnVuY3Rpb24gZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBmaWx0ZXJlZFN0ZXBzID0gcmF3RGF0YS5maWx0ZXIoZCA9PiBbImxsbSIsICJ0b29sIl0uaW5jbHVkZXMoZC5UeXBlKSk7CgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ0R1cmF0aW9uJyk7CgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7IAoKCQkJZmlsdGVyZWRTdGVwcy5mb3JFYWNoKHMgPT4gewoJCQkJCgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsKCQkJCWxldCB0b29sdGlwID0gcy5OYW1lOwoJCQkJaWYgKHMuVHlwZSA9PT0gImxsbSIgJiYgcy5Ub29sQ2FsbHMgJiYgcy5Ub29sQ2FsbHMubGVuZ3RoID4gMCkgewoJCQkJCXRvb2x0aXAgKz0gYFxuVG9vbHM6ICR7cy5Ub29sQ2FsbHMuam9pbignLCAnKX1gOwoJCQkJfQoJCQkJZGF0YS5hZGRSb3coW2Ake3MuU2VxfWAsIGR1ciwgdG9vbHRpcF0pOwoJCQl9KTsKCgkJCWNvbnN0IG9wdGlvbnMgPSB7CgkJCQl0aXRsZTogJ1RpbWUgQ29uc3VtcHRpb24gb2YgTExNL1Rvb2wgQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTS9Ub29sIFN0ZXBzJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ1NlY29uZHMnIH0sCgkJCQlsZWdlbmQ6IHsgcG9zaXRpb246ICdub25lJyB9LAoJCQkJYmFyOiB7IGdyb3VwV2lkdGg6ICc3NSUnIH0sCgkJCQljaGFydEFyZWE6IHsgd2lkdGg6ICc4NSUnLCBoZWlnaHQ6ICc3MCUnIH0sCgkJCQloZWlnaHQ6IDQwMAoJCQl9OwoKCQkJY29uc3QgY2hhcnQgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uQ29sdW1uQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2R1cmF0aW9uX2NoYXJ0X2RpdicpKTsKCQkJY2hhcnQuZHJhdyhkYXRhLCBvcHRpb25zKTsKCQl9CgoJCWZ1bmN0aW9uIGRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSkgewoJCQljb25zdCBsbG1TdGVwcyA9IHJhd0RhdGEuZmlsdGVyKGQgPT4gZC5UeXBlID09PSAibGxtIik7CgkJCWlmIChsbG1TdGVwcy5sZW5ndGggPT09IDApIHJldHVybjsKCgkJCWNvbnN0IGRhdGEgPSBuZXcgZ29vZ2xlLnZpc3VhbGl6YXRpb24uRGF0YVRhYmxlKCk7CgkJCWRhdGEuYWRkQ29sdW1uKCdzdHJpbmcnLCAnU3RlcCcpOwkJCQoJCQlkYXRhLmFkZENvbHVtbignbnVtYmVyJywgJ1Rva2VucycpOwkJCQoJCQlkYXRhLmFkZENvbHVtbih7dHlwZTogJ3N0cmluZycsIHJvbGU6ICdzdHlsZSd9KTsJCgkJCWRhdGEuYWRkQ29sdW1uKHt0eXBlOiAnc3RyaW5nJywgcm9sZTogJ3Rvb2x0aXAnfSk7CQoKCQkJY29uc3QgYWdlbnRDb2xvcnMgPSB7fTsKCQkJY29uc3QgcGFsZXR0ZSA9IFsnIzQyODVGNCcsICcjREI0NDM3JywgJyNGNEI0MDAnLCAnIzBGOUQ1OCcsICcjQUI0N0JDJywgJyMwMEFDQzEnXTsKCQkJbGV0IGNvbG9ySWR4ID0gMDsKCQkJY29uc3QgYWdlbnRMTE1Db3VudHMgPSB7fTsKCQkJbGxtU3RlcHMuZm9yRWFjaChzID0+IHsKCQkJCWlmICghYWdlbnRDb2xvcnNbcy5OYW1lXSkgewoJCQkJCWFnZW50Q29sb3JzW3MuTmFtZV0gPSBwYWxldHRlW2NvbG9ySWR4ICUgcGFsZXR0ZS5sZW5ndGhdOwoJCQkJCWNvbG9ySWR4Kys7CgkJCQl9CgoJCQkJYWdlbnRMTE1Db3VudHNbcy5OYW1lXSA9IChhZ2VudExMTUNvdW50c1tzLk5hbWVdIHx8IDApICsgMTsKCQkJCWNvbnN0IGxhYmVsID0gYCR7cy5OYW1lfS0ke2FnZW50TExNQ291bnRzW3MuTmFtZV19YDsKCQkJCWNvbnN0IHRvdGFsVG9rZW5zID0gcy5JbnB1dFRva2VucyArIHMuT3V0cHV0VG9rZW5zICsgcy5PdXRwdXRUaG91Z2h0c1Rva2VuczsKCQkJCWNvbnN0IHN0eWxlID0gYGNvbG9yOiAke2FnZW50Q29sb3JzW3MuTmFtZV19YDsKCQkJCWxldCB0b29sdGlwID0gYFRvdGFsIFRva2VuczogJHt0b3RhbFRva2Vuc31cbihJbjogJHtzLklucHV0VG9rZW5zfSwgT3V0OiAke3MuT3V0cHV0VG9rZW5zfSwgVGhvdWdodHM6ICR7cy5PdXRwdXRUaG91Z2h0c1Rva2Vuc30pYDsKCQkJCWlmIChzLlRvb2xDYWxscyAmJiBzLlRvb2xDYWxscy5sZW5ndGggPiAwKSB7CgkJCQkJdG9vbHRpcCArPSBgXG5Ub29sczogJHtzLlRvb2xDYWxscy5qb2luKCcsICcpfWA7CgkJCQl9CgoJCQkJZGF0YS5hZGRSb3coW2xhYmVsLCB0b3RhbFRva2Vucywgc3R5bGUsIHRvb2x0aXBdKTsKCQkJfSk7CgoJCQljb25zdCBvcHRpb25zID0gewoJCQkJdGl0bGU6ICdUb2tlbiBDb25zdW1wdGlvbiBieSBMTE0gQ2FsbHMnLAoJCQkJaEF4aXM6IHsKCQkJCQl0aXRsZTogJ0xMTSBDYWxsIFNlcXVlbmNlJywKCQkJCX0sCgkJCQl2QXhpczogeyB0aXRsZTogJ0NvbnN1bWVkIFRva2VucycgfSwKCQkJCWxlZ2VuZDogeyBwb3NpdGlvbjogJ25vbmUnIH0sCgkJCQliYXI6IHsgZ3JvdXBXaWR0aDogJzc1JScgfSwKCQkJCWNoYXJ0QXJlYTogeyB3aWR0aDogJzg1JScsIGhlaWdodDogJzcwJScgfSwKCQkJCWhlaWdodDogNDAwCgkJCX07CgoJCQljb25zdCBjaGFydCA9IG5ldyBnb29nbGUudmlzdWFsaXphdGlvbi5Db2x1bW5DaGFydChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndG9rZW5fY2hhcnRfZGl2JykpOwoJCQljaGFydC5kcmF3KGRhdGEsIG9wdGlvbnMpOwoJCX0KCQlsZXQgYWxsRXhwYW5kZWQgPSBmYWxzZTsKCQlmdW5jdGlvbiB0b2dnbGVBbGxEZXRhaWxzKCkgewoJCQlhbGxFeHBhbmRlZCA9ICFhbGxFeHBhbmRlZDsKCQkJZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnZGV0YWlscycpLmZvckVhY2goZCA9PiB7CgkJCQlpZiAoYWxsRXhwYW5kZWQpIGQuc2V0QXR0cmlidXRlKCdvcGVuJywgJycpOwoJCQkJZWxzZSBkLnJlbW92ZUF0dHJpYnV0ZSgnb3BlbicpOwoJCQl9KTsKCQl9Cgk8L3NjcmlwdD4KCgo8L2JvZHk+CjwvaHRtbD4K" },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowjs8cn[1] Phase: Succeeded StartedAt: 2026-08-02 04:01:58 +0000 UTC FinishedAt: 2026-08-02 04:01:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-02 04:01:58 +0000 UTC FinishedAt: 2026-08-02 04:01:58 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[2] Phase: Succeeded StartedAt: 2026-08-02 04:01:58 +0000 UTC FinishedAt: 2026-08-02 04:50:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN) Phase: Failed StartedAt: 2026-08-02 04:01:58 +0000 UTC FinishedAt: 2026-08-02 04:50:35 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},"patched":{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-02 04:01:58 +0000 UTC FinishedAt: 2026-08-02 04:02:08 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-02 04:01:58 +0000 UTC FinishedAt: 2026-08-02 04:02:03 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowjs8cn/series-workflowjs8cn-convert-artifact-2883036629/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-02 04:02:08 +0000 UTC FinishedAt: 2026-08-02 04:18:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-02 04:02:08 +0000 UTC FinishedAt: 2026-08-02 04:18:55 +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:*b08ef68d-c9c5-475b-a825-6db69b2bb497,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-workflowjs8cn/series-workflowjs8cn-convert-artifact-2883036629/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": "c9acd9e2-af02-4b14-bd16-4b89500529ba", "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-workflowjs8cn/series-workflowjs8cn-build-action-1976782907/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-02 04:02:08 +0000 UTC FinishedAt: 2026-08-02 04:18:45 +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:*b08ef68d-c9c5-475b-a825-6db69b2bb497,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-workflowjs8cn/series-workflowjs8cn-convert-artifact-2883036629/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": "c9acd9e2-af02-4b14-bd16-4b89500529ba", "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-workflowjs8cn/series-workflowjs8cn-build-action-1976782907/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-02 04:18:55 +0000 UTC FinishedAt: 2026-08-02 04:18:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-02 04:18:55 +0000 UTC FinishedAt: 2026-08-02 04:18:55 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-02 04:18:55 +0000 UTC FinishedAt: 2026-08-02 04:19:06 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-02 04:18:55 +0000 UTC FinishedAt: 2026-08-02 04:19:00 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},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-workflowjs8cn/series-workflowjs8cn-convert-artifact-1219418544/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-02 04:19:06 +0000 UTC FinishedAt: 2026-08-02 04:50:14 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-02 04:19:06 +0000 UTC FinishedAt: 2026-08-02 04:50:04 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*c9acd9e2-af02-4b14-bd16-4b89500529ba,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-workflowjs8cn/series-workflowjs8cn-build-action-1976782907/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": false },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-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5] Phase: Failed StartedAt: 2026-08-02 04:50:14 +0000 UTC FinishedAt: 2026-08-02 04:50:35 +0000 UTC Input: nil Output: nil --------- Name: series-workflowjs8cn[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci-upstream-kasan-gce-root-corpus.db"],"focus":null,"focus_symbols":["crash_zeroize","secretmem_crash_zeroize","key_crash_zeroize","big_key_zeroize","encrypted_zeroize","trusted_zeroize","user_zeroize"],"skip_cover_check":true},patched:{"arch":"amd64","commit_hash":"415606a7be939835db9b0d6b711887586646346d","config_name":"upstream-apparmor-kasan.config","enable_configs":["CRASH_ZEROIZE","CRASH_DUMP","SECRETMEM","KEYS","BIG_KEYS","ENCRYPTED_KEYS","TRUSTED_KEYS"],"series_id":"77e6fa34-a246-4cd0-9a52-90e481ae6f2e","tree_name":"linux-next","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/next/linux-next"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Failed StartedAt: 2026-08-02 04:50:14 +0000 UTC FinishedAt: 2026-08-02 04:50:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:code,Default:nil,Value:*1,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*1,}