<?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>229045</bug_id>
          
          <creation_ts>2021-08-12 12:10:49 -0700</creation_ts>
          <short_desc>Expose [WebAccessibilityObjectWrapper lineRectsAndText] on MacOS.</short_desc>
          <delta_ts>2021-08-18 16:56:38 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=229261</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andres Gonzalez">andresg_22</reporter>
          <assigned_to name="Andres Gonzalez">andresg_22</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cfleizach</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>samuel_white</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1783908</commentid>
    <comment_count>0</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-08-12 12:10:49 -0700</bug_when>
    <thetext>Expose [WebAccessibilityObjectWrapper lineRectsAndText] on MacOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783909</commentid>
    <comment_count>1</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-08-12 12:15:26 -0700</bug_when>
    <thetext>&lt;rdar://81819301&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784335</commentid>
    <comment_count>2</comment_count>
      <attachid>435541</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-08-14 11:15:00 -0700</bug_when>
    <thetext>Created attachment 435541
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784376</commentid>
    <comment_count>3</comment_count>
      <attachid>435563</attachid>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-08-15 08:01:29 -0700</bug_when>
    <thetext>Created attachment 435563
Patch

Skip test on mac-wk1 and win.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784377</commentid>
    <comment_count>4</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-08-15 08:07:20 -0700</bug_when>
    <thetext>The style error is that the second line in:

        return @{ @&quot;rect&quot;: [NSValue valueWithRect:[self convertRectToSpace:FloatRect(line.first) space:AccessibilityConversionSpace::Screen]],
                  @&quot;text&quot;: line.second.get() };

Has an odd number of indent spaces to align the two entries in the dictionary. I believe it makes it more readable this way, so left it as is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784495</commentid>
    <comment_count>5</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-08-16 07:44:05 -0700</bug_when>
    <thetext>The win test failures are unrelated to this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784517</commentid>
    <comment_count>6</comment_count>
      <attachid>435563</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2021-08-16 09:07:29 -0700</bug_when>
    <thetext>Comment on attachment 435563
Patch

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

&gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:341
&gt; +    // rdar://7980318 if we start a call, then block in WebThreadLock(), then we&apos;re dealloced on another, thread, we could

if we&apos;re going to move this method around I feel like maybe we should combine it together. it&apos;s about the same except the WebThreadLock part which could be conditionalized

