<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>71982</bug_id>
          
          <creation_ts>2011-11-09 17:50:43 -0800</creation_ts>
          <short_desc>Renovate ARMv7 assembler/macro-assembler</short_desc>
          <delta_ts>2014-10-20 02:17:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137871</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>joepeck</cc>
    
    <cc>ossy</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>499540</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-11-09 17:50:43 -0800</bug_when>
    <thetext>ARMv7Assembler:
* add support for strb (byte stores)
* rename the VMOV_CtoS opcodes (there are currently backwards!)
* add support for adc (add with carry)
* add support for vsqrt, vabs
* add support for vmov (between FPRs, and to/from GPR pairs).
* remove &apos;_F64&apos; postfixes from instructions (these aren&apos;t helpful, functions can already be distinguished by their signatures).
* rename vcvt_F64_S32  to vcvt_signedToFloatingPoint, the prior postfix was unhelpful in failing to distinguish the types (S32 indicates a single precision register, but the type could be float, int32, or uint32).
* rename vcvtr_S32_F64 to vcvt_floatingPointToSigned, as for previous, also vcvtr was the incorrect name for the operation (the emitted instruction truncates).

MacroAssemblerARMv7:
* add 3-operand versions of and32, lshift32, or32, rshift32, urshift32, sub32, xor32, 
* add store8, and store32 imm to base-index.
* fix load32WithCompactAddressOffsetPatch to work for all gprs (the fix is a little kludgy but functional; to do better we&apos;ll have to also fix the repatching code).
* Update supportsFloating* flags (all features now supported).
* add moveDouble, storeDouble to absolute address, addDouble to absolute address
* add 3-operand double operations.
* implement sqrtDouble/absDouble
* add branchTruncateDoubleToInt32, implement truncateDoubleToInt32
* move should do nothing if src == dest
* branchTest8-on-memory can be implemented in terms of branchTest32-on-register (branchTest8-on-register has been removed).
* add 3-operand branchAdd32, branchSub32, also branchAdd32 absolute address.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499543</commentid>
    <comment_count>1</comment_count>
      <attachid>114413</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-11-09 17:52:27 -0800</bug_when>
    <thetext>Created attachment 114413
Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499550</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-11-09 17:55:39 -0800</bug_when>
    <thetext>Attachment 114413 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/JavaScriptCore/ChangeLog&apos;, u&apos;Source...&quot; exit_code: 1

Last 3072 characters of output:
e/JavaScriptCore/ChangeLog:20:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:21:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:22:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:23:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:24:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:25:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:26:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:27:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:28:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/ChangeLog:29:  Need whitespace between colon and description  [changelog/filechangedescriptionwhitespace] [5]
Source/JavaScriptCore/assembler/ARMv7Assembler.h:1420:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Source/JavaScriptCore/assembler/ARMv7Assembler.h:1593:  vcvt_signedToFloatingPoint is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/ARMv7Assembler.h:1599:  vcvt_floatingPointToSigned is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:245:  shift_amount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:260:  shift_amount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:317:  shift_amount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:332:  shift_amount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:342:  shift_amount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:357:  shift_amount is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:835:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Total errors found: 29 in 3 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499564</commentid>
    <comment_count>3</comment_count>
      <attachid>114413</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2011-11-09 18:14:29 -0800</bug_when>
    <thetext>Comment on attachment 114413
Fix

View in context: https://bugs.webkit.org/attachment.cgi?id=114413&amp;action=review

r=me

&gt; Source/JavaScriptCore/assembler/MacroAssemblerARMv7.h:332
&gt; +    void rshift32(RegisterID shift_amount, RegisterID dest)

shift_amount =&gt; shiftAmount is The WebKit Style (TM).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499576</commentid>
    <comment_count>4</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-11-09 18:33:17 -0800</bug_when>
    <thetext>Fixed in r99798</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>499660</commentid>
    <comment_count>5</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2011-11-09 22:32:18 -0800</bug_when>
    <thetext>*** Bug 71730 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042758</commentid>
    <comment_count>6</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-10-20 02:16:27 -0700</bug_when>
    <thetext>Re-opened since this is blocked by bug 137871</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1042760</commentid>
    <comment_count>7</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2014-10-20 02:17:31 -0700</bug_when>
    <thetext>close again, because it was reopened acidentally/automatically by webkit-patch</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>114413</attachid>
            <date>2011-11-09 17:52:27 -0800</date>
            <delta_ts>2011-11-09 18:14:29 -0800</delta_ts>
            <desc>Fix</desc>
            <filename>71982.patch</filename>
            <type>text/plain</type>
            <size>37866</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gOTk3OTMpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMTEtMTEtMDkgIEdhdmluIEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgor
