From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-ASN: AS17314 8.43.84.0/22 X-Spam-Status: No, score=-3.7 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, PDS_RDNS_DYNAMIC_FP,RCVD_IN_DNSWL_MED,RDNS_DYNAMIC,SPF_HELO_PASS, SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (ip-8-43-85-97.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 6B1341F8C6 for ; Tue, 13 Jul 2021 16:25:12 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 844E4396E076 for ; Tue, 13 Jul 2021 16:25:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 844E4396E076 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1626193511; bh=CHxaHpOIp8ntPYfLBQMcAGnHw9ta9fAgA966s6t67Kc=; h=References:In-Reply-To:Date:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=x7bp/YE3qgyIB7AJ/8jz8nz1BLwnbkiVHllSVzcxFF1psNHjWjqzKGPAG3UPpPrKk 1K7uFnEMqADWi3/V37MCaufI4V+JniNaJUUljT0R/VfOB2CUwVZHYEjqyc8mm3lNp3 kAS4dFakn+SbVjHVYgflZbV6nazKy4J6lAnyX1vw= Received: from mail-pf1-x433.google.com (mail-pf1-x433.google.com [IPv6:2607:f8b0:4864:20::433]) by sourceware.org (Postfix) with ESMTPS id 6E2C4388A80D for ; Tue, 13 Jul 2021 16:24:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6E2C4388A80D Received: by mail-pf1-x433.google.com with SMTP id y4so20112726pfi.9 for ; Tue, 13 Jul 2021 09:24:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=CHxaHpOIp8ntPYfLBQMcAGnHw9ta9fAgA966s6t67Kc=; b=Id4ECDjbzBoZHHIZmr6NJuc/b8EVhwuzbHadEn9s3vjjTXXlRL9W9crbr+r3koNPtY Bv+Ots1uJ+eiw/p4TjzNA3o+ap4i79CPZzYf2PZQmV9P6xBqPYZ0IvMzNbxNb0m5CbyF Fod3K78HsPHE5cEcH1p7MfDEdn+kH33V2m8X5TUv/i5V/m1rburHxANpxcJLr9fDTTxK PQNYjNP5UzlzNxxvNCoxiTH6irDtN1i42ShRY4kI1vLfE3gJltRhVue9FSbJgqercD7c Bhzp5pnVdzgImcXW3Dqq7o7vOCmPhb9Mq9CLtbBT+SCyDmZ4O42NINadRcSCT12wezAS /emw== X-Gm-Message-State: AOAM530hJHg8xsARY+rAC9m0OgtMQc+fA1x5loyHG9vHU3/Tsv4/GJk7 nNm+ug9LCoMwrF3RoamDxBldISVCG4JboIoTTws= X-Google-Smtp-Source: ABdhPJy+37OX9UzBfk5akQ49tsnT/a02E2j5RHkovi3u7ooR+Wo4lri5Vw2hmaD548ajoITeHogU6t+HCSK6/Fc9WU4= X-Received: by 2002:a05:6a00:178f:b029:32b:2092:c3f5 with SMTP id s15-20020a056a00178fb029032b2092c3f5mr5243486pfg.57.1626193490496; Tue, 13 Jul 2021 09:24:50 -0700 (PDT) MIME-Version: 1.0 References: <20210701210537.51272-1-hjl.tools@gmail.com> In-Reply-To: Date: Tue, 13 Jul 2021 09:24:14 -0700 Message-ID: Subject: Re: [llvm-dev] [PATCH] Add optional _Float16 support To: IA32 System V Application Binary Interface Content-Type: multipart/mixed; boundary="00000000000056795c05c703ad90" X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: "H.J. Lu via Libc-alpha" Reply-To: "H.J. Lu" Cc: "Wang, Pengfei" , llvm-dev@lists.llvm.org, GNU C Library , GCC Patches Errors-To: libc-alpha-bounces+e=80x24.org@sourceware.org Sender: "Libc-alpha" --00000000000056795c05c703ad90 Content-Type: text/plain; charset="UTF-8" On Tue, Jul 13, 2021 at 8:41 AM Joseph Myers wrote: > > On Tue, 13 Jul 2021, H.J. Lu wrote: > > > On Mon, Jul 12, 2021 at 8:59 PM Wang, Pengfei wrote: > > > > > > > Return _Float16 and _Complex _Float16 values in %xmm0/%xmm1 registers. > > > > > > Can you please explain the behavior here? Is there difference between _Float16 and _Complex _Float16 when return? I.e., > > > 1, In which case will _Float16 values return in both %xmm0 and %xmm1? > > > 2, For a single _Float16 value, are both real part and imaginary part returned in %xmm0? Or returned in %xmm0 and %xmm1 respectively? > > > > Here is the v2 patch to add the missing _Float16 bits. The PDF file is at > > > > https://gitlab.com/x86-psABIs/i386-ABI/-/wikis/Intel386-psABI > > This PDF shows _Complex _Float16 as having a size of 2 bytes (should be > 4-byte size, 2-byte alignment). > > It also seems to change double from 4-byte to 8-byte alignment, which is > wrong. And it's inconsistent about whether it covers the long double = > double (Android) case - it shows that case for _Complex long double but > not for long double itself. Here is the v3 patch with the fixes. I also updated the PDF file. > -- > Joseph S. Myers > joseph@codesourcery.com > -- H.J. --00000000000056795c05c703ad90 Content-Type: text/x-patch; charset="US-ASCII"; name="v3-0001-Add-optional-_Float16-support.patch" Content-Disposition: attachment; filename="v3-0001-Add-optional-_Float16-support.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kr29kdqm0 RnJvbSBhMDJhMTFlZjBlYTA2NmNhYjU3ZWI2NmVmMzkyYjIxZDI0M2QyNzM0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CkRhdGU6 IFRodSwgMSBKdWwgMjAyMSAxMzo1ODowMCAtMDcwMApTdWJqZWN0OiBbUEFUQ0ggdjNdIEFkZCBv cHRpb25hbCBfRmxvYXQxNiBzdXBwb3J0CgoxLiBQYXNzIF9GbG9hdDE2IGFuZCBfQ29tcGxleCBf RmxvYXQxNiB2YWx1ZXMgb24gc3RhY2suCjIuIFJldHVybiBfRmxvYXQxNiBhbmQgX0NvbXBsZXgg X0Zsb2F0MTYgdmFsdWVzIGluICV4bW0wLyV4bW0xIHJlZ2lzdGVycy4KLS0tCiBsb3ctbGV2ZWwt c3lzLWluZm8udGV4IHwgNzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgNTQgaW5zZXJ0aW9ucygrKSwgMjIgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvbG93LWxldmVsLXN5cy1pbmZvLnRleCBiL2xvdy1sZXZlbC1zeXMtaW5mby50 ZXgKaW5kZXggYWNhZjMwZS4uOWFlNzk5NSAxMDA2NDQKLS0tIGEvbG93LWxldmVsLXN5cy1pbmZv LnRleAorKysgYi9sb3ctbGV2ZWwtc3lzLWluZm8udGV4CkBAIC0zMCw3ICszMCw4IEBAIG9iamVj dCwgYW5kIHRoZSB0ZXJtIFxlbXBoe1x0ZXh0aW5kZXh7XHNpeHRlZW5ieXRle319fSByZWZlcnMg dG8gYQogXHN1YnN1YnNlY3Rpb257RnVuZGFtZW50YWwgVHlwZXN9CiAKIFRhYmxlflxyZWZ7YmFz aWMtdHlwZXN9IHNob3dzIHRoZSBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIElTTyBDCi1zY2FsYXIg dHlwZXMgYW5kIHRoZSBwcm9jZXNzb3Igc2NhbGFyIHR5cGVzLiAgXGNvZGV7X19mbG9hdDgwfSwK K3NjYWxhciB0eXBlcyBhbmQgdGhlIHByb2Nlc3NvciBzY2FsYXIgdHlwZXMuICBcY29kZXtfRmxv YXQxNn0sCitcY29kZXtfX2Zsb2F0ODB9LAogXGNvZGV7X19mbG9hdDEyOH0sIFxjb2Rle19fbTY0 fSwgXGNvZGV7X19tMTI4fSwgXGNvZGV7X19tMjU2fSBhbmQKIFxjb2Rle19fbTUxMn0gdHlwZXMg YXJlIG9wdGlvbmFsLgogCkBAIC03OSwyMyArODAsMjggQEAgc2NhbGFyIHR5cGVzIGFuZCB0aGUg cHJvY2Vzc29yIHNjYWxhciB0eXBlcy4gIFxjb2Rle19fZmxvYXQ4MH0sCiAgICAgJiBcdGV4dHR0 e1x0ZXh0aXR7YW55LXR5cGV9ICp9ICYgNCAmIDQgJiB1bnNpZ25lZCBcZm91cmJ5dGUgXFwKICAg ICAmIFx0ZXh0dHR7XHRleHRpdHthbnktdHlwZX0gKCopKCl9ICYgJiBcXAogICAgIFxobGluZQot ICAgIEZsb2F0aW5nLSYgXHRleHR0dHtmbG9hdH0gJiA0ICYgNCAmIHNpbmdsZSAoSUVFRS03NTQp IFxcCiAgICAgXGNsaW5lezItNX0KLSAgICBwb2ludCAmIFx0ZXh0dHR7ZG91YmxlfSAmIDggJiA0 ICYgZG91YmxlIChJRUVFLTc1NCkgXFwKLSAgICAmIFx0ZXh0dHR7bG9uZyBkb3VibGV9JF57XGRh Z2dlclxkYWdnZXJcZGFnZ2VyXGRhZ2dlcn0kICAmICYgJiBcXAorICAgICYgXHRleHR0dHtfRmxv YXQxNn0kXntcZGFnZ2VyXGRhZ2dlclxkYWdnZXJcZGFnZ2VyXGRhZ2dlcn0kICYgMiAmIDIgJiAx Ni1iaXQgKElFRUUtNzU0KSBcXAorICAgIFxjbGluZXsyLTV9CisgICAgJiBcdGV4dHR0e2Zsb2F0 fSAmIDQgJiA0ICYgc2luZ2xlIChJRUVFLTc1NCkgXFwKKyAgICBcY2xpbmV7Mi01fQorICAgIEZs b2F0aW5nLSAmIFx0ZXh0dHR7ZG91YmxlfSAmIDggJiA0ICYgZG91YmxlIChJRUVFLTc1NCkgXFwK KyAgICBwb2ludCAmIFx0ZXh0dHR7bG9uZyBkb3VibGV9JF57XGRhZ2dlclxkYWdnZXJcZGFnZ2Vy XGRhZ2dlcn0kICYgOCAmIDQgJiBkb3VibGUgKElFRUUtNzU0KSBcXAogICAgIFxjbGluZXsyLTV9 CiAgICAgJiBcdGV4dHR0e19fZmxvYXQ4MH0kXntcZGFnZ2VyXGRhZ2dlcn0kICAmIDEyICYgNCAm IDgwLWJpdCBleHRlbmRlZCAoSUVFRS03NTQpIFxcCi0gICAgJiBcdGV4dHR0e2xvbmcgZG91Ymxl fSRee1xkYWdnZXJcZGFnZ2VyXGRhZ2dlclxkYWdnZXJ9JCAgJiAmICYgXFwKKyAgICAmIFx0ZXh0 dHR7bG9uZyBkb3VibGV9JF57XGRhZ2dlclxkYWdnZXJcZGFnZ2VyXGRhZ2dlcn0kICAmIDEyICYg NCAmIDgwLWJpdCBleHRlbmRlZCAoSUVFRS03NTQpIFxcCiAgICAgXGNsaW5lezItNX0KICAgICAm IFx0ZXh0dHR7X19mbG9hdDEyOH0kXntcZGFnZ2VyXGRhZ2dlcn0kICYgMTYgJiAxNiAmIDEyOC1i aXQgZXh0ZW5kZWQgKElFRUUtNzU0KSBcXAogICAgIFxobGluZQotICAgIENvbXBsZXgmIFx0ZXh0 dHR7X0NvbXBsZXggZmxvYXR9ICYgOCAmIDQgJiBjb21wbGV4IHNpbmdsZSAoSUVFRS03NTQpIFxc CisgICAgJiBcdGV4dHR0e19Db21wbGV4IF9GbG9hdDE2fSAkXntcZGFnZ2VyXGRhZ2dlclxkYWdn ZXJcZGFnZ2VyXGRhZ2dlcn0kICYgNCAmIDIgJiBjb21wbGV4IDE2LWJpdCAoSUVFRS03NTQpIFxc CiAgICAgXGNsaW5lezItNX0KLSAgICBGbG9hdGluZy0mIFx0ZXh0dHR7X0NvbXBsZXggZG91Ymxl fSAmIDE2ICYgNCAmIGNvbXBsZXggZG91YmxlIChJRUVFLTc1NCkgXFwKLSAgICBwb2ludCAmIFx0 ZXh0dHR7X0NvbXBsZXggbG9uZyBkb3VibGV9JF57XGRhZ2dlclxkYWdnZXJcZGFnZ2VyXGRhZ2dl cn0kICYgJiAmIFxcCisgICAgJiBcdGV4dHR0e19Db21wbGV4IGZsb2F0fSAmIDggJiA0ICYgY29t cGxleCBzaW5nbGUgKElFRUUtNzU0KSBcXAogICAgIFxjbGluZXsyLTV9Ci0gICAgJiBcdGV4dHR0 e19Db21wbGV4IF9fZmxvYXQ4MH0kXntcZGFnZ2VyXGRhZ2dlcn0kICAmIDI0ICYgNCAmIGNvbXBs ZXggODAtYml0IGV4dGVuZGVkIChJRUVFLTc1NCkgXFwKLSAgICAmIFx0ZXh0dHR7X0NvbXBsZXgg bG9uZyBkb3VibGV9JF57XGRhZ2dlclxkYWdnZXJcZGFnZ2VyXGRhZ2dlcn0kICAmICYgJiBcXAor ICAgIENvbXBsZXgmIFx0ZXh0dHR7X0NvbXBsZXggZG91YmxlfSAmIDE2ICYgNCAmIGNvbXBsZXgg ZG91YmxlIChJRUVFLTc1NCkgXFwKKyAgICBGbG9hdGluZy0mIFx0ZXh0dHR7X0NvbXBsZXggbG9u ZyBkb3VibGV9JF57XGRhZ2dlclxkYWdnZXJcZGFnZ2VyXGRhZ2dlcn0kICYgJiAmIFxcCisgICAg XGNsaW5lezItNX0KKyAgICBwb2ludCAmIFx0ZXh0dHR7X0NvbXBsZXggX19mbG9hdDgwfSRee1xk YWdnZXJcZGFnZ2VyfSQgJiAyNCAmIDQgJiBjb21wbGV4IDgwLWJpdCBleHRlbmRlZCAoSUVFRS03 NTQpIFxcCisgICAgJiBcdGV4dHR0e19Db21wbGV4IGxvbmcgZG91YmxlfSRee1xkYWdnZXJcZGFn Z2VyXGRhZ2dlclxkYWdnZXJ9JCAmICYgJiBcXAogICAgIFxjbGluZXsyLTV9CiAgICAgJiBcdGV4 dHR0e19Db21wbGV4IF9fZmxvYXQxMjh9JF57XGRhZ2dlclxkYWdnZXJ9JCAmIDMyICYgMTYgJiBj b21wbGV4IDEyOC1iaXQgZXh0ZW5kZWQgKElFRUUtNzU0KSBcXAogICAgIFxobGluZQpAQCAtMTI1 LDYgKzEzMSw4IEBAIFRoZSBcdGV4dHR0e2xvbmcgZG91YmxlfSB0eXBlIGlzIDY0LWJpdCwgdGhl IHNhbWUgYXMgdGhlIFx0ZXh0dHR7ZG91YmxlfQogdHlwZSwgb24gdGhlIEFuZHJvaWR7XHRleHR0 cmFkZW1hcmt9IHBsYXRmb3JtLiAgTW9yZSBpbmZvcm1hdGlvbiBvbiB0aGUKIEFuZHJvaWR7XHRl eHR0cmFkZW1hcmt9IHBsYXRmb3JtIGlzIGF2YWlsYWJsZSBmcm9tCiBcdXJse2h0dHA6Ly93d3cu YW5kcm9pZC5jb20vfS59XFwKK1xtdWx0aWNvbHVtbns1fXtwezEzY219fXtcbXlmb250c2l6ZSAk XntcZGFnZ2VyXGRhZ2dlclxkYWdnZXJcZGFnZ2VyXGRhZ2dlcn0kCitUaGUgXHRleHR0dHtfRmxv YXQxNn0gdHlwZSwgZnJvbSBJU08vSUVDIFRTIDE4NjYxLTM6MjAxNSwgaXMgb3B0aW9uYWwufVxc CiAgIFxlbmR7dGFidWxhcn0KIH0KIFxlbmR7dGFibGV9CkBAIC0zMjMsNiArMzMxLDcgQEAgYXQg dGhlIHRpbWUgb2YgdGhlIGNhbGwuCiBcYmVnaW57dGFibGV9CiBcSHJ1bGUKICAgXGNhcHRpb257 UmVnaXN0ZXIgVXNhZ2V9CisgIFxteWZvbnRzaXplCiAgIFxsYWJlbHtmaWctcmVnLXVzYWdlfQog ICBcYmVnaW57Y2VudGVyfQogICAgIFxiZWdpbnt0YWJ1bGFyfXtsfHB7OC4zNWNtfXxsfQpAQCAt MzQ2LDEzICszNTUsMjkgQEAgb2Ygc29tZSA2NGJpdCByZXR1cm4gdHlwZXMgJiBObyBcXAogXEVC UCAmIGNhbGxlZS1zYXZlZCByZWdpc3Rlcjsgb3B0aW9uYWxseSB1c2VkIGFzIGZyYW1lIHBvaW50 ZXIgJiBZZXMgXFwKIFxFU0kgJiBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXIgJiB5ZXMgXFwKIFxFREkg JiBjYWxsZWUtc2F2ZWQgcmVnaXN0ZXIgJiB5ZXMgXFwKLVxyZWd7eG1tMH0sIFxyZWd7eW1tMH0g JiBzY3JhdGNoIHJlZ2lzdGVyczsgYWxzbyB1c2VkIHRvIHBhc3MgYW5kIHJldHVybgotXGNvZGV7 X19tMTI4fSwgXGNvZGV7X19tMjU2fSBwYXJhbWV0ZXJzICYgTm9cXAotXHJlZ3t4bW0xfS0tXHJl Z3t4bW0yfSwmIHNjcmF0Y2ggcmVnaXN0ZXJzOyBhbHNvIHVzZWQgdG8gcGFzcwotXGNvZGV7X19t MTI4fSwgJiBObyBcXAotXHJlZ3t5bW0xfS0tXHJlZ3t5bW0yfSAmIFxjb2Rle19fbTI1Nn0gcGFy YW1ldGVycyAmIFxcCi1ccmVne3htbTN9LS1ccmVne3htbTd9LCYgc2NyYXRjaCByZWdpc3RlcnMg JiBObyBcXAotXHJlZ3t5bW0zfS0tXHJlZ3t5bW03fSAmICYgXFwKK1xyZWd7eG1tMH0gJiBzY3Jh dGNoIHJlZ2lzdGVyOyBhbHNvIHVzZWQgdG8gcGFzcyB0aGUgZmlyc3QgXGNvZGV7X19tMTI4fQor ICAgICAgICAgICAgIHBhcmFtZXRlciBhbmQgcmV0dXJuIFxjb2Rle19fbTEyOH0sIFxjb2Rle19G bG9hdDE2fSwKKwkgICAgIHRoZSByZWFsIHBhcnQgb2YgXGNvZGV7X0NvbXBsZXggX0Zsb2F0MTZ9 ICYgTm8gXFwKK1xyZWd7eW1tMH0gJiBzY3JhdGNoIHJlZ2lzdGVyOyBhbHNvIHVzZWQgdG8gcGFz cyB0aGUgZmlyc3QgXGNvZGV7X19tMjU2fQorICAgICAgICAgICAgIHBhcmFtZXRlciBhbmQgcmV0 dXJuIFxjb2Rle19fbTI1Nn0gJiBObyBcXAorXHJlZ3t6bW0wfSAmIHNjcmF0Y2ggcmVnaXN0ZXI7 IGFsc28gdXNlZCB0byBwYXNzIHRoZSBmaXJzdCBcY29kZXtfX201MTJ9CisgICAgICAgICAgICAg cGFyYW1ldGVyIGFuZCByZXR1cm4gXGNvZGV7X19tNTEyfSAmIE5vIFxcCitccmVne3htbTF9ICYg c2NyYXRjaCByZWdpc3RlcjsgYWxzbyB1c2VkIHRvIHBhc3MgdGhlIHNlY29uZCBcY29kZXtfX20x Mjh9CisgICAgICAgICAgICAgcGFyYW1ldGVyIGFuZCByZXR1cm4gdGhlIGltYWdpbmFyeSBwYXJ0 IG9mCisJICAgICBcY29kZXtfQ29tcGxleCBfRmxvYXQxNn0gJiBObyBcXAorXHJlZ3t5bW0xfSAm IHNjcmF0Y2ggcmVnaXN0ZXI7IGFsc28gdXNlZCB0byBwYXNzIHRoZSBzZWNvbmQgXGNvZGV7X19t MjU2fQorICAgICAgICAgICAgIHBhcmFtZXRlcnMgJiBObyBcXAorXHJlZ3t6bW0xfSAmIHNjcmF0 Y2ggcmVnaXN0ZXI7IGFsc28gdXNlZCB0byBwYXNzIHRoZSBzZWNvbmQgXGNvZGV7X19tNTEyfQor ICAgICAgICAgICAgIHBhcmFtZXRlcnMgJiBObyBcXAorXHJlZ3t4bW0yfSAmIHNjcmF0Y2ggcmVn aXN0ZXI7IGFsc28gdXNlZCB0byBwYXNzIHRoZSB0aGlyZCBcY29kZXtfX20xMjh9CisgICAgICAg ICAgICAgcGFyYW1ldGVycyAmIE5vIFxcCitccmVne3ltbTJ9ICYgc2NyYXRjaCByZWdpc3Rlcjsg YWxzbyB1c2VkIHRvIHBhc3MgdGhlIHRoaXJkIFxjb2Rle19fbTI1Nn0KKyAgICAgICAgICAgICBw YXJhbWV0ZXJzICYgTm8gXFwKK1xyZWd7em1tMn0gJiBzY3JhdGNoIHJlZ2lzdGVyOyBhbHNvIHVz ZWQgdG8gcGFzcyB0aGUgdGhpcmQgXGNvZGV7X19tNTEyfQorICAgICAgICAgICAgIHBhcmFtZXRl cnMgJiBObyBcXAorXHJlZ3t4bW0zfS0tXHJlZ3t4bW03fSAmIHNjcmF0Y2ggcmVnaXN0ZXJzICYg Tm8gXFwKK1xyZWd7eW1tM30tLVxyZWd7eW1tN30gJiBzY3JhdGNoIHJlZ2lzdGVycyAmIE5vIFxc CitccmVne3ptbTN9LS1ccmVne3ptbTd9ICYgc2NyYXRjaCByZWdpc3RlcnMgJiBObyBcXAogXHJl Z3ttbTB9ICYgc2NyYXRjaCByZWdpc3RlcjsgYWxzbyB1c2VkIHRvIHBhc3MgYW5kIHJldHVybgog XGNvZGV7X19tNjR9IHBhcmFtZXRlciAmIE5vXFwKIFxyZWd7bW0xfS0tXHJlZ3ttbTJ9ICYgdXNl ZCB0byBwYXNzIFxjb2Rle19fbTY0fSBwYXJhbWV0ZXJzICYgTm9cXApAQCAtNDIwLDYgKzQ0NSw4 IEBAIGFuZCBcdGV4dHR0e3VuaW9uc30pIGFyZSBhbHdheXMgcmV0dXJuZWQgaW4gbWVtb3J5Lgog ICAgICYgXHRleHR0dHtcdGV4dGl0e2FueS10eXBlfSAqfSAmIFxFQVggXFwKICAgICAmIFx0ZXh0 dHR7XHRleHRpdHthbnktdHlwZX0gKCopKCl9ICYgXFwKICAgICBcaGxpbmUKKyAgICAmIFx0ZXh0 dHR7X0Zsb2F0MTZ9ICYgXHJlZ3t4bW0wfSBcXAorICAgIFxjbGluZXsyLTN9CiAgICAgJiBcdGV4 dHR0e2Zsb2F0fSAmIFxyZWd7c3QwfSBcXAogICAgIFxjbGluZXsyLTN9CiAgICAgRmxvYXRpbmct ICYgXHRleHR0dHtkb3VibGV9ICYgXHJlZ3tzdDB9IFxcCkBAIC00MzAsMTQgKzQ1NywxOSBAQCBh bmQgXHRleHR0dHt1bmlvbnN9KSBhcmUgYWx3YXlzIHJldHVybmVkIGluIG1lbW9yeS4KICAgICBc Y2xpbmV7Mi0zfQogICAgICYgXHRleHR0dHtfX2Zsb2F0MTI4fSAmIG1lbW9yeSBcXAogICAgIFxo bGluZQotICAgICYgXHRleHR0dHtfQ29tcGxleCBmbG9hdH0gJiBcRURYOlxFQVggXFwKLSAgICAm ICYgVGhlIHJlYWwgcGFydCBpcyByZXR1cm5lZCBpbiBcRUFYLiBUaGUgaW1hZ2luYXJ5IHBhcnQg aXMKKyAgICAmIFx0ZXh0dHR7X0NvbXBsZXggX0Zsb2F0MTZ9ICYgXHJlZ3t4bW0wfTpccmVne3ht bTF9IFxcCisgICAgJiAmIFRoZSByZWFsIHBhcnQgaXMgcmV0dXJuZWQgaW4gXHJlZ3t4bW0wfS4g VGhlIGltYWdpbmFyeSBwYXJ0IGlzCisgICAgICAgIHJldHVybmVkIFxcCisgICAgJiAmIGluIFxy ZWd7eG1tMX0uXFwKKyAgICBcY2xpbmV7Mi0zfQorICAgIENvbXBsZXggJiBcdGV4dHR0e19Db21w bGV4IGZsb2F0fSAmIFxFRFg6XEVBWCBcXAorICAgIGZsb2F0aW5nLSAmICYgVGhlIHJlYWwgcGFy dCBpcyByZXR1cm5lZCBpbiBcRUFYLiBUaGUgaW1hZ2luYXJ5IHBhcnQgaXMKICAgICAgICAgcmV0 dXJuZWQgXFwKLSAgICBDb21wbGV4ICYgJiBpbiBcRURYLlxcCisgICAgcG9pbnQgJiAmIGluIFxF RFguXFwKICAgICBcY2xpbmV7Mi0zfQotICAgIGZsb2F0aW5nLSAmIFx0ZXh0dHR7X0NvbXBsZXgg ZG91YmxlfSAmIG1lbW9yeSBcXAorICAgICYgXHRleHR0dHtfQ29tcGxleCBkb3VibGV9ICYgbWVt b3J5IFxcCiAgICAgXGNsaW5lezItM30KLSAgICBwb2ludCAmIFx0ZXh0dHR7X0NvbXBsZXggbG9u ZyBkb3VibGV9ICYgbWVtb3J5IFxcCisgICAgJiBcdGV4dHR0e19Db21wbGV4IGxvbmcgZG91Ymxl fSAmIG1lbW9yeSBcXAogICAgIFxjbGluZXsyLTN9CiAgICAgJiBcdGV4dHR0e19Db21wbGV4IF9f ZmxvYXQ4MH0gJiBtZW1vcnkgXFwKICAgICBcY2xpbmV7Mi0zfQotLSAKMi4zMS4xCgo= --00000000000056795c05c703ad90--