How to create a Bootable Live CD/DVD from your Linux From Scratch (LFS) build
Turritopsis Dohrnii Teo En Ming <[email protected]> Sun, 15 Mar 2020 00:02:47 +0800
| Newsgroups | gmane.linux.lfs.general |
|---|---|
| Message-ID | <[email protected]> |
U3ViamVjdCBvZiBIaW50OiBIb3cgdG8gY3JlYXRlIGEgQm9vdGFibGUgTGl2ZSBDRC9EVkQgZnJv bSB5b3VyIExpbnV4IAogRnJvbSBTY3JhdGNoIChMRlMpIGJ1aWxkCgpHb29kIGRheSBmcm9tIFNp bmdhcG9yZSwKCkkgYW0gTXIuIFR1cnJpdG9wc2lzIERvaHJuaWkgVGVvIEVuIE1pbmcsIGJhc2Vk IGluIFNpbmdhcG9yZS4KCkkgaGF2ZSByZWNlbnRseSAqc3VjY2Vzc2Z1bGx5KiBjcmVhdGVkIG15 IG93biBjdXN0b20gTGludXggZGlzdHJpYnV0aW9uIApjYWxsZWQgVGVvIEVuIE1pbmcgTGludXgg MjAyMC4wMyAoRklOQUwpLCB3aGljaCBpcyBiYXNlZCBvbgpMaW51eCBGcm9tIFNjcmF0Y2ggMjAy MDAzMDItc3lzdGVtZCBib29rIGFuZCBMaW51eCBLZXJuZWwgNS41LjcsIG9uIDEyIApNYXJjaCAy MDIwLgoKWW91IG1heSByZWZlciB0byBteSByZWR1bmRhbnQgYmxvZyBwb3N0cyBmb3IgdGhlIGFu bm91bmNlbWVudC4KCkJsb2dnZXI6IEFubm91bmNpbmcgVGVvIEVuIE1pbmcgTGludXggMjAyMC4w MyAoRklOQUwpCkxpbms6IApodHRwczovL3RkdGVtY2VydHMuYmxvZ3Nwb3QuY29tLzIwMjAvMDMv YW5ub3VuY2luZy10ZW8tZW4tbWluZy1saW51eC0yMDIwMDMuaHRtbAoKV29yZHByZXNzOiBBbm5v dW5jaW5nIFRlbyBFbiBNaW5nIExpbnV4IDIwMjAuMDMgKEZJTkFMKQpMaW5rOiAKaHR0cHM6Ly90 ZHRlbWNlcnRzLndvcmRwcmVzcy5jb20vMjAyMC8wMy8xMi9hbm5vdW5jaW5nLXRlby1lbi1taW5n LWxpbnV4LTIwMjAtMDMtZmluYWwvCgpKaW1teSBBbmRlcnNvbidzIGd1aWRlL2hpbnQgd2FzIHdy aXR0ZW4gb24gMjAgSmFuIDIwMTMsIHdoaWNoIGlzIG1vcmUgCnRoYW4gNyB5ZWFycyBhZ28uIFRv ZGF5IGlzIDE0IE1hcmNoIDIwMjAgU2F0dXJkYXkuIFRoZXJlZm9yZSwgaGlzIGd1aWRlIAppcyBk ZWZpbml0ZWx5IG91dGRhdGVkCmFuZCBuZWVkcyBzb21lIHR3ZWFraW5nIHRvIGFkYXB0IHRvIHRo ZSAqbGF0ZXN0KiBMRlMgc3lzdGVtIGF0IHRoZSB0aW1lIApvZiB0aGlzIHdyaXRpbmcuCgpKaW1t eSBBbmRlcnNvbidzIGd1aWRlL2hpbnQgd2FzIHZlcmlmaWVkIHdpdGggTEZTIHZlcnNpb24gNy4y LiBJIGhhdmUgCm1hZGUgKmV4dGVuc2l2ZSogbW9kaWZpY2F0aW9ucyB0byBoaXMgZ3VpZGUvaGlu dCB0byB3b3JrIHdpdGggbXkgTEZTIAoyMDIwMDMwMi1zeXN0ZW1kIGJ1aWxkLgoKWW91IGNhbiBk b3dubG9hZCBUZW8gRW4gTWluZyBMaW51eCAyMDIwLjAzIChGSU5BTCkgQm9vdGFibGUgTGl2ZSBD RC9EVkQgCklTT3MgZnJvbSB0aGUgZm9sbG93aW5nIGdpdGh1Yi5jb20gbGluay4KCkxpbms6IApo dHRwczovL2dpdGh1Yi5jb20vdGVvLWVuLW1pbmcvdGVvLWVuLW1pbmctbGludXgvYmxvYi9tYXN0 ZXIvaXNvJTIwZG93bmxvYWQlMjBsaW5rcy50eHQKCk5vdGU6IFBsZWFzZSBub3RlIHRoYXQgbXkg TGl2ZSBDRC9EVkQgYm9vdHMgd2l0aCBhIEtlcm5lbCBQYW5pYy4gSSBob3BlIAp0aGF0IExpbnV4 IGV4cGVydHMgd2lsbCBiZSBhYmxlIHRvIGRvd25sb2FkIG15IElTTywgZXhhbWluZSBpdHMgY29u dGVudHMgCmFuZCBmaW5kIG91dCB3aGF0J3Mgd3JvbmcuCkkgd291bGQgbGlrZSB0byB0aGFuayBh bGwgb2YgeW91IGluIGFkdmFuY2UgZm9yIHlvdXIga2luZCBhc3Npc3RhbmNlIGFuZCAKYWR2aXNl LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09CgpUaGUgYXR0YWNoZWQgZmlsZSBpcyBhIG5ldyBoaW50IHdoaWNoIGRlc2NyaWJlcyBo b3cgdG8gdHVybiB5b3VyIExGUyAKYnVpbGQKaW50byB5b3VyIG93biBMaXZlIENEL0RWRC4KLS0t LS0tLS0tLS0tLS0gbmV4dCBwYXJ0IC0tLS0tLS0tLS0tLS0tCkFuIEhUTUwgYXR0YWNobWVudCB3 YXMgc2NydWJiZWQuLi4KVVJMOiAKPGh0dHA6Ly9saXN0cy5saW51eGZyb21zY3JhdGNoLm9yZy9w aXBlcm1haWwvaGludHMvYXR0YWNobWVudHMvMjAxMzAzMjAvNTcxNGNiODIvYXR0YWNobWVudC5o dG1sPgotLS0tLS0tLS0tLS0tLSBuZXh0IHBhcnQgLS0tLS0tLS0tLS0tLS0KCk9SSUdJTkFMIEFV VEhPUjogSmltbXkgQW5kZXJzb24gKGppbW15LmFuZGVyc29uMTA1NyBhdCBnbWFpbC5jb20pCk9S SUdJTkFMIERBVEU6IDIwMTMtMDEtMjAKTGluayB0byBvcmlnaW5hbCBoaW50OiAKaHR0cDovL2xp c3RzLmxpbnV4ZnJvbXNjcmF0Y2gub3JnL3BpcGVybWFpbC9oaW50cy8yMDEzLU1hcmNoLzAwMzMw Ny5odG1sCgpFRElURUQgQlk6IFR1cnJpdG9wc2lzIERvaHJuaWkgVGVvIEVuIE1pbmcsIFNpbmdh cG9yZQpFRElUIERBVEU6IDE0IE1BUkNIIDIwMjAsIFNBVFVSREFZCgpMSUNFTlNFOgoKUG9ydGlv bnMgb2YgdGhlIGluc3RydWN0aW9ucyBpbiB0aGlzIGhpbnQgd2VyZSBkZXJpdmVkIGZyb20gc2Ny aXB0cwppbiB0aGUgTEZTY3JpcHQgcHJvamVjdC4gIFRoZXNlIHNjcmlwdHMgYXJlIGNvdmVyZWQg YnkgdGhlIGZvbGxvd2luZwpsaWNlbnNlOgoKIyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVk LCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgCmEgY29weQojIG9mIHRo aXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0 d2FyZSIpLCAKdG8KIyBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBp bmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIAp0aGUKIyByaWdodHMgdG8gdXNlLCBjb3B5LCBt b2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCAKYW5kL29yCiMg c2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hv bSB0aGUgClNvZnR3YXJlIGlzCiMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKIwojIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0 aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIAppbmNsdWRlZCBpbgojIGFsbCBjb3BpZXMg b3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgojCiMgVEhFIFNPRlRXQVJF IElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIApFWFBS RVNTIE9SCiMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFO VElFUyBPRiAKTUVSQ0hBTlRBQklMSVRZLAojIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ T1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIApTSEFMTCBUSEUKIyBBVVRIT1JT IE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9S IE9USEVSCiMgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9S VCBPUiBPVEhFUldJU0UsIApBUklTSU5HCiMgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04g V0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiAKREVBTElOR1MKIyBJTiBUSEUg U09GVFdBUkUuCgpUaGlzIGhpbnQgaXMgYWxzbyBwcm92aWRlZCB1bmRlciB0aGUgYWJvdmUgbGlj ZW5zZSB0ZXJtcy4KCgpTWU5PUFNJUzogSG93IHRvIGNyZWF0ZSBhIGJvb3RhYmxlIExpdmUgQ0Qv RFZEIGZyb20geW91ciBMRlMgYnVpbGQuCgpERVNDUklQVElPTjoKCiAgICBUaGlzIGhpbnQgZGVz Y3JpYmVzIGhvdyB0byBjcmVhdGUgYSBsaXZlIENEL0RWRCBmcm9tIHlvdXIgTEZTIGJ1aWxkLiAg ClRoZQpyZXN1bHRpbmcgbGl2ZSBDRC9EVkQgY2FuIGJlIHVzZWQgYXMgYW4gTEZTL0NMRlMgYnVp bGQgaG9zdCBvciBmb3IgCndoYXRldmVyCnB1cnBvc2UgeW91IGRlc2lyZS4KCiAgICBCcmllZmx5 LCB5b3Ugd2lsbCBidWlsZCB5b3VyIExGUyBzeXN0ZW0gYW5kIGEgInNxdWFzaGVkIiB2ZXJzaW9u Cm9mIGl0IHdpbGwgYmUgY3JlYXRlZC4gICBBIGJ1c3lib3ggYmFzZWQgcmFtZGlzayB3aWxsIGJl IGNyZWF0ZWQKd2hpY2ggc2V0cyB1cCBhIHVuaW9uIG1vdW50IChlaXRoZXIgYXVmcyBvciB1bmlv bmZzKSBvZiB0aGUgc3F1YXNoZWQKTEZTIHN5c3RlbSB3aXRoIGEgcmFtIGJhc2VkIGZpbGUgc3lz dGVtIGFuZCB0aGVuIHRoZSBzeXN0ZW0gd2lsbCBiZQpzdGFydGVkIHdpdGggdGhlIHVuaW9uIGZp bGVzeXN0ZW0gYXMgcm9vdC4KCiAgICB1bmlvbmZzIGFuZCBhdWZzIGFyZSBub3QgcGFydCBvZiB0 aGUgc3RhbmRhcmQga2VybmVsIGNvZGUuICAgVG8gYnVpbGQKYSBsaXZlIGNkL2R2ZCB5b3UgbXVz dCBwYXRjaCB5b3VyIGtlcm5lbCB0byBhZGQgc3VwcG9ydCBmb3Igb25lIG9yIHRoZSAKb3RoZXIu ClRoaXMgaGludCB3aWxsIHN0aWxsIHdvcmsgd2l0aG91dCBhdWZzIG9yIHVuaW9uZnMgc3VwcG9y dCBidXQgdGhlIHJlc3VsdAp3aWxsIG5vdCBiZSBhIGxpdmUgQ0QvRFZEIGJ1dCBpbnN0ZWFkIGJl IGEgYm9vdGFibGUgQ0QvRFZEICh1c2VmdWwgYnV0CndpdGggbGVzc2VyIGFiaWxpdHkgdGhhbiBh IGxpdmUgY2QvZHZkKS4gVGVvIEVuIE1pbmcgKmRpZCBub3QqIHBhdGNoIApMaW51eCBrZXJuZWwg NS41LjcKdG8gYWRkIHN1cHBvcnQgZm9yIGF1ZnMgb3IgdW5pb25mcyBmaWxlc3lzdGVtcyBiZWNh dXNlIGhlIGRpZCBub3QgaGF2ZSAKdGhlIGtub3dsZWRnZSB0byB0d2Vhawp0aGUgcGF0Y2hlcy4K CiAgICBUaGUgb3JpZ2luYWwgaGludCB3YXMgdmVyaWZpZWQgd2l0aCBMRlMgNy4yIHg4NiAoMzIg YW5kIDY0IGJpdCkuICBJdCAKbWF5CihsaWtlbHkgd2lsbCkgd29yayB3aXRoIG90aGVyIExGUyB2 ZXJzaW9ucyBhbHNvIGJ1dCBpdCBvbmx5IHdhcwpzcGVjaWZpY2FsbHkgdGVzdGVkIHdpdGggNy4y IGFuZCB5b3UgYXJlIG9uIHlvdXIgb3duIHRvIHdvcmsgb3V0IGhvdwp0byBtYWtlIGl0IHdvcmsg d2l0aCBvdGhlciBMRlMgdmVyc2lvbnMuIFRlbyBFbiBNaW5nIGhhcyBtb2RpZmVkIHRoaXMgCmd1 aWRlL2hpbnQgdG8gYWxsb3cgaXQKdG8gd29yayB3aXRoIHRoZSBsYXRlc3QgTEZTIDIwMjAwMzAy LXN5c3RlbWQgZGV2ZWxvcG1lbnQgYm9vay4KCiAgICBBIGRlc2NyaXB0aW9uIG9mIGVhY2ggc3Rl cCBhbmQgY3V0IGFuZCBwYXN0ZSBmb3IgdGhhdApzdGVwIGlzIHByb3ZpZGVkLiAgQ3V0IGFuZCBw YXN0aW5nIHNob3VsZCBtYWtlIGl0IGVhc2llciB0byBidWlsZCBhIGxpdmUgCmNkL2R2ZApidXQg aXQgaXMgaW1wb3J0YW50IHRoYXQgeW91IHVuZGVyc3RhbmQgd2hhdCB0aGUgcHVycG9zZSBvZiBl YWNoIHN0ZXAKaXMuICBCbGluZGx5IGN1dHRpbmcgYW5kIHBhc3RpbmcgZnJvbSB0aGlzIGhpbnQg d2lsbCBwcm9iYWJseSBub3QKcmVzdWx0IGluIHN1Y2Nlc3MuCgogICAgRm9sbG93aW5nIHRoaXMg aGludCwgbGlrZSBkb2luZyBwcmV0dHkgbXVjaCBhbnl0aGluZyBpbiBMRlMsIGhhcyB0aGUKcG90 ZW50aWFsIG9mIGRhbWFnaW5nIHlvdXIgc3lzdGVtLiAgIEJlZm9yZSB5b3UgYmVnaW4sIG1ha2Ug c3VyZQp5b3UndmUgc2F2ZWQgYSBjb3B5IG9mIGFueSBkYXRhIHRoYXQgaXMgaW1wb3J0YW50IHRv IHlvdS4gIEl0J3MgYWxzbyAKc3VnZ2VzdGVkCnRvIGZvbGxvdyB0aGlzIHByb2NlZHVyZSBvbiBh IHN5c3RlbSB0aGF0IGlzIHVzZWQgb25seSBieSB5b3Ugc28gdGhhdCAKYW55CmVycm9ycyB3aWxs IG5vdCBhZmZlY3Qgb3RoZXJzLgoKCkFUVEFDSE1FTlRTOgpOb25lCgpQUkVSRVFVSVNJVEVTOgoK VGhpcyBoaW50IGFzc3VtZXMgdGhlIHJlYWRlciBpcyBmYW1pbGlhciB3aXRoIExpbnV4IEZyb20g U2NyYXRjaCAoTEZTKS4KCk11Y2ggb2YgdGhpcyBoaW50IGFzc3VtZXMgdGhhdCB0aGUgTEZTIHZh cmlhYmxlIGlzIHByb3Blcmx5IHNldC4gU28sCndoZW4gZm9sbG93aW5nIHRoaXMgaGludCwgYXQg YWxsIHRpbWVzIG1ha2Ugc3VyZSBMRlMgaXMgc2V0IHByb3Blcmx5OgoKZXhwb3J0IExGUz0vbW50 L2xmcyAgIChvciBhcyBuZWVkZWQgZm9yIHlvdXIgc2V0dXApCgoKSElOVDoKClN0ZXAgMSkgRG93 bmxvYWQgYWRkaXRpb25hbCBuZWVkZWQgcGFja2FnZXMuCgogICAgVGhpcyBzdGVwIGlzIGRvbmUg b24gdGhlIEhPU1QgKG5vdCBpbiBMRlMgY2hyb290KS4KCiAgICBZb3Ugd2lsbCBuZWVkIHNvbWUg YWRkaXRpb25hbCBwYWNrYWdlcy4gICBEb3dubG9hZCB0aGUgc3F1YXNoZnMgCnRvb2xzLApidXN5 Ym94IGFuZCBzeXNsaW51eC4gICBUaGUgc3F1YXNoZnMgdG9vbHMgd2lsbCBiZSBuZWVkZWQgb24g dGhlIGhvc3QuCgoKIy0tLS0tLS0tLS0tLSBDdXQgYW5kIFBhc3RlIHN0YXJ0CmNkIC9ob21lL3Rl by1lbi1taW5nL0Rvd25sb2Fkcwp3Z2V0IC00IApodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9q ZWN0cy9zcXVhc2hmcy9maWxlcy9zcXVhc2hmcy9zcXVhc2hmczQuNC9zcXVhc2hmczQuNC50YXIu Z3ovZG93bmxvYWQKd2dldCAtNCBodHRwczovL2J1c3lib3gubmV0L2Rvd25sb2Fkcy9idXN5Ym94 LTEuMzEuMS50YXIuYnoyCndnZXQgLTQgCmh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgv dXRpbHMvYm9vdC9zeXNsaW51eC9zeXNsaW51eC00LjA2LnRhci54egojLS0tLS0tLS0tLS0tIEN1 dCBhbmQgUGFzdGUgZW5kCgogICAgQWRkaXRpb25hbGx5LCB0aGUgYWRkZW5kdW0gb2YgdGhpcyBo aW50IGNvbnRhaW5zIGEgc2NyaXB0IHRoYXQgaXMKcmVxdWlyZWQgZm9yIHRoZSBsaXZlIGNkL2R2 ZC4gICBTYXZlIHRoZSBhZGRlbmR1bSBvZiB0aGlzIGhpbnQgYXM6CgokTEZTL3NvdXJjZXMvaW5p dC5zaAoKICAgIE5vdGU6IFlvdSBjYW4gc2tpcCB0aGUgYXVmcy91bmlvbmZzIGtlcm5lbCBwYXRj aCBhbHRvZ2V0aGVyIGlmIGEKbW9yZSBzaW1wbGUgYm9vdGFibGUgQ0QvRFZEIGlzIGFkZXF1YXRl IGZvciB5b3VyIG5lZWRzLgoKClN0ZXAgMikgQWRkIHNxdWFzaGZzIHRvb2xzIHRvIHlvdXIgaG9z dC4gICAoRG8gdGhpcyBvbiB5b3VyIEhPU1QpCgpUZW8gRW4gTWluZydzIGhvc3Qgb3BlcmF0aW5n IHN5c3RlbSBpcyBVYnVudHUgMTguMDQuMyBMVFMgRGVza3RvcCAKRWRpdGlvbi4KCiAgICBJZiB5 b3UgYXJlIHJ1bm5pbmcgYSBob3N0IGRpc3RyaWJ1dGlvbiB3aGljaCBwcm92aWRlcyBwcmVwYWNr YWdlZApzcXVhc2hmcyB0b29scywgeW91IG1heSBiZSBhYmxlIHRvIHVzZSB0aGVtLiAgIEhvd2V2 ZXIgdGhleSBtdXN0IGJlCmF0IGxlYXN0IHZlcnNpb24gNC4xIHRvIHdvcmsgcHJvcGVybHkgd2l0 aCB0aGlzIGhpbnQuCgogICAgSXQgaXMgcmVjb21tZW5kZWQgaG93ZXZlciwgdGhhdCB5b3UgYnVp bGQgc3F1YXNoZnMgdG9vbHMgNC40IGZyb20KdGhlIHNvdXJjZS4gVGhpcyBoaW50IHdhcyB0ZXN0 ZWQgd2l0aCBzcXVhc2hmcyB0b29scyA0LjQgYW5kIGJldHRlcgooeHopIGNvbXByZXNzaW9uIGlz IG9idGFpbmVkIHdpdGggNC40IChjb21wYXJlZCB3aXRoIDQuMSkuICBUbyBidWlsZCB0aGUKc3F1 YXNoZnMgdG9vbHMgZG86CgojLS0tLS0tLS0tLS0tIEN1dCBhbmQgUGFzdGUgc3RhcnQKY2QgL2hv bWUvdGVvLWVuLW1pbmcvRG93bmxvYWRzCnRhciB4dmZ6IHNxdWFzaGZzNC40LnRhci5negpjZCBz cXVhc2hmczQuNC9zcXVhc2hmcy10b29scwpFZGl0IE1ha2VmaWxlIGFzIGZvbGxvd3M6ClhaX1NV UFBPUlQgPSAxCkNPTVBfREVGQVVMVCA9IHh6CnN1ZG8gYXB0IGluc3RhbGwgbGlibHptYS1kZXYK bWFrZQpzdWRvIG1ha2UgaW5zdGFsbApta3NxdWFzaGZzIC12ZXJzaW9uCiMtLS0tLS0tLS0tLS0g Q3V0IGFuZCBQYXN0ZSBlbmQKClRoZSB2ZXJzaW9uIHN0cmluZyBkaXNwbGF5ZWQgc2hvdWxkIGJl IDQuNC4gICBJZiBub3QsIHlvdSBtYXkgbmVlZCB0bwphZGp1c3QgeW91ciBQQVRIIHNvIHRoYXQg JEhPTUUvYmluIGFwcGVhcnMgZmlyc3QgaW4gaXQuCgpJZiB5b3UgYXJlIG9uIGEgc2luZ2xlIHVz ZXIgc3lzdGVtLCBvciBpZiBubyBvdGhlciB2ZXJzaW9uIG9mCnNxdWFzaGZzIHRvb2xzIGV4aXN0 cywgc3F1YXNoZnMgdG9vbHMgY291bGQgYmUgaW5zdGFsbGVkIGluIC91c3IvYmluCm9yIC91c3Iv bG9jYWwvYmluIHJhdGhlciB0aGFuICRIT01FL2Jpbi4KCklmIHRoZSBsem1hIGxpYnJhcmllcyBh cmUgbm90IGluc3RhbGxlZCwgdGhlIGJ1aWxkIG9mIHNxdWFzaGZzLXRvb2xzCndpbGwgZmFpbC4g ICBUbyByZXNvbHZlIGl0LCBlaXRoZXIgaW5zdGFsbCB0aGUgbHptYSBsaWJyYXJpZXMgb3IKcmVi dWlsZCBzcXVhc2hmcyB3aXRob3V0IHh6IHN1cHBvcnQuICAgc3F1YXNoZnMgKGFuZCB0aGlzIGhp bnQpIGNhbiAKb3BlcmF0ZQpwcm9wZXJseSB3aXRob3V0IHh6IHN1cHBvcnQgYnV0IHdpdGhvdXQg eHogc3VwcG9ydCwgdGhlIHJlc3VsdGluZwpsaXZlIENEL0RWRCBpc28gc2l6ZSB3aWxsIGJlIHNv bWV3aGF0IGxhcmdlci4KCgpTdGVwIDMpIEJ1aWxkIHlvdXIgTEZTIHN5c3RlbSBhbmQga2VybmVs LgoKICAgIEZvbGxvdyB0aGUgaW5zdHJ1Y3Rpb25zIGluIHRoZSBMRlMvQkxGUyBib29rIGFuZCBi dWlsZCB5b3VyIExGUyAKc3lzdGVtCmFzIHlvdSBub3JtYWxseSB3b3VsZC4KCldoZW4geW91IGNv bmZpZ3VyZSB0aGUga2VybmVsLCBtYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBhcmUgZW5hYmxlZAph cyBidWlsdGlucyAobm90IGFzIG1vZHVsZXMpOgoKICAgIFNRVUFTSEZTIHN1cHBvcnQgKGFuZCBz dXBwb3J0IGZvciBTUVVBU0hGUyBYWiBjb21wcmVzc2VkIGZpbGUgCnN5c3RlbXMpLgogICAgVU5J T05GUyBvciBBVUZTIHN1cHBvcnQgKFRlbyBFbiBNaW5nICpkaWQgbm90KiBwYXRjaCBMaW51eCBL ZXJuZWwgCjUuNS43IGZvciBBVUZTIG9yIFVOSU9ORlMgc3VwcG9ydCkuCiAgICBDRFJPTSBzdXBw b3J0IChJU085NjYwKS4KICAgIERFVlRNUEZTIHN1cHBvcnQuCgogICAgVGhlbiBidWlsZCBhbmQg aW5zdGFsbCBhcyBub3JtYWw6CiMtLS0tLS0tLS0tLS0gQ3V0IGFuZCBQYXN0ZSBzdGFydAptYWtl Cm1ha2UgbW9kdWxlc19pbnN0YWxsCmNwIGFyY2gveDg2L2Jvb3QvYnpJbWFnZSAKL2Jvb3Qvdm1s aW51ei01LjUuNy10dXJyaXRvcHNpcy5kb2hybmlpLnRlby5lbi5taW5nCmNwIC5jb25maWcgL2Jv b3QvY29uZmlnLTUuNS43CiMtLS0tLS0tLS0tLS0gQ3V0IGFuZCBQYXN0ZSBlbmQKCgogICAgQWRk aXRpb25hbGx5LCAvZXRjL2ZzdGFiIG5lZWRzIHNvbWUgdHdlYWtzIGZvciBhIGxpdmUgY2QvZHZk LgpFZGl0IC9ldGMvZnN0YWIgYW5kIGNvbW1lbnQgb3V0IGFsbCBoYXJkIGRyaXZlIG1vdW50cy4K QnV0IGxlYXZlIHRoZSB2aXJ0dWFsIGZpbGVzeXN0ZW0gbW91bnRzICgvcHJvYyBhbmQgc3VjaCkg aW4gaXQ6CiMtLS0tLS0tLS0tLS0gQ3V0IGFuZCBQYXN0ZSBzdGFydAojIFRlbyBFbiBNaW5nJ3Mg ZmF2b3JpdGUgdGV4dCBlZGl0b3IgaW4gTGludXggaXMgbmFuby4KbmFubyAvZXRjL2ZzdGFiCj4+ IGNvbW1lbnQgb3V0IGFueSBoYXJkIGRyaXZlIG1vdW50cyA8PAojLS0tLS0tLS0tLS0tIEN1dCBh bmQgUGFzdGUgZW5kCgogICAgQnVpbGQgYW5kIGNvbmZpZ3VyZSB0aGUgcmVtYWluZGVyIG9mIHlv dXIgTEZTIHN5c3RlbSBhcyBub3JtYWwuCgoKU3RlcCA0KSBCdWlsZCBidXN5Ym94IGluIHlvdXIg TEZTLgoKICAgIFdoaWxlIGluc2lkZSB0aGUgY2hyb290IGVudmlyb25tZW50IGFkZCBidXN5Ym94 IHRvIHlvdXIKICAgIExGUyBzeXN0ZW06CgpFUlJPUiBjb21waWxpbmcgYnVzeWJveCB3aXRoIGds aWJjLTIuMzE6ICJzeXMtYXBwcy9idXN5Ym94LTEuMzEuMSBmYWlscyAKdG8gY29tcGlsZSB3aXRo IHN5cy1kZXZlbC9nbGliYy0yLjMxIgoKU29mdHdhcmUgQnVnIExpbms6IGh0dHBzOi8vYnVncy5n ZW50b28ub3JnLzcwODM1MAoKTGluayB0byBwYXRjaCBmaWxlOiAKaHR0cHM6Ly83MDgzNTAuYnVn cy5nZW50b28ub3JnL2F0dGFjaG1lbnQuY2dpP2lkPTYxMTc4MAoKPT09U3RhcnQgRmlsZSBidXN5 Ym94LWdsaWJjLTIuMzEucGF0Y2g9PT0KCmRpZmYgLS1naXQgYS9jb3JldXRpbHMvZGF0ZS5jIGIv Y29yZXV0aWxzL2RhdGUuYwppbmRleCAzNDE0ZDM4YWUuLjRhZGU2YWJiNCAxMDA2NDQKLS0tIGEv Y29yZXV0aWxzL2RhdGUuYworKysgYi9jb3JldXRpbHMvZGF0ZS5jCkBAIC0yNzksNiArMjc5LDkg QEAgaW50IGRhdGVfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQogIAkJ dGltZSgmdHMudHZfc2VjKTsKICAjZW5kaWYKICAJfQorI2lmICFFTkFCTEVfRkVBVFVSRV9EQVRF X05BTk8KKwl0cy50dl9uc2VjID0gMDsKKyNlbmRpZgogIAlsb2NhbHRpbWVfcigmdHMudHZfc2Vj LCAmdG1fdGltZSk7CgogIAkvKiBJZiBkYXRlIHN0cmluZyBpcyBnaXZlbiwgdXBkYXRlIHRtX3Rp bWUsIGFuZCBtYXliZSBzZXQgZGF0ZSAqLwpAQCAtMzAxLDkgKzMwNCwxMCBAQCBpbnQgZGF0ZV9t YWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhciAqKmFyZ3YpCiAgCQlpZiAoZGF0ZV9zdHJb MF0gIT0gJ0AnKQogIAkJCXRtX3RpbWUudG1faXNkc3QgPSAtMTsKICAJCXRzLnR2X3NlYyA9IHZh bGlkYXRlX3RtX3RpbWUoZGF0ZV9zdHIsICZ0bV90aW1lKTsKKwkJdHMudHZfbnNlYyA9IDA7Cgog IAkJLyogaWYgc2V0dGluZyB0aW1lLCBzZXQgaXQgKi8KLQkJaWYgKChvcHQgJiBPUFRfU0VUKSAm JiBzdGltZSgmdHMudHZfc2VjKSA8IDApIHsKKwkJaWYgKChvcHQgJiBPUFRfU0VUKSAmJiBjbG9j a19zZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHMpIDwgMCkgewogIAkJCWJiX3BlcnJvcl9tc2co ImNhbid0IHNldCBkYXRlIik7CiAgCQl9CiAgCX0KZGlmZiAtLWdpdCBhL2xpYmJiL21pc3Npbmdf c3lzY2FsbHMuYyBiL2xpYmJiL21pc3Npbmdfc3lzY2FsbHMuYwppbmRleCA4N2NmNTliM2QuLmRj NDBkOTE1NSAxMDA2NDQKLS0tIGEvbGliYmIvbWlzc2luZ19zeXNjYWxscy5jCisrKyBiL2xpYmJi L21pc3Npbmdfc3lzY2FsbHMuYwpAQCAtMTUsMTQgKzE1LDYgQEAgcGlkX3QgZ2V0c2lkKHBpZF90 IHBpZCkKICAJcmV0dXJuIHN5c2NhbGwoX19OUl9nZXRzaWQsIHBpZCk7CiAgfQoKLWludCBzdGlt ZShjb25zdCB0aW1lX3QgKnQpCi17Ci0Jc3RydWN0IHRpbWV2YWwgdHY7Ci0JdHYudHZfc2VjID0g KnQ7Ci0JdHYudHZfdXNlYyA9IDA7Ci0JcmV0dXJuIHNldHRpbWVvZmRheSgmdHYsIE5VTEwpOwot fQotCiAgaW50IHNldGhvc3RuYW1lKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pCiAgewog IAlyZXR1cm4gc3lzY2FsbChfX05SX3NldGhvc3RuYW1lLCBuYW1lLCBsZW4pOwpkaWZmIC0tZ2l0 IGEvdXRpbC1saW51eC9yZGF0ZS5jIGIvdXRpbC1saW51eC9yZGF0ZS5jCmluZGV4IDcwZjgyOWU3 Zi4uODc4Mzc1ZDc4IDEwMDY0NAotLS0gYS91dGlsLWxpbnV4L3JkYXRlLmMKKysrIGIvdXRpbC1s aW51eC9yZGF0ZS5jCkBAIC05NSw5ICs5NSwxMyBAQCBpbnQgcmRhdGVfbWFpbihpbnQgYXJnYyBV TlVTRURfUEFSQU0sIGNoYXIgKiphcmd2KQogIAlpZiAoIShmbGFncyAmIDIpKSB7IC8qIG5vIC1w ICgtcyBtYXkgYmUgcHJlc2VudCkgKi8KICAJCWlmICh0aW1lKE5VTEwpID09IHJlbW90ZV90aW1l KQogIAkJCWJiX2Vycm9yX21zZygiY3VycmVudCB0aW1lIG1hdGNoZXMgcmVtb3RlIHRpbWUiKTsK LQkJZWxzZQotCQkJaWYgKHN0aW1lKCZyZW1vdGVfdGltZSkgPCAwKQorCQllbHNlIHsKKwkJCXN0 cnVjdCB0aW1lc3BlYyB0czsKKwkJCXRzLnR2X3NlYyA9IHJlbW90ZV90aW1lOworCQkJdHMudHZf bnNlYyA9IDA7CisJCQlpZiAoY2xvY2tfc2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKSA8IDAp CiAgCQkJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3Qgc2V0IHRpbWUgb2YgZGF5Iik7CisJ CX0KICAJfQoKICAJaWYgKGZsYWdzICE9IDEpIC8qIG5vdCBsb25lIC1zICovCgo9PT1FbmQgRmls ZSBidXN5Ym94LWdsaWJjLTIuMzEucGF0Y2g9PT0KCiMtLS0tLS0tLS0tLS0gQ3V0IGFuZCBQYXN0 ZSBzdGFydApjZCAvc291cmNlcwp0YXIgeHZmIGJ1c3lib3gtMS4zMS4xLnRhci5iejIKY2QgYnVz eWJveC0xLjMxLjEKY2F0IC4uL2J1c3lib3gtZ2xpYmMtMi4zMS5wYXRjaCB8IHBhdGNoIC1OcDEK bWFrZSBkZWZjb25maWcKc2VkICdzLyMgQ09ORklHX1NUQVRJQyBpcyBub3Qgc2V0L0NPTkZJR19T VEFUSUM9eS8nIC1pIC5jb25maWcKCnNlZCAncy9DT05GSUdfRkVBVFVSRV9IQVZFX1JQQz15LyMg Q09ORklHX0ZFQVRVUkVfSEFWRV9SUEMgaXMgbm90IHNldC8nIApcCiAgICAgICAgIC1pIC5jb25m aWcKc2VkICdzL0NPTkZJR19GRUFUVVJFX01PVU5UX05GUz15LyMgQ09ORklHX0ZFQVRVUkVfTU9V TlRfTkZTIGlzIG5vdCAKc2V0LycgXAogICAgICAgICAtaSAuY29uZmlnCnNlZCAncy9DT05GSUdf RkVBVFVSRV9JTkVURF9SUEM9eS8jIENPTkZJR19GRUFUVVJFX0lORVREX1JQQyBpcyBub3QgCnNl dC8nIFwKICAgICAgICAgLWkgLmNvbmZpZwptYWtlCmNwIC12IGJ1c3lib3ggL2JpbgojLS0tLS0t LS0tLS0tIEN1dCBhbmQgUGFzdGUgZW5kCgoKU3RlcCA1KSBDcmVhdGUgcmFtZGlzay4KCkRvIHRo aXMgc3RlcCBmcm9tIGluc2lkZSB0aGUgTEZTIGNocm9vdCBlbnZpcm9ubWVudC4gICBUaGlzIHN0 ZXAKY3JlYXRlcyBhIGJ1c3lib3ggYmFzZWQgcmFtZGlzay4gICBUaGUgcmFtZGlzayBkb2VzIHRo ZSB3b3JrIG9mCmNyZWF0aW5nIGFuZCBtb3VudGluZyB0aGUgdW5pb24gZmlsZXN5c3RlbSBhbmQg c3dpdGNoaW5nIHRvIGl0CmZvciB0aGUgcm9vdCBmaWxlIHN5c3RlbS4KCiMtLS0tLS0tLS0tLS0g Q3V0IGFuZCBQYXN0ZSBzdGFydApjZCAvc291cmNlcwplY2hvICJUZW8gRW4gTWluZyBMaW51eCAy MDIwLjAzIChGSU5BTCkgQm9vdGFibGUgTGl2ZSBDRC9EVkQiID5pZF9sYWJlbApta2RpciAtcHYg bW50X2luaXQve2Jpbixib290fQpjcCAtdiBpZF9sYWJlbCBtbnRfaW5pdC9ib290CmNwIC12IC9i aW4vYnVzeWJveCBtbnRfaW5pdC9iaW4KY3AgaW5pdC5zaCBtbnRfaW5pdC9pbml0CnNlZCAtaSAi cy88QVJDSD4vJCh1bmFtZSAtbSkvZyIgbW50X2luaXQvaW5pdApjaG1vZCAreCBtbnRfaW5pdC9p bml0CgpwdXNoZCBtbnRfaW5pdApmaW5kIC4gfCAuL2Jpbi9idXN5Ym94IGNwaW8gLW8gLUggbmV3 YyAtRiAuLi9pbml0cmFtZnMuY3Bpbwpwb3BkCmd6aXAgLTkgaW5pdHJhbWZzLmNwaW8Kcm0gLXJm IG1udF9pbml0Cm12IGluaXRyYW1mcy5jcGlvLmd6IC9ib290L2luaXRyYW0uZnMKbXYgaWRfbGFi ZWwgL2Jvb3QKIy0tLS0tLS0tLS0tLSBDdXQgYW5kIFBhc3RlIGVuZAoKClN0ZXAgNikgTWFrZSBh IHNxdWFzaGVkIHZlcnNpb24gb2YgeW91ciBMRlMuCgogICAgVGhpcyBzdGVwIHNob3VsZCBiZSBk b25lIG9uIHRoZSBIT1NUIChub3QgaW5zaWRlIGNocm9vdCkuCgogICAgRG8gYW55IG5lZWRlZCBj bGVhbnVwIGFuZCBmaW5hbCB0d2Vha2luZyBvZiB5b3VyIExGUyBzeXN0ZW0gcHJpb3IgdG8KY29u dGludWluZy4gIFN0cmlwIGFueSBiaW5hcmllcyB5b3Ugd2FudCBzdHJpcHBlZCwgcmVtb3ZlIGFu eSBidWlsZCAKY3J1ZnQsCnJlbW92ZSAkTEZTL3Rvb2xzLCBldGMuICAgQWRkIGFueSBhZGRpdGlv bmFsIGRhdGEgdGhhdCB5b3Ugd291bGQgbGlrZQp0byBiZSBwcmVzZW50IG9uIHRoZSBsaXZlIENE L0RWRCwgZXRjLiAgQSBiYXNlIExGUyBzeXN0ZW0gKHdpdGhvdXQgCnNvdXJjZSkgdHVybnMgaW50 byBvbmx5CmEgMjY3IG1lZ2FieXRlIChvciB0aGVyZWFib3V0cykgc2l6ZSBpc28sIHNvIHRoZXJl IHNob3VsZCBiZSBwbGVudHkgb2YKc3BhY2UgYXZhaWxhYmxlIGZvciBleHRyYXMuCgogICAgRXhp dCB0aGUgY2hyb290IGFuZCB1bm1vdW50IGFueSBmaWxlc3lzdGVtcyB0aGF0IGFyZSBhc3NvY2lh dGVkIHdpdGgKdGhlICRMRlMgZGlyZWN0b3J5LiAgIEF0IHRoaXMgcG9pbnQsIGl0IGlzIGEgZ29v ZCBpZGVhIHRvIGRvIGEgc3lzdGVtCnNodXRkb3duIGFuZCByZXN0YXJ0IHRvIGVuc3VyZSB0aGF0 IHRoZSBMRlMgZGlyZWN0b3J5IGlzIHVudXNlZCBhbmQKaW4gYSBxdWllc2NlbnQgc3RhdGUuICAg TWFrZSBzdXJlIExGUyBpcyBzZXQgYWdhaW4gYWZ0ZXIgdGhlIHJlYm9vdC4KCgojLS0tLS0tLS0t LS0tIEN1dCBhbmQgUGFzdGUgc3RhcnQKIyBTZXQgTEZTIHZhbHVlIGFzIG5lZWRlZC4uLgpleHBv cnQgTEZTPS9tbnQvbGZzCmNkIC9ob21lL3Rlby1lbi1taW5nCmVjaG8gJExGUwpybSAtZiByb290 LnNmcwpzdWRvIG1rc3F1YXNoZnMgJExGUyByb290LnNmcyAtY29tcCB4egojLS0tLS0tLS0tLS0t IEN1dCBhbmQgUGFzdGUgZW5kCgoob21pdCB0aGUgLWNvbXAgeHogaWYgeW91ciBzcXVhc2hmcyB0 b29scyBkb24ndCBzdXBwb3J0IHh6IGNvbXByZXNzaW9uKS4KCgoKU3RlcCA3KSBBZGQgc3lzbGlu dXggYW5kIGNyZWF0ZSBDRC9EVkQgaW1hZ2UuCgpUaGlzIHN0ZXAgc2hvdWxkIGJlIGRvbmUgb24g dGhlIEhPU1QgKG5vdCBpbnNpZGUgY2hyb290KS4KClNldHVwIHRoZSBpc29saW51eCBjb25maWd1 cmF0aW9uIGZpbGU6CgojLS0tLS0tLS0tLS0tIEN1dCBhbmQgUGFzdGUgc3RhcnQKY2QgL2hvbWUv dGVvLWVuLW1pbmcKCmNhdCA+IGlzb2xpbnV4LmNmZyA8PCBFT0YKREVGQVVMVCBtZW51LmMzMgpQ Uk9NUFQgMApNRU5VIFRJVExFIFNlbGVjdCBhbiBvcHRpb24uLi4KVElNRU9VVCAzMDAKCkxBQkVM IGxpdmUKICAgICBNRU5VIExBQkVMIF5Cb290IFRlbyBFbiBNaW5nIExpbnV4IDIwMjAuMDMgKEZJ TkFMKSBMaXZlIENEL0RWRCAKKCQodW5hbWUgLW0pKQogICAgIE1FTlUgREVGQVVMVAogICAgIEtF Uk5FTCAvYm9vdC8kKHVuYW1lIC1tKS92bWxpbnV6CiAgICAgQVBQRU5EIGluaXRyZD0vYm9vdC8k KHVuYW1lIC1tKS9pbml0cmFtLmZzIHF1aWV0CgpMQUJFTCBidXN5Ym94CiAgICAgTUVOVSBMQUJF TCBeQm9vdCBidXN5Ym94ICgkKHVuYW1lIC1tKSkKICAgICBLRVJORUwgL2Jvb3QvJCh1bmFtZSAt bSkvdm1saW51egogICAgIEFQUEVORCBpbml0cmQ9L2Jvb3QvJCh1bmFtZSAtbSkvaW5pdHJhbS5m cyBxdWlldCBidXN5Ym94CgpMQUJFTCBoYXJkZGlzawogICAgIE1FTlUgTEFCRUwgQm9vdCBmcm9t IGZpcnN0IF5IYXJkIGRpc2sKICAgICBMT0NBTEJPT1QgMHg4MAoKRU9GCiMtLS0tLS0tLS0tLS0g Q3V0IGFuZCBQYXN0ZSBlbmQKClBhY2thZ2UgdGhlIGlzb2xpbnV4IGJvb3Rsb2FkZXIsIHNxdWFz aGVkIHJvb3RmcyBhbmQgcmFtZGlzawppbnRvIGEgc3ViZGlyZWN0b3J5OgoKIy0tLS0tLS0tLS0t LSBDdXQgYW5kIFBhc3RlIHN0YXJ0CnRhciB4ZiBzeXNsaW51eC00LjA2LnRhci54egpybSAtcmYg bGl2ZQpta2RpciAtcCBsaXZlL2Jvb3Qve2lzb2xpbnV4LCQodW5hbWUgLW0pfQpjcCAtdiBzeXNs aW51eC00LjA2L2NvcmUvaXNvbGludXguYmluIGxpdmUvYm9vdC9pc29saW51eApjcCAtdiBzeXNs aW51eC00LjA2L2NvbTMyL21lbnUvbWVudS5jMzIgbGl2ZS9ib290L2lzb2xpbnV4Cm12IC12IC9o b21lL3Rlby1lbi1taW5nL2lzb2xpbnV4LmNmZyAgICAgICAgICAgICAgICAgbGl2ZS9ib290L2lz b2xpbnV4CgpjcCAtdiAvaG9tZS90ZW8tZW4tbWluZy9yb290LnNmcyBsaXZlL2Jvb3QvJCh1bmFt ZSAtbSkKY3AgLXYgJExGUy9ib290L3ZtbGludXotNS41LjctdHVycml0b3BzaXMuZG9ocm5paS50 ZW8uZW4ubWluZyAgIApsaXZlL2Jvb3QvJCh1bmFtZSAtbSkvdm1saW51egpjcCAtdiAkTEZTL2Jv b3QvaWRfbGFiZWwgbGl2ZS9ib290LyQodW5hbWUgLW0pCmNwIC12ICRMRlMvYm9vdC9pbml0cmFt LmZzIGxpdmUvYm9vdC8kKHVuYW1lIC1tKS9pbml0cmFtLmZzCgojLS0tLS0tLS0tLS0tIEN1dCBh bmQgUGFzdGUgZW5kCgpDcmVhdGUgdGhlIGxpdmUgQ0QvRFZEIGlzbyBpbWFnZSB1c2luZyB3aGF0 ZXZlciBpc28gY3JlYXRpb24gdG9vbCB5b3UKaGF2ZS4gICBJbiB0aGlzIGV4YW1wbGUsIGl0IGlz ICdnZW5pc29pbWFnZSc6CgojLS0tLS0tLS0tLS0tIEN1dCBhbmQgUGFzdGUgc3RhcnQKZ2VuaXNv aW1hZ2UgLW8gdGVvLWVuLW1pbmctbGludXgtMjAyMC4wMy1maW5hbC1saXZlLWNkLWR2ZC5pc28g ICAgIFwKICAgICAgICAgLWIgYm9vdC9pc29saW51eC9pc29saW51eC5iaW4gXAogICAgICAgICAt YyBib290LmNhdCAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIC1uby1lbXVsLWJvb3QgICAg ICAgICAgICAgICAgIFwKICAgICAgICAgLWJvb3QtbG9hZC1zaXplIDQgICAgICAgICAgICAgXAog ICAgICAgICAtYm9vdC1pbmZvLXRhYmxlICAgICAgICAgICAgICBcCiAgICAgICAgIC1qb2xpZXQg LWwgLVIgICAgICAgICAgICAgICAgIFwKICAgICAgICAgbGl2ZQoKcm0gLXJmIGxpdmUgIyMjIE9Q VElPTkFMCiMtLS0tLS0tLS0tLS0gQ3V0IGFuZCBQYXN0ZSBlbmQKClN0ZXAgOCkgQnVybiBhbmQg Ym9vdC4KCkJ1cm4gdGhlIGlzbyB1c2luZyB3aGF0ZXZlciBjZC9kdmQgd3JpdGluZyB0b29scyB5 b3UgcHJlZmVyLgpUZW8gRW4gTWluZyB1c2VzIGszYi4gUmVib290IHRoZQpzeXN0ZW0gd2l0aCB0 aGUgQ0QvRFZEIGluc2VydGVkIGFuZCBpdCBzaG91bGQgYm9vdCBpbnRvIHlvdXIgbGl2ZSAKQ0Qv RFZELgoKU3RlcCA5KSBVc2FnZQoKVGhlIENEL0RWRCBib290IG1lbnUgYWxsb3dzIHlvdSB0byBi b290IGJ1c3lib3ggb3IgdGhlIGxpdmUgY2QvZHZkLiAgIApCdXN5Ym94Cm1heSBiZSB1c2VmdWwg aWYgZGVidWdnaW5nIG9yIGV4cGVyaW1lbnRpbmcgaXMgbmVlZGVkLgoKWW91IGNhbiB1c2UgdGhl IGxpdmUgY2QvZHZkIHRvIGluamVjdCB5b3VyIExGUyBpbWFnZSBvbnRvIHRoZSB0YXJnZXQgCmNv bXB1dGVyICgKcmF0aGVyIHRoYW4gcmVidWlsZGluZyBmcm9tIHNjcmF0Y2guLikgICBGaXJzdCwg bW91bnQKL2Rldi9jZHJvbSBzb21ld2hlcmUuICAgSW4gdGhlIGJvb3Qgc3ViZGlyZWN0b3J5IGlu IHRoZSBjZCBpbWFnZSwgeW91IAp3aWxsCmZpbmQgdGhlIHJvb3Quc2ZzIGZpbGUuICAgcm9vdC5z ZnMgaXMgeW91ciBMRlMgc3lzdGVtIGluIGEgc3F1YXNoZWQgCmZvcm1hdC4KVG8gaW5zdGFsbCBp dCBpbnRvIHRoZSB0YXJnZXQsIGVpdGhlciB1c2UgdGhlIHVuc3F1YXNoZnMgdG9vbHMgdG8KdW5j b21wcmVzcyBpdCBvbnRvIHRoZSB0YXJnZXQgY29tcHV0ZXIgc3lzdGVtIG9yIGxvb3AgbW91bnQg dGhlIHJvb3Quc2ZzCmZpbGUgYW5kIHRoZW4gdXNlIHRhciBvciBzb21lIG90aGVyIGRpcmVjdG9y eSBjb3B5IHRvb2wgdG8gaW5qZWN0Cml0IGludG8gdGhlIHRhcmdldCBjb21wdXRlci4KCgoKQUNL Tk9XTEVER0VNRU5UUzoKICAgKiBUaGUgTEZTIGZyb20gc2NyaXB0IHByb2plY3QgCihodHRwOi8v bGZzY3JpcHQub3JnL3dpa2kvaW5kZXgucGhwL01haW5fUGFnZSkKICAgKiBUaGUgTEZTIHByb2pl Y3QgKGh0dHA6Ly93d3cubGludXhmcm9tc2NyYXRjaC5vcmcvbGZzLykKCkNIQU5HRUxPRzoKWzIw MTMtMDEtMjBdCiAgICogSW5pdGlhbCBoaW50IGJ5IEppbW15IEFuZGVyc29uLgpbMjAyMC0wMy0x NF0KICAgKiBNb2RpZmljYXRpb25zIGJ5IFR1cnJpdG9wc2lzIERvaHJuaWkgVGVvIEVuIE1pbmcs IFNpbmdhcG9yZQoKQURERU5EVU06IHYgQ3V0IGFuZCBzYXZlIHRoZSByZW1haW5kZXIgb2YgdGhp cyBmaWxlIGFzIAokTEZTL3NvdXJjZXMvaW5pdC5zaCB2CiMhL2Jpbi9idXN5Ym94IHNoCiMKIyBU aGlzIGZpbGUgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mOgojCiMgSW5pdHJhbWZzIGJvb3Qgc2Ny aXB0IDEuMy4xICgyMDEyLTAyLTA5KQojIENvcHlyaWdodCAoYykgMjAxMC0yMDEyICAgTWFyY2Vs IHZhbiBkZW4gQm9lcgojCiMgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBj aGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIAphIGNvcHkKIyBvZiB0aGlzIHNvZnR3YXJl IGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwgCnRv CiMgZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdp dGhvdXQgbGltaXRhdGlvbiAKdGhlCiMgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJn ZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgCmFuZC9vcgojIHNlbGwgY29waWVz IG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlIApTb2Z0 d2FyZSBpcwojIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNv bmRpdGlvbnM6CiMKIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSBzaGFsbCBiZSAKaW5jbHVkZWQgaW4KIyBhbGwgY29waWVzIG9yIHN1YnN0YW50 aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KIwojIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURF RCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCAKRVhQUkVTUyBPUgojIElN UExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgCk1F UkNIQU5UQUJJTElUWSwKIyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9O SU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCAKU0hBTEwgVEhFCiMgQVVUSE9SUyBPUiBDT1BZUklH SFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgojIExJ QUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJX SVNFLCAKQVJJU0lORwojIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNP RlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgCkRFQUxJTkdTCiMgSU4gVEhFIFNPRlRXQVJFLgoK IyBGUyBsYXlvdXQgYXQgdGhlIHN0YXJ0IG9mIHRoaXMgc2NyaXB0OgojIC0gL2Jvb3QvaWRfbGFi ZWwKIyAtIC9iaW4vYnVzeWJveAojIC0gL2Rldi9jb25zb2xlIChjcmVhdGVkIGJ5IGtlcm5lbCkK IyAtIC9pbml0ICh0aGlzIGZpbGUpCgpzZXQgLWUKCkFSQ0g9IjxBUkNIPiIKCiMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKY29weUJpbmRNb3VudCgpIHsgIyBDT1BZ L0JJTkQgTElWRUNEIE1PREUgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjCgojIFRoaXMgZnVuY3Rpb24gYmluZC1tb3VudHMgZGlyZWN0b3JpZXMgd2hpY2ggYXJl IGRlc2lnbmVkIHRvIGJlIGNhcGFibGUgCm9mCiMgcmVhZC1vbmx5IGFjY2VzcyBhbmQgY29waWVz IHRoZSByZW1haW5pbmcgZGlyZWN0b3JpZXMgdG8gYSB0bXBmcy4KIwojIFRoZSBkb3duc2lkZSBv ZiB0aGlzIG1ldGhvZCBpcyB0aGF0IHRoZSByZXN1bHRpbmcgcm9vdCBmaWxlc3lzdGVtIGlzIApu b3QKIyBmdWxseSB3cml0YWJsZS4gU28sIGZvciBleGFtcGxlLCBpbnN0YWxsYXRpb24gb2YgbmV3 IHByb2dyYW1zIHdpbGwgbm90IApiZQojIHBvc3NpYmxlLgojCiMgSG93ZXZlciwgdGhpcyBmdW5j dGlvbiBjYW4gYmUgdXNlZCB3aXRob3V0IGFueSBtb2RpZmljYXRpb24gdG8gdGhlIAprZXJuZWwg YW5kCiMgaXMgdGhlcmVmb3JlIHBlcmZlY3QgZm9yIHVzZSBhcyBhIGZhbGxiYWNrIGlmIG90aGVy IG9wdGlvbnMgYXJlIG5vdCAKYXZhaWxhYmxlLgoKIyBNb3VudCBhIHRtcGZzIHdoZXJlIHRoZSBu ZXcgcm9vdGZzIHdpbGwgYmUuCm1vdW50IC10IHRtcGZzIHRtcGZzICR7Uk9PVH0gIyBBbGxvd3Mg cmVtb3VudGluZyByb290IGluIHRoZSBib290c2NyaXB0cwoKIyBCaW5kIG1vdW50IHJlYWQtb25s eSBmaWxlc3lzdGVtcywgY29weSB0aGUgcmVzdApjZCAvbW50L3N5c3RlbQpmb3IgZGlyIGluICQo bHMgLTEpOyBkbwogICAgIGNhc2UgJHtkaXJ9IGluCiAgICAgICAgIGxvc3QrZm91bmQpCiAgICAg ICAgICAgICA7OwogICAgICAgICBiaW4gfCBib290IHwgbGliIHwgb3B0IHwgc2JpbiB8IHVzcikK ICAgICAgICAgICAgIG1rZGlyICR7Uk9PVH0vJHtkaXJ9CiAgICAgICAgICAgICBtb3VudCAtLWJp bmQgJHtkaXJ9ICR7Uk9PVH0vJHtkaXJ9CiAgICAgICAgICAgICA7OwogICAgICAgICAqKQogICAg ICAgICAgICAgY3AgLVIgJHtkaXJ9ICR7Uk9PVH0KICAgICAgICAgICAgIDs7CiAgICAgZXNhYwpk b25lCmNkIC8KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK fTsgdW5pb25Nb3VudCgpIHsgIyBVTklPTkZTL0FVRlMgTElWRUNEIE1PREUgIwojIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIEEgdW5pb24gbW91bnQgdGFr ZXMgb25lIG9yIG1vcmUgZGlyZWN0b3JpZXMgYW5kIGNvbWJpbmVzIHRoZW0gCnRyYW5zcGFyYW50 bHkKIyBpbiBhIHRoaXJkLiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSB3cml0YWJsZSBkaXJlY3Rv cnkgaW4gbWVtb3J5IAoodG1wZnMpIGFuZAojIHVzZXMgaXQgdG8gb3ZlcmxheSB0aGUgcmVhZC1v bmx5IHN5c3RlbSBpbWFnZSwgcmVzdWx0aW5nIGluIGEgZnVsbHkgCndyaXRhYmxlCiMgcm9vdCBm aWxlIHN5c3RlbS4KIwojIFRoZSBvbmx5IGRvd25zaWRlIHRvIHRoaXMgbWV0aG9kIGlzIHRoYXQg aXQgcmVxdWlyZXMgYSB1bmlvbiB0eXBlIApmaWxlc3lzdGVtCiMgaW4gdGhlIGtlcm5lbCwgd2hp Y2ggY2FuIG9ubHkgYmUgYWNjb21wbGlzaGVkIGJ5IHBhdGNoaW5nIHRoZSBrZXJuZWwgCmFzIHRo ZXJlCiMgaXMgbm8gc3VjaCBmZWF0dXJlIGluIGEgdmFuaWxsYSBrZXJuZWwuCgpta2RpciAtcCAv bW50L3dyaXRhYmxlCm1vdW50IC10IHRtcGZzIC1vIHJ3IHRtcGZzIC9tbnQvd3JpdGFibGUKClVO SU9ORlNPUFQ9Ii9tbnQvd3JpdGFibGU9cnc6L21udC9zeXN0ZW09cm8iCkFVRlNPUFQ9Ii9tbnQv d3JpdGFibGU9cnc6L21udC9zeXN0ZW09cm8iCm1vdW50IC10IHVuaW9uZnMgLW8gZGlycz0ke1VO SU9ORlNPUFR9IHVuaW9uZnMgJHtST09UfSAyPiAvZGV2L251bGwgfHwgXAptb3VudCAtdCBhdWZz IC1vIGJyPSR7QVVGU09QVH0gbm9uZSAke1JPT1R9IDI+IC9kZXYvbnVsbCB8fCBcCnsKICAgICAj IElmIFVuaW9uRlMgZmFpbHMsIGZhbGwgYmFjayB0byBjb3B5L2JpbmQgbW91bnRpbmcKICAgICBj b3B5QmluZE1vdW50Cn0KCiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKfSAjIEVORCBPRiBGVU5DVElP TlMgIwojIyMjIyMjIyMjIyMjIyMjIyMjIyMjCgojIE1ha2UgcmVxdWlyZWQgYXBwbGV0cyBlYXNp ZXIgdG8gYWNjZXNzCmZvciBhcHBsZXQgaW4gY2F0IGNobW9kIGNwIGN1dCBncmVwIGxzIG1rZGly IG1rbm9kIG1vdW50IHVtb3VudCAKc3dpdGNoX3Jvb3QgXAogICAgIHJtIG12IHZpIGNwaW8gdGFy IG1rZTJmcyBzeW5jIGZkaXNrIGRkIDsgZG8KICAgICAvYmluL2J1c3lib3ggbG4gL2Jpbi9idXN5 Ym94IC9iaW4vJHthcHBsZXR9CmRvbmUKCiMgQ2xlYXIgdGhlIHNjcmVlbgojY2xlYXIgIyBEb24n dCEgVGhpcyB3aWxsIGNsZWFyIHRoZSBMaW51eCBib290IGxvZ28gd2hlbiB1c2luZyBhIApmcmFt ZWJ1ZmZlci4KICAgICAgICAjIElmIHlvdSB3YW50IHRvIGNsZWFyIHRoZSBzY3JlZW4gb24gYm9v dCBhZGQgdGhlICJjbGVhciIgY29tbWFuZCAKdG8KICAgICAgICAjICcvdXNyL3NoYXJlL2xpdmUv c2VjX2luaXQuc2gnIGluIHRoZSBzeXN0ZW0gaW1hZ2UuCgojIENyZWF0ZSBkZXZpY2Ugbm9kZXMg cmVxdWlyZWQgdG8gcnVuIHRoaXMgc2NyaXB0CiMgTm90ZTogL2Rldi9jb25zb2xlIHdpbGwgYWxy ZWFkeSBiZSBhdmFpbGFibGUgaW4gdGhlIHJhbWZzCm1rbm9kIC9kZXYvbnVsbCBjICAxICAzCgpt a25vZCAvZGV2L3NjZDAgYiAxMSAgMCAgIyArLS0tLS0tLS0KbWtub2QgL2Rldi9zY2QxIGIgMTEg IDEgICMgfApta25vZCAvZGV2L3NjZDIgYiAxMSAgMiAgIyB8Cm1rbm9kIC9kZXYvc2NkMyBiIDEx ICAzICAjIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAjIHwKbWtub2QgL2Rldi9oZGMgIGIg MjIgIDAgICMgfAogICAgICAgICAgICAgICAgICAgICAgICAgICMgfApta25vZCAvZGV2L3NkYSAg YiAgOCAgMCAgIyB8Cm1rbm9kIC9kZXYvc2RhMSBiICA4ICAxICAjIHwKbWtub2QgL2Rldi9zZGEy IGIgIDggIDIgICMgfApta25vZCAvZGV2L3NkYTMgYiAgOCAgMyAgIyB8Cm1rbm9kIC9kZXYvc2Rh NCBiICA4ICA0ICAjIHwKICAgICAgICAgICAgICAgICAgICAgICAgICAjIHwKbWtub2QgL2Rldi9z ZGIgIGIgIDggMTYgICMgfCAgICA8LS0tLQpta25vZCAvZGV2L3NkYjEgYiAgOCAxNyAgIyB8ICAg ICAgICBEZXZpY2VzIHdoaWNoIGNvdWxkIGJlIG9yIGNvbnRhaW4gCnRoZQpta25vZCAvZGV2L3Nk YjIgYiAgOCAxOCAgIyB8ICAgICAgICBib290IG1lZGl1bS4uLgpta25vZCAvZGV2L3NkYjMgYiAg OCAxOSAgIyB8Cm1rbm9kIC9kZXYvc2RiNCBiICA4IDIwICAjIHwKICAgICAgICAgICAgICAgICAg ICAgICAgICAjIHwKbWtub2QgL2Rldi9zZGMgIGIgIDggMzIgICMgfApta25vZCAvZGV2L3NkYzEg YiAgOCAzMyAgIyB8Cm1rbm9kIC9kZXYvc2RjMiBiICA4IDM0ICAjIHwKbWtub2QgL2Rldi9zZGMz IGIgIDggMzUgICMgfApta25vZCAvZGV2L3NkYzQgYiAgOCAzNiAgIyB8CiAgICAgICAgICAgICAg ICAgICAgICAgICAgIyB8Cm1rbm9kIC9kZXYvc2RkICBiICA4IDQ4ICAjIHwKbWtub2QgL2Rldi9z ZGQxIGIgIDggNDkgICMgfApta25vZCAvZGV2L3NkZDIgYiAgOCA1MCAgIyB8Cm1rbm9kIC9kZXYv c2RkMyBiICA4IDUxICAjIHwKbWtub2QgL2Rldi9zZGQ0IGIgIDggNTIgICMgKy0tLS0tLS0tCgoj IENyZWF0ZSBtb3VudCBwb2ludHMgZm9yIGZpbGVzeXN0ZW1zCm1rZGlyIC1wIC9tbnQvbWVkaXVt Cm1rZGlyIC1wIC9tbnQvc3lzdGVtCm1rZGlyIC1wIC9tbnQvcm9vdGZzCgojIE1vdW50IHRoZSAv cHJvYyBmaWxlc3lzdGVtIChlbmFibGVzIGZpbGVzeXN0ZW0gZGV0ZWN0aW9uIGZvciAnbW91bnQn KQpta2RpciAvcHJvYwptb3VudCAtdCBwcm9jIHByb2MgL3Byb2MKCiMgSW52b2tlIGJ1c3lib3gg aWYgcmVxdWVzdGVkIHZpYSB0aGUga2VybmVsIGNvbW1hbmQgbGluZS4KaWYgWyBgZ3JlcCAtYyAi YnVzeWJveCIgL3Byb2MvY21kbGluZWAgLW5lICIwIiBdOyB0aGVuCiAgICAgZWNobyAiQnVzeWJv eCByZXF1ZXN0ZWQiOwogICAgIGJ1c3lib3ggc2gKZmkKCiMgU2VhcmNoIGZvciwgYW5kIG1vdW50 IHRoZSBib290IG1lZGl1bQpMQUJFTD0iJChjYXQgL2Jvb3QvaWRfbGFiZWwpIgpmb3IgZGV2aWNl IGluICQobHMgL2Rldik7IGRvCiAgICAgWyAiJHtkZXZpY2V9IiA9PSAiY29uc29sZSIgXSAmJiBj b250aW51ZQogICAgIFsgIiR7ZGV2aWNlfSIgPT0gIm51bGwiICAgIF0gJiYgY29udGludWUKCiAg ICAgbW91bnQgLW8gcm8gL2Rldi8ke2RldmljZX0gL21udC9tZWRpdW0gMj4gL2Rldi9udWxsICYm IFwKICAgICBpZiBbICIkKGNhdCAvbW50L21lZGl1bS9ib290LyR7QVJDSH0vaWRfbGFiZWwpIiAh PSAiJHtMQUJFTH0iIF07IAp0aGVuCiAgICAgICAgIHVtb3VudCAvbW50L21lZGl1bQogICAgIGVs c2UKICAgICAgICAgREVWSUNFPSIke2RldmljZX0iCiAgICAgICAgIGJyZWFrCiAgICAgZmkKZG9u ZQoKaWYgWyAiJHtERVZJQ0V9IiA9PSAiIiBdOyB0aGVuCiAgICAgZWNobyAiRkFUQUw6IEJvb3Qg bWVkaXVtIG5vdCBmb3VuZC4iCiAgICAgL2Jpbi9idXN5Ym94IHNoCmZpCgojIE1vdW50IHRoZSBz eXN0ZW0gaW1hZ2UKbW91bnQgLXQgc3F1YXNoZnMgLW8gcm8sbG9vcCAvbW50L21lZGl1bS9ib290 LyR7QVJDSH0vcm9vdC5zZnMgCi9tbnQvc3lzdGVtIHx8IHsKICAgICBlY2hvICJGQVRBTDogQm9v dCBtZWRpdW0gZm91bmQsIGJ1dCBzeXN0ZW0gaW1hZ2UgaXMgbWlzc2luZy4iCiAgICAgL2Jpbi9i dXN5Ym94IHNoCn0KCiMgRGVmaW5lIHdoZXJlIHRoZSBuZXcgcm9vdCBmaWxlc3lzdGVtIHdpbGwg YmUKUk9PVD0iL21udC9yb290ZnMiICMgQWxzbyBuZWVkZWQgZm9yIC91c3Ivc2hhcmUvbGl2ZS9z ZWNfaW5pdC5zaAoKIyBSdW4gaW4gYm9vdGFibGUgY2QgbW9kZSBpZiByZXF1ZXN0ZWQgdmlhIHRo ZSBrZXJuZWwgY29tbWFuZCBsaW5lLgppZiBbIGBncmVwIC1jICJib290Y2QiIC9wcm9jL2NtZGxp bmVgIC1uZSAiMCIgXTsgdGhlbgogICAgIGVjaG8gIkJvb3RjZCBtb2RlIChiaW5kIG1vdW50KSBy ZXF1ZXN0ZWQiOwogICAgIGNvcHlCaW5kTW91bnQKZWxzZQogICAgICMgU2VsZWN0IExpdmVDRCBt b2RlCiAgICAgdW5pb25Nb3VudCAjIE1pZ2h0IGZhbGwgYmFjayB0byBjb3B5QmluZE1vdW50CmZp CgojIFRlbGwgTEZTIHRvIHNraXAgZnNjayBkdXJpbmcgc3RhcnR1cDoKPiAkUk9PVC9mYXN0Ym9v dAoKIyBHZXQgcmlkIG9mIC8gbWFuaXB1bGF0aW9ucyBpbiBtb3VudGZzIHNjcmlwdDoKZ3JlcCAt diAnIFwvICcgJFJPT1QvZXRjL3JjLmQvaW5pdC5kL21vdW50ZnMgPiAkUk9PVC90bXAvbW91bnRm cwpybSAtZiAkUk9PVC9ldGMvcmMuZC9pbml0LmQvbW91bnRmcwptdiAkUk9PVC90bXAvbW91bnRm cyAkUk9PVC9ldGMvcmMuZC9pbml0LmQvbW91bnRmcwpjaG1vZCAreCAkUk9PVC9ldGMvcmMuZC9p bml0LmQvbW91bnRmcwoKIyBNb3ZlIGN1cnJlbnQgbW91bnRzIHRvIGRpcmVjdG9yaWVzIGFjY2Vz c2libGUgaW4gdGhlIG5ldyByb290CmNkIC9tbnQKZm9yIGRpciBpbiAkKGxzIC0xKTsgZG8KICAg ICBpZiBbICIke2Rpcn0iICE9ICJyb290ZnMiIF07IHRoZW4KICAgICAgICAgbWtkaXIgLXAgJHtS T09UfS9tbnQvLmJvb3QvJHtkaXJ9CiAgICAgICAgIG1vdW50IC0tbW92ZSAvbW50LyR7ZGlyfSAk e1JPT1R9L21udC8uYm9vdC8ke2Rpcn0KICAgICBmaQpkb25lCmNkIC8KCiMgUnVuIHNlY29uZGFy eSBpbml0aWFsaXphdGlvbiAoaWYgdGhlIHN5c3RlbSBwcm92aWRlcyBpdCkKaWYgWyAteCAke1JP T1R9L3Vzci9zaGFyZS9saXZlL3NlY19pbml0LnNoIF07IHRoZW4KICAgICAuICR7Uk9PVH0vdXNy L3NoYXJlL2xpdmUvc2VjX2luaXQuc2gKZmkKCiMgQ2xlYW4gdXAKdW1vdW50IC9wcm9jCgojIFN3 aXRjaCB0byB0aGUgbmV3IHJvb3QgYW5kIGxhdW5jaCBJTklUIQpleGVjIHN3aXRjaF9yb290IC1j IC9kZXYvY29uc29sZSAke1JPT1R9IC9zYmluL2luaXQKCgoKCgoKCgoKCi0tLS0tQkVHSU4gRU1B SUwgU0lHTkFUVVJFLS0tLS0KClRoZSBHb3NwZWwgZm9yIGFsbCBUYXJnZXRlZCBJbmRpdmlkdWFs cyAoVElzKToKCltUaGUgTmV3IFlvcmsgVGltZXNdIE1pY3Jvd2F2ZSBXZWFwb25zIEFyZSBQcmlt ZSBTdXNwZWN0IGluIElsbHMgb2YKVS5TLiBFbWJhc3N5IFdvcmtlcnMKCkxpbms6IApodHRwczov L3d3dy5ueXRpbWVzLmNvbS8yMDE4LzA5LzAxL3NjaWVuY2Uvc29uaWMtYXR0YWNrLWN1YmEtbWlj cm93YXZlLmh0bWwKCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgpTaW5nYXBv cmVhbiBNci4gVHVycml0b3BzaXMgRG9ocm5paSBUZW8gRW4gTWluZydzIEFjYWRlbWljClF1YWxp ZmljYXRpb25zIGFzIGF0IDE0IEZlYiAyMDE5IGFuZCByZWZ1Z2VlIHNlZWtpbmcgYXR0ZW1wdHMg YXQgdGhlIApVbml0ZWQgTmF0aW9ucyBSZWZ1Z2VlIEFnZW5jeSBCYW5na29rICgyMSBNYXIgMjAx NyksIGluIFRhaXdhbiAoNSBBdWcgCjIwMTkpIGFuZCBBdXN0cmFsaWEgKDI1IERlYyAyMDE5IHRv IDkgSmFuIDIwMjApOgoKWzFdIGh0dHBzOi8vdGR0ZW1jZXJ0cy53b3JkcHJlc3MuY29tLwoKWzJd IGh0dHBzOi8vdGR0ZW1jZXJ0cy5ibG9nc3BvdC5zZy8KClszXSBodHRwczovL3d3dy5zY3JpYmQu Y29tL3VzZXIvMjcwMTI1MDQ5L1Rlby1Fbi1NaW5nCgotLS0tLUVORCBFTUFJTCBTSUdOQVRVUkUt LS0tLQotLSAKaHR0cDovL2xpc3RzLmxpbnV4ZnJvbXNjcmF0Y2gub3JnL2xpc3RpbmZvL2xmcy1j aGF0CkZBUTogaHR0cDovL3d3dy5saW51eGZyb21zY3JhdGNoLm9yZy9ibGZzL2ZhcS5odG1sClVu c3Vic2NyaWJlOiBTZWUgdGhlIGFib3ZlIGluZm9ybWF0aW9uIHBhZ2UK