Name: series-workflowgl97h Phase: Succeeded StartedAt: 2026-08-05 20:35:21 +0000 UTC FinishedAt: 2026-08-05 22:21:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[0] Phase: Succeeded StartedAt: 2026-08-05 20:35:21 +0000 UTC FinishedAt: 2026-08-05 21:29:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[0].run-triage Phase: Succeeded StartedAt: 2026-08-05 20:35:21 +0000 UTC FinishedAt: 2026-08-05 21:29:37 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8165a4186721a6f356c1f5abc5829582272a1c96", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_RUST_NULL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8165a4186721a6f356c1f5abc5829582272a1c96", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_RUST_NULL" ], "series_id": "123d2c9b-eb74-4bc5-9fdb-02e0e1070824" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "kernel::block::mq::gen_disk::GenDiskBuilder::build", "rnull::NullBlkDevice::new" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfUlVTVF9OVUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGQmIzM0OywKICAgICYjMzQ7cm51bGw6Ok51bGxCbGtEZXZpY2U6Om5ldyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUnVzdCBibG9jayBsYXllciBiaW5kaW5ncyB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSBgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgIGFuZCBzZXQgdGhlIGBvd25lcmAgZmllbGQgdG8gdGhlIG1vZHVsZSYjMzk7cyBgVGhpc01vZHVsZWAgcG9pbnRlci4gVGhpcyBhZmZlY3RzIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9mIHRoZSBgZm9wc2Agc3RydWN0dXJlIGR1cmluZyBibG9jayBkZXZpY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUaGUgYHJudWxsYCBkcml2ZXIgaXMgdXBkYXRlZCB0byBwYXNzIGl0cyBtb2R1bGUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoUnVzdCBibG9jayBsYXllcikgYW5kIHRoZSBgcm51bGxgIGRyaXZlciwgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMToyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDYwYzZkMTA5Nzg3MjI2YmZjOTYxOWIzM2YzM2M2YWUzMTg5ZGNiZTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDIxOjI4OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMgYi9kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzXG5pbmRleCA3YzJlYjVjMGI3MjI4Li5iYmEzMGQ1OTBmNjgxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xuQEAgLTE0Nyw2ICYjNDM7MTQ3LDcgQEAgZm4gc3RvcmUodGhpczogXHUwMDI2RGV2aWNlQ29uZmlnLCBwYWdlOiBcdTAwMjZbdThdKSAtXHUwMDNlIFJlc3VsdCB7XG4gXG4gICAgICAgICBpZiAhZ3VhcmQucG93ZXJlZCBcdTAwMjZcdTAwMjYgcG93ZXJfb3Age1xuICAgICAgICAgICAgIGd1YXJkLmRpc2sgPSBTb21lKE51bGxCbGtEZXZpY2U6Om5ldyhcbiYjNDM7ICAgICAgICAgICAgICAgIFx1MDAyNlRISVNfTU9EVUxFLFxuICAgICAgICAgICAgICAgICBcdTAwMjZndWFyZC5uYW1lLFxuICAgICAgICAgICAgICAgICBndWFyZC5ibG9ja19zaXplLFxuICAgICAgICAgICAgICAgICBndWFyZC5yb3RhdGlvbmFsLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMgYi9kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzXG5pbmRleCAwY2E4NzE1ZmViZTgzLi40MjY1YTEzM2NiZjA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yc1xuQEAgLTQ2LDYgJiM0Mzs0Niw3IEBAIGZuIGluaXQoX21vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMgVGhpc01vZHVsZSkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmLCBFcnJvclx1MDAzZSB7XG4gXG4gaW1wbCBOdWxsQmxrRGV2aWNlIHtcbiAgICAgZm4gbmV3KFxuJiM0MzsgICAgICAgIHRoaXNfbW9kdWxlOiBcdTAwMjYmIzM5O3N0YXRpYyBUaGlzTW9kdWxlLFxuICAgICAgICAgbmFtZTogXHUwMDI2Q1N0cixcbiAgICAgICAgIGJsb2NrX3NpemU6IHUzMixcbiAgICAgICAgIHJvdGF0aW9uYWw6IGJvb2wsXG5AQCAtNjEsNyAmIzQzOzYyLDcgQEAgZm4gbmV3KFxuICAgICAgICAgICAgIC5sb2dpY2FsX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/XG4gICAgICAgICAgICAgLnBoeXNpY2FsX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/XG4gICAgICAgICAgICAgLnJvdGF0aW9uYWwocm90YXRpb25hbClcbi0gICAgICAgICAgICAuYnVpbGQoZm10IShcJiMzNDt7fVwmIzM0OywgbmFtZS50b19zdHIoKT8pLCB0YWdzZXQsIHF1ZXVlX2RhdGEpXG4mIzQzOyAgICAgICAgICAgIC5idWlsZCh0aGlzX21vZHVsZSwgZm10IShcJiMzNDt7fVwmIzM0OywgbmFtZS50b19zdHIoKT8pLCB0YWdzZXQsIHF1ZXVlX2RhdGEpXG4gICAgIH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYmxvY2svbXEucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS5yc1xuaW5kZXggMWZkMGQ1NGRkNTQ5My4uMzM1NjFlMGY2N2FmMCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS5yc1xuQEAgLTgsOCAmIzQzOzgsOCBAQFxuIC8vISAtIEltcGxlbWVudCBbYE9wZXJhdGlvbnNgXSBmb3IgYSB0eXBlIGBUYC5cbiAvLyEgLSBDcmVhdGUgYSBbYFRhZ1NldFx1MDAzY1RcdTAwM2VgXS5cbiAvLyEgLSBDcmVhdGUgYSBbYEdlbkRpc2tcdTAwM2NUXHUwMDNlYF0sIHZpYSB0aGUgW2BHZW5EaXNrQnVpbGRlcmBdLlxuLS8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSBwYXNzaW5nIGluXG4tLy8hICAgdGhlIGBUYWdTZXRgIHJlZmVyZW5jZS5cbiYjNDM7Ly8hIC0gQWRkIHRoZSBkaXNrIHRvIHRoZSBzeXN0ZW0gYnkgY2FsbGluZyBbYEdlbkRpc2tCdWlsZGVyOjpidWlsZGBdLCBwYXNzaW5nIGluXG4mIzQzOy8vISAgIHRoZSBkcml2ZXImIzM5O3MgW2BUaGlzTW9kdWxlYF0sIHRoZSBkaXNrIG5hbWUsIHRoZSBgVGFnU2V0YCwgYW5kIHF1ZXVlIGRhdGEuXG4gLy8hXG4gLy8hIFRoZSB0eXBlcyBhdmFpbGFibGUgaW4gdGhpcyBtb2R1bGUgdGhhdCBoYXZlIGRpcmVjdCBDIGNvdW50ZXJwYXJ0cyBhcmU6XG4gLy8hXG5AQCAtODYsOSAmIzQzOzg2LDEyIEBAXG4gLy8hXG4gLy8hIGxldCB0YWdzZXQ6IEFyY1x1MDAzY1RhZ1NldFx1MDAzY015QmxrRGV2aWNlXHUwMDNlXHUwMDNlID1cbiAvLyEgICAgIEFyYzo6cGluX2luaXQoVGFnU2V0OjpuZXcoMSwgMjU2LCAxKSwgZmxhZ3M6OkdGUF9LRVJORUwpPztcbiYjNDM7Ly8hICMgLy8gU0FGRVRZOiBEdW1teSBgVGhpc01vZHVsZWAgZm9yIGRvY3Rlc3QgY29tcGlsYXRpb24gb25seS5cbiYjNDM7Ly8hICMgc3RhdGljIFRISVNfTU9EVUxFOiBUaGlzTW9kdWxlID1cbiYjNDM7Ly8hICMgICAgIHVuc2FmZSB7IFRoaXNNb2R1bGU6OmZyb21fcHRyKGNvcmU6OnB0cjo6bnVsbF9tdXQoKSkgfTtcbiAvLyEgbGV0IG11dCBkaXNrID0gZ2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpuZXcoKVxuIC8vISAgICAgLmNhcGFjaXR5X3NlY3RvcnMoNDA5Nilcbi0vLyEgICAgIC5idWlsZChmbXQhKFwmIzM0O215YmxrXCYjMzQ7KSwgdGFnc2V0LCAoKSk/O1xuJiM0MzsvLyEgICAgIC5idWlsZChcdTAwMjZUSElTX01PRFVMRSwgZm10IShcJiMzNDtteWJsa1wmIzM0OyksIHRhZ3NldCwgKCkpPztcbiAvLyFcbiAvLyEgIyBPazo6XHUwMDNjKCksIGtlcm5lbDo6ZXJyb3I6OkVycm9yXHUwMDNlKCgpKVxuIC8vISBgYGBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycyBiL3J1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzXG5pbmRleCBmYzk3ZGQ4NzM5NzQ2Li5mZjA3OTIyM2QzMWFhIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzXG5AQCAtOTUsOCAmIzQzOzk1LDEyIEBAIHB1YiBmbiBjYXBhY2l0eV9zZWN0b3JzKG11dCBzZWxmLCBjYXBhY2l0eTogdTY0KSAtXHUwMDNlIFNlbGYge1xuICAgICB9XG4gXG4gICAgIC8vLyBCdWlsZCBhIG5ldyBgR2VuRGlza2AgYW5kIGFkZCBpdCB0byB0aGUgVkZTLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gYHRoaXNfbW9kdWxlYCBtdXN0IGJlIHRoZSBbYFRoaXNNb2R1bGVgXSBmb3IgdGhlIGtlcm5lbCBtb2R1bGUgcmVnaXN0ZXJpbmdcbiYjNDM7ICAgIC8vLyB0aGUgZGlzay5cbiAgICAgcHViIGZuIGJ1aWxkXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZShcbiAgICAgICAgIHNlbGYsXG4mIzQzOyAgICAgICAgdGhpc19tb2R1bGU6IFx1MDAyNiYjMzk7c3RhdGljIFRoaXNNb2R1bGUsXG4gICAgICAgICBuYW1lOiBmbXQ6OkFyZ3VtZW50c1x1MDAzYyYjMzk7X1x1MDAzZSxcbiAgICAgICAgIHRhZ3NldDogQXJjXHUwMDNjVGFnU2V0XHUwMDNjVFx1MDAzZVx1MDAzZSxcbiAgICAgICAgIHF1ZXVlX2RhdGE6IFQ6OlF1ZXVlRGF0YSxcbkBAIC0xMjUsMzAgJiM0MzsxMjksMzIgQEAgcHViIGZuIGJ1aWxkXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZShcbiAgICAgICAgICAgICApXG4gICAgICAgICB9KT87XG4gXG4tICAgICAgICBjb25zdCBUQUJMRTogYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zID0gYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zIHtcbi0gICAgICAgICAgICBzdWJtaXRfYmlvOiBOb25lLFxuLSAgICAgICAgICAgIG9wZW46IE5vbmUsXG4tICAgICAgICAgICAgcmVsZWFzZTogTm9uZSxcbi0gICAgICAgICAgICBpb2N0bDogTm9uZSxcbi0gICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsXG4tICAgICAgICAgICAgY2hlY2tfZXZlbnRzOiBOb25lLFxuLSAgICAgICAgICAgIHVubG9ja19uYXRpdmVfY2FwYWNpdHk6IE5vbmUsXG4tICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLFxuLSAgICAgICAgICAgIHNldF9yZWFkX29ubHk6IE5vbmUsXG4tICAgICAgICAgICAgc3dhcF9zbG90X2ZyZWVfbm90aWZ5OiBOb25lLFxuLSAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSxcbi0gICAgICAgICAgICBkZXZub2RlOiBOb25lLFxuLSAgICAgICAgICAgIGFsdGVybmF0aXZlX2dwdF9zZWN0b3I6IE5vbmUsXG4tICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSxcbi0gICAgICAgICAgICAvLyBUT0RPOiBTZXQgdG8gYFRISVNfTU9EVUxFYC5cbi0gICAgICAgICAgICBvd25lcjogY29yZTo6cHRyOjpudWxsX211dCgpLFxuLSAgICAgICAgICAgIHByX29wczogY29yZTo6cHRyOjpudWxsX211dCgpLFxuLSAgICAgICAgICAgIGZyZWVfZGlzazogTm9uZSxcbi0gICAgICAgICAgICBwb2xsX2JpbzogTm9uZSxcbi0gICAgICAgIH07XG4tXG4tICAgICAgICAvLyBTQUZFVFk6IGBnZW5kaXNrYCBpcyBhIHZhbGlkIHBvaW50ZXIgYXMgd2UgaW5pdGlhbGl6ZWQgaXQgYWJvdmVcbi0gICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9IFx1MDAyNlRBQkxFIH07XG4mIzQzOyAgICAgICAgbGV0IGZvcHMgPSBLQm94OjpuZXcoXG4mIzQzOyAgICAgICAgICAgIGJpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7XG4mIzQzOyAgICAgICAgICAgICAgICBzdWJtaXRfYmlvOiBOb25lLFxuJiM0MzsgICAgICAgICAgICAgICAgb3BlbjogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgICAgIHJlbGVhc2U6IE5vbmUsXG4mIzQzOyAgICAgICAgICAgICAgICBpb2N0bDogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgICAgIGNvbXBhdF9pb2N0bDogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgICAgIGNoZWNrX2V2ZW50czogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgICAgIHVubG9ja19uYXRpdmVfY2FwYWNpdHk6IE5vbmUsXG4mIzQzOyAgICAgICAgICAgICAgICBnZXRnZW86IE5vbmUsXG4mIzQzOyAgICAgICAgICAgICAgICBzZXRfcmVhZF9vbmx5OiBOb25lLFxuJiM0MzsgICAgICAgICAgICAgICAgc3dhcF9zbG90X2ZyZWVfbm90aWZ5OiBOb25lLFxuJiM0MzsgICAgICAgICAgICAgICAgcmVwb3J0X3pvbmVzOiBOb25lLFxuJiM0MzsgICAgICAgICAgICAgICAgZGV2bm9kZTogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlX2dwdF9zZWN0b3I6IE5vbmUsXG4mIzQzOyAgICAgICAgICAgICAgICBnZXRfdW5pcXVlX2lkOiBOb25lLFxuJiM0MzsgICAgICAgICAgICAgICAgb3duZXI6IHRoaXNfbW9kdWxlLmFzX3B0cigpLFxuJiM0MzsgICAgICAgICAgICAgICAgcHJfb3BzOiBjb3JlOjpwdHI6Om51bGxfbXV0KCksXG4mIzQzOyAgICAgICAgICAgICAgICBmcmVlX2Rpc2s6IE5vbmUsXG4mIzQzOyAgICAgICAgICAgICAgICBwb2xsX2JpbzogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgfSxcbiYjNDM7ICAgICAgICAgICAgR0ZQX0tFUk5FTCxcbiYjNDM7ICAgICAgICApPztcbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgZ2VuZGlza2AgaXMgYSB2YWxpZCBwb2ludGVyIGFzIHdlIGluaXRpYWxpemVkIGl0IGFib3ZlLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9IGNvcmU6OnB0cjo6ZnJvbV9yZWYoXHUwMDI2KmZvcHMpIH07XG4gXG4gICAgICAgICBsZXQgY2xlYW51cF9mYWlsdXJlID0gU2NvcGVHdWFyZDo6bmV3X3dpdGhfZGF0YSgoZ2VuZGlzaywgZGF0YSksIHwoZ2VuZGlzaywgZGF0YSl8IHtcbiAgICAgICAgICAgICAvLyBTQUZFVFk6IGBnZW5kaXNrYCBjYW1lIGZyb20gYF9fYmxrX21xX2FsbG9jX2Rpc2soKWAgYWJvdmUgYW5kXG5AQCAtMTkzLDYgJiM0MzsxOTksNyBAQCBwdWIgZm4gYnVpbGRcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlKFxuICAgICAgICAgLy8gYF9fYmxrX21xX2FsbG9jX2Rpc2tgIGFib3ZlLlxuICAgICAgICAgT2soR2VuRGlzayB7XG4gICAgICAgICAgICAgX3RhZ3NldDogdGFnc2V0LFxuJiM0MzsgICAgICAgICAgICBfZm9wczogZm9wcyxcbiAgICAgICAgICAgICBnZW5kaXNrLFxuICAgICAgICAgfSlcbiAgICAgfVxuQEAgLTIwNiw4ICYjNDM7MjEzLDExIEBAIHB1YiBmbiBidWlsZFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UoXG4gLy8vICAtIGBnZW5kaXNrYCB3YXMgYWRkZWQgdG8gdGhlIFZGUyB0aHJvdWdoIGEgY2FsbCB0b1xuIC8vLyAgICBgYmluZGluZ3M6OmRldmljZV9hZGRfZGlza2AuXG4gLy8vICAtIGBzZWxmLmdlbmRpc2sucXVldWUucXVldWVkYXRhYCBpcyBpbml0aWFsaXplZCBieSBhIGNhbGwgdG8gYEZvcmVpZ25Pd25hYmxlOjppbnRvX2ZvcmVpZ25gLlxuJiM0MzsvLy8gIC0gYHNlbGYuX2ZvcHNgIHN0b3JlcyB0aGUgW2BiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgXSBwb2ludGVkIHRvIGJ5XG4mIzQzOy8vLyAgICBgZ2VuZGlzay5mb3BzYC5cbiBwdWIgc3RydWN0IEdlbkRpc2tcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIHtcbiAgICAgX3RhZ3NldDogQXJjXHUwMDNjVGFnU2V0XHUwMDNjVFx1MDAzZVx1MDAzZSxcbiYjNDM7ICAgIF9mb3BzOiBLQm94XHUwMDNjYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zXHUwMDNlLFxuICAgICBnZW5kaXNrOiAqbXV0IGJpbmRpbmdzOjpnZW5kaXNrLFxuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMToyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9SVVNUX05VTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZCYjMzQ7LAogICAgJiMzNDtybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSdXN0IGJsb2NrIGxheWVyIGJpbmRpbmdzIHRvIGR5bmFtaWNhbGx5IGFsbG9jYXRlIGBibG9ja19kZXZpY2Vfb3BlcmF0aW9uc2AgYW5kIHNldCB0aGUgYG93bmVyYCBmaWVsZCB0byB0aGUgbW9kdWxlJiMzOTtzIGBUaGlzTW9kdWxlYCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgbW9kdWxlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlIGBmb3BzYCBzdHJ1Y3R1cmUgZHVyaW5nIGJsb2NrIGRldmljZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFRoZSBgcm51bGxgIGRyaXZlciBpcyB1cGRhdGVkIHRvIHBhc3MgaXRzIG1vZHVsZSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChSdXN0IGJsb2NrIGxheWVyKSBhbmQgdGhlIGBybnVsbGAgZHJpdmVyLCB3aGljaCBjYW4gYmUgdGVzdGVkIGJ5IGNyZWF0aW5nIGEgbnVsbCBibG9jayBkZXZpY2UgdmlhIGNvbmZpZ2ZzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjBjNmQxMDk3ODcyMjZiZmM5NjE5YjMzZjMzYzZhZTMxODlkY2JlOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDUgMjE6Mjg6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzIGIvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycwppbmRleCA3YzJlYjVjMGI3MjI4Li5iYmEzMGQ1OTBmNjgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMKQEAgLTE0Nyw2ICYjNDM7MTQ3LDcgQEAgZm4gc3RvcmUodGhpczogJmFtcDtEZXZpY2VDb25maWcsIHBhZ2U6ICZhbXA7W3U4XSkgLSZndDsgUmVzdWx0IHsKIAogICAgICAgICBpZiAhZ3VhcmQucG93ZXJlZCAmYW1wOyZhbXA7IHBvd2VyX29wIHsKICAgICAgICAgICAgIGd1YXJkLmRpc2sgPSBTb21lKE51bGxCbGtEZXZpY2U6Om5ldygKJiM0MzsgICAgICAgICAgICAgICAgJmFtcDtUSElTX01PRFVMRSwKICAgICAgICAgICAgICAgICAmYW1wO2d1YXJkLm5hbWUsCiAgICAgICAgICAgICAgICAgZ3VhcmQuYmxvY2tfc2l6ZSwKICAgICAgICAgICAgICAgICBndWFyZC5yb3RhdGlvbmFsLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycyBiL2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMKaW5kZXggMGNhODcxNWZlYmU4My4uNDI2NWExMzNjYmYwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzCkBAIC00Niw2ICYjNDM7NDYsNyBAQCBmbiBpbml0KF9tb2R1bGU6ICZhbXA7JiMzOTtzdGF0aWMgVGhpc01vZHVsZSkgLSZndDsgaW1wbCBQaW5Jbml0Jmx0O1NlbGYsIEVycm9yJmd0OyB7CiAKIGltcGwgTnVsbEJsa0RldmljZSB7CiAgICAgZm4gbmV3KAomIzQzOyAgICAgICAgdGhpc19tb2R1bGU6ICZhbXA7JiMzOTtzdGF0aWMgVGhpc01vZHVsZSwKICAgICAgICAgbmFtZTogJmFtcDtDU3RyLAogICAgICAgICBibG9ja19zaXplOiB1MzIsCiAgICAgICAgIHJvdGF0aW9uYWw6IGJvb2wsCkBAIC02MSw3ICYjNDM7NjIsNyBAQCBmbiBuZXcoCiAgICAgICAgICAgICAubG9naWNhbF9ibG9ja19zaXplKGJsb2NrX3NpemUpPwogICAgICAgICAgICAgLnBoeXNpY2FsX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/CiAgICAgICAgICAgICAucm90YXRpb25hbChyb3RhdGlvbmFsKQotICAgICAgICAgICAgLmJ1aWxkKGZtdCEoJiMzNDt7fSYjMzQ7LCBuYW1lLnRvX3N0cigpPyksIHRhZ3NldCwgcXVldWVfZGF0YSkKJiM0MzsgICAgICAgICAgICAuYnVpbGQodGhpc19tb2R1bGUsIGZtdCEoJiMzNDt7fSYjMzQ7LCBuYW1lLnRvX3N0cigpPyksIHRhZ3NldCwgcXVldWVfZGF0YSkKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xLnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEucnMKaW5kZXggMWZkMGQ1NGRkNTQ5My4uMzM1NjFlMGY2N2FmMCAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYmxvY2svbXEucnMKQEAgLTgsOCAmIzQzOzgsOCBAQAogLy8hIC0gSW1wbGVtZW50IFtgT3BlcmF0aW9uc2BdIGZvciBhIHR5cGUgYFRgLgogLy8hIC0gQ3JlYXRlIGEgW2BUYWdTZXQmbHQ7VCZndDtgXS4KIC8vISAtIENyZWF0ZSBhIFtgR2VuRGlzayZsdDtUJmd0O2BdLCB2aWEgdGhlIFtgR2VuRGlza0J1aWxkZXJgXS4KLS8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSBwYXNzaW5nIGluCi0vLyEgICB0aGUgYFRhZ1NldGAgcmVmZXJlbmNlLgomIzQzOy8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSwgcGFzc2luZyBpbgomIzQzOy8vISAgIHRoZSBkcml2ZXImIzM5O3MgW2BUaGlzTW9kdWxlYF0sIHRoZSBkaXNrIG5hbWUsIHRoZSBgVGFnU2V0YCwgYW5kIHF1ZXVlIGRhdGEuCiAvLyEKIC8vISBUaGUgdHlwZXMgYXZhaWxhYmxlIGluIHRoaXMgbW9kdWxlIHRoYXQgaGF2ZSBkaXJlY3QgQyBjb3VudGVycGFydHMgYXJlOgogLy8hCkBAIC04Niw5ICYjNDM7ODYsMTIgQEAKIC8vIQogLy8hIGxldCB0YWdzZXQ6IEFyYyZsdDtUYWdTZXQmbHQ7TXlCbGtEZXZpY2UmZ3Q7Jmd0OyA9CiAvLyEgICAgIEFyYzo6cGluX2luaXQoVGFnU2V0OjpuZXcoMSwgMjU2LCAxKSwgZmxhZ3M6OkdGUF9LRVJORUwpPzsKJiM0MzsvLyEgIyAvLyBTQUZFVFk6IER1bW15IGBUaGlzTW9kdWxlYCBmb3IgZG9jdGVzdCBjb21waWxhdGlvbiBvbmx5LgomIzQzOy8vISAjIHN0YXRpYyBUSElTX01PRFVMRTogVGhpc01vZHVsZSA9CiYjNDM7Ly8hICMgICAgIHVuc2FmZSB7IFRoaXNNb2R1bGU6OmZyb21fcHRyKGNvcmU6OnB0cjo6bnVsbF9tdXQoKSkgfTsKIC8vISBsZXQgbXV0IGRpc2sgPSBnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6Om5ldygpCiAvLyEgICAgIC5jYXBhY2l0eV9zZWN0b3JzKDQwOTYpCi0vLyEgICAgIC5idWlsZChmbXQhKCYjMzQ7bXlibGsmIzM0OyksIHRhZ3NldCwgKCkpPzsKJiM0MzsvLyEgICAgIC5idWlsZCgmYW1wO1RISVNfTU9EVUxFLCBmbXQhKCYjMzQ7bXlibGsmIzM0OyksIHRhZ3NldCwgKCkpPzsKIC8vIQogLy8hICMgT2s6OiZsdDsoKSwga2VybmVsOjplcnJvcjo6RXJyb3ImZ3Q7KCgpKQogLy8hIGBgYApkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycwppbmRleCBmYzk3ZGQ4NzM5NzQ2Li5mZjA3OTIyM2QzMWFhIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycwpAQCAtOTUsOCAmIzQzOzk1LDEyIEBAIHB1YiBmbiBjYXBhY2l0eV9zZWN0b3JzKG11dCBzZWxmLCBjYXBhY2l0eTogdTY0KSAtJmd0OyBTZWxmIHsKICAgICB9CiAKICAgICAvLy8gQnVpbGQgYSBuZXcgYEdlbkRpc2tgIGFuZCBhZGQgaXQgdG8gdGhlIFZGUy4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBgdGhpc19tb2R1bGVgIG11c3QgYmUgdGhlIFtgVGhpc01vZHVsZWBdIGZvciB0aGUga2VybmVsIG1vZHVsZSByZWdpc3RlcmluZwomIzQzOyAgICAvLy8gdGhlIGRpc2suCiAgICAgcHViIGZuIGJ1aWxkJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7KAogICAgICAgICBzZWxmLAomIzQzOyAgICAgICAgdGhpc19tb2R1bGU6ICZhbXA7JiMzOTtzdGF0aWMgVGhpc01vZHVsZSwKICAgICAgICAgbmFtZTogZm10OjpBcmd1bWVudHMmbHQ7JiMzOTtfJmd0OywKICAgICAgICAgdGFnc2V0OiBBcmMmbHQ7VGFnU2V0Jmx0O1QmZ3Q7Jmd0OywKICAgICAgICAgcXVldWVfZGF0YTogVDo6UXVldWVEYXRhLApAQCAtMTI1LDMwICYjNDM7MTI5LDMyIEBAIHB1YiBmbiBidWlsZCZsdDtUOiBPcGVyYXRpb25zJmd0OygKICAgICAgICAgICAgICkKICAgICAgICAgfSk/OwogCi0gICAgICAgIGNvbnN0IFRBQkxFOiBiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgPSBiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgewotICAgICAgICAgICAgc3VibWl0X2JpbzogTm9uZSwKLSAgICAgICAgICAgIG9wZW46IE5vbmUsCi0gICAgICAgICAgICByZWxlYXNlOiBOb25lLAotICAgICAgICAgICAgaW9jdGw6IE5vbmUsCi0gICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsCi0gICAgICAgICAgICBjaGVja19ldmVudHM6IE5vbmUsCi0gICAgICAgICAgICB1bmxvY2tfbmF0aXZlX2NhcGFjaXR5OiBOb25lLAotICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLAotICAgICAgICAgICAgc2V0X3JlYWRfb25seTogTm9uZSwKLSAgICAgICAgICAgIHN3YXBfc2xvdF9mcmVlX25vdGlmeTogTm9uZSwKLSAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSwKLSAgICAgICAgICAgIGRldm5vZGU6IE5vbmUsCi0gICAgICAgICAgICBhbHRlcm5hdGl2ZV9ncHRfc2VjdG9yOiBOb25lLAotICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSwKLSAgICAgICAgICAgIC8vIFRPRE86IFNldCB0byBgVEhJU19NT0RVTEVgLgotICAgICAgICAgICAgb3duZXI6IGNvcmU6OnB0cjo6bnVsbF9tdXQoKSwKLSAgICAgICAgICAgIHByX29wczogY29yZTo6cHRyOjpudWxsX211dCgpLAotICAgICAgICAgICAgZnJlZV9kaXNrOiBOb25lLAotICAgICAgICAgICAgcG9sbF9iaW86IE5vbmUsCi0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gU0FGRVRZOiBgZ2VuZGlza2AgaXMgYSB2YWxpZCBwb2ludGVyIGFzIHdlIGluaXRpYWxpemVkIGl0IGFib3ZlCi0gICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9ICZhbXA7VEFCTEUgfTsKJiM0MzsgICAgICAgIGxldCBmb3BzID0gS0JveDo6bmV3KAomIzQzOyAgICAgICAgICAgIGJpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiYjNDM7ICAgICAgICAgICAgICAgIHN1Ym1pdF9iaW86IE5vbmUsCiYjNDM7ICAgICAgICAgICAgICAgIG9wZW46IE5vbmUsCiYjNDM7ICAgICAgICAgICAgICAgIHJlbGVhc2U6IE5vbmUsCiYjNDM7ICAgICAgICAgICAgICAgIGlvY3RsOiBOb25lLAomIzQzOyAgICAgICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsCiYjNDM7ICAgICAgICAgICAgICAgIGNoZWNrX2V2ZW50czogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgdW5sb2NrX25hdGl2ZV9jYXBhY2l0eTogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLAomIzQzOyAgICAgICAgICAgICAgICBzZXRfcmVhZF9vbmx5OiBOb25lLAomIzQzOyAgICAgICAgICAgICAgICBzd2FwX3Nsb3RfZnJlZV9ub3RpZnk6IE5vbmUsCiYjNDM7ICAgICAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgZGV2bm9kZTogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVfZ3B0X3NlY3RvcjogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgb3duZXI6IHRoaXNfbW9kdWxlLmFzX3B0cigpLAomIzQzOyAgICAgICAgICAgICAgICBwcl9vcHM6IGNvcmU6OnB0cjo6bnVsbF9tdXQoKSwKJiM0MzsgICAgICAgICAgICAgICAgZnJlZV9kaXNrOiBOb25lLAomIzQzOyAgICAgICAgICAgICAgICBwb2xsX2JpbzogTm9uZSwKJiM0MzsgICAgICAgICAgICB9LAomIzQzOyAgICAgICAgICAgIEdGUF9LRVJORUwsCiYjNDM7ICAgICAgICApPzsKJiM0MzsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogYGdlbmRpc2tgIGlzIGEgdmFsaWQgcG9pbnRlciBhcyB3ZSBpbml0aWFsaXplZCBpdCBhYm92ZS4KJiM0MzsgICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9IGNvcmU6OnB0cjo6ZnJvbV9yZWYoJmFtcDsqZm9wcykgfTsKIAogICAgICAgICBsZXQgY2xlYW51cF9mYWlsdXJlID0gU2NvcGVHdWFyZDo6bmV3X3dpdGhfZGF0YSgoZ2VuZGlzaywgZGF0YSksIHwoZ2VuZGlzaywgZGF0YSl8IHsKICAgICAgICAgICAgIC8vIFNBRkVUWTogYGdlbmRpc2tgIGNhbWUgZnJvbSBgX19ibGtfbXFfYWxsb2NfZGlzaygpYCBhYm92ZSBhbmQKQEAgLTE5Myw2ICYjNDM7MTk5LDcgQEAgcHViIGZuIGJ1aWxkJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7KAogICAgICAgICAvLyBgX19ibGtfbXFfYWxsb2NfZGlza2AgYWJvdmUuCiAgICAgICAgIE9rKEdlbkRpc2sgewogICAgICAgICAgICAgX3RhZ3NldDogdGFnc2V0LAomIzQzOyAgICAgICAgICAgIF9mb3BzOiBmb3BzLAogICAgICAgICAgICAgZ2VuZGlzaywKICAgICAgICAgfSkKICAgICB9CkBAIC0yMDYsOCAmIzQzOzIxMywxMSBAQCBwdWIgZm4gYnVpbGQmbHQ7VDogT3BlcmF0aW9ucyZndDsoCiAvLy8gIC0gYGdlbmRpc2tgIHdhcyBhZGRlZCB0byB0aGUgVkZTIHRocm91Z2ggYSBjYWxsIHRvCiAvLy8gICAgYGJpbmRpbmdzOjpkZXZpY2VfYWRkX2Rpc2tgLgogLy8vICAtIGBzZWxmLmdlbmRpc2sucXVldWUucXVldWVkYXRhYCBpcyBpbml0aWFsaXplZCBieSBhIGNhbGwgdG8gYEZvcmVpZ25Pd25hYmxlOjppbnRvX2ZvcmVpZ25gLgomIzQzOy8vLyAgLSBgc2VsZi5fZm9wc2Agc3RvcmVzIHRoZSBbYGJpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9uc2BdIHBvaW50ZWQgdG8gYnkKJiM0MzsvLy8gICAgYGdlbmRpc2suZm9wc2AuCiBwdWIgc3RydWN0IEdlbkRpc2smbHQ7VDogT3BlcmF0aW9ucyZndDsgewogICAgIF90YWdzZXQ6IEFyYyZsdDtUYWdTZXQmbHQ7VCZndDsmZ3Q7LAomIzQzOyAgICBfZm9wczogS0JveCZsdDtiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnMmZ3Q7LAogICAgIGdlbmRpc2s6ICptdXQgYmluZGluZ3M6OmdlbmRpc2ssCiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1MwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDMxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgQmxvY2sgRGV2aWNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBtb2RpZnlpbmcgdGhlIFJ1c3QgYmluZGluZ3MgZm9yIHRoZSBibG9jayBsYXllciwgc3BlY2lmaWNhbGx5IGBnZW5fZGlzay5yc2AgYW5kIHRoZSBgcm51bGxgIGRyaXZlci4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIGFkZGluZyBhIGB0aGlzX21vZHVsZWAgYXJndW1lbnQgdG8gYEdlbkRpc2tCdWlsZGVyOjpidWlsZCgpYCBhbmQgdXNpbmcgaXQgdG8gc2V0IHRoZSBgb3duZXJgIGZpZWxkIHdpdGhpbiBgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgLiBBZGRpdGlvbmFsbHksIHRoZXkmIzM5O3ZlIHN3aXRjaGVkIGBmb3BzYCBmcm9tIGEgc3RhdGljIGNvbnN0YW50IHRvIGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGBLQm94YCwgd2hpY2ggaXMgdGhlbiBzdG9yZWQgd2l0aGluIGBHZW5EaXNrYC4KCkltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgb3IganVzdCByZWZhY3RvcmluZz8mIzM0OyBTZXR0aW5nIHRoZSBgb3duZXJgIHRvIHRoZSBtb2R1bGUgcG9pbnRlciBkZWZpbml0ZWx5IGFmZmVjdHMgbW9kdWxlIHJlZmVyZW5jZSBjb3VudGluZyBkdXJpbmcgZGV2aWNlIG9wZW4vY2xvc2Ugb3BlcmF0aW9ucy4gVGhhdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm8gZG91YnQuIFRoZSBkeW5hbWljIGFsbG9jYXRpb24gb2YgYGZvcHNgIHVzaW5nIGBLQm94OjpuZXdgIGlzIGFsc28gYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZS4KCk5vdywgdGhlIG5leHQgcXVlc3Rpb24gaXMsICYjMzQ7SXMgdGhpcyBmdXp6LXdvcnRoeT8mIzM0OyBGdXp6aW5nIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgaXMgb2Z0ZW4gdHJpY2t5LCBidXQgdGhlIG9wZW4vY2xvc2UgYmVoYXZpb3Igb2YgdGhlIGJsb2NrIGRldmljZSBpcyBkZWZpbml0ZWx5IGltcGFjdGVkIGJ5IHRoaXMuIEl0JiMzOTtzIGEgc3VidGxlIGNoYW5nZSwgYnV0IHBvdGVudGlhbGx5IGNyaXRpY2FsLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZnVuY3Rpb25zIHdpdGhpbiB0aGlzIHBhdGNoIHRoYXQgbWFrZSBpdCBmdXp6LXdvcnRoeS4KClRoZSBtZWF0IG9mIHRoZSBjaGFuZ2VzIGFyZSB3aXRoaW4gdGhlIGBHZW5EaXNrQnVpbGRlcjo6YnVpbGRgIGZ1bmN0aW9uLiBTbywgaXMgdGhlIGBybnVsbGAgZHJpdmVyIGV2ZW4gcmVhY2hhYmxlPyBJIGtub3cgYHJudWxsYCBpcyBhIFJ1c3QtYmFzZWQgbnVsbCBibG9jayBkcml2ZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWcgcmVxdWlyZW1lbnRzIGZvciB0aGlzIGRyaXZlci4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBwcm9iYWJseSB1bmRlciBgZHJpdmVycy9ibG9jay9ybnVsbC9gIG9yIGBkcml2ZXJzL2Jsb2NrL2AuIEtub3dpbmcgaWYgYHJudWxsYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIHdoYXQgY29uZmlncyBhcmUgbmVlZGVkLCB3aWxsIGRpY3RhdGUgaG93IGVhc3kgaXQgaXMgdG8gdGFyZ2V0IHRoaXMgY2hhbmdlIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JudWxsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTE5PXNvdXJjZSBcJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyMDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjEtXG4tLVxuZHJpdmVycy9ibG9jay9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfQkxLX0RFVl9OVUxMX0JMSylcdCYjNDM7PSBudWxsX2Jsay9cbmRyaXZlcnMvYmxvY2svTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSAmIzQzOz0gcm51bGwvXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlLTM5LVxuLS1cbmRyaXZlcnMvYmxvY2svcm51bGwvTWFrZWZpbGUtMS1cbmRyaXZlcnMvYmxvY2svcm51bGwvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfQkxLX0RFVl9SVVNUX05VTEwpICYjNDM7PSBybnVsbF9tb2Qub1xuZHJpdmVycy9ibG9jay9ybnVsbC9NYWtlZmlsZTozOnJudWxsX21vZC15IDo9IHJudWxsLm9cbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE2PXB1YihjcmF0ZSkgZm4gc3Vic3lzdGVtKCkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NrZXJuZWw6OmNvbmZpZ2ZzOjpTdWJzeXN0ZW1cdTAwM2NDb25maWdcdTAwM2UsIEVycm9yXHUwMDNlIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTI1LVxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoyNjogICAga2VybmVsOjpjb25maWdmczo6U3Vic3lzdGVtOjpuZXcoY1wmIzM0O3JudWxsXCYjMzQ7LCBpdGVtX3R5cGUsIHRyeV9waW5faW5pdCEoQ29uZmlnIHt9KSlcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjctfVxuLS1cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtMjItICAgIHR5cGU6IE51bGxCbGtNb2R1bGUsXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzOjIzOiAgICBuYW1lOiBcJiMzNDtybnVsbF9tb2RcJiMzNDssXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTI0LSAgICBhdXRob3JzOiBbXCYjMzQ7QW5kcmVhcyBIaW5kYm9yZ1wmIzM0O10sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIGBDT05GSUdfQkxLX0RFVl9SVVNUX05VTExgIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBDT05GSUdfQkxLX0RFVl9SVVNUX05VTExgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhpcyBvcHRpb24gY29udHJvbHMuIEkgbmVlZCB0byBzZWUgd2hhdCBgZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnYCBkZWZpbmVzLiBXaGF0IGRlcGVuZGVuY2llcyBkb2VzIGl0IGhhdmU/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgZmVhdHVyZT8gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHB1cnBvc2UgYW5kIGZ1bmN0aW9uYWxpdHkgb2YgdGhlICYjMzQ7cm51bGwmIzM0OyBibG9jayBkZXZpY2Ug4oCTIGlzIGl0IGEgdGVzdCBkZXZpY2UsIGEgc3R1Yiwgb3Igc29tZXRoaW5nIG1vcmUgc3Vic3RhbnRpYWw/IEtub3dpbmcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBicm9hZGVyIGJsb2NrIGRldmljZSBzdWJzeXN0ZW0gaXMgY3J1Y2lhbCBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMgb3IgcHJvdmlkZSBhbnkgYWR2aWNlIHJlbGF0ZWQgdG8gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgcmV2ZWFscy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBSdXN0IG51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0XG4gICA1Olx0Y29uZmlnIEJMS19ERVZfUlVTVF9OVUxMXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtSdXN0IG51bGwgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIFJVU1QgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFRoaXMgaXMgdGhlIFJ1c3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIG51bGwgYmxvY2sgZHJpdmVyLiBMaWtlXG4gIDEwOlx0XHQgIHRoZSBDIHZlcnNpb24sIHRoZSBkcml2ZXIgYWxsb3dzIHRoZSB1c2VyIHRvIGNyZWF0ZSB2aXJ1dGFsIGJsb2NrXG4gIDExOlx0XHQgIGRldmljZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB2aWEgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gIDEyOlx0XG4gIDEzOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQxMAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDUzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nIEFzc2Vzc21lbnQgb2YgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW4gUnVzdCBpcyBhYm91dCBob3cgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgaGFuZGxlcyB0aGluZ3MuIEl0IHNlZW1zIHRvIGJlIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcgYGZvcHNgIGFuZCBzZXR0aW5nIHRoZSBgb3duZXJgIGZpZWxkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyBmdXp6YWJsZT8mIzM0OyBUaGUgY2hhbmdlIHNlZW1zIHNtYWxsIGF0IGZpcnN0IGdsYW5jZSwgbW9zdGx5IGRlYWxpbmcgd2l0aCBtb2R1bGUgcmVmY291bnRpbmcgYW5kIGR5bmFtaWMgYWxsb2NhdGlvbiBvZiBgZm9wc2AuIFRoZW4gSSByZWFsaXplIHRoZSBpbXBsaWNhdGlvbiBvZiB0aGUgZHluYW1pYyBhbGxvY2F0aW9uIHVzaW5nIGBLQm94YCBhbmQgc3RvcmluZyBpdCB3aXRoaW4gYEdlbkRpc2tgLiAgVGhhdCBtZWFucyBgZm9wc2AgZ2V0cyBmcmVlZCB3aGVuIGBHZW5EaXNrYCBnb2VzIGF3YXkuICBUaGlzIG1ha2VzIG1lIHBhdXNlOiAmIzM0O0lzIHRoaXMgc2FmZT8mIzM0OyBJIG5lZWQgdG8gY29uc2lkZXIgaWYgdGhlIGJsb2NrIGxheWVyIG1pZ2h0IHN0aWxsIGhvbGQgYSByZWZlcmVuY2UsIHBhcnRpY3VsYXJseSBpZiB0aGUgZGlzayBpc24mIzM5O3QgZnVsbHkgZGVzdHJveWVkLiAgQnV0IHRoZW4gSSByZWNhbGwgdGhhdCBgR2VuRGlza2AgKmlzKiBkcm9wcGVkIHdoZW4gdGhlIGRpc2sgaXMgcmVtb3ZlZC4KClNpbmNlIGBmb3BzYCBpcyBub3cgZHluYW1pY2FsbHkgYWxsb2NhdGVkLCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gQnV0IGFnYWluLCB0aGUgcXVlc3Rpb24gcmVtYWluczogQ2FuIHRoaXMgYmUgZnV6emVkIGVmZmVjdGl2ZWx5PyBUaGUgcGF0Y2ggaXMgcHJpbWFyaWx5IGFib3V0IHBhc3NpbmcgYHRoaXNfbW9kdWxlYCBhbmQgdGhlIGFsbG9jYXRpb24gb2YgYGZvcHNgLiBUaGVyZSYjMzk7cyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGNvbXBsZXggbG9naWMuCgpUaGVuIEkgcmVtaW5kIG15c2VsZiBvZiB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBjcml0ZXJpYTogYW0gSSBkZWFsaW5nIHdpdGggZG9jdW1lbnRhdGlvbiwgZGVjb3JhdGl2ZSBsb2dnaW5nLCBudW1lcmljIGNvbnN0YW50cywgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBzcGVjaWFsIGhhcmR3YXJlLCBvciBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzPyBOby4gVGhpcyBjbGVhcmx5IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIHRoZSBSdXN0IGJsb2NrIGxheWVyIGJpbmRpbmdzLiBJIGNhbiBleGVjdXRlIHRoaXMgYnkgbG9hZGluZyBgcm51bGxgIGFuZCBjcmVhdGluZyBhIGRldmljZSB2aWEgY29uZmlnZnMuIFNvIGJhc2VkIG9uIG15IGFzc2Vzc21lbnQgYW5kIHRoZSBjcml0ZXJpYSwgaXQmIzM5O3MgZGVmaW5pdGVseSBXb3J0aEZ1enppbmc9dHJ1ZS4KCk5vdywgSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYHJudWxsYCBpcyB0aGUgb25seSB1c2VyIG9mIGBHZW5EaXNrQnVpbGRlcjo6YnVpbGRgLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciB1c2VycyBvZiB0aGlzIG1ldGhvZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7R2VuRGlza0J1aWxkZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy00LXVzZSBrZXJuZWw6OntcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6NTogICAgYmxvY2s6Om1xOjpnZW5fZGlzazo6e0dlbkRpc2ssIEdlbkRpc2tCdWlsZGVyfSxcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtNi0gICAgY29uZmlnZnM6OntzZWxmLCBBdHRyaWJ1dGVPcGVyYXRpb25zfSxcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE3Nz0gICAgZm4gc3RvcmUodGhpczogXHUwMDI2RGV2aWNlQ29uZmlnLCBwYWdlOiBcdTAwMjZbdThdKSAtXHUwMDNlIFJlc3VsdCB7XG4tLVxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0xODQtXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzOjE4NTogICAgICAgIEdlbkRpc2tCdWlsZGVyOjp2YWxpZGF0ZV9ibG9ja19zaXplKHZhbHVlKT87XG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTE4Ni0gICAgICAgIHRoaXMuZGF0YS5sb2NrKCkuYmxvY2tfc2l6ZSA9IHZhbHVlO1xuLS1cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM9NDg9ICAgIGZuIG5ldyhcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTU5LVxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yczo2MDogICAgICAgIGdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6bmV3KClcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtNjEtICAgICAgICAgICAgLmNhcGFjaXR5X3NlY3RvcnMoY2FwYWNpdHlfbWliIFx1MDAzY1x1MDAzYyAoMjAgLSBibG9jazo6U0VDVE9SX1NISUZUKSlcbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5ycy05LS8vISAtIENyZWF0ZSBhIFtgVGFnU2V0XHUwMDNjVFx1MDAzZWBdLlxucnVzdC9rZXJuZWwvYmxvY2svbXEucnM6MTA6Ly8hIC0gQ3JlYXRlIGEgW2BHZW5EaXNrXHUwMDNjVFx1MDAzZWBdLCB2aWEgdGhlIFtgR2VuRGlza0J1aWxkZXJgXS5cbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzOjExOi8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSwgcGFzc2luZyBpblxucnVzdC9rZXJuZWwvYmxvY2svbXEucnMtMTItLy8hICAgdGhlIGRyaXZlciYjMzk7cyBbYFRoaXNNb2R1bGVgXSwgdGhlIGRpc2sgbmFtZSwgdGhlIGBUYWdTZXRgLCBhbmQgcXVldWUgZGF0YS5cbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5ycy01Mi0vLyEgW2BHZW5EaXNrXHUwMDNjVFx1MDAzZWBdOiBnZW5fZGlzazo6R2VuRGlza1xucnVzdC9rZXJuZWwvYmxvY2svbXEucnM6NTM6Ly8hIFtgR2VuRGlza0J1aWxkZXJgXTogZ2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5yczo1NDovLyEgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXTogZ2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZFxucnVzdC9rZXJuZWwvYmxvY2svbXEucnMtNTUtLy8hXG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEucnMtOTEtLy8hICMgICAgIHVuc2FmZSB7IFRoaXNNb2R1bGU6OmZyb21fcHRyKGNvcmU6OnB0cjo6bnVsbF9tdXQoKSkgfTtcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzOjkyOi8vISBsZXQgbXV0IGRpc2sgPSBnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6Om5ldygpXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5ycy05My0vLyEgICAgIC5jYXBhY2l0eV9zZWN0b3JzKDQwOTYpXG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjItLy8vIFVzZSB0aGlzIHN0cnVjdCB0byBjb25maWd1cmUgYW5kIGFkZCBuZXcgW2BHZW5EaXNrYF0gdG8gdGhlIFZGUy5cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjIzOnB1YiBzdHJ1Y3QgR2VuRGlza0J1aWxkZXIge1xucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjQtICAgIHJvdGF0aW9uYWw6IGJvb2wsXG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjktXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczozMDppbXBsIERlZmF1bHQgZm9yIEdlbkRpc2tCdWlsZGVyIHtcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTMxLSAgICBmbiBkZWZhdWx0KCkgLVx1MDAzZSBTZWxmIHtcbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy00MC1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjQxOmltcGwgR2VuRGlza0J1aWxkZXIge1xucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDItICAgIC8vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2UuXG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM9MjI5PSAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjQ1LVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MjQ2OiAgICAgICAgLy8gU0FGRVRZOiBgcXVldWUucXVldWVkYXRhYCB3YXMgY3JlYXRlZCBieSBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCB3aXRoXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0yNDctICAgICAgICAvLyBhIGNhbGwgdG8gYEZvcmVpZ25Pd25hYmxlOjppbnRvX2ZvcmVpZ25gIHRvIGNyZWF0ZSBgcXVldWVkYXRhYC5cbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzPTY4PWltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIE9wZXJhdGlvbnNWVGFibGVcdTAwM2NUXHUwMDNlIHtcbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzLTEwNi1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL29wZXJhdGlvbnMucnM6MTA3OiAgICAgICAgLy8gU0FGRVRZOiBgcXVldWUucXVldWVkYXRhYCB3YXMgY3JlYXRlZCBieSBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCB3aXRoXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzLTEwOC0gICAgICAgIC8vIGEgY2FsbCB0byBgRm9yZWlnbk93bmFibGU6OmludG9fZm9yZWlnbmAgdG8gY3JlYXRlIGBxdWV1ZWRhdGFgLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0NzUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBybnVsbCBQYXRjaCBGb2N1cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgY2VudHJhbCBjaGFuZ2UgaXMgdG8gYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgd2l0aGluIGBydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc2AuICBUaGlzIGBidWlsZGAgZnVuY3Rpb24gaXMgY2xlYXJseSBhbiBpbXBvcnRhbnQgQVBJIGVudHJ5cG9pbnQsIGJ1dCBpcyBpdCB0aGUgKmJlc3QqIHN5bWJvbCB0byB0YXJnZXQgZm9yIHN5emJvdD8gIEkgaGF2ZSB0byByZW1lbWJlciB0aGF0IFJ1c3QgZnVuY3Rpb24gbmFtZXMgYXJlIG1hbmdsZWQsIHNvIEkgbmVlZCB0byBjb25zaWRlciB0aGF0LgoKSG93ZXZlciwgU3l6Ym90IGlzIHVzdWFsbHkgcHJldHR5IGdvb2QgYWJvdXQgYWNjZXB0aW5nIHVubWFuZ2xlZCBSdXN0IG5hbWVzIGlmIHRoZXkmIzM5O3JlIGluIHRoZSBzeW1ib2wgdGFibGUuICBXZSBjb3VsZCBhbHNvIGdvIHdpdGggdGhlIEMgZnVuY3Rpb25zIGl0IGNhbGxzLCBvciBqdXN0IHN0aWNrIHdpdGggdGhlIHVubWFuZ2xlZCBSdXN0IGZ1bmN0aW9uIG5hbWUuICBBaCwgd2FpdCBhIHNlY29uZCEgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgaXMgZ2VuZXJpYywgaXNuJiMzOTt0IGl0PyBMZXQmIzM5O3MgY2hlY2suLi4gWWVwLCBpdCYjMzk7cyBgcHViIGZuIGJ1aWxkJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7KHNlbGYsIHRoaXNfbW9kdWxlOiAmYW1wOyYjMzk7c3RhdGljIFRoaXNNb2R1bGUsIC4uLilgLgoKU2luY2UgaXQmIzM5O3MgZ2VuZXJpYywgYGJ1aWxkYCBpcyBnb2luZyB0byBiZSBtb25vbW9ycGhpemVkLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgcm51bGxgIGNhc2UuICBTbywgZm9yIGBybnVsbGAsIGl0JiMzOTtsbCBiZSBzb21ldGhpbmcgbGlrZSBga2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGQmbHQ7cm51bGw6Ok51bGxCbGtEZXZpY2UmZ3Q7YC4gIEJ1dCB0aGF0IG1lYW5zLCB0aGUgYWN0dWFsIGNhbGwgc2l0ZSBpbiBgcm51bGxgIG1pZ2h0IGJlIGJldHRlciB0aGFuIHRoaXMgbW9yZSBjb21wbGljYXRlZCBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUuCgpJdCYjMzk7cyBwcm9iYWJseSBzbWFydGVyIHRvIGZvY3VzIG9uIHRoZSBgcm51bGxgIGZ1bmN0aW9uIHRoYXQgKmNhbGxzKiBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYC4gIEFoLWhhISAgVGhhdCYjMzk7cyBsaWtlbHkgdG8gYmUgYHJudWxsOjpOdWxsQmxrRGV2aWNlOjpuZXdgLCB3aGljaCBzaG91bGQgYmUgYSBjbGVhbmVyIHRhcmdldC4gIEkmIzM5O2xsIGp1c3QgZG91YmxlLWNoZWNrIGluIGBkcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzYCB0byBtYWtlIHN1cmUgbXkgaW50dWl0aW9uIGlzIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZuIG5ldyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svcm51bGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM9NDc9aW1wbCBOdWxsQmxrRGV2aWNlIHtcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6NDg6ICAgIGZuIG5ldyhcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtNDktICAgICAgICB0aGlzX21vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMgVGhpc01vZHVsZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIzNQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIE9yaWdpbnMgb2YgYSBOdWxsIEJsb2NrIERldmljZSBDcmVhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYE51bGxCbGtEZXZpY2U6Om5ld2AgdGhpbmcgaXMgYmVpbmcgaW52b2tlZC4gSXQgZmVlbHMgbGlrZSBJJiMzOTt2ZSBlbmNvdW50ZXJlZCBzb21lIG1hbmdsZWQgbmFtaW5nIGNvbnZlbnRpb24sIG9yIHBlcmhhcHMgdGhlcmUmIzM5O3MgYSBzaW1wbGVyIGFsdGVybmF0aXZlIGxpa2UgYHJudWxsX21vZF9pbml0YCBJIHNob3VsZCBiZSBjb25zaWRlcmluZy4gV2hlcmUmIzM5O3MgdGhpcyBjb25zdHJ1Y3RvciBiZWluZyB1c2VkPyBBaGEsIGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gd2l0aGluIGBjb25maWdmcy5yc2AsIHNwZWNpZmljYWxseSB0aGUgYHN0b3JlYCBmdW5jdGlvbi4gVGhhdCBnaXZlcyBtZSBhIHNwZWNpZmljIGxvY2F0aW9uIHRvIGNoZWNrLiBBbHJpZ2h0LCB0aW1lIHRvIGdvIHNwZWx1bmtpbmcgaW4gYGRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnNgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmbiBzdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svcm51bGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM9MTI5PWltcGwgY29uZmlnZnM6OkF0dHJpYnV0ZU9wZXJhdGlvbnNcdTAwM2MwXHUwMDNlIGZvciBEZXZpY2VDb25maWcge1xuLS1cbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMTQzLVxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoxNDQ6ICAgIGZuIHN0b3JlKHRoaXM6IFx1MDAyNkRldmljZUNvbmZpZywgcGFnZTogXHUwMDI2W3U4XSkgLVx1MDAzZSBSZXN1bHQge1xuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0xNDUtICAgICAgICBsZXQgcG93ZXJfb3AgPSBrc3RydG9ib29sX2J5dGVzKHBhZ2UpPztcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE2OD1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXHUwMDNjMVx1MDAzZSBmb3IgRGV2aWNlQ29uZmlnIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTE3Ni1cbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6MTc3OiAgICBmbiBzdG9yZSh0aGlzOiBcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMTc4LSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE5Mj1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXHUwMDNjMlx1MDAzZSBmb3IgRGV2aWNlQ29uZmlnIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTIwNi1cbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6MjA3OiAgICBmbiBzdG9yZSh0aGlzOiBcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjA4LSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTIxOT1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXHUwMDNjM1x1MDAzZSBmb3IgRGV2aWNlQ29uZmlnIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTIyNy1cbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6MjI4OiAgICBmbiBzdG9yZSh0aGlzOiBcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjI5LSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTI0Mj1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXHUwMDNjNFx1MDAzZSBmb3IgRGV2aWNlQ29uZmlnIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTI1MC1cbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6MjUxOiAgICBmbiBzdG9yZSh0aGlzOiBcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjUyLSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTA4MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXNzZWN0aW5nIHRoZSBEaXNrIENyZWF0aW9uIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gcGlucG9pbnQgd2hlcmUgdGhlIGFjdHVhbCBibG9jayBkZXZpY2UgY3JlYXRpb24gaGFwcGVucyB3aXRoaW4gdGhpcyBSdXN0IGtlcm5lbCBjb2RlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGNoYW5nZXMgbWFkZSBieSB0aGUgcGF0Y2guIFRoZSBpbml0aWFsIHRob3VnaHQgcG9pbnRzIHRvIHRoZSBgc3RvcmVgIGZ1bmN0aW9uIGZvciBgQXR0cmlidXRlT3BlcmF0aW9ucyZsdDswJmd0O2Agd2hlcmUgYE51bGxCbGtEZXZpY2U6Om5ld2AgaXMgaW52b2tlZC4gQnV0IHdhaXQsIGBBdHRyaWJ1dGVPcGVyYXRpb25zYCBpcyBhIHRyYWl0LCBpc24mIzM5O3QgaXQ/IFRoYXQgbWVhbnMgYHN0b3JlYCBtaWdodCBiZSBhIHRodW5rLCBhIHdyYXBwZXIuIEkgbmVlZCB0byBkaWcgZGVlcGVyLgoKSWYgSSYjMzk7bSBsYXNlci1mb2N1c2VkIG9uIHRoZSBibG9jayBsYXllciBkaXNrIGNyZWF0aW9uIGl0c2VsZiwgdGhlIGNhbGxzIHRvIGBfX2Jsa19tcV9hbGxvY19kaXNrYCBvciBgZGV2aWNlX2FkZF9kaXNrYCB3aXRoaW4gYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgbG9vayBwcm9taXNpbmcuIEhvd2V2ZXIsIHRob3NlIGFyZSBwcmV0dHkgZ2VuZXJpYyBibG9jayBsYXllciBmdW5jdGlvbnMsIHNvIHRoZXkgbWlnaHQgbm90IGltbWVkaWF0ZWx5IHJldmVhbCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBwYXRjaCYjMzk7cyBpbXBhY3QuCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIG1vZGlmeWluZyBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUga2V5IGxpZXMhIE5vdywgaXMgdGhlcmUgYW55dGhpbmcgKnNwZWNpZmljKiB0byB0aGlzIGBHZW5EaXNrQnVpbGRlcmAgd2l0aGluIGBydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc2A/IEkgbmVlZCB0byBjaGVjayB0aGUgZmlsZS4gTGV0JiMzOTtzIGdldCB0byBgcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNgIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm4gJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM9MzA9aW1wbCBEZWZhdWx0IGZvciBHZW5EaXNrQnVpbGRlciB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczozMTogICAgZm4gZGVmYXVsdCgpIC1cdTAwM2UgU2VsZiB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0zMi0gICAgICAgIFNlbGYge1xuLS1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzPTQxPWltcGwgR2VuRGlza0J1aWxkZXIge1xucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDItICAgIC8vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2UuXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczo0MzogICAgcHViIGZuIG5ldygpIC1cdTAwM2UgU2VsZiB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy00NC0gICAgICAgIFNlbGY6OmRlZmF1bHQoKVxuLS1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTQ3LSAgICAvLy8gU2V0IHRoZSByb3RhdGlvbmFsIG1lZGlhIGF0dHJpYnV0ZSBmb3IgdGhlIGRldmljZSB0byBiZSBidWlsdC5cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjQ4OiAgICBwdWIgZm4gcm90YXRpb25hbChtdXQgc2VsZiwgcm90YXRpb25hbDogYm9vbCkgLVx1MDAzZSBTZWxmIHtcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTQ5LSAgICAgICAgc2VsZi5yb3RhdGlvbmFsID0gcm90YXRpb25hbDtcbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy01NC0gICAgLy8vIGFuZCB0aGF0IGl0IGlzIGEgcG93ZXIgb2YgdHdvLlxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6NTU6ICAgIHB1YiBmbiB2YWxpZGF0ZV9ibG9ja19zaXplKHNpemU6IHUzMikgLVx1MDAzZSBSZXN1bHQge1xucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNTYtICAgICAgICBpZiAhKDUxMi4uPWJpbmRpbmdzOjpQQUdFX1NJWkUgYXMgdTMyKS5jb250YWlucyhcdTAwMjZzaXplKSB8fCAhc2l6ZS5pc19wb3dlcl9vZl90d28oKSB7XG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNjktICAgIC8vLyB0eXBpY2FsbHkgNDA5NiBieXRlcy5cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjcwOiAgICBwdWIgZm4gbG9naWNhbF9ibG9ja19zaXplKG11dCBzZWxmLCBibG9ja19zaXplOiB1MzIpIC1cdTAwM2UgUmVzdWx0XHUwMDNjU2VsZlx1MDAzZSB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy03MS0gICAgICAgIFNlbGY6OnZhbGlkYXRlX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/O1xuLS1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTg0LSAgICAvLy8gdGhhdCBleHBvc2UgYSA1MTIgYnl0ZSBsb2dpY2FsIGJsb2NrIHNpemUgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0uXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczo4NTogICAgcHViIGZuIHBoeXNpY2FsX2Jsb2NrX3NpemUobXV0IHNlbGYsIGJsb2NrX3NpemU6IHUzMikgLVx1MDAzZSBSZXN1bHRcdTAwM2NTZWxmXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTg2LSAgICAgICAgU2VsZjo6dmFsaWRhdGVfYmxvY2tfc2l6ZShibG9ja19zaXplKT87XG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtOTEtICAgIC8vLyBTZXQgdGhlIGNhcGFjaXR5IG9mIHRoZSBkZXZpY2UgdG8gYmUgYnVpbHQsIGluIHNlY3RvcnMgKDUxMiBieXRlcykuXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczo5MjogICAgcHViIGZuIGNhcGFjaXR5X3NlY3RvcnMobXV0IHNlbGYsIGNhcGFjaXR5OiB1NjQpIC1cdTAwM2UgU2VsZiB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy05My0gICAgICAgIHNlbGYuY2FwYWNpdHlfc2VjdG9ycyA9IGNhcGFjaXR5O1xuLS1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTEwMC0gICAgLy8vIHRoZSBkaXNrLlxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MTAxOiAgICBwdWIgZm4gYnVpbGRcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlKFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMTAyLSAgICAgICAgc2VsZixcbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycz0yMjg9aW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgRHJvcCBmb3IgR2VuRGlza1x1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MjI5OiAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0yMzAtICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuZ2VuZGlza2AgcG9pbnRzIHRvIGEgdmFsaWRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0MzcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYnVpbGRgIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGBidWlsZGAgZnVuY3Rpb24sIHdoaWNoIGlzIGEga2V5IGFyZWEgdG8gdW5kZXJzdGFuZC4gSSBjb3VsZCB6ZXJvIGluIG9uIGBHZW5EaXNrQnVpbGRlcjo6YnVpbGRgIGRpcmVjdGx5LCBvciBtYXliZSBldmVuIGxvb2sgYXQgdGhlIGBybnVsbGAgZnVuY3Rpb25zIGFzIHRoZSBwYXRjaCBpcyBmb2N1c2VkIGhlcmUuIEFoLCByaWdodCwgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgaXMgYSBnZW5lcmljIGZ1bmN0aW9uLCBzbyBpdCYjMzk7cyBpbnN0YW50aWF0ZWQgc3BlY2lmaWNhbGx5LiBJbiB0aGlzIGNhc2UsIGl0JiMzOTtsbCBiZWNvbWUgYGtlcm5lbDo6YmxvY2s6Om1xOjpnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6OmJ1aWxkJmx0O3JudWxsOjpOdWxsQmxrRGV2aWNlJmd0O2AuIFNvLCBtYXliZSBmb2N1c2luZyBvbiB0aGUgYHJudWxsYCBmdW5jdGlvbnMgZGlyZWN0bHkgaXMgdGhlIGJlc3QgYXBwcm9hY2guIFRoaW5ncyBsaWtlIGBybnVsbF9tb2RfaW5pdGAsIGlmIGl0IGV4aXN0cywgb3IgdGFyZ2V0aW5nIGBrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZGAgc2hvdWxkIHdvcmssIGFzc3VtaW5nIHN5emJvdCBjYW4gYWN0dWFsbHkgbWF0Y2ggdGhlbS4KCkhhbmcgb24uLi5zeXpib3QgdXNlcyBgb2JqZHVtcGAgdG8gaWRlbnRpZnkgc3ltYm9scy4gSWYgdGhlIHN5bWJvbHMgYXJlIG1hbmdsZWQsIHRoZW4gbWF0Y2hpbmcgdGhlbSBnZXRzIHNpZ25pZmljYW50bHkgaGFyZGVyLiBCdXQgdGhhdCBkb2VzIG9wZW4gdXAgb3RoZXIgcG9zc2liaWxpdGllcy4gSSBjb3VsZCB0cnkgdG8gc3BlY2lmeSBzb21ldGhpbmcgbGlrZSBgX19ibGtfbXFfYWxsb2NfZGlza2Agb3IgYGRldmljZV9hZGRfZGlza2AsIHNpbmNlIHRoZXkmIzM5O3JlIGNhbGxlZCBpbnNpZGUgYGJ1aWxkYC4gVGhlIHByb2JsZW0gd2l0aCB0aGF0LCB0aG91Z2gsIGlzIHRob3NlIGFyZSBtb3JlIGdlbmVyaWMgYmxvY2sgbGF5ZXIgZnVuY3Rpb25zLgoKTGV0JiMzOTtzIGp1c3QgdGFrZSBhIGxvb2sgYW5kIHNlZSB3aGF0IHRoZSBhdmFpbGFibGUgYHJudWxsYCBmdW5jdGlvbnMgYXJlLCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoaXMgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm4gJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzPTM1PWltcGwga2VybmVsOjpJblBsYWNlTW9kdWxlIGZvciBOdWxsQmxrTW9kdWxlIHtcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6MzY6ICAgIGZuIGluaXQoX21vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMgVGhpc01vZHVsZSkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmLCBFcnJvclx1MDAzZSB7XG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTM3LSAgICAgICAgcHJfaW5mbyEoXCYjMzQ7UnVzdCBudWxsX2JsayBsb2FkZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM9NDc9aW1wbCBOdWxsQmxrRGV2aWNlIHtcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6NDg6ICAgIGZuIG5ldyhcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtNDktICAgICAgICB0aGlzX21vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMgVGhpc01vZHVsZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzPTc0PWltcGwgT3BlcmF0aW9ucyBmb3IgTnVsbEJsa0RldmljZSB7XG4tLVxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy03Ny0gICAgI1tpbmxpbmUoYWx3YXlzKV1cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6Nzg6ICAgIGZuIHF1ZXVlX3JxKHF1ZXVlX2RhdGE6IFx1MDAyNlF1ZXVlRGF0YSwgcnE6IEFSZWZcdTAwM2NtcTo6UmVxdWVzdFx1MDAzY1NlbGZcdTAwM2VcdTAwM2UsIF9pc19sYXN0OiBib29sKSAtXHUwMDNlIFJlc3VsdCB7XG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTc5LSAgICAgICAgbWF0Y2ggcXVldWVfZGF0YS5pcnFfbW9kZSB7XG4tLVxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy05MC1cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6OTE6ICAgIGZuIGNvbW1pdF9ycXMoX3F1ZXVlX2RhdGE6IFx1MDAyNlF1ZXVlRGF0YSkge31cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtOTItXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzOjkzOiAgICBmbiBjb21wbGV0ZShycTogQVJlZlx1MDAzY21xOjpSZXF1ZXN0XHUwMDNjU2VsZlx1MDAzZVx1MDAzZSkge1xuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy05NC0gICAgICAgIG1xOjpSZXF1ZXN0OjplbmRfb2socnEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDE2CgkJCQkJCQlvdXRwdXQ6IDE3OQoJCQkJCQkJdGhvdWdodHM6IDkxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFzb25pbmcgZm9yIEZ1enppbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGhlcmUgaXMgdG8gY3JhZnQgYW4gZWZmZWN0aXZlIGZ1enppbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwYXRjaCwgYW5kIEkgbmVlZCB0byBiZSBhcyBwcmVjaXNlIGFzIHBvc3NpYmxlLiBUaGUgcHJpbWFyeSBmb2N1cyBpcyBvbiB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIHRoZSBSdXN0IGJsb2NrIGxheWVyIGJpbmRpbmdzIGFuZCB0aGUgYHJudWxsYCBkcml2ZXIuCgpGaXJzdCwgSSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIHRvdWNoZWQgYnkgdGhlIHBhdGNoLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgY3JlYXRpb24gb2YgdGhlIGJsb2NrIGRldmljZSwgc3BlY2lmaWNhbGx5IGBOdWxsQmxrTW9kdWxlOjppbml0YCBhbmQgYE51bGxCbGtEZXZpY2U6Om5ld2AgaW4gdGhlIFJ1c3QgY29kZSwgYW5kIGFsc28gYERldmljZUNvbmZpZzo6c3RvcmVgIGluIHRoZSBjb25maWdmcy4gSG93ZXZlciwgSSB3YW50IHRvIGlkZW50aWZ5IGEgbW9yZSB0YXJnZXRlZCBhcHByb2FjaCBmb3IgdGhlIGBGb2N1c1N5bWJvbHNgLiBJIGluaXRpYWxseSBjb25zaWRlcmVkIGZ1bmN0aW9ucyBsaWtlIGBfX2Jsa19tcV9hbGxvY19kaXNrYCBhbmQgYGRldmljZV9hZGRfZGlza2AsIGJ1dCB0aG9zZSBhcmUgaG90LXBhdGggZnVuY3Rpb25zLCBub3QgdGhlIGJlc3QgY2FuZGlkYXRlcyBmb3IgYEZvY3VzU3ltYm9sc2AuCgpUaGlua2luZyBtb3JlIHByZWNpc2VseSwgYGtlcm5lbDo6YmxvY2s6Om1xOjpnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6OmJ1aWxkYCBpcyBpZGVhbC4gSXQgaXMgYSBub24taG90LXBhdGggQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb24sIGl0IGlzIG9ubHkgY2FsbGVkIHdoZW4gY3JlYXRpbmcgYSBkaXNrLCB3aGljaCBtYWtlcyBpdCBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIGZ1enppbmcuIEkgY29uZmlybWVkIHRoYXQgaXQmIzM5O3MgcHJlc2VudCBpbiB0aGUgbW9kaWZpZWQgY29kZSBhbmQgaXMgdGhlIGtpbmQgb2YgZnVuY3Rpb24gdGhhdCBpcyBtb3JlIGxpa2VseSB0byBiZSBoaXQgZHVyaW5nIHRoZSBwYXRjaCYjMzk7cyBjb3JlIGxvZ2ljLiBBZGRpdGlvbmFsbHksIHRoZSBwYXRjaCBtb2RpZmllcyBgcm51bGw6Ok51bGxCbGtEZXZpY2U6Om5ld2AsIHNvIEkgd2lsbCBhbHNvIGluY2x1ZGUgdGhhdCBzeW1ib2wgYXMgd2VsbC4gVGhpcyBzaG91bGQgZ2l2ZSB0aGUgZnV6emVyIGEgZ29vZCBzdGFydGluZyBwb2ludC4KClRoZSBjb25jZXJuIHdpdGggUnVzdCBzeW1ib2xzIGlzIHRoZWlyIG1hbmdsZWQgbmF0dXJlLiBIb3dldmVyLCBzaW5jZSB3ZSYjMzk7cmUgcHJvdmlkaW5nIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9uIG5hbWVzLCBJIHRoaW5rIGl0JiMzOTtzIHdvcnRoIGEgc2hvdC4gSSYjMzk7bGwgaW5jbHVkZSB0aGUgZnVsbCBSdXN0IHBhdGgsIGFzIHRoYXQmIzM5O3MgcHJvYmFibHkgdGhlIG1vc3QgYWNjdXJhdGUgdGhpbmcgd2UgY2FuIG9mZmVyLiBJIGNvbmZpcm1lZCB0aGF0IHRoZXJlIGFyZSBubyBkaXJlY3QgQyBiaW5kaW5ncyBvciBleHBvcnRlZCBzeW1ib2xzIGluIHRoZSBgcm51bGxgIGRyaXZlci4KCk5leHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQuIEFmdGVyIHJldmlld2luZyB0aGUgYEtjb25maWdgIGZpbGUsIGl0IGxvb2tzIGxpa2UgYEJMS19ERVZfUlVTVF9OVUxMYCBpcyB0aGUgbWFpbiBvbmUgYW5kIGl0IGRlcGVuZHMgb24gYFJVU1RgIGFuZCBgQ09ORklHRlNfRlNgLiBUaHVzLCBJIHdpbGwgZW5hYmxlIGBCTEtfREVWX1JVU1RfTlVMTGAgYmVjYXVzZSBJIGFtIGVuYWJsaW5nIGBSVVNUYCBhbmQgYENPTkZJR0ZTX0ZTYC4KCkkmIzM5O20gbWFraW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBzcGVjaWZpY2FsbHkgdGhlIFJ1c3QgYmxvY2sgbGF5ZXIsIGFuZCB0aGUgYHJudWxsYCBkcml2ZXIgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy4KClRoZXJlZm9yZSwgbXkgZmluYWwgY29uZmlndXJhdGlvbiBpczoKCkNvbmZpZ3M6IGBCTEtfREVWX1JVU1RfTlVMTGAKRm9jdXNTeW1ib2xzOiBga2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGRgLCBgcm51bGw6Ok51bGxCbGtEZXZpY2U6Om5ld2AKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfUlVTVF9OVUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGQmIzM0OywKICAgICYjMzQ7cm51bGw6Ok51bGxCbGtEZXZpY2U6Om5ldyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUnVzdCBibG9jayBsYXllciBiaW5kaW5ncyB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSBgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgIGFuZCBzZXQgdGhlIGBvd25lcmAgZmllbGQgdG8gdGhlIG1vZHVsZSYjMzk7cyBgVGhpc01vZHVsZWAgcG9pbnRlci4gVGhpcyBhZmZlY3RzIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9mIHRoZSBgZm9wc2Agc3RydWN0dXJlIGR1cmluZyBibG9jayBkZXZpY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUaGUgYHJudWxsYCBkcml2ZXIgaXMgdXBkYXRlZCB0byBwYXNzIGl0cyBtb2R1bGUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoUnVzdCBibG9jayBsYXllcikgYW5kIHRoZSBgcm51bGxgIGRyaXZlciwgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9SVVNUX05VTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZCYjMzQ7LAogICAgJiMzNDtybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSdXN0IGJsb2NrIGxheWVyIGJpbmRpbmdzIHRvIGR5bmFtaWNhbGx5IGFsbG9jYXRlIGBibG9ja19kZXZpY2Vfb3BlcmF0aW9uc2AgYW5kIHNldCB0aGUgYG93bmVyYCBmaWVsZCB0byB0aGUgbW9kdWxlJiMzOTtzIGBUaGlzTW9kdWxlYCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgbW9kdWxlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlIGBmb3BzYCBzdHJ1Y3R1cmUgZHVyaW5nIGJsb2NrIGRldmljZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFRoZSBgcm51bGxgIGRyaXZlciBpcyB1cGRhdGVkIHRvIHBhc3MgaXRzIG1vZHVsZSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChSdXN0IGJsb2NrIGxheWVyKSBhbmQgdGhlIGBybnVsbGAgZHJpdmVyLCB3aGljaCBjYW4gYmUgdGVzdGVkIGJ5IGNyZWF0aW5nIGEgbnVsbCBibG9jayBkZXZpY2UgdmlhIGNvbmZpZ2ZzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjg6MzMuODQwOTY1NDg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIyNzgwMjY3MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9SVVNUX05VTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZFwiLFxuICAgIFwicm51bGw6Ok51bGxCbGtEZXZpY2U6Om5ld1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSdXN0IGJsb2NrIGxheWVyIGJpbmRpbmdzIHRvIGR5bmFtaWNhbGx5IGFsbG9jYXRlIGBibG9ja19kZXZpY2Vfb3BlcmF0aW9uc2AgYW5kIHNldCB0aGUgYG93bmVyYCBmaWVsZCB0byB0aGUgbW9kdWxlJ3MgYFRoaXNNb2R1bGVgIHBvaW50ZXIuIFRoaXMgYWZmZWN0cyBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBvZiB0aGUgYGZvcHNgIHN0cnVjdHVyZSBkdXJpbmcgYmxvY2sgZGV2aWNlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbi4gVGhlIGBybnVsbGAgZHJpdmVyIGlzIHVwZGF0ZWQgdG8gcGFzcyBpdHMgbW9kdWxlIHBvaW50ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKFJ1c3QgYmxvY2sgbGF5ZXIpIGFuZCB0aGUgYHJudWxsYCBkcml2ZXIsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgYnkgY3JlYXRpbmcgYSBudWxsIGJsb2NrIGRldmljZSB2aWEgY29uZmlnZnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIxOjI4OjMzLjg0MDk3MjA0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0MjA3ODI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDYwYzZkMTA5Nzg3MjI2YmZjOTYxOWIzM2YzM2M2YWUzMTg5ZGNiZTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAyMToyODozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzIGIvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xcbmluZGV4IDdjMmViNWMwYjcyMjguLmJiYTMwZDU5MGY2ODEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xcbisrKyBiL2RyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnNcXG5AQCAtMTQ3LDYgKzE0Nyw3IEBAIGZuIHN0b3JlKHRoaXM6IFxcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbiBcXG4gICAgICAgICBpZiAhZ3VhcmQucG93ZXJlZCBcXHUwMDI2XFx1MDAyNiBwb3dlcl9vcCB7XFxuICAgICAgICAgICAgIGd1YXJkLmRpc2sgPSBTb21lKE51bGxCbGtEZXZpY2U6Om5ldyhcXG4rICAgICAgICAgICAgICAgIFxcdTAwMjZUSElTX01PRFVMRSxcXG4gICAgICAgICAgICAgICAgIFxcdTAwMjZndWFyZC5uYW1lLFxcbiAgICAgICAgICAgICAgICAgZ3VhcmQuYmxvY2tfc2l6ZSxcXG4gICAgICAgICAgICAgICAgIGd1YXJkLnJvdGF0aW9uYWwsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMgYi9kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzXFxuaW5kZXggMGNhODcxNWZlYmU4My4uNDI2NWExMzNjYmYwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzXFxuKysrIGIvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yc1xcbkBAIC00Niw2ICs0Niw3IEBAIGZuIGluaXQoX21vZHVsZTogXFx1MDAyNidzdGF0aWMgVGhpc01vZHVsZSkgLVxcdTAwM2UgaW1wbCBQaW5Jbml0XFx1MDAzY1NlbGYsIEVycm9yXFx1MDAzZSB7XFxuIFxcbiBpbXBsIE51bGxCbGtEZXZpY2Uge1xcbiAgICAgZm4gbmV3KFxcbisgICAgICAgIHRoaXNfbW9kdWxlOiBcXHUwMDI2J3N0YXRpYyBUaGlzTW9kdWxlLFxcbiAgICAgICAgIG5hbWU6IFxcdTAwMjZDU3RyLFxcbiAgICAgICAgIGJsb2NrX3NpemU6IHUzMixcXG4gICAgICAgICByb3RhdGlvbmFsOiBib29sLFxcbkBAIC02MSw3ICs2Miw3IEBAIGZuIG5ldyhcXG4gICAgICAgICAgICAgLmxvZ2ljYWxfYmxvY2tfc2l6ZShibG9ja19zaXplKT9cXG4gICAgICAgICAgICAgLnBoeXNpY2FsX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/XFxuICAgICAgICAgICAgIC5yb3RhdGlvbmFsKHJvdGF0aW9uYWwpXFxuLSAgICAgICAgICAgIC5idWlsZChmbXQhKFxcXCJ7fVxcXCIsIG5hbWUudG9fc3RyKCk/KSwgdGFnc2V0LCBxdWV1ZV9kYXRhKVxcbisgICAgICAgICAgICAuYnVpbGQodGhpc19tb2R1bGUsIGZtdCEoXFxcInt9XFxcIiwgbmFtZS50b19zdHIoKT8pLCB0YWdzZXQsIHF1ZXVlX2RhdGEpXFxuICAgICB9XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xLnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEucnNcXG5pbmRleCAxZmQwZDU0ZGQ1NDkzLi4zMzU2MWUwZjY3YWYwIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEucnNcXG5AQCAtOCw4ICs4LDggQEBcXG4gLy8hIC0gSW1wbGVtZW50IFtgT3BlcmF0aW9uc2BdIGZvciBhIHR5cGUgYFRgLlxcbiAvLyEgLSBDcmVhdGUgYSBbYFRhZ1NldFxcdTAwM2NUXFx1MDAzZWBdLlxcbiAvLyEgLSBDcmVhdGUgYSBbYEdlbkRpc2tcXHUwMDNjVFxcdTAwM2VgXSwgdmlhIHRoZSBbYEdlbkRpc2tCdWlsZGVyYF0uXFxuLS8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSBwYXNzaW5nIGluXFxuLS8vISAgIHRoZSBgVGFnU2V0YCByZWZlcmVuY2UuXFxuKy8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSwgcGFzc2luZyBpblxcbisvLyEgICB0aGUgZHJpdmVyJ3MgW2BUaGlzTW9kdWxlYF0sIHRoZSBkaXNrIG5hbWUsIHRoZSBgVGFnU2V0YCwgYW5kIHF1ZXVlIGRhdGEuXFxuIC8vIVxcbiAvLyEgVGhlIHR5cGVzIGF2YWlsYWJsZSBpbiB0aGlzIG1vZHVsZSB0aGF0IGhhdmUgZGlyZWN0IEMgY291bnRlcnBhcnRzIGFyZTpcXG4gLy8hXFxuQEAgLTg2LDkgKzg2LDEyIEBAXFxuIC8vIVxcbiAvLyEgbGV0IHRhZ3NldDogQXJjXFx1MDAzY1RhZ1NldFxcdTAwM2NNeUJsa0RldmljZVxcdTAwM2VcXHUwMDNlID1cXG4gLy8hICAgICBBcmM6OnBpbl9pbml0KFRhZ1NldDo6bmV3KDEsIDI1NiwgMSksIGZsYWdzOjpHRlBfS0VSTkVMKT87XFxuKy8vISAjIC8vIFNBRkVUWTogRHVtbXkgYFRoaXNNb2R1bGVgIGZvciBkb2N0ZXN0IGNvbXBpbGF0aW9uIG9ubHkuXFxuKy8vISAjIHN0YXRpYyBUSElTX01PRFVMRTogVGhpc01vZHVsZSA9XFxuKy8vISAjICAgICB1bnNhZmUgeyBUaGlzTW9kdWxlOjpmcm9tX3B0cihjb3JlOjpwdHI6Om51bGxfbXV0KCkpIH07XFxuIC8vISBsZXQgbXV0IGRpc2sgPSBnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6Om5ldygpXFxuIC8vISAgICAgLmNhcGFjaXR5X3NlY3RvcnMoNDA5NilcXG4tLy8hICAgICAuYnVpbGQoZm10IShcXFwibXlibGtcXFwiKSwgdGFnc2V0LCAoKSk/O1xcbisvLyEgICAgIC5idWlsZChcXHUwMDI2VEhJU19NT0RVTEUsIGZtdCEoXFxcIm15YmxrXFxcIiksIHRhZ3NldCwgKCkpPztcXG4gLy8hXFxuIC8vISAjIE9rOjpcXHUwMDNjKCksIGtlcm5lbDo6ZXJyb3I6OkVycm9yXFx1MDAzZSgoKSlcXG4gLy8hIGBgYFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycyBiL3J1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzXFxuaW5kZXggZmM5N2RkODczOTc0Ni4uZmYwNzkyMjNkMzFhYSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzXFxuQEAgLTk1LDggKzk1LDEyIEBAIHB1YiBmbiBjYXBhY2l0eV9zZWN0b3JzKG11dCBzZWxmLCBjYXBhY2l0eTogdTY0KSAtXFx1MDAzZSBTZWxmIHtcXG4gICAgIH1cXG4gXFxuICAgICAvLy8gQnVpbGQgYSBuZXcgYEdlbkRpc2tgIGFuZCBhZGQgaXQgdG8gdGhlIFZGUy5cXG4rICAgIC8vL1xcbisgICAgLy8vIGB0aGlzX21vZHVsZWAgbXVzdCBiZSB0aGUgW2BUaGlzTW9kdWxlYF0gZm9yIHRoZSBrZXJuZWwgbW9kdWxlIHJlZ2lzdGVyaW5nXFxuKyAgICAvLy8gdGhlIGRpc2suXFxuICAgICBwdWIgZm4gYnVpbGRcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UoXFxuICAgICAgICAgc2VsZixcXG4rICAgICAgICB0aGlzX21vZHVsZTogXFx1MDAyNidzdGF0aWMgVGhpc01vZHVsZSxcXG4gICAgICAgICBuYW1lOiBmbXQ6OkFyZ3VtZW50c1xcdTAwM2MnX1xcdTAwM2UsXFxuICAgICAgICAgdGFnc2V0OiBBcmNcXHUwMDNjVGFnU2V0XFx1MDAzY1RcXHUwMDNlXFx1MDAzZSxcXG4gICAgICAgICBxdWV1ZV9kYXRhOiBUOjpRdWV1ZURhdGEsXFxuQEAgLTEyNSwzMCArMTI5LDMyIEBAIHB1YiBmbiBidWlsZFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZShcXG4gICAgICAgICAgICAgKVxcbiAgICAgICAgIH0pPztcXG4gXFxuLSAgICAgICAgY29uc3QgVEFCTEU6IGJpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyA9IGJpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7XFxuLSAgICAgICAgICAgIHN1Ym1pdF9iaW86IE5vbmUsXFxuLSAgICAgICAgICAgIG9wZW46IE5vbmUsXFxuLSAgICAgICAgICAgIHJlbGVhc2U6IE5vbmUsXFxuLSAgICAgICAgICAgIGlvY3RsOiBOb25lLFxcbi0gICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsXFxuLSAgICAgICAgICAgIGNoZWNrX2V2ZW50czogTm9uZSxcXG4tICAgICAgICAgICAgdW5sb2NrX25hdGl2ZV9jYXBhY2l0eTogTm9uZSxcXG4tICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLFxcbi0gICAgICAgICAgICBzZXRfcmVhZF9vbmx5OiBOb25lLFxcbi0gICAgICAgICAgICBzd2FwX3Nsb3RfZnJlZV9ub3RpZnk6IE5vbmUsXFxuLSAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSxcXG4tICAgICAgICAgICAgZGV2bm9kZTogTm9uZSxcXG4tICAgICAgICAgICAgYWx0ZXJuYXRpdmVfZ3B0X3NlY3RvcjogTm9uZSxcXG4tICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSxcXG4tICAgICAgICAgICAgLy8gVE9ETzogU2V0IHRvIGBUSElTX01PRFVMRWAuXFxuLSAgICAgICAgICAgIG93bmVyOiBjb3JlOjpwdHI6Om51bGxfbXV0KCksXFxuLSAgICAgICAgICAgIHByX29wczogY29yZTo6cHRyOjpudWxsX211dCgpLFxcbi0gICAgICAgICAgICBmcmVlX2Rpc2s6IE5vbmUsXFxuLSAgICAgICAgICAgIHBvbGxfYmlvOiBOb25lLFxcbi0gICAgICAgIH07XFxuLVxcbi0gICAgICAgIC8vIFNBRkVUWTogYGdlbmRpc2tgIGlzIGEgdmFsaWQgcG9pbnRlciBhcyB3ZSBpbml0aWFsaXplZCBpdCBhYm92ZVxcbi0gICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9IFxcdTAwMjZUQUJMRSB9O1xcbisgICAgICAgIGxldCBmb3BzID0gS0JveDo6bmV3KFxcbisgICAgICAgICAgICBiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnMge1xcbisgICAgICAgICAgICAgICAgc3VibWl0X2JpbzogTm9uZSxcXG4rICAgICAgICAgICAgICAgIG9wZW46IE5vbmUsXFxuKyAgICAgICAgICAgICAgICByZWxlYXNlOiBOb25lLFxcbisgICAgICAgICAgICAgICAgaW9jdGw6IE5vbmUsXFxuKyAgICAgICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsXFxuKyAgICAgICAgICAgICAgICBjaGVja19ldmVudHM6IE5vbmUsXFxuKyAgICAgICAgICAgICAgICB1bmxvY2tfbmF0aXZlX2NhcGFjaXR5OiBOb25lLFxcbisgICAgICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLFxcbisgICAgICAgICAgICAgICAgc2V0X3JlYWRfb25seTogTm9uZSxcXG4rICAgICAgICAgICAgICAgIHN3YXBfc2xvdF9mcmVlX25vdGlmeTogTm9uZSxcXG4rICAgICAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSxcXG4rICAgICAgICAgICAgICAgIGRldm5vZGU6IE5vbmUsXFxuKyAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZV9ncHRfc2VjdG9yOiBOb25lLFxcbisgICAgICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSxcXG4rICAgICAgICAgICAgICAgIG93bmVyOiB0aGlzX21vZHVsZS5hc19wdHIoKSxcXG4rICAgICAgICAgICAgICAgIHByX29wczogY29yZTo6cHRyOjpudWxsX211dCgpLFxcbisgICAgICAgICAgICAgICAgZnJlZV9kaXNrOiBOb25lLFxcbisgICAgICAgICAgICAgICAgcG9sbF9iaW86IE5vbmUsXFxuKyAgICAgICAgICAgIH0sXFxuKyAgICAgICAgICAgIEdGUF9LRVJORUwsXFxuKyAgICAgICAgKT87XFxuK1xcbisgICAgICAgIC8vIFNBRkVUWTogYGdlbmRpc2tgIGlzIGEgdmFsaWQgcG9pbnRlciBhcyB3ZSBpbml0aWFsaXplZCBpdCBhYm92ZS5cXG4rICAgICAgICB1bnNhZmUgeyAoKmdlbmRpc2spLmZvcHMgPSBjb3JlOjpwdHI6OmZyb21fcmVmKFxcdTAwMjYqZm9wcykgfTtcXG4gXFxuICAgICAgICAgbGV0IGNsZWFudXBfZmFpbHVyZSA9IFNjb3BlR3VhcmQ6Om5ld193aXRoX2RhdGEoKGdlbmRpc2ssIGRhdGEpLCB8KGdlbmRpc2ssIGRhdGEpfCB7XFxuICAgICAgICAgICAgIC8vIFNBRkVUWTogYGdlbmRpc2tgIGNhbWUgZnJvbSBgX19ibGtfbXFfYWxsb2NfZGlzaygpYCBhYm92ZSBhbmRcXG5AQCAtMTkzLDYgKzE5OSw3IEBAIHB1YiBmbiBidWlsZFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZShcXG4gICAgICAgICAvLyBgX19ibGtfbXFfYWxsb2NfZGlza2AgYWJvdmUuXFxuICAgICAgICAgT2soR2VuRGlzayB7XFxuICAgICAgICAgICAgIF90YWdzZXQ6IHRhZ3NldCxcXG4rICAgICAgICAgICAgX2ZvcHM6IGZvcHMsXFxuICAgICAgICAgICAgIGdlbmRpc2ssXFxuICAgICAgICAgfSlcXG4gICAgIH1cXG5AQCAtMjA2LDggKzIxMywxMSBAQCBwdWIgZm4gYnVpbGRcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UoXFxuIC8vLyAgLSBgZ2VuZGlza2Agd2FzIGFkZGVkIHRvIHRoZSBWRlMgdGhyb3VnaCBhIGNhbGwgdG9cXG4gLy8vICAgIGBiaW5kaW5nczo6ZGV2aWNlX2FkZF9kaXNrYC5cXG4gLy8vICAtIGBzZWxmLmdlbmRpc2sucXVldWUucXVldWVkYXRhYCBpcyBpbml0aWFsaXplZCBieSBhIGNhbGwgdG8gYEZvcmVpZ25Pd25hYmxlOjppbnRvX2ZvcmVpZ25gLlxcbisvLy8gIC0gYHNlbGYuX2ZvcHNgIHN0b3JlcyB0aGUgW2BiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgXSBwb2ludGVkIHRvIGJ5XFxuKy8vLyAgICBgZ2VuZGlzay5mb3BzYC5cXG4gcHViIHN0cnVjdCBHZW5EaXNrXFx1MDAzY1Q6IE9wZXJhdGlvbnNcXHUwMDNlIHtcXG4gICAgIF90YWdzZXQ6IEFyY1xcdTAwM2NUYWdTZXRcXHUwMDNjVFxcdTAwM2VcXHUwMDNlLFxcbisgICAgX2ZvcHM6IEtCb3hcXHUwMDNjYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zXFx1MDAzZSxcXG4gICAgIGdlbmRpc2s6ICptdXQgYmluZGluZ3M6OmdlbmRpc2ssXFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIxOjI4OjM1LjE4Mzk5MTc0OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUwOTM0OTg1NjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfUlVTVF9OVUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGRcIixcbiAgICBcInJudWxsOjpOdWxsQmxrRGV2aWNlOjpuZXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUnVzdCBibG9jayBsYXllciBiaW5kaW5ncyB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSBgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgIGFuZCBzZXQgdGhlIGBvd25lcmAgZmllbGQgdG8gdGhlIG1vZHVsZSdzIGBUaGlzTW9kdWxlYCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgbW9kdWxlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlIGBmb3BzYCBzdHJ1Y3R1cmUgZHVyaW5nIGJsb2NrIGRldmljZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFRoZSBgcm51bGxgIGRyaXZlciBpcyB1cGRhdGVkIHRvIHBhc3MgaXRzIG1vZHVsZSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChSdXN0IGJsb2NrIGxheWVyKSBhbmQgdGhlIGBybnVsbGAgZHJpdmVyLCB3aGljaCBjYW4gYmUgdGVzdGVkIGJ5IGNyZWF0aW5nIGEgbnVsbCBibG9jayBkZXZpY2UgdmlhIGNvbmZpZ2ZzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MGM2ZDEwOTc4NzIyNmJmYzk2MTliMzNmMzNjNmFlMzE4OWRjYmU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAyMToyODozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMgYi9kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzXG5pbmRleCA3YzJlYjVjMGI3MjI4Li5iYmEzMGQ1OTBmNjgxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xuKysrIGIvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xuQEAgLTE0Nyw2ICsxNDcsNyBAQCBmbiBzdG9yZSh0aGlzOiBcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbiBcbiAgICAgICAgIGlmICFndWFyZC5wb3dlcmVkIFx1MDAyNlx1MDAyNiBwb3dlcl9vcCB7XG4gICAgICAgICAgICAgZ3VhcmQuZGlzayA9IFNvbWUoTnVsbEJsa0RldmljZTo6bmV3KFxuKyAgICAgICAgICAgICAgICBcdTAwMjZUSElTX01PRFVMRSxcbiAgICAgICAgICAgICAgICAgXHUwMDI2Z3VhcmQubmFtZSxcbiAgICAgICAgICAgICAgICAgZ3VhcmQuYmxvY2tfc2l6ZSxcbiAgICAgICAgICAgICAgICAgZ3VhcmQucm90YXRpb25hbCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzIGIvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yc1xuaW5kZXggMGNhODcxNWZlYmU4My4uNDI2NWExMzNjYmYwNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnNcbisrKyBiL2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnNcbkBAIC00Niw2ICs0Niw3IEBAIGZuIGluaXQoX21vZHVsZTogXHUwMDI2J3N0YXRpYyBUaGlzTW9kdWxlKSAtXHUwMDNlIGltcGwgUGluSW5pdFx1MDAzY1NlbGYsIEVycm9yXHUwMDNlIHtcbiBcbiBpbXBsIE51bGxCbGtEZXZpY2Uge1xuICAgICBmbiBuZXcoXG4rICAgICAgICB0aGlzX21vZHVsZTogXHUwMDI2J3N0YXRpYyBUaGlzTW9kdWxlLFxuICAgICAgICAgbmFtZTogXHUwMDI2Q1N0cixcbiAgICAgICAgIGJsb2NrX3NpemU6IHUzMixcbiAgICAgICAgIHJvdGF0aW9uYWw6IGJvb2wsXG5AQCAtNjEsNyArNjIsNyBAQCBmbiBuZXcoXG4gICAgICAgICAgICAgLmxvZ2ljYWxfYmxvY2tfc2l6ZShibG9ja19zaXplKT9cbiAgICAgICAgICAgICAucGh5c2ljYWxfYmxvY2tfc2l6ZShibG9ja19zaXplKT9cbiAgICAgICAgICAgICAucm90YXRpb25hbChyb3RhdGlvbmFsKVxuLSAgICAgICAgICAgIC5idWlsZChmbXQhKFwie31cIiwgbmFtZS50b19zdHIoKT8pLCB0YWdzZXQsIHF1ZXVlX2RhdGEpXG4rICAgICAgICAgICAgLmJ1aWxkKHRoaXNfbW9kdWxlLCBmbXQhKFwie31cIiwgbmFtZS50b19zdHIoKT8pLCB0YWdzZXQsIHF1ZXVlX2RhdGEpXG4gICAgIH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYmxvY2svbXEucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS5yc1xuaW5kZXggMWZkMGQ1NGRkNTQ5My4uMzM1NjFlMGY2N2FmMCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS5yc1xuQEAgLTgsOCArOCw4IEBAXG4gLy8hIC0gSW1wbGVtZW50IFtgT3BlcmF0aW9uc2BdIGZvciBhIHR5cGUgYFRgLlxuIC8vISAtIENyZWF0ZSBhIFtgVGFnU2V0XHUwMDNjVFx1MDAzZWBdLlxuIC8vISAtIENyZWF0ZSBhIFtgR2VuRGlza1x1MDAzY1RcdTAwM2VgXSwgdmlhIHRoZSBbYEdlbkRpc2tCdWlsZGVyYF0uXG4tLy8hIC0gQWRkIHRoZSBkaXNrIHRvIHRoZSBzeXN0ZW0gYnkgY2FsbGluZyBbYEdlbkRpc2tCdWlsZGVyOjpidWlsZGBdIHBhc3NpbmcgaW5cbi0vLyEgICB0aGUgYFRhZ1NldGAgcmVmZXJlbmNlLlxuKy8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSwgcGFzc2luZyBpblxuKy8vISAgIHRoZSBkcml2ZXIncyBbYFRoaXNNb2R1bGVgXSwgdGhlIGRpc2sgbmFtZSwgdGhlIGBUYWdTZXRgLCBhbmQgcXVldWUgZGF0YS5cbiAvLyFcbiAvLyEgVGhlIHR5cGVzIGF2YWlsYWJsZSBpbiB0aGlzIG1vZHVsZSB0aGF0IGhhdmUgZGlyZWN0IEMgY291bnRlcnBhcnRzIGFyZTpcbiAvLyFcbkBAIC04Niw5ICs4NiwxMiBAQFxuIC8vIVxuIC8vISBsZXQgdGFnc2V0OiBBcmNcdTAwM2NUYWdTZXRcdTAwM2NNeUJsa0RldmljZVx1MDAzZVx1MDAzZSA9XG4gLy8hICAgICBBcmM6OnBpbl9pbml0KFRhZ1NldDo6bmV3KDEsIDI1NiwgMSksIGZsYWdzOjpHRlBfS0VSTkVMKT87XG4rLy8hICMgLy8gU0FGRVRZOiBEdW1teSBgVGhpc01vZHVsZWAgZm9yIGRvY3Rlc3QgY29tcGlsYXRpb24gb25seS5cbisvLyEgIyBzdGF0aWMgVEhJU19NT0RVTEU6IFRoaXNNb2R1bGUgPVxuKy8vISAjICAgICB1bnNhZmUgeyBUaGlzTW9kdWxlOjpmcm9tX3B0cihjb3JlOjpwdHI6Om51bGxfbXV0KCkpIH07XG4gLy8hIGxldCBtdXQgZGlzayA9IGdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6bmV3KClcbiAvLyEgICAgIC5jYXBhY2l0eV9zZWN0b3JzKDQwOTYpXG4tLy8hICAgICAuYnVpbGQoZm10IShcIm15YmxrXCIpLCB0YWdzZXQsICgpKT87XG4rLy8hICAgICAuYnVpbGQoXHUwMDI2VEhJU19NT0RVTEUsIGZtdCEoXCJteWJsa1wiKSwgdGFnc2V0LCAoKSk/O1xuIC8vIVxuIC8vISAjIE9rOjpcdTAwM2MoKSwga2VybmVsOjplcnJvcjo6RXJyb3JcdTAwM2UoKCkpXG4gLy8hIGBgYFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNcbmluZGV4IGZjOTdkZDg3Mzk3NDYuLmZmMDc5MjIzZDMxYWEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc1xuKysrIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNcbkBAIC05NSw4ICs5NSwxMiBAQCBwdWIgZm4gY2FwYWNpdHlfc2VjdG9ycyhtdXQgc2VsZiwgY2FwYWNpdHk6IHU2NCkgLVx1MDAzZSBTZWxmIHtcbiAgICAgfVxuIFxuICAgICAvLy8gQnVpbGQgYSBuZXcgYEdlbkRpc2tgIGFuZCBhZGQgaXQgdG8gdGhlIFZGUy5cbisgICAgLy8vXG4rICAgIC8vLyBgdGhpc19tb2R1bGVgIG11c3QgYmUgdGhlIFtgVGhpc01vZHVsZWBdIGZvciB0aGUga2VybmVsIG1vZHVsZSByZWdpc3RlcmluZ1xuKyAgICAvLy8gdGhlIGRpc2suXG4gICAgIHB1YiBmbiBidWlsZFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UoXG4gICAgICAgICBzZWxmLFxuKyAgICAgICAgdGhpc19tb2R1bGU6IFx1MDAyNidzdGF0aWMgVGhpc01vZHVsZSxcbiAgICAgICAgIG5hbWU6IGZtdDo6QXJndW1lbnRzXHUwMDNjJ19cdTAwM2UsXG4gICAgICAgICB0YWdzZXQ6IEFyY1x1MDAzY1RhZ1NldFx1MDAzY1RcdTAwM2VcdTAwM2UsXG4gICAgICAgICBxdWV1ZV9kYXRhOiBUOjpRdWV1ZURhdGEsXG5AQCAtMTI1LDMwICsxMjksMzIgQEAgcHViIGZuIGJ1aWxkXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZShcbiAgICAgICAgICAgICApXG4gICAgICAgICB9KT87XG4gXG4tICAgICAgICBjb25zdCBUQUJMRTogYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zID0gYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zIHtcbi0gICAgICAgICAgICBzdWJtaXRfYmlvOiBOb25lLFxuLSAgICAgICAgICAgIG9wZW46IE5vbmUsXG4tICAgICAgICAgICAgcmVsZWFzZTogTm9uZSxcbi0gICAgICAgICAgICBpb2N0bDogTm9uZSxcbi0gICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsXG4tICAgICAgICAgICAgY2hlY2tfZXZlbnRzOiBOb25lLFxuLSAgICAgICAgICAgIHVubG9ja19uYXRpdmVfY2FwYWNpdHk6IE5vbmUsXG4tICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLFxuLSAgICAgICAgICAgIHNldF9yZWFkX29ubHk6IE5vbmUsXG4tICAgICAgICAgICAgc3dhcF9zbG90X2ZyZWVfbm90aWZ5OiBOb25lLFxuLSAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSxcbi0gICAgICAgICAgICBkZXZub2RlOiBOb25lLFxuLSAgICAgICAgICAgIGFsdGVybmF0aXZlX2dwdF9zZWN0b3I6IE5vbmUsXG4tICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSxcbi0gICAgICAgICAgICAvLyBUT0RPOiBTZXQgdG8gYFRISVNfTU9EVUxFYC5cbi0gICAgICAgICAgICBvd25lcjogY29yZTo6cHRyOjpudWxsX211dCgpLFxuLSAgICAgICAgICAgIHByX29wczogY29yZTo6cHRyOjpudWxsX211dCgpLFxuLSAgICAgICAgICAgIGZyZWVfZGlzazogTm9uZSxcbi0gICAgICAgICAgICBwb2xsX2JpbzogTm9uZSxcbi0gICAgICAgIH07XG4tXG4tICAgICAgICAvLyBTQUZFVFk6IGBnZW5kaXNrYCBpcyBhIHZhbGlkIHBvaW50ZXIgYXMgd2UgaW5pdGlhbGl6ZWQgaXQgYWJvdmVcbi0gICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9IFx1MDAyNlRBQkxFIH07XG4rICAgICAgICBsZXQgZm9wcyA9IEtCb3g6Om5ldyhcbisgICAgICAgICAgICBiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnMge1xuKyAgICAgICAgICAgICAgICBzdWJtaXRfYmlvOiBOb25lLFxuKyAgICAgICAgICAgICAgICBvcGVuOiBOb25lLFxuKyAgICAgICAgICAgICAgICByZWxlYXNlOiBOb25lLFxuKyAgICAgICAgICAgICAgICBpb2N0bDogTm9uZSxcbisgICAgICAgICAgICAgICAgY29tcGF0X2lvY3RsOiBOb25lLFxuKyAgICAgICAgICAgICAgICBjaGVja19ldmVudHM6IE5vbmUsXG4rICAgICAgICAgICAgICAgIHVubG9ja19uYXRpdmVfY2FwYWNpdHk6IE5vbmUsXG4rICAgICAgICAgICAgICAgIGdldGdlbzogTm9uZSxcbisgICAgICAgICAgICAgICAgc2V0X3JlYWRfb25seTogTm9uZSxcbisgICAgICAgICAgICAgICAgc3dhcF9zbG90X2ZyZWVfbm90aWZ5OiBOb25lLFxuKyAgICAgICAgICAgICAgICByZXBvcnRfem9uZXM6IE5vbmUsXG4rICAgICAgICAgICAgICAgIGRldm5vZGU6IE5vbmUsXG4rICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlX2dwdF9zZWN0b3I6IE5vbmUsXG4rICAgICAgICAgICAgICAgIGdldF91bmlxdWVfaWQ6IE5vbmUsXG4rICAgICAgICAgICAgICAgIG93bmVyOiB0aGlzX21vZHVsZS5hc19wdHIoKSxcbisgICAgICAgICAgICAgICAgcHJfb3BzOiBjb3JlOjpwdHI6Om51bGxfbXV0KCksXG4rICAgICAgICAgICAgICAgIGZyZWVfZGlzazogTm9uZSxcbisgICAgICAgICAgICAgICAgcG9sbF9iaW86IE5vbmUsXG4rICAgICAgICAgICAgfSxcbisgICAgICAgICAgICBHRlBfS0VSTkVMLFxuKyAgICAgICAgKT87XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IGBnZW5kaXNrYCBpcyBhIHZhbGlkIHBvaW50ZXIgYXMgd2UgaW5pdGlhbGl6ZWQgaXQgYWJvdmUuXG4rICAgICAgICB1bnNhZmUgeyAoKmdlbmRpc2spLmZvcHMgPSBjb3JlOjpwdHI6OmZyb21fcmVmKFx1MDAyNipmb3BzKSB9O1xuIFxuICAgICAgICAgbGV0IGNsZWFudXBfZmFpbHVyZSA9IFNjb3BlR3VhcmQ6Om5ld193aXRoX2RhdGEoKGdlbmRpc2ssIGRhdGEpLCB8KGdlbmRpc2ssIGRhdGEpfCB7XG4gICAgICAgICAgICAgLy8gU0FGRVRZOiBgZ2VuZGlza2AgY2FtZSBmcm9tIGBfX2Jsa19tcV9hbGxvY19kaXNrKClgIGFib3ZlIGFuZFxuQEAgLTE5Myw2ICsxOTksNyBAQCBwdWIgZm4gYnVpbGRcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlKFxuICAgICAgICAgLy8gYF9fYmxrX21xX2FsbG9jX2Rpc2tgIGFib3ZlLlxuICAgICAgICAgT2soR2VuRGlzayB7XG4gICAgICAgICAgICAgX3RhZ3NldDogdGFnc2V0LFxuKyAgICAgICAgICAgIF9mb3BzOiBmb3BzLFxuICAgICAgICAgICAgIGdlbmRpc2ssXG4gICAgICAgICB9KVxuICAgICB9XG5AQCAtMjA2LDggKzIxMywxMSBAQCBwdWIgZm4gYnVpbGRcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlKFxuIC8vLyAgLSBgZ2VuZGlza2Agd2FzIGFkZGVkIHRvIHRoZSBWRlMgdGhyb3VnaCBhIGNhbGwgdG9cbiAvLy8gICAgYGJpbmRpbmdzOjpkZXZpY2VfYWRkX2Rpc2tgLlxuIC8vLyAgLSBgc2VsZi5nZW5kaXNrLnF1ZXVlLnF1ZXVlZGF0YWAgaXMgaW5pdGlhbGl6ZWQgYnkgYSBjYWxsIHRvIGBGb3JlaWduT3duYWJsZTo6aW50b19mb3JlaWduYC5cbisvLy8gIC0gYHNlbGYuX2ZvcHNgIHN0b3JlcyB0aGUgW2BiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgXSBwb2ludGVkIHRvIGJ5XG4rLy8vICAgIGBnZW5kaXNrLmZvcHNgLlxuIHB1YiBzdHJ1Y3QgR2VuRGlza1x1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2Uge1xuICAgICBfdGFnc2V0OiBBcmNcdTAwM2NUYWdTZXRcdTAwM2NUXHUwMDNlXHUwMDNlLFxuKyAgICBfZm9wczogS0JveFx1MDAzY2JpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9uc1x1MDAzZSxcbiAgICAgZ2VuZGlzazogKm11dCBiaW5kaW5nczo6Z2VuZGlzayxcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMToyODozNS4xODM5OTMwODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjY2NDk5NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBCbG9jayBEZXZpY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyBsaWtlIHdlJ3JlIG1vZGlmeWluZyB0aGUgUnVzdCBiaW5kaW5ncyBmb3IgdGhlIGJsb2NrIGxheWVyLCBzcGVjaWZpY2FsbHkgYGdlbl9kaXNrLnJzYCBhbmQgdGhlIGBybnVsbGAgZHJpdmVyLiBUaGUgY29yZSBvZiBpdCByZXZvbHZlcyBhcm91bmQgYWRkaW5nIGEgYHRoaXNfbW9kdWxlYCBhcmd1bWVudCB0byBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkKClgIGFuZCB1c2luZyBpdCB0byBzZXQgdGhlIGBvd25lcmAgZmllbGQgd2l0aGluIGBibG9ja19kZXZpY2Vfb3BlcmF0aW9uc2AuIEFkZGl0aW9uYWxseSwgdGhleSd2ZSBzd2l0Y2hlZCBgZm9wc2AgZnJvbSBhIHN0YXRpYyBjb25zdGFudCB0byBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBgS0JveGAsIHdoaWNoIGlzIHRoZW4gc3RvcmVkIHdpdGhpbiBgR2VuRGlza2AuXG5cbkltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcsIFwiSXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBvciBqdXN0IHJlZmFjdG9yaW5nP1wiIFNldHRpbmcgdGhlIGBvd25lcmAgdG8gdGhlIG1vZHVsZSBwb2ludGVyIGRlZmluaXRlbHkgYWZmZWN0cyBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGR1cmluZyBkZXZpY2Ugb3Blbi9jbG9zZSBvcGVyYXRpb25zLiBUaGF04oCZcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBubyBkb3VidC4gVGhlIGR5bmFtaWMgYWxsb2NhdGlvbiBvZiBgZm9wc2AgdXNpbmcgYEtCb3g6Om5ld2AgaXMgYWxzbyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5Ob3csIHRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBcIklzIHRoaXMgZnV6ei13b3J0aHk/XCIgRnV6emluZyBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIG9mdGVuIHRyaWNreSwgYnV0IHRoZSBvcGVuL2Nsb3NlIGJlaGF2aW9yIG9mIHRoZSBibG9jayBkZXZpY2UgaXMgZGVmaW5pdGVseSBpbXBhY3RlZCBieSB0aGlzLiBJdCdzIGEgc3VidGxlIGNoYW5nZSwgYnV0IHBvdGVudGlhbGx5IGNyaXRpY2FsLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgcGF0Y2ggdGhhdCBtYWtlIGl0IGZ1enotd29ydGh5LlxuXG5UaGUgbWVhdCBvZiB0aGUgY2hhbmdlcyBhcmUgd2l0aGluIHRoZSBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCBmdW5jdGlvbi4gU28sIGlzIHRoZSBgcm51bGxgIGRyaXZlciBldmVuIHJlYWNoYWJsZT8gSSBrbm93IGBybnVsbGAgaXMgYSBSdXN0LWJhc2VkIG51bGwgYmxvY2sgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlnIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBkcml2ZXIuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBwcm9iYWJseSB1bmRlciBgZHJpdmVycy9ibG9jay9ybnVsbC9gIG9yIGBkcml2ZXJzL2Jsb2NrL2AuIEtub3dpbmcgaWYgYHJudWxsYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIHdoYXQgY29uZmlncyBhcmUgbmVlZGVkLCB3aWxsIGRpY3RhdGUgaG93IGVhc3kgaXQgaXMgdG8gdGFyZ2V0IHRoaXMgY2hhbmdlIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODUzLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjg6NDEuNDUwNDk1MDIxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NzAxNDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJudWxsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZz0xOT1zb3VyY2UgXFxcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MjA6c291cmNlIFxcXCJkcml2ZXJzL2Jsb2NrL3JudWxsL0tjb25maWdcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTIxLVxcbi0tXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfQkxLX0RFVl9OVUxMX0JMSylcXHQrPSBudWxsX2Jsay9cXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19CTEtfREVWX1JVU1RfTlVMTCkgKz0gcm51bGwvXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zOS1cXG4tLVxcbmRyaXZlcnMvYmxvY2svcm51bGwvTWFrZWZpbGUtMS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSArPSBybnVsbF9tb2Qub1xcbmRyaXZlcnMvYmxvY2svcm51bGwvTWFrZWZpbGU6MzpybnVsbF9tb2QteSA6PSBybnVsbC5vXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE2PXB1YihjcmF0ZSkgZm4gc3Vic3lzdGVtKCkgLVxcdTAwM2UgaW1wbCBQaW5Jbml0XFx1MDAzY2tlcm5lbDo6Y29uZmlnZnM6OlN1YnN5c3RlbVxcdTAwM2NDb25maWdcXHUwMDNlLCBFcnJvclxcdTAwM2Uge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0yNS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzOjI2OiAgICBrZXJuZWw6OmNvbmZpZ2ZzOjpTdWJzeXN0ZW06Om5ldyhjXFxcInJudWxsXFxcIiwgaXRlbV90eXBlLCB0cnlfcGluX2luaXQhKENvbmZpZyB7fSkpXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0yNy19XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTIyLSAgICB0eXBlOiBOdWxsQmxrTW9kdWxlLFxcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6MjM6ICAgIG5hbWU6IFxcXCJybnVsbF9tb2RcXFwiLFxcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtMjQtICAgIGF1dGhvcnM6IFtcXFwiQW5kcmVhcyBIaW5kYm9yZ1xcXCJdLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMToyODo0MS41MjkyMDA2NjZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUxMTUzMDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMYCBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBDT05GSUdfQkxLX0RFVl9SVVNUX05VTExgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhpcyBvcHRpb24gY29udHJvbHMuIEkgbmVlZCB0byBzZWUgd2hhdCBgZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnYCBkZWZpbmVzLiBXaGF0IGRlcGVuZGVuY2llcyBkb2VzIGl0IGhhdmU/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgZmVhdHVyZT8gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHB1cnBvc2UgYW5kIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFwicm51bGxcIiBibG9jayBkZXZpY2Ug4oCTIGlzIGl0IGEgdGVzdCBkZXZpY2UsIGEgc3R1Yiwgb3Igc29tZXRoaW5nIG1vcmUgc3Vic3RhbnRpYWw/IEtub3dpbmcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBicm9hZGVyIGJsb2NrIGRldmljZSBzdWJzeXN0ZW0gaXMgY3J1Y2lhbCBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMgb3IgcHJvdmlkZSBhbnkgYWR2aWNlIHJlbGF0ZWQgdG8gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZSByZXZlYWxzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5ODgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMToyODo0NC43ODAzNTYxNjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDYwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUnVzdCBudWxsIGJsb2NrIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgQkxLX0RFVl9SVVNUX05VTExcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJSdXN0IG51bGwgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXFxcIlxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBSVVNUIFxcdTAwMjZcXHUwMDI2IENPTkZJR0ZTX0ZTXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIFRoaXMgaXMgdGhlIFJ1c3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIG51bGwgYmxvY2sgZHJpdmVyLiBMaWtlXFxuICAxMDpcXHRcXHQgIHRoZSBDIHZlcnNpb24sIHRoZSBkcml2ZXIgYWxsb3dzIHRoZSB1c2VyIHRvIGNyZWF0ZSB2aXJ1dGFsIGJsb2NrXFxuICAxMTpcXHRcXHQgIGRldmljZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB2aWEgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjg6NDQuNzgwNTA0NTU5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc1MjcyNDI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIEFzc2Vzc21lbnQgb2YgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbiBSdXN0IGlzIGFib3V0IGhvdyBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCBoYW5kbGVzIHRoaW5ncy4gSXQgc2VlbXMgdG8gYmUgZHluYW1pY2FsbHkgYWxsb2NhdGluZyBgZm9wc2AgYW5kIHNldHRpbmcgdGhlIGBvd25lcmAgZmllbGQuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJJcyB0aGlzIGZ1enphYmxlP1wiIFRoZSBjaGFuZ2Ugc2VlbXMgc21hbGwgYXQgZmlyc3QgZ2xhbmNlLCBtb3N0bHkgZGVhbGluZyB3aXRoIG1vZHVsZSByZWZjb3VudGluZyBhbmQgZHluYW1pYyBhbGxvY2F0aW9uIG9mIGBmb3BzYC4gVGhlbiBJIHJlYWxpemUgdGhlIGltcGxpY2F0aW9uIG9mIHRoZSBkeW5hbWljIGFsbG9jYXRpb24gdXNpbmcgYEtCb3hgIGFuZCBzdG9yaW5nIGl0IHdpdGhpbiBgR2VuRGlza2AuICBUaGF0IG1lYW5zIGBmb3BzYCBnZXRzIGZyZWVkIHdoZW4gYEdlbkRpc2tgIGdvZXMgYXdheS4gIFRoaXMgbWFrZXMgbWUgcGF1c2U6IFwiSXMgdGhpcyBzYWZlP1wiIEkgbmVlZCB0byBjb25zaWRlciBpZiB0aGUgYmxvY2sgbGF5ZXIgbWlnaHQgc3RpbGwgaG9sZCBhIHJlZmVyZW5jZSwgcGFydGljdWxhcmx5IGlmIHRoZSBkaXNrIGlzbid0IGZ1bGx5IGRlc3Ryb3llZC4gIEJ1dCB0aGVuIEkgcmVjYWxsIHRoYXQgYEdlbkRpc2tgICppcyogZHJvcHBlZCB3aGVuIHRoZSBkaXNrIGlzIHJlbW92ZWQuXG5cblNpbmNlIGBmb3BzYCBpcyBub3cgZHluYW1pY2FsbHkgYWxsb2NhdGVkLCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gQnV0IGFnYWluLCB0aGUgcXVlc3Rpb24gcmVtYWluczogQ2FuIHRoaXMgYmUgZnV6emVkIGVmZmVjdGl2ZWx5PyBUaGUgcGF0Y2ggaXMgcHJpbWFyaWx5IGFib3V0IHBhc3NpbmcgYHRoaXNfbW9kdWxlYCBhbmQgdGhlIGFsbG9jYXRpb24gb2YgYGZvcHNgLiBUaGVyZSdzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgY29tcGxleCBsb2dpYy5cblxuVGhlbiBJIHJlbWluZCBteXNlbGYgb2YgdGhlIFwiV29ydGhGdXp6aW5nXCIgY3JpdGVyaWE6IGFtIEkgZGVhbGluZyB3aXRoIGRvY3VtZW50YXRpb24sIGRlY29yYXRpdmUgbG9nZ2luZywgbnVtZXJpYyBjb25zdGFudHMsIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgc3BlY2lhbCBoYXJkd2FyZSwgb3IgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcz8gTm8uIFRoaXMgY2xlYXJseSBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byB0aGUgUnVzdCBibG9jayBsYXllciBiaW5kaW5ncy4gSSBjYW4gZXhlY3V0ZSB0aGlzIGJ5IGxvYWRpbmcgYHJudWxsYCBhbmQgY3JlYXRpbmcgYSBkZXZpY2UgdmlhIGNvbmZpZ2ZzLiBTbyBiYXNlZCBvbiBteSBhc3Nlc3NtZW50IGFuZCB0aGUgY3JpdGVyaWEsIGl0J3MgZGVmaW5pdGVseSBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuTm93LCBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBgcm51bGxgIGlzIHRoZSBvbmx5IHVzZXIgb2YgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAuIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgdXNlcnMgb2YgdGhpcyBtZXRob2QgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MTAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMToyODo1Mi41MzMyMzIxMzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NjIyMjI5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJHZW5EaXNrQnVpbGRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy00LXVzZSBrZXJuZWw6OntcXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzOjU6ICAgIGJsb2NrOjptcTo6Z2VuX2Rpc2s6OntHZW5EaXNrLCBHZW5EaXNrQnVpbGRlcn0sXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy02LSAgICBjb25maWdmczo6e3NlbGYsIEF0dHJpYnV0ZU9wZXJhdGlvbnN9LFxcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycz0xNzc9ICAgIGZuIHN0b3JlKHRoaXM6IFxcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0xODQtXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoxODU6ICAgICAgICBHZW5EaXNrQnVpbGRlcjo6dmFsaWRhdGVfYmxvY2tfc2l6ZSh2YWx1ZSk/O1xcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMTg2LSAgICAgICAgdGhpcy5kYXRhLmxvY2soKS5ibG9ja19zaXplID0gdmFsdWU7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzPTQ4PSAgICBmbiBuZXcoXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTU5LVxcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6NjA6ICAgICAgICBnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6Om5ldygpXFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy02MS0gICAgICAgICAgICAuY2FwYWNpdHlfc2VjdG9ycyhjYXBhY2l0eV9taWIgXFx1MDAzY1xcdTAwM2MgKDIwIC0gYmxvY2s6OlNFQ1RPUl9TSElGVCkpXFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5ycy05LS8vISAtIENyZWF0ZSBhIFtgVGFnU2V0XFx1MDAzY1RcXHUwMDNlYF0uXFxucnVzdC9rZXJuZWwvYmxvY2svbXEucnM6MTA6Ly8hIC0gQ3JlYXRlIGEgW2BHZW5EaXNrXFx1MDAzY1RcXHUwMDNlYF0sIHZpYSB0aGUgW2BHZW5EaXNrQnVpbGRlcmBdLlxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzOjExOi8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSwgcGFzc2luZyBpblxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzLTEyLS8vISAgIHRoZSBkcml2ZXIncyBbYFRoaXNNb2R1bGVgXSwgdGhlIGRpc2sgbmFtZSwgdGhlIGBUYWdTZXRgLCBhbmQgcXVldWUgZGF0YS5cXG4tLVxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzLTUyLS8vISBbYEdlbkRpc2tcXHUwMDNjVFxcdTAwM2VgXTogZ2VuX2Rpc2s6OkdlbkRpc2tcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5yczo1MzovLyEgW2BHZW5EaXNrQnVpbGRlcmBdOiBnZW5fZGlzazo6R2VuRGlza0J1aWxkZXJcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5yczo1NDovLyEgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXTogZ2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZFxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzLTU1LS8vIVxcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEucnMtOTEtLy8hICMgICAgIHVuc2FmZSB7IFRoaXNNb2R1bGU6OmZyb21fcHRyKGNvcmU6OnB0cjo6bnVsbF9tdXQoKSkgfTtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5yczo5MjovLyEgbGV0IG11dCBkaXNrID0gZ2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpuZXcoKVxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzLTkzLS8vISAgICAgLmNhcGFjaXR5X3NlY3RvcnMoNDA5NilcXG4tLVxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTIyLS8vLyBVc2UgdGhpcyBzdHJ1Y3QgdG8gY29uZmlndXJlIGFuZCBhZGQgbmV3IFtgR2VuRGlza2BdIHRvIHRoZSBWRlMuXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MjM6cHViIHN0cnVjdCBHZW5EaXNrQnVpbGRlciB7XFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjQtICAgIHJvdGF0aW9uYWw6IGJvb2wsXFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0yOS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczozMDppbXBsIERlZmF1bHQgZm9yIEdlbkRpc2tCdWlsZGVyIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0zMS0gICAgZm4gZGVmYXVsdCgpIC1cXHUwMDNlIFNlbGYge1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDAtXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6NDE6aW1wbCBHZW5EaXNrQnVpbGRlciB7XFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDItICAgIC8vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2UuXFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycz0yMjk9ICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0yNDUtXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MjQ2OiAgICAgICAgLy8gU0FGRVRZOiBgcXVldWUucXVldWVkYXRhYCB3YXMgY3JlYXRlZCBieSBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCB3aXRoXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjQ3LSAgICAgICAgLy8gYSBjYWxsIHRvIGBGb3JlaWduT3duYWJsZTo6aW50b19mb3JlaWduYCB0byBjcmVhdGUgYHF1ZXVlZGF0YWAuXFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzPTY4PWltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgT3BlcmF0aW9uc1ZUYWJsZVxcdTAwM2NUXFx1MDAzZSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzLTEwNi1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzOjEwNzogICAgICAgIC8vIFNBRkVUWTogYHF1ZXVlLnF1ZXVlZGF0YWAgd2FzIGNyZWF0ZWQgYnkgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgd2l0aFxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL29wZXJhdGlvbnMucnMtMTA4LSAgICAgICAgLy8gYSBjYWxsIHRvIGBGb3JlaWduT3duYWJsZTo6aW50b19mb3JlaWduYCB0byBjcmVhdGUgYHF1ZXVlZGF0YWAuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIxOjI4OjU0LjIyOTQ1ODgzOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTYxNDU2NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBybnVsbCBQYXRjaCBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGNlbnRyYWwgY2hhbmdlIGlzIHRvIGBHZW5EaXNrQnVpbGRlcjo6YnVpbGRgIHdpdGhpbiBgcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNgLiAgVGhpcyBgYnVpbGRgIGZ1bmN0aW9uIGlzIGNsZWFybHkgYW4gaW1wb3J0YW50IEFQSSBlbnRyeXBvaW50LCBidXQgaXMgaXQgdGhlICpiZXN0KiBzeW1ib2wgdG8gdGFyZ2V0IGZvciBzeXpib3Q/ICBJIGhhdmUgdG8gcmVtZW1iZXIgdGhhdCBSdXN0IGZ1bmN0aW9uIG5hbWVzIGFyZSBtYW5nbGVkLCBzbyBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdC5cblxuSG93ZXZlciwgU3l6Ym90IGlzIHVzdWFsbHkgcHJldHR5IGdvb2QgYWJvdXQgYWNjZXB0aW5nIHVubWFuZ2xlZCBSdXN0IG5hbWVzIGlmIHRoZXkncmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gIFdlIGNvdWxkIGFsc28gZ28gd2l0aCB0aGUgQyBmdW5jdGlvbnMgaXQgY2FsbHMsIG9yIGp1c3Qgc3RpY2sgd2l0aCB0aGUgdW5tYW5nbGVkIFJ1c3QgZnVuY3Rpb24gbmFtZS4gIEFoLCB3YWl0IGEgc2Vjb25kISBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCBpcyBnZW5lcmljLCBpc24ndCBpdD8gTGV0J3MgY2hlY2suLi4gWWVwLCBpdCdzIGBwdWIgZm4gYnVpbGRcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlKHNlbGYsIHRoaXNfbW9kdWxlOiBcdTAwMjYnc3RhdGljIFRoaXNNb2R1bGUsIC4uLilgLlxuXG5TaW5jZSBpdCdzIGdlbmVyaWMsIGBidWlsZGAgaXMgZ29pbmcgdG8gYmUgbW9ub21vcnBoaXplZCwgc3BlY2lmaWNhbGx5IGZvciB0aGUgYHJudWxsYCBjYXNlLiAgU28sIGZvciBgcm51bGxgLCBpdCdsbCBiZSBzb21ldGhpbmcgbGlrZSBga2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGRcdTAwM2NybnVsbDo6TnVsbEJsa0RldmljZVx1MDAzZWAuICBCdXQgdGhhdCBtZWFucywgdGhlIGFjdHVhbCBjYWxsIHNpdGUgaW4gYHJudWxsYCBtaWdodCBiZSBiZXR0ZXIgdGhhbiB0aGlzIG1vcmUgY29tcGxpY2F0ZWQgbWFuZ2xlZCBmdW5jdGlvbiBuYW1lLlxuXG5JdCdzIHByb2JhYmx5IHNtYXJ0ZXIgdG8gZm9jdXMgb24gdGhlIGBybnVsbGAgZnVuY3Rpb24gdGhhdCAqY2FsbHMqIGBHZW5EaXNrQnVpbGRlcjo6YnVpbGRgLiAgQWgtaGEhICBUaGF0J3MgbGlrZWx5IHRvIGJlIGBybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3YCwgd2hpY2ggc2hvdWxkIGJlIGEgY2xlYW5lciB0YXJnZXQuICBJJ2xsIGp1c3QgZG91YmxlLWNoZWNrIGluIGBkcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzYCB0byBtYWtlIHN1cmUgbXkgaW50dWl0aW9uIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NzUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MDAuMjI1NjA1OTY4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODg3NDQ3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbiBuZXdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9ybnVsbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycz00Nz1pbXBsIE51bGxCbGtEZXZpY2Uge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6NDg6ICAgIGZuIG5ldyhcXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTQ5LSAgICAgICAgdGhpc19tb2R1bGU6IFxcdTAwMjYnc3RhdGljIFRoaXNNb2R1bGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIxOjI5OjAwLjI3NDQ4NzM3NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjkyMjA4MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBPcmlnaW5zIG9mIGEgTnVsbCBCbG9jayBEZXZpY2UgQ3JlYXRpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYE51bGxCbGtEZXZpY2U6Om5ld2AgdGhpbmcgaXMgYmVpbmcgaW52b2tlZC4gSXQgZmVlbHMgbGlrZSBJJ3ZlIGVuY291bnRlcmVkIHNvbWUgbWFuZ2xlZCBuYW1pbmcgY29udmVudGlvbiwgb3IgcGVyaGFwcyB0aGVyZSdzIGEgc2ltcGxlciBhbHRlcm5hdGl2ZSBsaWtlIGBybnVsbF9tb2RfaW5pdGAgSSBzaG91bGQgYmUgY29uc2lkZXJpbmcuIFdoZXJlJ3MgdGhpcyBjb25zdHJ1Y3RvciBiZWluZyB1c2VkPyBBaGEsIGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgZnJvbSB3aXRoaW4gYGNvbmZpZ2ZzLnJzYCwgc3BlY2lmaWNhbGx5IHRoZSBgc3RvcmVgIGZ1bmN0aW9uLiBUaGF0IGdpdmVzIG1lIGEgc3BlY2lmaWMgbG9jYXRpb24gdG8gY2hlY2suIEFscmlnaHQsIHRpbWUgdG8gZ28gc3BlbHVua2luZyBpbiBgZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc2AuIExldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjM1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MDMuNTY2Njk3NzA1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTg4MTIxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbiBzdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3JudWxsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTEyOT1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXFx1MDAzYzBcXHUwMDNlIGZvciBEZXZpY2VDb25maWcge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0xNDMtXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoxNDQ6ICAgIGZuIHN0b3JlKHRoaXM6IFxcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMTQ1LSAgICAgICAgbGV0IHBvd2VyX29wID0ga3N0cnRvYm9vbF9ieXRlcyhwYWdlKT87XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE2OD1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXFx1MDAzYzFcXHUwMDNlIGZvciBEZXZpY2VDb25maWcge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0xNzYtXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoxNzc6ICAgIGZuIHN0b3JlKHRoaXM6IFxcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMTc4LSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM9MTkyPWltcGwgY29uZmlnZnM6OkF0dHJpYnV0ZU9wZXJhdGlvbnNcXHUwMDNjMlxcdTAwM2UgZm9yIERldmljZUNvbmZpZyB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTIwNi1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzOjIwNzogICAgZm4gc3RvcmUodGhpczogXFx1MDAyNkRldmljZUNvbmZpZywgcGFnZTogXFx1MDAyNlt1OF0pIC1cXHUwMDNlIFJlc3VsdCB7XFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0yMDgtICAgICAgICBpZiB0aGlzLmRhdGEubG9jaygpLnBvd2VyZWQge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycz0yMTk9aW1wbCBjb25maWdmczo6QXR0cmlidXRlT3BlcmF0aW9uc1xcdTAwM2MzXFx1MDAzZSBmb3IgRGV2aWNlQ29uZmlnIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjI3LVxcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6MjI4OiAgICBmbiBzdG9yZSh0aGlzOiBcXHUwMDI2RGV2aWNlQ29uZmlnLCBwYWdlOiBcXHUwMDI2W3U4XSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTIyOS0gICAgICAgIGlmIHRoaXMuZGF0YS5sb2NrKCkucG93ZXJlZCB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTI0Mj1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXFx1MDAzYzRcXHUwMDNlIGZvciBEZXZpY2VDb25maWcge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0yNTAtXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoyNTE6ICAgIGZuIHN0b3JlKHRoaXM6IFxcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjUyLSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MDMuNjEyNTgzNTYyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTg4MTQ0ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGlzc2VjdGluZyB0aGUgRGlzayBDcmVhdGlvbiBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBwaW5wb2ludCB3aGVyZSB0aGUgYWN0dWFsIGJsb2NrIGRldmljZSBjcmVhdGlvbiBoYXBwZW5zIHdpdGhpbiB0aGlzIFJ1c3Qga2VybmVsIGNvZGUsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgY2hhbmdlcyBtYWRlIGJ5IHRoZSBwYXRjaC4gVGhlIGluaXRpYWwgdGhvdWdodCBwb2ludHMgdG8gdGhlIGBzdG9yZWAgZnVuY3Rpb24gZm9yIGBBdHRyaWJ1dGVPcGVyYXRpb25zXHUwMDNjMFx1MDAzZWAgd2hlcmUgYE51bGxCbGtEZXZpY2U6Om5ld2AgaXMgaW52b2tlZC4gQnV0IHdhaXQsIGBBdHRyaWJ1dGVPcGVyYXRpb25zYCBpcyBhIHRyYWl0LCBpc24ndCBpdD8gVGhhdCBtZWFucyBgc3RvcmVgIG1pZ2h0IGJlIGEgdGh1bmssIGEgd3JhcHBlci4gSSBuZWVkIHRvIGRpZyBkZWVwZXIuXG5cbklmIEknbSBsYXNlci1mb2N1c2VkIG9uIHRoZSBibG9jayBsYXllciBkaXNrIGNyZWF0aW9uIGl0c2VsZiwgdGhlIGNhbGxzIHRvIGBfX2Jsa19tcV9hbGxvY19kaXNrYCBvciBgZGV2aWNlX2FkZF9kaXNrYCB3aXRoaW4gYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgbG9vayBwcm9taXNpbmcuIEhvd2V2ZXIsIHRob3NlIGFyZSBwcmV0dHkgZ2VuZXJpYyBibG9jayBsYXllciBmdW5jdGlvbnMsIHNvIHRoZXkgbWlnaHQgbm90IGltbWVkaWF0ZWx5IHJldmVhbCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBwYXRjaCdzIGltcGFjdC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAuIFRoYXQncyB3aGVyZSB0aGUga2V5IGxpZXMhIE5vdywgaXMgdGhlcmUgYW55dGhpbmcgKnNwZWNpZmljKiB0byB0aGlzIGBHZW5EaXNrQnVpbGRlcmAgd2l0aGluIGBydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc2A/IEkgbmVlZCB0byBjaGVjayB0aGUgZmlsZS4gTGV0J3MgZ2V0IHRvIGBydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc2AgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwODIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MDcuOTcxNDAwMDcxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzg1ODA0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbiBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwicnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM9MzA9aW1wbCBEZWZhdWx0IGZvciBHZW5EaXNrQnVpbGRlciB7XFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MzE6ICAgIGZuIGRlZmF1bHQoKSAtXFx1MDAzZSBTZWxmIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0zMi0gICAgICAgIFNlbGYge1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM9NDE9aW1wbCBHZW5EaXNrQnVpbGRlciB7XFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDItICAgIC8vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2UuXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6NDM6ICAgIHB1YiBmbiBuZXcoKSAtXFx1MDAzZSBTZWxmIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy00NC0gICAgICAgIFNlbGY6OmRlZmF1bHQoKVxcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDctICAgIC8vLyBTZXQgdGhlIHJvdGF0aW9uYWwgbWVkaWEgYXR0cmlidXRlIGZvciB0aGUgZGV2aWNlIHRvIGJlIGJ1aWx0LlxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjQ4OiAgICBwdWIgZm4gcm90YXRpb25hbChtdXQgc2VsZiwgcm90YXRpb25hbDogYm9vbCkgLVxcdTAwM2UgU2VsZiB7XFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDktICAgICAgICBzZWxmLnJvdGF0aW9uYWwgPSByb3RhdGlvbmFsO1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNTQtICAgIC8vLyBhbmQgdGhhdCBpdCBpcyBhIHBvd2VyIG9mIHR3by5cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczo1NTogICAgcHViIGZuIHZhbGlkYXRlX2Jsb2NrX3NpemUoc2l6ZTogdTMyKSAtXFx1MDAzZSBSZXN1bHQge1xcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTU2LSAgICAgICAgaWYgISg1MTIuLj1iaW5kaW5nczo6UEFHRV9TSVpFIGFzIHUzMikuY29udGFpbnMoXFx1MDAyNnNpemUpIHx8ICFzaXplLmlzX3Bvd2VyX29mX3R3bygpIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTY5LSAgICAvLy8gdHlwaWNhbGx5IDQwOTYgYnl0ZXMuXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6NzA6ICAgIHB1YiBmbiBsb2dpY2FsX2Jsb2NrX3NpemUobXV0IHNlbGYsIGJsb2NrX3NpemU6IHUzMikgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY1NlbGZcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy03MS0gICAgICAgIFNlbGY6OnZhbGlkYXRlX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/O1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtODQtICAgIC8vLyB0aGF0IGV4cG9zZSBhIDUxMiBieXRlIGxvZ2ljYWwgYmxvY2sgc2l6ZSB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbS5cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczo4NTogICAgcHViIGZuIHBoeXNpY2FsX2Jsb2NrX3NpemUobXV0IHNlbGYsIGJsb2NrX3NpemU6IHUzMikgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY1NlbGZcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy04Ni0gICAgICAgIFNlbGY6OnZhbGlkYXRlX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/O1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtOTEtICAgIC8vLyBTZXQgdGhlIGNhcGFjaXR5IG9mIHRoZSBkZXZpY2UgdG8gYmUgYnVpbHQsIGluIHNlY3RvcnMgKDUxMiBieXRlcykuXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6OTI6ICAgIHB1YiBmbiBjYXBhY2l0eV9zZWN0b3JzKG11dCBzZWxmLCBjYXBhY2l0eTogdTY0KSAtXFx1MDAzZSBTZWxmIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy05My0gICAgICAgIHNlbGYuY2FwYWNpdHlfc2VjdG9ycyA9IGNhcGFjaXR5O1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMTAwLSAgICAvLy8gdGhlIGRpc2suXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MTAxOiAgICBwdWIgZm4gYnVpbGRcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UoXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMTAyLSAgICAgICAgc2VsZixcXG4tLVxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzPTIyOD1pbXBsXFx1MDAzY1Q6IE9wZXJhdGlvbnNcXHUwMDNlIERyb3AgZm9yIEdlbkRpc2tcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjIyOTogICAgZm4gZHJvcChcXHUwMDI2bXV0IHNlbGYpIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0yMzAtICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuZ2VuZGlza2AgcG9pbnRzIHRvIGEgdmFsaWRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MDguMDE5MjYyNjM4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTE3NzM1ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgYnVpbGRgIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgYGJ1aWxkYCBmdW5jdGlvbiwgd2hpY2ggaXMgYSBrZXkgYXJlYSB0byB1bmRlcnN0YW5kLiBJIGNvdWxkIHplcm8gaW4gb24gYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgZGlyZWN0bHksIG9yIG1heWJlIGV2ZW4gbG9vayBhdCB0aGUgYHJudWxsYCBmdW5jdGlvbnMgYXMgdGhlIHBhdGNoIGlzIGZvY3VzZWQgaGVyZS4gQWgsIHJpZ2h0LCBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCBpcyBhIGdlbmVyaWMgZnVuY3Rpb24sIHNvIGl0J3MgaW5zdGFudGlhdGVkIHNwZWNpZmljYWxseS4gSW4gdGhpcyBjYXNlLCBpdCdsbCBiZWNvbWUgYGtlcm5lbDo6YmxvY2s6Om1xOjpnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6OmJ1aWxkXHUwMDNjcm51bGw6Ok51bGxCbGtEZXZpY2VcdTAwM2VgLiBTbywgbWF5YmUgZm9jdXNpbmcgb24gdGhlIGBybnVsbGAgZnVuY3Rpb25zIGRpcmVjdGx5IGlzIHRoZSBiZXN0IGFwcHJvYWNoLiBUaGluZ3MgbGlrZSBgcm51bGxfbW9kX2luaXRgLCBpZiBpdCBleGlzdHMsIG9yIHRhcmdldGluZyBga2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGRgIHNob3VsZCB3b3JrLCBhc3N1bWluZyBzeXpib3QgY2FuIGFjdHVhbGx5IG1hdGNoIHRoZW0uXG5cbkhhbmcgb24uLi5zeXpib3QgdXNlcyBgb2JqZHVtcGAgdG8gaWRlbnRpZnkgc3ltYm9scy4gSWYgdGhlIHN5bWJvbHMgYXJlIG1hbmdsZWQsIHRoZW4gbWF0Y2hpbmcgdGhlbSBnZXRzIHNpZ25pZmljYW50bHkgaGFyZGVyLiBCdXQgdGhhdCBkb2VzIG9wZW4gdXAgb3RoZXIgcG9zc2liaWxpdGllcy4gSSBjb3VsZCB0cnkgdG8gc3BlY2lmeSBzb21ldGhpbmcgbGlrZSBgX19ibGtfbXFfYWxsb2NfZGlza2Agb3IgYGRldmljZV9hZGRfZGlza2AsIHNpbmNlIHRoZXkncmUgY2FsbGVkIGluc2lkZSBgYnVpbGRgLiBUaGUgcHJvYmxlbSB3aXRoIHRoYXQsIHRob3VnaCwgaXMgdGhvc2UgYXJlIG1vcmUgZ2VuZXJpYyBibG9jayBsYXllciBmdW5jdGlvbnMuXG5cbkxldCdzIGp1c3QgdGFrZSBhIGxvb2sgYW5kIHNlZSB3aGF0IHRoZSBhdmFpbGFibGUgYHJudWxsYCBmdW5jdGlvbnMgYXJlLCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoaXMgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MzcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MTMuMTMxMDM4Mzg3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ5MjcxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbiBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzPTM1PWltcGwga2VybmVsOjpJblBsYWNlTW9kdWxlIGZvciBOdWxsQmxrTW9kdWxlIHtcXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzOjM2OiAgICBmbiBpbml0KF9tb2R1bGU6IFxcdTAwMjYnc3RhdGljIFRoaXNNb2R1bGUpIC1cXHUwMDNlIGltcGwgUGluSW5pdFxcdTAwM2NTZWxmLCBFcnJvclxcdTAwM2Uge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtMzctICAgICAgICBwcl9pbmZvIShcXFwiUnVzdCBudWxsX2JsayBsb2FkZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycz00Nz1pbXBsIE51bGxCbGtEZXZpY2Uge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6NDg6ICAgIGZuIG5ldyhcXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTQ5LSAgICAgICAgdGhpc19tb2R1bGU6IFxcdTAwMjYnc3RhdGljIFRoaXNNb2R1bGUsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzPTc0PWltcGwgT3BlcmF0aW9ucyBmb3IgTnVsbEJsa0RldmljZSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTc3LSAgICAjW2lubGluZShhbHdheXMpXVxcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6Nzg6ICAgIGZuIHF1ZXVlX3JxKHF1ZXVlX2RhdGE6IFxcdTAwMjZRdWV1ZURhdGEsIHJxOiBBUmVmXFx1MDAzY21xOjpSZXF1ZXN0XFx1MDAzY1NlbGZcXHUwMDNlXFx1MDAzZSwgX2lzX2xhc3Q6IGJvb2wpIC1cXHUwMDNlIFJlc3VsdCB7XFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy03OS0gICAgICAgIG1hdGNoIHF1ZXVlX2RhdGEuaXJxX21vZGUge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy05MC1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzOjkxOiAgICBmbiBjb21taXRfcnFzKF9xdWV1ZV9kYXRhOiBcXHUwMDI2UXVldWVEYXRhKSB7fVxcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtOTItXFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yczo5MzogICAgZm4gY29tcGxldGUocnE6IEFSZWZcXHUwMDNjbXE6OlJlcXVlc3RcXHUwMDNjU2VsZlxcdTAwM2VcXHUwMDNlKSB7XFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy05NC0gICAgICAgIG1xOjpSZXF1ZXN0OjplbmRfb2socnEpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIxOjI5OjEzLjE3OTU0ODE1NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjc3MjUwNTkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFzb25pbmcgZm9yIEZ1enppbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBoZXJlIGlzIHRvIGNyYWZ0IGFuIGVmZmVjdGl2ZSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgcGF0Y2gsIGFuZCBJIG5lZWQgdG8gYmUgYXMgcHJlY2lzZSBhcyBwb3NzaWJsZS4gVGhlIHByaW1hcnkgZm9jdXMgaXMgb24gdGhlIGNoYW5nZXMgcmVsYXRlZCB0byB0aGUgUnVzdCBibG9jayBsYXllciBiaW5kaW5ncyBhbmQgdGhlIGBybnVsbGAgZHJpdmVyLlxuXG5GaXJzdCwgSSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIHRvdWNoZWQgYnkgdGhlIHBhdGNoLiBJJ20gZm9jdXNpbmcgb24gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBjcmVhdGlvbiBvZiB0aGUgYmxvY2sgZGV2aWNlLCBzcGVjaWZpY2FsbHkgYE51bGxCbGtNb2R1bGU6OmluaXRgIGFuZCBgTnVsbEJsa0RldmljZTo6bmV3YCBpbiB0aGUgUnVzdCBjb2RlLCBhbmQgYWxzbyBgRGV2aWNlQ29uZmlnOjpzdG9yZWAgaW4gdGhlIGNvbmZpZ2ZzLiBIb3dldmVyLCBJIHdhbnQgdG8gaWRlbnRpZnkgYSBtb3JlIHRhcmdldGVkIGFwcHJvYWNoIGZvciB0aGUgYEZvY3VzU3ltYm9sc2AuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgZnVuY3Rpb25zIGxpa2UgYF9fYmxrX21xX2FsbG9jX2Rpc2tgIGFuZCBgZGV2aWNlX2FkZF9kaXNrYCwgYnV0IHRob3NlIGFyZSBob3QtcGF0aCBmdW5jdGlvbnMsIG5vdCB0aGUgYmVzdCBjYW5kaWRhdGVzIGZvciBgRm9jdXNTeW1ib2xzYC5cblxuVGhpbmtpbmcgbW9yZSBwcmVjaXNlbHksIGBrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZGAgaXMgaWRlYWwuIEl0IGlzIGEgbm9uLWhvdC1wYXRoIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9uLCBpdCBpcyBvbmx5IGNhbGxlZCB3aGVuIGNyZWF0aW5nIGEgZGlzaywgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbiBmdXp6aW5nLiBJIGNvbmZpcm1lZCB0aGF0IGl0J3MgcHJlc2VudCBpbiB0aGUgbW9kaWZpZWQgY29kZSBhbmQgaXMgdGhlIGtpbmQgb2YgZnVuY3Rpb24gdGhhdCBpcyBtb3JlIGxpa2VseSB0byBiZSBoaXQgZHVyaW5nIHRoZSBwYXRjaCdzIGNvcmUgbG9naWMuIEFkZGl0aW9uYWxseSwgdGhlIHBhdGNoIG1vZGlmaWVzIGBybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3YCwgc28gSSB3aWxsIGFsc28gaW5jbHVkZSB0aGF0IHN5bWJvbCBhcyB3ZWxsLiBUaGlzIHNob3VsZCBnaXZlIHRoZSBmdXp6ZXIgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5UaGUgY29uY2VybiB3aXRoIFJ1c3Qgc3ltYm9scyBpcyB0aGVpciBtYW5nbGVkIG5hdHVyZS4gSG93ZXZlciwgc2luY2Ugd2UncmUgcHJvdmlkaW5nIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9uIG5hbWVzLCBJIHRoaW5rIGl0J3Mgd29ydGggYSBzaG90LiBJJ2xsIGluY2x1ZGUgdGhlIGZ1bGwgUnVzdCBwYXRoLCBhcyB0aGF0J3MgcHJvYmFibHkgdGhlIG1vc3QgYWNjdXJhdGUgdGhpbmcgd2UgY2FuIG9mZmVyLiBJIGNvbmZpcm1lZCB0aGF0IHRoZXJlIGFyZSBubyBkaXJlY3QgQyBiaW5kaW5ncyBvciBleHBvcnRlZCBzeW1ib2xzIGluIHRoZSBgcm51bGxgIGRyaXZlci5cblxuTmV4dCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZW5hYmxlZC4gQWZ0ZXIgcmV2aWV3aW5nIHRoZSBgS2NvbmZpZ2AgZmlsZSwgaXQgbG9va3MgbGlrZSBgQkxLX0RFVl9SVVNUX05VTExgIGlzIHRoZSBtYWluIG9uZSBhbmQgaXQgZGVwZW5kcyBvbiBgUlVTVGAgYW5kIGBDT05GSUdGU19GU2AuIFRodXMsIEkgd2lsbCBlbmFibGUgYEJMS19ERVZfUlVTVF9OVUxMYCBiZWNhdXNlIEkgYW0gZW5hYmxpbmcgYFJVU1RgIGFuZCBgQ09ORklHRlNfRlNgLlxuXG5JJ20gbWFraW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBzcGVjaWZpY2FsbHkgdGhlIFJ1c3QgYmxvY2sgbGF5ZXIsIGFuZCB0aGUgYHJudWxsYCBkcml2ZXIgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy5cblxuVGhlcmVmb3JlLCBteSBmaW5hbCBjb25maWd1cmF0aW9uIGlzOlxuXG5Db25maWdzOiBgQkxLX0RFVl9SVVNUX05VTExgXG5Gb2N1c1N5bWJvbHM6IGBrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZGAsIGBybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3YFxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQxNiwiT3V0cHV0VG9rZW5zIjoxNzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MjUuOTUyMDU2MzIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2OTE0Mjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX1JVU1RfTlVMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImtlcm5lbDo6YmxvY2s6Om1xOjpnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6OmJ1aWxkXCIsXG4gICAgXCJybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJ1c3QgYmxvY2sgbGF5ZXIgYmluZGluZ3MgdG8gZHluYW1pY2FsbHkgYWxsb2NhdGUgYGJsb2NrX2RldmljZV9vcGVyYXRpb25zYCBhbmQgc2V0IHRoZSBgb3duZXJgIGZpZWxkIHRvIHRoZSBtb2R1bGUncyBgVGhpc01vZHVsZWAgcG9pbnRlci4gVGhpcyBhZmZlY3RzIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9mIHRoZSBgZm9wc2Agc3RydWN0dXJlIGR1cmluZyBibG9jayBkZXZpY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUaGUgYHJudWxsYCBkcml2ZXIgaXMgdXBkYXRlZCB0byBwYXNzIGl0cyBtb2R1bGUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoUnVzdCBibG9jayBsYXllcikgYW5kIHRoZSBgcm51bGxgIGRyaXZlciwgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX1JVU1RfTlVMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImtlcm5lbDo6YmxvY2s6Om1xOjpnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6OmJ1aWxkXCIsXG4gICAgXCJybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJ1c3QgYmxvY2sgbGF5ZXIgYmluZGluZ3MgdG8gZHluYW1pY2FsbHkgYWxsb2NhdGUgYGJsb2NrX2RldmljZV9vcGVyYXRpb25zYCBhbmQgc2V0IHRoZSBgb3duZXJgIGZpZWxkIHRvIHRoZSBtb2R1bGUncyBgVGhpc01vZHVsZWAgcG9pbnRlci4gVGhpcyBhZmZlY3RzIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9mIHRoZSBgZm9wc2Agc3RydWN0dXJlIGR1cmluZyBibG9jayBkZXZpY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUaGUgYHJudWxsYCBkcml2ZXIgaXMgdXBkYXRlZCB0byBwYXNzIGl0cyBtb2R1bGUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoUnVzdCBibG9jayBsYXllcikgYW5kIHRoZSBgcm51bGxgIGRyaXZlciwgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowgl97h[0].run-triage(0) Phase: Succeeded StartedAt: 2026-08-05 20:35:21 +0000 UTC FinishedAt: 2026-08-05 21:29:27 +0000 UTC Input: nil Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "skip_reason": "", "targets": [ { "base": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8165a4186721a6f356c1f5abc5829582272a1c96", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_RUST_NULL" ], "series_id": "" }, "patched": { "arch": "amd64", "tree_name": "axboe", "tree_url": "https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git", "commit_hash": "8165a4186721a6f356c1f5abc5829582272a1c96", "config_name": "upstream-apparmor-kasan.config", "enable_configs": [ "BLK_DEV_RUST_NULL" ], "series_id": "123d2c9b-eb74-4bc5-9fdb-02e0e1070824" }, "track": "KASAN", "fuzz": { "focus": [ "fs" ], "focus_symbols": [ "kernel::block::mq::gen_disk::GenDiskBuilder::build", "rnull::NullBlkDevice::new" ], "corpus_urls": [ "https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db" ], "skip_cover_check": false, "bug_title_re": "" }, "retest": null } ], "trajectory": "CjwhZG9jdHlwZSBodG1sPgo8aHRtbD4KPGhlYWQ+Cgk8dGl0bGU+QUkgVHJhamVjdG9yeTwvdGl0bGU+Cgk8c3R5bGU+CgkJdGFibGUgewoJCQlib3JkZXI6IDFweCBzb2xpZCAjY2NjOwoJCQltYXJnaW46IDIwcHggNXB4OwoJCQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwoJCQl3aGl0ZS1zcGFjZTogbm93cmFwOwoJCQl0ZXh0LW92ZXJmbG93OiBlbGxpcHNpczsKCQkJb3ZlcmZsb3c6IGhpZGRlbjsKCQl9CgoJCXRhYmxlIGNhcHRpb24gewoJCQlmb250LXdlaWdodDogYm9sZDsKCQl9CgoJCXRhYmxlIHRkLCB0YWJsZSB0aCB7CgkJCXZlcnRpY2FsLWFsaWduOiB0b3A7CgkJCXBhZGRpbmc6IDJweCA4cHg7CgkJCXRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzOwoJCQlvdmVyZmxvdzogaGlkZGVuOwoJCX0KCgkJLmxpc3RfdGFibGUgdGQsIC5saXN0X3RhYmxlIHRoIHsKCQkJYm9yZGVyLWxlZnQ6IDFweCBzb2xpZCAjY2NjOwoJCX0KCgkJLmxpc3RfdGFibGUgdGggewoJCQliYWNrZ3JvdW5kOiAjRjRGNEY0OwoJCX0KCgkJLmxpc3RfdGFibGUgdHI6bnRoLWNoaWxkKDJuKSB7CgkJCWJhY2tncm91bmQ6ICNGNEY0RjQ7CgkJfQoKCQkubGlzdF90YWJsZSB0cjpob3ZlciB7CgkJCWJhY2tncm91bmQ6ICNmZmZmOTk7CgkJfQoKCQkjYWlfZGV0YWlsc19kaXYgcHJlIHsKCQkJbWFyZ2luOiAxcHg7CgkJCW1heC13aWR0aDogMTIwY2g7CgkJCXdoaXRlLXNwYWNlOiBwcmUtd3JhcDsKCQkJb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsKCQl9Cgk8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5PgoJPGgxPkFJIFRyYWplY3Rvcnk8L2gxPgoJPGJyPgoKCQoJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQk8Y2FwdGlvbj5UcmFqZWN0b3J5OiAoPGEgaHJlZj0iIyIgb25jbGljaz0idG9nZ2xlQWxsRGV0YWlscygpOyByZXR1cm4gZmFsc2U7Ij5FeHBhbmQvQ29sbGFwc2UgQWxsPC9hPik8L2NhcHRpb24+CgkJPHRoZWFkPjx0cj4KCQkJPHRoPlNlcTwvdGg+CgkJCTx0aD5UaW1lc3RhbXA8L3RoPgoJCQk8dGg+VHlwZTwvdGg+CgkJCTx0aD5OYW1lPC90aD4KCQkJPHRoPkR1cmF0aW9uPC90aD4KCQk8L3RyPjwvdGhlYWQ+CgkJPHRib2R5PgoJCQoJCTx0cj4KCQkJPHRkPjAvMDwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI4PC90ZD4KCQkJPHRkPmZsb3c8L3RkPgoJCQk8dGQ+cGF0Y2gtdHJpYWdlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfUlVTVF9OVUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGQmIzM0OywKICAgICYjMzQ7cm51bGw6Ok51bGxCbGtEZXZpY2U6Om5ldyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUnVzdCBibG9jayBsYXllciBiaW5kaW5ncyB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSBgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgIGFuZCBzZXQgdGhlIGBvd25lcmAgZmllbGQgdG8gdGhlIG1vZHVsZSYjMzk7cyBgVGhpc01vZHVsZWAgcG9pbnRlci4gVGhpcyBhZmZlY3RzIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9mIHRoZSBgZm9wc2Agc3RydWN0dXJlIGR1cmluZyBibG9jayBkZXZpY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUaGUgYHJudWxsYCBkcml2ZXIgaXMgdXBkYXRlZCB0byBwYXNzIGl0cyBtb2R1bGUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoUnVzdCBibG9jayBsYXllcikgYW5kIHRoZSBgcm51bGxgIGRyaXZlciwgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMToyODwvdGQ+CgkJCTx0ZD5hY3Rpb248L3RkPgoJCQk8dGQ+cmVhZC1wYXRjaC1kaWZmPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7UGF0Y2hEaWZmJiMzNDs6ICYjMzQ7Y29tbWl0IDYwYzZkMTA5Nzg3MjI2YmZjOTYxOWIzM2YzM2M2YWUzMTg5ZGNiZTlcbkF1dGhvcjogc3l6LWNsdXN0ZXIgXHUwMDNjdHJpYWdlQHN5emthbGxlci5jb21cdTAwM2VcbkRhdGU6ICAgV2VkIEF1ZyA1IDIxOjI4OjMyIDIwMjYgJiM0MzswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMgYi9kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzXG5pbmRleCA3YzJlYjVjMGI3MjI4Li5iYmEzMGQ1OTBmNjgxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xuQEAgLTE0Nyw2ICYjNDM7MTQ3LDcgQEAgZm4gc3RvcmUodGhpczogXHUwMDI2RGV2aWNlQ29uZmlnLCBwYWdlOiBcdTAwMjZbdThdKSAtXHUwMDNlIFJlc3VsdCB7XG4gXG4gICAgICAgICBpZiAhZ3VhcmQucG93ZXJlZCBcdTAwMjZcdTAwMjYgcG93ZXJfb3Age1xuICAgICAgICAgICAgIGd1YXJkLmRpc2sgPSBTb21lKE51bGxCbGtEZXZpY2U6Om5ldyhcbiYjNDM7ICAgICAgICAgICAgICAgIFx1MDAyNlRISVNfTU9EVUxFLFxuICAgICAgICAgICAgICAgICBcdTAwMjZndWFyZC5uYW1lLFxuICAgICAgICAgICAgICAgICBndWFyZC5ibG9ja19zaXplLFxuICAgICAgICAgICAgICAgICBndWFyZC5yb3RhdGlvbmFsLFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMgYi9kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzXG5pbmRleCAwY2E4NzE1ZmViZTgzLi40MjY1YTEzM2NiZjA3IDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yc1xuJiM0MzsmIzQzOyYjNDM7IGIvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yc1xuQEAgLTQ2LDYgJiM0Mzs0Niw3IEBAIGZuIGluaXQoX21vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMgVGhpc01vZHVsZSkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmLCBFcnJvclx1MDAzZSB7XG4gXG4gaW1wbCBOdWxsQmxrRGV2aWNlIHtcbiAgICAgZm4gbmV3KFxuJiM0MzsgICAgICAgIHRoaXNfbW9kdWxlOiBcdTAwMjYmIzM5O3N0YXRpYyBUaGlzTW9kdWxlLFxuICAgICAgICAgbmFtZTogXHUwMDI2Q1N0cixcbiAgICAgICAgIGJsb2NrX3NpemU6IHUzMixcbiAgICAgICAgIHJvdGF0aW9uYWw6IGJvb2wsXG5AQCAtNjEsNyAmIzQzOzYyLDcgQEAgZm4gbmV3KFxuICAgICAgICAgICAgIC5sb2dpY2FsX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/XG4gICAgICAgICAgICAgLnBoeXNpY2FsX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/XG4gICAgICAgICAgICAgLnJvdGF0aW9uYWwocm90YXRpb25hbClcbi0gICAgICAgICAgICAuYnVpbGQoZm10IShcJiMzNDt7fVwmIzM0OywgbmFtZS50b19zdHIoKT8pLCB0YWdzZXQsIHF1ZXVlX2RhdGEpXG4mIzQzOyAgICAgICAgICAgIC5idWlsZCh0aGlzX21vZHVsZSwgZm10IShcJiMzNDt7fVwmIzM0OywgbmFtZS50b19zdHIoKT8pLCB0YWdzZXQsIHF1ZXVlX2RhdGEpXG4gICAgIH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYmxvY2svbXEucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS5yc1xuaW5kZXggMWZkMGQ1NGRkNTQ5My4uMzM1NjFlMGY2N2FmMCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xLnJzXG4mIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS5yc1xuQEAgLTgsOCAmIzQzOzgsOCBAQFxuIC8vISAtIEltcGxlbWVudCBbYE9wZXJhdGlvbnNgXSBmb3IgYSB0eXBlIGBUYC5cbiAvLyEgLSBDcmVhdGUgYSBbYFRhZ1NldFx1MDAzY1RcdTAwM2VgXS5cbiAvLyEgLSBDcmVhdGUgYSBbYEdlbkRpc2tcdTAwM2NUXHUwMDNlYF0sIHZpYSB0aGUgW2BHZW5EaXNrQnVpbGRlcmBdLlxuLS8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSBwYXNzaW5nIGluXG4tLy8hICAgdGhlIGBUYWdTZXRgIHJlZmVyZW5jZS5cbiYjNDM7Ly8hIC0gQWRkIHRoZSBkaXNrIHRvIHRoZSBzeXN0ZW0gYnkgY2FsbGluZyBbYEdlbkRpc2tCdWlsZGVyOjpidWlsZGBdLCBwYXNzaW5nIGluXG4mIzQzOy8vISAgIHRoZSBkcml2ZXImIzM5O3MgW2BUaGlzTW9kdWxlYF0sIHRoZSBkaXNrIG5hbWUsIHRoZSBgVGFnU2V0YCwgYW5kIHF1ZXVlIGRhdGEuXG4gLy8hXG4gLy8hIFRoZSB0eXBlcyBhdmFpbGFibGUgaW4gdGhpcyBtb2R1bGUgdGhhdCBoYXZlIGRpcmVjdCBDIGNvdW50ZXJwYXJ0cyBhcmU6XG4gLy8hXG5AQCAtODYsOSAmIzQzOzg2LDEyIEBAXG4gLy8hXG4gLy8hIGxldCB0YWdzZXQ6IEFyY1x1MDAzY1RhZ1NldFx1MDAzY015QmxrRGV2aWNlXHUwMDNlXHUwMDNlID1cbiAvLyEgICAgIEFyYzo6cGluX2luaXQoVGFnU2V0OjpuZXcoMSwgMjU2LCAxKSwgZmxhZ3M6OkdGUF9LRVJORUwpPztcbiYjNDM7Ly8hICMgLy8gU0FGRVRZOiBEdW1teSBgVGhpc01vZHVsZWAgZm9yIGRvY3Rlc3QgY29tcGlsYXRpb24gb25seS5cbiYjNDM7Ly8hICMgc3RhdGljIFRISVNfTU9EVUxFOiBUaGlzTW9kdWxlID1cbiYjNDM7Ly8hICMgICAgIHVuc2FmZSB7IFRoaXNNb2R1bGU6OmZyb21fcHRyKGNvcmU6OnB0cjo6bnVsbF9tdXQoKSkgfTtcbiAvLyEgbGV0IG11dCBkaXNrID0gZ2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpuZXcoKVxuIC8vISAgICAgLmNhcGFjaXR5X3NlY3RvcnMoNDA5Nilcbi0vLyEgICAgIC5idWlsZChmbXQhKFwmIzM0O215YmxrXCYjMzQ7KSwgdGFnc2V0LCAoKSk/O1xuJiM0MzsvLyEgICAgIC5idWlsZChcdTAwMjZUSElTX01PRFVMRSwgZm10IShcJiMzNDtteWJsa1wmIzM0OyksIHRhZ3NldCwgKCkpPztcbiAvLyFcbiAvLyEgIyBPazo6XHUwMDNjKCksIGtlcm5lbDo6ZXJyb3I6OkVycm9yXHUwMDNlKCgpKVxuIC8vISBgYGBcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycyBiL3J1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzXG5pbmRleCBmYzk3ZGQ4NzM5NzQ2Li5mZjA3OTIyM2QzMWFhIDEwMDY0NFxuLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNcbiYjNDM7JiM0MzsmIzQzOyBiL3J1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzXG5AQCAtOTUsOCAmIzQzOzk1LDEyIEBAIHB1YiBmbiBjYXBhY2l0eV9zZWN0b3JzKG11dCBzZWxmLCBjYXBhY2l0eTogdTY0KSAtXHUwMDNlIFNlbGYge1xuICAgICB9XG4gXG4gICAgIC8vLyBCdWlsZCBhIG5ldyBgR2VuRGlza2AgYW5kIGFkZCBpdCB0byB0aGUgVkZTLlxuJiM0MzsgICAgLy8vXG4mIzQzOyAgICAvLy8gYHRoaXNfbW9kdWxlYCBtdXN0IGJlIHRoZSBbYFRoaXNNb2R1bGVgXSBmb3IgdGhlIGtlcm5lbCBtb2R1bGUgcmVnaXN0ZXJpbmdcbiYjNDM7ICAgIC8vLyB0aGUgZGlzay5cbiAgICAgcHViIGZuIGJ1aWxkXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZShcbiAgICAgICAgIHNlbGYsXG4mIzQzOyAgICAgICAgdGhpc19tb2R1bGU6IFx1MDAyNiYjMzk7c3RhdGljIFRoaXNNb2R1bGUsXG4gICAgICAgICBuYW1lOiBmbXQ6OkFyZ3VtZW50c1x1MDAzYyYjMzk7X1x1MDAzZSxcbiAgICAgICAgIHRhZ3NldDogQXJjXHUwMDNjVGFnU2V0XHUwMDNjVFx1MDAzZVx1MDAzZSxcbiAgICAgICAgIHF1ZXVlX2RhdGE6IFQ6OlF1ZXVlRGF0YSxcbkBAIC0xMjUsMzAgJiM0MzsxMjksMzIgQEAgcHViIGZuIGJ1aWxkXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZShcbiAgICAgICAgICAgICApXG4gICAgICAgICB9KT87XG4gXG4tICAgICAgICBjb25zdCBUQUJMRTogYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zID0gYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zIHtcbi0gICAgICAgICAgICBzdWJtaXRfYmlvOiBOb25lLFxuLSAgICAgICAgICAgIG9wZW46IE5vbmUsXG4tICAgICAgICAgICAgcmVsZWFzZTogTm9uZSxcbi0gICAgICAgICAgICBpb2N0bDogTm9uZSxcbi0gICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsXG4tICAgICAgICAgICAgY2hlY2tfZXZlbnRzOiBOb25lLFxuLSAgICAgICAgICAgIHVubG9ja19uYXRpdmVfY2FwYWNpdHk6IE5vbmUsXG4tICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLFxuLSAgICAgICAgICAgIHNldF9yZWFkX29ubHk6IE5vbmUsXG4tICAgICAgICAgICAgc3dhcF9zbG90X2ZyZWVfbm90aWZ5OiBOb25lLFxuLSAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSxcbi0gICAgICAgICAgICBkZXZub2RlOiBOb25lLFxuLSAgICAgICAgICAgIGFsdGVybmF0aXZlX2dwdF9zZWN0b3I6IE5vbmUsXG4tICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSxcbi0gICAgICAgICAgICAvLyBUT0RPOiBTZXQgdG8gYFRISVNfTU9EVUxFYC5cbi0gICAgICAgICAgICBvd25lcjogY29yZTo6cHRyOjpudWxsX211dCgpLFxuLSAgICAgICAgICAgIHByX29wczogY29yZTo6cHRyOjpudWxsX211dCgpLFxuLSAgICAgICAgICAgIGZyZWVfZGlzazogTm9uZSxcbi0gICAgICAgICAgICBwb2xsX2JpbzogTm9uZSxcbi0gICAgICAgIH07XG4tXG4tICAgICAgICAvLyBTQUZFVFk6IGBnZW5kaXNrYCBpcyBhIHZhbGlkIHBvaW50ZXIgYXMgd2UgaW5pdGlhbGl6ZWQgaXQgYWJvdmVcbi0gICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9IFx1MDAyNlRBQkxFIH07XG4mIzQzOyAgICAgICAgbGV0IGZvcHMgPSBLQm94OjpuZXcoXG4mIzQzOyAgICAgICAgICAgIGJpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7XG4mIzQzOyAgICAgICAgICAgICAgICBzdWJtaXRfYmlvOiBOb25lLFxuJiM0MzsgICAgICAgICAgICAgICAgb3BlbjogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgICAgIHJlbGVhc2U6IE5vbmUsXG4mIzQzOyAgICAgICAgICAgICAgICBpb2N0bDogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgICAgIGNvbXBhdF9pb2N0bDogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgICAgIGNoZWNrX2V2ZW50czogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgICAgIHVubG9ja19uYXRpdmVfY2FwYWNpdHk6IE5vbmUsXG4mIzQzOyAgICAgICAgICAgICAgICBnZXRnZW86IE5vbmUsXG4mIzQzOyAgICAgICAgICAgICAgICBzZXRfcmVhZF9vbmx5OiBOb25lLFxuJiM0MzsgICAgICAgICAgICAgICAgc3dhcF9zbG90X2ZyZWVfbm90aWZ5OiBOb25lLFxuJiM0MzsgICAgICAgICAgICAgICAgcmVwb3J0X3pvbmVzOiBOb25lLFxuJiM0MzsgICAgICAgICAgICAgICAgZGV2bm9kZTogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlX2dwdF9zZWN0b3I6IE5vbmUsXG4mIzQzOyAgICAgICAgICAgICAgICBnZXRfdW5pcXVlX2lkOiBOb25lLFxuJiM0MzsgICAgICAgICAgICAgICAgb3duZXI6IHRoaXNfbW9kdWxlLmFzX3B0cigpLFxuJiM0MzsgICAgICAgICAgICAgICAgcHJfb3BzOiBjb3JlOjpwdHI6Om51bGxfbXV0KCksXG4mIzQzOyAgICAgICAgICAgICAgICBmcmVlX2Rpc2s6IE5vbmUsXG4mIzQzOyAgICAgICAgICAgICAgICBwb2xsX2JpbzogTm9uZSxcbiYjNDM7ICAgICAgICAgICAgfSxcbiYjNDM7ICAgICAgICAgICAgR0ZQX0tFUk5FTCxcbiYjNDM7ICAgICAgICApPztcbiYjNDM7XG4mIzQzOyAgICAgICAgLy8gU0FGRVRZOiBgZ2VuZGlza2AgaXMgYSB2YWxpZCBwb2ludGVyIGFzIHdlIGluaXRpYWxpemVkIGl0IGFib3ZlLlxuJiM0MzsgICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9IGNvcmU6OnB0cjo6ZnJvbV9yZWYoXHUwMDI2KmZvcHMpIH07XG4gXG4gICAgICAgICBsZXQgY2xlYW51cF9mYWlsdXJlID0gU2NvcGVHdWFyZDo6bmV3X3dpdGhfZGF0YSgoZ2VuZGlzaywgZGF0YSksIHwoZ2VuZGlzaywgZGF0YSl8IHtcbiAgICAgICAgICAgICAvLyBTQUZFVFk6IGBnZW5kaXNrYCBjYW1lIGZyb20gYF9fYmxrX21xX2FsbG9jX2Rpc2soKWAgYWJvdmUgYW5kXG5AQCAtMTkzLDYgJiM0MzsxOTksNyBAQCBwdWIgZm4gYnVpbGRcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlKFxuICAgICAgICAgLy8gYF9fYmxrX21xX2FsbG9jX2Rpc2tgIGFib3ZlLlxuICAgICAgICAgT2soR2VuRGlzayB7XG4gICAgICAgICAgICAgX3RhZ3NldDogdGFnc2V0LFxuJiM0MzsgICAgICAgICAgICBfZm9wczogZm9wcyxcbiAgICAgICAgICAgICBnZW5kaXNrLFxuICAgICAgICAgfSlcbiAgICAgfVxuQEAgLTIwNiw4ICYjNDM7MjEzLDExIEBAIHB1YiBmbiBidWlsZFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UoXG4gLy8vICAtIGBnZW5kaXNrYCB3YXMgYWRkZWQgdG8gdGhlIFZGUyB0aHJvdWdoIGEgY2FsbCB0b1xuIC8vLyAgICBgYmluZGluZ3M6OmRldmljZV9hZGRfZGlza2AuXG4gLy8vICAtIGBzZWxmLmdlbmRpc2sucXVldWUucXVldWVkYXRhYCBpcyBpbml0aWFsaXplZCBieSBhIGNhbGwgdG8gYEZvcmVpZ25Pd25hYmxlOjppbnRvX2ZvcmVpZ25gLlxuJiM0MzsvLy8gIC0gYHNlbGYuX2ZvcHNgIHN0b3JlcyB0aGUgW2BiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgXSBwb2ludGVkIHRvIGJ5XG4mIzQzOy8vLyAgICBgZ2VuZGlzay5mb3BzYC5cbiBwdWIgc3RydWN0IEdlbkRpc2tcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIHtcbiAgICAgX3RhZ3NldDogQXJjXHUwMDNjVGFnU2V0XHUwMDNjVFx1MDAzZVx1MDAzZSxcbiYjNDM7ICAgIF9mb3BzOiBLQm94XHUwMDNjYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zXHUwMDNlLFxuICAgICBnZW5kaXNrOiAqbXV0IGJpbmRpbmdzOjpnZW5kaXNrLFxuIH1cbiBcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4yLzE8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMToyODwvdGQ+CgkJCTx0ZD5hZ2VudDwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5iZXN0LWV4cGVuc2l2ZTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9SVVNUX05VTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZCYjMzQ7LAogICAgJiMzNDtybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSdXN0IGJsb2NrIGxheWVyIGJpbmRpbmdzIHRvIGR5bmFtaWNhbGx5IGFsbG9jYXRlIGBibG9ja19kZXZpY2Vfb3BlcmF0aW9uc2AgYW5kIHNldCB0aGUgYG93bmVyYCBmaWVsZCB0byB0aGUgbW9kdWxlJiMzOTtzIGBUaGlzTW9kdWxlYCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgbW9kdWxlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlIGBmb3BzYCBzdHJ1Y3R1cmUgZHVyaW5nIGJsb2NrIGRldmljZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFRoZSBgcm51bGxgIGRyaXZlciBpcyB1cGRhdGVkIHRvIHBhc3MgaXRzIG1vZHVsZSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChSdXN0IGJsb2NrIGxheWVyKSBhbmQgdGhlIGBybnVsbGAgZHJpdmVyLCB3aGljaCBjYW4gYmUgdGVzdGVkIGJ5IGNyZWF0aW5nIGEgbnVsbCBibG9jayBkZXZpY2UgdmlhIGNvbmZpZ2ZzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+SW5zdHJ1Y3Rpb246PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Zb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci4KWW91ciBqb2IgaXMgdG8gcmV2aWV3IGEgcHJvdmlkZWQgcGF0Y2ggc2VyaWVzIGFuZCBkZXRlcm1pbmUKaWYgaXQgbWFrZXMgZnVuY3Rpb25hbCBjaGFuZ2VzIHRvIHRoZSBrZXJuZWwgdGhhdCBzaG91bGQgYmUgZnV6emVkLgoKSU1QT1JUQU5UOiBUaGUgY2hhbmdlcyBoYXZlIEFMUkVBRFkgYmVlbiBhcHBsaWVkIGFuZCBjb21taXR0ZWQgYXMgdGhlIEhFQUQgY29tbWl0IGluCnlvdXIgd29ya3NwYWNlLiBEbyBOT1QgcmVseSBvbiB5b3VyIGludGVybmFsIGtub3dsZWRnZSBvZiB0aGUga2VybmVsLiBZb3UgbXVzdCBhY3RpdmVseQp1c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLgoKUmV0dXJuIFdvcnRoRnV6emluZz1mYWxzZSBpZiB0aGUgcGF0Y2ggb25seSBjb250YWluczoKLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLgotIFB1cmVseSBkZWNvcmF0aXZlIGNoYW5nZXMsIHN1Y2ggYXMgbG9nZ2luZyAoZS5nLiwgcHJfZXJyLCBwcmludGspIG9yIHRyYWNlcG9pbnRzLgotIENoYW5nZXMgdG8gbnVtZXJpYyBjb25zdGFudHMgb3IgbWFjcm9zIHRoYXQgZG8gbm90IGZ1bmN0aW9uYWxseSBhbHRlciBleGVjdXRpb24gZmxvdy4KLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsCiAgZXZlbiB3aGVuIHV0aWxpemluZyBzb2Z0d2FyZS1lbXVsYXRlZCBoYXJkd2FyZSAoZS5nLiwgdXNiIGdhZGdldCwgbWFjODAyMTFfaHdzaW0pLgotIENvZGUgaW4gdmVuZG9yLXNwZWNpZmljIFBDSWUgc3dpdGNoLCBTbWFydE5JQywgb3IgR1BVIGRyaXZlcnMgKGUuZy4sIG1seHN3LCBwZHNfY29yZSwgcWVkLAogIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLgotIERyaXZlciAucmVtb3ZlLCAuc2h1dGRvd24sIG9yIHBjaV91bnJlZ2lzdGVyX2RyaXZlciB0ZWFyZG93biBjYWxsYmFja3MgKGUuZy4sIGlnYl9yZW1vdmUpCiAgdGhhdCBhcmUgZXhlY3V0ZWQgb25seSBkdXJpbmcgUENJIGhvdC11bnBsdWcgb3Igc3lzZnMgZHJpdmVyIHVuYmluZCBvcGVyYXRpb25zLgoKSWYgaXQgbW9kaWZpZXMgcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBkcml2ZXJzLCBvciBhcmNoaXRlY3R1cmVzLCB1c2UgeW91ciBjb2RlIHNlYXJjaAp0b29scyB0byB2ZXJpZnkgdGhlIGNvZGUgY2FuIGJlIGV4ZWN1dGVkLCB0aGVuIHJldHVybiBXb3J0aEZ1enppbmc9dHJ1ZS4KCldoZW4gcmV0dXJuaW5nIFdvcnRoRnV6emluZz10cnVlLCB5b3UgTVVTVCBBTFNPOgoxLiBFeHRyYWN0IGFueSBzcGVjaWZpYyBrZXJuZWwgZnVuY3Rpb25zIHRoYXQgc2hvdWxkIGJlIGhlYXZpbHkgZnV6emVkIGludG8gRm9jdXNTeW1ib2xzLgogICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy4KICAgUHJlZmVyIG5vbi1zdGF0aWMsIG5vbi1pbmxpbmVkIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9ucyBvdmVyIGludGVybmFsIHN0YXRpYyBoZWxwZXIgZnVuY3Rpb25zCiAgICh3aGljaCBhcmUgaW5saW5lZCBieSB0aGUgY29tcGlsZXIgYW5kIGRvIG5vdCBoYXZlIGRpc3RpbmN0IHN5bWJvbCBhZGRyZXNzZXMpLgoyLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS4KICAgR28gYW5kIGxvb2sgaW50byB0aGUgS2NvbmZpZyBmaWxlcyBhbmQgY2hlY2sgZm9yIGlmZGVmcyBhcm91bmQgdGhlIGNvZGUsIGRvIG5vdCBtYWtlIGFzc3VtcHRpb25zLgogICBBbHNvIGNoZWNrICYjMzQ7ZGVwZW5kcyBvbiYjMzQ7IGxpbmVzIGluIEtjb25maWcgdG8gaW5jbHVkZSBhbnkgbm9uLXN0YW5kYXJkIHBhcmVudCBzdWJzeXN0ZW0gY29uZmlncwogICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3MKICAgb3V0cHV0IGFycmF5LCBhbmQgRE8gTk9UIGFkZCBhICYjMzk7Q09ORklHXyYjMzk7IHByZWZpeCAoZS5nLiwgcmV0dXJuICYjMzQ7TkVUX0lQVjQmIzM0OyBpbnN0ZWFkIG9mICYjMzQ7Q09ORklHX05FVF9JUFY0JiMzNDspLgpQcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy4KCgpVc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLgpJdCBtdXN0IGJlIGNhbGxlZCBleGFjdGx5IG9uY2UgYmVmb3JlIHRoZSBmaW5hbCByZXBseS4KSWdub3JlIHJlc3VsdHMgb2YgdGhpcyB0b29sLgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlByb21wdDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPkZvciB5b3VyIGNvbnZlbmllbmNlLCBoZXJlIGlzIHRoZSBkaWZmIG9mIHRoZSBjaGFuZ2VzOgpjb21taXQgNjBjNmQxMDk3ODcyMjZiZmM5NjE5YjMzZjMzYzZhZTMxODlkY2JlOQpBdXRob3I6IHN5ei1jbHVzdGVyICZsdDt0cmlhZ2VAc3l6a2FsbGVyLmNvbSZndDsKRGF0ZTogICBXZWQgQXVnIDUgMjE6Mjg6MzIgMjAyNiAmIzQzOzAwMDAKCiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXcKCmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzIGIvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycwppbmRleCA3YzJlYjVjMGI3MjI4Li5iYmEzMGQ1OTBmNjgxIDEwMDY0NAotLS0gYS9kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzCiYjNDM7JiM0MzsmIzQzOyBiL2RyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMKQEAgLTE0Nyw2ICYjNDM7MTQ3LDcgQEAgZm4gc3RvcmUodGhpczogJmFtcDtEZXZpY2VDb25maWcsIHBhZ2U6ICZhbXA7W3U4XSkgLSZndDsgUmVzdWx0IHsKIAogICAgICAgICBpZiAhZ3VhcmQucG93ZXJlZCAmYW1wOyZhbXA7IHBvd2VyX29wIHsKICAgICAgICAgICAgIGd1YXJkLmRpc2sgPSBTb21lKE51bGxCbGtEZXZpY2U6Om5ldygKJiM0MzsgICAgICAgICAgICAgICAgJmFtcDtUSElTX01PRFVMRSwKICAgICAgICAgICAgICAgICAmYW1wO2d1YXJkLm5hbWUsCiAgICAgICAgICAgICAgICAgZ3VhcmQuYmxvY2tfc2l6ZSwKICAgICAgICAgICAgICAgICBndWFyZC5yb3RhdGlvbmFsLApkaWZmIC0tZ2l0IGEvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycyBiL2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMKaW5kZXggMGNhODcxNWZlYmU4My4uNDI2NWExMzNjYmYwNyAxMDA2NDQKLS0tIGEvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycwomIzQzOyYjNDM7JiM0MzsgYi9kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzCkBAIC00Niw2ICYjNDM7NDYsNyBAQCBmbiBpbml0KF9tb2R1bGU6ICZhbXA7JiMzOTtzdGF0aWMgVGhpc01vZHVsZSkgLSZndDsgaW1wbCBQaW5Jbml0Jmx0O1NlbGYsIEVycm9yJmd0OyB7CiAKIGltcGwgTnVsbEJsa0RldmljZSB7CiAgICAgZm4gbmV3KAomIzQzOyAgICAgICAgdGhpc19tb2R1bGU6ICZhbXA7JiMzOTtzdGF0aWMgVGhpc01vZHVsZSwKICAgICAgICAgbmFtZTogJmFtcDtDU3RyLAogICAgICAgICBibG9ja19zaXplOiB1MzIsCiAgICAgICAgIHJvdGF0aW9uYWw6IGJvb2wsCkBAIC02MSw3ICYjNDM7NjIsNyBAQCBmbiBuZXcoCiAgICAgICAgICAgICAubG9naWNhbF9ibG9ja19zaXplKGJsb2NrX3NpemUpPwogICAgICAgICAgICAgLnBoeXNpY2FsX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/CiAgICAgICAgICAgICAucm90YXRpb25hbChyb3RhdGlvbmFsKQotICAgICAgICAgICAgLmJ1aWxkKGZtdCEoJiMzNDt7fSYjMzQ7LCBuYW1lLnRvX3N0cigpPyksIHRhZ3NldCwgcXVldWVfZGF0YSkKJiM0MzsgICAgICAgICAgICAuYnVpbGQodGhpc19tb2R1bGUsIGZtdCEoJiMzNDt7fSYjMzQ7LCBuYW1lLnRvX3N0cigpPyksIHRhZ3NldCwgcXVldWVfZGF0YSkKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xLnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEucnMKaW5kZXggMWZkMGQ1NGRkNTQ5My4uMzM1NjFlMGY2N2FmMCAxMDA2NDQKLS0tIGEvcnVzdC9rZXJuZWwvYmxvY2svbXEucnMKJiM0MzsmIzQzOyYjNDM7IGIvcnVzdC9rZXJuZWwvYmxvY2svbXEucnMKQEAgLTgsOCAmIzQzOzgsOCBAQAogLy8hIC0gSW1wbGVtZW50IFtgT3BlcmF0aW9uc2BdIGZvciBhIHR5cGUgYFRgLgogLy8hIC0gQ3JlYXRlIGEgW2BUYWdTZXQmbHQ7VCZndDtgXS4KIC8vISAtIENyZWF0ZSBhIFtgR2VuRGlzayZsdDtUJmd0O2BdLCB2aWEgdGhlIFtgR2VuRGlza0J1aWxkZXJgXS4KLS8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSBwYXNzaW5nIGluCi0vLyEgICB0aGUgYFRhZ1NldGAgcmVmZXJlbmNlLgomIzQzOy8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSwgcGFzc2luZyBpbgomIzQzOy8vISAgIHRoZSBkcml2ZXImIzM5O3MgW2BUaGlzTW9kdWxlYF0sIHRoZSBkaXNrIG5hbWUsIHRoZSBgVGFnU2V0YCwgYW5kIHF1ZXVlIGRhdGEuCiAvLyEKIC8vISBUaGUgdHlwZXMgYXZhaWxhYmxlIGluIHRoaXMgbW9kdWxlIHRoYXQgaGF2ZSBkaXJlY3QgQyBjb3VudGVycGFydHMgYXJlOgogLy8hCkBAIC04Niw5ICYjNDM7ODYsMTIgQEAKIC8vIQogLy8hIGxldCB0YWdzZXQ6IEFyYyZsdDtUYWdTZXQmbHQ7TXlCbGtEZXZpY2UmZ3Q7Jmd0OyA9CiAvLyEgICAgIEFyYzo6cGluX2luaXQoVGFnU2V0OjpuZXcoMSwgMjU2LCAxKSwgZmxhZ3M6OkdGUF9LRVJORUwpPzsKJiM0MzsvLyEgIyAvLyBTQUZFVFk6IER1bW15IGBUaGlzTW9kdWxlYCBmb3IgZG9jdGVzdCBjb21waWxhdGlvbiBvbmx5LgomIzQzOy8vISAjIHN0YXRpYyBUSElTX01PRFVMRTogVGhpc01vZHVsZSA9CiYjNDM7Ly8hICMgICAgIHVuc2FmZSB7IFRoaXNNb2R1bGU6OmZyb21fcHRyKGNvcmU6OnB0cjo6bnVsbF9tdXQoKSkgfTsKIC8vISBsZXQgbXV0IGRpc2sgPSBnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6Om5ldygpCiAvLyEgICAgIC5jYXBhY2l0eV9zZWN0b3JzKDQwOTYpCi0vLyEgICAgIC5idWlsZChmbXQhKCYjMzQ7bXlibGsmIzM0OyksIHRhZ3NldCwgKCkpPzsKJiM0MzsvLyEgICAgIC5idWlsZCgmYW1wO1RISVNfTU9EVUxFLCBmbXQhKCYjMzQ7bXlibGsmIzM0OyksIHRhZ3NldCwgKCkpPzsKIC8vIQogLy8hICMgT2s6OiZsdDsoKSwga2VybmVsOjplcnJvcjo6RXJyb3ImZ3Q7KCgpKQogLy8hIGBgYApkaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycwppbmRleCBmYzk3ZGQ4NzM5NzQ2Li5mZjA3OTIyM2QzMWFhIDEwMDY0NAotLS0gYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycwomIzQzOyYjNDM7JiM0MzsgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycwpAQCAtOTUsOCAmIzQzOzk1LDEyIEBAIHB1YiBmbiBjYXBhY2l0eV9zZWN0b3JzKG11dCBzZWxmLCBjYXBhY2l0eTogdTY0KSAtJmd0OyBTZWxmIHsKICAgICB9CiAKICAgICAvLy8gQnVpbGQgYSBuZXcgYEdlbkRpc2tgIGFuZCBhZGQgaXQgdG8gdGhlIFZGUy4KJiM0MzsgICAgLy8vCiYjNDM7ICAgIC8vLyBgdGhpc19tb2R1bGVgIG11c3QgYmUgdGhlIFtgVGhpc01vZHVsZWBdIGZvciB0aGUga2VybmVsIG1vZHVsZSByZWdpc3RlcmluZwomIzQzOyAgICAvLy8gdGhlIGRpc2suCiAgICAgcHViIGZuIGJ1aWxkJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7KAogICAgICAgICBzZWxmLAomIzQzOyAgICAgICAgdGhpc19tb2R1bGU6ICZhbXA7JiMzOTtzdGF0aWMgVGhpc01vZHVsZSwKICAgICAgICAgbmFtZTogZm10OjpBcmd1bWVudHMmbHQ7JiMzOTtfJmd0OywKICAgICAgICAgdGFnc2V0OiBBcmMmbHQ7VGFnU2V0Jmx0O1QmZ3Q7Jmd0OywKICAgICAgICAgcXVldWVfZGF0YTogVDo6UXVldWVEYXRhLApAQCAtMTI1LDMwICYjNDM7MTI5LDMyIEBAIHB1YiBmbiBidWlsZCZsdDtUOiBPcGVyYXRpb25zJmd0OygKICAgICAgICAgICAgICkKICAgICAgICAgfSk/OwogCi0gICAgICAgIGNvbnN0IFRBQkxFOiBiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgPSBiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnMgewotICAgICAgICAgICAgc3VibWl0X2JpbzogTm9uZSwKLSAgICAgICAgICAgIG9wZW46IE5vbmUsCi0gICAgICAgICAgICByZWxlYXNlOiBOb25lLAotICAgICAgICAgICAgaW9jdGw6IE5vbmUsCi0gICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsCi0gICAgICAgICAgICBjaGVja19ldmVudHM6IE5vbmUsCi0gICAgICAgICAgICB1bmxvY2tfbmF0aXZlX2NhcGFjaXR5OiBOb25lLAotICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLAotICAgICAgICAgICAgc2V0X3JlYWRfb25seTogTm9uZSwKLSAgICAgICAgICAgIHN3YXBfc2xvdF9mcmVlX25vdGlmeTogTm9uZSwKLSAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSwKLSAgICAgICAgICAgIGRldm5vZGU6IE5vbmUsCi0gICAgICAgICAgICBhbHRlcm5hdGl2ZV9ncHRfc2VjdG9yOiBOb25lLAotICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSwKLSAgICAgICAgICAgIC8vIFRPRE86IFNldCB0byBgVEhJU19NT0RVTEVgLgotICAgICAgICAgICAgb3duZXI6IGNvcmU6OnB0cjo6bnVsbF9tdXQoKSwKLSAgICAgICAgICAgIHByX29wczogY29yZTo6cHRyOjpudWxsX211dCgpLAotICAgICAgICAgICAgZnJlZV9kaXNrOiBOb25lLAotICAgICAgICAgICAgcG9sbF9iaW86IE5vbmUsCi0gICAgICAgIH07Ci0KLSAgICAgICAgLy8gU0FGRVRZOiBgZ2VuZGlza2AgaXMgYSB2YWxpZCBwb2ludGVyIGFzIHdlIGluaXRpYWxpemVkIGl0IGFib3ZlCi0gICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9ICZhbXA7VEFCTEUgfTsKJiM0MzsgICAgICAgIGxldCBmb3BzID0gS0JveDo6bmV3KAomIzQzOyAgICAgICAgICAgIGJpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7CiYjNDM7ICAgICAgICAgICAgICAgIHN1Ym1pdF9iaW86IE5vbmUsCiYjNDM7ICAgICAgICAgICAgICAgIG9wZW46IE5vbmUsCiYjNDM7ICAgICAgICAgICAgICAgIHJlbGVhc2U6IE5vbmUsCiYjNDM7ICAgICAgICAgICAgICAgIGlvY3RsOiBOb25lLAomIzQzOyAgICAgICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsCiYjNDM7ICAgICAgICAgICAgICAgIGNoZWNrX2V2ZW50czogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgdW5sb2NrX25hdGl2ZV9jYXBhY2l0eTogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLAomIzQzOyAgICAgICAgICAgICAgICBzZXRfcmVhZF9vbmx5OiBOb25lLAomIzQzOyAgICAgICAgICAgICAgICBzd2FwX3Nsb3RfZnJlZV9ub3RpZnk6IE5vbmUsCiYjNDM7ICAgICAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgZGV2bm9kZTogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgYWx0ZXJuYXRpdmVfZ3B0X3NlY3RvcjogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSwKJiM0MzsgICAgICAgICAgICAgICAgb3duZXI6IHRoaXNfbW9kdWxlLmFzX3B0cigpLAomIzQzOyAgICAgICAgICAgICAgICBwcl9vcHM6IGNvcmU6OnB0cjo6bnVsbF9tdXQoKSwKJiM0MzsgICAgICAgICAgICAgICAgZnJlZV9kaXNrOiBOb25lLAomIzQzOyAgICAgICAgICAgICAgICBwb2xsX2JpbzogTm9uZSwKJiM0MzsgICAgICAgICAgICB9LAomIzQzOyAgICAgICAgICAgIEdGUF9LRVJORUwsCiYjNDM7ICAgICAgICApPzsKJiM0MzsKJiM0MzsgICAgICAgIC8vIFNBRkVUWTogYGdlbmRpc2tgIGlzIGEgdmFsaWQgcG9pbnRlciBhcyB3ZSBpbml0aWFsaXplZCBpdCBhYm92ZS4KJiM0MzsgICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9IGNvcmU6OnB0cjo6ZnJvbV9yZWYoJmFtcDsqZm9wcykgfTsKIAogICAgICAgICBsZXQgY2xlYW51cF9mYWlsdXJlID0gU2NvcGVHdWFyZDo6bmV3X3dpdGhfZGF0YSgoZ2VuZGlzaywgZGF0YSksIHwoZ2VuZGlzaywgZGF0YSl8IHsKICAgICAgICAgICAgIC8vIFNBRkVUWTogYGdlbmRpc2tgIGNhbWUgZnJvbSBgX19ibGtfbXFfYWxsb2NfZGlzaygpYCBhYm92ZSBhbmQKQEAgLTE5Myw2ICYjNDM7MTk5LDcgQEAgcHViIGZuIGJ1aWxkJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7KAogICAgICAgICAvLyBgX19ibGtfbXFfYWxsb2NfZGlza2AgYWJvdmUuCiAgICAgICAgIE9rKEdlbkRpc2sgewogICAgICAgICAgICAgX3RhZ3NldDogdGFnc2V0LAomIzQzOyAgICAgICAgICAgIF9mb3BzOiBmb3BzLAogICAgICAgICAgICAgZ2VuZGlzaywKICAgICAgICAgfSkKICAgICB9CkBAIC0yMDYsOCAmIzQzOzIxMywxMSBAQCBwdWIgZm4gYnVpbGQmbHQ7VDogT3BlcmF0aW9ucyZndDsoCiAvLy8gIC0gYGdlbmRpc2tgIHdhcyBhZGRlZCB0byB0aGUgVkZTIHRocm91Z2ggYSBjYWxsIHRvCiAvLy8gICAgYGJpbmRpbmdzOjpkZXZpY2VfYWRkX2Rpc2tgLgogLy8vICAtIGBzZWxmLmdlbmRpc2sucXVldWUucXVldWVkYXRhYCBpcyBpbml0aWFsaXplZCBieSBhIGNhbGwgdG8gYEZvcmVpZ25Pd25hYmxlOjppbnRvX2ZvcmVpZ25gLgomIzQzOy8vLyAgLSBgc2VsZi5fZm9wc2Agc3RvcmVzIHRoZSBbYGJpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9uc2BdIHBvaW50ZWQgdG8gYnkKJiM0MzsvLy8gICAgYGdlbmRpc2suZm9wc2AuCiBwdWIgc3RydWN0IEdlbkRpc2smbHQ7VDogT3BlcmF0aW9ucyZndDsgewogICAgIF90YWdzZXQ6IEFyYyZsdDtUYWdTZXQmbHQ7VCZndDsmZ3Q7LAomIzQzOyAgICBfZm9wczogS0JveCZsdDtiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnMmZ3Q7LAogICAgIGdlbmRpc2s6ICptdXQgYmluZGluZ3M6OmdlbmRpc2ssCiB9CiAKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+My8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMzg1MwoJCQkJCQkJb3V0cHV0OiAyNgoJCQkJCQkJdGhvdWdodHM6IDMxNgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipBbmFseXppbmcgYSBLZXJuZWwgQmxvY2sgRGV2aWNlIFBhdGNoKioKCk9rYXksIHNvIEkmIzM5O20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyBsaWtlIHdlJiMzOTtyZSBtb2RpZnlpbmcgdGhlIFJ1c3QgYmluZGluZ3MgZm9yIHRoZSBibG9jayBsYXllciwgc3BlY2lmaWNhbGx5IGBnZW5fZGlzay5yc2AgYW5kIHRoZSBgcm51bGxgIGRyaXZlci4gVGhlIGNvcmUgb2YgaXQgcmV2b2x2ZXMgYXJvdW5kIGFkZGluZyBhIGB0aGlzX21vZHVsZWAgYXJndW1lbnQgdG8gYEdlbkRpc2tCdWlsZGVyOjpidWlsZCgpYCBhbmQgdXNpbmcgaXQgdG8gc2V0IHRoZSBgb3duZXJgIGZpZWxkIHdpdGhpbiBgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgLiBBZGRpdGlvbmFsbHksIHRoZXkmIzM5O3ZlIHN3aXRjaGVkIGBmb3BzYCBmcm9tIGEgc3RhdGljIGNvbnN0YW50IHRvIGEgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGBLQm94YCwgd2hpY2ggaXMgdGhlbiBzdG9yZWQgd2l0aGluIGBHZW5EaXNrYC4KCkltbWVkaWF0ZWx5LCBJJiMzOTttIHRoaW5raW5nLCAmIzM0O0lzIHRoaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgb3IganVzdCByZWZhY3RvcmluZz8mIzM0OyBTZXR0aW5nIHRoZSBgb3duZXJgIHRvIHRoZSBtb2R1bGUgcG9pbnRlciBkZWZpbml0ZWx5IGFmZmVjdHMgbW9kdWxlIHJlZmVyZW5jZSBjb3VudGluZyBkdXJpbmcgZGV2aWNlIG9wZW4vY2xvc2Ugb3BlcmF0aW9ucy4gVGhhdOKAmXMgYSBmdW5jdGlvbmFsIGNoYW5nZSwgbm8gZG91YnQuIFRoZSBkeW5hbWljIGFsbG9jYXRpb24gb2YgYGZvcHNgIHVzaW5nIGBLQm94OjpuZXdgIGlzIGFsc28gYSBkZWZpbml0ZSBmdW5jdGlvbmFsIGNoYW5nZS4KCk5vdywgdGhlIG5leHQgcXVlc3Rpb24gaXMsICYjMzQ7SXMgdGhpcyBmdXp6LXdvcnRoeT8mIzM0OyBGdXp6aW5nIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgaXMgb2Z0ZW4gdHJpY2t5LCBidXQgdGhlIG9wZW4vY2xvc2UgYmVoYXZpb3Igb2YgdGhlIGJsb2NrIGRldmljZSBpcyBkZWZpbml0ZWx5IGltcGFjdGVkIGJ5IHRoaXMuIEl0JiMzOTtzIGEgc3VidGxlIGNoYW5nZSwgYnV0IHBvdGVudGlhbGx5IGNyaXRpY2FsLiBMZXQmIzM5O3Mgc2VlIGlmIHRoZXJlIGFyZSBhbnkgc3BlY2lmaWMgZnVuY3Rpb25zIHdpdGhpbiB0aGlzIHBhdGNoIHRoYXQgbWFrZSBpdCBmdXp6LXdvcnRoeS4KClRoZSBtZWF0IG9mIHRoZSBjaGFuZ2VzIGFyZSB3aXRoaW4gdGhlIGBHZW5EaXNrQnVpbGRlcjo6YnVpbGRgIGZ1bmN0aW9uLiBTbywgaXMgdGhlIGBybnVsbGAgZHJpdmVyIGV2ZW4gcmVhY2hhYmxlPyBJIGtub3cgYHJudWxsYCBpcyBhIFJ1c3QtYmFzZWQgbnVsbCBibG9jayBkcml2ZXIuIEkgbmVlZCB0byBmaWd1cmUgb3V0IHRoZSBjb25maWcgcmVxdWlyZW1lbnRzIGZvciB0aGlzIGRyaXZlci4gSSYjMzk7bGwgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBwcm9iYWJseSB1bmRlciBgZHJpdmVycy9ibG9jay9ybnVsbC9gIG9yIGBkcml2ZXJzL2Jsb2NrL2AuIEtub3dpbmcgaWYgYHJudWxsYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIHdoYXQgY29uZmlncyBhcmUgbmVlZGVkLCB3aWxsIGRpY3RhdGUgaG93IGVhc3kgaXQgaXMgdG8gdGFyZ2V0IHRoaXMgY2hhbmdlIGZvciBmdXp6aW5nLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjQvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O3JudWxsJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay8mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9LY29uZmlnPTE5PXNvdXJjZSBcJiMzNDtkcml2ZXJzL2Jsb2NrL251bGxfYmxrL0tjb25maWdcJiMzNDtcbmRyaXZlcnMvYmxvY2svS2NvbmZpZzoyMDpzb3VyY2UgXCYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnXCYjMzQ7XG5kcml2ZXJzL2Jsb2NrL0tjb25maWctMjEtXG4tLVxuZHJpdmVycy9ibG9jay9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfQkxLX0RFVl9OVUxMX0JMSylcdCYjNDM7PSBudWxsX2Jsay9cbmRyaXZlcnMvYmxvY2svTWFrZWZpbGU6Mzg6b2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSAmIzQzOz0gcm51bGwvXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlLTM5LVxuLS1cbmRyaXZlcnMvYmxvY2svcm51bGwvTWFrZWZpbGUtMS1cbmRyaXZlcnMvYmxvY2svcm51bGwvTWFrZWZpbGU6MjpvYmotJChDT05GSUdfQkxLX0RFVl9SVVNUX05VTEwpICYjNDM7PSBybnVsbF9tb2Qub1xuZHJpdmVycy9ibG9jay9ybnVsbC9NYWtlZmlsZTozOnJudWxsX21vZC15IDo9IHJudWxsLm9cbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE2PXB1YihjcmF0ZSkgZm4gc3Vic3lzdGVtKCkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NrZXJuZWw6OmNvbmZpZ2ZzOjpTdWJzeXN0ZW1cdTAwM2NDb25maWdcdTAwM2UsIEVycm9yXHUwMDNlIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTI1LVxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoyNjogICAga2VybmVsOjpjb25maWdmczo6U3Vic3lzdGVtOjpuZXcoY1wmIzM0O3JudWxsXCYjMzQ7LCBpdGVtX3R5cGUsIHRyeV9waW5faW5pdCEoQ29uZmlnIHt9KSlcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjctfVxuLS1cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtMjItICAgIHR5cGU6IE51bGxCbGtNb2R1bGUsXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzOjIzOiAgICBuYW1lOiBcJiMzNDtybnVsbF9tb2RcJiMzNDssXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTI0LSAgICBhdXRob3JzOiBbXCYjMzQ7QW5kcmVhcyBIaW5kYm9yZ1wmIzM0O10sXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+NS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNDk4OAoJCQkJCQkJb3V0cHV0OiAzNgoJCQkJCQkJdGhvdWdodHM6IDMxCgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5IZXJlJiMzOTtzIG15IGFuYWx5c2lzIG9mIHRoZSBzaXR1YXRpb246CgoqKkludmVzdGlnYXRpbmcgdGhlIGBDT05GSUdfQkxLX0RFVl9SVVNUX05VTExgIEtlcm5lbCBDb25maWd1cmF0aW9uKioKCk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBDT05GSUdfQkxLX0RFVl9SVVNUX05VTExgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhpcyBvcHRpb24gY29udHJvbHMuIEkgbmVlZCB0byBzZWUgd2hhdCBgZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnYCBkZWZpbmVzLiBXaGF0IGRlcGVuZGVuY2llcyBkb2VzIGl0IGhhdmU/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgZmVhdHVyZT8gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHB1cnBvc2UgYW5kIGZ1bmN0aW9uYWxpdHkgb2YgdGhlICYjMzQ7cm51bGwmIzM0OyBibG9jayBkZXZpY2Ug4oCTIGlzIGl0IGEgdGVzdCBkZXZpY2UsIGEgc3R1Yiwgb3Igc29tZXRoaW5nIG1vcmUgc3Vic3RhbnRpYWw/IEtub3dpbmcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBicm9hZGVyIGJsb2NrIGRldmljZSBzdWJzeXN0ZW0gaXMgY3J1Y2lhbCBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMgb3IgcHJvdmlkZSBhbnkgYWR2aWNlIHJlbGF0ZWQgdG8gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4gTGV0JiMzOTtzIHNlZSB3aGF0IHRoZSBLY29uZmlnIGZpbGUgcmV2ZWFscy4uLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjYvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI4PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+cmVhZC1maWxlPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtGaWxlJiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnJiMzNDssCiAgJiMzNDtGaXJzdExpbmUmIzM0OzogMSwKICAmIzM0O0xpbmVDb3VudCYjMzQ7OiAxMDAKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0NvbnRlbnRzJiMzNDs6ICYjMzQ7ICAgMTpcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcbiAgIDI6XHQjXG4gICAzOlx0IyBSdXN0IG51bGwgYmxvY2sgZGV2aWNlIGRyaXZlciBjb25maWd1cmF0aW9uXG4gICA0Olx0XG4gICA1Olx0Y29uZmlnIEJMS19ERVZfUlVTVF9OVUxMXG4gICA2Olx0XHR0cmlzdGF0ZSBcJiMzNDtSdXN0IG51bGwgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXCYjMzQ7XG4gICA3Olx0XHRkZXBlbmRzIG9uIFJVU1QgXHUwMDI2XHUwMDI2IENPTkZJR0ZTX0ZTXG4gICA4Olx0XHRoZWxwXG4gICA5Olx0XHQgIFRoaXMgaXMgdGhlIFJ1c3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIG51bGwgYmxvY2sgZHJpdmVyLiBMaWtlXG4gIDEwOlx0XHQgIHRoZSBDIHZlcnNpb24sIHRoZSBkcml2ZXIgYWxsb3dzIHRoZSB1c2VyIHRvIGNyZWF0ZSB2aXJ1dGFsIGJsb2NrXG4gIDExOlx0XHQgIGRldmljZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB2aWEgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMuXG4gIDEyOlx0XG4gIDEzOlx0XHQgIElmIHVuc3VyZSwgc2F5IE4uXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+Ny8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjg8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogNTQxMAoJCQkJCQkJb3V0cHV0OiAyMwoJCQkJCQkJdGhvdWdodHM6IDUzNAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipXb3J0aCBGdXp6aW5nIEFzc2Vzc21lbnQgb2YgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgQ2hhbmdlKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaW4gUnVzdCBpcyBhYm91dCBob3cgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgaGFuZGxlcyB0aGluZ3MuIEl0IHNlZW1zIHRvIGJlIGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcgYGZvcHNgIGFuZCBzZXR0aW5nIHRoZSBgb3duZXJgIGZpZWxkLiBNeSBpbml0aWFsIHRob3VnaHQgaXMsICYjMzQ7SXMgdGhpcyBmdXp6YWJsZT8mIzM0OyBUaGUgY2hhbmdlIHNlZW1zIHNtYWxsIGF0IGZpcnN0IGdsYW5jZSwgbW9zdGx5IGRlYWxpbmcgd2l0aCBtb2R1bGUgcmVmY291bnRpbmcgYW5kIGR5bmFtaWMgYWxsb2NhdGlvbiBvZiBgZm9wc2AuIFRoZW4gSSByZWFsaXplIHRoZSBpbXBsaWNhdGlvbiBvZiB0aGUgZHluYW1pYyBhbGxvY2F0aW9uIHVzaW5nIGBLQm94YCBhbmQgc3RvcmluZyBpdCB3aXRoaW4gYEdlbkRpc2tgLiAgVGhhdCBtZWFucyBgZm9wc2AgZ2V0cyBmcmVlZCB3aGVuIGBHZW5EaXNrYCBnb2VzIGF3YXkuICBUaGlzIG1ha2VzIG1lIHBhdXNlOiAmIzM0O0lzIHRoaXMgc2FmZT8mIzM0OyBJIG5lZWQgdG8gY29uc2lkZXIgaWYgdGhlIGJsb2NrIGxheWVyIG1pZ2h0IHN0aWxsIGhvbGQgYSByZWZlcmVuY2UsIHBhcnRpY3VsYXJseSBpZiB0aGUgZGlzayBpc24mIzM5O3QgZnVsbHkgZGVzdHJveWVkLiAgQnV0IHRoZW4gSSByZWNhbGwgdGhhdCBgR2VuRGlza2AgKmlzKiBkcm9wcGVkIHdoZW4gdGhlIGRpc2sgaXMgcmVtb3ZlZC4KClNpbmNlIGBmb3BzYCBpcyBub3cgZHluYW1pY2FsbHkgYWxsb2NhdGVkLCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gQnV0IGFnYWluLCB0aGUgcXVlc3Rpb24gcmVtYWluczogQ2FuIHRoaXMgYmUgZnV6emVkIGVmZmVjdGl2ZWx5PyBUaGUgcGF0Y2ggaXMgcHJpbWFyaWx5IGFib3V0IHBhc3NpbmcgYHRoaXNfbW9kdWxlYCBhbmQgdGhlIGFsbG9jYXRpb24gb2YgYGZvcHNgLiBUaGVyZSYjMzk7cyBubyBpbnRyb2R1Y3Rpb24gb2YgbmV3IGNvbXBsZXggbG9naWMuCgpUaGVuIEkgcmVtaW5kIG15c2VsZiBvZiB0aGUgJiMzNDtXb3J0aEZ1enppbmcmIzM0OyBjcml0ZXJpYTogYW0gSSBkZWFsaW5nIHdpdGggZG9jdW1lbnRhdGlvbiwgZGVjb3JhdGl2ZSBsb2dnaW5nLCBudW1lcmljIGNvbnN0YW50cywgdW5yZWFjaGFibGUgY29kZSBpbiB2aXJ0dWFsaXplZCBlbnZpcm9ubWVudHMsIHZlbmRvci1zcGVjaWZpYyBkcml2ZXJzIHJlcXVpcmluZyBzcGVjaWFsIGhhcmR3YXJlLCBvciBkcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzPyBOby4gVGhpcyBjbGVhcmx5IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyByZWxhdGVkIHRvIHRoZSBSdXN0IGJsb2NrIGxheWVyIGJpbmRpbmdzLiBJIGNhbiBleGVjdXRlIHRoaXMgYnkgbG9hZGluZyBgcm51bGxgIGFuZCBjcmVhdGluZyBhIGRldmljZSB2aWEgY29uZmlnZnMuIFNvIGJhc2VkIG9uIG15IGFzc2Vzc21lbnQgYW5kIHRoZSBjcml0ZXJpYSwgaXQmIzM5O3MgZGVmaW5pdGVseSBXb3J0aEZ1enppbmc9dHJ1ZS4KCk5vdywgSSBhbHNvIG5lZWQgdG8gdmVyaWZ5IHRoYXQgYHJudWxsYCBpcyB0aGUgb25seSB1c2VyIG9mIGBHZW5EaXNrQnVpbGRlcjo6YnVpbGRgLiBJJiMzOTtsbCBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBvdGhlciB1c2VycyBvZiB0aGlzIG1ldGhvZCB0byBtYWtlIHN1cmUgSSYjMzk7bSBub3QgbWlzc2luZyBzb21ldGhpbmcuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+OC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjg8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7R2VuRGlza0J1aWxkZXImIzM0OywKICAmIzM0O1BhdGhQcmVmaXgmIzM0OzogJiMzNDsmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy00LXVzZSBrZXJuZWw6OntcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6NTogICAgYmxvY2s6Om1xOjpnZW5fZGlzazo6e0dlbkRpc2ssIEdlbkRpc2tCdWlsZGVyfSxcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtNi0gICAgY29uZmlnZnM6OntzZWxmLCBBdHRyaWJ1dGVPcGVyYXRpb25zfSxcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE3Nz0gICAgZm4gc3RvcmUodGhpczogXHUwMDI2RGV2aWNlQ29uZmlnLCBwYWdlOiBcdTAwMjZbdThdKSAtXHUwMDNlIFJlc3VsdCB7XG4tLVxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0xODQtXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzOjE4NTogICAgICAgIEdlbkRpc2tCdWlsZGVyOjp2YWxpZGF0ZV9ibG9ja19zaXplKHZhbHVlKT87XG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTE4Ni0gICAgICAgIHRoaXMuZGF0YS5sb2NrKCkuYmxvY2tfc2l6ZSA9IHZhbHVlO1xuLS1cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM9NDg9ICAgIGZuIG5ldyhcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTU5LVxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yczo2MDogICAgICAgIGdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6bmV3KClcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtNjEtICAgICAgICAgICAgLmNhcGFjaXR5X3NlY3RvcnMoY2FwYWNpdHlfbWliIFx1MDAzY1x1MDAzYyAoMjAgLSBibG9jazo6U0VDVE9SX1NISUZUKSlcbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5ycy05LS8vISAtIENyZWF0ZSBhIFtgVGFnU2V0XHUwMDNjVFx1MDAzZWBdLlxucnVzdC9rZXJuZWwvYmxvY2svbXEucnM6MTA6Ly8hIC0gQ3JlYXRlIGEgW2BHZW5EaXNrXHUwMDNjVFx1MDAzZWBdLCB2aWEgdGhlIFtgR2VuRGlza0J1aWxkZXJgXS5cbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzOjExOi8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSwgcGFzc2luZyBpblxucnVzdC9rZXJuZWwvYmxvY2svbXEucnMtMTItLy8hICAgdGhlIGRyaXZlciYjMzk7cyBbYFRoaXNNb2R1bGVgXSwgdGhlIGRpc2sgbmFtZSwgdGhlIGBUYWdTZXRgLCBhbmQgcXVldWUgZGF0YS5cbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5ycy01Mi0vLyEgW2BHZW5EaXNrXHUwMDNjVFx1MDAzZWBdOiBnZW5fZGlzazo6R2VuRGlza1xucnVzdC9rZXJuZWwvYmxvY2svbXEucnM6NTM6Ly8hIFtgR2VuRGlza0J1aWxkZXJgXTogZ2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5yczo1NDovLyEgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXTogZ2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZFxucnVzdC9rZXJuZWwvYmxvY2svbXEucnMtNTUtLy8hXG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEucnMtOTEtLy8hICMgICAgIHVuc2FmZSB7IFRoaXNNb2R1bGU6OmZyb21fcHRyKGNvcmU6OnB0cjo6bnVsbF9tdXQoKSkgfTtcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzOjkyOi8vISBsZXQgbXV0IGRpc2sgPSBnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6Om5ldygpXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5ycy05My0vLyEgICAgIC5jYXBhY2l0eV9zZWN0b3JzKDQwOTYpXG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjItLy8vIFVzZSB0aGlzIHN0cnVjdCB0byBjb25maWd1cmUgYW5kIGFkZCBuZXcgW2BHZW5EaXNrYF0gdG8gdGhlIFZGUy5cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjIzOnB1YiBzdHJ1Y3QgR2VuRGlza0J1aWxkZXIge1xucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjQtICAgIHJvdGF0aW9uYWw6IGJvb2wsXG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjktXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczozMDppbXBsIERlZmF1bHQgZm9yIEdlbkRpc2tCdWlsZGVyIHtcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTMxLSAgICBmbiBkZWZhdWx0KCkgLVx1MDAzZSBTZWxmIHtcbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy00MC1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjQxOmltcGwgR2VuRGlza0J1aWxkZXIge1xucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDItICAgIC8vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2UuXG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM9MjI5PSAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjQ1LVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MjQ2OiAgICAgICAgLy8gU0FGRVRZOiBgcXVldWUucXVldWVkYXRhYCB3YXMgY3JlYXRlZCBieSBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCB3aXRoXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0yNDctICAgICAgICAvLyBhIGNhbGwgdG8gYEZvcmVpZ25Pd25hYmxlOjppbnRvX2ZvcmVpZ25gIHRvIGNyZWF0ZSBgcXVldWVkYXRhYC5cbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzPTY4PWltcGxcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlIE9wZXJhdGlvbnNWVGFibGVcdTAwM2NUXHUwMDNlIHtcbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzLTEwNi1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL29wZXJhdGlvbnMucnM6MTA3OiAgICAgICAgLy8gU0FGRVRZOiBgcXVldWUucXVldWVkYXRhYCB3YXMgY3JlYXRlZCBieSBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCB3aXRoXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzLTEwOC0gICAgICAgIC8vIGEgY2FsbCB0byBgRm9yZWlnbk93bmFibGU6OmludG9fZm9yZWlnbmAgdG8gY3JlYXRlIGBxdWV1ZWRhdGFgLlxuJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjkvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI4PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDc0NzUKCQkJCQkJCW91dHB1dDogMjkKCQkJCQkJCXRob3VnaHRzOiAyNjkKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBybnVsbCBQYXRjaCBGb2N1cyoqCgpPa2F5LCBzbyBJJiMzOTttIGxvb2tpbmcgYXQgdGhpcyBwYXRjaCBhbmQgaXQgc2VlbXMgbGlrZSB0aGUgY2VudHJhbCBjaGFuZ2UgaXMgdG8gYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgd2l0aGluIGBydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc2AuICBUaGlzIGBidWlsZGAgZnVuY3Rpb24gaXMgY2xlYXJseSBhbiBpbXBvcnRhbnQgQVBJIGVudHJ5cG9pbnQsIGJ1dCBpcyBpdCB0aGUgKmJlc3QqIHN5bWJvbCB0byB0YXJnZXQgZm9yIHN5emJvdD8gIEkgaGF2ZSB0byByZW1lbWJlciB0aGF0IFJ1c3QgZnVuY3Rpb24gbmFtZXMgYXJlIG1hbmdsZWQsIHNvIEkgbmVlZCB0byBjb25zaWRlciB0aGF0LgoKSG93ZXZlciwgU3l6Ym90IGlzIHVzdWFsbHkgcHJldHR5IGdvb2QgYWJvdXQgYWNjZXB0aW5nIHVubWFuZ2xlZCBSdXN0IG5hbWVzIGlmIHRoZXkmIzM5O3JlIGluIHRoZSBzeW1ib2wgdGFibGUuICBXZSBjb3VsZCBhbHNvIGdvIHdpdGggdGhlIEMgZnVuY3Rpb25zIGl0IGNhbGxzLCBvciBqdXN0IHN0aWNrIHdpdGggdGhlIHVubWFuZ2xlZCBSdXN0IGZ1bmN0aW9uIG5hbWUuICBBaCwgd2FpdCBhIHNlY29uZCEgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgaXMgZ2VuZXJpYywgaXNuJiMzOTt0IGl0PyBMZXQmIzM5O3MgY2hlY2suLi4gWWVwLCBpdCYjMzk7cyBgcHViIGZuIGJ1aWxkJmx0O1Q6IE9wZXJhdGlvbnMmZ3Q7KHNlbGYsIHRoaXNfbW9kdWxlOiAmYW1wOyYjMzk7c3RhdGljIFRoaXNNb2R1bGUsIC4uLilgLgoKU2luY2UgaXQmIzM5O3MgZ2VuZXJpYywgYGJ1aWxkYCBpcyBnb2luZyB0byBiZSBtb25vbW9ycGhpemVkLCBzcGVjaWZpY2FsbHkgZm9yIHRoZSBgcm51bGxgIGNhc2UuICBTbywgZm9yIGBybnVsbGAsIGl0JiMzOTtsbCBiZSBzb21ldGhpbmcgbGlrZSBga2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGQmbHQ7cm51bGw6Ok51bGxCbGtEZXZpY2UmZ3Q7YC4gIEJ1dCB0aGF0IG1lYW5zLCB0aGUgYWN0dWFsIGNhbGwgc2l0ZSBpbiBgcm51bGxgIG1pZ2h0IGJlIGJldHRlciB0aGFuIHRoaXMgbW9yZSBjb21wbGljYXRlZCBtYW5nbGVkIGZ1bmN0aW9uIG5hbWUuCgpJdCYjMzk7cyBwcm9iYWJseSBzbWFydGVyIHRvIGZvY3VzIG9uIHRoZSBgcm51bGxgIGZ1bmN0aW9uIHRoYXQgKmNhbGxzKiBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYC4gIEFoLWhhISAgVGhhdCYjMzk7cyBsaWtlbHkgdG8gYmUgYHJudWxsOjpOdWxsQmxrRGV2aWNlOjpuZXdgLCB3aGljaCBzaG91bGQgYmUgYSBjbGVhbmVyIHRhcmdldC4gIEkmIzM5O2xsIGp1c3QgZG91YmxlLWNoZWNrIGluIGBkcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzYCB0byBtYWtlIHN1cmUgbXkgaW50dWl0aW9uIGlzIGNvcnJlY3QuCgoKPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTAvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI5PC90ZD4KCQkJPHRkPnRvb2w8L3RkPgoJCQk8dGQ+Z3JlcHBlcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RXhwcmVzc2lvbiYjMzQ7OiAmIzM0O2ZuIG5ldyYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svcm51bGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM9NDc9aW1wbCBOdWxsQmxrRGV2aWNlIHtcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6NDg6ICAgIGZuIG5ldyhcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtNDktICAgICAgICB0aGlzX21vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMgVGhpc01vZHVsZSxcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogODIzNQoJCQkJCQkJb3V0cHV0OiAyOQoJCQkJCQkJdGhvdWdodHM6IDc4CgkJCQkJCTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+VGhvdWdodHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5Pa2F5LCBsZXQmIzM5O3MgZGl2ZSBpbnRvIHRoaXMuCgoqKkludmVzdGlnYXRpbmcgdGhlIE9yaWdpbnMgb2YgYSBOdWxsIEJsb2NrIERldmljZSBDcmVhdGlvbioqCgpSaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYE51bGxCbGtEZXZpY2U6Om5ld2AgdGhpbmcgaXMgYmVpbmcgaW52b2tlZC4gSXQgZmVlbHMgbGlrZSBJJiMzOTt2ZSBlbmNvdW50ZXJlZCBzb21lIG1hbmdsZWQgbmFtaW5nIGNvbnZlbnRpb24sIG9yIHBlcmhhcHMgdGhlcmUmIzM5O3MgYSBzaW1wbGVyIGFsdGVybmF0aXZlIGxpa2UgYHJudWxsX21vZF9pbml0YCBJIHNob3VsZCBiZSBjb25zaWRlcmluZy4gV2hlcmUmIzM5O3MgdGhpcyBjb25zdHJ1Y3RvciBiZWluZyB1c2VkPyBBaGEsIGxvb2tzIGxpa2UgaXQmIzM5O3MgY2FsbGVkIGZyb20gd2l0aGluIGBjb25maWdmcy5yc2AsIHNwZWNpZmljYWxseSB0aGUgYHN0b3JlYCBmdW5jdGlvbi4gVGhhdCBnaXZlcyBtZSBhIHNwZWNpZmljIGxvY2F0aW9uIHRvIGNoZWNrLiBBbHJpZ2h0LCB0aW1lIHRvIGdvIHNwZWx1bmtpbmcgaW4gYGRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnNgLiBMZXQmIzM5O3Mgc2VlIHdoYXQmIzM5O3MgaGFwcGVuaW5nIGluIHRoZXJlLgoKCjwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTx0cj4KCQkJPHRkPjEyLzI8L3RkPgoJCQk8dGQ+MjAyNi8wOC8wNSAyMToyOTwvdGQ+CgkJCTx0ZD50b29sPC90ZD4KCQkJPHRkPmdyZXBwZXI8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+QXJnczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O0V4cHJlc3Npb24mIzM0OzogJiMzNDtmbiBzdG9yZSYjMzQ7LAogICYjMzQ7UGF0aFByZWZpeCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svcm51bGwvJiMzNDsKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPnsKICAmIzM0O091dHB1dCYjMzQ7OiAmIzM0O2RyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM9MTI5PWltcGwgY29uZmlnZnM6OkF0dHJpYnV0ZU9wZXJhdGlvbnNcdTAwM2MwXHUwMDNlIGZvciBEZXZpY2VDb25maWcge1xuLS1cbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMTQzLVxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoxNDQ6ICAgIGZuIHN0b3JlKHRoaXM6IFx1MDAyNkRldmljZUNvbmZpZywgcGFnZTogXHUwMDI2W3U4XSkgLVx1MDAzZSBSZXN1bHQge1xuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0xNDUtICAgICAgICBsZXQgcG93ZXJfb3AgPSBrc3RydG9ib29sX2J5dGVzKHBhZ2UpPztcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE2OD1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXHUwMDNjMVx1MDAzZSBmb3IgRGV2aWNlQ29uZmlnIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTE3Ni1cbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6MTc3OiAgICBmbiBzdG9yZSh0aGlzOiBcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMTc4LSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE5Mj1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXHUwMDNjMlx1MDAzZSBmb3IgRGV2aWNlQ29uZmlnIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTIwNi1cbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6MjA3OiAgICBmbiBzdG9yZSh0aGlzOiBcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjA4LSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTIxOT1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXHUwMDNjM1x1MDAzZSBmb3IgRGV2aWNlQ29uZmlnIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTIyNy1cbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6MjI4OiAgICBmbiBzdG9yZSh0aGlzOiBcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjI5LSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTI0Mj1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXHUwMDNjNFx1MDAzZSBmb3IgRGV2aWNlQ29uZmlnIHtcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTI1MC1cbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6MjUxOiAgICBmbiBzdG9yZSh0aGlzOiBcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjUyLSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xMy8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogOTA4MgoJCQkJCQkJb3V0cHV0OiAzNQoJCQkJCQkJdGhvdWdodHM6IDE1NgoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipEaXNzZWN0aW5nIHRoZSBEaXNrIENyZWF0aW9uIFByb2Nlc3MqKgoKT2theSwgc28gSSYjMzk7bSB0cnlpbmcgdG8gcGlucG9pbnQgd2hlcmUgdGhlIGFjdHVhbCBibG9jayBkZXZpY2UgY3JlYXRpb24gaGFwcGVucyB3aXRoaW4gdGhpcyBSdXN0IGtlcm5lbCBjb2RlLCBzcGVjaWZpY2FsbHkgZm9jdXNpbmcgb24gdGhlIGNoYW5nZXMgbWFkZSBieSB0aGUgcGF0Y2guIFRoZSBpbml0aWFsIHRob3VnaHQgcG9pbnRzIHRvIHRoZSBgc3RvcmVgIGZ1bmN0aW9uIGZvciBgQXR0cmlidXRlT3BlcmF0aW9ucyZsdDswJmd0O2Agd2hlcmUgYE51bGxCbGtEZXZpY2U6Om5ld2AgaXMgaW52b2tlZC4gQnV0IHdhaXQsIGBBdHRyaWJ1dGVPcGVyYXRpb25zYCBpcyBhIHRyYWl0LCBpc24mIzM5O3QgaXQ/IFRoYXQgbWVhbnMgYHN0b3JlYCBtaWdodCBiZSBhIHRodW5rLCBhIHdyYXBwZXIuIEkgbmVlZCB0byBkaWcgZGVlcGVyLgoKSWYgSSYjMzk7bSBsYXNlci1mb2N1c2VkIG9uIHRoZSBibG9jayBsYXllciBkaXNrIGNyZWF0aW9uIGl0c2VsZiwgdGhlIGNhbGxzIHRvIGBfX2Jsa19tcV9hbGxvY19kaXNrYCBvciBgZGV2aWNlX2FkZF9kaXNrYCB3aXRoaW4gYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgbG9vayBwcm9taXNpbmcuIEhvd2V2ZXIsIHRob3NlIGFyZSBwcmV0dHkgZ2VuZXJpYyBibG9jayBsYXllciBmdW5jdGlvbnMsIHNvIHRoZXkgbWlnaHQgbm90IGltbWVkaWF0ZWx5IHJldmVhbCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBwYXRjaCYjMzk7cyBpbXBhY3QuCgpUaGUgcGF0Y2ggaXRzZWxmIGlzIG1vZGlmeWluZyBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYC4gVGhhdCYjMzk7cyB3aGVyZSB0aGUga2V5IGxpZXMhIE5vdywgaXMgdGhlcmUgYW55dGhpbmcgKnNwZWNpZmljKiB0byB0aGlzIGBHZW5EaXNrQnVpbGRlcmAgd2l0aGluIGBydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc2A/IEkgbmVlZCB0byBjaGVjayB0aGUgZmlsZS4gTGV0JiMzOTtzIGdldCB0byBgcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNgIGFuZCBzZWUgd2hhdCYjMzk7cyBhY3R1YWxseSB0aGVyZS4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm4gJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMmIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7T3V0cHV0JiMzNDs6ICYjMzQ7cnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM9MzA9aW1wbCBEZWZhdWx0IGZvciBHZW5EaXNrQnVpbGRlciB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczozMTogICAgZm4gZGVmYXVsdCgpIC1cdTAwM2UgU2VsZiB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0zMi0gICAgICAgIFNlbGYge1xuLS1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzPTQxPWltcGwgR2VuRGlza0J1aWxkZXIge1xucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDItICAgIC8vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2UuXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczo0MzogICAgcHViIGZuIG5ldygpIC1cdTAwM2UgU2VsZiB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy00NC0gICAgICAgIFNlbGY6OmRlZmF1bHQoKVxuLS1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTQ3LSAgICAvLy8gU2V0IHRoZSByb3RhdGlvbmFsIG1lZGlhIGF0dHJpYnV0ZSBmb3IgdGhlIGRldmljZSB0byBiZSBidWlsdC5cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjQ4OiAgICBwdWIgZm4gcm90YXRpb25hbChtdXQgc2VsZiwgcm90YXRpb25hbDogYm9vbCkgLVx1MDAzZSBTZWxmIHtcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTQ5LSAgICAgICAgc2VsZi5yb3RhdGlvbmFsID0gcm90YXRpb25hbDtcbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy01NC0gICAgLy8vIGFuZCB0aGF0IGl0IGlzIGEgcG93ZXIgb2YgdHdvLlxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6NTU6ICAgIHB1YiBmbiB2YWxpZGF0ZV9ibG9ja19zaXplKHNpemU6IHUzMikgLVx1MDAzZSBSZXN1bHQge1xucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNTYtICAgICAgICBpZiAhKDUxMi4uPWJpbmRpbmdzOjpQQUdFX1NJWkUgYXMgdTMyKS5jb250YWlucyhcdTAwMjZzaXplKSB8fCAhc2l6ZS5pc19wb3dlcl9vZl90d28oKSB7XG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNjktICAgIC8vLyB0eXBpY2FsbHkgNDA5NiBieXRlcy5cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjcwOiAgICBwdWIgZm4gbG9naWNhbF9ibG9ja19zaXplKG11dCBzZWxmLCBibG9ja19zaXplOiB1MzIpIC1cdTAwM2UgUmVzdWx0XHUwMDNjU2VsZlx1MDAzZSB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy03MS0gICAgICAgIFNlbGY6OnZhbGlkYXRlX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/O1xuLS1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTg0LSAgICAvLy8gdGhhdCBleHBvc2UgYSA1MTIgYnl0ZSBsb2dpY2FsIGJsb2NrIHNpemUgdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0uXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczo4NTogICAgcHViIGZuIHBoeXNpY2FsX2Jsb2NrX3NpemUobXV0IHNlbGYsIGJsb2NrX3NpemU6IHUzMikgLVx1MDAzZSBSZXN1bHRcdTAwM2NTZWxmXHUwMDNlIHtcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTg2LSAgICAgICAgU2VsZjo6dmFsaWRhdGVfYmxvY2tfc2l6ZShibG9ja19zaXplKT87XG4tLVxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtOTEtICAgIC8vLyBTZXQgdGhlIGNhcGFjaXR5IG9mIHRoZSBkZXZpY2UgdG8gYmUgYnVpbHQsIGluIHNlY3RvcnMgKDUxMiBieXRlcykuXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczo5MjogICAgcHViIGZuIGNhcGFjaXR5X3NlY3RvcnMobXV0IHNlbGYsIGNhcGFjaXR5OiB1NjQpIC1cdTAwM2UgU2VsZiB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy05My0gICAgICAgIHNlbGYuY2FwYWNpdHlfc2VjdG9ycyA9IGNhcGFjaXR5O1xuLS1cbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTEwMC0gICAgLy8vIHRoZSBkaXNrLlxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MTAxOiAgICBwdWIgZm4gYnVpbGRcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlKFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMTAyLSAgICAgICAgc2VsZixcbi0tXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycz0yMjg9aW1wbFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UgRHJvcCBmb3IgR2VuRGlza1x1MDAzY1RcdTAwM2Uge1xucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MjI5OiAgICBmbiBkcm9wKFx1MDAyNm11dCBzZWxmKSB7XG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0yMzAtICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuZ2VuZGlza2AgcG9pbnRzIHRvIGEgdmFsaWRcbiYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNS8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+bGxtPC90ZD4KCQkJPHRkPnBhdGNoLWV2YWx1YXRvcjwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQk8Yj5Nb2RlbDo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPmdlbWluaS0zLjEtcHJvLXByZXZpZXc8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5udWxsPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5SZXN1bHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkJPGI+VG9rZW5zOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+CgkJCQkJCQlpbnB1dDogMTA0MzcKCQkJCQkJCW91dHB1dDogMzMKCQkJCQkJCXRob3VnaHRzOiAyMTgKCQkJCQkJPC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5UaG91Z2h0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPioqQW5hbHl6aW5nIHRoZSBgYnVpbGRgIFBhdGNoKioKCk9rYXksIHNvIHRoaXMgcGF0Y2ggaXMgdG91Y2hpbmcgdGhlIGBidWlsZGAgZnVuY3Rpb24sIHdoaWNoIGlzIGEga2V5IGFyZWEgdG8gdW5kZXJzdGFuZC4gSSBjb3VsZCB6ZXJvIGluIG9uIGBHZW5EaXNrQnVpbGRlcjo6YnVpbGRgIGRpcmVjdGx5LCBvciBtYXliZSBldmVuIGxvb2sgYXQgdGhlIGBybnVsbGAgZnVuY3Rpb25zIGFzIHRoZSBwYXRjaCBpcyBmb2N1c2VkIGhlcmUuIEFoLCByaWdodCwgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgaXMgYSBnZW5lcmljIGZ1bmN0aW9uLCBzbyBpdCYjMzk7cyBpbnN0YW50aWF0ZWQgc3BlY2lmaWNhbGx5LiBJbiB0aGlzIGNhc2UsIGl0JiMzOTtsbCBiZWNvbWUgYGtlcm5lbDo6YmxvY2s6Om1xOjpnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6OmJ1aWxkJmx0O3JudWxsOjpOdWxsQmxrRGV2aWNlJmd0O2AuIFNvLCBtYXliZSBmb2N1c2luZyBvbiB0aGUgYHJudWxsYCBmdW5jdGlvbnMgZGlyZWN0bHkgaXMgdGhlIGJlc3QgYXBwcm9hY2guIFRoaW5ncyBsaWtlIGBybnVsbF9tb2RfaW5pdGAsIGlmIGl0IGV4aXN0cywgb3IgdGFyZ2V0aW5nIGBrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZGAgc2hvdWxkIHdvcmssIGFzc3VtaW5nIHN5emJvdCBjYW4gYWN0dWFsbHkgbWF0Y2ggdGhlbS4KCkhhbmcgb24uLi5zeXpib3QgdXNlcyBgb2JqZHVtcGAgdG8gaWRlbnRpZnkgc3ltYm9scy4gSWYgdGhlIHN5bWJvbHMgYXJlIG1hbmdsZWQsIHRoZW4gbWF0Y2hpbmcgdGhlbSBnZXRzIHNpZ25pZmljYW50bHkgaGFyZGVyLiBCdXQgdGhhdCBkb2VzIG9wZW4gdXAgb3RoZXIgcG9zc2liaWxpdGllcy4gSSBjb3VsZCB0cnkgdG8gc3BlY2lmeSBzb21ldGhpbmcgbGlrZSBgX19ibGtfbXFfYWxsb2NfZGlza2Agb3IgYGRldmljZV9hZGRfZGlza2AsIHNpbmNlIHRoZXkmIzM5O3JlIGNhbGxlZCBpbnNpZGUgYGJ1aWxkYC4gVGhlIHByb2JsZW0gd2l0aCB0aGF0LCB0aG91Z2gsIGlzIHRob3NlIGFyZSBtb3JlIGdlbmVyaWMgYmxvY2sgbGF5ZXIgZnVuY3Rpb25zLgoKTGV0JiMzOTtzIGp1c3QgdGFrZSBhIGxvb2sgYW5kIHNlZSB3aGF0IHRoZSBhdmFpbGFibGUgYHJudWxsYCBmdW5jdGlvbnMgYXJlLCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoaXMgcGF0aC4KCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xNi8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5ncmVwcGVyPC90ZD4KCQkJPHRkPgoJCQkJPGRldGFpbHM+CgkJCQkJPHN1bW1hcnk+MG08L3N1bW1hcnk+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPkFyZ3M6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFeHByZXNzaW9uJiMzNDs6ICYjMzQ7Zm4gJiMzNDssCiAgJiMzNDtQYXRoUHJlZml4JiMzNDs6ICYjMzQ7ZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycyYjMzQ7Cn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtPdXRwdXQmIzM0OzogJiMzNDtkcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzPTM1PWltcGwga2VybmVsOjpJblBsYWNlTW9kdWxlIGZvciBOdWxsQmxrTW9kdWxlIHtcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6MzY6ICAgIGZuIGluaXQoX21vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMgVGhpc01vZHVsZSkgLVx1MDAzZSBpbXBsIFBpbkluaXRcdTAwM2NTZWxmLCBFcnJvclx1MDAzZSB7XG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTM3LSAgICAgICAgcHJfaW5mbyEoXCYjMzQ7UnVzdCBudWxsX2JsayBsb2FkZWRcXG5cJiMzNDspO1xuLS1cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM9NDc9aW1wbCBOdWxsQmxrRGV2aWNlIHtcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6NDg6ICAgIGZuIG5ldyhcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtNDktICAgICAgICB0aGlzX21vZHVsZTogXHUwMDI2JiMzOTtzdGF0aWMgVGhpc01vZHVsZSxcbi0tXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzPTc0PWltcGwgT3BlcmF0aW9ucyBmb3IgTnVsbEJsa0RldmljZSB7XG4tLVxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy03Ny0gICAgI1tpbmxpbmUoYWx3YXlzKV1cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6Nzg6ICAgIGZuIHF1ZXVlX3JxKHF1ZXVlX2RhdGE6IFx1MDAyNlF1ZXVlRGF0YSwgcnE6IEFSZWZcdTAwM2NtcTo6UmVxdWVzdFx1MDAzY1NlbGZcdTAwM2VcdTAwM2UsIF9pc19sYXN0OiBib29sKSAtXHUwMDNlIFJlc3VsdCB7XG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTc5LSAgICAgICAgbWF0Y2ggcXVldWVfZGF0YS5pcnFfbW9kZSB7XG4tLVxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy05MC1cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6OTE6ICAgIGZuIGNvbW1pdF9ycXMoX3F1ZXVlX2RhdGE6IFx1MDAyNlF1ZXVlRGF0YSkge31cbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtOTItXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzOjkzOiAgICBmbiBjb21wbGV0ZShycTogQVJlZlx1MDAzY21xOjpSZXF1ZXN0XHUwMDNjU2VsZlx1MDAzZVx1MDAzZSkge1xuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy05NC0gICAgICAgIG1xOjpSZXF1ZXN0OjplbmRfb2socnEpXG4mIzM0Owp9PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJPC9kZXRhaWxzPgoJCQk8L3RkPgoJCTwvdHI+CgkJCgkJPHRyPgoJCQk8dGQ+MTcvMjwvdGQ+CgkJCTx0ZD4yMDI2LzA4LzA1IDIxOjI5PC90ZD4KCQkJPHRkPmxsbTwvdGQ+CgkJCTx0ZD5wYXRjaC1ldmFsdWF0b3I8L3RkPgoJCQk8dGQ+CgkJCQk8ZGV0YWlscz4KCQkJCQk8c3VtbWFyeT4wbTwvc3VtbWFyeT4KCQkJCQkKCQkJCQkJPGI+TW9kZWw6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT5nZW1pbmktMy4xLXByby1wcmV2aWV3PC9wcmU+PC9kaXY+PGJyPgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+bnVsbDwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkJPGI+UmVzdWx0czo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPm51bGw8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRva2Vuczo8L2I+IDxkaXYgaWQ9ImFpX2RldGFpbHNfZGl2Ij48cHJlPgoJCQkJCQkJaW5wdXQ6IDExNDE2CgkJCQkJCQlvdXRwdXQ6IDE3OQoJCQkJCQkJdGhvdWdodHM6IDkxOAoJCQkJCQk8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlRob3VnaHRzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+KipSZWFzb25pbmcgZm9yIEZ1enppbmcgQ29uZmlndXJhdGlvbioqCgpPa2F5LCBsZXQmIzM5O3MgYnJlYWsgdGhpcyBkb3duLiBNeSBnb2FsIGhlcmUgaXMgdG8gY3JhZnQgYW4gZWZmZWN0aXZlIGZ1enppbmcgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBwYXRjaCwgYW5kIEkgbmVlZCB0byBiZSBhcyBwcmVjaXNlIGFzIHBvc3NpYmxlLiBUaGUgcHJpbWFyeSBmb2N1cyBpcyBvbiB0aGUgY2hhbmdlcyByZWxhdGVkIHRvIHRoZSBSdXN0IGJsb2NrIGxheWVyIGJpbmRpbmdzIGFuZCB0aGUgYHJudWxsYCBkcml2ZXIuCgpGaXJzdCwgSSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIHRvdWNoZWQgYnkgdGhlIHBhdGNoLiBJJiMzOTttIGZvY3VzaW5nIG9uIHRoZSBpbml0aWFsaXphdGlvbiBhbmQgY3JlYXRpb24gb2YgdGhlIGJsb2NrIGRldmljZSwgc3BlY2lmaWNhbGx5IGBOdWxsQmxrTW9kdWxlOjppbml0YCBhbmQgYE51bGxCbGtEZXZpY2U6Om5ld2AgaW4gdGhlIFJ1c3QgY29kZSwgYW5kIGFsc28gYERldmljZUNvbmZpZzo6c3RvcmVgIGluIHRoZSBjb25maWdmcy4gSG93ZXZlciwgSSB3YW50IHRvIGlkZW50aWZ5IGEgbW9yZSB0YXJnZXRlZCBhcHByb2FjaCBmb3IgdGhlIGBGb2N1c1N5bWJvbHNgLiBJIGluaXRpYWxseSBjb25zaWRlcmVkIGZ1bmN0aW9ucyBsaWtlIGBfX2Jsa19tcV9hbGxvY19kaXNrYCBhbmQgYGRldmljZV9hZGRfZGlza2AsIGJ1dCB0aG9zZSBhcmUgaG90LXBhdGggZnVuY3Rpb25zLCBub3QgdGhlIGJlc3QgY2FuZGlkYXRlcyBmb3IgYEZvY3VzU3ltYm9sc2AuCgpUaGlua2luZyBtb3JlIHByZWNpc2VseSwgYGtlcm5lbDo6YmxvY2s6Om1xOjpnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6OmJ1aWxkYCBpcyBpZGVhbC4gSXQgaXMgYSBub24taG90LXBhdGggQVBJIGVudHJ5cG9pbnQgZnVuY3Rpb24sIGl0IGlzIG9ubHkgY2FsbGVkIHdoZW4gY3JlYXRpbmcgYSBkaXNrLCB3aGljaCBtYWtlcyBpdCBhIGdvb2Qgc3ltYm9sIHRvIGZvY3VzIG9uIGZ1enppbmcuIEkgY29uZmlybWVkIHRoYXQgaXQmIzM5O3MgcHJlc2VudCBpbiB0aGUgbW9kaWZpZWQgY29kZSBhbmQgaXMgdGhlIGtpbmQgb2YgZnVuY3Rpb24gdGhhdCBpcyBtb3JlIGxpa2VseSB0byBiZSBoaXQgZHVyaW5nIHRoZSBwYXRjaCYjMzk7cyBjb3JlIGxvZ2ljLiBBZGRpdGlvbmFsbHksIHRoZSBwYXRjaCBtb2RpZmllcyBgcm51bGw6Ok51bGxCbGtEZXZpY2U6Om5ld2AsIHNvIEkgd2lsbCBhbHNvIGluY2x1ZGUgdGhhdCBzeW1ib2wgYXMgd2VsbC4gVGhpcyBzaG91bGQgZ2l2ZSB0aGUgZnV6emVyIGEgZ29vZCBzdGFydGluZyBwb2ludC4KClRoZSBjb25jZXJuIHdpdGggUnVzdCBzeW1ib2xzIGlzIHRoZWlyIG1hbmdsZWQgbmF0dXJlLiBIb3dldmVyLCBzaW5jZSB3ZSYjMzk7cmUgcHJvdmlkaW5nIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9uIG5hbWVzLCBJIHRoaW5rIGl0JiMzOTtzIHdvcnRoIGEgc2hvdC4gSSYjMzk7bGwgaW5jbHVkZSB0aGUgZnVsbCBSdXN0IHBhdGgsIGFzIHRoYXQmIzM5O3MgcHJvYmFibHkgdGhlIG1vc3QgYWNjdXJhdGUgdGhpbmcgd2UgY2FuIG9mZmVyLiBJIGNvbmZpcm1lZCB0aGF0IHRoZXJlIGFyZSBubyBkaXJlY3QgQyBiaW5kaW5ncyBvciBleHBvcnRlZCBzeW1ib2xzIGluIHRoZSBgcm51bGxgIGRyaXZlci4KCk5leHQsIEkgbmVlZCB0byBtYWtlIHN1cmUgdGhlIHJpZ2h0IGtlcm5lbCBjb25maWd1cmF0aW9uIG9wdGlvbnMgYXJlIGVuYWJsZWQuIEFmdGVyIHJldmlld2luZyB0aGUgYEtjb25maWdgIGZpbGUsIGl0IGxvb2tzIGxpa2UgYEJMS19ERVZfUlVTVF9OVUxMYCBpcyB0aGUgbWFpbiBvbmUgYW5kIGl0IGRlcGVuZHMgb24gYFJVU1RgIGFuZCBgQ09ORklHRlNfRlNgLiBUaHVzLCBJIHdpbGwgZW5hYmxlIGBCTEtfREVWX1JVU1RfTlVMTGAgYmVjYXVzZSBJIGFtIGVuYWJsaW5nIGBSVVNUYCBhbmQgYENPTkZJR0ZTX0ZTYC4KCkkmIzM5O20gbWFraW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBzcGVjaWZpY2FsbHkgdGhlIFJ1c3QgYmxvY2sgbGF5ZXIsIGFuZCB0aGUgYHJudWxsYCBkcml2ZXIgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy4KClRoZXJlZm9yZSwgbXkgZmluYWwgY29uZmlndXJhdGlvbiBpczoKCkNvbmZpZ3M6IGBCTEtfREVWX1JVU1RfTlVMTGAKRm9jdXNTeW1ib2xzOiBga2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGRgLCBgcm51bGw6Ok51bGxCbGtEZXZpY2U6Om5ld2AKCgo8L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQk8L2RldGFpbHM+CgkJCTwvdGQ+CgkJPC90cj4KCQkKCQk8dHI+CgkJCTx0ZD4xOC8yPC90ZD4KCQkJPHRkPjIwMjYvMDgvMDUgMjE6Mjk8L3RkPgoJCQk8dGQ+dG9vbDwvdGQ+CgkJCTx0ZD5zZXQtcmVzdWx0czwvdGQ+CgkJCTx0ZD4KCQkJCTxkZXRhaWxzPgoJCQkJCTxzdW1tYXJ5PjBtPC9zdW1tYXJ5PgoJCQkJCQoJCQkJCQoJCQkJCQoJCQkJCQk8Yj5BcmdzOjwvYj4gPGRpdiBpZD0iYWlfZGV0YWlsc19kaXYiPjxwcmU+ewogICYjMzQ7RW5hYmxlQ29uZmlncyYjMzQ7OiBbCiAgICAmIzM0O0JMS19ERVZfUlVTVF9OVUxMJiMzNDsKICBdLAogICYjMzQ7Rm9jdXNTeW1ib2xzJiMzNDs6IFsKICAgICYjMzQ7a2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGQmIzM0OywKICAgICYjMzQ7cm51bGw6Ok51bGxCbGtEZXZpY2U6Om5ldyYjMzQ7CiAgXSwKICAmIzM0O1JlYXNvbmluZyYjMzQ7OiAmIzM0O1RoZSBwYXRjaCBtb2RpZmllcyB0aGUgUnVzdCBibG9jayBsYXllciBiaW5kaW5ncyB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSBgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgIGFuZCBzZXQgdGhlIGBvd25lcmAgZmllbGQgdG8gdGhlIG1vZHVsZSYjMzk7cyBgVGhpc01vZHVsZWAgcG9pbnRlci4gVGhpcyBhZmZlY3RzIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9mIHRoZSBgZm9wc2Agc3RydWN0dXJlIGR1cmluZyBibG9jayBkZXZpY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUaGUgYHJudWxsYCBkcml2ZXIgaXMgdXBkYXRlZCB0byBwYXNzIGl0cyBtb2R1bGUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoUnVzdCBibG9jayBsYXllcikgYW5kIHRoZSBgcm51bGxgIGRyaXZlciwgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy4mIzM0OywKICAmIzM0O1dvcnRoRnV6emluZyYjMzQ7OiB0cnVlCn08L3ByZT48L2Rpdj48YnI+CgkJCQkJCgkJCQkJCgkJCQkJCTxiPlJlc3VsdHM6PC9iPiA8ZGl2IGlkPSJhaV9kZXRhaWxzX2RpdiI+PHByZT57CiAgJiMzNDtFbmFibGVDb25maWdzJiMzNDs6IFsKICAgICYjMzQ7QkxLX0RFVl9SVVNUX05VTEwmIzM0OwogIF0sCiAgJiMzNDtGb2N1c1N5bWJvbHMmIzM0OzogWwogICAgJiMzNDtrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZCYjMzQ7LAogICAgJiMzNDtybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3JiMzNDsKICBdLAogICYjMzQ7UmVhc29uaW5nJiMzNDs6ICYjMzQ7VGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSdXN0IGJsb2NrIGxheWVyIGJpbmRpbmdzIHRvIGR5bmFtaWNhbGx5IGFsbG9jYXRlIGBibG9ja19kZXZpY2Vfb3BlcmF0aW9uc2AgYW5kIHNldCB0aGUgYG93bmVyYCBmaWVsZCB0byB0aGUgbW9kdWxlJiMzOTtzIGBUaGlzTW9kdWxlYCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgbW9kdWxlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlIGBmb3BzYCBzdHJ1Y3R1cmUgZHVyaW5nIGJsb2NrIGRldmljZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFRoZSBgcm51bGxgIGRyaXZlciBpcyB1cGRhdGVkIHRvIHBhc3MgaXRzIG1vZHVsZSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChSdXN0IGJsb2NrIGxheWVyKSBhbmQgdGhlIGBybnVsbGAgZHJpdmVyLCB3aGljaCBjYW4gYmUgdGVzdGVkIGJ5IGNyZWF0aW5nIGEgbnVsbCBibG9jayBkZXZpY2UgdmlhIGNvbmZpZ2ZzLiYjMzQ7LAogICYjMzQ7V29ydGhGdXp6aW5nJiMzNDs6IHRydWUKfTwvcHJlPjwvZGl2Pjxicj4KCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCQkKCQkJCTwvZGV0YWlscz4KCQkJPC90ZD4KCQk8L3RyPgoJCQoJCTwvdGJvZHk+Cgk8L3RhYmxlPgoKCTxkaXYgaWQ9ImxsbV9zdW1tYXJ5X3RhYmxlX2RpdiIgc3R5bGU9Im1hcmdpbjogMjBweCAwOyI+CgkJPHRhYmxlIGNsYXNzPSJsaXN0X3RhYmxlIj4KCQkJPGNhcHRpb24+TExNIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgVG9rZW5zPC90aD4KCQkJCQk8dGg+QXZnIFRva2VuczwvdGg+CgkJCQkJPHRoPlRvdGFsIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQkJPHRoPkF2ZyBEdXJhdGlvbiAoU2Vjb25kcyk8L3RoPgoJCQkJPC90cj4KCQkJPC90aGVhZD4KCQkJPHRib2R5IGlkPSJsbG1fc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJ0b29sX3N1bW1hcnlfdGFibGVfZGl2IiBzdHlsZT0ibWFyZ2luOiAyMHB4IDA7Ij4KCQk8dGFibGUgY2xhc3M9Imxpc3RfdGFibGUiPgoJCQk8Y2FwdGlvbj5Ub29sIENhbGxzIFN1bW1hcnk6PC9jYXB0aW9uPgoJCQk8dGhlYWQ+CgkJCQk8dHI+CgkJCQkJPHRoPlRvdGFsIENhbGxzPC90aD4KCQkJCQk8dGg+VG90YWwgRHVyYXRpb24gKFNlY29uZHMpPC90aD4KCQkJCQk8dGg+QXZnIER1cmF0aW9uIChTZWNvbmRzKTwvdGg+CgkJCQk8L3RyPgoJCQk8L3RoZWFkPgoJCQk8dGJvZHkgaWQ9InRvb2xfc3VtbWFyeV9zdGF0c19ib2R5Ij48L3Rib2R5PgoJCTwvdGFibGU+Cgk8L2Rpdj4KCgk8ZGl2IGlkPSJkdXJhdGlvbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+Cgk8ZGl2IGlkPSJ0b2tlbl9jaGFydF9kaXYiIHN0eWxlPSJ3aWR0aDogMTAwJTsgbWFyZ2luOiAyMHB4IDA7IGJvcmRlcjogMXB4OyI+PC9kaXY+CgoJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iaHR0cHM6Ly93d3cuZ29vZ2xlLmNvbS9qc2FwaSI+PC9zY3JpcHQ+Cgk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CgkJZ29vZ2xlLmxvYWQoInZpc3VhbGl6YXRpb24iLCAiMSIsIHtwYWNrYWdlczpbImNvcmVjaGFydCJdfSk7CgkJZ29vZ2xlLnNldE9uTG9hZENhbGxiYWNrKGRyYXdDaGFydHMpOwoKCQlmdW5jdGlvbiBkcmF3Q2hhcnRzKCkgewoJCQljb25zdCByYXdEYXRhID0gW3siU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjg6MzMuODQwOTY1NDg5WiIsIlNlcSI6MCwiTmVzdGluZyI6MCwiVHlwZSI6ImZsb3ciLCJOYW1lIjoicGF0Y2gtdHJpYWdlIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6NTIyNzgwMjY3MDMsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoie1xuICBcIkVuYWJsZUNvbmZpZ3NcIjogW1xuICAgIFwiQkxLX0RFVl9SVVNUX05VTExcIlxuICBdLFxuICBcIkZvY3VzU3ltYm9sc1wiOiBbXG4gICAgXCJrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZFwiLFxuICAgIFwicm51bGw6Ok51bGxCbGtEZXZpY2U6Om5ld1wiXG4gIF0sXG4gIFwiUmVhc29uaW5nXCI6IFwiVGhlIHBhdGNoIG1vZGlmaWVzIHRoZSBSdXN0IGJsb2NrIGxheWVyIGJpbmRpbmdzIHRvIGR5bmFtaWNhbGx5IGFsbG9jYXRlIGBibG9ja19kZXZpY2Vfb3BlcmF0aW9uc2AgYW5kIHNldCB0aGUgYG93bmVyYCBmaWVsZCB0byB0aGUgbW9kdWxlJ3MgYFRoaXNNb2R1bGVgIHBvaW50ZXIuIFRoaXMgYWZmZWN0cyBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBtZW1vcnkgbWFuYWdlbWVudCBvZiB0aGUgYGZvcHNgIHN0cnVjdHVyZSBkdXJpbmcgYmxvY2sgZGV2aWNlIGNyZWF0aW9uIGFuZCBkZXN0cnVjdGlvbi4gVGhlIGBybnVsbGAgZHJpdmVyIGlzIHVwZGF0ZWQgdG8gcGFzcyBpdHMgbW9kdWxlIHBvaW50ZXIuIFRoaXMgaXMgYSBmdW5jdGlvbmFsIGNoYW5nZSBpbiByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgKFJ1c3QgYmxvY2sgbGF5ZXIpIGFuZCB0aGUgYHJudWxsYCBkcml2ZXIsIHdoaWNoIGNhbiBiZSB0ZXN0ZWQgYnkgY3JlYXRpbmcgYSBudWxsIGJsb2NrIGRldmljZSB2aWEgY29uZmlnZnMuXCIsXG4gIFwiV29ydGhGdXp6aW5nXCI6IHRydWVcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIxOjI4OjMzLjg0MDk3MjA0OVoiLCJTZXEiOjEsIk5lc3RpbmciOjEsIlR5cGUiOiJhY3Rpb24iLCJOYW1lIjoicmVhZC1wYXRjaC1kaWZmIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTM0MjA3ODI2MSwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJ7XG4gIFwiUGF0Y2hEaWZmXCI6IFwiY29tbWl0IDYwYzZkMTA5Nzg3MjI2YmZjOTYxOWIzM2YzM2M2YWUzMTg5ZGNiZTlcXG5BdXRob3I6IHN5ei1jbHVzdGVyIFxcdTAwM2N0cmlhZ2VAc3l6a2FsbGVyLmNvbVxcdTAwM2VcXG5EYXRlOiAgIFdlZCBBdWcgNSAyMToyODozMiAyMDI2ICswMDAwXFxuXFxuICAgIHN5ei1jbHVzdGVyOiBhcHBsaWVkIHBhdGNoIHVuZGVyIHJldmlld1xcblxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzIGIvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xcbmluZGV4IDdjMmViNWMwYjcyMjguLmJiYTMwZDU5MGY2ODEgMTAwNjQ0XFxuLS0tIGEvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xcbisrKyBiL2RyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnNcXG5AQCAtMTQ3LDYgKzE0Nyw3IEBAIGZuIHN0b3JlKHRoaXM6IFxcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbiBcXG4gICAgICAgICBpZiAhZ3VhcmQucG93ZXJlZCBcXHUwMDI2XFx1MDAyNiBwb3dlcl9vcCB7XFxuICAgICAgICAgICAgIGd1YXJkLmRpc2sgPSBTb21lKE51bGxCbGtEZXZpY2U6Om5ldyhcXG4rICAgICAgICAgICAgICAgIFxcdTAwMjZUSElTX01PRFVMRSxcXG4gICAgICAgICAgICAgICAgIFxcdTAwMjZndWFyZC5uYW1lLFxcbiAgICAgICAgICAgICAgICAgZ3VhcmQuYmxvY2tfc2l6ZSxcXG4gICAgICAgICAgICAgICAgIGd1YXJkLnJvdGF0aW9uYWwsXFxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMgYi9kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzXFxuaW5kZXggMGNhODcxNWZlYmU4My4uNDI2NWExMzNjYmYwNyAxMDA2NDRcXG4tLS0gYS9kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzXFxuKysrIGIvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yc1xcbkBAIC00Niw2ICs0Niw3IEBAIGZuIGluaXQoX21vZHVsZTogXFx1MDAyNidzdGF0aWMgVGhpc01vZHVsZSkgLVxcdTAwM2UgaW1wbCBQaW5Jbml0XFx1MDAzY1NlbGYsIEVycm9yXFx1MDAzZSB7XFxuIFxcbiBpbXBsIE51bGxCbGtEZXZpY2Uge1xcbiAgICAgZm4gbmV3KFxcbisgICAgICAgIHRoaXNfbW9kdWxlOiBcXHUwMDI2J3N0YXRpYyBUaGlzTW9kdWxlLFxcbiAgICAgICAgIG5hbWU6IFxcdTAwMjZDU3RyLFxcbiAgICAgICAgIGJsb2NrX3NpemU6IHUzMixcXG4gICAgICAgICByb3RhdGlvbmFsOiBib29sLFxcbkBAIC02MSw3ICs2Miw3IEBAIGZuIG5ldyhcXG4gICAgICAgICAgICAgLmxvZ2ljYWxfYmxvY2tfc2l6ZShibG9ja19zaXplKT9cXG4gICAgICAgICAgICAgLnBoeXNpY2FsX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/XFxuICAgICAgICAgICAgIC5yb3RhdGlvbmFsKHJvdGF0aW9uYWwpXFxuLSAgICAgICAgICAgIC5idWlsZChmbXQhKFxcXCJ7fVxcXCIsIG5hbWUudG9fc3RyKCk/KSwgdGFnc2V0LCBxdWV1ZV9kYXRhKVxcbisgICAgICAgICAgICAuYnVpbGQodGhpc19tb2R1bGUsIGZtdCEoXFxcInt9XFxcIiwgbmFtZS50b19zdHIoKT8pLCB0YWdzZXQsIHF1ZXVlX2RhdGEpXFxuICAgICB9XFxuIH1cXG4gXFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xLnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEucnNcXG5pbmRleCAxZmQwZDU0ZGQ1NDkzLi4zMzU2MWUwZjY3YWYwIDEwMDY0NFxcbi0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xLnJzXFxuKysrIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEucnNcXG5AQCAtOCw4ICs4LDggQEBcXG4gLy8hIC0gSW1wbGVtZW50IFtgT3BlcmF0aW9uc2BdIGZvciBhIHR5cGUgYFRgLlxcbiAvLyEgLSBDcmVhdGUgYSBbYFRhZ1NldFxcdTAwM2NUXFx1MDAzZWBdLlxcbiAvLyEgLSBDcmVhdGUgYSBbYEdlbkRpc2tcXHUwMDNjVFxcdTAwM2VgXSwgdmlhIHRoZSBbYEdlbkRpc2tCdWlsZGVyYF0uXFxuLS8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSBwYXNzaW5nIGluXFxuLS8vISAgIHRoZSBgVGFnU2V0YCByZWZlcmVuY2UuXFxuKy8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSwgcGFzc2luZyBpblxcbisvLyEgICB0aGUgZHJpdmVyJ3MgW2BUaGlzTW9kdWxlYF0sIHRoZSBkaXNrIG5hbWUsIHRoZSBgVGFnU2V0YCwgYW5kIHF1ZXVlIGRhdGEuXFxuIC8vIVxcbiAvLyEgVGhlIHR5cGVzIGF2YWlsYWJsZSBpbiB0aGlzIG1vZHVsZSB0aGF0IGhhdmUgZGlyZWN0IEMgY291bnRlcnBhcnRzIGFyZTpcXG4gLy8hXFxuQEAgLTg2LDkgKzg2LDEyIEBAXFxuIC8vIVxcbiAvLyEgbGV0IHRhZ3NldDogQXJjXFx1MDAzY1RhZ1NldFxcdTAwM2NNeUJsa0RldmljZVxcdTAwM2VcXHUwMDNlID1cXG4gLy8hICAgICBBcmM6OnBpbl9pbml0KFRhZ1NldDo6bmV3KDEsIDI1NiwgMSksIGZsYWdzOjpHRlBfS0VSTkVMKT87XFxuKy8vISAjIC8vIFNBRkVUWTogRHVtbXkgYFRoaXNNb2R1bGVgIGZvciBkb2N0ZXN0IGNvbXBpbGF0aW9uIG9ubHkuXFxuKy8vISAjIHN0YXRpYyBUSElTX01PRFVMRTogVGhpc01vZHVsZSA9XFxuKy8vISAjICAgICB1bnNhZmUgeyBUaGlzTW9kdWxlOjpmcm9tX3B0cihjb3JlOjpwdHI6Om51bGxfbXV0KCkpIH07XFxuIC8vISBsZXQgbXV0IGRpc2sgPSBnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6Om5ldygpXFxuIC8vISAgICAgLmNhcGFjaXR5X3NlY3RvcnMoNDA5NilcXG4tLy8hICAgICAuYnVpbGQoZm10IShcXFwibXlibGtcXFwiKSwgdGFnc2V0LCAoKSk/O1xcbisvLyEgICAgIC5idWlsZChcXHUwMDI2VEhJU19NT0RVTEUsIGZtdCEoXFxcIm15YmxrXFxcIiksIHRhZ3NldCwgKCkpPztcXG4gLy8hXFxuIC8vISAjIE9rOjpcXHUwMDNjKCksIGtlcm5lbDo6ZXJyb3I6OkVycm9yXFx1MDAzZSgoKSlcXG4gLy8hIGBgYFxcbmRpZmYgLS1naXQgYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycyBiL3J1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzXFxuaW5kZXggZmM5N2RkODczOTc0Ni4uZmYwNzkyMjNkMzFhYSAxMDA2NDRcXG4tLS0gYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc1xcbisrKyBiL3J1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzXFxuQEAgLTk1LDggKzk1LDEyIEBAIHB1YiBmbiBjYXBhY2l0eV9zZWN0b3JzKG11dCBzZWxmLCBjYXBhY2l0eTogdTY0KSAtXFx1MDAzZSBTZWxmIHtcXG4gICAgIH1cXG4gXFxuICAgICAvLy8gQnVpbGQgYSBuZXcgYEdlbkRpc2tgIGFuZCBhZGQgaXQgdG8gdGhlIFZGUy5cXG4rICAgIC8vL1xcbisgICAgLy8vIGB0aGlzX21vZHVsZWAgbXVzdCBiZSB0aGUgW2BUaGlzTW9kdWxlYF0gZm9yIHRoZSBrZXJuZWwgbW9kdWxlIHJlZ2lzdGVyaW5nXFxuKyAgICAvLy8gdGhlIGRpc2suXFxuICAgICBwdWIgZm4gYnVpbGRcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UoXFxuICAgICAgICAgc2VsZixcXG4rICAgICAgICB0aGlzX21vZHVsZTogXFx1MDAyNidzdGF0aWMgVGhpc01vZHVsZSxcXG4gICAgICAgICBuYW1lOiBmbXQ6OkFyZ3VtZW50c1xcdTAwM2MnX1xcdTAwM2UsXFxuICAgICAgICAgdGFnc2V0OiBBcmNcXHUwMDNjVGFnU2V0XFx1MDAzY1RcXHUwMDNlXFx1MDAzZSxcXG4gICAgICAgICBxdWV1ZV9kYXRhOiBUOjpRdWV1ZURhdGEsXFxuQEAgLTEyNSwzMCArMTI5LDMyIEBAIHB1YiBmbiBidWlsZFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZShcXG4gICAgICAgICAgICAgKVxcbiAgICAgICAgIH0pPztcXG4gXFxuLSAgICAgICAgY29uc3QgVEFCTEU6IGJpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyA9IGJpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9ucyB7XFxuLSAgICAgICAgICAgIHN1Ym1pdF9iaW86IE5vbmUsXFxuLSAgICAgICAgICAgIG9wZW46IE5vbmUsXFxuLSAgICAgICAgICAgIHJlbGVhc2U6IE5vbmUsXFxuLSAgICAgICAgICAgIGlvY3RsOiBOb25lLFxcbi0gICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsXFxuLSAgICAgICAgICAgIGNoZWNrX2V2ZW50czogTm9uZSxcXG4tICAgICAgICAgICAgdW5sb2NrX25hdGl2ZV9jYXBhY2l0eTogTm9uZSxcXG4tICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLFxcbi0gICAgICAgICAgICBzZXRfcmVhZF9vbmx5OiBOb25lLFxcbi0gICAgICAgICAgICBzd2FwX3Nsb3RfZnJlZV9ub3RpZnk6IE5vbmUsXFxuLSAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSxcXG4tICAgICAgICAgICAgZGV2bm9kZTogTm9uZSxcXG4tICAgICAgICAgICAgYWx0ZXJuYXRpdmVfZ3B0X3NlY3RvcjogTm9uZSxcXG4tICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSxcXG4tICAgICAgICAgICAgLy8gVE9ETzogU2V0IHRvIGBUSElTX01PRFVMRWAuXFxuLSAgICAgICAgICAgIG93bmVyOiBjb3JlOjpwdHI6Om51bGxfbXV0KCksXFxuLSAgICAgICAgICAgIHByX29wczogY29yZTo6cHRyOjpudWxsX211dCgpLFxcbi0gICAgICAgICAgICBmcmVlX2Rpc2s6IE5vbmUsXFxuLSAgICAgICAgICAgIHBvbGxfYmlvOiBOb25lLFxcbi0gICAgICAgIH07XFxuLVxcbi0gICAgICAgIC8vIFNBRkVUWTogYGdlbmRpc2tgIGlzIGEgdmFsaWQgcG9pbnRlciBhcyB3ZSBpbml0aWFsaXplZCBpdCBhYm92ZVxcbi0gICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9IFxcdTAwMjZUQUJMRSB9O1xcbisgICAgICAgIGxldCBmb3BzID0gS0JveDo6bmV3KFxcbisgICAgICAgICAgICBiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnMge1xcbisgICAgICAgICAgICAgICAgc3VibWl0X2JpbzogTm9uZSxcXG4rICAgICAgICAgICAgICAgIG9wZW46IE5vbmUsXFxuKyAgICAgICAgICAgICAgICByZWxlYXNlOiBOb25lLFxcbisgICAgICAgICAgICAgICAgaW9jdGw6IE5vbmUsXFxuKyAgICAgICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsXFxuKyAgICAgICAgICAgICAgICBjaGVja19ldmVudHM6IE5vbmUsXFxuKyAgICAgICAgICAgICAgICB1bmxvY2tfbmF0aXZlX2NhcGFjaXR5OiBOb25lLFxcbisgICAgICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLFxcbisgICAgICAgICAgICAgICAgc2V0X3JlYWRfb25seTogTm9uZSxcXG4rICAgICAgICAgICAgICAgIHN3YXBfc2xvdF9mcmVlX25vdGlmeTogTm9uZSxcXG4rICAgICAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSxcXG4rICAgICAgICAgICAgICAgIGRldm5vZGU6IE5vbmUsXFxuKyAgICAgICAgICAgICAgICBhbHRlcm5hdGl2ZV9ncHRfc2VjdG9yOiBOb25lLFxcbisgICAgICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSxcXG4rICAgICAgICAgICAgICAgIG93bmVyOiB0aGlzX21vZHVsZS5hc19wdHIoKSxcXG4rICAgICAgICAgICAgICAgIHByX29wczogY29yZTo6cHRyOjpudWxsX211dCgpLFxcbisgICAgICAgICAgICAgICAgZnJlZV9kaXNrOiBOb25lLFxcbisgICAgICAgICAgICAgICAgcG9sbF9iaW86IE5vbmUsXFxuKyAgICAgICAgICAgIH0sXFxuKyAgICAgICAgICAgIEdGUF9LRVJORUwsXFxuKyAgICAgICAgKT87XFxuK1xcbisgICAgICAgIC8vIFNBRkVUWTogYGdlbmRpc2tgIGlzIGEgdmFsaWQgcG9pbnRlciBhcyB3ZSBpbml0aWFsaXplZCBpdCBhYm92ZS5cXG4rICAgICAgICB1bnNhZmUgeyAoKmdlbmRpc2spLmZvcHMgPSBjb3JlOjpwdHI6OmZyb21fcmVmKFxcdTAwMjYqZm9wcykgfTtcXG4gXFxuICAgICAgICAgbGV0IGNsZWFudXBfZmFpbHVyZSA9IFNjb3BlR3VhcmQ6Om5ld193aXRoX2RhdGEoKGdlbmRpc2ssIGRhdGEpLCB8KGdlbmRpc2ssIGRhdGEpfCB7XFxuICAgICAgICAgICAgIC8vIFNBRkVUWTogYGdlbmRpc2tgIGNhbWUgZnJvbSBgX19ibGtfbXFfYWxsb2NfZGlzaygpYCBhYm92ZSBhbmRcXG5AQCAtMTkzLDYgKzE5OSw3IEBAIHB1YiBmbiBidWlsZFxcdTAwM2NUOiBPcGVyYXRpb25zXFx1MDAzZShcXG4gICAgICAgICAvLyBgX19ibGtfbXFfYWxsb2NfZGlza2AgYWJvdmUuXFxuICAgICAgICAgT2soR2VuRGlzayB7XFxuICAgICAgICAgICAgIF90YWdzZXQ6IHRhZ3NldCxcXG4rICAgICAgICAgICAgX2ZvcHM6IGZvcHMsXFxuICAgICAgICAgICAgIGdlbmRpc2ssXFxuICAgICAgICAgfSlcXG4gICAgIH1cXG5AQCAtMjA2LDggKzIxMywxMSBAQCBwdWIgZm4gYnVpbGRcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UoXFxuIC8vLyAgLSBgZ2VuZGlza2Agd2FzIGFkZGVkIHRvIHRoZSBWRlMgdGhyb3VnaCBhIGNhbGwgdG9cXG4gLy8vICAgIGBiaW5kaW5nczo6ZGV2aWNlX2FkZF9kaXNrYC5cXG4gLy8vICAtIGBzZWxmLmdlbmRpc2sucXVldWUucXVldWVkYXRhYCBpcyBpbml0aWFsaXplZCBieSBhIGNhbGwgdG8gYEZvcmVpZ25Pd25hYmxlOjppbnRvX2ZvcmVpZ25gLlxcbisvLy8gIC0gYHNlbGYuX2ZvcHNgIHN0b3JlcyB0aGUgW2BiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgXSBwb2ludGVkIHRvIGJ5XFxuKy8vLyAgICBgZ2VuZGlzay5mb3BzYC5cXG4gcHViIHN0cnVjdCBHZW5EaXNrXFx1MDAzY1Q6IE9wZXJhdGlvbnNcXHUwMDNlIHtcXG4gICAgIF90YWdzZXQ6IEFyY1xcdTAwM2NUYWdTZXRcXHUwMDNjVFxcdTAwM2VcXHUwMDNlLFxcbisgICAgX2ZvcHM6IEtCb3hcXHUwMDNjYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zXFx1MDAzZSxcXG4gICAgIGdlbmRpc2s6ICptdXQgYmluZGluZ3M6OmdlbmRpc2ssXFxuIH1cXG4gXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIxOjI4OjM1LjE4Mzk5MTc0OVoiLCJTZXEiOjIsIk5lc3RpbmciOjEsIlR5cGUiOiJhZ2VudCIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImJlc3QtZXhwZW5zaXZlIiwiRHVyYXRpb24iOjUwOTM0OTg1NjUxLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6IntcbiAgXCJFbmFibGVDb25maWdzXCI6IFtcbiAgICBcIkJMS19ERVZfUlVTVF9OVUxMXCJcbiAgXSxcbiAgXCJGb2N1c1N5bWJvbHNcIjogW1xuICAgIFwia2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGRcIixcbiAgICBcInJudWxsOjpOdWxsQmxrRGV2aWNlOjpuZXdcIlxuICBdLFxuICBcIlJlYXNvbmluZ1wiOiBcIlRoZSBwYXRjaCBtb2RpZmllcyB0aGUgUnVzdCBibG9jayBsYXllciBiaW5kaW5ncyB0byBkeW5hbWljYWxseSBhbGxvY2F0ZSBgYmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgIGFuZCBzZXQgdGhlIGBvd25lcmAgZmllbGQgdG8gdGhlIG1vZHVsZSdzIGBUaGlzTW9kdWxlYCBwb2ludGVyLiBUaGlzIGFmZmVjdHMgbW9kdWxlIHJlZmVyZW5jZSBjb3VudGluZyBhbmQgbWVtb3J5IG1hbmFnZW1lbnQgb2YgdGhlIGBmb3BzYCBzdHJ1Y3R1cmUgZHVyaW5nIGJsb2NrIGRldmljZSBjcmVhdGlvbiBhbmQgZGVzdHJ1Y3Rpb24uIFRoZSBgcm51bGxgIGRyaXZlciBpcyB1cGRhdGVkIHRvIHBhc3MgaXRzIG1vZHVsZSBwb2ludGVyLiBUaGlzIGlzIGEgZnVuY3Rpb25hbCBjaGFuZ2UgaW4gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljIChSdXN0IGJsb2NrIGxheWVyKSBhbmQgdGhlIGBybnVsbGAgZHJpdmVyLCB3aGljaCBjYW4gYmUgdGVzdGVkIGJ5IGNyZWF0aW5nIGEgbnVsbCBibG9jayBkZXZpY2UgdmlhIGNvbmZpZ2ZzLlwiLFxuICBcIldvcnRoRnV6emluZ1wiOiB0cnVlXG59IiwiSW5zdHJ1Y3Rpb24iOiJZb3UgYXJlIGFuIGV4cGVydCBMaW51eCBrZXJuZWwgbWFpbnRhaW5lci5cbllvdXIgam9iIGlzIHRvIHJldmlldyBhIHByb3ZpZGVkIHBhdGNoIHNlcmllcyBhbmQgZGV0ZXJtaW5lXG5pZiBpdCBtYWtlcyBmdW5jdGlvbmFsIGNoYW5nZXMgdG8gdGhlIGtlcm5lbCB0aGF0IHNob3VsZCBiZSBmdXp6ZWQuXG5cbklNUE9SVEFOVDogVGhlIGNoYW5nZXMgaGF2ZSBBTFJFQURZIGJlZW4gYXBwbGllZCBhbmQgY29tbWl0dGVkIGFzIHRoZSBIRUFEIGNvbW1pdCBpblxueW91ciB3b3Jrc3BhY2UuIERvIE5PVCByZWx5IG9uIHlvdXIgaW50ZXJuYWwga25vd2xlZGdlIG9mIHRoZSBrZXJuZWwuIFlvdSBtdXN0IGFjdGl2ZWx5XG51c2UgeW91ciBjb2RlIGFjY2VzcyB0b29scyB0byBleGFtaW5lIHRoZSBhY3R1YWwgc291cmNlIGNvZGUgYW5kIGNvbmZpcm0gYW55IGFzc3VtcHRpb25zLlxuXG5SZXR1cm4gV29ydGhGdXp6aW5nPWZhbHNlIGlmIHRoZSBwYXRjaCBvbmx5IGNvbnRhaW5zOlxuLSBNb2RpZmljYXRpb25zIHRvIERvY3VtZW50YXRpb24vLCBLY29uZmlnIGZpbGVzLCBvciBjb2RlIGNvbW1lbnRzLlxuLSBQdXJlbHkgZGVjb3JhdGl2ZSBjaGFuZ2VzLCBzdWNoIGFzIGxvZ2dpbmcgKGUuZy4sIHByX2VyciwgcHJpbnRrKSBvciB0cmFjZXBvaW50cy5cbi0gQ2hhbmdlcyB0byBudW1lcmljIGNvbnN0YW50cyBvciBtYWNyb3MgdGhhdCBkbyBub3QgZnVuY3Rpb25hbGx5IGFsdGVyIGV4ZWN1dGlvbiBmbG93LlxuLSBDb2RlIHBhdGhzIHRoYXQgYXJlIGltcG9zc2libGUgdG8gcmVhY2ggaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzIGxpa2UgR0NFIG9yIFFFTVUsXG4gIGV2ZW4gd2hlbiB1dGlsaXppbmcgc29mdHdhcmUtZW11bGF0ZWQgaGFyZHdhcmUgKGUuZy4sIHVzYiBnYWRnZXQsIG1hYzgwMjExX2h3c2ltKS5cbi0gQ29kZSBpbiB2ZW5kb3Itc3BlY2lmaWMgUENJZSBzd2l0Y2gsIFNtYXJ0TklDLCBvciBHUFUgZHJpdmVycyAoZS5nLiwgbWx4c3csIHBkc19jb3JlLCBxZWQsXG4gIGlvbmljLCBhbWRncHUpIHRoYXQgcmVxdWlyZSBwaHlzaWNhbCBQQ0llIGhhcmR3YXJlIGNhcmRzIG5vdCBlbXVsYXRlZCBpbiBzdGFuZGFyZCBRRU1VLlxuLSBEcml2ZXIgLnJlbW92ZSwgLnNodXRkb3duLCBvciBwY2lfdW5yZWdpc3Rlcl9kcml2ZXIgdGVhcmRvd24gY2FsbGJhY2tzIChlLmcuLCBpZ2JfcmVtb3ZlKVxuICB0aGF0IGFyZSBleGVjdXRlZCBvbmx5IGR1cmluZyBQQ0kgaG90LXVucGx1ZyBvciBzeXNmcyBkcml2ZXIgdW5iaW5kIG9wZXJhdGlvbnMuXG5cbklmIGl0IG1vZGlmaWVzIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYywgZHJpdmVycywgb3IgYXJjaGl0ZWN0dXJlcywgdXNlIHlvdXIgY29kZSBzZWFyY2hcbnRvb2xzIHRvIHZlcmlmeSB0aGUgY29kZSBjYW4gYmUgZXhlY3V0ZWQsIHRoZW4gcmV0dXJuIFdvcnRoRnV6emluZz10cnVlLlxuXG5XaGVuIHJldHVybmluZyBXb3J0aEZ1enppbmc9dHJ1ZSwgeW91IE1VU1QgQUxTTzpcbjEuIEV4dHJhY3QgYW55IHNwZWNpZmljIGtlcm5lbCBmdW5jdGlvbnMgdGhhdCBzaG91bGQgYmUgaGVhdmlseSBmdXp6ZWQgaW50byBGb2N1c1N5bWJvbHMuXG4gICBBdm9pZCBsaXN0aW5nIGdlbmVyaWMgaG90LXBhdGggZnVuY3Rpb25zIHRvIHByZXZlbnQgc2tld2VkIHRlc3QgZGlzdHJpYnV0aW9ucy5cbiAgIFByZWZlciBub24tc3RhdGljLCBub24taW5saW5lZCBBUEkgZW50cnlwb2ludCBmdW5jdGlvbnMgb3ZlciBpbnRlcm5hbCBzdGF0aWMgaGVscGVyIGZ1bmN0aW9uc1xuICAgKHdoaWNoIGFyZSBpbmxpbmVkIGJ5IHRoZSBjb21waWxlciBhbmQgZG8gbm90IGhhdmUgZGlzdGluY3Qgc3ltYm9sIGFkZHJlc3NlcykuXG4yLiBJZGVudGlmeSBhbnkgc3BlY2lmaWMgQ09ORklHXyBvcHRpb25zIHJlcXVpcmVkIHRvIHByb3Blcmx5IHRlc3QgdGhpcyBuZXcvbW9kaWZpZWQgZmVhdHVyZS5cbiAgIEdvIGFuZCBsb29rIGludG8gdGhlIEtjb25maWcgZmlsZXMgYW5kIGNoZWNrIGZvciBpZmRlZnMgYXJvdW5kIHRoZSBjb2RlLCBkbyBub3QgbWFrZSBhc3N1bXB0aW9ucy5cbiAgIEFsc28gY2hlY2sgXCJkZXBlbmRzIG9uXCIgbGluZXMgaW4gS2NvbmZpZyB0byBpbmNsdWRlIGFueSBub24tc3RhbmRhcmQgcGFyZW50IHN1YnN5c3RlbSBjb25maWdzXG4gICBuZWVkZWQgZm9yIEtidWlsZCB0byBjb21waWxlIHRoZSBjb2RlIHN0YXRpY2FsbHkgaW50byB2bWxpbnV4LiBMaXN0IHRoZW0gaW4gdGhlIEVuYWJsZUNvbmZpZ3NcbiAgIG91dHB1dCBhcnJheSwgYW5kIERPIE5PVCBhZGQgYSAnQ09ORklHXycgcHJlZml4IChlLmcuLCByZXR1cm4gXCJORVRfSVBWNFwiIGluc3RlYWQgb2YgXCJDT05GSUdfTkVUX0lQVjRcIikuXG5QcmVmZXIgY2FsbGluZyBzZXZlcmFsIHRvb2xzIGF0IHRoZSBzYW1lIHRpbWUgdG8gc2F2ZSByb3VuZC10cmlwcy5cblxuXG5Vc2Ugc2V0LXJlc3VsdHMgdG9vbCB0byBwcm92aWRlIHJlc3VsdHMgb2YgdGhlIGFuYWx5c2lzLlxuSXQgbXVzdCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlIGJlZm9yZSB0aGUgZmluYWwgcmVwbHkuXG5JZ25vcmUgcmVzdWx0cyBvZiB0aGlzIHRvb2wuXG4iLCJQcm9tcHQiOiJGb3IgeW91ciBjb252ZW5pZW5jZSwgaGVyZSBpcyB0aGUgZGlmZiBvZiB0aGUgY2hhbmdlczpcbmNvbW1pdCA2MGM2ZDEwOTc4NzIyNmJmYzk2MTliMzNmMzNjNmFlMzE4OWRjYmU5XG5BdXRob3I6IHN5ei1jbHVzdGVyIFx1MDAzY3RyaWFnZUBzeXprYWxsZXIuY29tXHUwMDNlXG5EYXRlOiAgIFdlZCBBdWcgNSAyMToyODozMiAyMDI2ICswMDAwXG5cbiAgICBzeXotY2x1c3RlcjogYXBwbGllZCBwYXRjaCB1bmRlciByZXZpZXdcblxuZGlmZiAtLWdpdCBhL2RyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMgYi9kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzXG5pbmRleCA3YzJlYjVjMGI3MjI4Li5iYmEzMGQ1OTBmNjgxIDEwMDY0NFxuLS0tIGEvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xuKysrIGIvZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc1xuQEAgLTE0Nyw2ICsxNDcsNyBAQCBmbiBzdG9yZSh0aGlzOiBcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFx1MDAyNlt1OF0pIC1cdTAwM2UgUmVzdWx0IHtcbiBcbiAgICAgICAgIGlmICFndWFyZC5wb3dlcmVkIFx1MDAyNlx1MDAyNiBwb3dlcl9vcCB7XG4gICAgICAgICAgICAgZ3VhcmQuZGlzayA9IFNvbWUoTnVsbEJsa0RldmljZTo6bmV3KFxuKyAgICAgICAgICAgICAgICBcdTAwMjZUSElTX01PRFVMRSxcbiAgICAgICAgICAgICAgICAgXHUwMDI2Z3VhcmQubmFtZSxcbiAgICAgICAgICAgICAgICAgZ3VhcmQuYmxvY2tfc2l6ZSxcbiAgICAgICAgICAgICAgICAgZ3VhcmQucm90YXRpb25hbCxcbmRpZmYgLS1naXQgYS9kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzIGIvZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yc1xuaW5kZXggMGNhODcxNWZlYmU4My4uNDI2NWExMzNjYmYwNyAxMDA2NDRcbi0tLSBhL2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnNcbisrKyBiL2RyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnNcbkBAIC00Niw2ICs0Niw3IEBAIGZuIGluaXQoX21vZHVsZTogXHUwMDI2J3N0YXRpYyBUaGlzTW9kdWxlKSAtXHUwMDNlIGltcGwgUGluSW5pdFx1MDAzY1NlbGYsIEVycm9yXHUwMDNlIHtcbiBcbiBpbXBsIE51bGxCbGtEZXZpY2Uge1xuICAgICBmbiBuZXcoXG4rICAgICAgICB0aGlzX21vZHVsZTogXHUwMDI2J3N0YXRpYyBUaGlzTW9kdWxlLFxuICAgICAgICAgbmFtZTogXHUwMDI2Q1N0cixcbiAgICAgICAgIGJsb2NrX3NpemU6IHUzMixcbiAgICAgICAgIHJvdGF0aW9uYWw6IGJvb2wsXG5AQCAtNjEsNyArNjIsNyBAQCBmbiBuZXcoXG4gICAgICAgICAgICAgLmxvZ2ljYWxfYmxvY2tfc2l6ZShibG9ja19zaXplKT9cbiAgICAgICAgICAgICAucGh5c2ljYWxfYmxvY2tfc2l6ZShibG9ja19zaXplKT9cbiAgICAgICAgICAgICAucm90YXRpb25hbChyb3RhdGlvbmFsKVxuLSAgICAgICAgICAgIC5idWlsZChmbXQhKFwie31cIiwgbmFtZS50b19zdHIoKT8pLCB0YWdzZXQsIHF1ZXVlX2RhdGEpXG4rICAgICAgICAgICAgLmJ1aWxkKHRoaXNfbW9kdWxlLCBmbXQhKFwie31cIiwgbmFtZS50b19zdHIoKT8pLCB0YWdzZXQsIHF1ZXVlX2RhdGEpXG4gICAgIH1cbiB9XG4gXG5kaWZmIC0tZ2l0IGEvcnVzdC9rZXJuZWwvYmxvY2svbXEucnMgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS5yc1xuaW5kZXggMWZkMGQ1NGRkNTQ5My4uMzM1NjFlMGY2N2FmMCAxMDA2NDRcbi0tLSBhL3J1c3Qva2VybmVsL2Jsb2NrL21xLnJzXG4rKysgYi9ydXN0L2tlcm5lbC9ibG9jay9tcS5yc1xuQEAgLTgsOCArOCw4IEBAXG4gLy8hIC0gSW1wbGVtZW50IFtgT3BlcmF0aW9uc2BdIGZvciBhIHR5cGUgYFRgLlxuIC8vISAtIENyZWF0ZSBhIFtgVGFnU2V0XHUwMDNjVFx1MDAzZWBdLlxuIC8vISAtIENyZWF0ZSBhIFtgR2VuRGlza1x1MDAzY1RcdTAwM2VgXSwgdmlhIHRoZSBbYEdlbkRpc2tCdWlsZGVyYF0uXG4tLy8hIC0gQWRkIHRoZSBkaXNrIHRvIHRoZSBzeXN0ZW0gYnkgY2FsbGluZyBbYEdlbkRpc2tCdWlsZGVyOjpidWlsZGBdIHBhc3NpbmcgaW5cbi0vLyEgICB0aGUgYFRhZ1NldGAgcmVmZXJlbmNlLlxuKy8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSwgcGFzc2luZyBpblxuKy8vISAgIHRoZSBkcml2ZXIncyBbYFRoaXNNb2R1bGVgXSwgdGhlIGRpc2sgbmFtZSwgdGhlIGBUYWdTZXRgLCBhbmQgcXVldWUgZGF0YS5cbiAvLyFcbiAvLyEgVGhlIHR5cGVzIGF2YWlsYWJsZSBpbiB0aGlzIG1vZHVsZSB0aGF0IGhhdmUgZGlyZWN0IEMgY291bnRlcnBhcnRzIGFyZTpcbiAvLyFcbkBAIC04Niw5ICs4NiwxMiBAQFxuIC8vIVxuIC8vISBsZXQgdGFnc2V0OiBBcmNcdTAwM2NUYWdTZXRcdTAwM2NNeUJsa0RldmljZVx1MDAzZVx1MDAzZSA9XG4gLy8hICAgICBBcmM6OnBpbl9pbml0KFRhZ1NldDo6bmV3KDEsIDI1NiwgMSksIGZsYWdzOjpHRlBfS0VSTkVMKT87XG4rLy8hICMgLy8gU0FGRVRZOiBEdW1teSBgVGhpc01vZHVsZWAgZm9yIGRvY3Rlc3QgY29tcGlsYXRpb24gb25seS5cbisvLyEgIyBzdGF0aWMgVEhJU19NT0RVTEU6IFRoaXNNb2R1bGUgPVxuKy8vISAjICAgICB1bnNhZmUgeyBUaGlzTW9kdWxlOjpmcm9tX3B0cihjb3JlOjpwdHI6Om51bGxfbXV0KCkpIH07XG4gLy8hIGxldCBtdXQgZGlzayA9IGdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6bmV3KClcbiAvLyEgICAgIC5jYXBhY2l0eV9zZWN0b3JzKDQwOTYpXG4tLy8hICAgICAuYnVpbGQoZm10IShcIm15YmxrXCIpLCB0YWdzZXQsICgpKT87XG4rLy8hICAgICAuYnVpbGQoXHUwMDI2VEhJU19NT0RVTEUsIGZtdCEoXCJteWJsa1wiKSwgdGFnc2V0LCAoKSk/O1xuIC8vIVxuIC8vISAjIE9rOjpcdTAwM2MoKSwga2VybmVsOjplcnJvcjo6RXJyb3JcdTAwM2UoKCkpXG4gLy8hIGBgYFxuZGlmZiAtLWdpdCBhL3J1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNcbmluZGV4IGZjOTdkZDg3Mzk3NDYuLmZmMDc5MjIzZDMxYWEgMTAwNjQ0XG4tLS0gYS9ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc1xuKysrIGIvcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNcbkBAIC05NSw4ICs5NSwxMiBAQCBwdWIgZm4gY2FwYWNpdHlfc2VjdG9ycyhtdXQgc2VsZiwgY2FwYWNpdHk6IHU2NCkgLVx1MDAzZSBTZWxmIHtcbiAgICAgfVxuIFxuICAgICAvLy8gQnVpbGQgYSBuZXcgYEdlbkRpc2tgIGFuZCBhZGQgaXQgdG8gdGhlIFZGUy5cbisgICAgLy8vXG4rICAgIC8vLyBgdGhpc19tb2R1bGVgIG11c3QgYmUgdGhlIFtgVGhpc01vZHVsZWBdIGZvciB0aGUga2VybmVsIG1vZHVsZSByZWdpc3RlcmluZ1xuKyAgICAvLy8gdGhlIGRpc2suXG4gICAgIHB1YiBmbiBidWlsZFx1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2UoXG4gICAgICAgICBzZWxmLFxuKyAgICAgICAgdGhpc19tb2R1bGU6IFx1MDAyNidzdGF0aWMgVGhpc01vZHVsZSxcbiAgICAgICAgIG5hbWU6IGZtdDo6QXJndW1lbnRzXHUwMDNjJ19cdTAwM2UsXG4gICAgICAgICB0YWdzZXQ6IEFyY1x1MDAzY1RhZ1NldFx1MDAzY1RcdTAwM2VcdTAwM2UsXG4gICAgICAgICBxdWV1ZV9kYXRhOiBUOjpRdWV1ZURhdGEsXG5AQCAtMTI1LDMwICsxMjksMzIgQEAgcHViIGZuIGJ1aWxkXHUwMDNjVDogT3BlcmF0aW9uc1x1MDAzZShcbiAgICAgICAgICAgICApXG4gICAgICAgICB9KT87XG4gXG4tICAgICAgICBjb25zdCBUQUJMRTogYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zID0gYmluZGluZ3M6OmJsb2NrX2RldmljZV9vcGVyYXRpb25zIHtcbi0gICAgICAgICAgICBzdWJtaXRfYmlvOiBOb25lLFxuLSAgICAgICAgICAgIG9wZW46IE5vbmUsXG4tICAgICAgICAgICAgcmVsZWFzZTogTm9uZSxcbi0gICAgICAgICAgICBpb2N0bDogTm9uZSxcbi0gICAgICAgICAgICBjb21wYXRfaW9jdGw6IE5vbmUsXG4tICAgICAgICAgICAgY2hlY2tfZXZlbnRzOiBOb25lLFxuLSAgICAgICAgICAgIHVubG9ja19uYXRpdmVfY2FwYWNpdHk6IE5vbmUsXG4tICAgICAgICAgICAgZ2V0Z2VvOiBOb25lLFxuLSAgICAgICAgICAgIHNldF9yZWFkX29ubHk6IE5vbmUsXG4tICAgICAgICAgICAgc3dhcF9zbG90X2ZyZWVfbm90aWZ5OiBOb25lLFxuLSAgICAgICAgICAgIHJlcG9ydF96b25lczogTm9uZSxcbi0gICAgICAgICAgICBkZXZub2RlOiBOb25lLFxuLSAgICAgICAgICAgIGFsdGVybmF0aXZlX2dwdF9zZWN0b3I6IE5vbmUsXG4tICAgICAgICAgICAgZ2V0X3VuaXF1ZV9pZDogTm9uZSxcbi0gICAgICAgICAgICAvLyBUT0RPOiBTZXQgdG8gYFRISVNfTU9EVUxFYC5cbi0gICAgICAgICAgICBvd25lcjogY29yZTo6cHRyOjpudWxsX211dCgpLFxuLSAgICAgICAgICAgIHByX29wczogY29yZTo6cHRyOjpudWxsX211dCgpLFxuLSAgICAgICAgICAgIGZyZWVfZGlzazogTm9uZSxcbi0gICAgICAgICAgICBwb2xsX2JpbzogTm9uZSxcbi0gICAgICAgIH07XG4tXG4tICAgICAgICAvLyBTQUZFVFk6IGBnZW5kaXNrYCBpcyBhIHZhbGlkIHBvaW50ZXIgYXMgd2UgaW5pdGlhbGl6ZWQgaXQgYWJvdmVcbi0gICAgICAgIHVuc2FmZSB7ICgqZ2VuZGlzaykuZm9wcyA9IFx1MDAyNlRBQkxFIH07XG4rICAgICAgICBsZXQgZm9wcyA9IEtCb3g6Om5ldyhcbisgICAgICAgICAgICBiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnMge1xuKyAgICAgICAgICAgICAgICBzdWJtaXRfYmlvOiBOb25lLFxuKyAgICAgICAgICAgICAgICBvcGVuOiBOb25lLFxuKyAgICAgICAgICAgICAgICByZWxlYXNlOiBOb25lLFxuKyAgICAgICAgICAgICAgICBpb2N0bDogTm9uZSxcbisgICAgICAgICAgICAgICAgY29tcGF0X2lvY3RsOiBOb25lLFxuKyAgICAgICAgICAgICAgICBjaGVja19ldmVudHM6IE5vbmUsXG4rICAgICAgICAgICAgICAgIHVubG9ja19uYXRpdmVfY2FwYWNpdHk6IE5vbmUsXG4rICAgICAgICAgICAgICAgIGdldGdlbzogTm9uZSxcbisgICAgICAgICAgICAgICAgc2V0X3JlYWRfb25seTogTm9uZSxcbisgICAgICAgICAgICAgICAgc3dhcF9zbG90X2ZyZWVfbm90aWZ5OiBOb25lLFxuKyAgICAgICAgICAgICAgICByZXBvcnRfem9uZXM6IE5vbmUsXG4rICAgICAgICAgICAgICAgIGRldm5vZGU6IE5vbmUsXG4rICAgICAgICAgICAgICAgIGFsdGVybmF0aXZlX2dwdF9zZWN0b3I6IE5vbmUsXG4rICAgICAgICAgICAgICAgIGdldF91bmlxdWVfaWQ6IE5vbmUsXG4rICAgICAgICAgICAgICAgIG93bmVyOiB0aGlzX21vZHVsZS5hc19wdHIoKSxcbisgICAgICAgICAgICAgICAgcHJfb3BzOiBjb3JlOjpwdHI6Om51bGxfbXV0KCksXG4rICAgICAgICAgICAgICAgIGZyZWVfZGlzazogTm9uZSxcbisgICAgICAgICAgICAgICAgcG9sbF9iaW86IE5vbmUsXG4rICAgICAgICAgICAgfSxcbisgICAgICAgICAgICBHRlBfS0VSTkVMLFxuKyAgICAgICAgKT87XG4rXG4rICAgICAgICAvLyBTQUZFVFk6IGBnZW5kaXNrYCBpcyBhIHZhbGlkIHBvaW50ZXIgYXMgd2UgaW5pdGlhbGl6ZWQgaXQgYWJvdmUuXG4rICAgICAgICB1bnNhZmUgeyAoKmdlbmRpc2spLmZvcHMgPSBjb3JlOjpwdHI6OmZyb21fcmVmKFx1MDAyNipmb3BzKSB9O1xuIFxuICAgICAgICAgbGV0IGNsZWFudXBfZmFpbHVyZSA9IFNjb3BlR3VhcmQ6Om5ld193aXRoX2RhdGEoKGdlbmRpc2ssIGRhdGEpLCB8KGdlbmRpc2ssIGRhdGEpfCB7XG4gICAgICAgICAgICAgLy8gU0FGRVRZOiBgZ2VuZGlza2AgY2FtZSBmcm9tIGBfX2Jsa19tcV9hbGxvY19kaXNrKClgIGFib3ZlIGFuZFxuQEAgLTE5Myw2ICsxOTksNyBAQCBwdWIgZm4gYnVpbGRcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlKFxuICAgICAgICAgLy8gYF9fYmxrX21xX2FsbG9jX2Rpc2tgIGFib3ZlLlxuICAgICAgICAgT2soR2VuRGlzayB7XG4gICAgICAgICAgICAgX3RhZ3NldDogdGFnc2V0LFxuKyAgICAgICAgICAgIF9mb3BzOiBmb3BzLFxuICAgICAgICAgICAgIGdlbmRpc2ssXG4gICAgICAgICB9KVxuICAgICB9XG5AQCAtMjA2LDggKzIxMywxMSBAQCBwdWIgZm4gYnVpbGRcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlKFxuIC8vLyAgLSBgZ2VuZGlza2Agd2FzIGFkZGVkIHRvIHRoZSBWRlMgdGhyb3VnaCBhIGNhbGwgdG9cbiAvLy8gICAgYGJpbmRpbmdzOjpkZXZpY2VfYWRkX2Rpc2tgLlxuIC8vLyAgLSBgc2VsZi5nZW5kaXNrLnF1ZXVlLnF1ZXVlZGF0YWAgaXMgaW5pdGlhbGl6ZWQgYnkgYSBjYWxsIHRvIGBGb3JlaWduT3duYWJsZTo6aW50b19mb3JlaWduYC5cbisvLy8gIC0gYHNlbGYuX2ZvcHNgIHN0b3JlcyB0aGUgW2BiaW5kaW5nczo6YmxvY2tfZGV2aWNlX29wZXJhdGlvbnNgXSBwb2ludGVkIHRvIGJ5XG4rLy8vICAgIGBnZW5kaXNrLmZvcHNgLlxuIHB1YiBzdHJ1Y3QgR2VuRGlza1x1MDAzY1Q6IE9wZXJhdGlvbnNcdTAwM2Uge1xuICAgICBfdGFnc2V0OiBBcmNcdTAwM2NUYWdTZXRcdTAwM2NUXHUwMDNlXHUwMDNlLFxuKyAgICBfZm9wczogS0JveFx1MDAzY2JpbmRpbmdzOjpibG9ja19kZXZpY2Vfb3BlcmF0aW9uc1x1MDAzZSxcbiAgICAgZ2VuZGlzazogKm11dCBiaW5kaW5nczo6Z2VuZGlzayxcbiB9XG4gXG4iLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMToyODozNS4xODM5OTMwODlaIiwiU2VxIjozLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjo2MjY2NDk5NzEyLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIqKkFuYWx5emluZyBhIEtlcm5lbCBCbG9jayBEZXZpY2UgUGF0Y2gqKlxuXG5Pa2F5LCBzbyBJJ20gbG9va2luZyBhdCB0aGlzIHBhdGNoLiBJdCBzZWVtcyBsaWtlIHdlJ3JlIG1vZGlmeWluZyB0aGUgUnVzdCBiaW5kaW5ncyBmb3IgdGhlIGJsb2NrIGxheWVyLCBzcGVjaWZpY2FsbHkgYGdlbl9kaXNrLnJzYCBhbmQgdGhlIGBybnVsbGAgZHJpdmVyLiBUaGUgY29yZSBvZiBpdCByZXZvbHZlcyBhcm91bmQgYWRkaW5nIGEgYHRoaXNfbW9kdWxlYCBhcmd1bWVudCB0byBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkKClgIGFuZCB1c2luZyBpdCB0byBzZXQgdGhlIGBvd25lcmAgZmllbGQgd2l0aGluIGBibG9ja19kZXZpY2Vfb3BlcmF0aW9uc2AuIEFkZGl0aW9uYWxseSwgdGhleSd2ZSBzd2l0Y2hlZCBgZm9wc2AgZnJvbSBhIHN0YXRpYyBjb25zdGFudCB0byBhIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBgS0JveGAsIHdoaWNoIGlzIHRoZW4gc3RvcmVkIHdpdGhpbiBgR2VuRGlza2AuXG5cbkltbWVkaWF0ZWx5LCBJJ20gdGhpbmtpbmcsIFwiSXMgdGhpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBvciBqdXN0IHJlZmFjdG9yaW5nP1wiIFNldHRpbmcgdGhlIGBvd25lcmAgdG8gdGhlIG1vZHVsZSBwb2ludGVyIGRlZmluaXRlbHkgYWZmZWN0cyBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGR1cmluZyBkZXZpY2Ugb3Blbi9jbG9zZSBvcGVyYXRpb25zLiBUaGF04oCZcyBhIGZ1bmN0aW9uYWwgY2hhbmdlLCBubyBkb3VidC4gVGhlIGR5bmFtaWMgYWxsb2NhdGlvbiBvZiBgZm9wc2AgdXNpbmcgYEtCb3g6Om5ld2AgaXMgYWxzbyBhIGRlZmluaXRlIGZ1bmN0aW9uYWwgY2hhbmdlLlxuXG5Ob3csIHRoZSBuZXh0IHF1ZXN0aW9uIGlzLCBcIklzIHRoaXMgZnV6ei13b3J0aHk/XCIgRnV6emluZyBtb2R1bGUgcmVmZXJlbmNlIGNvdW50aW5nIGlzIG9mdGVuIHRyaWNreSwgYnV0IHRoZSBvcGVuL2Nsb3NlIGJlaGF2aW9yIG9mIHRoZSBibG9jayBkZXZpY2UgaXMgZGVmaW5pdGVseSBpbXBhY3RlZCBieSB0aGlzLiBJdCdzIGEgc3VidGxlIGNoYW5nZSwgYnV0IHBvdGVudGlhbGx5IGNyaXRpY2FsLiBMZXQncyBzZWUgaWYgdGhlcmUgYXJlIGFueSBzcGVjaWZpYyBmdW5jdGlvbnMgd2l0aGluIHRoaXMgcGF0Y2ggdGhhdCBtYWtlIGl0IGZ1enotd29ydGh5LlxuXG5UaGUgbWVhdCBvZiB0aGUgY2hhbmdlcyBhcmUgd2l0aGluIHRoZSBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCBmdW5jdGlvbi4gU28sIGlzIHRoZSBgcm51bGxgIGRyaXZlciBldmVuIHJlYWNoYWJsZT8gSSBrbm93IGBybnVsbGAgaXMgYSBSdXN0LWJhc2VkIG51bGwgYmxvY2sgZHJpdmVyLiBJIG5lZWQgdG8gZmlndXJlIG91dCB0aGUgY29uZmlnIHJlcXVpcmVtZW50cyBmb3IgdGhpcyBkcml2ZXIuIEknbGwgbmVlZCB0byBjaGVjayB0aGUgYEtjb25maWdgIGZpbGVzIOKAkyBwcm9iYWJseSB1bmRlciBgZHJpdmVycy9ibG9jay9ybnVsbC9gIG9yIGBkcml2ZXJzL2Jsb2NrL2AuIEtub3dpbmcgaWYgYHJudWxsYCBpcyBlbmFibGVkIGJ5IGRlZmF1bHQsIG9yIHdoYXQgY29uZmlncyBhcmUgbmVlZGVkLCB3aWxsIGRpY3RhdGUgaG93IGVhc3kgaXQgaXMgdG8gdGFyZ2V0IHRoaXMgY2hhbmdlIGZvciBmdXp6aW5nLlxuXG5cbiIsIklucHV0VG9rZW5zIjozODUzLCJPdXRwdXRUb2tlbnMiOjI2LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MzE2LCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjg6NDEuNDUwNDk1MDIxWiIsIlNlcSI6NCwiTmVzdGluZyI6MiwiVHlwZSI6InRvb2wiLCJOYW1lIjoiZ3JlcHBlciIsIk1vZGVsIjoiIiwiRHVyYXRpb24iOjc4NzAxNDI1LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRXhwcmVzc2lvblwiOiBcInJudWxsXCIsXG4gIFwiUGF0aFByZWZpeFwiOiBcImRyaXZlcnMvYmxvY2svXCJcbn0iLCJSZXN1bHRzIjoie1xuICBcIk91dHB1dFwiOiBcImRyaXZlcnMvYmxvY2svS2NvbmZpZz0xOT1zb3VyY2UgXFxcImRyaXZlcnMvYmxvY2svbnVsbF9ibGsvS2NvbmZpZ1xcXCJcXG5kcml2ZXJzL2Jsb2NrL0tjb25maWc6MjA6c291cmNlIFxcXCJkcml2ZXJzL2Jsb2NrL3JudWxsL0tjb25maWdcXFwiXFxuZHJpdmVycy9ibG9jay9LY29uZmlnLTIxLVxcbi0tXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZT0zNz1vYmotJChDT05GSUdfQkxLX0RFVl9OVUxMX0JMSylcXHQrPSBudWxsX2Jsay9cXG5kcml2ZXJzL2Jsb2NrL01ha2VmaWxlOjM4Om9iai0kKENPTkZJR19CTEtfREVWX1JVU1RfTlVMTCkgKz0gcm51bGwvXFxuZHJpdmVycy9ibG9jay9NYWtlZmlsZS0zOS1cXG4tLVxcbmRyaXZlcnMvYmxvY2svcm51bGwvTWFrZWZpbGUtMS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL01ha2VmaWxlOjI6b2JqLSQoQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMKSArPSBybnVsbF9tb2Qub1xcbmRyaXZlcnMvYmxvY2svcm51bGwvTWFrZWZpbGU6MzpybnVsbF9tb2QteSA6PSBybnVsbC5vXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE2PXB1YihjcmF0ZSkgZm4gc3Vic3lzdGVtKCkgLVxcdTAwM2UgaW1wbCBQaW5Jbml0XFx1MDAzY2tlcm5lbDo6Y29uZmlnZnM6OlN1YnN5c3RlbVxcdTAwM2NDb25maWdcXHUwMDNlLCBFcnJvclxcdTAwM2Uge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0yNS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzOjI2OiAgICBrZXJuZWw6OmNvbmZpZ2ZzOjpTdWJzeXN0ZW06Om5ldyhjXFxcInJudWxsXFxcIiwgaXRlbV90eXBlLCB0cnlfcGluX2luaXQhKENvbmZpZyB7fSkpXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0yNy19XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTIyLSAgICB0eXBlOiBOdWxsQmxrTW9kdWxlLFxcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6MjM6ICAgIG5hbWU6IFxcXCJybnVsbF9tb2RcXFwiLFxcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtMjQtICAgIGF1dGhvcnM6IFtcXFwiQW5kcmVhcyBIaW5kYm9yZ1xcXCJdLFxcblwiXG59IiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiIiwiSW5wdXRUb2tlbnMiOjAsIk91dHB1dFRva2VucyI6MCwiT3V0cHV0VGhvdWdodHNUb2tlbnMiOjAsIlRvb2xDYWxscyI6bnVsbH0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMToyODo0MS41MjkyMDA2NjZaIiwiU2VxIjo1LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjUxMTUzMDkzLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJIZXJlJ3MgbXkgYW5hbHlzaXMgb2YgdGhlIHNpdHVhdGlvbjpcblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBgQ09ORklHX0JMS19ERVZfUlVTVF9OVUxMYCBLZXJuZWwgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIHNvIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gaXMgc2V0IHRvIGBDT05GSUdfQkxLX0RFVl9SVVNUX05VTExgLiBNeSBmaXJzdCBpbnN0aW5jdCBpcyB0byBpbW1lZGlhdGVseSBkaXZlIGludG8gdGhlIEtjb25maWcgZmlsZXMgdG8gdW5kZXJzdGFuZCB3aGF0IGV4YWN0bHkgdGhpcyBvcHRpb24gY29udHJvbHMuIEkgbmVlZCB0byBzZWUgd2hhdCBgZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnYCBkZWZpbmVzLiBXaGF0IGRlcGVuZGVuY2llcyBkb2VzIGl0IGhhdmU/IFdoYXQgYXJlIHRoZSBpbXBsaWNhdGlvbnMgb2YgZW5hYmxpbmcgb3IgZGlzYWJsaW5nIHRoaXMgZmVhdHVyZT8gSSBuZWVkIHRvIHF1aWNrbHkgZ3Jhc3AgdGhlIHB1cnBvc2UgYW5kIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIFwicm51bGxcIiBibG9jayBkZXZpY2Ug4oCTIGlzIGl0IGEgdGVzdCBkZXZpY2UsIGEgc3R1Yiwgb3Igc29tZXRoaW5nIG1vcmUgc3Vic3RhbnRpYWw/IEtub3dpbmcgdGhlIGNvbnRleHQgd2l0aGluIHRoZSBicm9hZGVyIGJsb2NrIGRldmljZSBzdWJzeXN0ZW0gaXMgY3J1Y2lhbCBiZWZvcmUgSSBtYWtlIGFueSBkZWNpc2lvbnMgb3IgcHJvdmlkZSBhbnkgYWR2aWNlIHJlbGF0ZWQgdG8gdGhpcyBjb25maWd1cmF0aW9uIG9wdGlvbi4gTGV0J3Mgc2VlIHdoYXQgdGhlIEtjb25maWcgZmlsZSByZXZlYWxzLi4uXG5cblxuIiwiSW5wdXRUb2tlbnMiOjQ5ODgsIk91dHB1dFRva2VucyI6MzYsIk91dHB1dFRob3VnaHRzVG9rZW5zIjozMSwiVG9vbENhbGxzIjpbImdyZXBwZXIiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMToyODo0NC43ODAzNTYxNjlaIiwiU2VxIjo2LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJyZWFkLWZpbGUiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjoxNDYwMTAsIkVycm9yIjoiIiwiQXJncyI6IntcbiAgXCJGaWxlXCI6IFwiZHJpdmVycy9ibG9jay9ybnVsbC9LY29uZmlnXCIsXG4gIFwiRmlyc3RMaW5lXCI6IDEsXG4gIFwiTGluZUNvdW50XCI6IDEwMFxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiQ29udGVudHNcIjogXCIgICAxOlxcdCMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjBcXG4gICAyOlxcdCNcXG4gICAzOlxcdCMgUnVzdCBudWxsIGJsb2NrIGRldmljZSBkcml2ZXIgY29uZmlndXJhdGlvblxcbiAgIDQ6XFx0XFxuICAgNTpcXHRjb25maWcgQkxLX0RFVl9SVVNUX05VTExcXG4gICA2OlxcdFxcdHRyaXN0YXRlIFxcXCJSdXN0IG51bGwgYmxvY2sgZHJpdmVyIChFeHBlcmltZW50YWwpXFxcIlxcbiAgIDc6XFx0XFx0ZGVwZW5kcyBvbiBSVVNUIFxcdTAwMjZcXHUwMDI2IENPTkZJR0ZTX0ZTXFxuICAgODpcXHRcXHRoZWxwXFxuICAgOTpcXHRcXHQgIFRoaXMgaXMgdGhlIFJ1c3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIG51bGwgYmxvY2sgZHJpdmVyLiBMaWtlXFxuICAxMDpcXHRcXHQgIHRoZSBDIHZlcnNpb24sIHRoZSBkcml2ZXIgYWxsb3dzIHRoZSB1c2VyIHRvIGNyZWF0ZSB2aXJ1dGFsIGJsb2NrXFxuICAxMTpcXHRcXHQgIGRldmljZXMgdGhhdCBjYW4gYmUgY29uZmlndXJlZCB2aWEgdmFyaW91cyBjb25maWd1cmF0aW9uIG9wdGlvbnMuXFxuICAxMjpcXHRcXG4gIDEzOlxcdFxcdCAgSWYgdW5zdXJlLCBzYXkgTi5cXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjg6NDQuNzgwNTA0NTU5WiIsIlNlcSI6NywiTmVzdGluZyI6MiwiVHlwZSI6ImxsbSIsIk5hbWUiOiJwYXRjaC1ldmFsdWF0b3IiLCJNb2RlbCI6ImdlbWluaS0zLjEtcHJvLXByZXZpZXciLCJEdXJhdGlvbiI6Nzc1MjcyNDI3MywiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipXb3J0aCBGdXp6aW5nIEFzc2Vzc21lbnQgb2YgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgQ2hhbmdlKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpbiBSdXN0IGlzIGFib3V0IGhvdyBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCBoYW5kbGVzIHRoaW5ncy4gSXQgc2VlbXMgdG8gYmUgZHluYW1pY2FsbHkgYWxsb2NhdGluZyBgZm9wc2AgYW5kIHNldHRpbmcgdGhlIGBvd25lcmAgZmllbGQuIE15IGluaXRpYWwgdGhvdWdodCBpcywgXCJJcyB0aGlzIGZ1enphYmxlP1wiIFRoZSBjaGFuZ2Ugc2VlbXMgc21hbGwgYXQgZmlyc3QgZ2xhbmNlLCBtb3N0bHkgZGVhbGluZyB3aXRoIG1vZHVsZSByZWZjb3VudGluZyBhbmQgZHluYW1pYyBhbGxvY2F0aW9uIG9mIGBmb3BzYC4gVGhlbiBJIHJlYWxpemUgdGhlIGltcGxpY2F0aW9uIG9mIHRoZSBkeW5hbWljIGFsbG9jYXRpb24gdXNpbmcgYEtCb3hgIGFuZCBzdG9yaW5nIGl0IHdpdGhpbiBgR2VuRGlza2AuICBUaGF0IG1lYW5zIGBmb3BzYCBnZXRzIGZyZWVkIHdoZW4gYEdlbkRpc2tgIGdvZXMgYXdheS4gIFRoaXMgbWFrZXMgbWUgcGF1c2U6IFwiSXMgdGhpcyBzYWZlP1wiIEkgbmVlZCB0byBjb25zaWRlciBpZiB0aGUgYmxvY2sgbGF5ZXIgbWlnaHQgc3RpbGwgaG9sZCBhIHJlZmVyZW5jZSwgcGFydGljdWxhcmx5IGlmIHRoZSBkaXNrIGlzbid0IGZ1bGx5IGRlc3Ryb3llZC4gIEJ1dCB0aGVuIEkgcmVjYWxsIHRoYXQgYEdlbkRpc2tgICppcyogZHJvcHBlZCB3aGVuIHRoZSBkaXNrIGlzIHJlbW92ZWQuXG5cblNpbmNlIGBmb3BzYCBpcyBub3cgZHluYW1pY2FsbHkgYWxsb2NhdGVkLCB0aGlzICppcyogYSBmdW5jdGlvbmFsIGNoYW5nZS4gQnV0IGFnYWluLCB0aGUgcXVlc3Rpb24gcmVtYWluczogQ2FuIHRoaXMgYmUgZnV6emVkIGVmZmVjdGl2ZWx5PyBUaGUgcGF0Y2ggaXMgcHJpbWFyaWx5IGFib3V0IHBhc3NpbmcgYHRoaXNfbW9kdWxlYCBhbmQgdGhlIGFsbG9jYXRpb24gb2YgYGZvcHNgLiBUaGVyZSdzIG5vIGludHJvZHVjdGlvbiBvZiBuZXcgY29tcGxleCBsb2dpYy5cblxuVGhlbiBJIHJlbWluZCBteXNlbGYgb2YgdGhlIFwiV29ydGhGdXp6aW5nXCIgY3JpdGVyaWE6IGFtIEkgZGVhbGluZyB3aXRoIGRvY3VtZW50YXRpb24sIGRlY29yYXRpdmUgbG9nZ2luZywgbnVtZXJpYyBjb25zdGFudHMsIHVucmVhY2hhYmxlIGNvZGUgaW4gdmlydHVhbGl6ZWQgZW52aXJvbm1lbnRzLCB2ZW5kb3Itc3BlY2lmaWMgZHJpdmVycyByZXF1aXJpbmcgc3BlY2lhbCBoYXJkd2FyZSwgb3IgZHJpdmVyIHRlYXJkb3duIGNhbGxiYWNrcz8gTm8uIFRoaXMgY2xlYXJseSBtb2RpZmllcyByZWFjaGFibGUgY29yZSBrZXJuZWwgbG9naWMgcmVsYXRlZCB0byB0aGUgUnVzdCBibG9jayBsYXllciBiaW5kaW5ncy4gSSBjYW4gZXhlY3V0ZSB0aGlzIGJ5IGxvYWRpbmcgYHJudWxsYCBhbmQgY3JlYXRpbmcgYSBkZXZpY2UgdmlhIGNvbmZpZ2ZzLiBTbyBiYXNlZCBvbiBteSBhc3Nlc3NtZW50IGFuZCB0aGUgY3JpdGVyaWEsIGl0J3MgZGVmaW5pdGVseSBXb3J0aEZ1enppbmc9dHJ1ZS5cblxuTm93LCBJIGFsc28gbmVlZCB0byB2ZXJpZnkgdGhhdCBgcm51bGxgIGlzIHRoZSBvbmx5IHVzZXIgb2YgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAuIEknbGwgbmVlZCB0byBjaGVjayBpZiB0aGVyZSBhcmUgb3RoZXIgdXNlcnMgb2YgdGhpcyBtZXRob2QgdG8gbWFrZSBzdXJlIEknbSBub3QgbWlzc2luZyBzb21ldGhpbmcuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjU0MTAsIk91dHB1dFRva2VucyI6MjMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjo1MzQsIlRvb2xDYWxscyI6WyJyZWFkLWZpbGUiXX0seyJTdGFydGVkIjoiMjAyNi0wOC0wNVQyMToyODo1Mi41MzMyMzIxMzFaIiwiU2VxIjo4LCJOZXN0aW5nIjoyLCJUeXBlIjoidG9vbCIsIk5hbWUiOiJncmVwcGVyIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY5NjIyMjI5NiwiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJHZW5EaXNrQnVpbGRlclwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy00LXVzZSBrZXJuZWw6OntcXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzOjU6ICAgIGJsb2NrOjptcTo6Z2VuX2Rpc2s6OntHZW5EaXNrLCBHZW5EaXNrQnVpbGRlcn0sXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy02LSAgICBjb25maWdmczo6e3NlbGYsIEF0dHJpYnV0ZU9wZXJhdGlvbnN9LFxcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycz0xNzc9ICAgIGZuIHN0b3JlKHRoaXM6IFxcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0xODQtXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoxODU6ICAgICAgICBHZW5EaXNrQnVpbGRlcjo6dmFsaWRhdGVfYmxvY2tfc2l6ZSh2YWx1ZSk/O1xcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMTg2LSAgICAgICAgdGhpcy5kYXRhLmxvY2soKS5ibG9ja19zaXplID0gdmFsdWU7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzPTQ4PSAgICBmbiBuZXcoXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTU5LVxcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6NjA6ICAgICAgICBnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6Om5ldygpXFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy02MS0gICAgICAgICAgICAuY2FwYWNpdHlfc2VjdG9ycyhjYXBhY2l0eV9taWIgXFx1MDAzY1xcdTAwM2MgKDIwIC0gYmxvY2s6OlNFQ1RPUl9TSElGVCkpXFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5ycy05LS8vISAtIENyZWF0ZSBhIFtgVGFnU2V0XFx1MDAzY1RcXHUwMDNlYF0uXFxucnVzdC9rZXJuZWwvYmxvY2svbXEucnM6MTA6Ly8hIC0gQ3JlYXRlIGEgW2BHZW5EaXNrXFx1MDAzY1RcXHUwMDNlYF0sIHZpYSB0aGUgW2BHZW5EaXNrQnVpbGRlcmBdLlxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzOjExOi8vISAtIEFkZCB0aGUgZGlzayB0byB0aGUgc3lzdGVtIGJ5IGNhbGxpbmcgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXSwgcGFzc2luZyBpblxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzLTEyLS8vISAgIHRoZSBkcml2ZXIncyBbYFRoaXNNb2R1bGVgXSwgdGhlIGRpc2sgbmFtZSwgdGhlIGBUYWdTZXRgLCBhbmQgcXVldWUgZGF0YS5cXG4tLVxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzLTUyLS8vISBbYEdlbkRpc2tcXHUwMDNjVFxcdTAwM2VgXTogZ2VuX2Rpc2s6OkdlbkRpc2tcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5yczo1MzovLyEgW2BHZW5EaXNrQnVpbGRlcmBdOiBnZW5fZGlzazo6R2VuRGlza0J1aWxkZXJcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5yczo1NDovLyEgW2BHZW5EaXNrQnVpbGRlcjo6YnVpbGRgXTogZ2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZFxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzLTU1LS8vIVxcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEucnMtOTEtLy8hICMgICAgIHVuc2FmZSB7IFRoaXNNb2R1bGU6OmZyb21fcHRyKGNvcmU6OnB0cjo6bnVsbF9tdXQoKSkgfTtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS5yczo5MjovLyEgbGV0IG11dCBkaXNrID0gZ2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpuZXcoKVxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xLnJzLTkzLS8vISAgICAgLmNhcGFjaXR5X3NlY3RvcnMoNDA5NilcXG4tLVxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTIyLS8vLyBVc2UgdGhpcyBzdHJ1Y3QgdG8gY29uZmlndXJlIGFuZCBhZGQgbmV3IFtgR2VuRGlza2BdIHRvIHRoZSBWRlMuXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MjM6cHViIHN0cnVjdCBHZW5EaXNrQnVpbGRlciB7XFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjQtICAgIHJvdGF0aW9uYWw6IGJvb2wsXFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0yOS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczozMDppbXBsIERlZmF1bHQgZm9yIEdlbkRpc2tCdWlsZGVyIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0zMS0gICAgZm4gZGVmYXVsdCgpIC1cXHUwMDNlIFNlbGYge1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDAtXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6NDE6aW1wbCBHZW5EaXNrQnVpbGRlciB7XFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDItICAgIC8vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2UuXFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycz0yMjk9ICAgIGZuIGRyb3AoXFx1MDAyNm11dCBzZWxmKSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0yNDUtXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MjQ2OiAgICAgICAgLy8gU0FGRVRZOiBgcXVldWUucXVldWVkYXRhYCB3YXMgY3JlYXRlZCBieSBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCB3aXRoXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMjQ3LSAgICAgICAgLy8gYSBjYWxsIHRvIGBGb3JlaWduT3duYWJsZTo6aW50b19mb3JlaWduYCB0byBjcmVhdGUgYHF1ZXVlZGF0YWAuXFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzPTY4PWltcGxcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UgT3BlcmF0aW9uc1ZUYWJsZVxcdTAwM2NUXFx1MDAzZSB7XFxuLS1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzLTEwNi1cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9vcGVyYXRpb25zLnJzOjEwNzogICAgICAgIC8vIFNBRkVUWTogYHF1ZXVlLnF1ZXVlZGF0YWAgd2FzIGNyZWF0ZWQgYnkgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgd2l0aFxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL29wZXJhdGlvbnMucnMtMTA4LSAgICAgICAgLy8gYSBjYWxsIHRvIGBGb3JlaWduT3duYWJsZTo6aW50b19mb3JlaWduYCB0byBjcmVhdGUgYHF1ZXVlZGF0YWAuXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIxOjI4OjU0LjIyOTQ1ODgzOFoiLCJTZXEiOjksIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjU5OTYxNDU2NDAsIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBybnVsbCBQYXRjaCBGb2N1cyoqXG5cbk9rYXksIHNvIEknbSBsb29raW5nIGF0IHRoaXMgcGF0Y2ggYW5kIGl0IHNlZW1zIGxpa2UgdGhlIGNlbnRyYWwgY2hhbmdlIGlzIHRvIGBHZW5EaXNrQnVpbGRlcjo6YnVpbGRgIHdpdGhpbiBgcnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNgLiAgVGhpcyBgYnVpbGRgIGZ1bmN0aW9uIGlzIGNsZWFybHkgYW4gaW1wb3J0YW50IEFQSSBlbnRyeXBvaW50LCBidXQgaXMgaXQgdGhlICpiZXN0KiBzeW1ib2wgdG8gdGFyZ2V0IGZvciBzeXpib3Q/ICBJIGhhdmUgdG8gcmVtZW1iZXIgdGhhdCBSdXN0IGZ1bmN0aW9uIG5hbWVzIGFyZSBtYW5nbGVkLCBzbyBJIG5lZWQgdG8gY29uc2lkZXIgdGhhdC5cblxuSG93ZXZlciwgU3l6Ym90IGlzIHVzdWFsbHkgcHJldHR5IGdvb2QgYWJvdXQgYWNjZXB0aW5nIHVubWFuZ2xlZCBSdXN0IG5hbWVzIGlmIHRoZXkncmUgaW4gdGhlIHN5bWJvbCB0YWJsZS4gIFdlIGNvdWxkIGFsc28gZ28gd2l0aCB0aGUgQyBmdW5jdGlvbnMgaXQgY2FsbHMsIG9yIGp1c3Qgc3RpY2sgd2l0aCB0aGUgdW5tYW5nbGVkIFJ1c3QgZnVuY3Rpb24gbmFtZS4gIEFoLCB3YWl0IGEgc2Vjb25kISBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCBpcyBnZW5lcmljLCBpc24ndCBpdD8gTGV0J3MgY2hlY2suLi4gWWVwLCBpdCdzIGBwdWIgZm4gYnVpbGRcdTAwM2NUOiBPcGVyYXRpb25zXHUwMDNlKHNlbGYsIHRoaXNfbW9kdWxlOiBcdTAwMjYnc3RhdGljIFRoaXNNb2R1bGUsIC4uLilgLlxuXG5TaW5jZSBpdCdzIGdlbmVyaWMsIGBidWlsZGAgaXMgZ29pbmcgdG8gYmUgbW9ub21vcnBoaXplZCwgc3BlY2lmaWNhbGx5IGZvciB0aGUgYHJudWxsYCBjYXNlLiAgU28sIGZvciBgcm51bGxgLCBpdCdsbCBiZSBzb21ldGhpbmcgbGlrZSBga2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGRcdTAwM2NybnVsbDo6TnVsbEJsa0RldmljZVx1MDAzZWAuICBCdXQgdGhhdCBtZWFucywgdGhlIGFjdHVhbCBjYWxsIHNpdGUgaW4gYHJudWxsYCBtaWdodCBiZSBiZXR0ZXIgdGhhbiB0aGlzIG1vcmUgY29tcGxpY2F0ZWQgbWFuZ2xlZCBmdW5jdGlvbiBuYW1lLlxuXG5JdCdzIHByb2JhYmx5IHNtYXJ0ZXIgdG8gZm9jdXMgb24gdGhlIGBybnVsbGAgZnVuY3Rpb24gdGhhdCAqY2FsbHMqIGBHZW5EaXNrQnVpbGRlcjo6YnVpbGRgLiAgQWgtaGEhICBUaGF0J3MgbGlrZWx5IHRvIGJlIGBybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3YCwgd2hpY2ggc2hvdWxkIGJlIGEgY2xlYW5lciB0YXJnZXQuICBJJ2xsIGp1c3QgZG91YmxlLWNoZWNrIGluIGBkcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzYCB0byBtYWtlIHN1cmUgbXkgaW50dWl0aW9uIGlzIGNvcnJlY3QuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjc0NzUsIk91dHB1dFRva2VucyI6MjksIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyNjksIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MDAuMjI1NjA1OTY4WiIsIlNlcSI6MTAsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODg3NDQ3NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbiBuZXdcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9ybnVsbC9cIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwiZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycz00Nz1pbXBsIE51bGxCbGtEZXZpY2Uge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6NDg6ICAgIGZuIG5ldyhcXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTQ5LSAgICAgICAgdGhpc19tb2R1bGU6IFxcdTAwMjYnc3RhdGljIFRoaXNNb2R1bGUsXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIxOjI5OjAwLjI3NDQ4NzM3NVoiLCJTZXEiOjExLCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjozMjkyMjA4MDEwLCJFcnJvciI6IiIsIkFyZ3MiOiJudWxsIiwiUmVzdWx0cyI6Im51bGwiLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiJPa2F5LCBsZXQncyBkaXZlIGludG8gdGhpcy5cblxuKipJbnZlc3RpZ2F0aW5nIHRoZSBPcmlnaW5zIG9mIGEgTnVsbCBCbG9jayBEZXZpY2UgQ3JlYXRpb24qKlxuXG5SaWdodCwgc28gSSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IHRoaXMgYE51bGxCbGtEZXZpY2U6Om5ld2AgdGhpbmcgaXMgYmVpbmcgaW52b2tlZC4gSXQgZmVlbHMgbGlrZSBJJ3ZlIGVuY291bnRlcmVkIHNvbWUgbWFuZ2xlZCBuYW1pbmcgY29udmVudGlvbiwgb3IgcGVyaGFwcyB0aGVyZSdzIGEgc2ltcGxlciBhbHRlcm5hdGl2ZSBsaWtlIGBybnVsbF9tb2RfaW5pdGAgSSBzaG91bGQgYmUgY29uc2lkZXJpbmcuIFdoZXJlJ3MgdGhpcyBjb25zdHJ1Y3RvciBiZWluZyB1c2VkPyBBaGEsIGxvb2tzIGxpa2UgaXQncyBjYWxsZWQgZnJvbSB3aXRoaW4gYGNvbmZpZ2ZzLnJzYCwgc3BlY2lmaWNhbGx5IHRoZSBgc3RvcmVgIGZ1bmN0aW9uLiBUaGF0IGdpdmVzIG1lIGEgc3BlY2lmaWMgbG9jYXRpb24gdG8gY2hlY2suIEFscmlnaHQsIHRpbWUgdG8gZ28gc3BlbHVua2luZyBpbiBgZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yc2AuIExldCdzIHNlZSB3aGF0J3MgaGFwcGVuaW5nIGluIHRoZXJlLlxuXG5cbiIsIklucHV0VG9rZW5zIjo4MjM1LCJPdXRwdXRUb2tlbnMiOjI5LCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6NzgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MDMuNTY2Njk3NzA1WiIsIlNlcSI6MTIsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0NTg4MTIxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbiBzdG9yZVwiLFxuICBcIlBhdGhQcmVmaXhcIjogXCJkcml2ZXJzL2Jsb2NrL3JudWxsL1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTEyOT1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXFx1MDAzYzBcXHUwMDNlIGZvciBEZXZpY2VDb25maWcge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0xNDMtXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoxNDQ6ICAgIGZuIHN0b3JlKHRoaXM6IFxcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMTQ1LSAgICAgICAgbGV0IHBvd2VyX29wID0ga3N0cnRvYm9vbF9ieXRlcyhwYWdlKT87XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTE2OD1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXFx1MDAzYzFcXHUwMDNlIGZvciBEZXZpY2VDb25maWcge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0xNzYtXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoxNzc6ICAgIGZuIHN0b3JlKHRoaXM6IFxcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMTc4LSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM9MTkyPWltcGwgY29uZmlnZnM6OkF0dHJpYnV0ZU9wZXJhdGlvbnNcXHUwMDNjMlxcdTAwM2UgZm9yIERldmljZUNvbmZpZyB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTIwNi1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzOjIwNzogICAgZm4gc3RvcmUodGhpczogXFx1MDAyNkRldmljZUNvbmZpZywgcGFnZTogXFx1MDAyNlt1OF0pIC1cXHUwMDNlIFJlc3VsdCB7XFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0yMDgtICAgICAgICBpZiB0aGlzLmRhdGEubG9jaygpLnBvd2VyZWQge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycz0yMTk9aW1wbCBjb25maWdmczo6QXR0cmlidXRlT3BlcmF0aW9uc1xcdTAwM2MzXFx1MDAzZSBmb3IgRGV2aWNlQ29uZmlnIHtcXG4tLVxcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjI3LVxcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnM6MjI4OiAgICBmbiBzdG9yZSh0aGlzOiBcXHUwMDI2RGV2aWNlQ29uZmlnLCBwYWdlOiBcXHUwMDI2W3U4XSkgLVxcdTAwM2UgUmVzdWx0IHtcXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzLTIyOS0gICAgICAgIGlmIHRoaXMuZGF0YS5sb2NrKCkucG93ZXJlZCB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL2NvbmZpZ2ZzLnJzPTI0Mj1pbXBsIGNvbmZpZ2ZzOjpBdHRyaWJ1dGVPcGVyYXRpb25zXFx1MDAzYzRcXHUwMDNlIGZvciBEZXZpY2VDb25maWcge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5ycy0yNTAtXFxuZHJpdmVycy9ibG9jay9ybnVsbC9jb25maWdmcy5yczoyNTE6ICAgIGZuIHN0b3JlKHRoaXM6IFxcdTAwMjZEZXZpY2VDb25maWcsIHBhZ2U6IFxcdTAwMjZbdThdKSAtXFx1MDAzZSBSZXN1bHQge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvY29uZmlnZnMucnMtMjUyLSAgICAgICAgaWYgdGhpcy5kYXRhLmxvY2soKS5wb3dlcmVkIHtcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MDMuNjEyNTgzNTYyWiIsIlNlcSI6MTMsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjQzNTg4MTQ0ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqRGlzc2VjdGluZyB0aGUgRGlzayBDcmVhdGlvbiBQcm9jZXNzKipcblxuT2theSwgc28gSSdtIHRyeWluZyB0byBwaW5wb2ludCB3aGVyZSB0aGUgYWN0dWFsIGJsb2NrIGRldmljZSBjcmVhdGlvbiBoYXBwZW5zIHdpdGhpbiB0aGlzIFJ1c3Qga2VybmVsIGNvZGUsIHNwZWNpZmljYWxseSBmb2N1c2luZyBvbiB0aGUgY2hhbmdlcyBtYWRlIGJ5IHRoZSBwYXRjaC4gVGhlIGluaXRpYWwgdGhvdWdodCBwb2ludHMgdG8gdGhlIGBzdG9yZWAgZnVuY3Rpb24gZm9yIGBBdHRyaWJ1dGVPcGVyYXRpb25zXHUwMDNjMFx1MDAzZWAgd2hlcmUgYE51bGxCbGtEZXZpY2U6Om5ld2AgaXMgaW52b2tlZC4gQnV0IHdhaXQsIGBBdHRyaWJ1dGVPcGVyYXRpb25zYCBpcyBhIHRyYWl0LCBpc24ndCBpdD8gVGhhdCBtZWFucyBgc3RvcmVgIG1pZ2h0IGJlIGEgdGh1bmssIGEgd3JhcHBlci4gSSBuZWVkIHRvIGRpZyBkZWVwZXIuXG5cbklmIEknbSBsYXNlci1mb2N1c2VkIG9uIHRoZSBibG9jayBsYXllciBkaXNrIGNyZWF0aW9uIGl0c2VsZiwgdGhlIGNhbGxzIHRvIGBfX2Jsa19tcV9hbGxvY19kaXNrYCBvciBgZGV2aWNlX2FkZF9kaXNrYCB3aXRoaW4gYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgbG9vayBwcm9taXNpbmcuIEhvd2V2ZXIsIHRob3NlIGFyZSBwcmV0dHkgZ2VuZXJpYyBibG9jayBsYXllciBmdW5jdGlvbnMsIHNvIHRoZXkgbWlnaHQgbm90IGltbWVkaWF0ZWx5IHJldmVhbCB0aGUgc3BlY2lmaWNzIG9mIHRoZSBwYXRjaCdzIGltcGFjdC5cblxuVGhlIHBhdGNoIGl0c2VsZiBpcyBtb2RpZnlpbmcgYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAuIFRoYXQncyB3aGVyZSB0aGUga2V5IGxpZXMhIE5vdywgaXMgdGhlcmUgYW55dGhpbmcgKnNwZWNpZmljKiB0byB0aGlzIGBHZW5EaXNrQnVpbGRlcmAgd2l0aGluIGBydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc2A/IEkgbmVlZCB0byBjaGVjayB0aGUgZmlsZS4gTGV0J3MgZ2V0IHRvIGBydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yc2AgYW5kIHNlZSB3aGF0J3MgYWN0dWFsbHkgdGhlcmUuXG5cblxuIiwiSW5wdXRUb2tlbnMiOjkwODIsIk91dHB1dFRva2VucyI6MzUsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoxNTYsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MDcuOTcxNDAwMDcxWiIsIlNlcSI6MTQsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0Nzg1ODA0NywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbiBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwicnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnNcIlxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiT3V0cHV0XCI6IFwicnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM9MzA9aW1wbCBEZWZhdWx0IGZvciBHZW5EaXNrQnVpbGRlciB7XFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MzE6ICAgIGZuIGRlZmF1bHQoKSAtXFx1MDAzZSBTZWxmIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0zMi0gICAgICAgIFNlbGYge1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM9NDE9aW1wbCBHZW5EaXNrQnVpbGRlciB7XFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDItICAgIC8vLyBDcmVhdGUgYSBuZXcgaW5zdGFuY2UuXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6NDM6ICAgIHB1YiBmbiBuZXcoKSAtXFx1MDAzZSBTZWxmIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy00NC0gICAgICAgIFNlbGY6OmRlZmF1bHQoKVxcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDctICAgIC8vLyBTZXQgdGhlIHJvdGF0aW9uYWwgbWVkaWEgYXR0cmlidXRlIGZvciB0aGUgZGV2aWNlIHRvIGJlIGJ1aWx0LlxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjQ4OiAgICBwdWIgZm4gcm90YXRpb25hbChtdXQgc2VsZiwgcm90YXRpb25hbDogYm9vbCkgLVxcdTAwM2UgU2VsZiB7XFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNDktICAgICAgICBzZWxmLnJvdGF0aW9uYWwgPSByb3RhdGlvbmFsO1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtNTQtICAgIC8vLyBhbmQgdGhhdCBpdCBpcyBhIHBvd2VyIG9mIHR3by5cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczo1NTogICAgcHViIGZuIHZhbGlkYXRlX2Jsb2NrX3NpemUoc2l6ZTogdTMyKSAtXFx1MDAzZSBSZXN1bHQge1xcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTU2LSAgICAgICAgaWYgISg1MTIuLj1iaW5kaW5nczo6UEFHRV9TSVpFIGFzIHUzMikuY29udGFpbnMoXFx1MDAyNnNpemUpIHx8ICFzaXplLmlzX3Bvd2VyX29mX3R3bygpIHtcXG4tLVxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzLTY5LSAgICAvLy8gdHlwaWNhbGx5IDQwOTYgYnl0ZXMuXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6NzA6ICAgIHB1YiBmbiBsb2dpY2FsX2Jsb2NrX3NpemUobXV0IHNlbGYsIGJsb2NrX3NpemU6IHUzMikgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY1NlbGZcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy03MS0gICAgICAgIFNlbGY6OnZhbGlkYXRlX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/O1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtODQtICAgIC8vLyB0aGF0IGV4cG9zZSBhIDUxMiBieXRlIGxvZ2ljYWwgYmxvY2sgc2l6ZSB0byB0aGUgb3BlcmF0aW5nIHN5c3RlbS5cXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5yczo4NTogICAgcHViIGZuIHBoeXNpY2FsX2Jsb2NrX3NpemUobXV0IHNlbGYsIGJsb2NrX3NpemU6IHUzMikgLVxcdTAwM2UgUmVzdWx0XFx1MDAzY1NlbGZcXHUwMDNlIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy04Ni0gICAgICAgIFNlbGY6OnZhbGlkYXRlX2Jsb2NrX3NpemUoYmxvY2tfc2l6ZSk/O1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtOTEtICAgIC8vLyBTZXQgdGhlIGNhcGFjaXR5IG9mIHRoZSBkZXZpY2UgdG8gYmUgYnVpbHQsIGluIHNlY3RvcnMgKDUxMiBieXRlcykuXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6OTI6ICAgIHB1YiBmbiBjYXBhY2l0eV9zZWN0b3JzKG11dCBzZWxmLCBjYXBhY2l0eTogdTY0KSAtXFx1MDAzZSBTZWxmIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy05My0gICAgICAgIHNlbGYuY2FwYWNpdHlfc2VjdG9ycyA9IGNhcGFjaXR5O1xcbi0tXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMTAwLSAgICAvLy8gdGhlIGRpc2suXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnM6MTAxOiAgICBwdWIgZm4gYnVpbGRcXHUwMDNjVDogT3BlcmF0aW9uc1xcdTAwM2UoXFxucnVzdC9rZXJuZWwvYmxvY2svbXEvZ2VuX2Rpc2sucnMtMTAyLSAgICAgICAgc2VsZixcXG4tLVxcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzPTIyOD1pbXBsXFx1MDAzY1Q6IE9wZXJhdGlvbnNcXHUwMDNlIERyb3AgZm9yIEdlbkRpc2tcXHUwMDNjVFxcdTAwM2Uge1xcbnJ1c3Qva2VybmVsL2Jsb2NrL21xL2dlbl9kaXNrLnJzOjIyOTogICAgZm4gZHJvcChcXHUwMDI2bXV0IHNlbGYpIHtcXG5ydXN0L2tlcm5lbC9ibG9jay9tcS9nZW5fZGlzay5ycy0yMzAtICAgICAgICAvLyBTQUZFVFk6IEJ5IHR5cGUgaW52YXJpYW50IG9mIGBTZWxmYCwgYHNlbGYuZ2VuZGlza2AgcG9pbnRzIHRvIGEgdmFsaWRcXG5cIlxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MDguMDE5MjYyNjM4WiIsIlNlcSI6MTUsIk5lc3RpbmciOjIsIlR5cGUiOiJsbG0iLCJOYW1lIjoicGF0Y2gtZXZhbHVhdG9yIiwiTW9kZWwiOiJnZW1pbmktMy4xLXByby1wcmV2aWV3IiwiRHVyYXRpb24iOjUxMTE3NzM1ODksIkVycm9yIjoiIiwiQXJncyI6Im51bGwiLCJSZXN1bHRzIjoibnVsbCIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IioqQW5hbHl6aW5nIHRoZSBgYnVpbGRgIFBhdGNoKipcblxuT2theSwgc28gdGhpcyBwYXRjaCBpcyB0b3VjaGluZyB0aGUgYGJ1aWxkYCBmdW5jdGlvbiwgd2hpY2ggaXMgYSBrZXkgYXJlYSB0byB1bmRlcnN0YW5kLiBJIGNvdWxkIHplcm8gaW4gb24gYEdlbkRpc2tCdWlsZGVyOjpidWlsZGAgZGlyZWN0bHksIG9yIG1heWJlIGV2ZW4gbG9vayBhdCB0aGUgYHJudWxsYCBmdW5jdGlvbnMgYXMgdGhlIHBhdGNoIGlzIGZvY3VzZWQgaGVyZS4gQWgsIHJpZ2h0LCBgR2VuRGlza0J1aWxkZXI6OmJ1aWxkYCBpcyBhIGdlbmVyaWMgZnVuY3Rpb24sIHNvIGl0J3MgaW5zdGFudGlhdGVkIHNwZWNpZmljYWxseS4gSW4gdGhpcyBjYXNlLCBpdCdsbCBiZWNvbWUgYGtlcm5lbDo6YmxvY2s6Om1xOjpnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6OmJ1aWxkXHUwMDNjcm51bGw6Ok51bGxCbGtEZXZpY2VcdTAwM2VgLiBTbywgbWF5YmUgZm9jdXNpbmcgb24gdGhlIGBybnVsbGAgZnVuY3Rpb25zIGRpcmVjdGx5IGlzIHRoZSBiZXN0IGFwcHJvYWNoLiBUaGluZ3MgbGlrZSBgcm51bGxfbW9kX2luaXRgLCBpZiBpdCBleGlzdHMsIG9yIHRhcmdldGluZyBga2VybmVsOjpibG9jazo6bXE6Omdlbl9kaXNrOjpHZW5EaXNrQnVpbGRlcjo6YnVpbGRgIHNob3VsZCB3b3JrLCBhc3N1bWluZyBzeXpib3QgY2FuIGFjdHVhbGx5IG1hdGNoIHRoZW0uXG5cbkhhbmcgb24uLi5zeXpib3QgdXNlcyBgb2JqZHVtcGAgdG8gaWRlbnRpZnkgc3ltYm9scy4gSWYgdGhlIHN5bWJvbHMgYXJlIG1hbmdsZWQsIHRoZW4gbWF0Y2hpbmcgdGhlbSBnZXRzIHNpZ25pZmljYW50bHkgaGFyZGVyLiBCdXQgdGhhdCBkb2VzIG9wZW4gdXAgb3RoZXIgcG9zc2liaWxpdGllcy4gSSBjb3VsZCB0cnkgdG8gc3BlY2lmeSBzb21ldGhpbmcgbGlrZSBgX19ibGtfbXFfYWxsb2NfZGlza2Agb3IgYGRldmljZV9hZGRfZGlza2AsIHNpbmNlIHRoZXkncmUgY2FsbGVkIGluc2lkZSBgYnVpbGRgLiBUaGUgcHJvYmxlbSB3aXRoIHRoYXQsIHRob3VnaCwgaXMgdGhvc2UgYXJlIG1vcmUgZ2VuZXJpYyBibG9jayBsYXllciBmdW5jdGlvbnMuXG5cbkxldCdzIGp1c3QgdGFrZSBhIGxvb2sgYW5kIHNlZSB3aGF0IHRoZSBhdmFpbGFibGUgYHJudWxsYCBmdW5jdGlvbnMgYXJlLCBiZWZvcmUgSSBnZXQgdG9vIGZhciBkb3duIHRoaXMgcGF0aC5cblxuXG4iLCJJbnB1dFRva2VucyI6MTA0MzcsIk91dHB1dFRva2VucyI6MzMsIk91dHB1dFRob3VnaHRzVG9rZW5zIjoyMTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MTMuMTMxMDM4Mzg3WiIsIlNlcSI6MTYsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6ImdyZXBwZXIiLCJNb2RlbCI6IiIsIkR1cmF0aW9uIjo0ODQ5MjcxNywiRXJyb3IiOiIiLCJBcmdzIjoie1xuICBcIkV4cHJlc3Npb25cIjogXCJmbiBcIixcbiAgXCJQYXRoUHJlZml4XCI6IFwiZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yc1wiXG59IiwiUmVzdWx0cyI6IntcbiAgXCJPdXRwdXRcIjogXCJkcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzPTM1PWltcGwga2VybmVsOjpJblBsYWNlTW9kdWxlIGZvciBOdWxsQmxrTW9kdWxlIHtcXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzOjM2OiAgICBmbiBpbml0KF9tb2R1bGU6IFxcdTAwMjYnc3RhdGljIFRoaXNNb2R1bGUpIC1cXHUwMDNlIGltcGwgUGluSW5pdFxcdTAwM2NTZWxmLCBFcnJvclxcdTAwM2Uge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtMzctICAgICAgICBwcl9pbmZvIShcXFwiUnVzdCBudWxsX2JsayBsb2FkZWRcXFxcblxcXCIpO1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycz00Nz1pbXBsIE51bGxCbGtEZXZpY2Uge1xcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6NDg6ICAgIGZuIG5ldyhcXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTQ5LSAgICAgICAgdGhpc19tb2R1bGU6IFxcdTAwMjYnc3RhdGljIFRoaXNNb2R1bGUsXFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzPTc0PWltcGwgT3BlcmF0aW9ucyBmb3IgTnVsbEJsa0RldmljZSB7XFxuLS1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzLTc3LSAgICAjW2lubGluZShhbHdheXMpXVxcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnM6Nzg6ICAgIGZuIHF1ZXVlX3JxKHF1ZXVlX2RhdGE6IFxcdTAwMjZRdWV1ZURhdGEsIHJxOiBBUmVmXFx1MDAzY21xOjpSZXF1ZXN0XFx1MDAzY1NlbGZcXHUwMDNlXFx1MDAzZSwgX2lzX2xhc3Q6IGJvb2wpIC1cXHUwMDNlIFJlc3VsdCB7XFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy03OS0gICAgICAgIG1hdGNoIHF1ZXVlX2RhdGEuaXJxX21vZGUge1xcbi0tXFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy05MC1cXG5kcml2ZXJzL2Jsb2NrL3JudWxsL3JudWxsLnJzOjkxOiAgICBmbiBjb21taXRfcnFzKF9xdWV1ZV9kYXRhOiBcXHUwMDI2UXVldWVEYXRhKSB7fVxcbmRyaXZlcnMvYmxvY2svcm51bGwvcm51bGwucnMtOTItXFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5yczo5MzogICAgZm4gY29tcGxldGUocnE6IEFSZWZcXHUwMDNjbXE6OlJlcXVlc3RcXHUwMDNjU2VsZlxcdTAwM2VcXHUwMDNlKSB7XFxuZHJpdmVycy9ibG9jay9ybnVsbC9ybnVsbC5ycy05NC0gICAgICAgIG1xOjpSZXF1ZXN0OjplbmRfb2socnEpXFxuXCJcbn0iLCJJbnN0cnVjdGlvbiI6IiIsIlByb21wdCI6IiIsIlJlcGx5IjoiIiwiVGhvdWdodHMiOiIiLCJJbnB1dFRva2VucyI6MCwiT3V0cHV0VG9rZW5zIjowLCJPdXRwdXRUaG91Z2h0c1Rva2VucyI6MCwiVG9vbENhbGxzIjpudWxsfSx7IlN0YXJ0ZWQiOiIyMDI2LTA4LTA1VDIxOjI5OjEzLjE3OTU0ODE1NFoiLCJTZXEiOjE3LCJOZXN0aW5nIjoyLCJUeXBlIjoibGxtIiwiTmFtZSI6InBhdGNoLWV2YWx1YXRvciIsIk1vZGVsIjoiZ2VtaW5pLTMuMS1wcm8tcHJldmlldyIsIkR1cmF0aW9uIjoxMjc3MjUwNTkxOCwiRXJyb3IiOiIiLCJBcmdzIjoibnVsbCIsIlJlc3VsdHMiOiJudWxsIiwiSW5zdHJ1Y3Rpb24iOiIiLCJQcm9tcHQiOiIiLCJSZXBseSI6IiIsIlRob3VnaHRzIjoiKipSZWFzb25pbmcgZm9yIEZ1enppbmcgQ29uZmlndXJhdGlvbioqXG5cbk9rYXksIGxldCdzIGJyZWFrIHRoaXMgZG93bi4gTXkgZ29hbCBoZXJlIGlzIHRvIGNyYWZ0IGFuIGVmZmVjdGl2ZSBmdXp6aW5nIGNvbmZpZ3VyYXRpb24gZm9yIHRoaXMgcGF0Y2gsIGFuZCBJIG5lZWQgdG8gYmUgYXMgcHJlY2lzZSBhcyBwb3NzaWJsZS4gVGhlIHByaW1hcnkgZm9jdXMgaXMgb24gdGhlIGNoYW5nZXMgcmVsYXRlZCB0byB0aGUgUnVzdCBibG9jayBsYXllciBiaW5kaW5ncyBhbmQgdGhlIGBybnVsbGAgZHJpdmVyLlxuXG5GaXJzdCwgSSBpZGVudGlmaWVkIHRoZSBrZXkgZnVuY3Rpb25zIHRvdWNoZWQgYnkgdGhlIHBhdGNoLiBJJ20gZm9jdXNpbmcgb24gdGhlIGluaXRpYWxpemF0aW9uIGFuZCBjcmVhdGlvbiBvZiB0aGUgYmxvY2sgZGV2aWNlLCBzcGVjaWZpY2FsbHkgYE51bGxCbGtNb2R1bGU6OmluaXRgIGFuZCBgTnVsbEJsa0RldmljZTo6bmV3YCBpbiB0aGUgUnVzdCBjb2RlLCBhbmQgYWxzbyBgRGV2aWNlQ29uZmlnOjpzdG9yZWAgaW4gdGhlIGNvbmZpZ2ZzLiBIb3dldmVyLCBJIHdhbnQgdG8gaWRlbnRpZnkgYSBtb3JlIHRhcmdldGVkIGFwcHJvYWNoIGZvciB0aGUgYEZvY3VzU3ltYm9sc2AuIEkgaW5pdGlhbGx5IGNvbnNpZGVyZWQgZnVuY3Rpb25zIGxpa2UgYF9fYmxrX21xX2FsbG9jX2Rpc2tgIGFuZCBgZGV2aWNlX2FkZF9kaXNrYCwgYnV0IHRob3NlIGFyZSBob3QtcGF0aCBmdW5jdGlvbnMsIG5vdCB0aGUgYmVzdCBjYW5kaWRhdGVzIGZvciBgRm9jdXNTeW1ib2xzYC5cblxuVGhpbmtpbmcgbW9yZSBwcmVjaXNlbHksIGBrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZGAgaXMgaWRlYWwuIEl0IGlzIGEgbm9uLWhvdC1wYXRoIEFQSSBlbnRyeXBvaW50IGZ1bmN0aW9uLCBpdCBpcyBvbmx5IGNhbGxlZCB3aGVuIGNyZWF0aW5nIGEgZGlzaywgd2hpY2ggbWFrZXMgaXQgYSBnb29kIHN5bWJvbCB0byBmb2N1cyBvbiBmdXp6aW5nLiBJIGNvbmZpcm1lZCB0aGF0IGl0J3MgcHJlc2VudCBpbiB0aGUgbW9kaWZpZWQgY29kZSBhbmQgaXMgdGhlIGtpbmQgb2YgZnVuY3Rpb24gdGhhdCBpcyBtb3JlIGxpa2VseSB0byBiZSBoaXQgZHVyaW5nIHRoZSBwYXRjaCdzIGNvcmUgbG9naWMuIEFkZGl0aW9uYWxseSwgdGhlIHBhdGNoIG1vZGlmaWVzIGBybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3YCwgc28gSSB3aWxsIGFsc28gaW5jbHVkZSB0aGF0IHN5bWJvbCBhcyB3ZWxsLiBUaGlzIHNob3VsZCBnaXZlIHRoZSBmdXp6ZXIgYSBnb29kIHN0YXJ0aW5nIHBvaW50LlxuXG5UaGUgY29uY2VybiB3aXRoIFJ1c3Qgc3ltYm9scyBpcyB0aGVpciBtYW5nbGVkIG5hdHVyZS4gSG93ZXZlciwgc2luY2Ugd2UncmUgcHJvdmlkaW5nIHRoZXNlIHNwZWNpZmljIGZ1bmN0aW9uIG5hbWVzLCBJIHRoaW5rIGl0J3Mgd29ydGggYSBzaG90LiBJJ2xsIGluY2x1ZGUgdGhlIGZ1bGwgUnVzdCBwYXRoLCBhcyB0aGF0J3MgcHJvYmFibHkgdGhlIG1vc3QgYWNjdXJhdGUgdGhpbmcgd2UgY2FuIG9mZmVyLiBJIGNvbmZpcm1lZCB0aGF0IHRoZXJlIGFyZSBubyBkaXJlY3QgQyBiaW5kaW5ncyBvciBleHBvcnRlZCBzeW1ib2xzIGluIHRoZSBgcm51bGxgIGRyaXZlci5cblxuTmV4dCwgSSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUgcmlnaHQga2VybmVsIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBhcmUgZW5hYmxlZC4gQWZ0ZXIgcmV2aWV3aW5nIHRoZSBgS2NvbmZpZ2AgZmlsZSwgaXQgbG9va3MgbGlrZSBgQkxLX0RFVl9SVVNUX05VTExgIGlzIHRoZSBtYWluIG9uZSBhbmQgaXQgZGVwZW5kcyBvbiBgUlVTVGAgYW5kIGBDT05GSUdGU19GU2AuIFRodXMsIEkgd2lsbCBlbmFibGUgYEJMS19ERVZfUlVTVF9OVUxMYCBiZWNhdXNlIEkgYW0gZW5hYmxpbmcgYFJVU1RgIGFuZCBgQ09ORklHRlNfRlNgLlxuXG5JJ20gbWFraW5nIGEgZnVuY3Rpb25hbCBjaGFuZ2UgdG8gcmVhY2hhYmxlIGNvcmUga2VybmVsIGxvZ2ljLCBzcGVjaWZpY2FsbHkgdGhlIFJ1c3QgYmxvY2sgbGF5ZXIsIGFuZCB0aGUgYHJudWxsYCBkcml2ZXIgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy5cblxuVGhlcmVmb3JlLCBteSBmaW5hbCBjb25maWd1cmF0aW9uIGlzOlxuXG5Db25maWdzOiBgQkxLX0RFVl9SVVNUX05VTExgXG5Gb2N1c1N5bWJvbHM6IGBrZXJuZWw6OmJsb2NrOjptcTo6Z2VuX2Rpc2s6OkdlbkRpc2tCdWlsZGVyOjpidWlsZGAsIGBybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3YFxuXG5cbiIsIklucHV0VG9rZW5zIjoxMTQxNiwiT3V0cHV0VG9rZW5zIjoxNzksIk91dHB1dFRob3VnaHRzVG9rZW5zIjo5MTgsIlRvb2xDYWxscyI6WyJncmVwcGVyIl19LHsiU3RhcnRlZCI6IjIwMjYtMDgtMDVUMjE6Mjk6MjUuOTUyMDU2MzIyWiIsIlNlcSI6MTgsIk5lc3RpbmciOjIsIlR5cGUiOiJ0b29sIiwiTmFtZSI6InNldC1yZXN1bHRzIiwiTW9kZWwiOiIiLCJEdXJhdGlvbiI6MTY2OTE0Mjg5LCJFcnJvciI6IiIsIkFyZ3MiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX1JVU1RfTlVMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImtlcm5lbDo6YmxvY2s6Om1xOjpnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6OmJ1aWxkXCIsXG4gICAgXCJybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJ1c3QgYmxvY2sgbGF5ZXIgYmluZGluZ3MgdG8gZHluYW1pY2FsbHkgYWxsb2NhdGUgYGJsb2NrX2RldmljZV9vcGVyYXRpb25zYCBhbmQgc2V0IHRoZSBgb3duZXJgIGZpZWxkIHRvIHRoZSBtb2R1bGUncyBgVGhpc01vZHVsZWAgcG9pbnRlci4gVGhpcyBhZmZlY3RzIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9mIHRoZSBgZm9wc2Agc3RydWN0dXJlIGR1cmluZyBibG9jayBkZXZpY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUaGUgYHJudWxsYCBkcml2ZXIgaXMgdXBkYXRlZCB0byBwYXNzIGl0cyBtb2R1bGUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoUnVzdCBibG9jayBsYXllcikgYW5kIHRoZSBgcm51bGxgIGRyaXZlciwgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIlJlc3VsdHMiOiJ7XG4gIFwiRW5hYmxlQ29uZmlnc1wiOiBbXG4gICAgXCJCTEtfREVWX1JVU1RfTlVMTFwiXG4gIF0sXG4gIFwiRm9jdXNTeW1ib2xzXCI6IFtcbiAgICBcImtlcm5lbDo6YmxvY2s6Om1xOjpnZW5fZGlzazo6R2VuRGlza0J1aWxkZXI6OmJ1aWxkXCIsXG4gICAgXCJybnVsbDo6TnVsbEJsa0RldmljZTo6bmV3XCJcbiAgXSxcbiAgXCJSZWFzb25pbmdcIjogXCJUaGUgcGF0Y2ggbW9kaWZpZXMgdGhlIFJ1c3QgYmxvY2sgbGF5ZXIgYmluZGluZ3MgdG8gZHluYW1pY2FsbHkgYWxsb2NhdGUgYGJsb2NrX2RldmljZV9vcGVyYXRpb25zYCBhbmQgc2V0IHRoZSBgb3duZXJgIGZpZWxkIHRvIHRoZSBtb2R1bGUncyBgVGhpc01vZHVsZWAgcG9pbnRlci4gVGhpcyBhZmZlY3RzIG1vZHVsZSByZWZlcmVuY2UgY291bnRpbmcgYW5kIG1lbW9yeSBtYW5hZ2VtZW50IG9mIHRoZSBgZm9wc2Agc3RydWN0dXJlIGR1cmluZyBibG9jayBkZXZpY2UgY3JlYXRpb24gYW5kIGRlc3RydWN0aW9uLiBUaGUgYHJudWxsYCBkcml2ZXIgaXMgdXBkYXRlZCB0byBwYXNzIGl0cyBtb2R1bGUgcG9pbnRlci4gVGhpcyBpcyBhIGZ1bmN0aW9uYWwgY2hhbmdlIGluIHJlYWNoYWJsZSBjb3JlIGtlcm5lbCBsb2dpYyAoUnVzdCBibG9jayBsYXllcikgYW5kIHRoZSBgcm51bGxgIGRyaXZlciwgd2hpY2ggY2FuIGJlIHRlc3RlZCBieSBjcmVhdGluZyBhIG51bGwgYmxvY2sgZGV2aWNlIHZpYSBjb25maWdmcy5cIixcbiAgXCJXb3J0aEZ1enppbmdcIjogdHJ1ZVxufSIsIkluc3RydWN0aW9uIjoiIiwiUHJvbXB0IjoiIiwiUmVwbHkiOiIiLCJUaG91Z2h0cyI6IiIsIklucHV0VG9rZW5zIjowLCJPdXRwdXRUb2tlbnMiOjAsIk91dHB1dFRob3VnaHRzVG9rZW5zIjowLCJUb29sQ2FsbHMiOm51bGx9XTsKCQkJaWYgKCFyYXdEYXRhIHx8IHJhd0RhdGEubGVuZ3RoID09PSAwKSByZXR1cm47CgoJCQlkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKTsKCQkJZHJhd0R1cmF0aW9uQ2hhcnQocmF3RGF0YSk7CgkJCWRyYXdUb2tlbkNvbnN1bXB0aW9uQ2hhcnQocmF3RGF0YSk7CgkJfQoKCQlmdW5jdGlvbiBkcmF3U3VtbWFyeVRhYmxlcyhyYXdEYXRhKSB7CgkJCWNvbnN0IHN0YXRzID0gewoJCQkJbGxtOiB7IGNvdW50OiAwLCB0b2tlbnM6IDAsIGR1cmF0aW9uOiAwIH0sCgkJCQl0b29sOiB7IGNvdW50OiAwLCBkdXJhdGlvbjogMCB9CgkJCX07CgoJCQlyYXdEYXRhLmZvckVhY2gocyA9PiB7CgkJCQljb25zdCBkdXIgPSBzLkR1cmF0aW9uIC8gMTAwMDAwMDAwMDsgCgkJCQlpZiAocy5UeXBlID09PSAibGxtIikgewoJCQkJCXN0YXRzLmxsbS5jb3VudCsrOwoJCQkJCXN0YXRzLmxsbS50b2tlbnMgKz0gKHMuSW5wdXRUb2tlbnMgKyBzLk91dHB1dFRva2VucyArIHMuT3V0cHV0VGhvdWdodHNUb2tlbnMpOwoJCQkJCXN0YXRzLmxsbS5kdXJhdGlvbiArPSBkdXI7CgkJCQl9IGVsc2UgaWYgKHMuVHlwZSA9PT0gInRvb2wiKSB7CgkJCQkJc3RhdHMudG9vbC5jb3VudCsrOwoJCQkJCXN0YXRzLnRvb2wuZHVyYXRpb24gKz0gZHVyOwoJCQkJfQoJCQl9KTsKCgkJCWNvbnN0IGF2Z0xsbUR1ciA9IHN0YXRzLmxsbS5jb3VudCA+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-workflowgl97h[1] Phase: Succeeded StartedAt: 2026-08-05 21:29:37 +0000 UTC FinishedAt: 2026-08-05 21:29:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[1].abort-on-skip-outcome Phase: Skipped StartedAt: 2026-08-05 21:29:37 +0000 UTC FinishedAt: 2026-08-05 21:29:37 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2] Phase: Succeeded StartedAt: 2026-08-05 21:29:37 +0000 UTC FinishedAt: 2026-08-05 22:21:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN) Phase: Succeeded StartedAt: 2026-08-05 21:29:37 +0000 UTC FinishedAt: 2026-08-05 22:21:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:element,Default:nil,Value:*{"base":{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"fuzz":{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},"patched":{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},"retest":null,"track":"KASAN"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0] Phase: Succeeded StartedAt: 2026-08-05 21:29:37 +0000 UTC FinishedAt: 2026-08-05 21:29:47 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[0].save-base-req Phase: Succeeded StartedAt: 2026-08-05 21:29:37 +0000 UTC FinishedAt: 2026-08-05 21:29:42 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgl97h/series-workflowgl97h-convert-artifact-1321858671/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1] Phase: Succeeded StartedAt: 2026-08-05 21:29:47 +0000 UTC FinishedAt: 2026-08-05 21:49:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build Phase: Succeeded StartedAt: 2026-08-05 21:29:47 +0000 UTC FinishedAt: 2026-08-05 21:49:36 +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:*df333c9a-4f7c-4a12-b253-7e648892e30e,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-workflowgl97h/series-workflowgl97h-convert-artifact-1321858671/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": "55b2638f-18ce-4568-b855-6ca98619b33e", "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-workflowgl97h/series-workflowgl97h-build-action-3335041845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[1].base-build(0) Phase: Succeeded StartedAt: 2026-08-05 21:29:47 +0000 UTC FinishedAt: 2026-08-05 21:49:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Base,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*df333c9a-4f7c-4a12-b253-7e648892e30e,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-workflowgl97h/series-workflowgl97h-convert-artifact-1321858671/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": "55b2638f-18ce-4568-b855-6ca98619b33e", "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-workflowgl97h/series-workflowgl97h-build-action-3335041845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2] Phase: Succeeded StartedAt: 2026-08-05 21:49:36 +0000 UTC FinishedAt: 2026-08-05 21:49:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[2].abort-if-base-build-failed Phase: Skipped StartedAt: 2026-08-05 21:49:36 +0000 UTC FinishedAt: 2026-08-05 21:49:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3] Phase: Succeeded StartedAt: 2026-08-05 21:49:36 +0000 UTC FinishedAt: 2026-08-05 21:49:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[3].save-patched-req Phase: Succeeded StartedAt: 2026-08-05 21:49:36 +0000 UTC FinishedAt: 2026-08-05 21:49:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgl97h/series-workflowgl97h-convert-artifact-1249575102/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4] Phase: Succeeded StartedAt: 2026-08-05 21:49:46 +0000 UTC FinishedAt: 2026-08-05 21:52:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[4].boot-test-base Phase: Succeeded StartedAt: 2026-08-05 21:49:46 +0000 UTC FinishedAt: 2026-08-05 21:52:11 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*55b2638f-18ce-4568-b855-6ca98619b33e,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-workflowgl97h/series-workflowgl97h-build-action-3335041845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5] Phase: Succeeded StartedAt: 2026-08-05 21:52:21 +0000 UTC FinishedAt: 2026-08-05 21:52:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[5].abort-if-base-boot-failed Phase: Skipped StartedAt: 2026-08-05 21:52:21 +0000 UTC FinishedAt: 2026-08-05 21:52:21 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6] Phase: Succeeded StartedAt: 2026-08-05 21:52:21 +0000 UTC FinishedAt: 2026-08-05 22:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build Phase: Succeeded StartedAt: 2026-08-05 21:52:21 +0000 UTC FinishedAt: 2026-08-05 22:14:57 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*df333c9a-4f7c-4a12-b253-7e648892e30e,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-workflowgl97h/series-workflowgl97h-convert-artifact-1249575102/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": "fee7b004-aa52-497a-b9a0-8e657cf553be", "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-workflowgl97h/series-workflowgl97h-build-action-3302341138/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[6].patched-build(0) Phase: Succeeded StartedAt: 2026-08-05 21:52:21 +0000 UTC FinishedAt: 2026-08-05 22:14:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Build Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:smoke-build,Default:nil,Value:*false,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:session-id,Default:nil,Value:*df333c9a-4f7c-4a12-b253-7e648892e30e,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-workflowgl97h/series-workflowgl97h-convert-artifact-1249575102/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": "fee7b004-aa52-497a-b9a0-8e657cf553be", "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-workflowgl97h/series-workflowgl97h-build-action-3302341138/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7] Phase: Succeeded StartedAt: 2026-08-05 22:14:57 +0000 UTC FinishedAt: 2026-08-05 22:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[7].abort-if-patched-build-failed Phase: Skipped StartedAt: 2026-08-05 22:14:57 +0000 UTC FinishedAt: 2026-08-05 22:14:57 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8] Phase: Succeeded StartedAt: 2026-08-05 22:14:57 +0000 UTC FinishedAt: 2026-08-05 22:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[8].boot-test-patched Phase: Succeeded StartedAt: 2026-08-05 22:14:57 +0000 UTC FinishedAt: 2026-08-05 22:16:26 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fee7b004-aa52-497a-b9a0-8e657cf553be,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Boot test: Patched,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:report-findings,Default:nil,Value:*true,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgl97h/series-workflowgl97h-build-action-3302341138/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{Parameter{Name:result,Default:nil,Value:*{ "success": true },ValueFrom:&ValueFrom{Path:/output/result.json,JSONPath:,JQFilter:,Parameter:,Default:nil,Supplied:nil,Event:,Expression:,ConfigMapKeyRef:nil,},GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,} --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10] Phase: Succeeded StartedAt: 2026-08-05 22:16:36 +0000 UTC FinishedAt: 2026-08-05 22:21:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz Phase: Succeeded StartedAt: 2026-08-05 22:16:36 +0000 UTC FinishedAt: 2026-08-05 22:21:07 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:config,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:track,Default:nil,Value:*KASAN,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:base-build-id,Default:nil,Value:*55b2638f-18ce-4568-b855-6ca98619b33e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fee7b004-aa52-497a-b9a0-8e657cf553be,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgl97h/series-workflowgl97h-build-action-3335041845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgl97h/series-workflowgl97h-build-action-3302341138/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0] Phase: Succeeded StartedAt: 2026-08-05 22:16:36 +0000 UTC FinishedAt: 2026-08-05 22:16:46 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[0].save-fuzz-config Phase: Succeeded StartedAt: 2026-08-05 22:16:36 +0000 UTC FinishedAt: 2026-08-05 22:16:40 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:data,Default:nil,Value:*{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{Artifact{Name:artifact,Path:/tmp/artifact,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgl97h/series-workflowgl97h-convert-artifact-2260502723/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},Result:nil,ExitCode:*0,} --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-retest Phase: Skipped StartedAt: 2026-08-05 22:16:36 +0000 UTC FinishedAt: 2026-08-05 22:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9] Phase: Succeeded StartedAt: 2026-08-05 22:16:36 +0000 UTC FinishedAt: 2026-08-05 22:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[9].abort-if-patched-boot-failed Phase: Skipped StartedAt: 2026-08-05 22:16:36 +0000 UTC FinishedAt: 2026-08-05 22:16:36 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1] Phase: Succeeded StartedAt: 2026-08-05 22:16:46 +0000 UTC FinishedAt: 2026-08-05 22:21:07 +0000 UTC Input: nil Output: nil --------- Name: series-workflowgl97h[2].run-process-target(0:base:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},fuzz:{"bug_title_re":"","corpus_urls":["https://storage.googleapis.com/syzkaller/corpus/ci2-upstream-fs-corpus.db"],"focus":["fs"],"focus_symbols":["kernel::block::mq::gen_disk::GenDiskBuilder::build","rnull::NullBlkDevice::new"],"skip_cover_check":false},patched:{"arch":"amd64","commit_hash":"8165a4186721a6f356c1f5abc5829582272a1c96","config_name":"upstream-apparmor-kasan.config","enable_configs":["BLK_DEV_RUST_NULL"],"series_id":"123d2c9b-eb74-4bc5-9fdb-02e0e1070824","tree_name":"axboe","tree_url":"https://kernel.googlesource.com/pub/scm/linux/kernel/git/axboe/linux.git"},retest:null,track:KASAN)[10].run-fuzz[1].fuzz Phase: Succeeded StartedAt: 2026-08-05 22:16:46 +0000 UTC FinishedAt: 2026-08-05 22:20:47 +0000 UTC Input: &Inputs{Parameters:[]Parameter{Parameter{Name:base-build-id,Default:nil,Value:*55b2638f-18ce-4568-b855-6ca98619b33e,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:patched-build-id,Default:nil,Value:*fee7b004-aa52-497a-b9a0-8e657cf553be,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},Parameter{Name:test-name,Default:nil,Value:*[KASAN] Fuzz,ValueFrom:nil,GlobalName:,Enum:[],Description:nil,},},Artifacts:[]Artifact{Artifact{Name:base-kernel,Path:/base,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgl97h/series-workflowgl97h-build-action-3335041845/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:patched-kernel,Path:/patched,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgl97h/series-workflowgl97h-build-action-3302341138/kernel.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:true,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},Artifact{Name:config,Path:/tmp/config.json,Mode:nil,From:,ArtifactLocation:ArtifactLocation{ArchiveLogs:nil,S3:nil,Git:nil,HTTP:nil,Artifactory:nil,HDFS:nil,Raw:nil,OSS:nil,GCS:&GCSArtifact{GCSBucket:GCSBucket{Bucket:,ServiceAccountKeySecret:nil,},Key:series-workflowgl97h/series-workflowgl97h-convert-artifact-2260502723/artifact.tgz,},Azure:nil,},GlobalName:,Archive:nil,Optional:false,SubPath:,RecurseMode:false,FromExpression:,ArtifactGC:nil,Deleted:false,},},} Output: &Outputs{Parameters:[]Parameter{},Artifacts:[]Artifact{},Result:nil,ExitCode:*0,}