From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andrey Konovalov Subject: [RFC PATCH v3 00/15] khwasan: kernel hardware assisted address sanitizer Date: Fri, 20 Apr 2018 16:46:38 +0200 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from localhost (localhost [127.0.0.1]) by mm01.cs.columbia.edu (Postfix) with ESMTP id 72A974A087 for ; Fri, 20 Apr 2018 10:38:09 -0400 (EDT) Received: from mm01.cs.columbia.edu ([127.0.0.1]) by localhost (mm01.cs.columbia.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id dLYDDIYIetDu for ; Fri, 20 Apr 2018 10:37:47 -0400 (EDT) Received: from mail-wr0-f194.google.com (mail-wr0-f194.google.com [209.85.128.194]) by mm01.cs.columbia.edu (Postfix) with ESMTPS id 6AFC449FD8 for ; Fri, 20 Apr 2018 10:37:47 -0400 (EDT) Received: by mail-wr0-f194.google.com with SMTP id o15-v6so23685701wro.11 for ; Fri, 20 Apr 2018 07:46:59 -0700 (PDT) List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: kvmarm-bounces@lists.cs.columbia.edu Sender: kvmarm-bounces@lists.cs.columbia.edu To: Andrey Ryabinin , Alexander Potapenko , Dmitry Vyukov , Jonathan Corbet , Catalin Marinas , Will Deacon , Marc Zyngier , Christopher Li , Christoph Lameter , Pekka Enberg , David Rientjes , Joonsoo Kim , Andrew Morton , Masahiro Yamada , Michal Marek , "GitAuthor : Andrey Konovalov" , Mark Rutland , Ard Biesheuvel , Yury Norov , Nick Desaulniers , Suzuki K Poulose , Kristina Martsenko Cc: Kees Cook , Jacob Bramley , Jann Horn , Ruben Ayrapetyan , Lee Smith , Kostya Serebryany , Mark Brand , Ramana Radhakrishnan , Evgeniy Stepanov List-Id: kvmarm@lists.cs.columbia.edu SGkhIFRoaXMgaXMgdGhlIDNyZCBSRkMgdmVyc2lvbiBvZiB0aGUgcGF0Y2hzZXQuCgpUaGlzIHBh dGNoc2V0IGFkZHMgYSBuZXcgbW9kZSB0byBLQVNBTiBbMV0sIHdoaWNoIGlzIGNhbGxlZCBLSFdB U0FOCihLZXJuZWwgSGFyZFdhcmUgYXNzaXN0ZWQgQWRkcmVzcyBTQU5pdGl6ZXIpLiBUaGVyZSdz IHN0aWxsIHNvbWUgd29yayB0bwpkbyBhbmQgdGhlcmUgYXJlIGEgZmV3IFRPRE9zIGluIHRoZSBj b2RlLCBzbyBJJ20gcHVibGlzaGluZyB0aGlzIGFzIGFuIFJGQwp0byBjb2xsZWN0IHNvbWUgaW5p dGlhbCBmZWVkYmFjay4KClRoZSBwbGFuIGlzIHRvIGltcGxlbWVudCBIV0FTYW4gWzJdIGZvciB0 aGUga2VybmVsIHdpdGggdGhlIGluY2VudGl2ZSwKdGhhdCBpdCdzIGdvaW5nIHRvIGhhdmUgY29t cGFyYWJsZSB0byBLQVNBTiBwZXJmb3JtYW5jZSwgYnV0IGluIHRoZSBzYW1lCnRpbWUgY29uc3Vt ZSBtdWNoIGxlc3MgbWVtb3J5LCB0cmFkaW5nIHRoYXQgb2ZmIGZvciBzb21ld2hhdCBpbXByZWNp c2UKYnVnIGRldGVjdGlvbiBhbmQgYmVpbmcgc3VwcG9ydGVkIG9ubHkgZm9yIGFybTY0LgoKVGhl IG92ZXJhbGwgaWRlYSBvZiB0aGUgYXBwcm9hY2ggdXNlZCBieSBLSFdBU0FOIGlzIHRoZSBmb2xs b3dpbmc6CgoxLiBCeSB1c2luZyB0aGUgVG9wIEJ5dGUgSWdub3JlIGFybTY0IENQVSBmZWF0dXJl LCB3ZSBjYW4gc3RvcmUgcG9pbnRlcgogICB0YWdzIGluIHRoZSB0b3AgYnl0ZSBvZiBlYWNoIGtl cm5lbCBwb2ludGVyLgoKMi4gVXNpbmcgc2hhZG93IG1lbW9yeSwgd2UgY2FuIHN0b3JlIG1lbW9y eSB0YWdzIGZvciBlYWNoIGNodW5rIG9mIGtlcm5lbAogICBtZW1vcnkuCgozLiBPbiBlYWNoIG1l bW9yeSBhbGxvY2F0aW9uLCB3ZSBjYW4gZ2VuZXJhdGUgYSByYW5kb20gdGFnLCBlbWJlZCBpdCBp bnRvCiAgIHRoZSByZXR1cm5lZCBwb2ludGVyIGFuZCBzZXQgdGhlIG1lbW9yeSB0YWdzIHRoYXQg Y29ycmVzcG9uZCB0byB0aGlzCiAgIGNodW5rIG9mIG1lbW9yeSB0byB0aGUgc2FtZSB2YWx1ZS4K CjQuIEJ5IHVzaW5nIGNvbXBpbGVyIGluc3RydW1lbnRhdGlvbiwgYmVmb3JlIGVhY2ggbWVtb3J5 IGFjY2VzcyB3ZSBjYW4gYWRkCiAgIGEgY2hlY2sgdGhhdCB0aGUgcG9pbnRlciB0YWcgbWF0Y2hl cyB0aGUgdGFnIG9mIHRoZSBtZW1vcnkgdGhhdCBpcyBiZWluZwogICBhY2Nlc3NlZC4KCjUuIE9u IGEgdGFnIG1pc21hdGNoIHdlIHJlcG9ydCBhbiBlcnJvci4KClsxXSBodHRwczovL3d3dy5rZXJu ZWwub3JnL2RvYy9odG1sL2xhdGVzdC9kZXYtdG9vbHMva2FzYW4uaHRtbAoKWzJdIGh0dHA6Ly9j bGFuZy5sbHZtLm9yZy9kb2NzL0hhcmR3YXJlQXNzaXN0ZWRBZGRyZXNzU2FuaXRpemVyRGVzaWdu Lmh0bWwKCgo9PT09PT0gVGVjaG5pY2FsIGRldGFpbHMKCktIV0FTQU4gaXMgaW1wbGVtZW50ZWQg aW4gYSB2ZXJ5IHNpbWlsYXIgd2F5IHRvIEtBU0FOLiBUaGlzIHBhdGNoc2V0CmVzc2VudGlhbGx5 IGRvZXMgdGhlIGZvbGxvd2luZzoKCjEuIFRDUl9UQkkxIGlzIHNldCB0byBlbmFibGUgVG9wIEJ5 dGUgSWdub3JlLgoKMi4gU2hhZG93IG1lbW9yeSBpcyB1c2VkICh3aXRoIGEgZGlmZmVyZW50IHNj YWxlLCAxOjE2LCBzbyBlYWNoIHNoYWRvdwogICBieXRlIGNvcnJlc3BvbmRzIHRvIDE2IGJ5dGVz IG9mIGtlcm5lbCBtZW1vcnkpIHRvIHN0b3JlIG1lbW9yeSB0YWdzLgoKMy4gQWxsIHNsYWIgb2Jq ZWN0cyBhcmUgYWxpZ25lZCB0byBzaGFkb3cgc2NhbGUsIHdoaWNoIGlzIDE2IGJ5dGVzLgoKNC4g QWxsIHBvaW50ZXJzIHJldHVybmVkIGZyb20gdGhlIHNsYWIgYWxsb2NhdG9yIGFyZSB0YWdnZWQg d2l0aCBhIHJhbmRvbQogICB0YWcgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHNoYWRvdyBtZW1vcnkg aXMgcG9pc29uZWQgd2l0aCB0aGUgc2FtZSB2YWx1ZS4KCjUuIENvbXBpbGVyIGluc3RydW1lbnRh dGlvbiBpcyB1c2VkIHRvIGluc2VydCB0YWcgY2hlY2tzLiBFaXRoZXIgYnkKICAgY2FsbGluZyBj YWxsYmFja3Mgb3IgYnkgaW5saW5pbmcgdGhlbSAoQ09ORklHX0tBU0FOX09VVExJTkUgYW5kCiAg IENPTkZJR19LQVNBTl9JTkxJTkUgZmxhZ3MgYXJlIHJldXNlZCkuCgo2LiBXaGVuIGEgdGFnIG1p c21hdGNoIGlzIGRldGVjdGVkIGluIGNhbGxiYWNrIGluc3RydW1lbnRhdGlvbiBtb2RlCiAgIEtI V0FTQU4gc2ltcGx5IHByaW50cyBhIGJ1ZyByZXBvcnQuIEluIGNhc2Ugb2YgaW5saW5lIGluc3Ry dW1lbnRhdGlvbiwKICAgY2xhbmcgaW5zZXJ0cyBhIGJyayBpbnN0cnVjdGlvbiwgYW5kIEtIV0FT QU4gaGFzIGl0J3Mgb3duIGJyayBoYW5kbGVyLAogICB3aGljaCByZXBvcnRzIHRoZSBidWcuCgo3 LiBUaGUgbWVtb3J5IGluIGJldHdlZW4gc2xhYiBvYmplY3RzIGlzIG1hcmtlZCB3aXRoIGEgcmVz ZXJ2ZWQgdGFnLCBhbmQKICAgYWN0cyBhcyBhIHJlZHpvbmUuCgo4LiBXaGVuIGEgc2xhYiBvYmpl Y3QgaXMgZnJlZWQgaXQncyBtYXJrZWQgd2l0aCBhIHJlc2VydmVkIHRhZy4KCkJ1ZyBkZXRlY3Rp b24gaXMgaW1wcmVjaXNlIGZvciB0d28gcmVhc29uczoKCjEuIFdlIHdvbid0IGNhdGNoIHNvbWUg c21hbGwgb3V0LW9mLWJvdW5kcyBhY2Nlc3NlcywgdGhhdCBmYWxsIGludG8gdGhlCiAgIHNhbWUg c2hhZG93IGNlbGwsIGFzIHRoZSBsYXN0IGJ5dGUgb2YgYSBzbGFiIG9iamVjdC4KCjIuIFdlIG9u bHkgaGF2ZSAxIGJ5dGUgdG8gc3RvcmUgdGFncywgd2hpY2ggbWVhbnMgd2UgaGF2ZSBhIDEvMjU2 CiAgIHByb2JhYmlsaXR5IG9mIGEgdGFnIG1hdGNoIGZvciBhbiBpbmNvcnJlY3QgYWNjZXNzIChh Y3R1YWxseSBldmVuCiAgIHNsaWdodGx5IGxlc3MgZHVlIHRvIHJlc2VydmVkIHRhZyB2YWx1ZXMp LgoKCj09PT09PSBCZW5jaG1hcmtzCgpUaGUgZm9sbG93aW5nIG51bWJlcnMgd2VyZSBjb2xsZWN0 ZWQgb24gT2Ryb2lkIEMyIGJvYXJkLiBCb3RoIEtBU0FOIGFuZApLSFdBU0FOIHdlcmUgdXNlZCBp biBpbmxpbmUgaW5zdHJ1bWVudGF0aW9uIG1vZGUuIFRoZXNlIGFyZSB0aGUgbnVtYmVycwpJIGdv dCB3aXRoIHRoZSBjdXJyZW50IHByb3RvdHlwZSBhbmQgdGhleSBtaWdodCBjaGFuZ2UuCgpCb290 IHRpbWUgWzFdOgoqIH40LjUgc2VjIGZvciBjbGVhbiBrZXJuZWwKKiB+NS4wIHNlYyBmb3IgS0FT QU4KKiB+NS4xIHNlYyBmb3IgS0hXQVNBTgoKU2xhYiBtZW1vcnkgdXNhZ2UgYWZ0ZXIgYm9vdCBb Ml06CiogfjMyIGtiIGZvciBjbGVhbiBrZXJuZWwKKiB+OTUga2IgKyAxLzh0aCBzaGFkb3cgfj0g MTA3IGtiIGZvciBLQVNBTgoqIH4zOCBrYiArIDEvMTZ0aCBzaGFkb3cgfj0gNDAga2IgZm9yIEtI V0FTQU4KCk5ldHdvcmsgcGVyZm9ybWFuY2UgWzNdOgoqIDExLjkgR2JpdHMvc2VjIGZvciBjbGVh biBrZXJuZWwKKiAzLjA4IEdiaXRzL3NlYyBmb3IgS0FTQU4KKiAzLjAyIEdiaXRzL3NlYyBmb3Ig S0hXQVNBTgoKTm90ZSwgdGhhdCBLSFdBU0FOIChjb21wYXJlZCB0byBLQVNBTikgZG9lc24ndCBy ZXF1aXJlIHF1YXJhbnRpbmUuCgpbMV0gVGltZSBiZWZvcmUgdGhlIGV4dDQgZHJpdmVyIGlzIGlu aXRpYWxpemVkLgpbMl0gTWVhc3VyZWQgYXMgYGNhdCAvcHJvYy9tZW1pbmZvIHwgZ3JlcCBTbGFi YC4KWzNdIE1lYXN1cmVkIGFzIGBpcGVyZiAtcyAmIGlwZXJmIC1jIDEyNy4wLjAuMSAtdCAzMGAu CgoKPT09PT09IFNvbWUgbm90ZXMKCkEgZmV3IG5vdGVzOgoKMS4gVGhlIHBhdGNoc2V0IGNhbiBi ZSBmb3VuZCBoZXJlOgogICBodHRwczovL2dpdGh1Yi5jb20veGFpcnkva2FzYW4tcHJvdG90eXBl L3RyZWUva2h3YXNhbgoKMi4gQnVpbGRpbmcgcmVxdWlyZXMgYSByZWNlbnQgTExWTSB2ZXJzaW9u IChyMzMwMDQ0IG9yIGxhdGVyKS4KCjMuIFN0YWNrIGluc3RydW1lbnRhdGlvbiBpcyBub3Qgc3Vw cG9ydGVkIHlldCAoaW4gcHJvZ3Jlc3MpLgoKNC4gVGhlcmUgYXJlIHN0aWxsIGEgZmV3IFRPRE9z IGluIHRoZSBjb2RlLCB0aGF0IG5lZWQgdG8gYmUgYWRkcmVzc2VkLgoKCj09PT09PSBDaGFuZ2Vz CgpDaGFuZ2VzIGluIFJGQyB2MzoKLSBSZW5hbWVkIENPTkZJR19LQVNBTl9DTEFTU0lDIGFuZCBD T05GSUdfS0FTQU5fVEFHUyB0bwogIENPTkZJR19LQVNBTl9HRU5FUklDIGFuZCBDT05GSUdfS0FT QU5fSFcgcmVzcGVjdGl2ZWx5LgotIFN3aXRjaCB0byAtZnNhbml0aXplPWtlcm5lbC1od2FkZHJl c3MgaW5zdGVhZCBvZiAtZnNhbml0aXplPWh3YWRkcmVzcy4KLSBSZW1vdmVkIHVubmVjZXNzYXJ5 IGV4Y2Vzc2l2ZSBzaGFkb3cgaW5pdGlhbGl6YXRpb24uCi0gUmVtb3ZlZCBraHdhc2FuX2VuYWJs ZWQgZmxhZyAoaXTigJlzIG5vdCBuZWVkZWQgc2luY2UgS0hXQVNBTiBpcwogIGluaXRpYWxpemVk IGJlZm9yZSBhbnkgc2xhYiBjYWNoZXMgYXJlIHVzZWQpLgotIFNwbGl0IG91dCBrYXNhbl9yZXBv cnQuYyBhbmQga2h3YXNhbl9yZXBvcnQuYyBmcm9tIHJlcG9ydC5jLgotIE1vdmVkIG1vcmUgY29t bW9uIEtBU0FOIGFuZCBLSFdBU0FOIGZ1bmN0aW9ucyB0byBjb21tb24uYy4KLSBBZGRlZCB0YWdn aW5nIHRvIHBhZ2VhbGxvYy4KLSBSZWJhc2VkIG9udG8gNC4xNy1yYzEuCi0gVGVtcG9yYXJpbHkg ZHJvcHBlZCBwYXRjaCB0aGF0IGFkZHMga3ZtIHN1cHBvcnQgKGFybTY0ICsga3ZtICsgY2xhbmcK ICBjb21ibyBpcyBicm9rZW4gcmlnaHQgbm93IChodHRwczovL2xrbWwub3JnL2xrbWwvMjAxOC80 LzE5Lzc3NSkpLgoKQ2hhbmdlcyBpbiBSRkMgdjI6Ci0gUmVtb3ZlZCBleHBsaWNpdCBjYXN0cyB0 byB1OCAqIGZvciBrYXNhbl9tZW1fdG9fc2hhZG93KCkgY2FsbHMuCi0gSW50cm9kdWNlZCBLQVNB Tl9UQ1JfRkxBR1MgZm9yIHNldHRpbmcgdGhlIFRDUl9UQkkxIGZsYWcuCi0gQWRkZWQgYSBjb21t ZW50IHJlZ2FyZGluZyB0aGUgbm9uLWF0b21pYyBSTVcgc2VxdWVuY2UgaW4KICBraHdhc2FuX3Jh bmRvbV90YWcoKS4KLSBNYWRlIGFsbCB0YWcgcmVsYXRlZCBmdW5jdGlvbnMgYWNjZXB0IGNvbnN0 IHZvaWQgKi4KLSBVbnRhZ2dlZCBwb2ludGVycyBpbiBfX2tpbWdfdG9fcGh5cywgd2hpY2ggaXMg dXNlZCBieSB2aXJ0X3RvX3BoeXMuCi0gVW50YWdnZWQgcG9pbnRlcnMgaW4gc2hvd19wdHIgaW4g ZmF1bHQgaGFuZGxpbmcgbG9naWMuCi0gVW50YWdnZWQgcG9pbnRlcnMgcGFzc2VkIHRvIEtWTS4K LSBBZGRlZCB0d28gcmVzZXJ2ZWQgdGFnIHZhbHVlczogMHhGRiBhbmQgMHhGRS4KLSBVc2VkIHRo ZSByZXNlcnZlZCB0YWcgMHhGRiB0byBkaXNhYmxlIHZhbGlkaXR5IGNoZWNraW5nICh0byByZXNv bHZlIHRoZQogIGlzc3VlIHdpdGggcG9pbnRlciB0YWcgYmVpbmcgbG9zdCBhZnRlciBwYWdlX2Fk ZHJlc3MgKyBrbWFwIHVzYWdlKS4KLSBVc2VkIHRoZSByZXNlcnZlZCB0YWcgMHhGRSB0byBtYXJr IHJlZHpvbmVzIGFuZCBmcmVlZCBvYmplY3RzLgotIEFkZGVkIG1uZW1vbmljcyBmb3IgZXNyIG1h bmlwdWxhdGlvbiBpbiBLSFdBU0FOIGJyayBoYW5kbGVyLgotIEFkZGVkIGEgY29tbWVudCBhYm91 dCB0aGUgLXJlY292ZXIgZmxhZy4KLSBTb21lIG1pbm9yIGNsZWFudXBzIGFuZCBmaXhlcy4KLSBS ZWJhc2VkIG9udG8gMzIxNWI5ZDUgKDQuMTYtcmM2KykuCi0gVGVzdGVkIG9uIHJlYWwgaGFyZHdh cmUgKE9kcm9pZCBDMiBib2FyZCkuCi0gQWRkZWQgYmV0dGVyIGJlbmNobWFya3MuCgpBbmRyZXkg S29ub3ZhbG92ICgxNSk6CiAga2h3YXNhbjogbW92ZSBjb21tb24ga2FzYW4gYW5kIGtod2FzYW4g Y29kZSB0byBjb21tb24uYwogIGtod2FzYW46IGFkZCBDT05GSUdfS0FTQU5fR0VORVJJQyBhbmQg Q09ORklHX0tBU0FOX0hXCiAga2h3YXNhbiwgYXJtNjQ6IGFkanVzdCBzaGFkb3cgc2l6ZSBmb3Ig Q09ORklHX0tBU0FOX0hXCiAga2h3YXNhbjogaW5pdGlhbGl6ZSBzaGFkb3cgdG8gMHhmZgogIGto d2FzYW4sIGFybTY0OiB1bnRhZyB2aXJ0IGFkZHJlc3MgaW4gX19raW1nX3RvX3BoeXMKICBraHdh c2FuLCBhcm02NDogZml4IHVwIGZhdWx0IGhhbmRsaW5nIGxvZ2ljCiAga2h3YXNhbjogYWRkIHRh ZyByZWxhdGVkIGhlbHBlciBmdW5jdGlvbnMKICBraHdhc2FuLCBhcm02NDogZW5hYmxlIHRvcCBi eXRlIGlnbm9yZSBmb3IgdGhlIGtlcm5lbAogIGtod2FzYW4sIG1tOiBwZXJmb3JtIHVudGFnZ2Vk IHBvaW50ZXJzIGNvbXBhcmlzb24gaW4ga3JlYWxsb2MKICBraHdhc2FuOiBzcGxpdCBvdXQga2Fz YW5fcmVwb3J0LmMgZnJvbSByZXBvcnQuYwogIGtod2FzYW46IGFkZCBidWcgcmVwb3J0aW5nIHJv dXRpbmVzCiAga2h3YXNhbjogYWRkIGhvb2tzIGltcGxlbWVudGF0aW9uCiAga2h3YXNhbiwgYXJt NjQ6IGFkZCBicmsgaGFuZGxlciBmb3IgaW5saW5lIGluc3RydW1lbnRhdGlvbgogIGtod2FzYW4s IG1tLCBhcm02NDogdGFnIG5vbiBzbGFiIG1lbW9yeSBhbGxvY2F0ZWQgdmlhIHBhZ2VhbGxvYwog IGtod2FzYW46IHVwZGF0ZSBrYXNhbiBkb2N1bWVudGF0aW9uCgogRG9jdW1lbnRhdGlvbi9kZXYt dG9vbHMva2FzYW4ucnN0ICAgICAgfCAyMTIgKysrKystLS0tCiBhcmNoL2FybTY0L0tjb25maWcg ICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBhcmNoL2FybTY0L01ha2VmaWxlICAgICAgICAg ICAgICAgICAgICB8ICAgMiArLQogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9icmstaW1tLmggICAg ICAgfCAgIDIgKwogYXJjaC9hcm02NC9pbmNsdWRlL2FzbS9tZW1vcnkuaCAgICAgICAgfCAgMzUg Ky0KIGFyY2gvYXJtNjQvaW5jbHVkZS9hc20vcGd0YWJsZS1od2RlZi5oIHwgICAxICsKIGFyY2gv YXJtNjQva2VybmVsL3RyYXBzLmMgICAgICAgICAgICAgIHwgIDY5ICsrLQogYXJjaC9hcm02NC9t bS9mYXVsdC5jICAgICAgICAgICAgICAgICAgfCAgIDMgKwogYXJjaC9hcm02NC9tbS9rYXNhbl9p bml0LmMgICAgICAgICAgICAgfCAgMTggKy0KIGFyY2gvYXJtNjQvbW0vcHJvYy5TICAgICAgICAg ICAgICAgICAgIHwgICA4ICstCiBpbmNsdWRlL2xpbnV4L2NvbXBpbGVyLWNsYW5nLmggICAgICAg ICB8ICAgNSArLQogaW5jbHVkZS9saW51eC9jb21waWxlci1nY2MuaCAgICAgICAgICAgfCAgIDQg KwogaW5jbHVkZS9saW51eC9jb21waWxlci5oICAgICAgICAgICAgICAgfCAgIDMgKy0KIGluY2x1 ZGUvbGludXgva2FzYW4uaCAgICAgICAgICAgICAgICAgIHwgIDUwICsrLQogaW5jbHVkZS9saW51 eC9tbS5oICAgICAgICAgICAgICAgICAgICAgfCAgMjkgKysKIGluY2x1ZGUvbGludXgvcGFnZS1m bGFncy1sYXlvdXQuaCAgICAgIHwgIDEwICsKIGxpYi9LY29uZmlnLmthc2FuICAgICAgICAgICAg ICAgICAgICAgIHwgIDY4ICsrLQogbW0vY21hLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgIDEgKwogbW0va2FzYW4vTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgfCAgIDkg Ky0KIG1tL2thc2FuL2NvbW1vbi5jICAgICAgICAgICAgICAgICAgICAgIHwgNTc2ICsrKysrKysr KysrKysrKysrKysrKysrKysKIG1tL2thc2FuL2thc2FuLmMgICAgICAgICAgICAgICAgICAgICAg IHwgNDkzICstLS0tLS0tLS0tLS0tLS0tLS0tLQogbW0va2FzYW4va2FzYW4uaCAgICAgICAgICAg ICAgICAgICAgICAgfCAgOTQgKysrLQogbW0va2FzYW4va2FzYW5fcmVwb3J0LmMgICAgICAgICAg ICAgICAgfCAxNTUgKysrKysrKwogbW0va2FzYW4va2h3YXNhbi5jICAgICAgICAgICAgICAgICAg ICAgfCAxNjMgKysrKysrKwogbW0va2FzYW4va2h3YXNhbl9yZXBvcnQuYyAgICAgICAgICAgICAg fCAgNjAgKysrCiBtbS9rYXNhbi9yZXBvcnQuYyAgICAgICAgICAgICAgICAgICAgICB8IDI3MSAr KysrLS0tLS0tLS0KIG1tL3BhZ2VfYWxsb2MuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIG1tL3NsYWJfY29tbW9uLmMgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICstCiBtbS9z bHViLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArLQogc2NyaXB0cy9NYWtl ZmlsZS5rYXNhbiAgICAgICAgICAgICAgICAgfCAgMjcgKy0KIDMwIGZpbGVzIGNoYW5nZWQsIDE1 NTggaW5zZXJ0aW9ucygrKSwgODE2IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IG1t L2thc2FuL2NvbW1vbi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgbW0va2FzYW4va2FzYW5fcmVwb3J0 LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCBtbS9rYXNhbi9raHdhc2FuLmMKIGNyZWF0ZSBtb2RlIDEw MDY0NCBtbS9rYXNhbi9raHdhc2FuX3JlcG9ydC5jCgotLSAKMi4xNy4wLjQ4NC5nMGM4NzI2MzE4 Yy1nb29nCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpr dm1hcm0gbWFpbGluZyBsaXN0Cmt2bWFybUBsaXN0cy5jcy5jb2x1bWJpYS5lZHUKaHR0cHM6Ly9s aXN0cy5jcy5jb2x1bWJpYS5lZHUvbWFpbG1hbi9saXN0aW5mby9rdm1hcm0K