We probably need to leave the _prepareAXCall method itself as a pass through until we update the bundle side</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784567</commentid>
    <comment_count>7</comment_count>
    <who name="Andres Gonzalez">andresg_22</who>
    <bug_when>2021-08-16 10:04:11 -0700</bug_when>
    <thetext>(In reply to chris fleizach from comment #6)
&gt; Comment on attachment 435563 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=435563&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/accessibility/mac/WebAccessibilityObjectWrapperBase.mm:341
&gt; &gt; +    // rdar://7980318 if we start a call, then block in WebThreadLock(), then we&apos;re dealloced on another, thread, we could
&gt; 
&gt; if we&apos;re going to move this method around I feel like maybe we should
&gt; combine it together. it&apos;s about the same except the WebThreadLock part which
&gt; could be conditionalized
&gt; 
&gt; We probably need to leave the _prepareAXCall method itself as a pass through
&gt; until we update the bundle side

Agree. I added this comment to the base header:

// FIXME: unified these two methods into one.
#if PLATFORM(MAC)
// Updates the underlying object and accessibility hierarchy , and returns the
// corresponding AXCoreObject.
- (WebCore::AXCoreObject*)updateObjectBackingStore;
#else
- (BOOL)_prepareAccessibilityCall;
#endif

I&apos;ll make that change separate. The request was not to make any cleanup/rework changes until branching to avoid possible merge/cherry picking conflicts, so I tried to keep this change to the minimum possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1784647</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-16 14:04:26 -0700</bug_when>
    <thetext>Committed r281108 (240567@main): &lt;https://commits.webkit.org/240567@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435563.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435541</attachid>
            <date>2021-08-14 11:15:00 -0700</date>
            <delta_ts>2021-08-15 08:01:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229045-20210814141459.patch</filename>
            <type>text/plain</type>
            <size>54953</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZjNTI4MWNiYmUxMzk2
YzhkZDA2MGZmYTY0ZDExM2U0ZTNhMTM1YS4uYzBkMmUyY2JlZjBkYWFkMjM3NDc1YjkzNTlhYjFh
NzNjY2I0YWZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA4LTE0ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGxpbmVSZWN0c0FuZFRleHRdIG9uIE1hY09TLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDQ1Cisg
ICAgICAgIDxyZGFyOi8vODE4MTkzMDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9lbGVtZW50LWxpbmUtcmVjdHMt
YW5kLXRleHQuaHRtbAorCisgICAgICAgIE1vdmVkIHRoZSBbV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgbGluZVJlY3RzQW5kVGV4dF0gbWV0aG9kLCBhbmQKKyAgICAgICAgc3VwcG9ydGlu
ZyBtZXRob2RzIGFuZCBmdW5jdGlvbnMsIGZyb20gdGhlIGlPUyBzdWJjbGFzcyB0byB0aGUgYmFz
ZQorICAgICAgICAoQ29jb2EpIGNsYXNzIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gYm90aCBp
T1MgYW5kIE1hY09TLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgIE1vdmVkIHRoZSBmb2xsb3dpbmcgbWV0
aG9kcyBhbmQgZnVuY3Rpb25zIHRvIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5t
bS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3ByZXBhcmVBY2Nl
c3NpYmlsaXR5Q2FsbF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfYWRkQWNjZXNzaWJpbGl0eU9iamVjdDp0b1RleHRNYXJrZXJBcnJheTpdKTog
RGVsZXRlZC4KKyAgICAgICAgKGJsb2NrcXVvdGVMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChB
WEF0dHJpYnV0ZVN0cmluZ1NldExhbmd1YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKEFYQXR0cmli
dXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEFYQXR0cmli
dXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEFYQXR0cmlidXRl
U3RyaW5nU2V0Rm9udCk6IERlbGV0ZWQuCisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldE51
bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQpOiBEZWxldGVkLgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjb250ZW50Rm9yU2ltcGxl
UmFuZ2U6YXR0cmlidXRlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgbGluZVJlY3RzQW5kVGV4dF0pOiBEZWxldGVkLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIF9wcmVw
YXJlQWNjZXNzaWJpbGl0eUNhbGxdKToKKyAgICAgICAgKGFkZE9iamVjdFdyYXBwZXJUb0FycmF5
KToKKyAgICAgICAgKGJsb2NrcXVvdGVMZXZlbCk6CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmlu
Z1NldExhbmd1YWdlKToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxl
dmVsKToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKToKKyAgICAg
ICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0Rm9udCk6CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmlu
Z1NldE51bWJlcik6CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKToKKyAgICAg
ICAgKEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQpOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udGVudEZvclNpbXBsZVJhbmdlOmF0dHJpYnV0ZWQ6
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBsaW5lUmVj
dHNBbmRUZXh0XSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgQWRkZWQgaGFu
ZGxpbmcgb2YgdGhlIGF0dHJpYnV0ZSAiQVhMaW5lUmVjdHNBbmRUZXh0Ii4KKwogMjAyMS0wOC0x
MSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTiAocjI3MzA3Mik6IENhcHMgbG9jayBpbmRpY2F0b3IgaW4gcGFzc3dvcmQgZmllbGQgaXMg
dG9vIGxhcmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGUx
NzY4MTYwZDNmNWQ3ODlhZWI5M2VkNjc0ZmU1ZDcxZTFkOGY3YWMuLjQwYmIxMDdkNTk2N2MxNDFj
NWYyYmM0YTMzMzBjNWUwZDNjOGRkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tCkBAIC0xMDQsMjEgKzEwNCw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbikgewogICAgIFVJQWNjZXNzaWJpbGl0eVNj
cm9sbERpcmVjdGlvblByZXZpb3VzCiB9OwogCi0vLyBUaGVzZSBhcmUgdG9rZW5zIGFjY2Vzc2li
aWxpdHkgdXNlcyB0byBkZW5vdGUgYXR0cmlidXRlcy4gCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBVSUFjY2Vzc2liaWxpdHlUb2tlbkJsb2NrcXVvdGVMZXZlbCA9IEAiVUlBY2Nlc3NpYmlsaXR5
VG9rZW5CbG9ja3F1b3RlTGV2ZWwiOwotc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3Np
YmlsaXR5VG9rZW5IZWFkaW5nTGV2ZWwgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xl
dmVsIjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5h
bWUgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUiOwotc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gQCJVSUFjY2Vzc2liaWxpdHlU
b2tlbkZvbnRGYW1pbHkiOwotc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5
VG9rZW5Gb250U2l6ZSA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSI7Ci1zdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUb2tlbkJvbGQgPSBAIlVJQWNjZXNzaWJp
bGl0eVRva2VuQm9sZCI7Ci1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlU
b2tlbkl0YWxpYyA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5JdGFsaWMiOwotc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5VbmRlcmxpbmUgPSBAIlVJQWNjZXNzaWJp
bGl0eVRva2VuVW5kZXJsaW5lIjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJp
bGl0eVRva2VuTGFuZ3VhZ2UgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UiOwotc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5BdHRhY2htZW50ID0gQCJV
SUFjY2Vzc2liaWxpdHlUb2tlbkF0dGFjaG1lbnQiOwotCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBVSUFjY2Vzc2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlBY2Nlc3NpYmlsaXR5
VGV4dEF0dHJpYnV0ZUNvbnRleHQiOwotc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3Np
YmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWxpdHlUZXh0dWFs
Q29udGV4dFNvdXJjZUNvZGUiOwotCiBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIq
IEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciAqd3JhcHBlcikKIHsKICAgICB3aGlsZSAod3JhcHBlciAmJiAhW3dyYXBwZXIgaXNBY2Nlc3Np
YmlsaXR5RWxlbWVudF0pIHsKQEAgLTI4NywyNSArMjcyLDYgQEAgc3RhdGljIEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNzaWJp
bGl0eU8KICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKEJPT0wpX3ByZXBhcmVBY2Nlc3Np
YmlsaXR5Q2FsbAotewotICAgIC8vIHJkYXI6Ly83OTgwMzE4IGlmIHdlIHN0YXJ0IGEgY2FsbCwg
dGhlbiBibG9jayBpbiBXZWJUaHJlYWRMb2NrKCksIHRoZW4gd2UncmUgZGVhbGxvY2VkIG9uIGFu
b3RoZXIsIHRocmVhZCwgd2UgY291bGQKLSAgICAvLyBjcmFzaCwgc28gd2Ugc2hvdWxkIHJldGFp
biBvdXJzZWxmIGZvciB0aGUgZHVyYXRpb24gb2YgdXNhZ2UgaGVyZS4KLSAgICByZXRhaW5QdHIo
c2VsZikuYXV0b3JlbGVhc2UoKTsKLQotICAgIFdlYlRocmVhZExvY2soKTsKLSAgICAKLSAgICAv
LyBJZiB3ZSBjYW1lIGJhY2sgZnJvbSBvdXIgdGhyZWFkIGxvY2sgYW5kIHdlIHdlcmUgZGV0YWNo
ZWQsIHdlIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYW4gc2VsZi5heEJhY2tpbmdPYmplY3QuCi0gICAg
aWYgKCFzZWxmLmF4QmFja2luZ09iamVjdCkKLSAgICAgICAgcmV0dXJuIE5POwotICAgIAotICAg
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBpZiAoIXNl
bGYuYXhCYWNraW5nT2JqZWN0KQotICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgcmV0dXJu
IFlFUzsKLX0KLQogLy8gVGhlc2UgYXJlIGhlcmUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGlt
cG9ydCBBWFJ1bnRpbWUuCiAvLyBUaGUgbWV0aG9kcyB3aWxsIGJlIHN3aXp6bGVkIHdoZW4gdGhl
IGFjY2Vzc2liaWxpdHkgYnVuZGxlIGlzIGxvYWRlZC4KIApAQCAtMjE5MiwyNiArMjE1OCw2IEBA
IHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQogCiAj
cHJhZ21hIG1hcmsgQWNjZXNzaWJpbGl0eSBUZXh0IE1hcmtlciBIYW5kbGVycwogCi0tIChCT09M
KV9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0OihBY2Nlc3NpYmlsaXR5T2JqZWN0KilheE9iamVjdCB0
b1RleHRNYXJrZXJBcnJheTooTlNNdXRhYmxlQXJyYXkgKilhcnJheQotewotICAgIGlmICghYXhP
YmplY3QpCi0gICAgICAgIHJldHVybiBOTzsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciogd3JhcHBlciA9IGF4T2JqZWN0LT53cmFwcGVyKCk7Ci0gICAgaWYgKCF3cmFwcGVy
KQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICAvLyBEb24ndCBhZGQgdGhlIHNhbWUgb2JqZWN0
IHR3aWNlLCBidXQgc2luY2UgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkLCB3ZSBzaG91bGQg
cmV0dXJuCi0gICAgLy8gWUVTIGJlY2F1c2Ugd2Ugd2FudCB0byBpbmZvcm0gdGhhdCBpdCdzIGlu
IHRoZSBhcnJheQotICAgIGlmIChbYXJyYXkgY29udGFpbnNPYmplY3Q6d3JhcHBlcl0pCi0gICAg
ICAgIHJldHVybiBZRVM7Ci0gICAgCi0gICAgLy8gRXhwbGljaXRseSBzZXQgdGhhdCB0aGlzIGlz
IG5vdyBhbiBlbGVtZW50IChpbiBjYXNlIG90aGVyIGxvZ2ljIHRyaWVzIHRvIG92ZXJyaWRlKS4K
LSAgICBbd3JhcHBlciBzZXRWYWx1ZTpAWUVTIGZvcktleTpAImlzQWNjZXNzaWJpbGl0eUVsZW1l
bnQiXTsgICAgCi0gICAgW2FycmF5IGFkZE9iamVjdDp3cmFwcGVyXTsKLSAgICByZXR1cm4gWUVT
OwotfQotCiAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KE5TU3RyaW5nICopc3RyaW5n
CiB7CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKQEAgLTIyMjks
MTgyICsyMTc1LDYgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1Zp
ZXcqIHZpZXcpCiAgICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zdHJpbmdGb3JSYW5n
ZSgqcmFuZ2UpOwogfQogCi1zdGF0aWMgaW50IGJsb2NrcXVvdGVMZXZlbChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQotewotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwotICAg
IAotICAgIGludCByZXN1bHQgPSAwOwotICAgIGZvciAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5u
b2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKG5v
ZGUtPmhhc1RhZ05hbWUoYmxvY2txdW90ZVRhZykpCi0gICAgICAgICAgICByZXN1bHQgKz0gMTsK
LSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3Ry
aW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1JhbmdlIHJhbmdlKQotewotICAgIGlmICgh
cmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUocmVuZGVyZXIpOwotICAgIE5TU3RyaW5nICpsYW5ndWFnZSA9IGF4T2JqZWN0LT5sYW5n
dWFnZSgpOwotICAgIGlmIChbbGFuZ3VhZ2UgbGVuZ3RoXSkKLSAgICAgICAgW2F0dHJTdHJpbmcg
YWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UgdmFsdWU6bGFuZ3VhZ2Ug
cmFuZ2U6cmFuZ2VdOwotICAgIGVsc2UKLSAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmli
dXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UgcmFuZ2U6cmFuZ2VdOwotfQotCi1zdGF0
aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1Jhbmdl
IHJhbmdlKQotewotICAgIGludCBxdW90ZUxldmVsID0gYmxvY2txdW90ZUxldmVsKHJlbmRlcmVy
KTsKLSAgICAKLSAgICBpZiAocXVvdGVMZXZlbCkKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0
cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuQmxvY2txdW90ZUxldmVsIHZhbHVlOkAocXVvdGVM
ZXZlbCkgcmFuZ2U6cmFuZ2VdOwotICAgIGVsc2UKLSAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3Zl
QXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuQmxvY2txdW90ZUxldmVsIHJhbmdlOnJhbmdl
XTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgTlNSYW5nZSByYW5nZSkKLXsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gcmVuZGVyZXIt
PmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlci0+cGFyZW50
KCkpOwotICAgIGludCBwYXJlbnRIZWFkaW5nTGV2ZWwgPSBwYXJlbnRPYmplY3QtPmhlYWRpbmdM
ZXZlbCgpOwotICAgIAotICAgIGlmIChwYXJlbnRIZWFkaW5nTGV2ZWwpCi0gICAgICAgIFthdHRy
U3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkhlYWRpbmdMZXZlbCB2YWx1
ZTpAKHBhcmVudEhlYWRpbmdMZXZlbCkgcmFuZ2U6cmFuZ2VdOwotICAgIGVsc2UKLSAgICAgICAg
W2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xl
dmVsIHJhbmdlOnJhbmdlXTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRG
b250KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIENURm9udFJlZiBmb250
LCBOU1JhbmdlIHJhbmdlKQotewotICAgIGlmICghZm9udCkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZnVsbE5hbWUgPSBhZG9wdENGKENURm9udENv
cHlGdWxsTmFtZShmb250KSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYW1pbHlOYW1l
ID0gYWRvcHRDRihDVEZvbnRDb3B5RmFtaWx5TmFtZShmb250KSk7Ci0KLSAgICBOU051bWJlciog
c2l6ZSA9IFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6Q1RGb250R2V0U2l6ZShmb250KV07Ci0g
ICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMo
Zm9udCk7Ci0gICAgTlNOdW1iZXIqIGJvbGQgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6KHRy
YWl0cyAmIGtDVEZvbnRUcmFpdEJvbGQpXTsKLSAgICBpZiAoZnVsbE5hbWUpCi0gICAgICAgIFth
dHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lIHZhbHVl
OihOU1N0cmluZyopZnVsbE5hbWUuZ2V0KCkgcmFuZ2U6cmFuZ2VdOwotICAgIGlmIChmYW1pbHlO
YW1lKQotICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9r
ZW5Gb250RmFtaWx5IHZhbHVlOihOU1N0cmluZyopZmFtaWx5TmFtZS5nZXQoKSByYW5nZTpyYW5n
ZV07Ci0gICAgaWYgKFtzaXplIGJvb2xWYWx1ZV0pCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0
dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplIHZhbHVlOnNpemUgcmFuZ2U6cmFu
Z2VdOwotICAgIGlmIChbYm9sZCBib29sVmFsdWVdIHx8ICh0cmFpdHMgJiBrQ1RGb250VHJhaXRC
b2xkKSkKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRv
a2VuQm9sZCB2YWx1ZTpAWUVTIHJhbmdlOnJhbmdlXTsKLSAgICBpZiAodHJhaXRzICYga0NURm9u
dFRyYWl0SXRhbGljKQotICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3Np
YmlsaXR5VG9rZW5JdGFsaWMgdmFsdWU6QFlFUyByYW5nZTpyYW5nZV07Ci0KLX0KLQotc3RhdGlj
IHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyogYXR0clN0cmluZywgTlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNOdW1iZXIqIG51bWJlciwgTlNS
YW5nZSByYW5nZSkKLXsKLSAgICBpZiAobnVtYmVyKQotICAgICAgICBbYXR0clN0cmluZyBhZGRB
dHRyaWJ1dGU6YXR0cmlidXRlIHZhbHVlOm51bWJlciByYW5nZTpyYW5nZV07Ci0gICAgZWxzZQot
ICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0cmlidXRlIHJhbmdlOnJhbmdl
XTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1Jh
bmdlIHJhbmdlKQotewotICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAg
Ci0gICAgLy8gc2V0IGJhc2ljIGZvbnQgaW5mbwotICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Rm9u
dChhdHRyU3RyaW5nLCBzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250
KCksIHJhbmdlKTsKLSAgICAgICAgICAgICAgICAKLSAgICBhdXRvIGRlY29yID0gc3R5bGUudGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6
VW5kZXJsaW5lKQotICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5n
LCBVSUFjY2Vzc2liaWxpdHlUb2tlblVuZGVybGluZSwgQFlFUywgcmFuZ2UpOwotCi0gICAgLy8g
QWRkIGNvZGUgY29udGV4dCBpZiB0aGlzIG5vZGUgaXMgd2l0aGluIGEgPGNvZGU+IGJsb2NrLgot
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gcmVuZGVyZXItPmRvY3VtZW50KCku
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlcik7Ci0gICAgYXV0byBtYXRjaEZ1
bmMgPSBbXSAoY29uc3QgQVhDb3JlT2JqZWN0JiBvYmplY3QpIHsKLSAgICAgICAgcmV0dXJuIG9i
amVjdC5ub2RlKCkgJiYgb2JqZWN0Lm5vZGUoKS0+aGFzVGFnTmFtZShjb2RlVGFnKTsKLSAgICB9
OwotCi0gICAgaWYgKGNvbnN0IEFYQ29yZU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6
ZmluZEFuY2VzdG9yPEFYQ29yZU9iamVjdD4oKmF4T2JqZWN0LCB0cnVlLCBXVEZNb3ZlKG1hdGNo
RnVuYykpKQotICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5
VGV4dEF0dHJpYnV0ZUNvbnRleHQgdmFsdWU6VUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRT
b3VyY2VDb2RlIHJhbmdlOnJhbmdlXTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3Ry
aW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBOb2Rl
KiBub2RlLCBOU1N0cmluZyAqdGV4dCkKLXsKLSAgICAvLyBza2lwIGludmlzaWJsZSB0ZXh0Ci0g
ICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8g
ZWFzaWVyIHRvIGNhbGN1bGF0ZSB0aGUgcmFuZ2UgYmVmb3JlIGFwcGVuZGluZyB0aGUgc3RyaW5n
Ci0gICAgTlNSYW5nZSBhdHRyU3RyaW5nUmFuZ2UgPSBOU01ha2VSYW5nZShbYXR0clN0cmluZyBs
ZW5ndGhdLCBbdGV4dCBsZW5ndGhdKTsKLSAgICAKLSAgICAvLyBhcHBlbmQgdGhlIHN0cmluZyBm
cm9tIHRoaXMgbm9kZQotICAgIFtbYXR0clN0cmluZyBtdXRhYmxlU3RyaW5nXSBhcHBlbmRTdHJp
bmc6dGV4dF07Ci0gICAgCi0gICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVzCi0gICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXRTdHlsZShhdHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5n
UmFuZ2UpOwotICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKGF0dHJTdHJpbmcs
IG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7Ci0gICAgQVhBdHRyaWJ1dGVTdHJp
bmdTZXRCbG9ja3F1b3RlTGV2ZWwoYXR0clN0cmluZywgbm9kZS0+cmVuZGVyZXIoKSwgYXR0clN0
cmluZ1JhbmdlKTsgICAgCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShhdHRyU3Ry
aW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOwotfQotCi0vLyBSZXR1cm5z
IGFuIGFycmF5IG9mIHN0cmluZ3MgYW5kIEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3BvbmRpbmcg
dG8gdGhlIHRleHQKLS8vIHJ1bnMgYW5kIHJlcGxhY2VtZW50IG5vZGVzIGluY2x1ZGVkIGluIHRo
ZSBnaXZlbiByYW5nZS4KLS0gKE5TQXJyYXkgKiljb250ZW50Rm9yU2ltcGxlUmFuZ2U6KGNvbnN0
IFNpbXBsZVJhbmdlJilyYW5nZSBhdHRyaWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQKLXsKLSAgICBh
dXRvIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0KLSAg
ICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJhbmdlIHRvIGJ1aWxkIHRoZSBBWCBhdHRyaWJ1dGVkIHN0
cmluZy4KLSAgICBUZXh0SXRlcmF0b3IgaXQocmFuZ2UpOwotICAgIGZvciAoOyAhaXQuYXRFbmQo
KTsgaXQuYWR2YW5jZSgpKSB7Ci0gICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLnN0YXJ0
LmNvbnRhaW5lcjsKLQotICAgICAgICAvLyBOb24temVybyBsZW5ndGggbWVhbnMgdGV4dHVhbCBu
b2RlLCB6ZXJvIGxlbmd0aCBtZWFucyByZXBsYWNlZCBub2RlIChBS0EgImF0dGFjaG1lbnRzIiBp
biBBWCkuCi0gICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlm
ICghYXR0cmlidXRlZCkgewotICAgICAgICAgICAgICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoaXMg
aXMgcmVwcmVzZW50ZWQgYnkgYSBsaW5rLgotICAgICAgICAgICAgICAgIGF1dG8qIGxpbmtPYmpl
Y3QgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNob3JFbGVtZW50Rm9yTm9kZSgmbm9kZSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0OmxpbmtPYmpl
Y3QgdG9UZXh0TWFya2VyQXJyYXk6YXJyYXkuZ2V0KCldKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgICAgIC8vIE5leHQgY2hlY2sgaWYgdGhpcyByZWdpb24g
aXMgcmVwcmVzZW50ZWQgYnkgYSBoZWFkaW5nLgotICAgICAgICAgICAgICAgIGF1dG8qIGhlYWRp
bmdPYmplY3QgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoZWFkaW5nRWxlbWVudEZvck5vZGUoJm5v
ZGUpOwotICAgICAgICAgICAgICAgIGlmIChbc2VsZiBfYWRkQWNjZXNzaWJpbGl0eU9iamVjdDpo
ZWFkaW5nT2JqZWN0IHRvVGV4dE1hcmtlckFycmF5OmFycmF5LmdldCgpXSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRl
eHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlv
bigmbm9kZSwgbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGl0LnJhbmdlKCkuc3RhcnQpKTsK
LSAgICAgICAgICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpsaXN0TWFya2VyVGV4dF07Ci0gICAgICAgICAg
ICAgICAgLy8gVGhlcmUgd2FzIG5vdCBhbiBlbGVtZW50IHJlcHJlc2VudGF0aW9uLCBzbyBqdXN0
IHJldHVybiB0aGUgdGV4dC4KLSAgICAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Oml0LnRl
eHQoKS5jcmVhdGVOU1N0cmluZygpLmdldCgpXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6
bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIG1ha2VDb250YWluZXJPZmZz
ZXRQb3NpdGlvbihpdC5yYW5nZSgpLnN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFsaXN0
TWFya2VyVGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBhdHRyU3Ry
aW5nID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsK
LSAgICAgICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3Ry
aW5nLmdldCgpLCAmbm9kZSwgbGlzdE1hcmtlclRleHQpOwotICAgICAgICAgICAgICAgICAgICBb
YXJyYXkgYWRkT2JqZWN0OmF0dHJTdHJpbmcuZ2V0KCldOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIGF1dG8gYXR0clN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVk
U3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5nLmdldCgpLCAmbm9kZSwgaXQudGV4dCgpLmNyZWF0
ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgW2FycmF5
IGFkZE9iamVjdDphdHRyU3RyaW5nLmdldCgpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChOb2RlKiByZXBsYWNlZE5vZGUgPSBpdC5ub2RlKCkpIHsK
LSAgICAgICAgICAgICAgICBhdXRvKiBvYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZXBsYWNlZE5vZGUtPnJlbmRlcmVyKCkpOwotICAg
ICAgICAgICAgICAgIGlmIChvYmplY3QpCi0gICAgICAgICAgICAgICAgICAgIFtzZWxmIF9hZGRB
Y2Nlc3NpYmlsaXR5T2JqZWN0Om9iamVjdCB0b1RleHRNYXJrZXJBcnJheTphcnJheS5nZXQoKV07
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gYXJyYXkuYXV0
b3JlbGVhc2UoKTsKLX0KLQogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gcmV0dXJuIGFu
IGFycmF5IG9mIHN0cmluZ3MgYW5kIGFjY2Vzc2liaWxpdHkgZWxlbWVudHMgdGhhdAogLy8gcmVw
cmVzZW50IHRoZSBvYmplY3RzIG9uIG9uZSBsaW5lIG9mIHJlbmRlcmVkIHdlYiBjb250ZW50LiBU
aGUgYXJyYXkgb2YgbWFya2VycyBzZW50CiAvLyBpbiBzaG91bGQgYmUgb3JkZXJlZCBhbmQgY29u
dGFpbiBvbmx5IGEgc3RhcnQgYW5kIGVuZCBtYXJrZXIuCkBAIC0yODUwLDcwICsyNjIwLDYgQEAg
c3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2Vyc0ZvclJh
bmdlOltzZWxmIHJhbmdlRnJvbU1hcmtlcnM6bWFya2VycyB3aXRoVGV4dDp0ZXh0XV07CiB9CiAK
LS0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3RzQW5kVGV4dAotewotICAgIGlm
ICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwotCi0gICAg
YXV0byByYW5nZSA9IGJhY2tpbmdPYmplY3QtPmVsZW1lbnRSYW5nZSgpOwotICAgIGlmICghcmFu
Z2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBWZWN0b3I8c3RkOjpwYWlyPEludFJlY3Qs
IFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+Pj4gbGluZXM7Ci0gICAgYXV0byBzdGFydCA9
IFZpc2libGVQb3NpdGlvbiB7IG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihyYW5nZS0+c3Rh
cnQpIH07Ci0gICAgYXV0byByYW5nZUVuZCA9IFZpc2libGVQb3NpdGlvbiB7IG1ha2VDb250YWlu
ZXJPZmZzZXRQb3NpdGlvbihyYW5nZS0+ZW5kKSB9OwotICAgIHdoaWxlICghc3RhcnQuaXNOdWxs
KCkgJiYgc3RhcnQgPD0gcmFuZ2VFbmQpIHsKLSAgICAgICAgYXV0byBlbmQgPSBiYWNraW5nT2Jq
ZWN0LT5uZXh0TGluZUVuZFBvc2l0aW9uKHN0YXJ0KTsKLSAgICAgICAgaWYgKGVuZCA8PSBzdGFy
dCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGF1dG8gcmVjdCA9IGJhY2tpbmdPYmpl
Y3QtPmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKHtzdGFydCwgZW5kfSk7Ci0KLSAgICAg
ICAgYXV0byBsaW5lUmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnQsIGVuZCk7Ci0gICAgICAg
IGlmICghbGluZVJhbmdlKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgTlNBcnJheSAq
Y29udGVudCA9IFtzZWxmIGNvbnRlbnRGb3JTaW1wbGVSYW5nZToqbGluZVJhbmdlIGF0dHJpYnV0
ZWQ6WUVTXTsKLSAgICAgICAgYXV0byB0ZXh0ID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgZm9yIChpZCBpdGVtIGluIGNvbnRlbnQp
IHsKLSAgICAgICAgICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOk5TQXR0cmlidXRlZFN0cmlu
Zy5jbGFzc10pCi0gICAgICAgICAgICAgICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpp
dGVtXTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6V2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIuY2xhc3NdKSB7Ci0gICAgICAgICAgICAgICAgTlNTdHJpbmcg
KmxhYmVsID0gc3RhdGljX2Nhc3Q8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKj4oaXRl
bSkuYWNjZXNzaWJpbGl0eUxhYmVsOwotICAgICAgICAgICAgICAgIGlmICghbGFiZWwpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgYXV0byBhdHRyaWJ1
dGVkTGFiZWwgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0
cmluZzpsYWJlbF0pOwotICAgICAgICAgICAgICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJp
bmc6YXR0cmlidXRlZExhYmVsLmdldCgpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBsaW5lcy5hcHBlbmQoe3JlY3QsIHRleHR9KTsKLQotICAgICAgICBzdGFydCA9IGVuZDsK
LSAgICAgICAgLy8gSWYgc3RhcnQgaXMgYXQgYSBoYXJkIGJyZWFrbGluZSAiXG4iLCBtb3ZlIHRv
IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgbGluZS4KLSAgICAgICAgd2hpbGUgKGlzRW5kT2ZM
aW5lKHN0YXJ0KSkgewotICAgICAgICAgICAgZW5kID0gc3RhcnQubmV4dCgpOwotICAgICAgICAg
ICAgYXV0byBlbmRPZkxpbmVSYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShzdGFydCwgZW5kKTsKLSAg
ICAgICAgICAgIGlmICghZW5kT2ZMaW5lUmFuZ2UpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgICAgIFRleHRJdGVyYXRvciBpdCgqZW5kT2ZMaW5lUmFuZ2UpOwotICAgICAgICAg
ICAgaWYgKGl0LmF0RW5kKCkgfHwgaXQudGV4dCgpLmxlbmd0aCgpICE9IDEgfHwgaXQudGV4dCgp
WzBdICE9ICdcbicpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIHN0YXJ0
ID0gZW5kOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGxpbmVzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gY3JlYXRlTlNBcnJheShsaW5lcywgW3NlbGZd
IChjb25zdCBhdXRvJiBsaW5lKSB7Ci0gICAgICAgIHJldHVybiBAeyBAInJlY3QiOiBbTlNWYWx1
ZSB2YWx1ZVdpdGhSZWN0OltzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpGbG9hdFJlY3QobGluZS5m
aXJzdCkgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVuXV0sCi0gICAg
ICAgICAgICAgICAgICBAInRleHQiOiBsaW5lLnNlY29uZC5nZXQoKSB9OwotICAgIH0pLmF1dG9y
ZWxlYXNlKCk7Ci19Ci0KIC0gKE5TQXJyYXkgKilsaW5lUmVjdHNGb3JUZXh0TWFya2VyUmFuZ2U6
KE5TQXJyYXkgKiltYXJrZXJzCiB7CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxp
dHlDYWxsXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKaW5kZXggZmE3
YTNjYjhjODVmYTgxOGFiMWZjZWQ0MjdjMDBiZDUyNjVlYWYyMS4uNzRhODhhNDI3NDhmZDg3MGQ1
ODRlZDgxZWRjZmVlMmQ3NzdlMjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlLmgKQEAgLTQxLDYgKzQxLDIxIEBAIGNsYXNzIFBhdGg7CiBjbGFzcyBWaXNpYmxlUG9z
aXRpb247CiB9CiAKKy8vIFRva2VucyB1c2VkIHRvIGRlbm90ZSBhdHRyaWJ1dGVzIGluIE5TQXR0
cmlidXRlZFN0cmluZ3MuCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlU
b2tlbkJsb2NrcXVvdGVMZXZlbCA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2
ZWwiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5IZWFkaW5n
TGV2ZWwgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xldmVsIjsKK3N0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBAIlVJQWNjZXNzaWJp
bGl0eVRva2VuRm9udE5hbWUiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmls
aXR5VG9rZW5Gb250RmFtaWx5ID0gQCJVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkiOwor
c3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IEAi
VUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBV
SUFjY2Vzc2liaWxpdHlUb2tlbkJvbGQgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuQm9sZCI7Citz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUb2tlbkl0YWxpYyA9IEAiVUlB
Y2Nlc3NpYmlsaXR5VG9rZW5JdGFsaWMiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nl
c3NpYmlsaXR5VG9rZW5VbmRlcmxpbmUgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuVW5kZXJsaW5l
IjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2Ug
PSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UiOworc3RhdGljIE5TU3RyaW5nICogY29u
c3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5BdHRhY2htZW50ID0gQCJVSUFjY2Vzc2liaWxpdHlUb2tl
bkF0dGFjaG1lbnQiOworCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlU
ZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlBY2Nlc3NpYmlsaXR5VGV4dEF0dHJpYnV0ZUNvbnRl
eHQiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRl
eHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dFNvdXJjZUNvZGUi
OworCiBAaW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSA6IE5TT2Jq
ZWN0IHsKICAgICBXZWJDb3JlOjpBWENvcmVPYmplY3QqIG1fYXhPYmplY3Q7CiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKQEAgLTYxLDEzICs3NiwyMCBAQCBjbGFzcyBW
aXNpYmxlUG9zaXRpb247CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFdlYkNvcmU6
OkFYSUQgaWRlbnRpZmllcjsKIAorLy8gRklYTUU6IHVuaWZpZWQgdGhlc2UgdHdvIG1ldGhvZHMg
aW50byBvbmUuCisjaWYgUExBVEZPUk0oTUFDKQogLy8gVXBkYXRlcyB0aGUgdW5kZXJseWluZyBv
YmplY3QgYW5kIGFjY2Vzc2liaWxpdHkgaGllcmFyY2h5ICwgYW5kIHJldHVybnMgdGhlCiAvLyBj
b3JyZXNwb25kaW5nIEFYQ29yZU9iamVjdC4KIC0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCopdXBk
YXRlT2JqZWN0QmFja2luZ1N0b3JlOworI2Vsc2UKKy0gKEJPT0wpX3ByZXBhcmVBY2Nlc3NpYmls
aXR5Q2FsbDsKKyNlbmRpZgogCiAvLyBUaGlzIGNhbiBiZSBlaXRoZXIgYW4gQWNjZXNzaWJpbGl0
eU9iamVjdCBvciBhbiBBWElzb2xhdGVkT2JqZWN0CiAtIChXZWJDb3JlOjpBWENvcmVPYmplY3Qq
KWF4QmFja2luZ09iamVjdDsKIAorLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVj
dHNBbmRUZXh0OworCiAvLyBUaGVzZSBhcmUgcHJlLWZpeGVkIHdpdGggYmFzZSBzbyB0aGF0IEFw
cEtpdCBkb2VzIG5vdCBlbmQgdXAgY2FsbGluZyBpbnRvIHRoZXNlIGRpcmVjdGx5IChieXBhc3Np
bmcgc2FmZXR5IGNoZWNrcykuCiAtIChOU1N0cmluZyAqKWJhc2VBY2Nlc3NpYmlsaXR5RGVzY3Jp
cHRpb247CiAtIChOU1N0cmluZyAqKWJhc2VBY2Nlc3NpYmlsaXR5SGVscFRleHQ7CkBAIC04Myw2
ICsxMDUsNyBAQCBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAtIChDR1BhdGhSZWYpY29udmVydFBh
dGhUb1NjcmVlblNwYWNlOihjb25zdCBXZWJDb3JlOjpQYXRoJilwYXRoOwogCiAtIChDR1JlY3Qp
Y29udmVydFJlY3RUb1NwYWNlOihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKXJlY3Qgc3BhY2U6
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2Upc3BhY2U7CistIChOU0FycmF5
ICopY29udGVudEZvclNpbXBsZVJhbmdlOihjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpcmFu
Z2UgYXR0cmlidXRlZDooQk9PTClhdHRyaWJ1dGVkOwogCiAvLyBNYXRoIHJlbGF0ZWQgZnVuY3Rp
b25zCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFpcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggZTg5NDk2MTRlMmMzZGQ2
YTg5MzU4YTEyNzUxMmJjZmU1MTc1NTY1Yi4uNmVhMjY3ZDdkODBmMDkyZDU5NzhhOGRhNmQzN2Jk
YzdhOTliMmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpA
QCAtMzIwLDYgKzMyMCw3IEBAIE5TQXJyYXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29y
ZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0CiB9CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKE1BQykKIC0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCopdXBkYXRlT2JqZWN0
QmFja2luZ1N0b3JlCiB7CiAgICAgLy8gQ2FsbGluZyB1cGRhdGVCYWNraW5nU3RvcmUoKSBjYW4g
aW52YWxpZGF0ZSB0aGlzIGVsZW1lbnQgc28gc2VsZiBtdXN0IGJlIHJldGFpbmVkLgpAQCAtMzM0
LDYgKzMzNSwyNiBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFY
Q29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdAogCiAgICAgcmV0dXJuIHNlbGYu
YXhCYWNraW5nT2JqZWN0OwogfQorI2Vsc2UKKy0gKEJPT0wpX3ByZXBhcmVBY2Nlc3NpYmlsaXR5
Q2FsbAoreworICAgIC8vIHJkYXI6Ly83OTgwMzE4IGlmIHdlIHN0YXJ0IGEgY2FsbCwgdGhlbiBi
bG9jayBpbiBXZWJUaHJlYWRMb2NrKCksIHRoZW4gd2UncmUgZGVhbGxvY2VkIG9uIGFub3RoZXIs
IHRocmVhZCwgd2UgY291bGQKKyAgICAvLyBjcmFzaCwgc28gd2Ugc2hvdWxkIHJldGFpbiBvdXJz
ZWxmIGZvciB0aGUgZHVyYXRpb24gb2YgdXNhZ2UgaGVyZS4KKyAgICByZXRhaW5QdHIoc2VsZiku
YXV0b3JlbGVhc2UoKTsKKworICAgIFdlYlRocmVhZExvY2soKTsKKworICAgIC8vIElmIHdlIGNh
bWUgYmFjayBmcm9tIG91ciB0aHJlYWQgbG9jayBhbmQgd2Ugd2VyZSBkZXRhY2hlZCwgd2Ugd2ls
bCBubyBsb25nZXIgaGF2ZSBhbiBzZWxmLmF4QmFja2luZ09iamVjdC4KKyAgICBpZiAoIXNlbGYu
YXhCYWNraW5nT2JqZWN0KQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBzZWxmLmF4QmFja2lu
Z09iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgaWYgKCFzZWxmLmF4QmFja2luZ09i
amVjdCkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgcmV0dXJuIFlFUzsKK30KKyNlbmRpZgog
CiAtIChpZClhdHRhY2htZW50VmlldwogewpAQCAtNDU2LDYgKzQ3NywyOTggQEAgc3RhdGljIHZv
aWQgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBj
b252ZXJzaW9uLCBjb24KICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+Y29udmVydFJlY3RUb1Bs
YXRmb3JtU3BhY2UocmVjdCwgc3BhY2UpOwogfQogCitzdGF0aWMgQk9PTCBhZGRPYmplY3RXcmFw
cGVyVG9BcnJheShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwgTlNNdXRhYmxlQXJyYXkg
KmFycmF5KQoreworICAgIGlmICghYXhPYmplY3QpCisgICAgICAgIHJldHVybiBOTzsKKworICAg
IGF1dG8qIHdyYXBwZXIgPSBheE9iamVjdC0+d3JhcHBlcigpOworICAgIGlmICghd3JhcHBlcikK
KyAgICAgICAgcmV0dXJuIE5POworCisgICAgLy8gRG9uJ3QgYWRkIHRoZSBzYW1lIG9iamVjdCB0
d2ljZSwgYnV0IHNpbmNlIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCwgd2Ugc2hvdWxkIHJl
dHVybgorICAgIC8vIFlFUyBiZWNhdXNlIHdlIHdhbnQgdG8gaW5mb3JtIHRoYXQgaXQncyBpbiB0
aGUgYXJyYXkKKyAgICBpZiAoW2FycmF5IGNvbnRhaW5zT2JqZWN0OndyYXBwZXJdKQorICAgICAg
ICByZXR1cm4gWUVTOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBFeHBsaWNp
dGx5IHNldCB0aGF0IHRoaXMgaXMgYSBub3cgZWxlbWVudCwgaW4gY2FzZSBvdGhlciBsb2dpYyB0
cmllcyB0byBvdmVycmlkZS4KKyAgICBbd3JhcHBlciBzZXRWYWx1ZTpAWUVTIGZvcktleTpAImlz
QWNjZXNzaWJpbGl0eUVsZW1lbnQiXTsKKyNlbmRpZgorCisgICAgW2FycmF5IGFkZE9iamVjdDp3
cmFwcGVyXTsKKyAgICByZXR1cm4gWUVTOworfQorCitzdGF0aWMgaW50IGJsb2NrcXVvdGVMZXZl
bChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgZm9yIChOb2RlKiBub2RlID0g
cmVuZGVyZXItPm5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShibG9ja3F1b3RlVGFnKSkKKyAgICAgICAgICAgIHJl
c3VsdCArPSAxOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lk
IEFYQXR0cmlidXRlU3RyaW5nU2V0TGFuZ3VhZ2UoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyog
YXR0clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkKK3sKKyAg
ICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBheE9iamVjdCA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUocmVuZGVyZXIpOworICAgIE5TU3RyaW5nICpsYW5ndWFnZSA9IGF4T2JqZWN0LT5s
YW5ndWFnZSgpOworICAgIGlmIChbbGFuZ3VhZ2UgbGVuZ3RoXSkKKyAgICAgICAgW2F0dHJTdHJp
bmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UgdmFsdWU6bGFuZ3Vh
Z2UgcmFuZ2U6cmFuZ2VdOworICAgIGVsc2UKKyAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0
cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UgcmFuZ2U6cmFuZ2VdOworfQorCitz
dGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1Jh
bmdlIHJhbmdlKQoreworICAgIGludCBxdW90ZUxldmVsID0gYmxvY2txdW90ZUxldmVsKHJlbmRl
cmVyKTsKKworICAgIGlmIChxdW90ZUxldmVsKQorICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRy
aWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2ZWwgdmFsdWU6QChxdW90ZUxl
dmVsKSByYW5nZTpyYW5nZV07CisgICAgZWxzZQorICAgICAgICBbYXR0clN0cmluZyByZW1vdmVB
dHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2ZWwgcmFuZ2U6cmFuZ2Vd
OworfQorCitzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBOU1JhbmdlIHJhbmdlKQoreworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IHJlbmRlcmVyLT5kb2N1
bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyZXItPnBhcmVudCgpKTsK
KyAgICBpbnQgcGFyZW50SGVhZGluZ0xldmVsID0gcGFyZW50T2JqZWN0LT5oZWFkaW5nTGV2ZWwo
KTsKKworICAgIGlmIChwYXJlbnRIZWFkaW5nTGV2ZWwpCisgICAgICAgIFthdHRyU3RyaW5nIGFk
ZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkhlYWRpbmdMZXZlbCB2YWx1ZTpAKHBhcmVu
dEhlYWRpbmdMZXZlbCkgcmFuZ2U6cmFuZ2VdOworICAgIGVsc2UKKyAgICAgICAgW2F0dHJTdHJp
bmcgcmVtb3ZlQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xldmVsIHJhbmdl
OnJhbmdlXTsKK30KKworc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRGb250KE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIENURm9udFJlZiBmb250LCBOU1Jhbmdl
IHJhbmdlKQoreworICAgIGlmICghZm9udCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBmdWxsTmFtZSA9IGFkb3B0Q0YoQ1RGb250Q29weUZ1bGxOYW1lKGZv
bnQpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZhbWlseU5hbWUgPSBhZG9wdENGKENU
Rm9udENvcHlGYW1pbHlOYW1lKGZvbnQpKTsKKworICAgIE5TTnVtYmVyKiBzaXplID0gW05TTnVt
YmVyIG51bWJlcldpdGhGbG9hdDpDVEZvbnRHZXRTaXplKGZvbnQpXTsKKyAgICBDVEZvbnRTeW1i
b2xpY1RyYWl0cyB0cmFpdHMgPSBDVEZvbnRHZXRTeW1ib2xpY1RyYWl0cyhmb250KTsKKyAgICBO
U051bWJlciogYm9sZCA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDoodHJhaXRzICYga0NURm9u
dFRyYWl0Qm9sZCldOworICAgIGlmIChmdWxsTmFtZSkKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRk
QXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgdmFsdWU6KE5TU3RyaW5nKilm
dWxsTmFtZS5nZXQoKSByYW5nZTpyYW5nZV07CisgICAgaWYgKGZhbWlseU5hbWUpCisgICAgICAg
IFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkg
dmFsdWU6KE5TU3RyaW5nKilmYW1pbHlOYW1lLmdldCgpIHJhbmdlOnJhbmdlXTsKKyAgICBpZiAo
W3NpemUgYm9vbFZhbHVlXSkKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNj
ZXNzaWJpbGl0eVRva2VuRm9udFNpemUgdmFsdWU6c2l6ZSByYW5nZTpyYW5nZV07CisgICAgaWYg
KFtib2xkIGJvb2xWYWx1ZV0gfHwgKHRyYWl0cyAmIGtDVEZvbnRUcmFpdEJvbGQpKQorICAgICAg
ICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5Cb2xkIHZhbHVl
OkBZRVMgcmFuZ2U6cmFuZ2VdOworICAgIGlmICh0cmFpdHMgJiBrQ1RGb250VHJhaXRJdGFsaWMp
CisgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkl0
YWxpYyB2YWx1ZTpAWUVTIHJhbmdlOnJhbmdlXTsKK30KKworc3RhdGljIHZvaWQgQVhBdHRyaWJ1
dGVTdHJpbmdTZXROdW1iZXIoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywg
TlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNOdW1iZXIqIG51bWJlciwgTlNSYW5nZSByYW5nZSkKK3sK
KyAgICBpZiAobnVtYmVyKQorICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6YXR0cmli
dXRlIHZhbHVlOm51bWJlciByYW5nZTpyYW5nZV07CisgICAgZWxzZQorICAgICAgICBbYXR0clN0
cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKK30KKworc3RhdGlj
IHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
KiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1JhbmdlIHJhbmdlKQorewor
ICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CisKKyAgICAvLyBzZXQgYmFzaWMg
Zm9udCBpbmZvCisgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRGb250KGF0dHJTdHJpbmcsIHN0eWxl
LmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5nZXRDVEZvbnQoKSwgcmFuZ2UpOworCisgICAg
YXV0byBkZWNvciA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7CisgICAgaWYgKGRl
Y29yICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKKyAgICAgICAgQVhBdHRyaWJ1dGVTdHJp
bmdTZXROdW1iZXIoYXR0clN0cmluZywgVUlBY2Nlc3NpYmlsaXR5VG9rZW5VbmRlcmxpbmUsIEBZ
RVMsIHJhbmdlKTsKKworICAgIC8vIEFkZCBjb2RlIGNvbnRleHQgaWYgdGhpcyBub2RlIGlzIHdp
dGhpbiBhIDxjb2RlPiBibG9jay4KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9
IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVy
ZXIpOworICAgIGF1dG8gbWF0Y2hGdW5jID0gW10gKGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBvYmplY3Qubm9kZSgpICYmIG9iamVjdC5ub2RlKCktPmhhc1Rh
Z05hbWUoY29kZVRhZyk7CisgICAgfTsKKworICAgIGlmIChjb25zdCBBWENvcmVPYmplY3QqIHBh
cmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBWENvcmVPYmplY3Q+KCpheE9iamVj
dCwgdHJ1ZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0
cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRleHRBdHRyaWJ1dGVDb250ZXh0IHZhbHVlOlVJQWNjZXNz
aWJpbGl0eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSByYW5nZTpyYW5nZV07Cit9CisKK3N0YXRp
YyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyogYXR0clN0cmluZywgTm9kZSogbm9kZSwgTlNTdHJpbmcgKnRleHQpCit7CisgICAgLy8g
c2tpcCBpbnZpc2libGUgdGV4dAorICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gZWFzaWVyIHRvIGNhbGN1bGF0ZSB0aGUgcmFuZ2UgYmVmb3JlIGFw
cGVuZGluZyB0aGUgc3RyaW5nCisgICAgTlNSYW5nZSBhdHRyU3RyaW5nUmFuZ2UgPSBOU01ha2VS
YW5nZShbYXR0clN0cmluZyBsZW5ndGhdLCBbdGV4dCBsZW5ndGhdKTsKKworICAgIC8vIGFwcGVu
ZCB0aGUgc3RyaW5nIGZyb20gdGhpcyBub2RlCisgICAgW1thdHRyU3RyaW5nIG11dGFibGVTdHJp
bmddIGFwcGVuZFN0cmluZzp0ZXh0XTsKKworICAgIC8vIHNldCBuZXcgYXR0cmlidXRlcworICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoYXR0clN0cmluZywgbm9kZS0+cmVuZGVyZXIoKSwg
YXR0clN0cmluZ1JhbmdlKTsKKyAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChh
dHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOworICAgIEFYQXR0
cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVy
KCksIGF0dHJTdHJpbmdSYW5nZSk7CisgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShh
dHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOworfQorCisvLyBS
ZXR1cm5zIGFuIGFycmF5IG9mIHN0cmluZ3MgYW5kIEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIHRleHQKKy8vIHJ1bnMgYW5kIHJlcGxhY2VtZW50IG5vZGVzIGluY2x1ZGVk
IGluIHRoZSBnaXZlbiByYW5nZS4KKy0gKE5TQXJyYXkgKiljb250ZW50Rm9yU2ltcGxlUmFuZ2U6
KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5nZSBhdHRyaWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQKK3sK
KyAgICBhdXRvIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CisKKyAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJhbmdlIHRvIGJ1aWxkIHRoZSBBWCBhdHRyaWJ1
dGVkIHN0cmluZy4KKyAgICBUZXh0SXRlcmF0b3IgaXQocmFuZ2UpOworICAgIGZvciAoOyAhaXQu
YXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CisgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgp
LnN0YXJ0LmNvbnRhaW5lcjsKKworICAgICAgICAvLyBOb24temVybyBsZW5ndGggbWVhbnMgdGV4
dHVhbCBub2RlLCB6ZXJvIGxlbmd0aCBtZWFucyByZXBsYWNlZCBub2RlIChBS0EgImF0dGFjaG1l
bnRzIiBpbiBBWCkuCisgICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpIHsKKyAgICAgICAg
ICAgIGlmICghYXR0cmlidXRlZCkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0IGNoZWNrIGlm
IHRoaXMgaXMgcmVwcmVzZW50ZWQgYnkgYSBsaW5rLgorICAgICAgICAgICAgICAgIGF1dG8qIGxp
bmtPYmplY3QgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNob3JFbGVtZW50Rm9yTm9kZSgmbm9k
ZSk7CisgICAgICAgICAgICAgICAgaWYgKGFkZE9iamVjdFdyYXBwZXJUb0FycmF5KGxpbmtPYmpl
Y3QsIGFycmF5LmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICAvLyBOZXh0IGNoZWNrIGlmIHRoaXMgcmVnaW9uIGlzIHJlcHJlc2VudGVkIGJ5
IGEgaGVhZGluZy4KKyAgICAgICAgICAgICAgICBhdXRvKiBoZWFkaW5nT2JqZWN0ID0gQWNjZXNz
aWJpbGl0eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKCZub2RlKTsKKyAgICAgICAgICAg
ICAgICBpZiAoYWRkT2JqZWN0V3JhcHBlclRvQXJyYXkoaGVhZGluZ09iamVjdCwgYXJyYXkuZ2V0
KCkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIFN0
cmluZyBsaXN0TWFya2VyVGV4dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0
Rm9yTm9kZUFuZFBvc2l0aW9uKCZub2RlLCBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oaXQu
cmFuZ2UoKS5zdGFydCkpOworICAgICAgICAgICAgICAgIGlmICghbGlzdE1hcmtlclRleHQuaXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Omxpc3RNYXJrZXJU
ZXh0XTsKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSB3YXMgbm90IGFuIGVsZW1lbnQgcmVwcmVz
ZW50YXRpb24sIHNvIGp1c3QgcmV0dXJuIHRoZSB0ZXh0LgorICAgICAgICAgICAgICAgIFthcnJh
eSBhZGRPYmplY3Q6aXQudGV4dCgpLmNyZWF0ZU5TU3RyaW5nKCkuZ2V0KCldOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwg
bWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGl0LnJhbmdlKCkuc3RhcnQpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAg
ICAgICBhdXRvIGF0dHJTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdB
cHBlbmRUZXh0KGF0dHJTdHJpbmcuZ2V0KCksICZub2RlLCBsaXN0TWFya2VyVGV4dCk7CisgICAg
ICAgICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6YXR0clN0cmluZy5nZXQoKV07CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXV0byBhdHRyU3RyaW5nID0gYWRvcHRO
UyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAg
ICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcuZ2V0KCksICZub2Rl
LCBpdC50ZXh0KCkuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmF0dHJTdHJpbmcuZ2V0KCldOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKE5vZGUqIHJlcGxhY2VkTm9k
ZSA9IGl0Lm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlcGxhY2VkTm9kZS0+
cmVuZGVyZXIoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9iamVjdCkKKyAgICAgICAgICAgICAg
ICAgICAgYWRkT2JqZWN0V3JhcHBlclRvQXJyYXkob2JqZWN0LCBhcnJheS5nZXQoKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYXJyYXkuYXV0b3JlbGVh
c2UoKTsKK30KKworLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVjdHNBbmRUZXh0
Cit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLnVw
ZGF0ZU9iamVjdEJhY2tpbmdTdG9yZTsKKyAgICBpZiAoIWJhY2tpbmdPYmplY3QpCisgICAgICAg
IHJldHVybiBuaWw7CisjZWxzZQorICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5
Q2FsbF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OworI2VuZGlmCisKKyAgICBhdXRvIHJhbmdlID0gYmFja2luZ09i
amVjdC0+ZWxlbWVudFJhbmdlKCk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8SW50UmVjdCwgUmV0YWluUHRyPE5TQXR0cmlidXRl
ZFN0cmluZz4+PiBsaW5lczsKKyAgICBhdXRvIHN0YXJ0ID0gVmlzaWJsZVBvc2l0aW9uIHsgbWFr
ZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJhbmdlLT5zdGFydCkgfTsKKyAgICBhdXRvIHJhbmdl
RW5kID0gVmlzaWJsZVBvc2l0aW9uIHsgbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJhbmdl
LT5lbmQpIH07CisgICAgd2hpbGUgKCFzdGFydC5pc051bGwoKSAmJiBzdGFydCA8PSByYW5nZUVu
ZCkgeworICAgICAgICBhdXRvIGVuZCA9IGJhY2tpbmdPYmplY3QtPm5leHRMaW5lRW5kUG9zaXRp
b24oc3RhcnQpOworICAgICAgICBpZiAoZW5kIDw9IHN0YXJ0KQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgYXV0byByZWN0ID0gYmFja2luZ09iamVjdC0+Ym91bmRzRm9yVmlzaWJsZVBv
c2l0aW9uUmFuZ2Uoe3N0YXJ0LCBlbmR9KTsKKworICAgICAgICBhdXRvIGxpbmVSYW5nZSA9IG1h
a2VTaW1wbGVSYW5nZShzdGFydCwgZW5kKTsKKyAgICAgICAgaWYgKCFsaW5lUmFuZ2UpCisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBOU0FycmF5ICpjb250ZW50ID0gW3NlbGYgY29udGVu
dEZvclNpbXBsZVJhbmdlOipsaW5lUmFuZ2UgYXR0cmlidXRlZDpZRVNdOworICAgICAgICBhdXRv
IHRleHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0p
OworICAgICAgICBmb3IgKGlkIGl0ZW0gaW4gY29udGVudCkgeworICAgICAgICAgICAgaWYgKFtp
dGVtIGlzS2luZE9mQ2xhc3M6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSkKKyAgICAgICAgICAg
ICAgICBbdGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOml0ZW1dOworICAgICAgICAgICAgZWxz
ZSBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5j
bGFzc10pIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgICAgICAgICAgYXV0byAqd3JhcHBl
ciA9IHN0YXRpY19jYXN0PFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICo+KGl0ZW0pOwor
ICAgICAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0Owor
ICAgICAgICAgICAgICAgIGlmICghb2JqZWN0KQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgICAgIE5TU3RyaW5nICpsYWJlbDsKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKG9iamVjdC0+cm9sZVZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OgorICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IG9i
amVjdC0+c3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U6IHsKKyAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nIG5hbWUgPSBvYmplY3QtPnRpdGxlQXR0cmlidXRlVmFsdWUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbmFtZSA9IG9iamVjdC0+ZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpOworICAgICAgICAg
ICAgICAgICAgICBsYWJlbCA9IG5hbWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBsYWJlbCA9IG5pbDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgICAgICBOU1N0cmluZyAqbGFiZWwgPSBzdGF0aWNf
Y2FzdDxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqPihpdGVtKS5hY2Nlc3NpYmlsaXR5
TGFiZWw7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAoIWxhYmVsKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlZExhYmVs
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6bGFi
ZWxdKTsKKyAgICAgICAgICAgICAgICBbdGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmF0dHJp
YnV0ZWRMYWJlbC5nZXQoKV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGlu
ZXMuYXBwZW5kKHtyZWN0LCB0ZXh0fSk7CisKKyAgICAgICAgc3RhcnQgPSBlbmQ7CisgICAgICAg
IC8vIElmIHN0YXJ0IGlzIGF0IGEgaGFyZCBicmVha2xpbmUgIlxuIiwgbW92ZSB0byB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUuCisgICAgICAgIHdoaWxlIChpc0VuZE9mTGluZShzdGFy
dCkpIHsKKyAgICAgICAgICAgIGVuZCA9IHN0YXJ0Lm5leHQoKTsKKyAgICAgICAgICAgIGF1dG8g
ZW5kT2ZMaW5lUmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnQsIGVuZCk7CisgICAgICAgICAg
ICBpZiAoIWVuZE9mTGluZVJhbmdlKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBUZXh0SXRlcmF0b3IgaXQoKmVuZE9mTGluZVJhbmdlKTsKKyAgICAgICAgICAgIGlmIChp
dC5hdEVuZCgpIHx8IGl0LnRleHQoKS5sZW5ndGgoKSAhPSAxIHx8IGl0LnRleHQoKVswXSAhPSAn
XG4nKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBzdGFydCA9IGVuZDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsaW5lcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkobGluZXMsIFtzZWxmXSAoY29uc3Qg
YXV0byYgbGluZSkgeworICAgICAgICByZXR1cm4gQHsgQCJyZWN0IjogW05TVmFsdWUgdmFsdWVX
aXRoUmVjdDpbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6RmxvYXRSZWN0KGxpbmUuZmlyc3QpIHNw
YWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl1dLAorICAgICAgICAgICAg
ICAgICAgQCJ0ZXh0IjogbGluZS5zZWNvbmQuZ2V0KCkgfTsKKyAgICB9KS5hdXRvcmVsZWFzZSgp
OworfQorCiAtIChOU1N0cmluZyAqKWFyaWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbgogewogICAg
IHJldHVybiBzZWxmLmF4QmFja2luZ09iamVjdC0+YXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDNmODU1NzM0
NmM4ZjkyMDFiZjA1MWFjODk2MzIxMDIzOWExMjhiMmQuLjNlNzFjMzdkMjYyMGFhMjQwNmVjZTJi
MGIyYTQxOTViOWE2YjExMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCkBAIC0yMzcyLDYgKzIzNzIsMTIgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtzZWxmIHBhdGhdOwogCisgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYTGluZVJlY3RzQW5kVGV4dCJd
KSB7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZh
bHVlRnJvbU1haW5UaHJlYWQ8TlNBcnJheSAqPihbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKV0gKCkgLT4gUmV0YWluUHRyPE5TQXJyYXk+IHsKKyAgICAgICAgICAgIHJldHVybiBwcm90
ZWN0ZWRTZWxmLmdldCgpLmxpbmVSZWN0c0FuZFRleHQ7CisgICAgICAgIH0pOworICAgIH0KKwog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW1h
Z2VPdmVybGF5RWxlbWVudHNBdHRyaWJ1dGVdKSB7CiAgICAgICAgIGF1dG8gaW1hZ2VPdmVybGF5
RWxlbWVudHMgPSBiYWNraW5nT2JqZWN0LT5pbWFnZU92ZXJsYXlFbGVtZW50cygpOwogICAgICAg
ICByZXR1cm4gaW1hZ2VPdmVybGF5RWxlbWVudHMgPyBjb252ZXJ0VG9OU0FycmF5KCppbWFnZU92
ZXJsYXlFbGVtZW50cykgOiBuaWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMWViOTFlNzFkMjMzYWRlY2RkNDc1ZDcyMTk5YjA4MDIzOTU5Mjk1
Mi4uNDQwYWYyM2E3YWFiMjlkNDExZTAyYzU5ZjYwOTdhMmE5NjdjODgxOCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDIxLTA4LTE0ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAg
ICAgICBFeHBvc2UgW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGxpbmVSZWN0c0FuZFRl
eHRdIG9uIE1hY09TLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDQ1CisgICAgICAgIDxyZGFyOi8vODE4MTkzMDE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yRWxlbWVudCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVSZWN0c0FuZFRleHQgY29uc3QpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmVSZWN0c0FuZFRleHQgY29uc3QpOgorCiAyMDIxLTA4LTExICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYSBlbGVtZW50IGlzIG5vdCBhbHdheXMg
YXV0b3BsYXlpbmcgd2hlbiBnb2luZyBmcm9tIGJhY2tncm91bmQgdG8gZm9yZWdyb3VuZCBpZiBp
dCBpcyBpbml0aWFsbHkgbm90IGluIHZpZXdwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcAppbmRleCBhYTZhM2UyYzM2Njc3MzMxMzA2NTg4YTZkMGFmNDRhZTE3ZGNiZWU4Li43N2Ey
MjUyYTFkN2M5MzFmYWQ4OWJiZGY0YjM1ZWY4NTI5NTVjZjMyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAKQEAgLTg3LDcgKzg3LDYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0luRGVmaW5pdGlvbkxpc3RUZXJtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0QXJlYSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTWF0Y2hlc1RleHROZWFyTWFya2VycyhKU1N0cmlu
Z1JlZiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciop
IHsgcmV0dXJuIG51bGxwdHI7IH0KIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yRWxlbWVudCgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojps
aW5lUmVjdHNBbmRUZXh0KCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzSW5UYWJsZUNlbGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luVGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luTGFuZG1hcmsoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtMTE2LDYgKzExNSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNPblNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb21JZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmN1cnJlbnRTdGF0ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNv
cnREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVJlY3RzQW5kVGV4dCgpIGNvbnN0
IHsgcmV0dXJuIHsgfTsgfQogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdo
dFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KikgeyByZXR1cm4gbnVsbHB0cjsgfQogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggYzEyOTBkMWQ2Yzhk
NmQ5ODQ4ZmEzYmRkYjY1NmY4MmFlNDdlY2YwMi4uMTM5MWIzOWIxOGFkNWI3Y2ExOGU5YjI5Njhm
NzM3NWMzYjUyODcxZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tCkBAIC04NDQsNiArODQ0LDE4IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
bGlja1BvaW50WSgpCiAgICAgcmV0dXJuIDAuMGY7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lUmVjdHNBbmRUZXh0KCkgY29uc3QKK3sK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBsaW5lUmVjdHNBbmRUZXh0ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmVSZWN0c0FuZFRl
eHQiXTsKKyAgICBpZiAoIVtsaW5lUmVjdHNBbmRUZXh0IGlzS2luZE9mQ2xhc3M6TlNBcnJheS5j
bGFzc10pCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIFtbbGluZVJlY3RzQW5kVGV4
dCBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCJ8Il0gY3JlYXRlSlNTdHJpbmdSZWZdOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiB7IH07Cit9CisKIGRvdWJsZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTU2MDg2MzNlZTA1ZDBjZTk1OGZmN2RkZDRmZmNjZTAx
NWY0Y2M1MS4uNmFkZTYwMmQ2ZTg5MTMyNTJiNDI3YjVhMTY1NThkZTVjMGU2MTE3NCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE2IEBACisyMDIxLTA4LTE0ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIy
QGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGxpbmVSZWN0c0FuZFRleHRdIG9uIE1hY09TLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDQ1CisgICAgICAgIDxyZGFyOi8vODE4MTkzMDE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2VsZW1lbnQtbGluZS1yZWN0cy1hbmQtdGV4dC5odG1sOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2VsZW1lbnQtbGluZS1yZWN0
cy1hbmQtdGV4dC5odG1sLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L2VsZW1lbnQtbGluZS1yZWN0
cy1hbmQtdGV4dC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2lvcy1zaW11bGF0b3IvZWxlbWVudC1saW5lLXJlY3RzLWFuZC10ZXh0LWV4cGVjdGVk
LnR4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9lbGVtZW50LWxpbmUt
cmVjdHMtYW5kLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAyMS0wOC0xMSAgQWRpdHlh
IEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI3
MzA3Mik6IENhcHMgbG9jayBpbmRpY2F0b3IgaW4gcGFzc3dvcmQgZmllbGQgaXMgdG9vIGxhcmdl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2VsZW1lbnQtbGluZS1yZWN0
cy1hbmQtdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9lbGVtZW50LWxpbmUt
cmVjdHMtYW5kLXRleHQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43MTVlMGUyYjIxNzNhZjEzYzdhMzhiYWVl
ODQ3ZjgxNWRiYzM2Njg1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJp
bGl0eS9lbGVtZW50LWxpbmUtcmVjdHMtYW5kLXRleHQuaHRtbApAQCAtMCwwICsxLDU1IEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+
Cis8L2hlYWQ+Cis8Ym9keT4KKworPGRpdiBpZD0idGV4dCIgcm9sZT0iZ3JvdXAiPgorVGhpcyBp
cyBzb21lIHRlc3RpbmcgY29udGVudC4KKzxhIGhyZWY9IiMiPkEgbGluayBoZXJlLjwvYT4KK01P
cmUgdGV4dC48YnIvPno8YnIvPgorQW5vdGhlciBsaW5lIG9mIHRleHQuPGJyLz4KKworPGltZyBz
cmM9Ii4uL3Jlc291cmNlcy9jYWtlLnBuZyIgYWx0PSJjYWtlIj48YnIvPgorCis8c3ZnIGlkPSJz
dmciIHdpZHRoPSIzMDBweCIgaGVpZ2h0PSIyMDBweCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3Jn
LzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+Cisg
ICAgPGRlZnM+CisgICAgICAgIDxwYXRoIGlkPSJUZXh0UGF0aDEiIGQ9Ik0gMTAsMTUwIEEgMTUg
MTUgMTgwIDAgMSA3MCAxNDAgQTE1IDI1IDE4MCAwIDAgMTMwIDEzMCBBMTUgNTUgMTgwIDAgMSAx
OTAgMTEwIiAvPgorICAgIDwvZGVmcz4KKyAgICA8dGV4dCBmb250LXNpemU9IjE0Ij4KKyAgICAg
IDx0ZXh0UGF0aCB4bGluazpocmVmPSIjVGV4dFBhdGgxIj4KKyAgICAgICAgICAgSmFjayBhbmQg
SmlsbCB3ZW50IHVwIHRoZSBoaWxsIHRvIGZldGNoIGEgcGFpbCBvZiB3YXRlci4gSmFjayBmZWxs
IGRvd24uLi4KKyAgICAgIDwvdGV4dFBhdGg+CisgICAgPC90ZXh0PgorPC9zdmc+CisKKzwhLS0g
UGFyYWdyYXBoIHdpdGggc29mdCBsaW5lYnJlYWtzIGFmdGVyIHNwYWNlIGFuZCBkYXNoLiAtLT4K
KzxwPmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSBhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ejAxMjM0NTY3ODkgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5
LWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1hYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ejAxMjM0NTY3ODk8L3A+Cis8L2Rpdj4KKworPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+
Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBkZXNjcmlwdGlvbigi
VGhpcyB0ZXN0cyB0aGF0IGxpbmVSZWN0c0FuZFRleHQgcmV0dXJucyB0aGUgY29ycmVjdCB2YWx1
ZXMuIik7CisKKyAgICBpZiAod2luZG93LmFjY2Vzc2liaWxpdHlDb250cm9sbGVyKSB7CisgICAg
ICAgIGxldCB0ZXh0ID0gYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuYWNjZXNzaWJsZUVsZW1lbnRC
eUlkKCJ0ZXh0Iik7CisgICAgICAgIGxldCBsaW5lUmVjdHNBbmRUZXh0ID0gdGV4dC5saW5lUmVj
dHNBbmRUZXh0OworCisgICAgICAgIGxpbmVSZWN0c0FuZFRleHQuc3BsaXQoInwiKS5mb3JFYWNo
KChsaW5lKSA9PiB7CisgICAgICAgICAgICBsZXQgdGV4dCA9IGxpbmUubWF0Y2goL3RleHQgPSBc
Ii4qXCI7Lyk7CisgICAgICAgICAgICBkZWJ1Zyh0ZXh0WzBdKTsKKworICAgICAgICAgICAgLy8g
Q2Fubm90IGxvZyByZWN0IGNvb3JkaW5hdGVzIGJlY2F1c2UgaXQgd291bGQgdmFyeSBmcm9tIGRl
dmljZSB0byBkZXZpY2UuCisgICAgICAgICAgICAvLyBUaHVzLCBnZXQgdGhlIHJlY3RzIHdpZHRo
IGFuZCBoZWlnaHQgYW5kIG1ha2Ugc3VyZSB0aGV5IGFyZSA+IDAuCisgICAgICAgICAgICBsZXQg
c2l6ZSA9IGxpbmUubWF0Y2goL05TUmVjdDoge3stKltcZF0rLCAtKltcZF0rfSwgeyhbXGRdKyks
IChbXGRdKyl9fS8pOworICAgICAgICAgICAgZGVidWcoYHdpZHRoID4gMDogJHtzaXplWzFdID4g
MH1gKTsKKyAgICAgICAgICAgIGRlYnVnKGBoZWlnaHQgPiAwOiAke3NpemVbMl0gPiAwfWApOwor
ICAgICAgICB9KTsKKyAgICB9Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9lbGVtZW50LWxpbmUtcmVj
dHMtYW5kLXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mt
c2ltdWxhdG9yL2VsZW1lbnQtbGluZS1yZWN0cy1hbmQtdGV4dC1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkY2JkMWM1OTgwYjIyOTg3Njc5MWI0NDhiNzg0Yjdk
NzY0MDFmODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2VsZW1lbnQtbGluZS1yZWN0
cy1hbmQtdGV4dC1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1U
aGlzIGlzIHNvbWUgdGVzdGluZyBjb250ZW50LiBBIGxpbmsgaGVyZS4gTU9yZSB0ZXh0Lgotegot
QW5vdGhlciBsaW5lIG9mIHRleHQuCi0KLUphY2sgYW5kIEppbGwgd2VudCB1cCB0aGUgaGlsbCB0
byBmZXRjaCBhIHBhaWwgb2Ygd2F0ZXIuIEphY2sgZmVsbCBkb3duLi4uCi1hYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2
Nzg5IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1hYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5
Ci0KLVRoaXMgdGVzdHMgdGhhdCBsaW5lUmVjdHNBbmRUZXh0IHJldHVybnMgdGhlIGNvcnJlY3Qg
dmFsdWVzLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotdGV4dCA9ICJUaGlzIGlz
IHNvbWUgdGVzdGluZyBjb250ZW50LiB7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFt
aWx5ID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRO
YW1lID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRT
aXplID0gMTY7XG59QSBsaW5rIGhlcmUue1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZh
bWlseSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250
TmFtZSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250
U2l6ZSA9IDE2O1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuVW5kZXJsaW5lID0gMTtcbn0gTU9y
ZSB0ZXh0LntcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBcIlRpbWVzIE5l
dyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIE5l
dyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxNjtcbn0iOwot
d2lkdGggPiAwOiB0cnVlCi1oZWlnaHQgPiAwOiB0cnVlCi10ZXh0ID0gInp7XG4gICAgVUlBY2Nl
c3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFj
Y2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFj
Y2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTY7XG59IjsKLXdpZHRoID4gMDogdHJ1ZQotaGVp
Z2h0ID4gMDogdHJ1ZQotdGV4dCA9ICJBbm90aGVyIGxpbmUgb2YgdGV4dC57XG4gICAgVUlBY2Nl
c3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFj
Y2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFj
Y2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTY7XG59IjsKLXdpZHRoID4gMDogdHJ1ZQotaGVp
Z2h0ID4gMDogdHJ1ZQotdGV4dCA9ICJjYWtle1xufSI7Ci13aWR0aCA+IDA6IHRydWUKLWhlaWdo
dCA+IDA6IHRydWUKLXRleHQgPSAiSmFjayBhbmQgSmlsbCB3ZW50IHVwIHRoZSBoaWxsIHRvIGZl
dGNoIGEgcGFpbCBvZiB3YXRlci4gSmFjayBmZWxsIGRvd24uLi57XG4gICAgVUlBY2Nlc3NpYmls
aXR5VG9rZW5Gb250RmFtaWx5ID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2li
aWxpdHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2li
aWxpdHlUb2tlbkZvbnRTaXplID0gMTQ7XG59IjsKLXdpZHRoID4gMDogdHJ1ZQotaGVpZ2h0ID4g
MDogdHJ1ZQotdGV4dCA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkgYWJj
ZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IHtcbiAgICBVSUFjY2Vzc2liaWxpdHlU
b2tlbkZvbnRGYW1pbHkgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0
eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0
eVRva2VuRm9udFNpemUgPSAxNjtcbn0iOwotd2lkdGggPiAwOiB0cnVlCi1oZWlnaHQgPiAwOiB0
cnVlCi10ZXh0ID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1hYmNkZWZn
aGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkte1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2Vu
Rm9udEZhbWlseSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9r
ZW5Gb250TmFtZSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9r
ZW5Gb250U2l6ZSA9IDE2O1xufSI7Ci13aWR0aCA+IDA6IHRydWUKLWhlaWdodCA+IDA6IHRydWUK
LXRleHQgPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5e1xuICAgIFVJQWNj
ZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlB
Y2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlB
Y2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2O1xufSI7Ci13aWR0aCA+IDA6IHRydWUKLWhl
aWdodCA+IDA6IHRydWUKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKLQotVEVTVCBD
T01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5L2lvcy1zaW11
bGF0b3IvZWxlbWVudC1saW5lLXJlY3RzLWFuZC10ZXh0Lmh0bWwgYi9MYXlvdXRUZXN0cy9hY2Nl
c3NpYmlsaXR5L2lvcy1zaW11bGF0b3IvZWxlbWVudC1saW5lLXJlY3RzLWFuZC10ZXh0Lmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkYTBmMDIxOTA4OWQ2Zjk5NWVkODhjY2Zh
ZTg1MWY0NDE3YjA5ZTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2VsZW1lbnQtbGlu
ZS1yZWN0cy1hbmQtdGV4dC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgotPGh0bWw+Ci08aGVh
ZD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgotPC9oZWFkPgotPGJvZHk+Ci0KLTxkaXYgaWQ9InRleHQiIHJvbGU9Imdyb3VwIj4KLVRoaXMg
aXMgc29tZSB0ZXN0aW5nIGNvbnRlbnQuCi08YSBocmVmPSIjIj5BIGxpbmsgaGVyZS48L2E+Ci1N
T3JlIHRleHQuPGJyLz56PGJyLz4KLUFub3RoZXIgbGluZSBvZiB0ZXh0Ljxici8+Ci0KLTxpbWcg
c3JjPSIuLi9yZXNvdXJjZXMvY2FrZS5wbmciIGFsdD0iY2FrZSI+PGJyLz4KLQotPHN2ZyBpZD0i
c3ZnIiB3aWR0aD0iMzAwcHgiIGhlaWdodD0iMjAwcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9y
Zy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgot
ICAgIDxkZWZzPgotICAgICAgICA8cGF0aCBpZD0iVGV4dFBhdGgxIiBkPSJNIDEwLDE1MCBBIDE1
IDE1IDE4MCAwIDEgNzAgMTQwIEExNSAyNSAxODAgMCAwIDEzMCAxMzAgQTE1IDU1IDE4MCAwIDEg
MTkwIDExMCIgLz4KLSAgICA8L2RlZnM+Ci0gICAgPHRleHQgZm9udC1zaXplPSIxNCI+Ci0gICAg
ICA8dGV4dFBhdGggeGxpbms6aHJlZj0iI1RleHRQYXRoMSI+Ci0gICAgICAgICAgIEphY2sgYW5k
IEppbGwgd2VudCB1cCB0aGUgaGlsbCB0byBmZXRjaCBhIHBhaWwgb2Ygd2F0ZXIuIEphY2sgZmVs
bCBkb3duLi4uCi0gICAgICA8L3RleHRQYXRoPgotICAgIDwvdGV4dD4KLTwvc3ZnPgotCi08IS0t
IFBhcmFncmFwaCB3aXRoIHNvZnQgbGluZWJyZWFrcyBhZnRlciBzcGFjZSBhbmQgZGFzaC4gLS0+
Ci08cD5hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkgYWJjZGVmZ2hpamtsbW5v
cHFyc3R1dnd4eXowMTIzNDU2Nzg5IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4
OS1hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFy
c3R1dnd4eXowMTIzNDU2Nzg5PC9wPgotPC9kaXY+Ci0KLTxwIGlkPSJkZXNjcmlwdGlvbiI+PC9w
PgotPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0KLTxzY3JpcHQ+Ci0gICAgZGVzY3JpcHRpb24o
IlRoaXMgdGVzdHMgdGhhdCBsaW5lUmVjdHNBbmRUZXh0IHJldHVybnMgdGhlIGNvcnJlY3QgdmFs
dWVzLiIpOwotCi0gICAgaWYgKHdpbmRvdy5hY2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAg
ICAgICBsZXQgdGV4dCA9IGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50
QnlJZCgidGV4dCIpOwotICAgICAgICBsZXQgbGluZVJlY3RzQW5kVGV4dCA9IHRleHQubGluZVJl
Y3RzQW5kVGV4dDsKLQotICAgICAgICBsaW5lUmVjdHNBbmRUZXh0LnNwbGl0KCJ8IikuZm9yRWFj
aCgobGluZSkgPT4gewotICAgICAgICAgICAgbGV0IHRleHQgPSBsaW5lLm1hdGNoKC90ZXh0ID0g
XCIuKlwiOy8pOwotICAgICAgICAgICAgZGVidWcodGV4dFswXSk7Ci0KLSAgICAgICAgICAgIC8v
IENhbm5vdCBsb2cgcmVjdCBjb29yZGluYXRlcyBiZWNhdXNlIGl0IHdvdWxkIHZhcnkgZnJvbSBk
ZXZpY2UgdG8gZGV2aWNlLgotICAgICAgICAgICAgLy8gVGh1cywgZ2V0IHRoZSByZWN0cyB3aWR0
aCBhbmQgaGVpZ2h0IGFuZCBtYWtlIHN1cmUgdGhleSBhcmUgPiAwLgotICAgICAgICAgICAgbGV0
IHNpemUgPSBsaW5lLm1hdGNoKC9OU1JlY3Q6IHt7W1xkXSssIFtcZF0rfSwgeyhbXGRdKyksIChb
XGRdKyl9fS8pOwotICAgICAgICAgICAgZGVidWcoYHdpZHRoID4gMDogJHtzaXplWzFdID4gMH1g
KTsKLSAgICAgICAgICAgIGRlYnVnKGBoZWlnaHQgPiAwOiAke3NpemVbMl0gPiAwfWApOwotICAg
ICAgICB9KTsKLSAgICB9Ci08L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggNmU2MGY0ZjBlOWU3Y2I2NTZiNGIz
YTNjOWVhZjg3ZTY2MmU0MTQ1OC4uNWY5OWY5ZDA2YmQ4NWJkNDRkZWJlNWNhNDFlMmE3NzYzODY5
MTY2ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIx
MDQsNiArMjEwNCw3IEBAIGFjY2Vzc2liaWxpdHkvYXJpYS1zb3J0LWNoYW5nZWQtbm90aWZpY2F0
aW9uLmh0bWwgWyBQYXNzIF0KIHdlYmtpdC5vcmcvYi8xNTAzNjYgYWNjZXNzaWJpbGl0eS9hcmlh
LXRhYmxlLWF0dHJpYnV0ZXMuaHRtbCBbIFBhc3MgXQogCiBhY2Nlc3NpYmlsaXR5L3NlbGVjdGVk
LXN0YXRlLWNoYW5nZWQtbm90aWZpY2F0aW9ucy5odG1sIFsgUGFzcyBdCithY2Nlc3NpYmlsaXR5
L2VsZW1lbnQtbGluZS1yZWN0cy1hbmQtdGV4dC5odG1sIFsgUGFzcyBdCiAKICMgRW5hYmxlICJh
dHRhY2htZW50IGVsZW1lbnQiIHRlc3QgZm9yIGlPUwogYWNjZXNzaWJpbGl0eS9hdHRhY2htZW50
LWVsZW1lbnQuaHRtbCBbIFBhc3MgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
aW9zL2FjY2Vzc2liaWxpdHkvZWxlbWVudC1saW5lLXJlY3RzLWFuZC10ZXh0LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L2VsZW1lbnQtbGluZS1y
ZWN0cy1hbmQtdGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmRjYmQxYzU5ODBiMjI5ODc2
NzkxYjQ0OGI3ODRiN2Q3NjQwMWY4OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L2VsZW1lbnQtbGluZS1yZWN0cy1hbmQtdGV4dC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSw0MCBAQAorVGhpcyBpcyBzb21lIHRlc3RpbmcgY29udGVudC4g
QSBsaW5rIGhlcmUuIE1PcmUgdGV4dC4KK3oKK0Fub3RoZXIgbGluZSBvZiB0ZXh0LgorCitKYWNr
IGFuZCBKaWxsIHdlbnQgdXAgdGhlIGhpbGwgdG8gZmV0Y2ggYSBwYWlsIG9mIHdhdGVyLiBKYWNr
IGZlbGwgZG93bi4uLgorYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IGFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5
ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LWFiY2RlZmdo
aWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OQorCitUaGlzIHRlc3RzIHRoYXQgbGluZVJlY3Rz
QW5kVGV4dCByZXR1cm5zIHRoZSBjb3JyZWN0IHZhbHVlcy4KKworT24gc3VjY2VzcywgeW91IHdp
bGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09N
UExFVEUiLgorCisKK3RleHQgPSAiVGhpcyBpcyBzb21lIHRlc3RpbmcgY29udGVudC4ge1xuICAg
IFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4g
ICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4g
ICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2O1xufUEgbGluayBoZXJlLntcbiAg
ICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xu
ICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xu
ICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxNjtcbiAgICBVSUFjY2Vzc2liaWxp
dHlUb2tlblVuZGVybGluZSA9IDE7XG59IE1PcmUgdGV4dC57XG4gICAgVUlBY2Nlc3NpYmlsaXR5
VG9rZW5Gb250RmFtaWx5ID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxp
dHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxp
dHlUb2tlbkZvbnRTaXplID0gMTY7XG59IjsKK3dpZHRoID4gMDogdHJ1ZQoraGVpZ2h0ID4gMDog
dHJ1ZQordGV4dCA9ICJ6e1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFwi
VGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwi
VGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2
O1xufSI7Cit3aWR0aCA+IDA6IHRydWUKK2hlaWdodCA+IDA6IHRydWUKK3RleHQgPSAiQW5vdGhl
ciBsaW5lIG9mIHRleHQue1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFwi
VGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwi
VGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2
O1xufSI7Cit3aWR0aCA+IDA6IHRydWUKK2hlaWdodCA+IDA6IHRydWUKK3RleHQgPSAiY2FrZXtc
bn0iOword2lkdGggPiAwOiB0cnVlCitoZWlnaHQgPiAwOiB0cnVlCit0ZXh0ID0gIkphY2sgYW5k
IEppbGwgd2VudCB1cCB0aGUgaGlsbCB0byBmZXRjaCBhIHBhaWwgb2Ygd2F0ZXIuIEphY2sgZmVs
bCBkb3duLi4ue1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFwiVGltZXMg
TmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGltZXMg
TmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE0O1xufSI7
Cit3aWR0aCA+IDA6IHRydWUKK2hlaWdodCA+IDA6IHRydWUKK3RleHQgPSAiYWJjZGVmZ2hpamts
bW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1
Njc4OSB7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gXCJUaW1lcyBOZXcg
Um9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBOZXcg
Um9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTY7XG59IjsKK3dp
ZHRoID4gMDogdHJ1ZQoraGVpZ2h0ID4gMDogdHJ1ZQordGV4dCA9ICJhYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5
LXtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBcIlRpbWVzIE5ldyBSb21h
blwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIE5ldyBSb21h
blwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxNjtcbn0iOword2lkdGgg
PiAwOiB0cnVlCitoZWlnaHQgPiAwOiB0cnVlCit0ZXh0ID0gImFiY2RlZmdoaWprbG1ub3BxcnN0
dXZ3eHl6MDEyMzQ1Njc4OXtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBc
IlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBc
IlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAx
Njtcbn0iOword2lkdGggPiAwOiB0cnVlCitoZWlnaHQgPiAwOiB0cnVlCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZWxlbWVudC1saW5lLXJlY3RzLWFuZC10
ZXh0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5
L2VsZW1lbnQtbGluZS1yZWN0cy1hbmQtdGV4dC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzIw
ZDYxYjFmYjhhYmQwZjFjOTVhZTc4ODZjZGZhYjBlMDQ3NWU2YgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L2VsZW1lbnQtbGluZS1yZWN0
cy1hbmQtdGV4dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0MCBAQAorVGhpcyBpcyBzb21lIHRl
c3RpbmcgY29udGVudC4gQSBsaW5rIGhlcmUuIE1PcmUgdGV4dC4KK3oKK0Fub3RoZXIgbGluZSBv
ZiB0ZXh0LgorCitKYWNrIGFuZCBKaWxsIHdlbnQgdXAgdGhlIGhpbGwgdG8gZmV0Y2ggYSBwYWls
IG9mIHdhdGVyLiBKYWNrIGZlbGwgZG93bi4uLgorYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXow
MTIzNDU2Nzg5IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSBhYmNkZWZnaGlq
a2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIz
NDU2Nzg5LWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OQorCitUaGlzIHRlc3Rz
IHRoYXQgbGluZVJlY3RzQW5kVGV4dCByZXR1cm5zIHRoZSBjb3JyZWN0IHZhbHVlcy4KKworT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK3RleHQgPSAiVGhpcyBpcyBzb21lIHRlc3Rpbmcg
Y29udGVudC4ge1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFRpbWVzO1xu
ICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIFJvbWFuXCI7XG4gICAg
VUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2O1xufUEgbGluayBoZXJlLntcbiAgICBV
SUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBUaW1lcztcbiAgICBVSUFjY2Vzc2liaWxp
dHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRv
a2VuRm9udFNpemUgPSAxNjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlblVuZGVybGluZSA9IDE7
XG59IE1PcmUgdGV4dC57XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gVGlt
ZXM7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGltZXMgUm9tYW5cIjtc
biAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTY7XG59IjsKK3dpZHRoID4gMDog
dHJ1ZQoraGVpZ2h0ID4gMDogdHJ1ZQordGV4dCA9ICJ6e1xuICAgIFVJQWNjZXNzaWJpbGl0eVRv
a2VuRm9udEZhbWlseSA9IFRpbWVzO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUg
PSBcIlRpbWVzIFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2
O1xufSI7Cit3aWR0aCA+IDA6IHRydWUKK2hlaWdodCA+IDA6IHRydWUKK3RleHQgPSAiQW5vdGhl
ciBsaW5lIG9mIHRleHQue1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFRp
bWVzO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIFJvbWFuXCI7
XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2O1xufSI7Cit3aWR0aCA+IDA6
IHRydWUKK2hlaWdodCA+IDA6IHRydWUKK3RleHQgPSAiY2FrZXtcbn0iOword2lkdGggPiAwOiB0
cnVlCitoZWlnaHQgPiAwOiB0cnVlCit0ZXh0ID0gIkphY2sgYW5kIEppbGwgd2VudCB1cCB0aGUg
aGlsbCB0byBmZXRjaCBhIHBhaWwgb2Ygd2F0ZXIuIEphY2sgZmVsbCBkb3duLi4ue1xuICAgIFVJ
QWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFRpbWVzO1xuICAgIFVJQWNjZXNzaWJpbGl0
eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9r
ZW5Gb250U2l6ZSA9IDE0O1xufSI7Cit3aWR0aCA+IDA6IHRydWUKK2hlaWdodCA+IDA6IHRydWUK
K3RleHQgPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IGFiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSB7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250
RmFtaWx5ID0gVGltZXM7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGlt
ZXMgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTY7XG59IjsK
K3dpZHRoID4gMDogdHJ1ZQoraGVpZ2h0ID4gMDogdHJ1ZQordGV4dCA9ICJhYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2
Nzg5LXtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBUaW1lcztcbiAgICBV
SUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBSb21hblwiO1xuICAgIFVJQWNj
ZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxNjtcbn0iOword2lkdGggPiAwOiB0cnVlCitoZWln
aHQgPiAwOiB0cnVlCit0ZXh0ID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4
OXtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBUaW1lcztcbiAgICBVSUFj
Y2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBSb21hblwiO1xuICAgIFVJQWNjZXNz
aWJpbGl0eVRva2VuRm9udFNpemUgPSAxNjtcbn0iOword2lkdGggPiAwOiB0cnVlCitoZWlnaHQg
PiAwOiB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExF
VEUKKwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435563</attachid>
            <date>2021-08-15 08:01:29 -0700</date>
            <delta_ts>2021-08-16 14:04:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229045-20210815110128.patch</filename>
            <type>text/plain</type>
            <size>56503</size>
            <attacher name="Andres Gonzalez">andresg_22</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgwOTI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTZjNTI4MWNiYmUxMzk2
YzhkZDA2MGZmYTY0ZDExM2U0ZTNhMTM1YS4uYzBkMmUyY2JlZjBkYWFkMjM3NDc1YjkzNTlhYjFh
NzNjY2I0YWZkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIxLTA4LTE0ICBBbmRy
ZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgW1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGxpbmVSZWN0c0FuZFRleHRdIG9uIE1hY09TLgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDQ1Cisg
ICAgICAgIDxyZGFyOi8vODE4MTkzMDE+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVGVzdDogYWNjZXNzaWJpbGl0eS9lbGVtZW50LWxpbmUtcmVjdHMt
YW5kLXRleHQuaHRtbAorCisgICAgICAgIE1vdmVkIHRoZSBbV2ViQWNjZXNzaWJpbGl0eU9iamVj
dFdyYXBwZXIgbGluZVJlY3RzQW5kVGV4dF0gbWV0aG9kLCBhbmQKKyAgICAgICAgc3VwcG9ydGlu
ZyBtZXRob2RzIGFuZCBmdW5jdGlvbnMsIGZyb20gdGhlIGlPUyBzdWJjbGFzcyB0byB0aGUgYmFz
ZQorICAgICAgICAoQ29jb2EpIGNsYXNzIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gYm90aCBp
T1MgYW5kIE1hY09TLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJp
bGl0eU9iamVjdFdyYXBwZXJJT1MubW06CisgICAgICAgIE1vdmVkIHRoZSBmb2xsb3dpbmcgbWV0
aG9kcyBhbmQgZnVuY3Rpb25zIHRvIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5t
bS4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgX3ByZXBhcmVBY2Nl
c3NpYmlsaXR5Q2FsbF0pOiBEZWxldGVkLgorICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlciBfYWRkQWNjZXNzaWJpbGl0eU9iamVjdDp0b1RleHRNYXJrZXJBcnJheTpdKTog
RGVsZXRlZC4KKyAgICAgICAgKGJsb2NrcXVvdGVMZXZlbCk6IERlbGV0ZWQuCisgICAgICAgIChB
WEF0dHJpYnV0ZVN0cmluZ1NldExhbmd1YWdlKTogRGVsZXRlZC4KKyAgICAgICAgKEFYQXR0cmli
dXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEFYQXR0cmli
dXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKTogRGVsZXRlZC4KKyAgICAgICAgKEFYQXR0cmlidXRl
U3RyaW5nU2V0Rm9udCk6IERlbGV0ZWQuCisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldE51
bWJlcik6IERlbGV0ZWQuCisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKTogRGVs
ZXRlZC4KKyAgICAgICAgKEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQpOiBEZWxldGVkLgor
ICAgICAgICAoLVtXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciBjb250ZW50Rm9yU2ltcGxl
UmFuZ2U6YXR0cmlidXRlZDpdKTogRGVsZXRlZC4KKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXIgbGluZVJlY3RzQW5kVGV4dF0pOiBEZWxldGVkLgorICAgICAgICAqIGFj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oOgorICAg
ICAgICAqIGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5tbToKKyAgICAgICAgKC1bV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlIF9wcmVw
YXJlQWNjZXNzaWJpbGl0eUNhbGxdKToKKyAgICAgICAgKGFkZE9iamVjdFdyYXBwZXJUb0FycmF5
KToKKyAgICAgICAgKGJsb2NrcXVvdGVMZXZlbCk6CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmlu
Z1NldExhbmd1YWdlKToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxl
dmVsKToKKyAgICAgICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKToKKyAgICAg
ICAgKEFYQXR0cmlidXRlU3RyaW5nU2V0Rm9udCk6CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmlu
Z1NldE51bWJlcik6CisgICAgICAgIChBWEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKToKKyAgICAg
ICAgKEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQpOgorICAgICAgICAoLVtXZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlckJhc2UgY29udGVudEZvclNpbXBsZVJhbmdlOmF0dHJpYnV0ZWQ6
XSk6CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSBsaW5lUmVj
dHNBbmRUZXh0XSk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0
eU9iamVjdFdyYXBwZXJNYWMubW06CisgICAgICAgICgtW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyIGFjY2Vzc2liaWxpdHlBdHRyaWJ1dGVWYWx1ZTpdKToKKyAgICAgICAgQWRkZWQgaGFu
ZGxpbmcgb2YgdGhlIGF0dHJpYnV0ZSAiQVhMaW5lUmVjdHNBbmRUZXh0Ii4KKwogMjAyMS0wOC0x
MSAgQWRpdHlhIEtlZXJ0aGkgIDxha2VlcnRoaUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVT
U0lPTiAocjI3MzA3Mik6IENhcHMgbG9jayBpbmRpY2F0b3IgaW4gcGFzc3dvcmQgZmllbGQgaXMg
dG9vIGxhcmdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCmluZGV4IGUx
NzY4MTYwZDNmNWQ3ODlhZWI5M2VkNjc0ZmU1ZDcxZTFkOGY3YWMuLjQwYmIxMDdkNTk2N2MxNDFj
NWYyYmM0YTMzMzBjNWUwZDNjOGRkMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vz
c2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVySU9TLm1tCkBAIC0xMDQsMjEgKzEwNCw2IEBAIHR5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIs
IFVJQWNjZXNzaWJpbGl0eVNjcm9sbERpcmVjdGlvbikgewogICAgIFVJQWNjZXNzaWJpbGl0eVNj
cm9sbERpcmVjdGlvblByZXZpb3VzCiB9OwogCi0vLyBUaGVzZSBhcmUgdG9rZW5zIGFjY2Vzc2li
aWxpdHkgdXNlcyB0byBkZW5vdGUgYXR0cmlidXRlcy4gCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBVSUFjY2Vzc2liaWxpdHlUb2tlbkJsb2NrcXVvdGVMZXZlbCA9IEAiVUlBY2Nlc3NpYmlsaXR5
VG9rZW5CbG9ja3F1b3RlTGV2ZWwiOwotc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3Np
YmlsaXR5VG9rZW5IZWFkaW5nTGV2ZWwgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xl
dmVsIjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5h
bWUgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUiOwotc3RhdGljIE5TU3RyaW5nICog
Y29uc3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gQCJVSUFjY2Vzc2liaWxpdHlU
b2tlbkZvbnRGYW1pbHkiOwotc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5
VG9rZW5Gb250U2l6ZSA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSI7Ci1zdGF0aWMg
TlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUb2tlbkJvbGQgPSBAIlVJQWNjZXNzaWJp
bGl0eVRva2VuQm9sZCI7Ci1zdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlU
b2tlbkl0YWxpYyA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5JdGFsaWMiOwotc3RhdGljIE5TU3Ry
aW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5VbmRlcmxpbmUgPSBAIlVJQWNjZXNzaWJp
bGl0eVRva2VuVW5kZXJsaW5lIjsKLXN0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJp
bGl0eVRva2VuTGFuZ3VhZ2UgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UiOwotc3Rh
dGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5BdHRhY2htZW50ID0gQCJV
SUFjY2Vzc2liaWxpdHlUb2tlbkF0dGFjaG1lbnQiOwotCi1zdGF0aWMgTlNTdHJpbmcgKiBjb25z
dCBVSUFjY2Vzc2liaWxpdHlUZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlBY2Nlc3NpYmlsaXR5
VGV4dEF0dHJpYnV0ZUNvbnRleHQiOwotc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3Np
YmlsaXR5VGV4dHVhbENvbnRleHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWxpdHlUZXh0dWFs
Q29udGV4dFNvdXJjZUNvZGUiOwotCiBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIq
IEFjY2Vzc2liaWxpdHlVbmlnbm9yZWRBbmNlc3RvcihBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBl
ciAqd3JhcHBlcikKIHsKICAgICB3aGlsZSAod3JhcHBlciAmJiAhW3dyYXBwZXIgaXNBY2Nlc3Np
YmlsaXR5RWxlbWVudF0pIHsKQEAgLTI4NywyNSArMjcyLDYgQEAgc3RhdGljIEFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyKiBBY2Nlc3NpYmlsaXR5VW5pZ25vcmVkQW5jZXN0b3IoQWNjZXNzaWJp
bGl0eU8KICAgICBbc3VwZXIgZGVhbGxvY107CiB9CiAKLS0gKEJPT0wpX3ByZXBhcmVBY2Nlc3Np
YmlsaXR5Q2FsbAotewotICAgIC8vIHJkYXI6Ly83OTgwMzE4IGlmIHdlIHN0YXJ0IGEgY2FsbCwg
dGhlbiBibG9jayBpbiBXZWJUaHJlYWRMb2NrKCksIHRoZW4gd2UncmUgZGVhbGxvY2VkIG9uIGFu
b3RoZXIsIHRocmVhZCwgd2UgY291bGQKLSAgICAvLyBjcmFzaCwgc28gd2Ugc2hvdWxkIHJldGFp
biBvdXJzZWxmIGZvciB0aGUgZHVyYXRpb24gb2YgdXNhZ2UgaGVyZS4KLSAgICByZXRhaW5QdHIo
c2VsZikuYXV0b3JlbGVhc2UoKTsKLQotICAgIFdlYlRocmVhZExvY2soKTsKLSAgICAKLSAgICAv
LyBJZiB3ZSBjYW1lIGJhY2sgZnJvbSBvdXIgdGhyZWFkIGxvY2sgYW5kIHdlIHdlcmUgZGV0YWNo
ZWQsIHdlIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYW4gc2VsZi5heEJhY2tpbmdPYmplY3QuCi0gICAg
aWYgKCFzZWxmLmF4QmFja2luZ09iamVjdCkKLSAgICAgICAgcmV0dXJuIE5POwotICAgIAotICAg
IHNlbGYuYXhCYWNraW5nT2JqZWN0LT51cGRhdGVCYWNraW5nU3RvcmUoKTsKLSAgICBpZiAoIXNl
bGYuYXhCYWNraW5nT2JqZWN0KQotICAgICAgICByZXR1cm4gTk87Ci0gICAgCi0gICAgcmV0dXJu
IFlFUzsKLX0KLQogLy8gVGhlc2UgYXJlIGhlcmUgc28gdGhhdCB3ZSBkb24ndCBoYXZlIHRvIGlt
cG9ydCBBWFJ1bnRpbWUuCiAvLyBUaGUgbWV0aG9kcyB3aWxsIGJlIHN3aXp6bGVkIHdoZW4gdGhl
IGFjY2Vzc2liaWxpdHkgYnVuZGxlIGlzIGxvYWRlZC4KIApAQCAtMjE5MiwyNiArMjE1OCw2IEBA
IHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2aWV3KQogCiAj
cHJhZ21hIG1hcmsgQWNjZXNzaWJpbGl0eSBUZXh0IE1hcmtlciBIYW5kbGVycwogCi0tIChCT09M
KV9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0OihBY2Nlc3NpYmlsaXR5T2JqZWN0KilheE9iamVjdCB0
b1RleHRNYXJrZXJBcnJheTooTlNNdXRhYmxlQXJyYXkgKilhcnJheQotewotICAgIGlmICghYXhP
YmplY3QpCi0gICAgICAgIHJldHVybiBOTzsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlciogd3JhcHBlciA9IGF4T2JqZWN0LT53cmFwcGVyKCk7Ci0gICAgaWYgKCF3cmFwcGVy
KQotICAgICAgICByZXR1cm4gTk87Ci0KLSAgICAvLyBEb24ndCBhZGQgdGhlIHNhbWUgb2JqZWN0
IHR3aWNlLCBidXQgc2luY2UgdGhpcyBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkLCB3ZSBzaG91bGQg
cmV0dXJuCi0gICAgLy8gWUVTIGJlY2F1c2Ugd2Ugd2FudCB0byBpbmZvcm0gdGhhdCBpdCdzIGlu
IHRoZSBhcnJheQotICAgIGlmIChbYXJyYXkgY29udGFpbnNPYmplY3Q6d3JhcHBlcl0pCi0gICAg
ICAgIHJldHVybiBZRVM7Ci0gICAgCi0gICAgLy8gRXhwbGljaXRseSBzZXQgdGhhdCB0aGlzIGlz
IG5vdyBhbiBlbGVtZW50IChpbiBjYXNlIG90aGVyIGxvZ2ljIHRyaWVzIHRvIG92ZXJyaWRlKS4K
LSAgICBbd3JhcHBlciBzZXRWYWx1ZTpAWUVTIGZvcktleTpAImlzQWNjZXNzaWJpbGl0eUVsZW1l
bnQiXTsgICAgCi0gICAgW2FycmF5IGFkZE9iamVjdDp3cmFwcGVyXTsKLSAgICByZXR1cm4gWUVT
OwotfQotCiAtICh2b2lkKV9hY2Nlc3NpYmlsaXR5U2V0VmFsdWU6KE5TU3RyaW5nICopc3RyaW5n
CiB7CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxpdHlDYWxsXSkKQEAgLTIyMjks
MTgyICsyMTc1LDYgQEAgc3RhdGljIFJlbmRlck9iamVjdCogcmVuZGVyZXJGb3JWaWV3KFdBS1Zp
ZXcqIHZpZXcpCiAgICAgcmV0dXJuIHNlbGYuYXhCYWNraW5nT2JqZWN0LT5zdHJpbmdGb3JSYW5n
ZSgqcmFuZ2UpOwogfQogCi1zdGF0aWMgaW50IGJsb2NrcXVvdGVMZXZlbChSZW5kZXJPYmplY3Qq
IHJlbmRlcmVyKQotewotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwotICAg
IAotICAgIGludCByZXN1bHQgPSAwOwotICAgIGZvciAoTm9kZSogbm9kZSA9IHJlbmRlcmVyLT5u
b2RlKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5wYXJlbnROb2RlKCkpIHsKLSAgICAgICAgaWYgKG5v
ZGUtPmhhc1RhZ05hbWUoYmxvY2txdW90ZVRhZykpCi0gICAgICAgICAgICByZXN1bHQgKz0gMTsK
LSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3Ry
aW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1JhbmdlIHJhbmdlKQotewotICAgIGlmICgh
cmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiBheE9iamVjdCA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JD
cmVhdGUocmVuZGVyZXIpOwotICAgIE5TU3RyaW5nICpsYW5ndWFnZSA9IGF4T2JqZWN0LT5sYW5n
dWFnZSgpOwotICAgIGlmIChbbGFuZ3VhZ2UgbGVuZ3RoXSkKLSAgICAgICAgW2F0dHJTdHJpbmcg
YWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UgdmFsdWU6bGFuZ3VhZ2Ug
cmFuZ2U6cmFuZ2VdOwotICAgIGVsc2UKLSAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmli
dXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UgcmFuZ2U6cmFuZ2VdOwotfQotCi1zdGF0
aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1Jhbmdl
IHJhbmdlKQotewotICAgIGludCBxdW90ZUxldmVsID0gYmxvY2txdW90ZUxldmVsKHJlbmRlcmVy
KTsKLSAgICAKLSAgICBpZiAocXVvdGVMZXZlbCkKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0
cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuQmxvY2txdW90ZUxldmVsIHZhbHVlOkAocXVvdGVM
ZXZlbCkgcmFuZ2U6cmFuZ2VdOwotICAgIGVsc2UKLSAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3Zl
QXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuQmxvY2txdW90ZUxldmVsIHJhbmdlOnJhbmdl
XTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRIZWFkaW5nTGV2ZWwoTlNN
dXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJl
ciwgTlNSYW5nZSByYW5nZSkKLXsKLSAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICByZXR1cm47
Ci0gICAgCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0ID0gcmVuZGVyZXIt
PmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlci0+cGFyZW50
KCkpOwotICAgIGludCBwYXJlbnRIZWFkaW5nTGV2ZWwgPSBwYXJlbnRPYmplY3QtPmhlYWRpbmdM
ZXZlbCgpOwotICAgIAotICAgIGlmIChwYXJlbnRIZWFkaW5nTGV2ZWwpCi0gICAgICAgIFthdHRy
U3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkhlYWRpbmdMZXZlbCB2YWx1
ZTpAKHBhcmVudEhlYWRpbmdMZXZlbCkgcmFuZ2U6cmFuZ2VdOwotICAgIGVsc2UKLSAgICAgICAg
W2F0dHJTdHJpbmcgcmVtb3ZlQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xl
dmVsIHJhbmdlOnJhbmdlXTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRG
b250KE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIENURm9udFJlZiBmb250
LCBOU1JhbmdlIHJhbmdlKQotewotICAgIGlmICghZm9udCkKLSAgICAgICAgcmV0dXJuOwotICAg
IAotICAgIFJldGFpblB0cjxDRlN0cmluZ1JlZj4gZnVsbE5hbWUgPSBhZG9wdENGKENURm9udENv
cHlGdWxsTmFtZShmb250KSk7Ci0gICAgUmV0YWluUHRyPENGU3RyaW5nUmVmPiBmYW1pbHlOYW1l
ID0gYWRvcHRDRihDVEZvbnRDb3B5RmFtaWx5TmFtZShmb250KSk7Ci0KLSAgICBOU051bWJlciog
c2l6ZSA9IFtOU051bWJlciBudW1iZXJXaXRoRmxvYXQ6Q1RGb250R2V0U2l6ZShmb250KV07Ci0g
ICAgQ1RGb250U3ltYm9saWNUcmFpdHMgdHJhaXRzID0gQ1RGb250R2V0U3ltYm9saWNUcmFpdHMo
Zm9udCk7Ci0gICAgTlNOdW1iZXIqIGJvbGQgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6KHRy
YWl0cyAmIGtDVEZvbnRUcmFpdEJvbGQpXTsKLSAgICBpZiAoZnVsbE5hbWUpCi0gICAgICAgIFth
dHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lIHZhbHVl
OihOU1N0cmluZyopZnVsbE5hbWUuZ2V0KCkgcmFuZ2U6cmFuZ2VdOwotICAgIGlmIChmYW1pbHlO
YW1lKQotICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9r
ZW5Gb250RmFtaWx5IHZhbHVlOihOU1N0cmluZyopZmFtaWx5TmFtZS5nZXQoKSByYW5nZTpyYW5n
ZV07Ci0gICAgaWYgKFtzaXplIGJvb2xWYWx1ZV0pCi0gICAgICAgIFthdHRyU3RyaW5nIGFkZEF0
dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplIHZhbHVlOnNpemUgcmFuZ2U6cmFu
Z2VdOwotICAgIGlmIChbYm9sZCBib29sVmFsdWVdIHx8ICh0cmFpdHMgJiBrQ1RGb250VHJhaXRC
b2xkKSkKLSAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRv
a2VuQm9sZCB2YWx1ZTpAWUVTIHJhbmdlOnJhbmdlXTsKLSAgICBpZiAodHJhaXRzICYga0NURm9u
dFRyYWl0SXRhbGljKQotICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3Np
YmlsaXR5VG9rZW5JdGFsaWMgdmFsdWU6QFlFUyByYW5nZTpyYW5nZV07Ci0KLX0KLQotc3RhdGlj
IHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyogYXR0clN0cmluZywgTlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNOdW1iZXIqIG51bWJlciwgTlNS
YW5nZSByYW5nZSkKLXsKLSAgICBpZiAobnVtYmVyKQotICAgICAgICBbYXR0clN0cmluZyBhZGRB
dHRyaWJ1dGU6YXR0cmlidXRlIHZhbHVlOm51bWJlciByYW5nZTpyYW5nZV07Ci0gICAgZWxzZQot
ICAgICAgICBbYXR0clN0cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0cmlidXRlIHJhbmdlOnJhbmdl
XTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1Jh
bmdlIHJhbmdlKQotewotICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7Ci0gICAg
Ci0gICAgLy8gc2V0IGJhc2ljIGZvbnQgaW5mbwotICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Rm9u
dChhdHRyU3RyaW5nLCBzdHlsZS5mb250Q2FzY2FkZSgpLnByaW1hcnlGb250KCkuZ2V0Q1RGb250
KCksIHJhbmdlKTsKLSAgICAgICAgICAgICAgICAKLSAgICBhdXRvIGRlY29yID0gc3R5bGUudGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKTsKLSAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbjo6
VW5kZXJsaW5lKQotICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5n
LCBVSUFjY2Vzc2liaWxpdHlUb2tlblVuZGVybGluZSwgQFlFUywgcmFuZ2UpOwotCi0gICAgLy8g
QWRkIGNvZGUgY29udGV4dCBpZiB0aGlzIG5vZGUgaXMgd2l0aGluIGEgPGNvZGU+IGJsb2NrLgot
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGF4T2JqZWN0ID0gcmVuZGVyZXItPmRvY3VtZW50KCku
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZW5kZXJlcik7Ci0gICAgYXV0byBtYXRjaEZ1
bmMgPSBbXSAoY29uc3QgQVhDb3JlT2JqZWN0JiBvYmplY3QpIHsKLSAgICAgICAgcmV0dXJuIG9i
amVjdC5ub2RlKCkgJiYgb2JqZWN0Lm5vZGUoKS0+aGFzVGFnTmFtZShjb2RlVGFnKTsKLSAgICB9
OwotCi0gICAgaWYgKGNvbnN0IEFYQ29yZU9iamVjdCogcGFyZW50ID0gQWNjZXNzaWJpbGl0eTo6
ZmluZEFuY2VzdG9yPEFYQ29yZU9iamVjdD4oKmF4T2JqZWN0LCB0cnVlLCBXVEZNb3ZlKG1hdGNo
RnVuYykpKQotICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5
VGV4dEF0dHJpYnV0ZUNvbnRleHQgdmFsdWU6VUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRleHRT
b3VyY2VDb2RlIHJhbmdlOnJhbmdlXTsKLX0KLQotc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3Ry
aW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBOb2Rl
KiBub2RlLCBOU1N0cmluZyAqdGV4dCkKLXsKLSAgICAvLyBza2lwIGludmlzaWJsZSB0ZXh0Ci0g
ICAgaWYgKCFub2RlLT5yZW5kZXJlcigpKQotICAgICAgICByZXR1cm47Ci0gICAgCi0gICAgLy8g
ZWFzaWVyIHRvIGNhbGN1bGF0ZSB0aGUgcmFuZ2UgYmVmb3JlIGFwcGVuZGluZyB0aGUgc3RyaW5n
Ci0gICAgTlNSYW5nZSBhdHRyU3RyaW5nUmFuZ2UgPSBOU01ha2VSYW5nZShbYXR0clN0cmluZyBs
ZW5ndGhdLCBbdGV4dCBsZW5ndGhdKTsKLSAgICAKLSAgICAvLyBhcHBlbmQgdGhlIHN0cmluZyBm
cm9tIHRoaXMgbm9kZQotICAgIFtbYXR0clN0cmluZyBtdXRhYmxlU3RyaW5nXSBhcHBlbmRTdHJp
bmc6dGV4dF07Ci0gICAgCi0gICAgLy8gc2V0IG5ldyBhdHRyaWJ1dGVzCi0gICAgQVhBdHRyaWJ1
dGVTdHJpbmdTZXRTdHlsZShhdHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5n
UmFuZ2UpOwotICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0SGVhZGluZ0xldmVsKGF0dHJTdHJpbmcs
IG5vZGUtPnJlbmRlcmVyKCksIGF0dHJTdHJpbmdSYW5nZSk7Ci0gICAgQVhBdHRyaWJ1dGVTdHJp
bmdTZXRCbG9ja3F1b3RlTGV2ZWwoYXR0clN0cmluZywgbm9kZS0+cmVuZGVyZXIoKSwgYXR0clN0
cmluZ1JhbmdlKTsgICAgCi0gICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShhdHRyU3Ry
aW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOwotfQotCi0vLyBSZXR1cm5z
IGFuIGFycmF5IG9mIHN0cmluZ3MgYW5kIEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3BvbmRpbmcg
dG8gdGhlIHRleHQKLS8vIHJ1bnMgYW5kIHJlcGxhY2VtZW50IG5vZGVzIGluY2x1ZGVkIGluIHRo
ZSBnaXZlbiByYW5nZS4KLS0gKE5TQXJyYXkgKiljb250ZW50Rm9yU2ltcGxlUmFuZ2U6KGNvbnN0
IFNpbXBsZVJhbmdlJilyYW5nZSBhdHRyaWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQKLXsKLSAgICBh
dXRvIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7Ci0KLSAg
ICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJhbmdlIHRvIGJ1aWxkIHRoZSBBWCBhdHRyaWJ1dGVkIHN0
cmluZy4KLSAgICBUZXh0SXRlcmF0b3IgaXQocmFuZ2UpOwotICAgIGZvciAoOyAhaXQuYXRFbmQo
KTsgaXQuYWR2YW5jZSgpKSB7Ci0gICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgpLnN0YXJ0
LmNvbnRhaW5lcjsKLQotICAgICAgICAvLyBOb24temVybyBsZW5ndGggbWVhbnMgdGV4dHVhbCBu
b2RlLCB6ZXJvIGxlbmd0aCBtZWFucyByZXBsYWNlZCBub2RlIChBS0EgImF0dGFjaG1lbnRzIiBp
biBBWCkuCi0gICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgIGlm
ICghYXR0cmlidXRlZCkgewotICAgICAgICAgICAgICAgIC8vIEZpcnN0IGNoZWNrIGlmIHRoaXMg
aXMgcmVwcmVzZW50ZWQgYnkgYSBsaW5rLgotICAgICAgICAgICAgICAgIGF1dG8qIGxpbmtPYmpl
Y3QgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNob3JFbGVtZW50Rm9yTm9kZSgmbm9kZSk7Ci0g
ICAgICAgICAgICAgICAgaWYgKFtzZWxmIF9hZGRBY2Nlc3NpYmlsaXR5T2JqZWN0OmxpbmtPYmpl
Y3QgdG9UZXh0TWFya2VyQXJyYXk6YXJyYXkuZ2V0KCldKQotICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKLQotICAgICAgICAgICAgICAgIC8vIE5leHQgY2hlY2sgaWYgdGhpcyByZWdpb24g
aXMgcmVwcmVzZW50ZWQgYnkgYSBoZWFkaW5nLgotICAgICAgICAgICAgICAgIGF1dG8qIGhlYWRp
bmdPYmplY3QgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpoZWFkaW5nRWxlbWVudEZvck5vZGUoJm5v
ZGUpOwotICAgICAgICAgICAgICAgIGlmIChbc2VsZiBfYWRkQWNjZXNzaWJpbGl0eU9iamVjdDpo
ZWFkaW5nT2JqZWN0IHRvVGV4dE1hcmtlckFycmF5OmFycmF5LmdldCgpXSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRl
eHQgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlv
bigmbm9kZSwgbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGl0LnJhbmdlKCkuc3RhcnQpKTsK
LSAgICAgICAgICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkKLSAgICAgICAg
ICAgICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpsaXN0TWFya2VyVGV4dF07Ci0gICAgICAgICAg
ICAgICAgLy8gVGhlcmUgd2FzIG5vdCBhbiBlbGVtZW50IHJlcHJlc2VudGF0aW9uLCBzbyBqdXN0
IHJldHVybiB0aGUgdGV4dC4KLSAgICAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Oml0LnRl
eHQoKS5jcmVhdGVOU1N0cmluZygpLmdldCgpXTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICAgICAgU3RyaW5nIGxpc3RNYXJrZXJUZXh0ID0gQWNjZXNzaWJpbGl0eU9iamVjdDo6
bGlzdE1hcmtlclRleHRGb3JOb2RlQW5kUG9zaXRpb24oJm5vZGUsIG1ha2VDb250YWluZXJPZmZz
ZXRQb3NpdGlvbihpdC5yYW5nZSgpLnN0YXJ0KSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFsaXN0
TWFya2VyVGV4dC5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXV0byBhdHRyU3Ry
aW5nID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsK
LSAgICAgICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChhdHRyU3Ry
aW5nLmdldCgpLCAmbm9kZSwgbGlzdE1hcmtlclRleHQpOwotICAgICAgICAgICAgICAgICAgICBb
YXJyYXkgYWRkT2JqZWN0OmF0dHJTdHJpbmcuZ2V0KCldOwotICAgICAgICAgICAgICAgIH0KLQot
ICAgICAgICAgICAgICAgIGF1dG8gYXR0clN0cmluZyA9IGFkb3B0TlMoW1tOU011dGFibGVBdHRy
aWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0XSk7Ci0gICAgICAgICAgICAgICAgQVhBdHRyaWJ1dGVk
U3RyaW5nQXBwZW5kVGV4dChhdHRyU3RyaW5nLmdldCgpLCAmbm9kZSwgaXQudGV4dCgpLmNyZWF0
ZU5TU3RyaW5nV2l0aG91dENvcHlpbmcoKS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgW2FycmF5
IGFkZE9iamVjdDphdHRyU3RyaW5nLmdldCgpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIGlmIChOb2RlKiByZXBsYWNlZE5vZGUgPSBpdC5ub2RlKCkpIHsK
LSAgICAgICAgICAgICAgICBhdXRvKiBvYmplY3QgPSBzZWxmLmF4QmFja2luZ09iamVjdC0+YXhP
YmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShyZXBsYWNlZE5vZGUtPnJlbmRlcmVyKCkpOwotICAg
ICAgICAgICAgICAgIGlmIChvYmplY3QpCi0gICAgICAgICAgICAgICAgICAgIFtzZWxmIF9hZGRB
Y2Nlc3NpYmlsaXR5T2JqZWN0Om9iamVjdCB0b1RleHRNYXJrZXJBcnJheTphcnJheS5nZXQoKV07
Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gYXJyYXkuYXV0
b3JlbGVhc2UoKTsKLX0KLQogLy8gVGhpcyBtZXRob2QgaXMgaW50ZW5kZWQgdG8gcmV0dXJuIGFu
IGFycmF5IG9mIHN0cmluZ3MgYW5kIGFjY2Vzc2liaWxpdHkgZWxlbWVudHMgdGhhdAogLy8gcmVw
cmVzZW50IHRoZSBvYmplY3RzIG9uIG9uZSBsaW5lIG9mIHJlbmRlcmVkIHdlYiBjb250ZW50LiBU
aGUgYXJyYXkgb2YgbWFya2VycyBzZW50CiAvLyBpbiBzaG91bGQgYmUgb3JkZXJlZCBhbmQgY29u
dGFpbiBvbmx5IGEgc3RhcnQgYW5kIGVuZCBtYXJrZXIuCkBAIC0yODUwLDcwICsyNjIwLDYgQEAg
c3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVkU3RyaW5nQXBwZW5kVGV4dChOU011dGFibGVBdHRyaWJ1
dGVkU3RyaW5nKiBhdHRyU3RyaW5nLAogICAgIHJldHVybiBbc2VsZiB0ZXh0TWFya2Vyc0ZvclJh
bmdlOltzZWxmIHJhbmdlRnJvbU1hcmtlcnM6bWFya2VycyB3aXRoVGV4dDp0ZXh0XV07CiB9CiAK
LS0gKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICopbGluZVJlY3RzQW5kVGV4dAotewotICAgIGlm
ICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5Q2FsbF0pCi0gICAgICAgIHJldHVybiBuaWw7
Ci0gICAgYXV0byogYmFja2luZ09iamVjdCA9IHNlbGYuYXhCYWNraW5nT2JqZWN0OwotCi0gICAg
YXV0byByYW5nZSA9IGJhY2tpbmdPYmplY3QtPmVsZW1lbnRSYW5nZSgpOwotICAgIGlmICghcmFu
Z2UpCi0gICAgICAgIHJldHVybiBuaWw7Ci0KLSAgICBWZWN0b3I8c3RkOjpwYWlyPEludFJlY3Qs
IFJldGFpblB0cjxOU0F0dHJpYnV0ZWRTdHJpbmc+Pj4gbGluZXM7Ci0gICAgYXV0byBzdGFydCA9
IFZpc2libGVQb3NpdGlvbiB7IG1ha2VDb250YWluZXJPZmZzZXRQb3NpdGlvbihyYW5nZS0+c3Rh
cnQpIH07Ci0gICAgYXV0byByYW5nZUVuZCA9IFZpc2libGVQb3NpdGlvbiB7IG1ha2VDb250YWlu
ZXJPZmZzZXRQb3NpdGlvbihyYW5nZS0+ZW5kKSB9OwotICAgIHdoaWxlICghc3RhcnQuaXNOdWxs
KCkgJiYgc3RhcnQgPD0gcmFuZ2VFbmQpIHsKLSAgICAgICAgYXV0byBlbmQgPSBiYWNraW5nT2Jq
ZWN0LT5uZXh0TGluZUVuZFBvc2l0aW9uKHN0YXJ0KTsKLSAgICAgICAgaWYgKGVuZCA8PSBzdGFy
dCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGF1dG8gcmVjdCA9IGJhY2tpbmdPYmpl
Y3QtPmJvdW5kc0ZvclZpc2libGVQb3NpdGlvblJhbmdlKHtzdGFydCwgZW5kfSk7Ci0KLSAgICAg
ICAgYXV0byBsaW5lUmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnQsIGVuZCk7Ci0gICAgICAg
IGlmICghbGluZVJhbmdlKQotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgTlNBcnJheSAq
Y29udGVudCA9IFtzZWxmIGNvbnRlbnRGb3JTaW1wbGVSYW5nZToqbGluZVJhbmdlIGF0dHJpYnV0
ZWQ6WUVTXTsKLSAgICAgICAgYXV0byB0ZXh0ID0gYWRvcHROUyhbW05TTXV0YWJsZUF0dHJpYnV0
ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKLSAgICAgICAgZm9yIChpZCBpdGVtIGluIGNvbnRlbnQp
IHsKLSAgICAgICAgICAgIGlmIChbaXRlbSBpc0tpbmRPZkNsYXNzOk5TQXR0cmlidXRlZFN0cmlu
Zy5jbGFzc10pCi0gICAgICAgICAgICAgICAgW3RleHQgYXBwZW5kQXR0cmlidXRlZFN0cmluZzpp
dGVtXTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFtpdGVtIGlzS2luZE9mQ2xhc3M6V2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXIuY2xhc3NdKSB7Ci0gICAgICAgICAgICAgICAgTlNTdHJpbmcg
KmxhYmVsID0gc3RhdGljX2Nhc3Q8V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXIgKj4oaXRl
bSkuYWNjZXNzaWJpbGl0eUxhYmVsOwotICAgICAgICAgICAgICAgIGlmICghbGFiZWwpCi0gICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgYXV0byBhdHRyaWJ1
dGVkTGFiZWwgPSBhZG9wdE5TKFtbTlNBdHRyaWJ1dGVkU3RyaW5nIGFsbG9jXSBpbml0V2l0aFN0
cmluZzpsYWJlbF0pOwotICAgICAgICAgICAgICAgIFt0ZXh0IGFwcGVuZEF0dHJpYnV0ZWRTdHJp
bmc6YXR0cmlidXRlZExhYmVsLmdldCgpXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAg
ICAgICBsaW5lcy5hcHBlbmQoe3JlY3QsIHRleHR9KTsKLQotICAgICAgICBzdGFydCA9IGVuZDsK
LSAgICAgICAgLy8gSWYgc3RhcnQgaXMgYXQgYSBoYXJkIGJyZWFrbGluZSAiXG4iLCBtb3ZlIHRv
IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgbGluZS4KLSAgICAgICAgd2hpbGUgKGlzRW5kT2ZM
aW5lKHN0YXJ0KSkgewotICAgICAgICAgICAgZW5kID0gc3RhcnQubmV4dCgpOwotICAgICAgICAg
ICAgYXV0byBlbmRPZkxpbmVSYW5nZSA9IG1ha2VTaW1wbGVSYW5nZShzdGFydCwgZW5kKTsKLSAg
ICAgICAgICAgIGlmICghZW5kT2ZMaW5lUmFuZ2UpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgICAgIFRleHRJdGVyYXRvciBpdCgqZW5kT2ZMaW5lUmFuZ2UpOwotICAgICAgICAg
ICAgaWYgKGl0LmF0RW5kKCkgfHwgaXQudGV4dCgpLmxlbmd0aCgpICE9IDEgfHwgaXQudGV4dCgp
WzBdICE9ICdcbicpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIHN0YXJ0
ID0gZW5kOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKGxpbmVzLmlzRW1wdHkoKSkKLSAg
ICAgICAgcmV0dXJuIG5pbDsKLSAgICByZXR1cm4gY3JlYXRlTlNBcnJheShsaW5lcywgW3NlbGZd
IChjb25zdCBhdXRvJiBsaW5lKSB7Ci0gICAgICAgIHJldHVybiBAeyBAInJlY3QiOiBbTlNWYWx1
ZSB2YWx1ZVdpdGhSZWN0OltzZWxmIGNvbnZlcnRSZWN0VG9TcGFjZTpGbG9hdFJlY3QobGluZS5m
aXJzdCkgc3BhY2U6QWNjZXNzaWJpbGl0eUNvbnZlcnNpb25TcGFjZTo6U2NyZWVuXV0sCi0gICAg
ICAgICAgICAgICAgICBAInRleHQiOiBsaW5lLnNlY29uZC5nZXQoKSB9OwotICAgIH0pLmF1dG9y
ZWxlYXNlKCk7Ci19Ci0KIC0gKE5TQXJyYXkgKilsaW5lUmVjdHNGb3JUZXh0TWFya2VyUmFuZ2U6
KE5TQXJyYXkgKiltYXJrZXJzCiB7CiAgICAgaWYgKCFbc2VsZiBfcHJlcGFyZUFjY2Vzc2liaWxp
dHlDYWxsXSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKaW5kZXggZmE3
YTNjYjhjODVmYTgxOGFiMWZjZWQ0MjdjMDBiZDUyNjVlYWYyMS4uNzRhODhhNDI3NDhmZDg3MGQ1
ODRlZDgxZWRjZmVlMmQ3NzdlMjkxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNz
aWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBw
ZXJCYXNlLmgKQEAgLTQxLDYgKzQxLDIxIEBAIGNsYXNzIFBhdGg7CiBjbGFzcyBWaXNpYmxlUG9z
aXRpb247CiB9CiAKKy8vIFRva2VucyB1c2VkIHRvIGRlbm90ZSBhdHRyaWJ1dGVzIGluIE5TQXR0
cmlidXRlZFN0cmluZ3MuCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlU
b2tlbkJsb2NrcXVvdGVMZXZlbCA9IEAiVUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2
ZWwiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5IZWFkaW5n
TGV2ZWwgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xldmVsIjsKK3N0YXRpYyBOU1N0
cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBAIlVJQWNjZXNzaWJp
bGl0eVRva2VuRm9udE5hbWUiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmls
aXR5VG9rZW5Gb250RmFtaWx5ID0gQCJVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkiOwor
c3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IEAi
VUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSI7CitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBV
SUFjY2Vzc2liaWxpdHlUb2tlbkJvbGQgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuQm9sZCI7Citz
dGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlUb2tlbkl0YWxpYyA9IEAiVUlB
Y2Nlc3NpYmlsaXR5VG9rZW5JdGFsaWMiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nl
c3NpYmlsaXR5VG9rZW5VbmRlcmxpbmUgPSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuVW5kZXJsaW5l
IjsKK3N0YXRpYyBOU1N0cmluZyAqIGNvbnN0IFVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2Ug
PSBAIlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UiOworc3RhdGljIE5TU3RyaW5nICogY29u
c3QgVUlBY2Nlc3NpYmlsaXR5VG9rZW5BdHRhY2htZW50ID0gQCJVSUFjY2Vzc2liaWxpdHlUb2tl
bkF0dGFjaG1lbnQiOworCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBVSUFjY2Vzc2liaWxpdHlU
ZXh0QXR0cmlidXRlQ29udGV4dCA9IEAiVUlBY2Nlc3NpYmlsaXR5VGV4dEF0dHJpYnV0ZUNvbnRl
eHQiOworc3RhdGljIE5TU3RyaW5nICogY29uc3QgVUlBY2Nlc3NpYmlsaXR5VGV4dHVhbENvbnRl
eHRTb3VyY2VDb2RlID0gQCJVSUFjY2Vzc2liaWxpdHlUZXh0dWFsQ29udGV4dFNvdXJjZUNvZGUi
OworCiBAaW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZSA6IE5TT2Jq
ZWN0IHsKICAgICBXZWJDb3JlOjpBWENvcmVPYmplY3QqIG1fYXhPYmplY3Q7CiAjaWYgRU5BQkxF
KEFDQ0VTU0lCSUxJVFlfSVNPTEFURURfVFJFRSkKQEAgLTYxLDEzICs3NiwyMCBAQCBjbGFzcyBW
aXNpYmxlUG9zaXRpb247CiAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBhc3NpZ24pIFdlYkNvcmU6
OkFYSUQgaWRlbnRpZmllcjsKIAorLy8gRklYTUU6IHVuaWZpZWQgdGhlc2UgdHdvIG1ldGhvZHMg
aW50byBvbmUuCisjaWYgUExBVEZPUk0oTUFDKQogLy8gVXBkYXRlcyB0aGUgdW5kZXJseWluZyBv
YmplY3QgYW5kIGFjY2Vzc2liaWxpdHkgaGllcmFyY2h5ICwgYW5kIHJldHVybnMgdGhlCiAvLyBj
b3JyZXNwb25kaW5nIEFYQ29yZU9iamVjdC4KIC0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCopdXBk
YXRlT2JqZWN0QmFja2luZ1N0b3JlOworI2Vsc2UKKy0gKEJPT0wpX3ByZXBhcmVBY2Nlc3NpYmls
aXR5Q2FsbDsKKyNlbmRpZgogCiAvLyBUaGlzIGNhbiBiZSBlaXRoZXIgYW4gQWNjZXNzaWJpbGl0
eU9iamVjdCBvciBhbiBBWElzb2xhdGVkT2JqZWN0CiAtIChXZWJDb3JlOjpBWENvcmVPYmplY3Qq
KWF4QmFja2luZ09iamVjdDsKIAorLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVj
dHNBbmRUZXh0OworCiAvLyBUaGVzZSBhcmUgcHJlLWZpeGVkIHdpdGggYmFzZSBzbyB0aGF0IEFw
cEtpdCBkb2VzIG5vdCBlbmQgdXAgY2FsbGluZyBpbnRvIHRoZXNlIGRpcmVjdGx5IChieXBhc3Np
bmcgc2FmZXR5IGNoZWNrcykuCiAtIChOU1N0cmluZyAqKWJhc2VBY2Nlc3NpYmlsaXR5RGVzY3Jp
cHRpb247CiAtIChOU1N0cmluZyAqKWJhc2VBY2Nlc3NpYmlsaXR5SGVscFRleHQ7CkBAIC04Myw2
ICsxMDUsNyBAQCBjbGFzcyBWaXNpYmxlUG9zaXRpb247CiAtIChDR1BhdGhSZWYpY29udmVydFBh
dGhUb1NjcmVlblNwYWNlOihjb25zdCBXZWJDb3JlOjpQYXRoJilwYXRoOwogCiAtIChDR1JlY3Qp
Y29udmVydFJlY3RUb1NwYWNlOihjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKXJlY3Qgc3BhY2U6
KFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2Upc3BhY2U7CistIChOU0FycmF5
ICopY29udGVudEZvclNpbXBsZVJhbmdlOihjb25zdCBXZWJDb3JlOjpTaW1wbGVSYW5nZSYpcmFu
Z2UgYXR0cmlidXRlZDooQk9PTClhdHRyaWJ1dGVkOwogCiAvLyBNYXRoIHJlbGF0ZWQgZnVuY3Rp
b25zCiAtIChOU0FycmF5ICopYWNjZXNzaWJpbGl0eU1hdGhQb3N0c2NyaXB0UGFpcnM7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlckJhc2UubW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9X
ZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UubW0KaW5kZXggZTg5NDk2MTRlMmMzZGQ2
YTg5MzU4YTEyNzUxMmJjZmU1MTc1NTY1Yi4uNmVhMjY3ZDdkODBmMDkyZDU5NzhhOGRhNmQzN2Jk
YzdhOTliMmRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpA
QCAtMzIwLDYgKzMyMCw3IEBAIE5TQXJyYXkgKmNvbnZlcnRUb05TQXJyYXkoY29uc3QgV2ViQ29y
ZTo6QVhDb3JlT2JqZWN0OjpBY2Nlc3NpYmlsaXR5Q2hpbGRyZW5WZWN0CiB9CiAjZW5kaWYKIAor
I2lmIFBMQVRGT1JNKE1BQykKIC0gKFdlYkNvcmU6OkFYQ29yZU9iamVjdCopdXBkYXRlT2JqZWN0
QmFja2luZ1N0b3JlCiB7CiAgICAgLy8gQ2FsbGluZyB1cGRhdGVCYWNraW5nU3RvcmUoKSBjYW4g
aW52YWxpZGF0ZSB0aGlzIGVsZW1lbnQgc28gc2VsZiBtdXN0IGJlIHJldGFpbmVkLgpAQCAtMzM0
LDYgKzMzNSwyNiBAQCBOU0FycmF5ICpjb252ZXJ0VG9OU0FycmF5KGNvbnN0IFdlYkNvcmU6OkFY
Q29yZU9iamVjdDo6QWNjZXNzaWJpbGl0eUNoaWxkcmVuVmVjdAogCiAgICAgcmV0dXJuIHNlbGYu
YXhCYWNraW5nT2JqZWN0OwogfQorI2Vsc2UKKy0gKEJPT0wpX3ByZXBhcmVBY2Nlc3NpYmlsaXR5
Q2FsbAoreworICAgIC8vIHJkYXI6Ly83OTgwMzE4IGlmIHdlIHN0YXJ0IGEgY2FsbCwgdGhlbiBi
bG9jayBpbiBXZWJUaHJlYWRMb2NrKCksIHRoZW4gd2UncmUgZGVhbGxvY2VkIG9uIGFub3RoZXIs
IHRocmVhZCwgd2UgY291bGQKKyAgICAvLyBjcmFzaCwgc28gd2Ugc2hvdWxkIHJldGFpbiBvdXJz
ZWxmIGZvciB0aGUgZHVyYXRpb24gb2YgdXNhZ2UgaGVyZS4KKyAgICByZXRhaW5QdHIoc2VsZiku
YXV0b3JlbGVhc2UoKTsKKworICAgIFdlYlRocmVhZExvY2soKTsKKworICAgIC8vIElmIHdlIGNh
bWUgYmFjayBmcm9tIG91ciB0aHJlYWQgbG9jayBhbmQgd2Ugd2VyZSBkZXRhY2hlZCwgd2Ugd2ls
bCBubyBsb25nZXIgaGF2ZSBhbiBzZWxmLmF4QmFja2luZ09iamVjdC4KKyAgICBpZiAoIXNlbGYu
YXhCYWNraW5nT2JqZWN0KQorICAgICAgICByZXR1cm4gTk87CisKKyAgICBzZWxmLmF4QmFja2lu
Z09iamVjdC0+dXBkYXRlQmFja2luZ1N0b3JlKCk7CisgICAgaWYgKCFzZWxmLmF4QmFja2luZ09i
amVjdCkKKyAgICAgICAgcmV0dXJuIE5POworCisgICAgcmV0dXJuIFlFUzsKK30KKyNlbmRpZgog
CiAtIChpZClhdHRhY2htZW50VmlldwogewpAQCAtNDU2LDYgKzQ3NywyOTggQEAgc3RhdGljIHZv
aWQgY29udmVydFBhdGhUb1NjcmVlblNwYWNlRnVuY3Rpb24oUGF0aENvbnZlcnNpb25JbmZvJiBj
b252ZXJzaW9uLCBjb24KICAgICByZXR1cm4gYmFja2luZ09iamVjdC0+Y29udmVydFJlY3RUb1Bs
YXRmb3JtU3BhY2UocmVjdCwgc3BhY2UpOwogfQogCitzdGF0aWMgQk9PTCBhZGRPYmplY3RXcmFw
cGVyVG9BcnJheShBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCwgTlNNdXRhYmxlQXJyYXkg
KmFycmF5KQoreworICAgIGlmICghYXhPYmplY3QpCisgICAgICAgIHJldHVybiBOTzsKKworICAg
IGF1dG8qIHdyYXBwZXIgPSBheE9iamVjdC0+d3JhcHBlcigpOworICAgIGlmICghd3JhcHBlcikK
KyAgICAgICAgcmV0dXJuIE5POworCisgICAgLy8gRG9uJ3QgYWRkIHRoZSBzYW1lIG9iamVjdCB0
d2ljZSwgYnV0IHNpbmNlIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBhZGRlZCwgd2Ugc2hvdWxkIHJl
dHVybgorICAgIC8vIFlFUyBiZWNhdXNlIHdlIHdhbnQgdG8gaW5mb3JtIHRoYXQgaXQncyBpbiB0
aGUgYXJyYXkKKyAgICBpZiAoW2FycmF5IGNvbnRhaW5zT2JqZWN0OndyYXBwZXJdKQorICAgICAg
ICByZXR1cm4gWUVTOworCisjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKKyAgICAvLyBFeHBsaWNp
dGx5IHNldCB0aGF0IHRoaXMgaXMgYSBub3cgZWxlbWVudCwgaW4gY2FzZSBvdGhlciBsb2dpYyB0
cmllcyB0byBvdmVycmlkZS4KKyAgICBbd3JhcHBlciBzZXRWYWx1ZTpAWUVTIGZvcktleTpAImlz
QWNjZXNzaWJpbGl0eUVsZW1lbnQiXTsKKyNlbmRpZgorCisgICAgW2FycmF5IGFkZE9iamVjdDp3
cmFwcGVyXTsKKyAgICByZXR1cm4gWUVTOworfQorCitzdGF0aWMgaW50IGJsb2NrcXVvdGVMZXZl
bChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQoreworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAg
IHJldHVybiAwOworCisgICAgaW50IHJlc3VsdCA9IDA7CisgICAgZm9yIChOb2RlKiBub2RlID0g
cmVuZGVyZXItPm5vZGUoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudE5vZGUoKSkgeworICAg
ICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZShibG9ja3F1b3RlVGFnKSkKKyAgICAgICAgICAgIHJl
c3VsdCArPSAxOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lk
IEFYQXR0cmlidXRlU3RyaW5nU2V0TGFuZ3VhZ2UoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyog
YXR0clN0cmluZywgUmVuZGVyT2JqZWN0KiByZW5kZXJlciwgTlNSYW5nZSByYW5nZSkKK3sKKyAg
ICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KiBheE9iamVjdCA9IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0
T3JDcmVhdGUocmVuZGVyZXIpOworICAgIE5TU3RyaW5nICpsYW5ndWFnZSA9IGF4T2JqZWN0LT5s
YW5ndWFnZSgpOworICAgIGlmIChbbGFuZ3VhZ2UgbGVuZ3RoXSkKKyAgICAgICAgW2F0dHJTdHJp
bmcgYWRkQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UgdmFsdWU6bGFuZ3Vh
Z2UgcmFuZ2U6cmFuZ2VdOworICAgIGVsc2UKKyAgICAgICAgW2F0dHJTdHJpbmcgcmVtb3ZlQXR0
cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuTGFuZ3VhZ2UgcmFuZ2U6cmFuZ2VdOworfQorCitz
dGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEJsb2NrcXVvdGVMZXZlbChOU011dGFibGVB
dHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1Jh
bmdlIHJhbmdlKQoreworICAgIGludCBxdW90ZUxldmVsID0gYmxvY2txdW90ZUxldmVsKHJlbmRl
cmVyKTsKKworICAgIGlmIChxdW90ZUxldmVsKQorICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRy
aWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2ZWwgdmFsdWU6QChxdW90ZUxl
dmVsKSByYW5nZTpyYW5nZV07CisgICAgZWxzZQorICAgICAgICBbYXR0clN0cmluZyByZW1vdmVB
dHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5CbG9ja3F1b3RlTGV2ZWwgcmFuZ2U6cmFuZ2Vd
OworfQorCitzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChOU011
dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
LCBOU1JhbmdlIHJhbmdlKQoreworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybjsK
KworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCA9IHJlbmRlcmVyLT5kb2N1
bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVyZXItPnBhcmVudCgpKTsK
KyAgICBpbnQgcGFyZW50SGVhZGluZ0xldmVsID0gcGFyZW50T2JqZWN0LT5oZWFkaW5nTGV2ZWwo
KTsKKworICAgIGlmIChwYXJlbnRIZWFkaW5nTGV2ZWwpCisgICAgICAgIFthdHRyU3RyaW5nIGFk
ZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkhlYWRpbmdMZXZlbCB2YWx1ZTpAKHBhcmVu
dEhlYWRpbmdMZXZlbCkgcmFuZ2U6cmFuZ2VdOworICAgIGVsc2UKKyAgICAgICAgW2F0dHJTdHJp
bmcgcmVtb3ZlQXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuSGVhZGluZ0xldmVsIHJhbmdl
OnJhbmdlXTsKK30KKworc3RhdGljIHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRGb250KE5TTXV0
YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIENURm9udFJlZiBmb250LCBOU1Jhbmdl
IHJhbmdlKQoreworICAgIGlmICghZm9udCkKKyAgICAgICAgcmV0dXJuOworCisgICAgUmV0YWlu
UHRyPENGU3RyaW5nUmVmPiBmdWxsTmFtZSA9IGFkb3B0Q0YoQ1RGb250Q29weUZ1bGxOYW1lKGZv
bnQpKTsKKyAgICBSZXRhaW5QdHI8Q0ZTdHJpbmdSZWY+IGZhbWlseU5hbWUgPSBhZG9wdENGKENU
Rm9udENvcHlGYW1pbHlOYW1lKGZvbnQpKTsKKworICAgIE5TTnVtYmVyKiBzaXplID0gW05TTnVt
YmVyIG51bWJlcldpdGhGbG9hdDpDVEZvbnRHZXRTaXplKGZvbnQpXTsKKyAgICBDVEZvbnRTeW1i
b2xpY1RyYWl0cyB0cmFpdHMgPSBDVEZvbnRHZXRTeW1ib2xpY1RyYWl0cyhmb250KTsKKyAgICBO
U051bWJlciogYm9sZCA9IFtOU051bWJlciBudW1iZXJXaXRoQm9vbDoodHJhaXRzICYga0NURm9u
dFRyYWl0Qm9sZCldOworICAgIGlmIChmdWxsTmFtZSkKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRk
QXR0cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgdmFsdWU6KE5TU3RyaW5nKilm
dWxsTmFtZS5nZXQoKSByYW5nZTpyYW5nZV07CisgICAgaWYgKGZhbWlseU5hbWUpCisgICAgICAg
IFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkg
dmFsdWU6KE5TU3RyaW5nKilmYW1pbHlOYW1lLmdldCgpIHJhbmdlOnJhbmdlXTsKKyAgICBpZiAo
W3NpemUgYm9vbFZhbHVlXSkKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0cmlidXRlOlVJQWNj
ZXNzaWJpbGl0eVRva2VuRm9udFNpemUgdmFsdWU6c2l6ZSByYW5nZTpyYW5nZV07CisgICAgaWYg
KFtib2xkIGJvb2xWYWx1ZV0gfHwgKHRyYWl0cyAmIGtDVEZvbnRUcmFpdEJvbGQpKQorICAgICAg
ICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6VUlBY2Nlc3NpYmlsaXR5VG9rZW5Cb2xkIHZhbHVl
OkBZRVMgcmFuZ2U6cmFuZ2VdOworICAgIGlmICh0cmFpdHMgJiBrQ1RGb250VHJhaXRJdGFsaWMp
CisgICAgICAgIFthdHRyU3RyaW5nIGFkZEF0dHJpYnV0ZTpVSUFjY2Vzc2liaWxpdHlUb2tlbkl0
YWxpYyB2YWx1ZTpAWUVTIHJhbmdlOnJhbmdlXTsKK30KKworc3RhdGljIHZvaWQgQVhBdHRyaWJ1
dGVTdHJpbmdTZXROdW1iZXIoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmluZywg
TlNTdHJpbmcqIGF0dHJpYnV0ZSwgTlNOdW1iZXIqIG51bWJlciwgTlNSYW5nZSByYW5nZSkKK3sK
KyAgICBpZiAobnVtYmVyKQorICAgICAgICBbYXR0clN0cmluZyBhZGRBdHRyaWJ1dGU6YXR0cmli
dXRlIHZhbHVlOm51bWJlciByYW5nZTpyYW5nZV07CisgICAgZWxzZQorICAgICAgICBbYXR0clN0
cmluZyByZW1vdmVBdHRyaWJ1dGU6YXR0cmlidXRlIHJhbmdlOnJhbmdlXTsKK30KKworc3RhdGlj
IHZvaWQgQVhBdHRyaWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5n
KiBhdHRyU3RyaW5nLCBSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBOU1JhbmdlIHJhbmdlKQorewor
ICAgIGF1dG8mIHN0eWxlID0gcmVuZGVyZXItPnN0eWxlKCk7CisKKyAgICAvLyBzZXQgYmFzaWMg
Zm9udCBpbmZvCisgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRGb250KGF0dHJTdHJpbmcsIHN0eWxl
LmZvbnRDYXNjYWRlKCkucHJpbWFyeUZvbnQoKS5nZXRDVEZvbnQoKSwgcmFuZ2UpOworCisgICAg
YXV0byBkZWNvciA9IHN0eWxlLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7CisgICAgaWYgKGRl
Y29yICYgVGV4dERlY29yYXRpb246OlVuZGVybGluZSkKKyAgICAgICAgQVhBdHRyaWJ1dGVTdHJp
bmdTZXROdW1iZXIoYXR0clN0cmluZywgVUlBY2Nlc3NpYmlsaXR5VG9rZW5VbmRlcmxpbmUsIEBZ
RVMsIHJhbmdlKTsKKworICAgIC8vIEFkZCBjb2RlIGNvbnRleHQgaWYgdGhpcyBub2RlIGlzIHdp
dGhpbiBhIDxjb2RlPiBibG9jay4KKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVjdCA9
IHJlbmRlcmVyLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUocmVuZGVy
ZXIpOworICAgIGF1dG8gbWF0Y2hGdW5jID0gW10gKGNvbnN0IEFYQ29yZU9iamVjdCYgb2JqZWN0
KSB7CisgICAgICAgIHJldHVybiBvYmplY3Qubm9kZSgpICYmIG9iamVjdC5ub2RlKCktPmhhc1Rh
Z05hbWUoY29kZVRhZyk7CisgICAgfTsKKworICAgIGlmIChjb25zdCBBWENvcmVPYmplY3QqIHBh
cmVudCA9IEFjY2Vzc2liaWxpdHk6OmZpbmRBbmNlc3RvcjxBWENvcmVPYmplY3Q+KCpheE9iamVj
dCwgdHJ1ZSwgV1RGTW92ZShtYXRjaEZ1bmMpKSkKKyAgICAgICAgW2F0dHJTdHJpbmcgYWRkQXR0
cmlidXRlOlVJQWNjZXNzaWJpbGl0eVRleHRBdHRyaWJ1dGVDb250ZXh0IHZhbHVlOlVJQWNjZXNz
aWJpbGl0eVRleHR1YWxDb250ZXh0U291cmNlQ29kZSByYW5nZTpyYW5nZV07Cit9CisKK3N0YXRp
YyB2b2lkIEFYQXR0cmlidXRlZFN0cmluZ0FwcGVuZFRleHQoTlNNdXRhYmxlQXR0cmlidXRlZFN0
cmluZyogYXR0clN0cmluZywgTm9kZSogbm9kZSwgTlNTdHJpbmcgKnRleHQpCit7CisgICAgLy8g
c2tpcCBpbnZpc2libGUgdGV4dAorICAgIGlmICghbm9kZS0+cmVuZGVyZXIoKSkKKyAgICAgICAg
cmV0dXJuOworCisgICAgLy8gZWFzaWVyIHRvIGNhbGN1bGF0ZSB0aGUgcmFuZ2UgYmVmb3JlIGFw
cGVuZGluZyB0aGUgc3RyaW5nCisgICAgTlNSYW5nZSBhdHRyU3RyaW5nUmFuZ2UgPSBOU01ha2VS
YW5nZShbYXR0clN0cmluZyBsZW5ndGhdLCBbdGV4dCBsZW5ndGhdKTsKKworICAgIC8vIGFwcGVu
ZCB0aGUgc3RyaW5nIGZyb20gdGhpcyBub2RlCisgICAgW1thdHRyU3RyaW5nIG11dGFibGVTdHJp
bmddIGFwcGVuZFN0cmluZzp0ZXh0XTsKKworICAgIC8vIHNldCBuZXcgYXR0cmlidXRlcworICAg
IEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUoYXR0clN0cmluZywgbm9kZS0+cmVuZGVyZXIoKSwg
YXR0clN0cmluZ1JhbmdlKTsKKyAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldEhlYWRpbmdMZXZlbChh
dHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOworICAgIEFYQXR0
cmlidXRlU3RyaW5nU2V0QmxvY2txdW90ZUxldmVsKGF0dHJTdHJpbmcsIG5vZGUtPnJlbmRlcmVy
KCksIGF0dHJTdHJpbmdSYW5nZSk7CisgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRMYW5ndWFnZShh
dHRyU3RyaW5nLCBub2RlLT5yZW5kZXJlcigpLCBhdHRyU3RyaW5nUmFuZ2UpOworfQorCisvLyBS
ZXR1cm5zIGFuIGFycmF5IG9mIHN0cmluZ3MgYW5kIEFYT2JqZWN0IHdyYXBwZXJzIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIHRleHQKKy8vIHJ1bnMgYW5kIHJlcGxhY2VtZW50IG5vZGVzIGluY2x1ZGVk
IGluIHRoZSBnaXZlbiByYW5nZS4KKy0gKE5TQXJyYXkgKiljb250ZW50Rm9yU2ltcGxlUmFuZ2U6
KGNvbnN0IFNpbXBsZVJhbmdlJilyYW5nZSBhdHRyaWJ1dGVkOihCT09MKWF0dHJpYnV0ZWQKK3sK
KyAgICBhdXRvIGFycmF5ID0gYWRvcHROUyhbW05TTXV0YWJsZUFycmF5IGFsbG9jXSBpbml0XSk7
CisKKyAgICAvLyBJdGVyYXRlIG92ZXIgdGhlIHJhbmdlIHRvIGJ1aWxkIHRoZSBBWCBhdHRyaWJ1
dGVkIHN0cmluZy4KKyAgICBUZXh0SXRlcmF0b3IgaXQocmFuZ2UpOworICAgIGZvciAoOyAhaXQu
YXRFbmQoKTsgaXQuYWR2YW5jZSgpKSB7CisgICAgICAgIE5vZGUmIG5vZGUgPSBpdC5yYW5nZSgp
LnN0YXJ0LmNvbnRhaW5lcjsKKworICAgICAgICAvLyBOb24temVybyBsZW5ndGggbWVhbnMgdGV4
dHVhbCBub2RlLCB6ZXJvIGxlbmd0aCBtZWFucyByZXBsYWNlZCBub2RlIChBS0EgImF0dGFjaG1l
bnRzIiBpbiBBWCkuCisgICAgICAgIGlmIChpdC50ZXh0KCkubGVuZ3RoKCkpIHsKKyAgICAgICAg
ICAgIGlmICghYXR0cmlidXRlZCkgeworICAgICAgICAgICAgICAgIC8vIEZpcnN0IGNoZWNrIGlm
IHRoaXMgaXMgcmVwcmVzZW50ZWQgYnkgYSBsaW5rLgorICAgICAgICAgICAgICAgIGF1dG8qIGxp
bmtPYmplY3QgPSBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphbmNob3JFbGVtZW50Rm9yTm9kZSgmbm9k
ZSk7CisgICAgICAgICAgICAgICAgaWYgKGFkZE9iamVjdFdyYXBwZXJUb0FycmF5KGxpbmtPYmpl
Y3QsIGFycmF5LmdldCgpKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAg
ICAgICAgICAgICAvLyBOZXh0IGNoZWNrIGlmIHRoaXMgcmVnaW9uIGlzIHJlcHJlc2VudGVkIGJ5
IGEgaGVhZGluZy4KKyAgICAgICAgICAgICAgICBhdXRvKiBoZWFkaW5nT2JqZWN0ID0gQWNjZXNz
aWJpbGl0eU9iamVjdDo6aGVhZGluZ0VsZW1lbnRGb3JOb2RlKCZub2RlKTsKKyAgICAgICAgICAg
ICAgICBpZiAoYWRkT2JqZWN0V3JhcHBlclRvQXJyYXkoaGVhZGluZ09iamVjdCwgYXJyYXkuZ2V0
KCkpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIFN0
cmluZyBsaXN0TWFya2VyVGV4dCA9IEFjY2Vzc2liaWxpdHlPYmplY3Q6Omxpc3RNYXJrZXJUZXh0
Rm9yTm9kZUFuZFBvc2l0aW9uKCZub2RlLCBtYWtlQ29udGFpbmVyT2Zmc2V0UG9zaXRpb24oaXQu
cmFuZ2UoKS5zdGFydCkpOworICAgICAgICAgICAgICAgIGlmICghbGlzdE1hcmtlclRleHQuaXNF
bXB0eSgpKQorICAgICAgICAgICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0Omxpc3RNYXJrZXJU
ZXh0XTsKKyAgICAgICAgICAgICAgICAvLyBUaGVyZSB3YXMgbm90IGFuIGVsZW1lbnQgcmVwcmVz
ZW50YXRpb24sIHNvIGp1c3QgcmV0dXJuIHRoZSB0ZXh0LgorICAgICAgICAgICAgICAgIFthcnJh
eSBhZGRPYmplY3Q6aXQudGV4dCgpLmNyZWF0ZU5TU3RyaW5nKCkuZ2V0KCldOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbGlzdE1hcmtlclRleHQgPSBBY2Nl
c3NpYmlsaXR5T2JqZWN0OjpsaXN0TWFya2VyVGV4dEZvck5vZGVBbmRQb3NpdGlvbigmbm9kZSwg
bWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKGl0LnJhbmdlKCkuc3RhcnQpKTsKKyAgICAgICAg
ICAgICAgICBpZiAoIWxpc3RNYXJrZXJUZXh0LmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAg
ICAgICBhdXRvIGF0dHJTdHJpbmcgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmlu
ZyBhbGxvY10gaW5pdF0pOworICAgICAgICAgICAgICAgICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdB
cHBlbmRUZXh0KGF0dHJTdHJpbmcuZ2V0KCksICZub2RlLCBsaXN0TWFya2VyVGV4dCk7CisgICAg
ICAgICAgICAgICAgICAgIFthcnJheSBhZGRPYmplY3Q6YXR0clN0cmluZy5nZXQoKV07CisgICAg
ICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXV0byBhdHRyU3RyaW5nID0gYWRvcHRO
UyhbW05TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgICAg
ICAgICBBWEF0dHJpYnV0ZWRTdHJpbmdBcHBlbmRUZXh0KGF0dHJTdHJpbmcuZ2V0KCksICZub2Rl
LCBpdC50ZXh0KCkuY3JlYXRlTlNTdHJpbmdXaXRob3V0Q29weWluZygpLmdldCgpKTsKKyAgICAg
ICAgICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OmF0dHJTdHJpbmcuZ2V0KCldOworICAgICAgICAg
ICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKE5vZGUqIHJlcGxhY2VkTm9k
ZSA9IGl0Lm5vZGUoKSkgeworICAgICAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IHNlbGYuYXhC
YWNraW5nT2JqZWN0LT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKHJlcGxhY2VkTm9kZS0+
cmVuZGVyZXIoKSk7CisgICAgICAgICAgICAgICAgaWYgKG9iamVjdCkKKyAgICAgICAgICAgICAg
ICAgICAgYWRkT2JqZWN0V3JhcHBlclRvQXJyYXkob2JqZWN0LCBhcnJheS5nZXQoKSk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYXJyYXkuYXV0b3JlbGVh
c2UoKTsKK30KKworLSAoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKilsaW5lUmVjdHNBbmRUZXh0
Cit7CisjaWYgUExBVEZPUk0oTUFDKQorICAgIGF1dG8qIGJhY2tpbmdPYmplY3QgPSBzZWxmLnVw
ZGF0ZU9iamVjdEJhY2tpbmdTdG9yZTsKKyAgICBpZiAoIWJhY2tpbmdPYmplY3QpCisgICAgICAg
IHJldHVybiBuaWw7CisjZWxzZQorICAgIGlmICghW3NlbGYgX3ByZXBhcmVBY2Nlc3NpYmlsaXR5
Q2FsbF0pCisgICAgICAgIHJldHVybiBuaWw7CisgICAgYXV0byogYmFja2luZ09iamVjdCA9IHNl
bGYuYXhCYWNraW5nT2JqZWN0OworI2VuZGlmCisKKyAgICBhdXRvIHJhbmdlID0gYmFja2luZ09i
amVjdC0+ZWxlbWVudFJhbmdlKCk7CisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIFZlY3RvcjxzdGQ6OnBhaXI8SW50UmVjdCwgUmV0YWluUHRyPE5TQXR0cmlidXRl
ZFN0cmluZz4+PiBsaW5lczsKKyAgICBhdXRvIHN0YXJ0ID0gVmlzaWJsZVBvc2l0aW9uIHsgbWFr
ZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJhbmdlLT5zdGFydCkgfTsKKyAgICBhdXRvIHJhbmdl
RW5kID0gVmlzaWJsZVBvc2l0aW9uIHsgbWFrZUNvbnRhaW5lck9mZnNldFBvc2l0aW9uKHJhbmdl
LT5lbmQpIH07CisgICAgd2hpbGUgKCFzdGFydC5pc051bGwoKSAmJiBzdGFydCA8PSByYW5nZUVu
ZCkgeworICAgICAgICBhdXRvIGVuZCA9IGJhY2tpbmdPYmplY3QtPm5leHRMaW5lRW5kUG9zaXRp
b24oc3RhcnQpOworICAgICAgICBpZiAoZW5kIDw9IHN0YXJ0KQorICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgYXV0byByZWN0ID0gYmFja2luZ09iamVjdC0+Ym91bmRzRm9yVmlzaWJsZVBv
c2l0aW9uUmFuZ2Uoe3N0YXJ0LCBlbmR9KTsKKworICAgICAgICBhdXRvIGxpbmVSYW5nZSA9IG1h
a2VTaW1wbGVSYW5nZShzdGFydCwgZW5kKTsKKyAgICAgICAgaWYgKCFsaW5lUmFuZ2UpCisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBOU0FycmF5ICpjb250ZW50ID0gW3NlbGYgY29udGVu
dEZvclNpbXBsZVJhbmdlOipsaW5lUmFuZ2UgYXR0cmlidXRlZDpZRVNdOworICAgICAgICBhdXRv
IHRleHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdF0p
OworICAgICAgICBmb3IgKGlkIGl0ZW0gaW4gY29udGVudCkgeworICAgICAgICAgICAgaWYgKFtp
dGVtIGlzS2luZE9mQ2xhc3M6TlNBdHRyaWJ1dGVkU3RyaW5nLmNsYXNzXSkKKyAgICAgICAgICAg
ICAgICBbdGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOml0ZW1dOworICAgICAgICAgICAgZWxz
ZSBpZiAoW2l0ZW0gaXNLaW5kT2ZDbGFzczpXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlci5j
bGFzc10pIHsKKyNpZiBQTEFURk9STShNQUMpCisgICAgICAgICAgICAgICAgYXV0byAqd3JhcHBl
ciA9IHN0YXRpY19jYXN0PFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyICo+KGl0ZW0pOwor
ICAgICAgICAgICAgICAgIGF1dG8qIG9iamVjdCA9IHdyYXBwZXIuYXhCYWNraW5nT2JqZWN0Owor
ICAgICAgICAgICAgICAgIGlmICghb2JqZWN0KQorICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKKworICAgICAgICAgICAgICAgIE5TU3RyaW5nICpsYWJlbDsKKyAgICAgICAgICAgICAgICBz
d2l0Y2ggKG9iamVjdC0+cm9sZVZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEFjY2Vz
c2liaWxpdHlSb2xlOjpTdGF0aWNUZXh0OgorICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IG9i
amVjdC0+c3RyaW5nVmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICAgICAgY2FzZSBBY2Nlc3NpYmlsaXR5Um9sZTo6SW1hZ2U6IHsKKyAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nIG5hbWUgPSBvYmplY3QtPnRpdGxlQXR0cmlidXRlVmFsdWUoKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG5hbWUuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgICAgICAg
ICAgbmFtZSA9IG9iamVjdC0+ZGVzY3JpcHRpb25BdHRyaWJ1dGVWYWx1ZSgpOworICAgICAgICAg
ICAgICAgICAgICBsYWJlbCA9IG5hbWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBsYWJlbCA9IG5pbDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgICAgICBOU1N0cmluZyAqbGFiZWwgPSBzdGF0aWNf
Y2FzdDxXZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlciAqPihpdGVtKS5hY2Nlc3NpYmlsaXR5
TGFiZWw7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAoIWxhYmVsKQorICAgICAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgICAgIGF1dG8gYXR0cmlidXRlZExhYmVs
ID0gYWRvcHROUyhbW05TQXR0cmlidXRlZFN0cmluZyBhbGxvY10gaW5pdFdpdGhTdHJpbmc6bGFi
ZWxdKTsKKyAgICAgICAgICAgICAgICBbdGV4dCBhcHBlbmRBdHRyaWJ1dGVkU3RyaW5nOmF0dHJp
YnV0ZWRMYWJlbC5nZXQoKV07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbGlu
ZXMuYXBwZW5kKHtyZWN0LCB0ZXh0fSk7CisKKyAgICAgICAgc3RhcnQgPSBlbmQ7CisgICAgICAg
IC8vIElmIHN0YXJ0IGlzIGF0IGEgaGFyZCBicmVha2xpbmUgIlxuIiwgbW92ZSB0byB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBuZXh0IGxpbmUuCisgICAgICAgIHdoaWxlIChpc0VuZE9mTGluZShzdGFy
dCkpIHsKKyAgICAgICAgICAgIGVuZCA9IHN0YXJ0Lm5leHQoKTsKKyAgICAgICAgICAgIGF1dG8g
ZW5kT2ZMaW5lUmFuZ2UgPSBtYWtlU2ltcGxlUmFuZ2Uoc3RhcnQsIGVuZCk7CisgICAgICAgICAg
ICBpZiAoIWVuZE9mTGluZVJhbmdlKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBUZXh0SXRlcmF0b3IgaXQoKmVuZE9mTGluZVJhbmdlKTsKKyAgICAgICAgICAgIGlmIChp
dC5hdEVuZCgpIHx8IGl0LnRleHQoKS5sZW5ndGgoKSAhPSAxIHx8IGl0LnRleHQoKVswXSAhPSAn
XG4nKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBzdGFydCA9IGVuZDsK
KyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChsaW5lcy5pc0VtcHR5KCkpCisgICAgICAgIHJl
dHVybiBuaWw7CisgICAgcmV0dXJuIGNyZWF0ZU5TQXJyYXkobGluZXMsIFtzZWxmXSAoY29uc3Qg
YXV0byYgbGluZSkgeworICAgICAgICByZXR1cm4gQHsgQCJyZWN0IjogW05TVmFsdWUgdmFsdWVX
aXRoUmVjdDpbc2VsZiBjb252ZXJ0UmVjdFRvU3BhY2U6RmxvYXRSZWN0KGxpbmUuZmlyc3QpIHNw
YWNlOkFjY2Vzc2liaWxpdHlDb252ZXJzaW9uU3BhY2U6OlNjcmVlbl1dLAorICAgICAgICAgICAg
ICAgICAgQCJ0ZXh0IjogbGluZS5zZWNvbmQuZ2V0KCkgfTsKKyAgICB9KS5hdXRvcmVsZWFzZSgp
OworfQorCiAtIChOU1N0cmluZyAqKWFyaWFMYW5kbWFya1JvbGVEZXNjcmlwdGlvbgogewogICAg
IHJldHVybiBzZWxmLmF4QmFja2luZ09iamVjdC0+YXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9u
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4IDNmODU1NzM0
NmM4ZjkyMDFiZjA1MWFjODk2MzIxMDIzOWExMjhiMmQuLjNlNzFjMzdkMjYyMGFhMjQwNmVjZTJi
MGIyYTQxOTViOWE2YjExMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCkBAIC0yMzcyLDYgKzIzNzIsMTIgQEAgQUxMT1dfREVQUkVDQVRFRF9JTVBMRU1FTlRBVElP
TlNfRU5ECiAgICAgaWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpOU0FjY2Vzc2li
aWxpdHlQYXRoQXR0cmlidXRlXSkKICAgICAgICAgcmV0dXJuIFtzZWxmIHBhdGhdOwogCisgICAg
aWYgKFthdHRyaWJ1dGVOYW1lIGlzRXF1YWxUb1N0cmluZzpAIkFYTGluZVJlY3RzQW5kVGV4dCJd
KSB7CisgICAgICAgIHJldHVybiBBY2Nlc3NpYmlsaXR5OjpyZXRyaWV2ZUF1dG9yZWxlYXNlZFZh
bHVlRnJvbU1haW5UaHJlYWQ8TlNBcnJheSAqPihbcHJvdGVjdGVkU2VsZiA9IHJldGFpblB0cihz
ZWxmKV0gKCkgLT4gUmV0YWluUHRyPE5TQXJyYXk+IHsKKyAgICAgICAgICAgIHJldHVybiBwcm90
ZWN0ZWRTZWxmLmdldCgpLmxpbmVSZWN0c0FuZFRleHQ7CisgICAgICAgIH0pOworICAgIH0KKwog
ICAgIGlmIChbYXR0cmlidXRlTmFtZSBpc0VxdWFsVG9TdHJpbmc6TlNBY2Nlc3NpYmlsaXR5SW1h
Z2VPdmVybGF5RWxlbWVudHNBdHRyaWJ1dGVdKSB7CiAgICAgICAgIGF1dG8gaW1hZ2VPdmVybGF5
RWxlbWVudHMgPSBiYWNraW5nT2JqZWN0LT5pbWFnZU92ZXJsYXlFbGVtZW50cygpOwogICAgICAg
ICByZXR1cm4gaW1hZ2VPdmVybGF5RWxlbWVudHMgPyBjb252ZXJ0VG9OU0FycmF5KCppbWFnZU92
ZXJsYXlFbGVtZW50cykgOiBuaWw7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMWViOTFlNzFkMjMzYWRlY2RkNDc1ZDcyMTk5YjA4MDIzOTU5Mjk1
Mi4uNDQwYWYyM2E3YWFiMjlkNDExZTAyYzU5ZjYwOTdhMmE5NjdjODgxOCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisy
MDIxLTA4LTE0ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIyQGFwcGxlLmNvbT4KKworICAg
ICAgICBFeHBvc2UgW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyIGxpbmVSZWN0c0FuZFRl
eHRdIG9uIE1hY09TLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjI5MDQ1CisgICAgICAgIDxyZGFyOi8vODE4MTkzMDE+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL0luamVj
dGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwOgorICAgICAgICAoV1RSOjpBY2Nl
c3NpYmlsaXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yRWxlbWVudCk6CisgICAgICAg
IChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxpbmVSZWN0c0FuZFRleHQgY29uc3QpOgor
ICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFjL0FjY2Vzc2liaWxp
dHlVSUVsZW1lbnRNYWMubW06CisgICAgICAgIChXVFI6OkFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6
OmxpbmVSZWN0c0FuZFRleHQgY29uc3QpOgorCiAyMDIxLTA4LTExICBZb3Vlbm4gRmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KIAogICAgICAgICBNZWRpYSBlbGVtZW50IGlzIG5vdCBhbHdheXMg
YXV0b3BsYXlpbmcgd2hlbiBnb2luZyBmcm9tIGJhY2tncm91bmQgdG8gZm9yZWdyb3VuZCBpZiBp
dCBpcyBpbml0aWFsbHkgbm90IGluIHZpZXdwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3BwIGIvVG9v
bHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50
LmNwcAppbmRleCBhYTZhM2UyYzM2Njc3MzMxMzA2NTg4YTZkMGFmNDRhZTE3ZGNiZWU4Li43N2Ey
MjUyYTFkN2M5MzFmYWQ4OWJiZGY0YjM1ZWY4NTI5NTVjZjMyIDEwMDY0NAotLS0gYS9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnQuY3Bw
CisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvQWNjZXNzaWJpbGl0
eVVJRWxlbWVudC5jcHAKQEAgLTg3LDcgKzg3LDYgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVt
ZW50Ojppc0luRGVmaW5pdGlvbkxpc3RUZXJtKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIGJv
b2wgQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6aXNUZXh0QXJlYSgpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CiBSZWZQdHI8QWNjZXNzaWJpbGl0eVRleHRNYXJrZXJSYW5nZT4gQWNjZXNzaWJpbGl0
eVVJRWxlbWVudDo6dGV4dE1hcmtlclJhbmdlTWF0Y2hlc1RleHROZWFyTWFya2VycyhKU1N0cmlu
Z1JlZiwgQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIqLCBBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciop
IHsgcmV0dXJuIG51bGxwdHI7IH0KIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmls
aXR5VUlFbGVtZW50OjphdHRyaWJ1dGVkU3RyaW5nRm9yRWxlbWVudCgpIHsgcmV0dXJuIG51bGxw
dHI7IH0KLUpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojps
aW5lUmVjdHNBbmRUZXh0KCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiBib29sIEFjY2Vzc2liaWxp
dHlVSUVsZW1lbnQ6OmlzSW5UYWJsZUNlbGwoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogYm9v
bCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luVGFibGUoKSBjb25zdCB7IHJldHVybiBmYWxz
ZTsgfQogYm9vbCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojppc0luTGFuZG1hcmsoKSBjb25zdCB7
IHJldHVybiBmYWxzZTsgfQpAQCAtMTE2LDYgKzExNSw3IEBAIGJvb2wgQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6aXNPblNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KIEpTUmV0YWluUHRy
PEpTU3RyaW5nUmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpkb21JZGVudGlmaWVyKCkgY29u
c3QgeyByZXR1cm4gbnVsbHB0cjsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2li
aWxpdHlVSUVsZW1lbnQ6OmN1cnJlbnRTdGF0ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbnVsbHB0
cjsgfQogSlNSZXRhaW5QdHI8SlNTdHJpbmdSZWY+IEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnNv
cnREaXJlY3Rpb24oKSBjb25zdCB7IHJldHVybiBudWxscHRyOyB9CitKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4gQWNjZXNzaWJpbGl0eVVJRWxlbWVudDo6bGluZVJlY3RzQW5kVGV4dCgpIGNvbnN0
IHsgcmV0dXJuIHsgfTsgfQogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyUmFuZ2U+IEFj
Y2Vzc2liaWxpdHlVSUVsZW1lbnQ6OmxlZnRXb3JkVGV4dE1hcmtlclJhbmdlRm9yVGV4dE1hcmtl
cihBY2Nlc3NpYmlsaXR5VGV4dE1hcmtlciopIHsgcmV0dXJuIG51bGxwdHI7IH0KIFJlZlB0cjxB
Y2Nlc3NpYmlsaXR5VGV4dE1hcmtlclJhbmdlPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyaWdo
dFdvcmRUZXh0TWFya2VyUmFuZ2VGb3JUZXh0TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2Vy
KikgeyByZXR1cm4gbnVsbHB0cjsgfQogUmVmUHRyPEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyPiBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpwcmV2aW91c1dvcmRTdGFydFRleHRNYXJrZXJGb3JUZXh0
TWFya2VyKEFjY2Vzc2liaWxpdHlUZXh0TWFya2VyKikgeyByZXR1cm4gbnVsbHB0cjsgfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNz
aWJpbGl0eVVJRWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggYzEyOTBkMWQ2Yzhk
NmQ5ODQ4ZmEzYmRkYjY1NmY4MmFlNDdlY2YwMi4uMTM5MWIzOWIxOGFkNWI3Y2ExOGU5YjI5Njhm
NzM3NWMzYjUyODcxZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9XZWJL
aXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFj
Lm1tCkBAIC04NDQsNiArODQ0LDE4IEBAIGRvdWJsZSBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50Ojpj
bGlja1BvaW50WSgpCiAgICAgcmV0dXJuIDAuMGY7CiB9CiAKK0pTUmV0YWluUHRyPEpTU3RyaW5n
UmVmPiBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpsaW5lUmVjdHNBbmRUZXh0KCkgY29uc3QKK3sK
KyAgICBCRUdJTl9BWF9PQkpDX0VYQ0VQVElPTlMKKyAgICBpZCBsaW5lUmVjdHNBbmRUZXh0ID0g
W21fZWxlbWVudCBhY2Nlc3NpYmlsaXR5QXR0cmlidXRlVmFsdWU6QCJBWExpbmVSZWN0c0FuZFRl
eHQiXTsKKyAgICBpZiAoIVtsaW5lUmVjdHNBbmRUZXh0IGlzS2luZE9mQ2xhc3M6TlNBcnJheS5j
bGFzc10pCisgICAgICAgIHJldHVybiB7IH07CisgICAgcmV0dXJuIFtbbGluZVJlY3RzQW5kVGV4
dCBjb21wb25lbnRzSm9pbmVkQnlTdHJpbmc6QCJ8Il0gY3JlYXRlSlNTdHJpbmdSZWZdOworICAg
IEVORF9BWF9PQkpDX0VYQ0VQVElPTlMKKworICAgIHJldHVybiB7IH07Cit9CisKIGRvdWJsZSBB
Y2Nlc3NpYmlsaXR5VUlFbGVtZW50OjppbnRWYWx1ZSgpIGNvbnN0CiB7CiAgICAgQkVHSU5fQVhf
T0JKQ19FWENFUFRJT05TCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNTU2MDg2MzNlZTA1ZDBjZTk1OGZmN2RkZDRmZmNjZTAx
NWY0Y2M1MS4uOGE4NzI3MWYxOWQ1YTZlNmE0MDVjMmM4NzZlZmYyZDY1MWRmN2M2MSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDE4IEBACisyMDIxLTA4LTE0ICBBbmRyZXMgR29uemFsZXogIDxhbmRyZXNnXzIy
QGFwcGxlLmNvbT4KKworICAgICAgICBFeHBvc2UgW1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFw
cGVyIGxpbmVSZWN0c0FuZFRleHRdIG9uIE1hY09TLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5MDQ1CisgICAgICAgIDxyZGFyOi8vODE4MTkzMDE+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBhY2Nl
c3NpYmlsaXR5L2VsZW1lbnQtbGluZS1yZWN0cy1hbmQtdGV4dC5odG1sOiBSZW5hbWVkIGZyb20g
TGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2VsZW1lbnQtbGluZS1yZWN0
cy1hbmQtdGV4dC5odG1sLgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25z
OgorICAgICAgICAqIHBsYXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L2VsZW1lbnQtbGluZS1yZWN0
cy1hbmQtdGV4dC1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBMYXlvdXRUZXN0cy9hY2Nlc3Np
YmlsaXR5L2lvcy1zaW11bGF0b3IvZWxlbWVudC1saW5lLXJlY3RzLWFuZC10ZXh0LWV4cGVjdGVk
LnR4dC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9lbGVtZW50LWxpbmUt
cmVjdHMtYW5kLXRleHQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBl
Y3RhdGlvbnM6CisKIDIwMjEtMDgtMTEgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUu
Y29tPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHIyNzMwNzIpOiBDYXBzIGxvY2sgaW5kaWNhdG9y
IGluIHBhc3N3b3JkIGZpZWxkIGlzIHRvbyBsYXJnZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
YWNjZXNzaWJpbGl0eS9lbGVtZW50LWxpbmUtcmVjdHMtYW5kLXRleHQuaHRtbCBiL0xheW91dFRl
c3RzL2FjY2Vzc2liaWxpdHkvZWxlbWVudC1saW5lLXJlY3RzLWFuZC10ZXh0Lmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNzE1ZTBlMmIyMTczYWYxM2M3YTM4YmFlZTg0N2Y4MTVkYmMzNjY4NQotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvZWxlbWVudC1saW5lLXJlY3RzLWFu
ZC10ZXh0Lmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9J
RVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi9yZXNv
dXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+CisKKzxkaXYg
aWQ9InRleHQiIHJvbGU9Imdyb3VwIj4KK1RoaXMgaXMgc29tZSB0ZXN0aW5nIGNvbnRlbnQuCis8
YSBocmVmPSIjIj5BIGxpbmsgaGVyZS48L2E+CitNT3JlIHRleHQuPGJyLz56PGJyLz4KK0Fub3Ro
ZXIgbGluZSBvZiB0ZXh0Ljxici8+CisKKzxpbWcgc3JjPSIuLi9yZXNvdXJjZXMvY2FrZS5wbmci
IGFsdD0iY2FrZSI+PGJyLz4KKworPHN2ZyBpZD0ic3ZnIiB3aWR0aD0iMzAwcHgiIGhlaWdodD0i
MjAwcHgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0
dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPgorICAgIDxkZWZzPgorICAgICAgICA8cGF0aCBp
ZD0iVGV4dFBhdGgxIiBkPSJNIDEwLDE1MCBBIDE1IDE1IDE4MCAwIDEgNzAgMTQwIEExNSAyNSAx
ODAgMCAwIDEzMCAxMzAgQTE1IDU1IDE4MCAwIDEgMTkwIDExMCIgLz4KKyAgICA8L2RlZnM+Cisg
ICAgPHRleHQgZm9udC1zaXplPSIxNCI+CisgICAgICA8dGV4dFBhdGggeGxpbms6aHJlZj0iI1Rl
eHRQYXRoMSI+CisgICAgICAgICAgIEphY2sgYW5kIEppbGwgd2VudCB1cCB0aGUgaGlsbCB0byBm
ZXRjaCBhIHBhaWwgb2Ygd2F0ZXIuIEphY2sgZmVsbCBkb3duLi4uCisgICAgICA8L3RleHRQYXRo
PgorICAgIDwvdGV4dD4KKzwvc3ZnPgorCis8IS0tIFBhcmFncmFwaCB3aXRoIHNvZnQgbGluZWJy
ZWFrcyBhZnRlciBzcGFjZSBhbmQgZGFzaC4gLS0+Cis8cD5hYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ejAxMjM0NTY3ODkgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IGFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5
ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5PC9wPgorPC9k
aXY+CisKKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+
CisKKzxzY3JpcHQ+CisgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdGhhdCBsaW5lUmVjdHNB
bmRUZXh0IHJldHVybnMgdGhlIGNvcnJlY3QgdmFsdWVzLiIpOworCisgICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgeworICAgICAgICBsZXQgdGV4dCA9IGFjY2Vzc2liaWxp
dHlDb250cm9sbGVyLmFjY2Vzc2libGVFbGVtZW50QnlJZCgidGV4dCIpOworICAgICAgICBsZXQg
bGluZVJlY3RzQW5kVGV4dCA9IHRleHQubGluZVJlY3RzQW5kVGV4dDsKKworICAgICAgICBsaW5l
UmVjdHNBbmRUZXh0LnNwbGl0KCJ8IikuZm9yRWFjaCgobGluZSkgPT4geworICAgICAgICAgICAg
bGV0IHRleHQgPSBsaW5lLm1hdGNoKC90ZXh0ID0gXCIuKlwiOy8pOworICAgICAgICAgICAgZGVi
dWcodGV4dFswXSk7CisKKyAgICAgICAgICAgIC8vIENhbm5vdCBsb2cgcmVjdCBjb29yZGluYXRl
cyBiZWNhdXNlIGl0IHdvdWxkIHZhcnkgZnJvbSBkZXZpY2UgdG8gZGV2aWNlLgorICAgICAgICAg
ICAgLy8gVGh1cywgZ2V0IHRoZSByZWN0cyB3aWR0aCBhbmQgaGVpZ2h0IGFuZCBtYWtlIHN1cmUg
dGhleSBhcmUgPiAwLgorICAgICAgICAgICAgbGV0IHNpemUgPSBsaW5lLm1hdGNoKC9OU1JlY3Q6
IHt7LSpbXGRdKywgLSpbXGRdK30sIHsoW1xkXSspLCAoW1xkXSspfX0vKTsKKyAgICAgICAgICAg
IGRlYnVnKGB3aWR0aCA+IDA6ICR7c2l6ZVsxXSA+IDB9YCk7CisgICAgICAgICAgICBkZWJ1Zyhg
aGVpZ2h0ID4gMDogJHtzaXplWzJdID4gMH1gKTsKKyAgICAgICAgfSk7CisgICAgfQorPC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9hY2Nlc3NpYmlsaXR5
L2lvcy1zaW11bGF0b3IvZWxlbWVudC1saW5lLXJlY3RzLWFuZC10ZXh0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkvaW9zLXNpbXVsYXRvci9lbGVtZW50LWxpbmUtcmVj
dHMtYW5kLXRleHQtZXhwZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
ZGNiZDFjNTk4MGIyMjk4NzY3OTFiNDQ4Yjc4NGI3ZDc2NDAxZjg5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2liaWxpdHkv
aW9zLXNpbXVsYXRvci9lbGVtZW50LWxpbmUtcmVjdHMtYW5kLXRleHQtZXhwZWN0ZWQudHh0Cisr
KyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotVGhpcyBpcyBzb21lIHRlc3RpbmcgY29udGVu
dC4gQSBsaW5rIGhlcmUuIE1PcmUgdGV4dC4KLXoKLUFub3RoZXIgbGluZSBvZiB0ZXh0LgotCi1K
YWNrIGFuZCBKaWxsIHdlbnQgdXAgdGhlIGhpbGwgdG8gZmV0Y2ggYSBwYWlsIG9mIHdhdGVyLiBK
YWNrIGZlbGwgZG93bi4uLgotYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IGFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LWFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OQotCi1UaGlzIHRlc3RzIHRoYXQgbGluZVJl
Y3RzQW5kVGV4dCByZXR1cm5zIHRoZSBjb3JyZWN0IHZhbHVlcy4KLQotT24gc3VjY2VzcywgeW91
IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1Qg
Q09NUExFVEUiLgotCi0KLXRleHQgPSAiVGhpcyBpcyBzb21lIHRlc3RpbmcgY29udGVudC4ge1xu
ICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7
XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7
XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2O1xufUEgbGluayBoZXJlLntc
biAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBcIlRpbWVzIE5ldyBSb21hblwi
O1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIE5ldyBSb21hblwi
O1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxNjtcbiAgICBVSUFjY2Vzc2li
aWxpdHlUb2tlblVuZGVybGluZSA9IDE7XG59IE1PcmUgdGV4dC57XG4gICAgVUlBY2Nlc3NpYmls
aXR5VG9rZW5Gb250RmFtaWx5ID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2li
aWxpdHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2li
aWxpdHlUb2tlbkZvbnRTaXplID0gMTY7XG59IjsKLXdpZHRoID4gMDogdHJ1ZQotaGVpZ2h0ID4g
MDogdHJ1ZQotdGV4dCA9ICJ6e1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9
IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9
IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9
IDE2O1xufSI7Ci13aWR0aCA+IDA6IHRydWUKLWhlaWdodCA+IDA6IHRydWUKLXRleHQgPSAiQW5v
dGhlciBsaW5lIG9mIHRleHQue1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9
IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9
IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9
IDE2O1xufSI7Ci13aWR0aCA+IDA6IHRydWUKLWhlaWdodCA+IDA6IHRydWUKLXRleHQgPSAiY2Fr
ZXtcbn0iOwotd2lkdGggPiAwOiB0cnVlCi1oZWlnaHQgPiAwOiB0cnVlCi10ZXh0ID0gIkphY2sg
YW5kIEppbGwgd2VudCB1cCB0aGUgaGlsbCB0byBmZXRjaCBhIHBhaWwgb2Ygd2F0ZXIuIEphY2sg
ZmVsbCBkb3duLi4ue1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFwiVGlt
ZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGlt
ZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE0O1xu
fSI7Ci13aWR0aCA+IDA6IHRydWUKLWhlaWdodCA+IDA6IHRydWUKLXRleHQgPSAiYWJjZGVmZ2hp
amtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEy
MzQ1Njc4OSB7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gXCJUaW1lcyBO
ZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBO
ZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTY7XG59IjsK
LXdpZHRoID4gMDogdHJ1ZQotaGVpZ2h0ID4gMDogdHJ1ZQotdGV4dCA9ICJhYmNkZWZnaGlqa2xt
bm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2
Nzg5LXtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBcIlRpbWVzIE5ldyBS
b21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIE5ldyBS
b21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxNjtcbn0iOwotd2lk
dGggPiAwOiB0cnVlCi1oZWlnaHQgPiAwOiB0cnVlCi10ZXh0ID0gImFiY2RlZmdoaWprbG1ub3Bx
cnN0dXZ3eHl6MDEyMzQ1Njc4OXtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkg
PSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUg
PSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUg
PSAxNjtcbn0iOwotd2lkdGggPiAwOiB0cnVlCi1oZWlnaHQgPiAwOiB0cnVlCi1QQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2VsZW1lbnQtbGluZS1yZWN0cy1h
bmQtdGV4dC5odG1sIGIvTGF5b3V0VGVzdHMvYWNjZXNzaWJpbGl0eS9pb3Mtc2ltdWxhdG9yL2Vs
ZW1lbnQtbGluZS1yZWN0cy1hbmQtdGV4dC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhZGEwZjAyMTkwODlkNmY5OTVlZDg4Y2NmYWU4NTFmNDQxN2IwOWUwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2FjY2Vzc2li
aWxpdHkvaW9zLXNpbXVsYXRvci9lbGVtZW50LWxpbmUtcmVjdHMtYW5kLXRleHQuaHRtbAorKysg
L2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVU
Ri8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5PgotCi08ZGl2
IGlkPSJ0ZXh0IiByb2xlPSJncm91cCI+Ci1UaGlzIGlzIHNvbWUgdGVzdGluZyBjb250ZW50Lgot
PGEgaHJlZj0iIyI+QSBsaW5rIGhlcmUuPC9hPgotTU9yZSB0ZXh0Ljxici8+ejxici8+Ci1Bbm90
aGVyIGxpbmUgb2YgdGV4dC48YnIvPgotCi08aW1nIHNyYz0iLi4vcmVzb3VyY2VzL2Nha2UucG5n
IiBhbHQ9ImNha2UiPjxici8+Ci0KLTxzdmcgaWQ9InN2ZyIgd2lkdGg9IjMwMHB4IiBoZWlnaHQ9
IjIwMHB4IiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJo
dHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KLSAgICA8ZGVmcz4KLSAgICAgICAgPHBhdGgg
aWQ9IlRleHRQYXRoMSIgZD0iTSAxMCwxNTAgQSAxNSAxNSAxODAgMCAxIDcwIDE0MCBBMTUgMjUg
MTgwIDAgMCAxMzAgMTMwIEExNSA1NSAxODAgMCAxIDE5MCAxMTAiIC8+Ci0gICAgPC9kZWZzPgot
ICAgIDx0ZXh0IGZvbnQtc2l6ZT0iMTQiPgotICAgICAgPHRleHRQYXRoIHhsaW5rOmhyZWY9IiNU
ZXh0UGF0aDEiPgotICAgICAgICAgICBKYWNrIGFuZCBKaWxsIHdlbnQgdXAgdGhlIGhpbGwgdG8g
ZmV0Y2ggYSBwYWlsIG9mIHdhdGVyLiBKYWNrIGZlbGwgZG93bi4uLgotICAgICAgPC90ZXh0UGF0
aD4KLSAgICA8L3RleHQ+Ci08L3N2Zz4KLQotPCEtLSBQYXJhZ3JhcGggd2l0aCBzb2Z0IGxpbmVi
cmVha3MgYWZ0ZXIgc3BhY2UgYW5kIGRhc2guIC0tPgotPHA+YWJjZGVmZ2hpamtsbW5vcHFyc3R1
dnd4eXowMTIzNDU2Nzg5IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSBhYmNk
ZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4
eXowMTIzNDU2Nzg5LWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OTwvcD4KLTwv
ZGl2PgotCi08cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLTxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2
PgotCi08c2NyaXB0PgotICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIHRoYXQgbGluZVJlY3Rz
QW5kVGV4dCByZXR1cm5zIHRoZSBjb3JyZWN0IHZhbHVlcy4iKTsKLQotICAgIGlmICh3aW5kb3cu
YWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIpIHsKLSAgICAgICAgbGV0IHRleHQgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5hY2Nlc3NpYmxlRWxlbWVudEJ5SWQoInRleHQiKTsKLSAgICAgICAgbGV0
IGxpbmVSZWN0c0FuZFRleHQgPSB0ZXh0LmxpbmVSZWN0c0FuZFRleHQ7Ci0KLSAgICAgICAgbGlu
ZVJlY3RzQW5kVGV4dC5zcGxpdCgifCIpLmZvckVhY2goKGxpbmUpID0+IHsKLSAgICAgICAgICAg
IGxldCB0ZXh0ID0gbGluZS5tYXRjaCgvdGV4dCA9IFwiLipcIjsvKTsKLSAgICAgICAgICAgIGRl
YnVnKHRleHRbMF0pOwotCi0gICAgICAgICAgICAvLyBDYW5ub3QgbG9nIHJlY3QgY29vcmRpbmF0
ZXMgYmVjYXVzZSBpdCB3b3VsZCB2YXJ5IGZyb20gZGV2aWNlIHRvIGRldmljZS4KLSAgICAgICAg
ICAgIC8vIFRodXMsIGdldCB0aGUgcmVjdHMgd2lkdGggYW5kIGhlaWdodCBhbmQgbWFrZSBzdXJl
IHRoZXkgYXJlID4gMC4KLSAgICAgICAgICAgIGxldCBzaXplID0gbGluZS5tYXRjaCgvTlNSZWN0
OiB7e1tcZF0rLCBbXGRdK30sIHsoW1xkXSspLCAoW1xkXSspfX0vKTsKLSAgICAgICAgICAgIGRl
YnVnKGB3aWR0aCA+IDA6ICR7c2l6ZVsxXSA+IDB9YCk7Ci0gICAgICAgICAgICBkZWJ1ZyhgaGVp
Z2h0ID4gMDogJHtzaXplWzJdID4gMH1gKTsKLSAgICAgICAgfSk7Ci0gICAgfQotPC9zY3JpcHQ+
Ci08c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+
Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRp
b25zCmluZGV4IDZlNjBmNGYwZTllN2NiNjU2YjRiM2EzYzllYWY4N2U2NjJlNDE0NTguLjVmOTlm
OWQwNmJkODViZDQ0ZGViZTVjYTQxZTJhNzc2Mzg2OTE2NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2lvcy9UZXN0RXhwZWN0YXRpb25zCkBAIC0yMTA0LDYgKzIxMDQsNyBAQCBhY2Nlc3NpYmls
aXR5L2FyaWEtc29ydC1jaGFuZ2VkLW5vdGlmaWNhdGlvbi5odG1sIFsgUGFzcyBdCiB3ZWJraXQu
b3JnL2IvMTUwMzY2IGFjY2Vzc2liaWxpdHkvYXJpYS10YWJsZS1hdHRyaWJ1dGVzLmh0bWwgWyBQ
YXNzIF0KIAogYWNjZXNzaWJpbGl0eS9zZWxlY3RlZC1zdGF0ZS1jaGFuZ2VkLW5vdGlmaWNhdGlv
bnMuaHRtbCBbIFBhc3MgXQorYWNjZXNzaWJpbGl0eS9lbGVtZW50LWxpbmUtcmVjdHMtYW5kLXRl
eHQuaHRtbCBbIFBhc3MgXQogCiAjIEVuYWJsZSAiYXR0YWNobWVudCBlbGVtZW50IiB0ZXN0IGZv
ciBpT1MKIGFjY2Vzc2liaWxpdHkvYXR0YWNobWVudC1lbGVtZW50Lmh0bWwgWyBQYXNzIF0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9hY2Nlc3NpYmlsaXR5L2VsZW1lbnQt
bGluZS1yZWN0cy1hbmQtdGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9p
b3MvYWNjZXNzaWJpbGl0eS9lbGVtZW50LWxpbmUtcmVjdHMtYW5kLXRleHQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjZkY2JkMWM1OTgwYjIyOTg3Njc5MWI0NDhiNzg0YjdkNzY0MDFmODkKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvYWNjZXNzaWJpbGl0eS9l
bGVtZW50LWxpbmUtcmVjdHMtYW5kLXRleHQtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNDAgQEAK
K1RoaXMgaXMgc29tZSB0ZXN0aW5nIGNvbnRlbnQuIEEgbGluayBoZXJlLiBNT3JlIHRleHQuCit6
CitBbm90aGVyIGxpbmUgb2YgdGV4dC4KKworSmFjayBhbmQgSmlsbCB3ZW50IHVwIHRoZSBoaWxs
IHRvIGZldGNoIGEgcGFpbCBvZiB3YXRlci4gSmFjayBmZWxsIGRvd24uLi4KK2FiY2RlZmdoaWpr
bG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSBhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0
NTY3ODkgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LWFiY2RlZmdoaWprbG1u
b3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3
ODkKKworVGhpcyB0ZXN0cyB0aGF0IGxpbmVSZWN0c0FuZFRleHQgcmV0dXJucyB0aGUgY29ycmVj
dCB2YWx1ZXMuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCit0ZXh0ID0gIlRoaXMg
aXMgc29tZSB0ZXN0aW5nIGNvbnRlbnQuIHtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRG
YW1pbHkgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9u
dE5hbWUgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9u
dFNpemUgPSAxNjtcbn1BIGxpbmsgaGVyZS57XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250
RmFtaWx5ID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZv
bnROYW1lID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZv
bnRTaXplID0gMTY7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5VbmRlcmxpbmUgPSAxO1xufSBN
T3JlIHRleHQue1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFwiVGltZXMg
TmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGltZXMg
TmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2O1xufSI7
Cit3aWR0aCA+IDA6IHRydWUKK2hlaWdodCA+IDA6IHRydWUKK3RleHQgPSAientcbiAgICBVSUFj
Y2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJ
QWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJ
QWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxNjtcbn0iOword2lkdGggPiAwOiB0cnVlCito
ZWlnaHQgPiAwOiB0cnVlCit0ZXh0ID0gIkFub3RoZXIgbGluZSBvZiB0ZXh0LntcbiAgICBVSUFj
Y2Vzc2liaWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJ
QWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJ
QWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxNjtcbn0iOword2lkdGggPiAwOiB0cnVlCito
ZWlnaHQgPiAwOiB0cnVlCit0ZXh0ID0gImNha2V7XG59IjsKK3dpZHRoID4gMDogdHJ1ZQoraGVp
Z2h0ID4gMDogdHJ1ZQordGV4dCA9ICJKYWNrIGFuZCBKaWxsIHdlbnQgdXAgdGhlIGhpbGwgdG8g
ZmV0Y2ggYSBwYWlsIG9mIHdhdGVyLiBKYWNrIGZlbGwgZG93bi4uLntcbiAgICBVSUFjY2Vzc2li
aWxpdHlUb2tlbkZvbnRGYW1pbHkgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJQWNjZXNz
aWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIE5ldyBSb21hblwiO1xuICAgIFVJQWNjZXNz
aWJpbGl0eVRva2VuRm9udFNpemUgPSAxNDtcbn0iOword2lkdGggPiAwOiB0cnVlCitoZWlnaHQg
PiAwOiB0cnVlCit0ZXh0ID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OSBh
YmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkge1xuICAgIFVJQWNjZXNzaWJpbGl0
eVRva2VuRm9udEZhbWlseSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmls
aXR5VG9rZW5Gb250TmFtZSA9IFwiVGltZXMgTmV3IFJvbWFuXCI7XG4gICAgVUlBY2Nlc3NpYmls
aXR5VG9rZW5Gb250U2l6ZSA9IDE2O1xufSI7Cit3aWR0aCA+IDA6IHRydWUKK2hlaWdodCA+IDA6
IHRydWUKK3RleHQgPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5LWFiY2Rl
ZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS17XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9r
ZW5Gb250RmFtaWx5ID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlU
b2tlbkZvbnROYW1lID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlU
b2tlbkZvbnRTaXplID0gMTY7XG59IjsKK3dpZHRoID4gMDogdHJ1ZQoraGVpZ2h0ID4gMDogdHJ1
ZQordGV4dCA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODl7XG4gICAgVUlB
Y2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBV
SUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gXCJUaW1lcyBOZXcgUm9tYW5cIjtcbiAgICBV
SUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTY7XG59IjsKK3dpZHRoID4gMDogdHJ1ZQor
aGVpZ2h0ID4gMDogdHJ1ZQorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNU
IENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy13azEvVGVzdEV4cGVjdGF0
aW9ucwppbmRleCA0OWNhMGEyOTdlMTM1OGM0ODAxNWNmNDZlZjMxOGQyODg2NzIxYzgyLi5jNzc1
Mjg0ZjBkZDRhZGJkNDgyMDQ2M2NmNDlhMTM5ZTQ4MmFkNmYzIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMtd2sxL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjLXdrMS9UZXN0RXhwZWN0YXRpb25zCkBAIC05NzQsNiArOTc0LDcgQEAgYWNj
ZXNzaWJpbGl0eS9tYWMvYXJpYS1lcnJvcm1lc3NhZ2UuaHRtbCBbIFNraXAgXQogYWNjZXNzaWJp
bGl0eS9tYWMvcHNldWRvLWVsZW1lbnQtdGV4dC1tYXJrZXJzLmh0bWwgWyBTa2lwIF0KIGFjY2Vz
c2liaWxpdHkvbmVzdGVkLXRleHRhcmVhcy12YWx1ZS1jaGFuZ2VkLW5vdGlmaWNhdGlvbnMuaHRt
bCBbIFNraXAgXQogYWNjZXNzaWJpbGl0eS9zZWxlY3RlZC1zdGF0ZS1jaGFuZ2VkLW5vdGlmaWNh
dGlvbnMuaHRtbCBbIFNraXAgXQorYWNjZXNzaWJpbGl0eS9lbGVtZW50LWxpbmUtcmVjdHMtYW5k
LXRleHQuaHRtbCBbIFNraXAgXQogCiAjIDxyZGFyOi8vcHJvYmxlbS82MTA2NjkyOT4gWyBTdHJl
c3MgR0MgXSBmbGFreSBKU0M6OkV4Y2VwdGlvblNjb3BlOjphc3NlcnROb0V4Y2VwdGlvbiBjcmFz
aCB1bmRlciBXZWJDb3JlOjpSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyCiB3ZWJraXQu
b3JnL2IvMjExOTIzIGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvZmV0Y2gvYXBpL2Jh
c2ljL3N0cmVhbS1zYWZlLWNyZWF0aW9uLmFueS5odG1sIFsgUGFzcyBDcmFzaCBdCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9lbGVtZW50LWxpbmUt
cmVjdHMtYW5kLXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Fj
Y2Vzc2liaWxpdHkvZWxlbWVudC1saW5lLXJlY3RzLWFuZC10ZXh0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5jMjBkNjFiMWZiOGFiZDBmMWM5NWFlNzg4NmNkZmFiMGUwNDc1ZTZiCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvZWxlbWVu
dC1saW5lLXJlY3RzLWFuZC10ZXh0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQwIEBACitUaGlz
IGlzIHNvbWUgdGVzdGluZyBjb250ZW50LiBBIGxpbmsgaGVyZS4gTU9yZSB0ZXh0LgoregorQW5v
dGhlciBsaW5lIG9mIHRleHQuCisKK0phY2sgYW5kIEppbGwgd2VudCB1cCB0aGUgaGlsbCB0byBm
ZXRjaCBhIHBhaWwgb2Ygd2F0ZXIuIEphY2sgZmVsbCBkb3duLi4uCithYmNkZWZnaGlqa2xtbm9w
cXJzdHV2d3h5ejAxMjM0NTY3ODkgYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5
IGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1hYmNkZWZnaGlqa2xtbm9wcXJz
dHV2d3h5ejAxMjM0NTY3ODktYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5CisK
K1RoaXMgdGVzdHMgdGhhdCBsaW5lUmVjdHNBbmRUZXh0IHJldHVybnMgdGhlIGNvcnJlY3QgdmFs
dWVzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwordGV4dCA9ICJUaGlzIGlzIHNv
bWUgdGVzdGluZyBjb250ZW50LiB7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5
ID0gVGltZXM7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGltZXMgUm9t
YW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTY7XG59QSBsaW5rIGhl
cmUue1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFRpbWVzO1xuICAgIFVJ
QWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIFJvbWFuXCI7XG4gICAgVUlBY2Nl
c3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2O1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuVW5k
ZXJsaW5lID0gMTtcbn0gTU9yZSB0ZXh0LntcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRG
YW1pbHkgPSBUaW1lcztcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnROYW1lID0gXCJUaW1l
cyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUgPSAxNjtcbn0iOwor
d2lkdGggPiAwOiB0cnVlCitoZWlnaHQgPiAwOiB0cnVlCit0ZXh0ID0gInp7XG4gICAgVUlBY2Nl
c3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gVGltZXM7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9r
ZW5Gb250TmFtZSA9IFwiVGltZXMgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZv
bnRTaXplID0gMTY7XG59IjsKK3dpZHRoID4gMDogdHJ1ZQoraGVpZ2h0ID4gMDogdHJ1ZQordGV4
dCA9ICJBbm90aGVyIGxpbmUgb2YgdGV4dC57XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250
RmFtaWx5ID0gVGltZXM7XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGlt
ZXMgUm9tYW5cIjtcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTY7XG59IjsK
K3dpZHRoID4gMDogdHJ1ZQoraGVpZ2h0ID4gMDogdHJ1ZQordGV4dCA9ICJjYWtle1xufSI7Cit3
aWR0aCA+IDA6IHRydWUKK2hlaWdodCA+IDA6IHRydWUKK3RleHQgPSAiSmFjayBhbmQgSmlsbCB3
ZW50IHVwIHRoZSBoaWxsIHRvIGZldGNoIGEgcGFpbCBvZiB3YXRlci4gSmFjayBmZWxsIGRvd24u
Li57XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250RmFtaWx5ID0gVGltZXM7XG4gICAgVUlB
Y2Nlc3NpYmlsaXR5VG9rZW5Gb250TmFtZSA9IFwiVGltZXMgUm9tYW5cIjtcbiAgICBVSUFjY2Vz
c2liaWxpdHlUb2tlbkZvbnRTaXplID0gMTQ7XG59IjsKK3dpZHRoID4gMDogdHJ1ZQoraGVpZ2h0
ID4gMDogdHJ1ZQordGV4dCA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkg
YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5IHtcbiAgICBVSUFjY2Vzc2liaWxp
dHlUb2tlbkZvbnRGYW1pbHkgPSBUaW1lcztcbiAgICBVSUFjY2Vzc2liaWxpdHlUb2tlbkZvbnRO
YW1lID0gXCJUaW1lcyBSb21hblwiO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udFNpemUg
PSAxNjtcbn0iOword2lkdGggPiAwOiB0cnVlCitoZWlnaHQgPiAwOiB0cnVlCit0ZXh0ID0gImFi
Y2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OS1hYmNkZWZnaGlqa2xtbm9wcXJzdHV2
d3h5ejAxMjM0NTY3ODkte1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFRp
bWVzO1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIFJvbWFuXCI7
XG4gICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2O1xufSI7Cit3aWR0aCA+IDA6
IHRydWUKK2hlaWdodCA+IDA6IHRydWUKK3RleHQgPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4
eXowMTIzNDU2Nzg5e1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udEZhbWlseSA9IFRpbWVz
O1xuICAgIFVJQWNjZXNzaWJpbGl0eVRva2VuRm9udE5hbWUgPSBcIlRpbWVzIFJvbWFuXCI7XG4g
ICAgVUlBY2Nlc3NpYmlsaXR5VG9rZW5Gb250U2l6ZSA9IDE2O1xufSI7Cit3aWR0aCA+IDA6IHRy
dWUKK2hlaWdodCA+IDA6IHRydWUKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKwor
VEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25z
CmluZGV4IDQ1OWNjYTgxMTRlYzI5NzE5ODgzOWJmZjZhMGMwZTcwMjNlNTJiMGEuLjlhODgxMWZh
MTkwY2Y5YjlhYjA0ZTYxMGQ2OTgxMTYyMDZmYzM5NmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC00NjY4LDMgKzQ2NjgsNCBAQCB3ZWJraXQub3JnL2Iv
MjI5MDA5IGZhc3QvZm9ybXMvaW5wdXQtYmFzZWxpbmUuaHRtbCBbIFBhc3MgQ3Jhc2ggXQogd2Vi
a2l0Lm9yZy9iLzIyOTAwNSBmYXN0L2V2ZW50cy9kcm9wem9uZS0wMDUuaHRtbCBbIFBhc3MgQ3Jh
c2ggXQogCiBhY2Nlc3NpYmlsaXR5L3NlbGVjdGVkLXN0YXRlLWNoYW5nZWQtbm90aWZpY2F0aW9u
cy5odG1sIFsgU2tpcCBdCithY2Nlc3NpYmlsaXR5L2VsZW1lbnQtbGluZS1yZWN0cy1hbmQtdGV4
dC5odG1sIFsgU2tpcCBdCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>