CisgICAgICAgIFJlbm92YXRlIEFSTXY3IGFzc2VtYmxlci9tYWNyby1hc3NlbWJsZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxOTgyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQVJNdjdBc3NlbWJsZXI6
CisgICAgICAgICogYWRkIHN1cHBvcnQgZm9yIHN0cmIgKGJ5dGUgc3RvcmVzKQorICAgICAgICAq
IHJlbmFtZSB0aGUgVk1PVl9DdG9TIG9wY29kZXMgKHRoZXJlIGFyZSBjdXJyZW50bHkgYmFja3dh
cmRzISkKKyAgICAgICAgKiBhZGQgc3VwcG9ydCBmb3IgYWRjIChhZGQgd2l0aCBjYXJyeSkKKyAg
ICAgICAgKiBhZGQgc3VwcG9ydCBmb3IgdnNxcnQsIHZhYnMKKyAgICAgICAgKiBhZGQgc3VwcG9y
dCBmb3Igdm1vdiAoYmV0d2VlbiBGUFJzLCBhbmQgdG8vZnJvbSBHUFIgcGFpcnMpLgorICAgICAg
ICAqIHJlbW92ZSAnX0Y2NCcgcG9zdGZpeGVzIGZyb20gaW5zdHJ1Y3Rpb25zICh0aGVzZSBhcmVu
J3QgaGVscGZ1bCwgZnVuY3Rpb25zIGNhbiBhbHJlYWR5IGJlIGRpc3Rpbmd1aXNoZWQgYnkgdGhl
aXIgc2lnbmF0dXJlcykuCisgICAgICAgICogcmVuYW1lIHZjdnRfRjY0X1MzMiAgdG8gdmN2dF9z
aWduZWRUb0Zsb2F0aW5nUG9pbnQsIHRoZSBwcmlvciBwb3N0Zml4IHdhcyB1bmhlbHBmdWwgaW4g
ZmFpbGluZyB0byBkaXN0aW5ndWlzaCB0aGUgdHlwZXMgKFMzMiBpbmRpY2F0ZXMgYSBzaW5nbGUg
cHJlY2lzaW9uIHJlZ2lzdGVyLCBidXQgdGhlIHR5cGUgY291bGQgYmUgZmxvYXQsIGludDMyLCBv
ciB1aW50MzIpLgorICAgICAgICAqIHJlbmFtZSB2Y3Z0cl9TMzJfRjY0IHRvIHZjdnRfZmxvYXRp
bmdQb2ludFRvU2lnbmVkLCBhcyBmb3IgcHJldmlvdXMsIGFsc28gdmN2dHIgd2FzIHRoZSBpbmNv
cnJlY3QgbmFtZSBmb3IgdGhlIG9wZXJhdGlvbiAodGhlIGVtaXR0ZWQgaW5zdHJ1Y3Rpb24gdHJ1
bmNhdGVzKS4KKworICAgICAgICBNYWNyb0Fzc2VtYmxlckFSTXY3OgorICAgICAgICAqIGFkZCAz
LW9wZXJhbmQgdmVyc2lvbnMgb2YgYW5kMzIsIGxzaGlmdDMyLCBvcjMyLCByc2hpZnQzMiwgdXJz
aGlmdDMyLCBzdWIzMiwgeG9yMzIsIAorICAgICAgICAqIGFkZCBzdG9yZTgsIGFuZCBzdG9yZTMy
IGltbSB0byBiYXNlLWluZGV4LgorICAgICAgICAqIGZpeCBsb2FkMzJXaXRoQ29tcGFjdEFkZHJl
c3NPZmZzZXRQYXRjaCB0byB3b3JrIGZvciBhbGwgZ3BycyAodGhlIGZpeCBpcyBhIGxpdHRsZSBr
bHVkZ3kgYnV0IGZ1bmN0aW9uYWw7IHRvIGRvIGJldHRlciB3ZSdsbCBoYXZlIHRvIGFsc28gZml4
IHRoZSByZXBhdGNoaW5nIGNvZGUpLgorICAgICAgICAqIFVwZGF0ZSBzdXBwb3J0c0Zsb2F0aW5n
KiBmbGFncyAoYWxsIGZlYXR1cmVzIG5vdyBzdXBwb3J0ZWQpLgorICAgICAgICAqIGFkZCBtb3Zl
RG91YmxlLCBzdG9yZURvdWJsZSB0byBhYnNvbHV0ZSBhZGRyZXNzLCBhZGREb3VibGUgdG8gYWJz
b2x1dGUgYWRkcmVzcworICAgICAgICAqIGFkZCAzLW9wZXJhbmQgZG91YmxlIG9wZXJhdGlvbnMu
CisgICAgICAgICogaW1wbGVtZW50IHNxcnREb3VibGUvYWJzRG91YmxlCisgICAgICAgICogYWRk
IGJyYW5jaFRydW5jYXRlRG91YmxlVG9JbnQzMiwgaW1wbGVtZW50IHRydW5jYXRlRG91YmxlVG9J
bnQzMgorICAgICAgICAqIG1vdmUgc2hvdWxkIGRvIG5vdGhpbmcgaWYgc3JjID09IGRlc3QKKyAg
ICAgICAgKiBicmFuY2hUZXN0OC1vbi1tZW1vcnkgY2FuIGJlIGltcGxlbWVudGVkIGluIHRlcm1z
IG9mIGJyYW5jaFRlc3QzMi1vbi1yZWdpc3RlciAoYnJhbmNoVGVzdDgtb24tcmVnaXN0ZXIgaGFz
IGJlZW4gcmVtb3ZlZCkuCisgICAgICAgICogYWRkIDMtb3BlcmFuZCBicmFuY2hBZGQzMiwgYnJh
bmNoU3ViMzIsIGFsc28gYnJhbmNoQWRkMzIgYWJzb2x1dGUgYWRkcmVzcy4KKwogMjAxMS0xMS0w
OSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBsZS5jb20+CiAKICAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTcxODczCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9BUk12N0Fzc2VtYmxlci5oCShyZXZp
c2lvbiA5OTc4OCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3Nl
bWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNTM0LDExICs1MzQsMTMgQEAgcHJpdmF0ZToKICAg
ICAgICAgT1BfQkxYICAgICAgICAgICAgICA9IDB4NDcwMCwKICAgICAgICAgT1BfQlggICAgICAg
ICAgICAgICA9IDB4NDcwMCwKICAgICAgICAgT1BfU1RSX3JlZ19UMSAgICAgICA9IDB4NTAwMCwK
KyAgICAgICAgT1BfU1RSQl9yZWdfVDEgICAgICA9IDB4NTQwMCwKICAgICAgICAgT1BfTERSX3Jl
Z19UMSAgICAgICA9IDB4NTgwMCwKICAgICAgICAgT1BfTERSSF9yZWdfVDEgICAgICA9IDB4NUEw
MCwKICAgICAgICAgT1BfTERSQl9yZWdfVDEgICAgICA9IDB4NUMwMCwKICAgICAgICAgT1BfU1RS
X2ltbV9UMSAgICAgICA9IDB4NjAwMCwKICAgICAgICAgT1BfTERSX2ltbV9UMSAgICAgICA9IDB4
NjgwMCwKKyAgICAgICAgT1BfU1RSQl9pbW1fVDEgICAgICA9IDB4NzAwMCwKICAgICAgICAgT1Bf
TERSQl9pbW1fVDEgICAgICA9IDB4NzgwMCwKICAgICAgICAgT1BfTERSSF9pbW1fVDEgICAgICA9
IDB4ODgwMCwKICAgICAgICAgT1BfU1RSX2ltbV9UMiAgICAgICA9IDB4OTAwMCwKQEAgLTU2OSwx
OCArNTcxLDIzIEBAIHByaXZhdGU6CiAgICAgICAgIE9QX1NVQl9yZWdfVDIgICA9IDB4RUJBMCwK
ICAgICAgICAgT1BfU1VCX1NfcmVnX1QyID0gMHhFQkIwLAogICAgICAgICBPUF9DTVBfcmVnX1Qy
ICAgPSAweEVCQjAsCisgICAgICAgIE9QX1ZNT1ZfQ3RvRCAgICA9IDB4RUMwMCwKKyAgICAgICAg
T1BfVk1PVl9EdG9DICAgID0gMHhFQzEwLAogICAgICAgICBPUF9WU1RSICAgICAgICAgPSAweEVE
MDAsCiAgICAgICAgIE9QX1ZMRFIgICAgICAgICA9IDB4RUQxMCwKLSAgICAgICAgT1BfVk1PVl9T
dG9DICAgID0gMHhFRTAwLAotICAgICAgICBPUF9WTU9WX0N0b1MgICAgPSAweEVFMTAsCisgICAg
ICAgIE9QX1ZNT1ZfQ3RvUyAgICA9IDB4RUUwMCwKKyAgICAgICAgT1BfVk1PVl9TdG9DICAgID0g
MHhFRTEwLAogICAgICAgICBPUF9WTVVMX1QyICAgICAgPSAweEVFMjAsCiAgICAgICAgIE9QX1ZB
RERfVDIgICAgICA9IDB4RUUzMCwKICAgICAgICAgT1BfVlNVQl9UMiAgICAgID0gMHhFRTMwLAog
ICAgICAgICBPUF9WRElWICAgICAgICAgPSAweEVFODAsCisgICAgICAgIE9QX1ZBQlNfVDIgICAg
ICA9IDB4RUVCMCwKICAgICAgICAgT1BfVkNNUCAgICAgICAgID0gMHhFRUIwLAogICAgICAgICBP
UF9WQ1ZUX0ZQSVZGUCAgPSAweEVFQjAsCisgICAgICAgIE9QX1ZNT1ZfVDIgICAgICA9IDB4RUVC
MCwKICAgICAgICAgT1BfVk1PVl9JTU1fVDIgID0gMHhFRUIwLAogICAgICAgICBPUF9WTVJTICAg
ICAgICAgPSAweEVFQjAsCisgICAgICAgIE9QX1ZTUVJUX1QxICAgICA9IDB4RUVCMCwKICAgICAg
ICAgT1BfQl9UM2EgICAgICAgID0gMHhGMDAwLAogICAgICAgICBPUF9CX1Q0YSAgICAgICAgPSAw
eEYwMDAsCiAgICAgICAgIE9QX0FORF9pbW1fVDEgICA9IDB4RjAwMCwKQEAgLTU5Miw2ICs1OTks
NyBAQCBwcml2YXRlOgogICAgICAgICBPUF9BRERfaW1tX1QzICAgPSAweEYxMDAsCiAgICAgICAg
IE9QX0FERF9TX2ltbV9UMyA9IDB4RjExMCwKICAgICAgICAgT1BfQ01OX2ltbSAgICAgID0gMHhG
MTEwLAorICAgICAgICBPUF9BRENfaW1tICAgICAgPSAweEYxNDAsCiAgICAgICAgIE9QX1NVQl9p
bW1fVDMgICA9IDB4RjFBMCwKICAgICAgICAgT1BfU1VCX1NfaW1tX1QzID0gMHhGMUIwLAogICAg
ICAgICBPUF9DTVBfaW1tX1QyICAgPSAweEYxQjAsCkBAIC02MDIsNiArNjEwLDggQEAgcHJpdmF0
ZToKICAgICAgICAgT1BfTU9WVCAgICAgICAgID0gMHhGMkMwLAogICAgICAgICBPUF9VQkZYX1Qx
ICAgICAgPSAweEYzQzAsCiAgICAgICAgIE9QX05PUF9UMmEgICAgICA9IDB4RjNBRiwKKyAgICAg
ICAgT1BfU1RSQl9pbW1fVDMgID0gMHhGODAwLAorICAgICAgICBPUF9TVFJCX3JlZ19UMiAgPSAw
eEY4MDAsCiAgICAgICAgIE9QX0xEUkJfaW1tX1QzICA9IDB4RjgxMCwKICAgICAgICAgT1BfTERS
Ql9yZWdfVDIgID0gMHhGODEwLAogICAgICAgICBPUF9MRFJIX3JlZ19UMiAgPSAweEY4MzAsCkBA
IC02MTAsNiArNjIwLDcgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfU1RSX3JlZ19UMiAgID0gMHhG
ODQwLAogICAgICAgICBPUF9MRFJfaW1tX1Q0ICAgPSAweEY4NTAsCiAgICAgICAgIE9QX0xEUl9y
ZWdfVDIgICA9IDB4Rjg1MCwKKyAgICAgICAgT1BfU1RSQl9pbW1fVDIgID0gMHhGODgwLAogICAg
ICAgICBPUF9MRFJCX2ltbV9UMiAgPSAweEY4OTAsCiAgICAgICAgIE9QX0xEUkhfaW1tX1QyICA9
IDB4RjhCMCwKICAgICAgICAgT1BfU1RSX2ltbV9UMyAgID0gMHhGOEMwLApAQCAtNjI3LDE0ICs2
MzgsMTkgQEAgcHJpdmF0ZToKICAgICAgICAgT1BfVkRJVmIgICAgICAgID0gMHgwQTAwLAogICAg
ICAgICBPUF9WTERSYiAgICAgICAgPSAweDBBMDAsCiAgICAgICAgIE9QX1ZNT1ZfSU1NX1QyYiA9
IDB4MEEwMCwKKyAgICAgICAgT1BfVk1PVl9UMmIgICAgID0gMHgwQTQwLAogICAgICAgICBPUF9W
TVVMX1QyYiAgICAgPSAweDBBMDAsCiAgICAgICAgIE9QX1ZTVFJiICAgICAgICA9IDB4MEEwMCwK
LSAgICAgICAgT1BfVk1PVl9DdG9TYiAgID0gMHgwQTEwLAogICAgICAgICBPUF9WTU9WX1N0b0Ni
ICAgPSAweDBBMTAsCisgICAgICAgIE9QX1ZNT1ZfQ3RvU2IgICA9IDB4MEExMCwKKyAgICAgICAg
T1BfVk1PVl9EdG9DYiAgID0gMHgwQTEwLAorICAgICAgICBPUF9WTU9WX0N0b0RiICAgPSAweDBB
MTAsCiAgICAgICAgIE9QX1ZNUlNiICAgICAgICA9IDB4MEExMCwKKyAgICAgICAgT1BfVkFCU19U
MmIgICAgID0gMHgwQTQwLAogICAgICAgICBPUF9WQ01QYiAgICAgICAgPSAweDBBNDAsCiAgICAg
ICAgIE9QX1ZDVlRfRlBJVkZQYiA9IDB4MEE0MCwKICAgICAgICAgT1BfVlNVQl9UMmIgICAgID0g
MHgwQTQwLAorICAgICAgICBPUF9WU1FSVF9UMWIgICAgPSAweDBBNDAsCiAgICAgICAgIE9QX05P
UF9UMmIgICAgICA9IDB4ODAwMCwKICAgICAgICAgT1BfQl9UM2IgICAgICAgID0gMHg4MDAwLAog
ICAgICAgICBPUF9CX1Q0YiAgICAgICAgPSAweDkwMDAsCkBAIC03MDAsNiArNzE2LDE3IEBAIHBy
aXZhdGU6CiAKIHB1YmxpYzoKICAgICAKKyAgICB2b2lkIGFkYyhSZWdpc3RlcklEIHJkLCBSZWdp
c3RlcklEIHJuLCBBUk1UaHVtYkltbWVkaWF0ZSBpbW0pCisgICAgeworICAgICAgICAvLyBSZCBj
YW4gb25seSBiZSBTUCBpZiBSbiBpcyBhbHNvIFNQLgorICAgICAgICBBU1NFUlQoKHJkICE9IEFS
TVJlZ2lzdGVyczo6c3ApIHx8IChybiA9PSBBUk1SZWdpc3RlcnM6OnNwKSk7CisgICAgICAgIEFT
U0VSVChyZCAhPSBBUk1SZWdpc3RlcnM6OnBjKTsKKyAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJl
Z2lzdGVyczo6cGMpOworICAgICAgICBBU1NFUlQoaW1tLmlzRW5jb2RlZEltbSgpKTsKKworICAg
ICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3A1aTZJbW00UmVnNEVuY29kZWRJbW0oT1BfQURDX2lt
bSwgcm4sIHJkLCBpbW0pOworICAgIH0KKwogICAgIHZvaWQgYWRkKFJlZ2lzdGVySUQgcmQsIFJl
Z2lzdGVySUQgcm4sIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKICAgICB7CiAgICAgICAgIC8vIFJk
IGNhbiBvbmx5IGJlIFNQIGlmIFJuIGlzIGFsc28gU1AuCkBAIC04NjEsNyArODg4LDcgQEAgcHVi
bGljOgogICAgICAgICByZXR1cm4gbV9mb3JtYXR0ZXIubGFiZWwoKTsKICAgICB9CiAKLSAgICB2
b2lkIGJrcHQodWludDhfdCBpbW09MCkKKyAgICB2b2lkIGJrcHQodWludDhfdCBpbW0gPSAwKQog
ICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIub25lV29yZE9wOEltbTgoT1BfQktQVCwgaW1tKTsK
ICAgICB9CkBAIC0xMzU0LDYgKzEzODEsNjUgQEAgcHVibGljOgogICAgICAgICAgICAgbV9mb3Jt
YXR0ZXIudHdvV29yZE9wMTJSZWc0Rm91ckZvdXJzKE9QX1NUUl9yZWdfVDIsIHJuLCBGb3VyRm91
cnMocnQsIDAsIHNoaWZ0LCBybSkpOwogICAgIH0KIAorICAgIC8vIHJ0ID09IEFSTVJlZ2lzdGVy
czo6cGMgb25seSBhbGxvd2VkIGlmIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gSVQgKGlmIHRoZW4pIGJs
b2NrLgorICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdHJiKFJlZ2lzdGVySUQgcnQsIFJlZ2lzdGVy
SUQgcm4sIEFSTVRodW1iSW1tZWRpYXRlIGltbSkKKyAgICB7CisgICAgICAgIEFTU0VSVChydCAh
PSBBUk1SZWdpc3RlcnM6OnBjKTsKKyAgICAgICAgQVNTRVJUKHJuICE9IEFSTVJlZ2lzdGVyczo6
cGMpOworICAgICAgICBBU1NFUlQoaW1tLmlzVUludDEyKCkpOworCisgICAgICAgIGlmICghKChy
dCB8IHJuKSAmIDgpICYmIGltbS5pc1VJbnQ3KCkpCisgICAgICAgICAgICBtX2Zvcm1hdHRlci5v
bmVXb3JkT3A1SW1tNVJlZzNSZWczKE9QX1NUUkJfaW1tX1QxLCBpbW0uZ2V0VUludDcoKSA+PiAy
LCBybiwgcnQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3Jk
T3AxMlJlZzRSZWc0SW1tMTIoT1BfU1RSQl9pbW1fVDIsIHJuLCBydCwgaW1tLmdldFVJbnQxMigp
KTsKKyAgICB9CisKKyAgICAvLyBJZiBpbmRleCBpcyBzZXQsIHRoaXMgaXMgYSByZWd1bGFyIG9m
ZnNldCBvciBhIHByZS1pbmRleGVkIHN0b3JlOworICAgIC8vIGlmIGluZGV4IGlzIG5vdCBzZXQg
dGhlbiBpcyBpcyBhIHBvc3QtaW5kZXggc3RvcmUuCisgICAgLy8KKyAgICAvLyBJZiB3YmFjayBp
cyBzZXQgcm4gaXMgdXBkYXRlZCAtIHRoaXMgaXMgYSBwcmUgb3IgcG9zdCBpbmRleCBzdG9yZSwK
KyAgICAvLyBpZiB3YmFjayBpcyBub3Qgc2V0IHRoaXMgaXMgYSByZWd1bGFyIG9mZnNldCBtZW1v
cnkgYWNjZXNzLgorICAgIC8vCisgICAgLy8gKC0yNTUgPD0gb2Zmc2V0IDw9IDI1NSkKKyAgICAv
LyBfcmVnID0gUkVHW3JuXQorICAgIC8vIF90bXAgPSBfcmVnICsgb2Zmc2V0CisgICAgLy8gTUVN
W2luZGV4ID8gX3RtcCA6IF9yZWddID0gUkVHW3J0XQorICAgIC8vIGlmICh3YmFjaykgUkVHW3Ju
XSA9IF90bXAKKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RyYihSZWdpc3RlcklEIHJ0LCBSZWdp
c3RlcklEIHJuLCBpbnQgb2Zmc2V0LCBib29sIGluZGV4LCBib29sIHdiYWNrKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKHJ0ICE9IEFSTVJlZ2lzdGVyczo6cGMpOworICAgICAgICBBU1NFUlQocm4g
IT0gQVJNUmVnaXN0ZXJzOjpwYyk7CisgICAgICAgIEFTU0VSVChpbmRleCB8fCB3YmFjayk7Cisg
ICAgICAgIEFTU0VSVCghd2JhY2sgfCAocnQgIT0gcm4pKTsKKyAgICAKKyAgICAgICAgYm9vbCBh
ZGQgPSB0cnVlOworICAgICAgICBpZiAob2Zmc2V0IDwgMCkgeworICAgICAgICAgICAgYWRkID0g
ZmFsc2U7CisgICAgICAgICAgICBvZmZzZXQgPSAtb2Zmc2V0OworICAgICAgICB9CisgICAgICAg
IEFTU0VSVCgob2Zmc2V0ICYgfjB4ZmYpID09IDApOworICAgICAgICAKKyAgICAgICAgb2Zmc2V0
IHw9ICh3YmFjayA8PCA4KTsKKyAgICAgICAgb2Zmc2V0IHw9IChhZGQgICA8PCA5KTsKKyAgICAg
ICAgb2Zmc2V0IHw9IChpbmRleCA8PCAxMCk7CisgICAgICAgIG9mZnNldCB8PSAoMSA8PCAxMSk7
CisgICAgICAgIAorICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRSZWc0SW1tMTIo
T1BfU1RSQl9pbW1fVDMsIHJuLCBydCwgb2Zmc2V0KTsKKyAgICB9CisKKyAgICAvLyBydCA9PSBB
Uk1SZWdpc3RlcnM6OnBjIG9ubHkgYWxsb3dlZCBpZiBsYXN0IGluc3RydWN0aW9uIGluIElUIChp
ZiB0aGVuKSBibG9jay4KKyAgICBBTFdBWVNfSU5MSU5FIHZvaWQgc3RyYihSZWdpc3RlcklEIHJ0
LCBSZWdpc3RlcklEIHJuLCBSZWdpc3RlcklEIHJtLCB1bnNpZ25lZCBzaGlmdCA9IDApCisgICAg
eworICAgICAgICBBU1NFUlQocm4gIT0gQVJNUmVnaXN0ZXJzOjpwYyk7CisgICAgICAgIEFTU0VS
VCghQmFkUmVnKHJtKSk7CisgICAgICAgIEFTU0VSVChzaGlmdCA8PSAzKTsKKworICAgICAgICBp
ZiAoIXNoaWZ0ICYmICEoKHJ0IHwgcm4gfCBybSkgJiA4KSkKKyAgICAgICAgICAgIG1fZm9ybWF0
dGVyLm9uZVdvcmRPcDdSZWczUmVnM1JlZzMoT1BfU1RSQl9yZWdfVDEsIHJtLCBybiwgcnQpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzRGb3Vy
Rm91cnMoT1BfU1RSQl9yZWdfVDIsIHJuLCBGb3VyRm91cnMocnQsIDAsIHNoaWZ0LCBybSkpOwor
ICAgIH0KKwogICAgIEFMV0FZU19JTkxJTkUgdm9pZCBzdWIoUmVnaXN0ZXJJRCByZCwgUmVnaXN0
ZXJJRCBybiwgQVJNVGh1bWJJbW1lZGlhdGUgaW1tKQogICAgIHsKICAgICAgICAgLy8gUmQgY2Fu
IG9ubHkgYmUgU1AgaWYgUm4gaXMgYWxzbyBTUC4KQEAgLTE0ODksMzQgKzE1NzUsMzQgQEAgcHVi
bGljOgogICAgICAgICBtX2Zvcm1hdHRlci50d29Xb3JkT3AxMlJlZzQwSW1tM1JlZzRJbW0yMElt
bTUoT1BfVUJGWF9UMSwgcmQsIHJuLCAobHNiICYgMHgxYykgPDwgMTAsIChsc2IgJiAweDMpIDw8
IDYsICh3aWR0aCAtIDEpICYgMHgxZik7CiAgICAgfQogCi0gICAgdm9pZCB2YWRkX0Y2NChGUERv
dWJsZVJlZ2lzdGVySUQgcmQsIEZQRG91YmxlUmVnaXN0ZXJJRCBybiwgRlBEb3VibGVSZWdpc3Rl
cklEIHJtKQorICAgIHZvaWQgdmFkZChGUERvdWJsZVJlZ2lzdGVySUQgcmQsIEZQRG91YmxlUmVn
aXN0ZXJJRCBybiwgRlBEb3VibGVSZWdpc3RlcklEIHJtKQogICAgIHsKICAgICAgICAgbV9mb3Jt
YXR0ZXIudmZwT3AoT1BfVkFERF9UMiwgT1BfVkFERF9UMmIsIHRydWUsIHJuLCByZCwgcm0pOwog
ICAgIH0KIAotICAgIHZvaWQgdmNtcF9GNjQoRlBEb3VibGVSZWdpc3RlcklEIHJkLCBGUERvdWJs
ZVJlZ2lzdGVySUQgcm0pCisgICAgdm9pZCB2Y21wKEZQRG91YmxlUmVnaXN0ZXJJRCByZCwgRlBE
b3VibGVSZWdpc3RlcklEIHJtKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3AoT1Bf
VkNNUCwgT1BfVkNNUGIsIHRydWUsIFZGUE9wZXJhbmQoNCksIHJkLCBybSk7CiAgICAgfQogCi0g
ICAgdm9pZCB2Y21wel9GNjQoRlBEb3VibGVSZWdpc3RlcklEIHJkKQorICAgIHZvaWQgdmNtcHoo
RlBEb3VibGVSZWdpc3RlcklEIHJkKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3Ao
T1BfVkNNUCwgT1BfVkNNUGIsIHRydWUsIFZGUE9wZXJhbmQoNSksIHJkLCBWRlBPcGVyYW5kKDAp
KTsKICAgICB9CiAKLSAgICB2b2lkIHZjdnRfRjY0X1MzMihGUERvdWJsZVJlZ2lzdGVySUQgcmQs
IEZQU2luZ2xlUmVnaXN0ZXJJRCBybSkKKyAgICB2b2lkIHZjdnRfc2lnbmVkVG9GbG9hdGluZ1Bv
aW50KEZQRG91YmxlUmVnaXN0ZXJJRCByZCwgRlBTaW5nbGVSZWdpc3RlcklEIHJtKQogICAgIHsK
ICAgICAgICAgLy8gYm9vbGVhbiB2YWx1ZXMgYXJlIDY0Yml0ICh0b0ludCwgdW5zaWduZWQsIHJv
dW5kWmVybykKICAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3AoT1BfVkNWVF9GUElWRlAsIE9QX1ZD
VlRfRlBJVkZQYiwgdHJ1ZSwgdmN2dE9wKGZhbHNlLCBmYWxzZSwgZmFsc2UpLCByZCwgcm0pOwog
ICAgIH0KIAotICAgIHZvaWQgdmN2dHJfUzMyX0Y2NChGUFNpbmdsZVJlZ2lzdGVySUQgcmQsIEZQ
RG91YmxlUmVnaXN0ZXJJRCBybSkKKyAgICB2b2lkIHZjdnRfZmxvYXRpbmdQb2ludFRvU2lnbmVk
KEZQU2luZ2xlUmVnaXN0ZXJJRCByZCwgRlBEb3VibGVSZWdpc3RlcklEIHJtKQogICAgIHsKICAg
ICAgICAgLy8gYm9vbGVhbiB2YWx1ZXMgYXJlIDY0Yml0ICh0b0ludCwgdW5zaWduZWQsIHJvdW5k
WmVybykKICAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3AoT1BfVkNWVF9GUElWRlAsIE9QX1ZDVlRf
RlBJVkZQYiwgdHJ1ZSwgdmN2dE9wKHRydWUsIGZhbHNlLCB0cnVlKSwgcmQsIHJtKTsKICAgICB9
CiAKLSAgICB2b2lkIHZkaXZfRjY0KEZQRG91YmxlUmVnaXN0ZXJJRCByZCwgRlBEb3VibGVSZWdp
c3RlcklEIHJuLCBGUERvdWJsZVJlZ2lzdGVySUQgcm0pCisgICAgdm9pZCB2ZGl2KEZQRG91Ymxl
UmVnaXN0ZXJJRCByZCwgRlBEb3VibGVSZWdpc3RlcklEIHJuLCBGUERvdWJsZVJlZ2lzdGVySUQg
cm0pCiAgICAgewogICAgICAgICBtX2Zvcm1hdHRlci52ZnBPcChPUF9WRElWLCBPUF9WRElWYiwg
dHJ1ZSwgcm4sIHJkLCBybSk7CiAgICAgfQpAQCAtMTUyOSwxMyArMTYxNSwzMiBAQCBwdWJsaWM6
CiAgICAgdm9pZCB2bW92KFJlZ2lzdGVySUQgcmQsIEZQU2luZ2xlUmVnaXN0ZXJJRCBybikKICAg
ICB7CiAgICAgICAgIEFTU0VSVCghQmFkUmVnKHJkKSk7Ci0gICAgICAgIG1fZm9ybWF0dGVyLnZm
cE9wKE9QX1ZNT1ZfQ3RvUywgT1BfVk1PVl9DdG9TYiwgZmFsc2UsIHJuLCByZCwgVkZQT3BlcmFu
ZCgwKSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZNT1ZfU3RvQywgT1BfVk1PVl9T
dG9DYiwgZmFsc2UsIHJuLCByZCwgVkZQT3BlcmFuZCgwKSk7CiAgICAgfQogCiAgICAgdm9pZCB2
bW92KEZQU2luZ2xlUmVnaXN0ZXJJRCByZCwgUmVnaXN0ZXJJRCBybikKICAgICB7CiAgICAgICAg
IEFTU0VSVCghQmFkUmVnKHJuKSk7Ci0gICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZNT1Zf
U3RvQywgT1BfVk1PVl9TdG9DYiwgZmFsc2UsIHJkLCBybiwgVkZQT3BlcmFuZCgwKSk7CisgICAg
ICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZNT1ZfQ3RvUywgT1BfVk1PVl9DdG9TYiwgZmFsc2Us
IHJkLCBybiwgVkZQT3BlcmFuZCgwKSk7CisgICAgfQorCisgICAgdm9pZCB2bW92KFJlZ2lzdGVy
SUQgcmQxLCBSZWdpc3RlcklEIHJkMiwgRlBEb3VibGVSZWdpc3RlcklEIHJuKQorICAgIHsKKyAg
ICAgICAgQVNTRVJUKCFCYWRSZWcocmQxKSk7CisgICAgICAgIEFTU0VSVCghQmFkUmVnKHJkMikp
OworICAgICAgICBtX2Zvcm1hdHRlci52ZnBPcChPUF9WTU9WX0R0b0MsIE9QX1ZNT1ZfRHRvQ2Is
IHRydWUsIHJkMiwgVkZQT3BlcmFuZChyZDEgfCAxNiksIHJuKTsKKyAgICB9CisKKyAgICB2b2lk
IHZtb3YoRlBEb3VibGVSZWdpc3RlcklEIHJkLCBSZWdpc3RlcklEIHJuMSwgUmVnaXN0ZXJJRCBy
bjIpCisgICAgeworICAgICAgICBBU1NFUlQoIUJhZFJlZyhybjEpKTsKKyAgICAgICAgQVNTRVJU
KCFCYWRSZWcocm4yKSk7CisgICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZNT1ZfQ3RvRCwg
T1BfVk1PVl9DdG9EYiwgdHJ1ZSwgcm4yLCBWRlBPcGVyYW5kKHJuMSB8IDE2KSwgcmQpOworICAg
IH0KKworICAgIHZvaWQgdm1vdihGUERvdWJsZVJlZ2lzdGVySUQgcmQsIEZQRG91YmxlUmVnaXN0
ZXJJRCBybikKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZNT1ZfVDIsIE9Q
X1ZNT1ZfVDJiLCB0cnVlLCBWRlBPcGVyYW5kKDApLCByZCwgcm4pOwogICAgIH0KIAogICAgIHZv
aWQgdm1ycyhSZWdpc3RlcklEIHJlZyA9IEFSTVJlZ2lzdGVyczo6cGMpCkBAIC0xNTQ0LDcgKzE2
NDksNyBAQCBwdWJsaWM6CiAgICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZNUlMsIE9QX1ZN
UlNiLCBmYWxzZSwgVkZQT3BlcmFuZCgxKSwgVkZQT3BlcmFuZCgweDEwIHwgcmVnKSwgVkZQT3Bl
cmFuZCgwKSk7CiAgICAgfQogCi0gICAgdm9pZCB2bXVsX0Y2NChGUERvdWJsZVJlZ2lzdGVySUQg
cmQsIEZQRG91YmxlUmVnaXN0ZXJJRCBybiwgRlBEb3VibGVSZWdpc3RlcklEIHJtKQorICAgIHZv
aWQgdm11bChGUERvdWJsZVJlZ2lzdGVySUQgcmQsIEZQRG91YmxlUmVnaXN0ZXJJRCBybiwgRlBE
b3VibGVSZWdpc3RlcklEIHJtKQogICAgIHsKICAgICAgICAgbV9mb3JtYXR0ZXIudmZwT3AoT1Bf
Vk1VTF9UMiwgT1BfVk1VTF9UMmIsIHRydWUsIHJuLCByZCwgcm0pOwogICAgIH0KQEAgLTE1NTQs
MTEgKzE2NTksMjEgQEAgcHVibGljOgogICAgICAgICBtX2Zvcm1hdHRlci52ZnBNZW1PcChPUF9W
U1RSLCBPUF9WU1RSYiwgdHJ1ZSwgcm4sIHJkLCBpbW0pOwogICAgIH0KIAotICAgIHZvaWQgdnN1
Yl9GNjQoRlBEb3VibGVSZWdpc3RlcklEIHJkLCBGUERvdWJsZVJlZ2lzdGVySUQgcm4sIEZQRG91
YmxlUmVnaXN0ZXJJRCBybSkKKyAgICB2b2lkIHZzdWIoRlBEb3VibGVSZWdpc3RlcklEIHJkLCBG
UERvdWJsZVJlZ2lzdGVySUQgcm4sIEZQRG91YmxlUmVnaXN0ZXJJRCBybSkKICAgICB7CiAgICAg
ICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZTVUJfVDIsIE9QX1ZTVUJfVDJiLCB0cnVlLCBybiwg
cmQsIHJtKTsKICAgICB9CiAKKyAgICB2b2lkIHZhYnMoRlBEb3VibGVSZWdpc3RlcklEIHJkLCBG
UERvdWJsZVJlZ2lzdGVySUQgcm0pCisgICAgeworICAgICAgICBtX2Zvcm1hdHRlci52ZnBPcChP
UF9WQUJTX1QyLCBPUF9WQUJTX1QyYiwgdHJ1ZSwgVkZQT3BlcmFuZCgxNiksIHJkLCBybSk7Cisg
ICAgfQorCisgICAgdm9pZCB2c3FydChGUERvdWJsZVJlZ2lzdGVySUQgcmQsIEZQRG91YmxlUmVn
aXN0ZXJJRCBybSkKKyAgICB7CisgICAgICAgIG1fZm9ybWF0dGVyLnZmcE9wKE9QX1ZTUVJUX1Qx
LCBPUF9WU1FSVF9UMWIsIHRydWUsIFZGUE9wZXJhbmQoMTcpLCByZCwgcm0pOworICAgIH0KKwog
ICAgIHZvaWQgbm9wKCkKICAgICB7CiAgICAgICAgIG1fZm9ybWF0dGVyLm9uZVdvcmRPcDhJbW04
KE9QX05PUF9UMSwgMCk7CkBAIC0xODA2LDYgKzE5MjEsMTAgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4ocmVhZEludDMyKHdoZXJlKSk7CiAgICAgfQog
CisjaWZuZGVmIE5ERUJVRworICAgIHVuc2lnbmVkIGRlYnVnT2Zmc2V0KCkgeyByZXR1cm4gbV9m
b3JtYXR0ZXIuZGVidWdPZmZzZXQoKTsgfQorI2VuZGlmCisKIHByaXZhdGU6CiAgICAgLy8gVkZQ
IG9wZXJhdGlvbnMgY29tbW9ubHkgdGFrZSBvbmUgb3IgbW9yZSA1LWJpdCBvcGVyYW5kcywgdHlw
aWNhbGx5IHJlcHJlc2VudGluZyBhCiAgICAgLy8gZmxvYXRpbmcgcG9pbnQgcmVnaXN0ZXIgbnVt
YmVyLiAgVGhpcyB3aWxsIGNvbW1vbmx5IGJlIGVuY29kZWQgaW4gdGhlIGluc3RydWN0aW9uCkBA
IC0xODY1LDYgKzE5ODQsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgaWYgKGlzUm91bmRaZXJv
KQogICAgICAgICAgICAgICAgIG9wIHw9IDB4MTA7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICBBU1NFUlQoIWlzUm91bmRaZXJvKTsKICAgICAgICAgICAgIC8vICdvcCcgZmllbGQgaW4g
aW5zdHJ1Y3Rpb24gaXMgaXNVbnNpZ25lZAogICAgICAgICAgICAgaWYgKCFpc1Vuc2lnbmVkKQog
ICAgICAgICAgICAgICAgIG9wIHw9IDB4MTA7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAkocmV2aXNpb24gOTk3
ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAkod29ya2luZyBjb3B5KQpAQCAtMjExLDQwICsyMTEsNjAgQEAgcHVibGljOgogICAgICAg
ICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIGFkZHJlc3MubV9wdHIpOwogICAgIH0KIAotICAg
IHZvaWQgYW5kMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGFu
ZDMyKFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQogICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIuQVJNX2FuZChkZXN0LCBkZXN0LCBzcmMpOworICAgICAg
ICBtX2Fzc2VtYmxlci5BUk1fYW5kKGRlc3QsIG9wMSwgb3AyKTsKICAgICB9CiAKLSAgICB2b2lk
IGFuZDMyKFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIGFuZDMy
KFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewogICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6
bWFrZUVuY29kZWRJbW0oaW1tLm1fdmFsdWUpOwogICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQo
KSkKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLkFSTV9hbmQoZGVzdCwgZGVzdCwgYXJtSW1tKTsK
KyAgICAgICAgICAgIG1fYXNzZW1ibGVyLkFSTV9hbmQoZGVzdCwgc3JjLCBhcm1JbW0pOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIG1vdmUoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAg
ICAgICAgICAgIG1fYXNzZW1ibGVyLkFSTV9hbmQoZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rl
cik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5BUk1fYW5kKGRlc3QsIHNyYywgZGF0YVRlbXBS
ZWdpc3Rlcik7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGFuZDMyKFJlZ2lzdGVySUQg
c3JjLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBhbmQzMihkZXN0LCBzcmMsIGRl
c3QpOworICAgIH0KKworICAgIHZvaWQgYW5kMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJ
RCBkZXN0KQorICAgIHsKKyAgICAgICAgYW5kMzIoaW1tLCBkZXN0LCBkZXN0KTsKKyAgICB9CisK
ICAgICB2b2lkIGNvdW50TGVhZGluZ1plcm9zMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKICAgICB7CiAgICAgICAgIG1fYXNzZW1ibGVyLmNseihkZXN0LCBzcmMpOwogICAgIH0K
IAotICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdF9hbW91bnQsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB2b2lkIGxzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0
X2Ftb3VudCwgUmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgLy8gQ2xhbXAgdGhlIHNo
aWZ0IHRvIHRoZSByYW5nZSAwLi4zMQogICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0g
PSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oMHgxZik7CiAgICAgICAgIEFTU0VS
VChhcm1JbW0uaXNWYWxpZCgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIuQVJNX2FuZChkYXRhVGVt
cFJlZ2lzdGVyLCBzaGlmdF9hbW91bnQsIGFybUltbSk7CiAKLSAgICAgICAgbV9hc3NlbWJsZXIu
bHNsKGRlc3QsIGRlc3QsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxlci5s
c2woZGVzdCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICB9CisKKyAgICB2b2lkIGxzaGlm
dDMyKFJlZ2lzdGVySUQgc3JjLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgeworICAgICAgICBtX2Fzc2VtYmxlci5sc2woZGVzdCwgc3JjLCBpbW0ubV92YWx1ZSAmIDB4
MWYpOworICAgIH0KKworICAgIHZvaWQgbHNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdF9hbW91bnQs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIGxzaGlmdDMyKGRlc3QsIHNoaWZ0X2Ft
b3VudCwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCBsc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1t
LCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5sc2woZGVzdCwg
ZGVzdCwgaW1tLm1fdmFsdWUgJiAweDFmKTsKKyAgICAgICAgbHNoaWZ0MzIoZGVzdCwgaW1tLCBk
ZXN0KTsKICAgICB9CiAKICAgICB2b2lkIG11bDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCkBAIC0yNzUsMTMgKzI5NSw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgb3IzMihUcnVz
dGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBBUk1UaHVtYklt
bWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0oaW1tLm1f
dmFsdWUpOwotICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIG1fYXNz
ZW1ibGVyLm9ycihkZXN0LCBkZXN0LCBhcm1JbW0pOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIG1vdmUoaW1tLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVy
Lm9ycihkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgfQorICAgICAgICBv
cjMyKGltbSwgZGVzdCwgZGVzdCk7CiAgICAgfQogCiAgICAgdm9pZCBvcjMyKFJlZ2lzdGVySUQg
b3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQpAQCAtMjg5LDM5ICszMDMsNjUg
QEAgcHVibGljOgogICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGVzdCwgb3AxLCBvcDIpOwogICAg
IH0KIAotICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzaGlmdF9hbW91bnQsIFJlZ2lzdGVy
SUQgZGVzdCkKKyAgICB2b2lkIG9yMzIoVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBzcmMs
IFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUlt
bSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0ubV92YWx1ZSk7CisgICAg
ICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQorICAgICAgICAgICAgbV9hc3NlbWJsZXIub3JyKGRl
c3QsIHNyYywgYXJtSW1tKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb3ZlKGltbSwg
ZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxlci5vcnIoZGVzdCwgc3Jj
LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcnNoaWZ0
MzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgc2hpZnRfYW1vdW50LCBSZWdpc3RlcklEIGRl
c3QpCiAgICAgewogICAgICAgICAvLyBDbGFtcCB0aGUgc2hpZnQgdG8gdGhlIHJhbmdlIDAuLjMx
CiAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjpt
YWtlRW5jb2RlZEltbSgweDFmKTsKICAgICAgICAgQVNTRVJUKGFybUltbS5pc1ZhbGlkKCkpOwog
ICAgICAgICBtX2Fzc2VtYmxlci5BUk1fYW5kKGRhdGFUZW1wUmVnaXN0ZXIsIHNoaWZ0X2Ftb3Vu
dCwgYXJtSW1tKTsKIAotICAgICAgICBtX2Fzc2VtYmxlci5hc3IoZGVzdCwgZGVzdCwgZGF0YVRl
bXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmFzcihkZXN0LCBzcmMsIGRhdGFUZW1w
UmVnaXN0ZXIpOwogICAgIH0KIAotICAgIHZvaWQgcnNoaWZ0MzIoVHJ1c3RlZEltbTMyIGltbSwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgcnNoaWZ0MzIoUmVnaXN0ZXJJRCBzcmMsIFRydXN0
ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIHJzaGlmdDMyKGRl
c3QsIGltbSwgZGVzdCk7CisgICAgICAgIG1fYXNzZW1ibGVyLmFzcihkZXN0LCBzcmMsIGltbS5t
X3ZhbHVlICYgMHgxZik7CiAgICAgfQogCi0gICAgdm9pZCByc2hpZnQzMihSZWdpc3RlcklEIHNy
YywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgcnNoaWZ0MzIo
UmVnaXN0ZXJJRCBzaGlmdF9hbW91bnQsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAg
IG1fYXNzZW1ibGVyLmFzcihkZXN0LCBzcmMsIGltbS5tX3ZhbHVlICYgMHgxZik7CisgICAgICAg
IHJzaGlmdDMyKGRlc3QsIHNoaWZ0X2Ftb3VudCwgZGVzdCk7CiAgICAgfQogICAgIAotICAgIHZv
aWQgdXJzaGlmdDMyKFJlZ2lzdGVySUQgc2hpZnRfYW1vdW50LCBSZWdpc3RlcklEIGRlc3QpCisg
ICAgdm9pZCByc2hpZnQzMihUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICByc2hpZnQzMihkZXN0LCBpbW0sIGRlc3QpOworICAgIH0KKworICAgIHZvaWQg
dXJzaGlmdDMyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIHNoaWZ0X2Ftb3VudCwgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKICAgICAgICAgLy8gQ2xhbXAgdGhlIHNoaWZ0IHRvIHRoZSByYW5n
ZSAwLi4zMQogICAgICAgICBBUk1UaHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVk
aWF0ZTo6bWFrZUVuY29kZWRJbW0oMHgxZik7CiAgICAgICAgIEFTU0VSVChhcm1JbW0uaXNWYWxp
ZCgpKTsKICAgICAgICAgbV9hc3NlbWJsZXIuQVJNX2FuZChkYXRhVGVtcFJlZ2lzdGVyLCBzaGlm
dF9hbW91bnQsIGFybUltbSk7CiAgICAgICAgIAotICAgICAgICBtX2Fzc2VtYmxlci5sc3IoZGVz
dCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1fYXNzZW1ibGVyLmxzcihkZXN0
LCBzcmMsIGRhdGFUZW1wUmVnaXN0ZXIpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHVyc2hpZnQz
MihSZWdpc3RlcklEIHNyYywgVHJ1c3RlZEltbTMyIGltbSwgUmVnaXN0ZXJJRCBkZXN0KQorICAg
IHsKKyAgICAgICAgbV9hc3NlbWJsZXIubHNyKGRlc3QsIHNyYywgaW1tLm1fdmFsdWUgJiAweDFm
KTsKKyAgICB9CisKKyAgICB2b2lkIHVyc2hpZnQzMihSZWdpc3RlcklEIHNoaWZ0X2Ftb3VudCwg
UmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAgICAgICAgdXJzaGlmdDMyKGRlc3QsIHNoaWZ0X2Ft
b3VudCwgZGVzdCk7CiAgICAgfQogICAgIAogICAgIHZvaWQgdXJzaGlmdDMyKFRydXN0ZWRJbW0z
MiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmxzcihk
ZXN0LCBkZXN0LCBpbW0ubV92YWx1ZSAmIDB4MWYpOworICAgICAgICB1cnNoaWZ0MzIoZGVzdCwg
aW1tLCBkZXN0KTsKICAgICB9CiAKICAgICB2b2lkIHN1YjMyKFJlZ2lzdGVySUQgc3JjLCBSZWdp
c3RlcklEIGRlc3QpCkBAIC0zODAsMjEgKzQyMCwzMSBAQCBwdWJsaWM6CiAgICAgICAgIHN0b3Jl
MzIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzcy5tX3B0cik7CiAgICAgfQogCi0gICAgdm9pZCB4
b3IzMihSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIHZvaWQgeG9yMzIoUmVn
aXN0ZXJJRCBvcDEsIFJlZ2lzdGVySUQgb3AyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAg
ICAgICBtX2Fzc2VtYmxlci5lb3IoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJs
ZXIuZW9yKGRlc3QsIG9wMSwgb3AyKTsKICAgICB9CiAKLSAgICB2b2lkIHhvcjMyKFRydXN0ZWRJ
bW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB2b2lkIHhvcjMyKFRydXN0ZWRJbW0zMiBp
bW0sIFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBBUk1U
aHVtYkltbWVkaWF0ZSBhcm1JbW0gPSBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZUVuY29kZWRJbW0o
aW1tLm1fdmFsdWUpOwogICAgICAgICBpZiAoYXJtSW1tLmlzVmFsaWQoKSkKLSAgICAgICAgICAg
IG1fYXNzZW1ibGVyLmVvcihkZXN0LCBkZXN0LCBhcm1JbW0pOworICAgICAgICAgICAgbV9hc3Nl
bWJsZXIuZW9yKGRlc3QsIHNyYywgYXJtSW1tKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5l
b3IoZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtX2Fzc2VtYmxl
ci5lb3IoZGVzdCwgc3JjLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgfQogICAgIH0KKwor
ICAgIHZvaWQgeG9yMzIoUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIHhvcjMyKGRlc3QsIHNyYywgZGVzdCk7CisgICAgfQorCisgICAgdm9pZCB4b3IzMihU
cnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICB4b3IzMihp
bW0sIGRlc3QsIGRlc3QpOworICAgIH0KICAgICAKIAogICAgIC8vIE1lbW9yeSBhY2Nlc3Mgb3Bl
cmF0aW9uczoKQEAgLTQ2MSw2ICs1MTEsMjAgQEAgcHJpdmF0ZToKICAgICAgICAgfQogICAgIH0K
IAorICAgIHZvaWQgc3RvcmU4KFJlZ2lzdGVySUQgc3JjLCBBcm1BZGRyZXNzIGFkZHJlc3MpCisg
ICAgeworICAgICAgICBpZiAoYWRkcmVzcy50eXBlID09IEFybUFkZHJlc3M6Okhhc0luZGV4KQor
ICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy51
LmluZGV4LCBhZGRyZXNzLnUuc2NhbGUpOworICAgICAgICBlbHNlIGlmIChhZGRyZXNzLnUub2Zm
c2V0ID49IDApIHsKKyAgICAgICAgICAgIEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRo
dW1iSW1tZWRpYXRlOjptYWtlVUludDEyKGFkZHJlc3MudS5vZmZzZXQpOworICAgICAgICAgICAg
QVNTRVJUKGFybUltbS5pc1ZhbGlkKCkpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuc3RyYihz
cmMsIGFkZHJlc3MuYmFzZSwgYXJtSW1tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
IEFTU0VSVChhZGRyZXNzLnUub2Zmc2V0ID49IC0yNTUpOworICAgICAgICAgICAgbV9hc3NlbWJs
ZXIuc3RyYihzcmMsIGFkZHJlc3MuYmFzZSwgYWRkcmVzcy51Lm9mZnNldCwgdHJ1ZSwgZmFsc2Up
OworICAgICAgICB9CisgICAgfQorCiBwdWJsaWM6CiAgICAgdm9pZCBsb2FkMzIoSW1wbGljaXRB
ZGRyZXNzIGFkZHJlc3MsIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CkBAIC01MDAsMTMgKzU2NCwy
NiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBsYWJlbDsKICAgICB9CiAgICAgCisgICAgLy8g
RklYTUU6IHdlIHNob3VsZCBiZSBhYmxlIHRvIHBsYW50IGEgY29tcGFjdCBsb2FkIHJlbGF0aXZl
IHRvL2Zyb20gYW55IGJhc2UvZGVzdCByZWdpc3Rlci4KICAgICBEYXRhTGFiZWxDb21wYWN0IGxv
YWQzMldpdGhDb21wYWN0QWRkcmVzc09mZnNldFBhdGNoKEFkZHJlc3MgYWRkcmVzcywgUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKKyAgICAgICAgUmVnaXN0ZXJJRCBiYXNlID0gYWRkcmVzcy5iYXNl
OworICAgICAgICAKKyAgICAgICAgaWYgKGJhc2UgPj0gQVJNUmVnaXN0ZXJzOjpyOCkgeworICAg
ICAgICAgICAgbW92ZShiYXNlLCBhZGRyZXNzVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIGJh
c2UgPSBhZGRyZXNzVGVtcFJlZ2lzdGVyOworICAgICAgICB9CisKICAgICAgICAgRGF0YUxhYmVs
Q29tcGFjdCBsYWJlbCh0aGlzKTsKICAgICAgICAgQVNTRVJUKGFkZHJlc3Mub2Zmc2V0ID49IDAp
OwogICAgICAgICBBU1NFUlQoYWRkcmVzcy5vZmZzZXQgPD0gTWF4aW11bUNvbXBhY3RQdHJBbGln
bmVkQWRkcmVzc09mZnNldCk7CiAgICAgICAgIEFTU0VSVChBUk1UaHVtYkltbWVkaWF0ZTo6bWFr
ZVVJbnQxMihhZGRyZXNzLm9mZnNldCkuaXNVSW50NygpKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
bGRyQ29tcGFjdChkZXN0LCBhZGRyZXNzLmJhc2UsIEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUlu
dDEyKGFkZHJlc3Mub2Zmc2V0KSk7CisKKyAgICAgICAgaWYgKGRlc3QgPj0gQVJNUmVnaXN0ZXJz
OjpyOCkgeworICAgICAgICAgICAgbV9hc3NlbWJsZXIubGRyQ29tcGFjdChhZGRyZXNzVGVtcFJl
Z2lzdGVyLCBiYXNlLCBBUk1UaHVtYkltbWVkaWF0ZTo6bWFrZVVJbnQxMihhZGRyZXNzLm9mZnNl
dCkpOworICAgICAgICAgICAgbW92ZShhZGRyZXNzVGVtcFJlZ2lzdGVyLCBkZXN0KTsKKyAgICAg
ICAgfSBlbHNlCisgICAgICAgICAgICBtX2Fzc2VtYmxlci5sZHJDb21wYWN0KGRlc3QsIGJhc2Us
IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlVUludDEyKGFkZHJlc3Mub2Zmc2V0KSk7CiAgICAgICAg
IHJldHVybiBsYWJlbDsKICAgICB9CiAKQEAgLTU0OSw2ICs2MjYsMTIgQEAgcHVibGljOgogICAg
ICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7
CiAgICAgfQogCisgICAgdm9pZCBzdG9yZTMyKFRydXN0ZWRJbW0zMiBpbW0sIEJhc2VJbmRleCBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShpbW0sIGRhdGFUZW1wUmVnaXN0ZXIpOworICAg
ICAgICBzdG9yZTMyKGRhdGFUZW1wUmVnaXN0ZXIsIHNldHVwQXJtQWRkcmVzcyhhZGRyZXNzKSk7
CisgICAgfQorCiAgICAgdm9pZCBzdG9yZTMyKFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQogICAgIHsKICAgICAgICAgbW92ZShUcnVzdGVkSW1tUHRyKGFkZHJlc3MpLCBhZGRy
ZXNzVGVtcFJlZ2lzdGVyKTsKQEAgLTU2MSwyOCArNjQ0LDE4IEBAIHB1YmxpYzoKICAgICAgICAg
c3RvcmUzMihkYXRhVGVtcFJlZ2lzdGVyLCBhZGRyZXNzKTsKICAgICB9CiAKKyAgICB2b2lkIHN0
b3JlOChSZWdpc3RlcklEIHNyYywgQmFzZUluZGV4IGFkZHJlc3MpCisgICAgeworICAgICAgICBz
dG9yZTgoc3JjLCBzZXR1cEFybUFkZHJlc3MoYWRkcmVzcykpOworICAgIH0KKwogCiAgICAgLy8g
RmxvYXRpbmctcG9pbnQgb3BlcmF0aW9uczoKIAogICAgIHN0YXRpYyBib29sIHN1cHBvcnRzRmxv
YXRpbmdQb2ludCgpIHsgcmV0dXJuIHRydWU7IH0KLSAgICAvLyBPbiB4ODYoXzY0KSB0aGUgTWFj
cm9Bc3NlbWJsZXIgcHJvdmlkZXMgYW4gaW50ZXJmYWNlIHRvIHRydW5jYXRlIGEgZG91YmxlIHRv
IGFuIGludGVnZXIuCi0gICAgLy8gSWYgYSB2YWx1ZSBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBh
biBpbnRlZ2VyLCBhbmQgcG9zc2libHkgZm9yIHNvbWUgdmFsdWVzIHRoYXQgYXJlLAotICAgIC8v
IChvbiB4ODYgSU5UX01JTiwgc2luY2UgdGhpcyBpcyBpbmRpc3Rpbmd1aXNoYWJsZSBmcm9tIHJl
c3VsdHMgZm9yIG91dC1vZi1yYW5nZS9OYU4gaW5wdXQpCi0gICAgLy8gYSBicmFuY2ggd2lsbCAg
YmUgdGFrZW4uICBJdCBpcyBub3QgY2xlYXIgd2hldGhlciB0aGlzIGludGVyZmFjZSB3aWxsIGJl
IHdlbGwgc3VpdGVkIHRvCi0gICAgLy8gb3RoZXIgcGxhdGZvcm1zLiAgT24gQVJNdjcgdGhlIGhh
cmR3YXJlIHRydW5jYXRpb24gb3BlcmF0aW9uIHByb2R1Y2VzIG11bHRpcGxlIHBvc3NpYmxlCi0g
ICAgLy8gZmFpbHVyZSB2YWx1ZXMgKHNhdHVyYXRlcyB0byBJTlRfTUlOICYgSU5UX01BWCwgTmFO
IHJldWxzdHMgaW4gYSB2YWx1ZSBvZiAwKS4gIFRoaXMgaXMgYQotICAgIC8vIHRlbXBvcmFyeSBz
b2x1dGlvbiB3aGlsZSB3ZSB3b3JrIG91dCB3aGF0IHRoaXMgaW50ZXJmYWNlIHNob3VsZCBiZS4g
IEVpdGhlciB3ZSBuZWVkIHRvCi0gICAgLy8gZGVjaWRlIHRvIG1ha2UgdGhpcyBpbnRlcmZhY2Ug
d29yayBvbiBhbGwgcGxhdGZvcm1zLCByZXdvcmsgdGhlIGludGVyZmFjZSB0byBtYWtlIGl0IG1v
cmUKLSAgICAvLyBnZW5lcmljLCBvciBkZWNpZGUgdGhhdCB0aGUgTWFjcm9Bc3NlbWJsZXIgY2Fu
bm90IHByYWN0aWNhbGx5IGJlIHVzZWQgdG8gYWJzdHJhY3RlZCB0aGVzZQotICAgIC8vIG9wZXJh
dGlvbnMsIGFuZCBtYWtlIGNsaWVudHMgZ28gZGlyZWN0bHkgdG8gdGhlIG1fYXNzZW1ibGVyIHRv
IHBsYW50IHRydW5jYXRpb24gaW5zdHJ1Y3Rpb25zLgotICAgIC8vIEluIHNob3J0LCBGSVhNRTou
Ci0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSB7IHJldHVy
biBmYWxzZTsgfQotCi0gICAgc3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgp
Ci0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHN0YXRpYyBib29sIHN1
cHBvcnRzRmxvYXRpbmdQb2ludEFicygpIHsgcmV0dXJuIGZhbHNlOyB9CisgICAgc3RhdGljIGJv
b2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50VHJ1bmNhdGUoKSB7IHJldHVybiB0cnVlOyB9CisgICAg
c3RhdGljIGJvb2wgc3VwcG9ydHNGbG9hdGluZ1BvaW50U3FydCgpIHsgcmV0dXJuIHRydWU7IH0K
KyAgICBzdGF0aWMgYm9vbCBzdXBwb3J0c0Zsb2F0aW5nUG9pbnRBYnMoKSB7IHJldHVybiB0cnVl
OyB9CiAKICAgICB2b2lkIGxvYWREb3VibGUoSW1wbGljaXRBZGRyZXNzIGFkZHJlc3MsIEZQUmVn
aXN0ZXJJRCBkZXN0KQogICAgIHsKQEAgLTU5OSw2ICs2NzIsMTIgQEAgcHVibGljOgogICAgICAg
ICBtX2Fzc2VtYmxlci52bGRyKGRlc3QsIGJhc2UsIG9mZnNldCk7CiAgICAgfQogCisgICAgdm9p
ZCBtb3ZlRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsK
KyAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQorICAgICAgICAgICAgbV9hc3NlbWJsZXIudm1vdihk
ZXN0LCBzcmMpOworICAgIH0KKwogICAgIHZvaWQgbG9hZERvdWJsZShjb25zdCB2b2lkKiBhZGRy
ZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0
cihhZGRyZXNzKSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CkBAIC02MjAsOSArNjk5LDE1IEBAIHB1
YmxpYzoKICAgICAgICAgbV9hc3NlbWJsZXIudnN0cihzcmMsIGJhc2UsIG9mZnNldCk7CiAgICAg
fQogCisgICAgdm9pZCBzdG9yZURvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBjb25zdCB2b2lkKiBh
ZGRyZXNzKQorICAgIHsKKyAgICAgICAgbW92ZShJbW1QdHIoYWRkcmVzcyksIGFkZHJlc3NUZW1w
UmVnaXN0ZXIpOworICAgICAgICBzdG9yZURvdWJsZShzcmMsIGFkZHJlc3NUZW1wUmVnaXN0ZXIp
OworICAgIH0KKwogICAgIHZvaWQgYWRkRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQUmVnaXN0
ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmFkZF9GNjQoZGVzdCwgZGVz
dCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudmFkZChkZXN0LCBkZXN0LCBzcmMpOwogICAg
IH0KIAogICAgIHZvaWQgYWRkRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkK
QEAgLTYzMSwxNCArNzE2LDMwIEBAIHB1YmxpYzoKICAgICAgICAgYWRkRG91YmxlKGZwVGVtcFJl
Z2lzdGVyLCBkZXN0KTsKICAgICB9CiAKKyAgICB2b2lkIGFkZERvdWJsZShGUFJlZ2lzdGVySUQg
b3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAg
IG1fYXNzZW1ibGVyLnZhZGQoZGVzdCwgb3AxLCBvcDIpOworICAgIH0KKworICAgIHZvaWQgYWRk
RG91YmxlKEFic29sdXRlQWRkcmVzcyBhZGRyZXNzLCBGUFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7
CisgICAgICAgIGxvYWREb3VibGUoYWRkcmVzcy5tX3B0ciwgZnBUZW1wUmVnaXN0ZXIpOworICAg
ICAgICBtX2Fzc2VtYmxlci52YWRkKGRlc3QsIGRlc3QsIGZwVGVtcFJlZ2lzdGVyKTsKKyAgICB9
CisKICAgICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVz
dCkKICAgICB7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZkaXZfRjY0KGRlc3QsIGRlc3QsIHNyYyk7
CisgICAgICAgIG1fYXNzZW1ibGVyLnZkaXYoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICB9CisKKyAg
ICB2b2lkIGRpdkRvdWJsZShGUFJlZ2lzdGVySUQgb3AxLCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJl
Z2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIG1fYXNzZW1ibGVyLnZkaXYoZGVzdCwgb3Ax
LCBvcDIpOwogICAgIH0KIAogICAgIHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0ZXJJRCBzcmMsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudnN1Yl9GNjQoZGVz
dCwgZGVzdCwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudnN1YihkZXN0LCBkZXN0LCBzcmMp
OwogICAgIH0KIAogICAgIHZvaWQgc3ViRG91YmxlKEFkZHJlc3Mgc3JjLCBGUFJlZ2lzdGVySUQg
ZGVzdCkKQEAgLTY0Nyw5ICs3NDgsMTQgQEAgcHVibGljOgogICAgICAgICBzdWJEb3VibGUoZnBU
ZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAgIH0KIAorICAgIHZvaWQgc3ViRG91YmxlKEZQUmVnaXN0
ZXJJRCBvcDEsIEZQUmVnaXN0ZXJJRCBvcDIsIEZQUmVnaXN0ZXJJRCBkZXN0KQorICAgIHsKKyAg
ICAgICAgbV9hc3NlbWJsZXIudnN1YihkZXN0LCBvcDEsIG9wMik7CisgICAgfQorCiAgICAgdm9p
ZCBtdWxEb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBSZWdpc3RlcklEIGRlc3QpCiAgICAgewot
ICAgICAgICBtX2Fzc2VtYmxlci52bXVsX0Y2NChkZXN0LCBkZXN0LCBzcmMpOworICAgICAgICBt
X2Fzc2VtYmxlci52bXVsKGRlc3QsIGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBtdWxE
b3VibGUoQWRkcmVzcyBzcmMsIEZQUmVnaXN0ZXJJRCBkZXN0KQpAQCAtNjU4LDIwICs3NjQsMjUg
QEAgcHVibGljOgogICAgICAgICBtdWxEb3VibGUoZnBUZW1wUmVnaXN0ZXIsIGRlc3QpOwogICAg
IH0KIAotICAgIHZvaWQgc3FydERvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVnaXN0ZXJJRCkgTk9f
UkVUVVJOX0RVRV9UT19BU1NFUlQKKyAgICB2b2lkIG11bERvdWJsZShGUFJlZ2lzdGVySUQgb3Ax
LCBGUFJlZ2lzdGVySUQgb3AyLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBtX2Fzc2VtYmxlci52bXVsKGRlc3QsIG9wMSwg
b3AyKTsKKyAgICB9CisKKyAgICB2b2lkIHNxcnREb3VibGUoRlBSZWdpc3RlcklEIHNyYywgRlBS
ZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICBtX2Fzc2VtYmxlci52c3FydChkZXN0LCBz
cmMpOwogICAgIH0KICAgICAKLSAgICB2b2lkIGFic0RvdWJsZShGUFJlZ2lzdGVySUQsIEZQUmVn
aXN0ZXJJRCkgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQKKyAgICB2b2lkIGFic0RvdWJsZShGUFJl
Z2lzdGVySUQgc3JjLCBGUFJlZ2lzdGVySUQgZGVzdCkKICAgICB7Ci0gICAgICAgIEFTU0VSVF9O
T1RfUkVBQ0hFRCgpOworICAgICAgICBtX2Fzc2VtYmxlci52YWJzKGRlc3QsIHNyYyk7CiAgICAg
fQogCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShSZWdpc3RlcklEIHNyYywgRlBSZWdp
c3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci52bW92KGZwVGVtcFJlZ2lz
dGVyQXNTaW5nbGUoKSwgc3JjKTsKLSAgICAgICAgbV9hc3NlbWJsZXIudmN2dF9GNjRfUzMyKGRl
c3QsIGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRf
c2lnbmVkVG9GbG9hdGluZ1BvaW50KGRlc3QsIGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSk7CiAg
ICAgfQogCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShBZGRyZXNzIGFkZHJlc3MsIEZQ
UmVnaXN0ZXJJRCBkZXN0KQpAQCAtNjc5LDcgKzc5MCw3IEBAIHB1YmxpYzoKICAgICAgICAgLy8g
Rml4bWU6IGxvYWQgZGlyZWN0bHkgaW50byB0aGUgZnByIQogICAgICAgICBsb2FkMzIoYWRkcmVz
cywgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtb3YoZnBUZW1wUmVn
aXN0ZXJBc1NpbmdsZSgpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKLSAgICAgICAgbV9hc3NlbWJsZXIu
dmN2dF9GNjRfUzMyKGRlc3QsIGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSk7CisgICAgICAgIG1f
YXNzZW1ibGVyLnZjdnRfc2lnbmVkVG9GbG9hdGluZ1BvaW50KGRlc3QsIGZwVGVtcFJlZ2lzdGVy
QXNTaW5nbGUoKSk7CiAgICAgfQogCiAgICAgdm9pZCBjb252ZXJ0SW50MzJUb0RvdWJsZShBYnNv
bHV0ZUFkZHJlc3MgYWRkcmVzcywgRlBSZWdpc3RlcklEIGRlc3QpCkBAIC02ODcsMTIgKzc5OCwx
MiBAQCBwdWJsaWM6CiAgICAgICAgIC8vIEZpeG1lOiBsb2FkIGRpcmVjdGx5IGludG8gdGhlIGZw
ciEKICAgICAgICAgbG9hZDMyKGFkZHJlc3MubV9wdHIsIGRhdGFUZW1wUmVnaXN0ZXIpOwogICAg
ICAgICBtX2Fzc2VtYmxlci52bW92KGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSwgZGF0YVRlbXBS
ZWdpc3Rlcik7Ci0gICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfRjY0X1MzMihkZXN0LCBmcFRlbXBS
ZWdpc3RlckFzU2luZ2xlKCkpOworICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X3NpZ25lZFRvRmxv
YXRpbmdQb2ludChkZXN0LCBmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCkpOwogICAgIH0KIAogICAg
IEp1bXAgYnJhbmNoRG91YmxlKERvdWJsZUNvbmRpdGlvbiBjb25kLCBGUFJlZ2lzdGVySUQgbGVm
dCwgRlBSZWdpc3RlcklEIHJpZ2h0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmNtcF9G
NjQobGVmdCwgcmlnaHQpOworICAgICAgICBtX2Fzc2VtYmxlci52Y21wKGxlZnQsIHJpZ2h0KTsK
ICAgICAgICAgbV9hc3NlbWJsZXIudm1ycygpOwogCiAgICAgICAgIGlmIChjb25kID09IERvdWJs
ZU5vdEVxdWFsKSB7CkBAIC03MTQsMjMgKzgyNSw0OSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVy
biBtYWtlQnJhbmNoKGNvbmQpOwogICAgIH0KIAotICAgIEp1bXAgYnJhbmNoVHJ1bmNhdGVEb3Vi
bGVUb0ludDMyKEZQUmVnaXN0ZXJJRCwgUmVnaXN0ZXJJRCkKKyAgICBlbnVtIEJyYW5jaFRydW5j
YXRlVHlwZSB7IEJyYW5jaElmVHJ1bmNhdGVGYWlsZWQsIEJyYW5jaElmVHJ1bmNhdGVTdWNjZXNz
ZnVsIH07CisgICAgSnVtcCBicmFuY2hUcnVuY2F0ZURvdWJsZVRvSW50MzIoRlBSZWdpc3RlcklE
IHNyYywgUmVnaXN0ZXJJRCBkZXN0LCBCcmFuY2hUcnVuY2F0ZVR5cGUgYnJhbmNoVHlwZSA9IEJy
YW5jaElmVHJ1bmNhdGVGYWlsZWQpCiAgICAgewotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKLSAgICAgICAgcmV0dXJuIGp1bXAoKTsKKyAgICAgICAgLy8gQ29udmVydCBpbnRvIGRlc3Qu
CisgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZmxvYXRpbmdQb2ludFRvU2lnbmVkKGZwVGVtcFJl
Z2lzdGVyQXNTaW5nbGUoKSwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBm
cFRlbXBSZWdpc3RlckFzU2luZ2xlKCkpOworCisgICAgICAgIC8vIENhbGN1bGF0ZSAyeCBkZXN0
LiAgSWYgdGhlIHZhbHVlIHBvdGVudGlhbGx5IHVuZGVyZmxvd2VkLCBpdCB3aWxsIGhhdmUKKyAg
ICAgICAgLy8gY2xhbXBlZCB0byAweDgwMDAwMDAwLCBzbyAyeCBkZXN0IGlzIHplcm8gaW4gdGhp
cyBjYXNlLiBJbiB0aGUgY2FzZSBvZgorICAgICAgICAvLyBvdmVyZmxvdyB0aGUgcmVzdWx0IHdp
bGwgYmUgZXF1YWwgdG8gLTIuCisgICAgICAgIEp1bXAgdW5kZXJmbG93ID0gYnJhbmNoQWRkMzIo
WmVybywgZGVzdCwgZGVzdCwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIEp1bXAgbm9PdmVy
ZmxvdyA9IGJyYW5jaDMyKE5vdEVxdWFsLCBkYXRhVGVtcFJlZ2lzdGVyLCBJbW0zMigtMikpOwor
CisgICAgICAgIC8vIEZvciBCcmFuY2hJZlRydW5jYXRlU3VjY2Vzc2Z1bCwgd2UgYnJhbmNoIGlm
ICdub092ZXJmbG93JyBqdW1wcy4KKyAgICAgICAgdW5kZXJmbG93LmxpbmsodGhpcyk7CisgICAg
ICAgIGlmIChicmFuY2hUeXBlID09IEJyYW5jaElmVHJ1bmNhdGVTdWNjZXNzZnVsKQorICAgICAg
ICAgICAgcmV0dXJuIG5vT3ZlcmZsb3c7CisKKyAgICAgICAgLy8gV2UnbGwgcmVhY2ggdGhlIGN1
cnJlbnQgcG9pbnQgaW4gdGhlIGNvZGUgb24gZmFpbHVyZSwgc28gcGxhbnQgYQorICAgICAgICAv
LyBqdW1wIGhlcmUgJiBsaW5rIHRoZSBzdWNjZXNzIGNhc2UuCisgICAgICAgIEp1bXAgZmFpbHVy
ZSA9IGp1bXAoKTsKKyAgICAgICAgbm9PdmVyZmxvdy5saW5rKHRoaXMpOworICAgICAgICByZXR1
cm4gZmFpbHVyZTsKICAgICB9CiAKKyAgICAvLyBSZXN1bHQgaXMgdW5kZWZpbmVkIGlmIHRoZSB2
YWx1ZSBpcyBvdXRzaWRlIG9mIHRoZSBpbnRlZ2VyIHJhbmdlLgorICAgIHZvaWQgdHJ1bmNhdGVE
b3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7Cisg
ICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZmxvYXRpbmdQb2ludFRvU2lnbmVkKGZwVGVtcFJlZ2lz
dGVyQXNTaW5nbGUoKSwgc3JjKTsKKyAgICAgICAgbV9hc3NlbWJsZXIudm1vdihkZXN0LCBmcFRl
bXBSZWdpc3RlckFzU2luZ2xlKCkpOworICAgIH0KKyAgICAKICAgICAvLyBDb252ZXJ0ICdzcmMn
IHRvIGFuIGludGVnZXIsIGFuZCBwbGFjZXMgdGhlIHJlc3VsdGluZyAnZGVzdCcuCiAgICAgLy8g
SWYgdGhlIHJlc3VsdCBpcyBub3QgcmVwcmVzZW50YWJsZSBhcyBhIDMyIGJpdCB2YWx1ZSwgYnJh
bmNoLgogICAgIC8vIE1heSBhbHNvIGJyYW5jaCBmb3Igc29tZSB2YWx1ZXMgdGhhdCBhcmUgcmVw
cmVzZW50YWJsZSBpbiAzMiBiaXRzCiAgICAgLy8gKHNwZWNpZmljYWxseSwgaW4gdGhpcyBjYXNl
LCAwKS4KICAgICB2b2lkIGJyYW5jaENvbnZlcnREb3VibGVUb0ludDMyKEZQUmVnaXN0ZXJJRCBz
cmMsIFJlZ2lzdGVySUQgZGVzdCwgSnVtcExpc3QmIGZhaWx1cmVDYXNlcywgRlBSZWdpc3RlcklE
KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmN2dHJfUzMyX0Y2NChmcFRlbXBSZWdpc3Rl
ckFzU2luZ2xlKCksIHNyYyk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfZmxvYXRpbmdQb2lu
dFRvU2lnbmVkKGZwVGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSwgc3JjKTsKICAgICAgICAgbV9hc3Nl
bWJsZXIudm1vdihkZXN0LCBmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCkpOwogCiAgICAgICAgIC8v
IENvbnZlcnQgdGhlIGludGVnZXIgcmVzdWx0IGJhY2sgdG8gZmxvYXQgJiBjb21wYXJlIHRvIHRo
ZSBvcmlnaW5hbCB2YWx1ZSAtIGlmIG5vdCBlcXVhbCBvciB1bm9yZGVyZWQgKE5hTikgdGhlbiBq
dW1wLgotICAgICAgICBtX2Fzc2VtYmxlci52Y3Z0X0Y2NF9TMzIoZnBUZW1wUmVnaXN0ZXIsIGZw
VGVtcFJlZ2lzdGVyQXNTaW5nbGUoKSk7CisgICAgICAgIG1fYXNzZW1ibGVyLnZjdnRfc2lnbmVk
VG9GbG9hdGluZ1BvaW50KGZwVGVtcFJlZ2lzdGVyLCBmcFRlbXBSZWdpc3RlckFzU2luZ2xlKCkp
OwogICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKGJyYW5jaERvdWJsZShEb3VibGVOb3RFcXVh
bE9yVW5vcmRlcmVkLCBzcmMsIGZwVGVtcFJlZ2lzdGVyKSk7CiAKICAgICAgICAgLy8gSWYgdGhl
IHJlc3VsdCBpcyB6ZXJvLCBpdCBtaWdodCBoYXZlIGJlZW4gLTAuMCwgYW5kIHRoZSBkb3VibGUg
Y29tcGFyaXNvbiB3b24ndCBjYXRjaCB0aGlzIQpAQCAtNzM5LDcgKzg3Niw3IEBAIHB1YmxpYzoK
IAogICAgIEp1bXAgYnJhbmNoRG91YmxlTm9uWmVybyhGUFJlZ2lzdGVySUQgcmVnLCBGUFJlZ2lz
dGVySUQpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci52Y21wel9GNjQocmVnKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIudmNtcHoocmVnKTsKICAgICAgICAgbV9hc3NlbWJsZXIudm1ycygpOwog
ICAgICAgICBKdW1wIHVub3JkZXJlZCA9IG1ha2VCcmFuY2goQVJNdjdBc3NlbWJsZXI6OkNvbmRp
dGlvblZTKTsKICAgICAgICAgSnVtcCByZXN1bHQgPSBtYWtlQnJhbmNoKEFSTXY3QXNzZW1ibGVy
OjpDb25kaXRpb25ORSk7CkBAIC03NDksNyArODg2LDcgQEAgcHVibGljOgogCiAgICAgSnVtcCBi
cmFuY2hEb3VibGVaZXJvT3JOYU4oRlBSZWdpc3RlcklEIHJlZywgRlBSZWdpc3RlcklEKQogICAg
IHsKLSAgICAgICAgbV9hc3NlbWJsZXIudmNtcHpfRjY0KHJlZyk7CisgICAgICAgIG1fYXNzZW1i
bGVyLnZjbXB6KHJlZyk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnZtcnMoKTsKICAgICAgICAgSnVt
cCB1bm9yZGVyZWQgPSBtYWtlQnJhbmNoKEFSTXY3QXNzZW1ibGVyOjpDb25kaXRpb25WUyk7CiAg
ICAgICAgIEp1bXAgbm90RXF1YWwgPSBtYWtlQnJhbmNoKEFSTXY3QXNzZW1ibGVyOjpDb25kaXRp
b25ORSk7CkBAIC04MTksNyArOTU2LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBtb3ZlKFJlZ2lz
dGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5t
b3YoZGVzdCwgc3JjKTsKKyAgICAgICAgaWYgKHNyYyAhPSBkZXN0KQorICAgICAgICAgICAgbV9h
c3NlbWJsZXIubW92KGRlc3QsIHNyYyk7CiAgICAgfQogCiAgICAgdm9pZCBtb3ZlKFRydXN0ZWRJ
bW1QdHIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCkBAIC04MzYsMTQgKzk3NCwxOCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIHNpZ25FeHRlbmQzMlRvUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklE
IGRlc3QpCiAgICAgewotICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtb3Zl
KHNyYywgZGVzdCk7CisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKICAgICB9CiAKICAgICB2b2lk
IHplcm9FeHRlbmQzMlRvUHRyKFJlZ2lzdGVySUQgc3JjLCBSZWdpc3RlcklEIGRlc3QpCiAgICAg
ewotICAgICAgICBpZiAoc3JjICE9IGRlc3QpCi0gICAgICAgICAgICBtb3ZlKHNyYywgZGVzdCk7
CisgICAgICAgIG1vdmUoc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICAvLyBJbnZlcnQgYSByZWxh
dGlvbmFsIGNvbmRpdGlvbiwgZS5nLiA9PSBiZWNvbWVzICE9LCA8IGJlY29tZXMgPj0sIGV0Yy4K
KyAgICBzdGF0aWMgUmVsYXRpb25hbENvbmRpdGlvbiBpbnZlcnQoUmVsYXRpb25hbENvbmRpdGlv
biBjb25kKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFJlbGF0aW9uYWxDb25k
aXRpb24+KGNvbmQgXiAxKTsKICAgICB9CiAKICAgICB2b2lkIG5vcCgpCkBAIC0xMDE3LDcgKzEx
NTksNyBAQCBwdWJsaWM6CiAgICAgewogICAgICAgICAvLyB1c2UgYWRkcmVzc1RlbXBSZWdpc3Rl
ciBpbmNhc2UgdGhlIGJyYW5jaFRlc3Q4IHdlIGNhbGwgdXNlcyBkYXRhVGVtcFJlZ2lzdGVyLiA6
LS8KICAgICAgICAgbG9hZDgoYWRkcmVzcywgYWRkcmVzc1RlbXBSZWdpc3Rlcik7Ci0gICAgICAg
IHJldHVybiBicmFuY2hUZXN0OChjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNrKTsKKyAg
ICAgICAgcmV0dXJuIGJyYW5jaFRlc3QzMihjb25kLCBhZGRyZXNzVGVtcFJlZ2lzdGVyLCBtYXNr
KTsKICAgICB9CiAKICAgICB2b2lkIGp1bXAoUmVnaXN0ZXJJRCB0YXJnZXQpCkBAIC0xMDM0LDcg
KzExNzYsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAgdm9pZCBqdW1wKEFic29sdXRlQWRkcmVzcyBh
ZGRyZXNzKQogICAgIHsKLSAgICAgICAgbW92ZShUcnVzdGVkZEltbVB0cihhZGRyZXNzLm1fcHRy
KSwgZGF0YVRlbXBSZWdpc3Rlcik7CisgICAgICAgIG1vdmUoVHJ1c3RlZEltbVB0cihhZGRyZXNz
Lm1fcHRyKSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIGxvYWQzMihBZGRyZXNzKGRhdGFU
ZW1wUmVnaXN0ZXIpLCBkYXRhVGVtcFJlZ2lzdGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIuYngo
ZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgfQpAQCAtMTA1MCwyNCArMTE5Miw2MCBAQCBwdWJsaWM6
CiAgICAgLy8gKiBqbyBvcGVyYXRpb25zIGJyYW5jaCBpZiB0aGUgKHNpZ25lZCkgYXJpdGhtZXRp
YwogICAgIC8vICAgb3BlcmF0aW9uIGNhdXNlZCBhbiBvdmVyZmxvdyB0byBvY2N1ci4KICAgICAK
LSAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdpc3RlcklEIHNy
YywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9u
IGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJRCBkZXN0KQog
ICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuYWRkX1MoZGVzdCwgZGVzdCwgc3JjKTsKKyAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkX1MoZGVzdCwgb3AxLCBvcDIpOwogICAgICAgICByZXR1cm4gSnVt
cChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaEFkZDMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
SnVtcCBicmFuY2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBvcDEsIFRy
dXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAgIEFSTVRodW1i
SW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2RlZEltbShpbW0u
bV92YWx1ZSk7CiAgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQotICAgICAgICAgICAgbV9h
c3NlbWJsZXIuYWRkX1MoZGVzdCwgZGVzdCwgYXJtSW1tKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZF9TKGRlc3QsIG9wMSwgYXJtSW1tKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5h
ZGRfUyhkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZF9TKGRlc3QsIG9wMSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAgIH0KICAgICAg
ICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CiAgICAgfQogCisgICAgSnVtcCBicmFu
Y2hBZGQzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJRCBzcmMsIFJlZ2lzdGVySUQg
ZGVzdCkKKyAgICB7CisgICAgICAgIHJldHVybiBicmFuY2hBZGQzMihjb25kLCBkZXN0LCBzcmMs
IGRlc3QpOworICAgIH0KKworICAgIEp1bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNv
bmQsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiBicmFuY2hBZGQzMihjb25kLCBkZXN0LCBpbW0sIGRlc3QpOworICAgIH0KKworICAgIEp1
bXAgYnJhbmNoQWRkMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFRydXN0ZWRJbW0zMiBpbW0sIEFi
c29sdXRlQWRkcmVzcyBkZXN0KQorICAgIHsKKyAgICAgICAgLy8gTW92ZSB0aGUgaGlnaCBiaXRz
IG9mIHRoZSBhZGRyZXNzIGludG8gYWRkcmVzc1RlbXBSZWdpc3RlciwKKyAgICAgICAgLy8gYW5k
IGxvYWQgdGhlIHZhbHVlIGludG8gZGF0YVRlbXBSZWdpc3Rlci4KKyAgICAgICAgbW92ZShJbW1Q
dHIoZGVzdC5tX3B0ciksIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICBtX2Fzc2VtYmxl
ci5sZHIoZGF0YVRlbXBSZWdpc3RlciwgYWRkcmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1l
ZGlhdGU6Om1ha2VVSW50MTYoMCkpOworCisgICAgICAgIC8vIERvIHRoZSBhZGQuCisgICAgICAg
IEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2Rl
ZEltbShpbW0ubV92YWx1ZSk7CisgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQorICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuYWRkX1MoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rl
ciwgYXJtSW1tKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgb3BlcmFu
ZCBkb2VzIG5vdCBmaXQgaW50byBhbiBpbW1lZGlhdGUgdGhlbiBsb2FkIGl0IHRlbXBvcmFyaWx5
CisgICAgICAgICAgICAvLyBpbnRvIGFkZHJlc3NUZW1wUmVnaXN0ZXI7IHNpbmNlIHdlJ3JlIG92
ZXJ3cml0aW5nIGFkZHJlc3NUZW1wUmVnaXN0ZXIKKyAgICAgICAgICAgIC8vIHdlJ2xsIG5lZWQg
dG8gcmVsb2FkIGl0IHdpdGggdGhlIGhpZ2ggYml0cyBvZiB0aGUgYWRkcmVzcyBhZnRlcndhcmRz
LgorICAgICAgICAgICAgbW92ZShpbW0sIGFkZHJlc3NUZW1wUmVnaXN0ZXIpOworICAgICAgICAg
ICAgbV9hc3NlbWJsZXIuYWRkX1MoZGF0YVRlbXBSZWdpc3RlciwgZGF0YVRlbXBSZWdpc3Rlciwg
YWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgICAgICBtb3ZlKEltbVB0cihkZXN0Lm1fcHRy
KSwgYWRkcmVzc1RlbXBSZWdpc3Rlcik7CisgICAgICAgIH0KKworICAgICAgICAvLyBTdG9yZSB0
aGUgcmVzdWx0LgorICAgICAgICBtX2Fzc2VtYmxlci5zdHIoZGF0YVRlbXBSZWdpc3RlciwgYWRk
cmVzc1RlbXBSZWdpc3RlciwgQVJNVGh1bWJJbW1lZGlhdGU6Om1ha2VVSW50MTYoMCkpOworCisg
ICAgICAgIHJldHVybiBKdW1wKG1ha2VCcmFuY2goY29uZCkpOworICAgIH0KKwogICAgIEp1bXAg
YnJhbmNoTXVsMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3JjMSwgUmVnaXN0
ZXJJRCBzcmMyLCBSZWdpc3RlcklEIGRlc3QpCiAgICAgewogICAgICAgICBtX2Fzc2VtYmxlci5z
bXVsbChkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyLCBzcmMxLCBzcmMyKTsKQEAgLTEwOTcsMjQgKzEy
NzUsMzQgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsK
ICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBSZWdp
c3RlcklEIHNyYywgUmVnaXN0ZXJJRCBkZXN0KQorICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0
Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgb3AxLCBSZWdpc3RlcklEIG9wMiwgUmVnaXN0ZXJJ
RCBkZXN0KQogICAgIHsKLSAgICAgICAgbV9hc3NlbWJsZXIuc3ViX1MoZGVzdCwgZGVzdCwgc3Jj
KTsKKyAgICAgICAgbV9hc3NlbWJsZXIuc3ViX1MoZGVzdCwgb3AxLCBvcDIpOwogICAgICAgICBy
ZXR1cm4gSnVtcChtYWtlQnJhbmNoKGNvbmQpKTsKICAgICB9CiAKLSAgICBKdW1wIGJyYW5jaFN1
YjMyKFJlc3VsdENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRl
c3QpCisgICAgSnVtcCBicmFuY2hTdWIzMihSZXN1bHRDb25kaXRpb24gY29uZCwgUmVnaXN0ZXJJ
RCBvcDEsIFRydXN0ZWRJbW0zMiBpbW0sIFJlZ2lzdGVySUQgZGVzdCkKICAgICB7CiAgICAgICAg
IEFSTVRodW1iSW1tZWRpYXRlIGFybUltbSA9IEFSTVRodW1iSW1tZWRpYXRlOjptYWtlRW5jb2Rl
ZEltbShpbW0ubV92YWx1ZSk7CiAgICAgICAgIGlmIChhcm1JbW0uaXNWYWxpZCgpKQotICAgICAg
ICAgICAgbV9hc3NlbWJsZXIuc3ViX1MoZGVzdCwgZGVzdCwgYXJtSW1tKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN1Yl9TKGRlc3QsIG9wMSwgYXJtSW1tKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBtb3ZlKGltbSwgZGF0YVRlbXBSZWdpc3Rlcik7Ci0gICAgICAgICAgICBtX2Fz
c2VtYmxlci5zdWJfUyhkZXN0LCBkZXN0LCBkYXRhVGVtcFJlZ2lzdGVyKTsKKyAgICAgICAgICAg
IG1fYXNzZW1ibGVyLnN1Yl9TKGRlc3QsIG9wMSwgZGF0YVRlbXBSZWdpc3Rlcik7CiAgICAgICAg
IH0KICAgICAgICAgcmV0dXJuIEp1bXAobWFrZUJyYW5jaChjb25kKSk7CiAgICAgfQogICAgIAor
ICAgIEp1bXAgYnJhbmNoU3ViMzIoUmVzdWx0Q29uZGl0aW9uIGNvbmQsIFJlZ2lzdGVySUQgc3Jj
LCBSZWdpc3RlcklEIGRlc3QpCisgICAgeworICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29u
ZCwgZGVzdCwgc3JjLCBkZXN0KTsKKyAgICB9CisKKyAgICBKdW1wIGJyYW5jaFN1YjMyKFJlc3Vs
dENvbmRpdGlvbiBjb25kLCBUcnVzdGVkSW1tMzIgaW1tLCBSZWdpc3RlcklEIGRlc3QpCisgICAg
eworICAgICAgICByZXR1cm4gYnJhbmNoU3ViMzIoY29uZCwgZGVzdCwgaW1tLCBkZXN0KTsKKyAg
ICB9CisgICAgCiAgICAgdm9pZCByZWxhdGl2ZVRhYmxlSnVtcChSZWdpc3RlcklEIGluZGV4LCBp
bnQgc2NhbGUpCiAgICAgewogICAgICAgICBBU1NFUlQoc2NhbGUgPj0gMCAmJiBzY2FsZSA8PSAz
MSk7CkBAIC0xMTMwLDkgKzEzMTgsOSBAQCBwdWJsaWM6CiAKICAgICAvLyBNaXNjZWxsYW5lb3Vz
IG9wZXJhdGlvbnM6CiAKLSAgICB2b2lkIGJyZWFrcG9pbnQoKQorICAgIHZvaWQgYnJlYWtwb2lu
dCh1aW50OF90IGltbSA9IDApCiAgICAgewotICAgICAgICBtX2Fzc2VtYmxlci5ia3B0KDApOwor
ICAgICAgICBtX2Fzc2VtYmxlci5ia3B0KGltbSk7CiAgICAgfQogCiAgICAgQUxXQVlTX0lOTElO
RSBDYWxsIG5lYXJDYWxsKCkK
</data>
<flag name="review"
          id="113049"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>