<?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>50316</bug_id>
          
          <creation_ts>2010-12-01 02:27:01 -0800</creation_ts>
          <short_desc>Split DECLARE_ANIMATED_PROPERTY* in DECLARE/DEFINE parts for SVGLength</short_desc>
          <delta_ts>2010-12-03 00:43:57 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>42025</blocked>
    
    <blocked>50322</blocked>
    
    <blocked>50323</blocked>
    
    <blocked>50383</blocked>
    
    <blocked>50440</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikolas Zimmermann">zimmermann</reporter>
          <assigned_to name="Nikolas Zimmermann">zimmermann</assigned_to>
          <cc>mdelaney7</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>315580</commentid>
    <comment_count>0</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-12-01 02:27:01 -0800</bug_when>
    <thetext>Split DECLARE_ANIMATED_PROPERTY_NEW in two macros: DECLARE/DEFINE_ANIMATED_PROPERTY, to avoid having to include SVGNames.h in the headers, that only want to declare the animated properties.
Create simple DECLARE_ANIMATED_LENGTH / DEFINE_ANIMATED_LENGTH macro pairs, and deploy them everywhere, as first step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315581</commentid>
    <comment_count>1</comment_count>
      <attachid>75262</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-12-01 02:29:41 -0800</bug_when>
    <thetext>Created attachment 75262
Patch

Starting to convert SVGLength. The global SVGNames.h will go away, as soon as all types are converted.
But it&apos;s only a simple mechanical task, it should be done soon....</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315587</commentid>
    <comment_count>2</comment_count>
      <attachid>75262</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2010-12-01 03:32:44 -0800</bug_when>
    <thetext>Comment on attachment 75262
Patch

I think this is one good example of a patch where mixing style fixes makes things harder to read :)

Looks reasonable to me otherwise. You might want to get rid of the file list in the ChangeLog if you are not going to use it to add inline comments, since it&apos;s pretty big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315594</commentid>
    <comment_count>3</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-12-01 04:11:57 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 75262 [details])
&gt; I think this is one good example of a patch where mixing style fixes makes things harder to read :)

True, I just had to do the changes, to make the style bot happy... :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>315628</commentid>
    <comment_count>4</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2010-12-01 07:18:38 -0800</bug_when>
    <thetext>Landed in r70316.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>75262</attachid>
            <date>2010-12-01 02:29:41 -0800</date>
            <delta_ts>2010-12-01 03:32:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>CleanupPatch.diff</filename>
            <type>text/plain</type>
            <size>92747</size>
            <attacher name="Nikolas Zimmermann">zimmermann</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MzAxMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsODQgQEAKKzIwMTAtMTItMDEgIE5pa29sYXMgWmltbWVybWFubiAgPG56aW1tZXJt
YW5uQHJpbS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgU3BsaXQgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWSogaW4gREVDTEFSRS9ERUZJTkUg
cGFydHMgZm9yIFNWR0xlbmd0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9NTAzMTYKKworICAgICAgICBJbnRyb2R1Y2UgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEggLyBERUZJTkVfQU5JTUFURURfTEVOR1RILCBzcGxpdHRpbmcgdXAgdGhlIG9yaWdpbmFs
IERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXIG1hY3JvCisgICAgICAgIGluIGEgcGFydCB0
aGF0IGdvZXMgaW4gdGhlIC5jcHAgZmlsZSBhbmQgYW5vdGhlciB0aGF0IHJlbWFpbnMgaW4gdGhl
IGhlYWRlci4gVGhpcyBhdm9pZHMgaGF2aW5nIHRvIGluY2x1ZGUgU1ZHTmFtZXMuaAorICAgICAg
ICBpbiBhbGwgU1ZHKkVsZW1lbnQgZmlsZXMuCisKKyAgICAgICAgTm8gZnVuY3Rpb25hbCBjaGFu
Z2VzLCB0aHVzIG5vIG5ldyB0ZXN0cy4KKworICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0
aC5oOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcv
U1ZHQ2lyY2xlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6
aXNWYWxpZCk6CisgICAgICAgICogc3ZnL1NWR0N1cnNvckVsZW1lbnQuY3BwOgorICAgICAgICAq
IHN2Zy9TVkdDdXJzb3JFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdDdXJzb3JFbGVt
ZW50Ojppc1ZhbGlkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwOgorICAg
ICAgICAqIHN2Zy9TVkdFbGxpcHNlRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxs
aXBzZUVsZW1lbnQ6OmlzVmFsaWQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAqIHN2Zy9TVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKiBzdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQ6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50Ojppc1ZhbGlkKToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFn
ZUVsZW1lbnQ6OmlzVmFsaWQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6Cisg
ICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5l
RWxlbWVudDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3Vw
cG9ydHNNYXJrZXJzKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50Lmg6CisgICAgICAgICog
c3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxl
bWVudDo6U1ZHTWFya2VyRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQu
aDoKKyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdN
YXNrRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6OmlzVmFsaWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFza0VsZW1lbnQ6Om5lZWRzUGVuZGluZ1Jlc291cmNl
SGFuZGxpbmcpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAg
ICogc3ZnL1NWR1BhdHRlcm5FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJu
RWxlbWVudDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6
bmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZyk6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdy
YWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5oOgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgICogc3ZnL1NW
R1JlY3RFbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVudDo6aXNWYWxp
ZCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6U1ZHU1ZHRWxlbWVudCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OmlzVmFsaWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c2V0Q29udGFpbmVyU2l6ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojpjb250YWluZXJTaXplKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1NWR0VsZW1lbnQ6Omhhc1NldENvbnRhaW5lclNpemUpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU1ZHRWxlbWVudDo6Y3VycmVudFRyYW5zbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
VkdFbGVtZW50Ojp0aW1lQ29udGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1l
bnQ6OmlzU1ZHKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnJlbmRlcmVySXNO
ZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwOgorICAgICAg
ICAqIHN2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRDb250ZW50RWxlbWVudDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29u
dGVudEVsZW1lbnQ6OmlzVGV4dENvbnRlbnQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuaDoKKyAgICAgICAg
KiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9TVkdVc2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHVXNlRWxlbWVudDo6aXNWYWxpZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VF
bGVtZW50OjpzZXRVcGRhdGVzQmxvY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50Ojppc1BlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZHQW5p
bWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oOgorCiAyMDEwLTEyLTAxICBOaWtvbGFzIFppbW1lcm1hbm4g
IDxuemltbWVybWFubkByaW0uY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpcmsgU2NodWx6
ZS4KSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaAkocmV2aXNpb24gNzMwMTApCisrKyBXZWJD
b3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw2ICsyOCwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHR5cGVkZWYgU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRl
YXJPZmY8U1ZHTGVuZ3RoPiBTVkdBbmltYXRlZExlbmd0aDsKIAorLy8gSGVscGVyIG1hY3JvcyB0
byBkZWNsYXJlL2RlZmluZSBhIFNWR0FuaW1hdGVkTGVuZ3RoIG9iamVjdAorI2RlZmluZSBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KSBcCitERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkTGVuZ3RoLCBTVkdMZW5ndGgsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHkpCisKKyNkZWZpbmUgREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgVXBwZXJQcm9wZXJ0eSwgTG93ZXJQcm9wZXJ0eSkg
XAorREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQXR0cmlidXRlLCBET01B
dHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkTGVuZ3RoLCBTVkdMZW5ndGgsIFVwcGVy
UHJvcGVydHksIExvd2VyUHJvcGVydHkpCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2Vu
ZGlmIC8vIEVOQUJMRShTVkcpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkocmV2aXNp
b24gNzMwMTApCisrKyBXZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzIsNiArMzIsMTEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBBbmlt
YXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucworREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdDaXJj
bGVFbGVtZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBDeCwgY3gpCitERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpjeUF0dHIsIEN5LCBjeSkKK0RFRklORV9B
TklNQVRFRF9MRU5HVEgoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6OnJBdHRyLCBSLCByKQor
CiBpbmxpbmUgU1ZHQ2lyY2xlRWxlbWVudDo6U1ZHQ2lyY2xlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFu
c2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fY3goTGVuZ3RoTW9k
ZVdpZHRoKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuaAkocmV2aXNpb24gNzMwMTApCisrKyBX
ZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTMxLDMzICsz
MSwzNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdDaXJjbGVFbGVt
ZW50IDogcHVibGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKLSAgICBwdWJsaWM6Ci0gICAg
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0NpcmNsZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR0NpcmNs
ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICAgICAgdmly
dHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9
Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0YShQYXRo
JikgY29uc3Q7Ci0KLSAgICAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMo
KSBjb25zdDsKLQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdDaXJj
bGVFbGVtZW50LCBTVkdOYW1lczo6Y3hBdHRyLCBTVkdMZW5ndGgsIEN4LCBjeCkKLSAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6
OmN5QXR0ciwgU1ZHTGVuZ3RoLCBDeSwgY3kpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVFlfTkVXKFNWR0NpcmNsZUVsZW1lbnQsIFNWR05hbWVzOjpyQXR0ciwgU1ZHTGVuZ3RoLCBS
LCByKQotCi0gICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJPUEVSVFlfTkVXKFNWR0NpcmNsZUVsZW1lbnQsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLSAgICB9OworY2xhc3Mg
U1ZHQ2lyY2xlRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8U1ZHQ2lyY2xlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIFNWR0NpcmNsZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgp
IGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KKworICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworCisgICAgdmlydHVh
bCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHNlbGZI
YXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsKKworICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRl
Y2xhcmF0aW9ucworICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEN4LCBjeCkKKyAgICBERUNM
QVJFX0FOSU1BVEVEX0xFTkdUSChDeSwgY3kpCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
UiwgcikKKworICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKKyAgICBERUNMQVJF
X0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJUWV9ORVcoU1ZHQ2lyY2xlRWxlbWVudCwgU1ZHTmFtZXM6
OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkocmV2aXNpb24gNzMwMTAp
CisrKyBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsMTAgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisvLyBBbmltYXRlZCBwcm9w
ZXJ0eSBkZWZpbml0aW9ucworREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdDdXJzb3JFbGVtZW50
LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0N1cnNv
ckVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKKwogaW5saW5lIFNWR0N1cnNvckVsZW1l
bnQ6OlNWR0N1cnNvckVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQqIGRvY3VtZW50KQogICAgIDogU1ZHRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAs
IG1feChMZW5ndGhNb2RlV2lkdGgpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdDdXJzb3JFbGVtZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHQ3Vyc29yRWxlbWVudC5oCShyZXZpc2lv
biA3MzAxMCkKKysrIFdlYkNvcmUvc3ZnL1NWR0N1cnNvckVsZW1lbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMzEsNDAgKzMxLDQxIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNz
IFNWR0N1cnNvckVsZW1lbnQgOiBwdWJsaWMgU1ZHRWxlbWVudCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVyZW5jZSB7Ci0gICAgcHVibGljOgotICAgICAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdDdXJzb3JFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYsIERvY3VtZW50Kik7CitjbGFzcyBTVkdDdXJzb3JFbGVtZW50IDogcHVibGljIFNW
R0VsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
LAorICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdVUklSZWZlcmVuY2UgeworcHVi
bGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR0N1cnNvckVsZW1lbnQ+IGNyZWF0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgICAgICB2aXJ0dWFsIH5TVkdDdXJz
b3JFbGVtZW50KCk7CisgICAgdmlydHVhbCB+U1ZHQ3Vyc29yRWxlbWVudCgpOwogCi0gICAgICAg
IHZvaWQgYWRkQ2xpZW50KFNWR0VsZW1lbnQqKTsKLSAgICAgICAgdm9pZCByZW1vdmVDbGllbnQo
U1ZHRWxlbWVudCopOworICAgIHZvaWQgYWRkQ2xpZW50KFNWR0VsZW1lbnQqKTsKKyAgICB2b2lk
IHJlbW92ZUNsaWVudChTVkdFbGVtZW50Kik7CiAKLSAgICBwcml2YXRlOgotICAgICAgICBTVkdD
dXJzb3JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworcHJpdmF0ZToK
KyAgICBTVkdDdXJzb3JFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwog
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6
OmlzVmFsaWQoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
U1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBl
ZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3lu
Y2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
c3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICAgICAgdmly
dHVhbCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYp
IGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0dHJpYnV0ZVVSTHMoTGlz
dEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIAotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BF
UlRZX05FVyhTVkdDdXJzb3JFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFNWR0xlbmd0aCwgWCwg
eCkKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHQ3Vyc29yRWxlbWVu
dCwgU1ZHTmFtZXM6OnlBdHRyLCBTVkdMZW5ndGgsIFksIHkpCisgICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQogCi0gICAgICAgIC8vIFNWR1VSSVJlZmVy
ZW5jZQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJUWV9ORVcoU1ZHQ3Vy
c29yRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIFN0cmluZywgSHJlZiwgaHJlZikKKyAg
ICAvLyBTVkdVUklSZWZlcmVuY2UKKyAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJU
WV9ORVcoU1ZHQ3Vyc29yRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIFN0cmluZywgSHJl
ZiwgaHJlZikKIAotICAgICAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdDdXJzb3JFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisgICAgLy8gU1ZH
RXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAorICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BS
T1BFUlRZX05FVyhTVkdDdXJzb3JFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCiAKLSAgICAgICAgSGFzaFNldDxTVkdFbGVtZW50Kj4gbV9jbGllbnRz
OwotICAgIH07CisgICAgSGFzaFNldDxTVkdFbGVtZW50Kj4gbV9jbGllbnRzOworfTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVu
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCShy
ZXZpc2lvbiA3MzAxMCkKKysrIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMzIsNiArMzIsMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCisv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucworREVGSU5FX0FOSU1BVEVEX0xFTkdUSChT
VkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwgQ3gsIGN4KQorREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgQ3ksIGN5KQor
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OnJ4QXR0
ciwgUngsIHJ4KQorREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdFbGxpcHNlRWxlbWVudCwgU1ZH
TmFtZXM6OnJ5QXR0ciwgUnksIHJ5KQorCiBpbmxpbmUgU1ZHRWxsaXBzZUVsZW1lbnQ6OlNWR0Vs
bGlwc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50KHRhZ05hbWUsIGRvY3Vt
ZW50KQogICAgICwgbV9jeChMZW5ndGhNb2RlV2lkdGgpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdF
bGxpcHNlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmgJKHJldmlzaW9uIDczMDEwKQorKysgV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMzEsMzQgKzMxLDM1IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotICAgIGNsYXNzIFNWR0VsbGlwc2VFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZFRyYW5z
Zm9ybWFibGVFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNW
R1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFj
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R0VsbGlwc2VFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7
Ci0KLSAgICBwcml2YXRlOgotICAgICAgICBTVkdFbGxpcHNlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQotCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwotCi0g
ICAgICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7Ci0KLSAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHRWxsaXBzZUVsZW1lbnQsIFNW
R05hbWVzOjpjeEF0dHIsIFNWR0xlbmd0aCwgQ3gsIGN4KQotICAgICAgICBERUNMQVJFX0FOSU1B
VEVEX1BST1BFUlRZX05FVyhTVkdFbGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgU1ZH
TGVuZ3RoLCBDeSwgY3kpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNW
R0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6cnhBdHRyLCBTVkdMZW5ndGgsIFJ4LCByeCkKLSAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHRWxsaXBzZUVsZW1lbnQsIFNW
R05hbWVzOjpyeUF0dHIsIFNWR0xlbmd0aCwgUnksIHJ5KQotCi0gICAgICAgIC8vIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJP
UEVSVFlfTkVXKFNWR0VsbGlwc2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWQpCi0gICAgfTsKK2NsYXNzIFNWR0VsbGlwc2VFbGVtZW50IDogcHVibGlj
IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICBwdWJsaWMgU1ZHVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdM
YW5nU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdFbGxp
cHNlRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCitw
cml2YXRlOgorICAgIFNWR0VsbGlwc2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1
bWVudCopOworICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4g
U1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9w
ZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisKKyAgICB2aXJ0dWFsIHZvaWQgdG9QYXRoRGF0
YShQYXRoJikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Ro
cygpIGNvbnN0OworCisgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25zCisgICAg
REVDTEFSRV9BTklNQVRFRF9MRU5HVEgoQ3gsIGN4KQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKEN5LCBjeSkKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChSeCwgcngpCisgICAgREVD
TEFSRV9BTklNQVRFRF9MRU5HVEgoUnksIHJ5KQorCisgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZAorICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdF
bGxpcHNlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBi
b29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzMwMTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTIgQEAKIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCisvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucworREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCitERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR0ZpbHRlckVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkK
K0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRo
QXR0ciwgV2lkdGgsIHdpZHRoKQorREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJFbGVt
ZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisKIGlubGluZSBTVkdG
aWx0ZXJFbGVtZW50OjpTVkdGaWx0ZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05h
bWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZEVsZW1lbnQodGFnTmFtZSwg
ZG9jdW1lbnQpCiAgICAgLCBTVkdVUklSZWZlcmVuY2UoKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZH
RmlsdGVyRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuaAkocmV2aXNpb24gNzMwMTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYxLDEyICs2MSwxMyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIGZpbHRlclJlc1hJZGVudGlmaWVyKCk7CiAgICAgc3RhdGljIGNv
bnN0IEF0b21pY1N0cmluZyYgZmlsdGVyUmVzWUlkZW50aWZpZXIoKTsKIAorICAgIC8vIEFuaW1h
dGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwogICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BS
T1BFUlRZX05FVyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyVW5pdHNBdHRyLCBp
bnQsIEZpbHRlclVuaXRzLCBmaWx0ZXJVbml0cykKICAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJ
Q19QUk9QRVJUWV9ORVcoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OnByaW1pdGl2ZVVuaXRz
QXR0ciwgaW50LCBQcmltaXRpdmVVbml0cywgcHJpbWl0aXZlVW5pdHMpCi0gICAgREVDTEFSRV9B
TklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBT
VkdMZW5ndGgsIFgsIHgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHRmls
dGVyRWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBTVkdMZW5ndGgsIFksIHkpCi0gICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRo
QXR0ciwgU1ZHTGVuZ3RoLCBXaWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUWV9ORVcoU1ZHRmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIFNWR0xlbmd0
aCwgSGVpZ2h0LCBoZWlnaHQpCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkKKyAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKFdpZHRoLCB3aWR0aCkKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQsIGhl
aWdodCkKIAogICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX01VTFRJUExFX1dS
QVBQRVJTX05FVyhTVkdGaWx0ZXJFbGVtZW50LCBTVkdOYW1lczo6ZmlsdGVyUmVzQXR0ciwgZmls
dGVyUmVzWElkZW50aWZpZXIoKSwgbG9uZywgRmlsdGVyUmVzWCwgZmlsdGVyUmVzWCkKICAgICBE
RUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJUWV9NVUxUSVBMRV9XUkFQUEVSU19ORVcoU1ZH
RmlsdGVyRWxlbWVudCwgU1ZHTmFtZXM6OmZpbHRlclJlc0F0dHIsIGZpbHRlclJlc1lJZGVudGlm
aWVyKCksIGxvbmcsIEZpbHRlclJlc1ksIGZpbHRlclJlc1kpCkluZGV4OiBXZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAJKHJldmlz
aW9uIDczMDEwKQorKysgV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzQsNiArMzQsMTIgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCisvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucworREVGSU5FX0FO
SU1BVEVEX0xFTkdUSChTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05h
bWVzOjp4QXR0ciwgWCwgeCkKK0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCitERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFt
ZXM6OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQorREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBI
ZWlnaHQsIGhlaWdodCkKKwogU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpT
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkRWxlbWVudCh0YWdO
YW1lLCBkb2N1bWVudCkKICAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgsICIwJSIpCkluZGV4OiBX
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aAkocmV2aXNpb24gNzMwMTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaAkod29ya2luZyBjb3B5KQpAQCAtNjIsMTAgKzYyLDExIEBAIHByaXZh
dGU6CiAKICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJl
bmEqLCBSZW5kZXJTdHlsZSopOwogCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVco
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6eEF0dHIsIFNW
R0xlbmd0aCwgWCwgeCkKLSAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjp5QXR0ciwgU1ZHTGVuZ3Ro
LCBZLCB5KQotICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcywgU1ZHTmFtZXM6OndpZHRoQXR0ciwgU1ZHTGVuZ3RoLCBX
aWR0aCwgd2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgU1ZHTGVu
Z3RoLCBIZWlnaHQsIGhlaWdodCkKKyAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlv
bnMKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgIERFQ0xBUkVfQU5JTUFU
RURfTEVOR1RIKFksIHkpCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRo
KQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQogICAgIERFQ0xB
UkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMsIFNWR05hbWVzOjpyZXN1bHRBdHRyLCBTdHJpbmcsIFJlc3VsdCwgcmVzdWx0
KQogfTsKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAkocmV2
aXNpb24gNzMwMTApCisrKyBXZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzLDcgKzMzLDEzIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAotU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKy8vIEFuaW1hdGVk
IHByb3BlcnR5IGRlZmluaXRpb25zCitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCitERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCitERUZJ
TkVfQU5JTUFURURfTEVOR1RIKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6d2lk
dGhBdHRyLCBXaWR0aCwgd2lkdGgpCitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisKK2lu
bGluZSBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZH
U3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3go
TGVuZ3RoTW9kZVdpZHRoKQogICAgICwgbV95KExlbmd0aE1vZGVIZWlnaHQpCkluZGV4OiBXZWJD
b3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmgJKHJldmlzaW9uIDczMDEwKQorKysgV2ViQ29y
ZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzAsMzkg
KzMwLDM5IEBACiAjaW5jbHVkZSAiU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZC5oIgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgY2xhc3MgU1ZHTGVuZ3RoOwogCi0gICAgY2xhc3MgU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1l
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQgewotICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgICAgIHZpcnR1YWwg
Ym9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQotICAg
ICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlm
aWVkTmFtZSYpOwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRl
cmVyKE5vZGUqKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJl
bmRlcmVyKFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKTsKLQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwotCi0gICAgICAg
IERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBT
VkdOYW1lczo6eEF0dHIsIFNWR0xlbmd0aCwgWCwgeCkKLSAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUWV9ORVcoU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwg
U1ZHTGVuZ3RoLCBZLCB5KQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhT
VkdGb3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgU1ZHTGVuZ3RoLCBX
aWR0aCwgd2lkdGgpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgU1ZHTGVuZ3RoLCBIZWln
aHQsIGhlaWdodCkKLQotICAgICAgICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9TVEFUSUNfUFJPUEVSVFlfTkVXKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBY
TGlua05hbWVzOjpocmVmQXR0ciwgU3RyaW5nLCBIcmVmLCBocmVmKQotCi0gICAgICAgIC8vIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVEFU
SUNfUFJPUEVSVFlfTkVXKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0gICAgfTsKK2NsYXNzIFNWR0ZvcmVpZ25PYmpl
Y3RFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkIHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdGb3JlaWduT2JqZWN0RWxlbWVudD4gY3Jl
YXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCitwcml2YXRlOgorICAgIFNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwor
CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNW
YWxpZCgpOyB9CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0
ZSopOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFs
aWZpZWROYW1lJik7CisKKyAgICB2aXJ0dWFsIGJvb2wgY2hpbGRTaG91bGRDcmVhdGVSZW5kZXJl
cihOb2RlKikgY29uc3Q7CisgICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVy
KFJlbmRlckFyZW5hKiBhcmVuYSwgUmVuZGVyU3R5bGUqIHN0eWxlKTsKKworICAgIHZpcnR1YWwg
Ym9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CisKKyAgICAvLyBBbmltYXRlZCBw
cm9wZXJ0eSBkZWNsYXJhdGlvbnMKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQor
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgREVDTEFSRV9BTklNQVRFRF9M
RU5HVEgoV2lkdGgsIHdpZHRoKQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwg
aGVpZ2h0KQorCisgICAgLy8gU1ZHVVJJUmVmZXJlbmNlCisgICAgREVDTEFSRV9BTklNQVRFRF9T
VEFUSUNfUFJPUEVSVFlfTkVXKFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50LCBYTGlua05hbWVzOjpo
cmVmQXR0ciwgU3RyaW5nLCBIcmVmLCBocmVmKQorCisgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZAorICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdG
b3JlaWduT2JqZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRB
dHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkKQorfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2
Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAJKHJldmlzaW9uIDczMDEwKQorKysgV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsMTIgQEAKIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCisvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucworREVGSU5FX0FOSU1B
VEVEX0xFTkdUSChTVkdJbWFnZUVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKK0RFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkp
CitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRo
QXR0ciwgV2lkdGgsIHdpZHRoKQorREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdJbWFnZUVsZW1l
bnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKKwogaW5saW5lIFNWR0lt
YWdlRWxlbWVudDo6U1ZHSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50
KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV94KExlbmd0aE1vZGVXaWR0aCkKSW5kZXg6IFdl
YkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5oCShyZXZpc2lvbiA3MzAxMCkKKysrIFdlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw1MiArMzQsNTEgQEAKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHTGVuZ3RoOworY2xhc3MgU1ZHSW1hZ2VFbGVtZW50
IDogcHVibGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR0xhbmdTcGFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5h
bFJlc291cmNlc1JlcXVpcmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VS
SVJlZmVyZW5jZSB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHSW1hZ2VFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKK3ByaXZhdGU6
CisgICAgU1ZHSW1hZ2VFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwor
ICAgIAorICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6
OmlzVmFsaWQoKTsgfQorCisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0
dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25z
dCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICBjbGFzcyBTVkdJbWFnZUVsZW1lbnQgOiBwdWJsaWMg
U1ZHU3R5bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdMYW5nU3BhY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVy
bmFsUmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGlj
IFNWR1VSSVJlZmVyZW5jZSB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0
cjxTVkdJbWFnZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR0ltYWdlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1Zh
bGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQotCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmly
dHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAg
ICAgICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRl
ZEludG9Eb2N1bWVudCgpOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBhdHRhY2goKTsKLSAgICAg
ICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Ci0KLSAgICAgICAgdmlydHVh
bCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUq
KTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOwogIAotICAgICAgICB2aXJ0dWFsIGNvbnN0IFF1YWxpZmllZE5hbWUm
IGltYWdlU291cmNlQXR0cmlidXRlTmFtZSgpIGNvbnN0OyAgICAgICAKLSAgICAgICAgdmlydHVh
bCB2b2lkIGFkZFN1YnJlc291cmNlQXR0cmlidXRlVVJMcyhMaXN0SGFzaFNldDxLVVJMPiYpIGNv
bnN0OworICAgIHZpcnR1YWwgY29uc3QgUXVhbGlmaWVkTmFtZSYgaW1hZ2VTb3VyY2VBdHRyaWJ1
dGVOYW1lKCkgY29uc3Q7ICAgICAgIAorICAgIHZpcnR1YWwgdm9pZCBhZGRTdWJyZXNvdXJjZUF0
dHJpYnV0ZVVSTHMoTGlzdEhhc2hTZXQ8S1VSTD4mKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFs
IGJvb2wgaGF2ZUxvYWRlZFJlcXVpcmVkUmVzb3VyY2VzKCk7CisgICAgdmlydHVhbCBib29sIGhh
dmVMb2FkZWRSZXF1aXJlZFJlc291cmNlcygpOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzZWxm
SGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsTW92
ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVM
ZW5ndGhzKCkgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHdpbGxNb3ZlVG9OZXdPd25lckRvY3Vt
ZW50KCk7CiAKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHSW1hZ2VF
bGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFNWR0xlbmd0aCwgWCwgeCkKLSAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIs
IFNWR0xlbmd0aCwgWSwgeSkKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVco
U1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBTVkdMZW5ndGgsIFdpZHRoLCB3
aWR0aCkKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHSW1hZ2VFbGVt
ZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKLSAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHSW1hZ2VFbGVtZW50LCBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCisgICAgLy8gQW5pbWF0ZWQg
cHJvcGVydHkgZGVjbGFyYXRpb25zCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWCwgeCkK
KyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZLCB5KQorICAgIERFQ0xBUkVfQU5JTUFURURf
TEVOR1RIKFdpZHRoLCB3aWR0aCkKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChIZWlnaHQs
IGhlaWdodCkKKyAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdJbWFnZUVsZW1l
bnQsIFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgU1ZHUHJlc2VydmVBc3BlY3RS
YXRpbywgUHJlc2VydmVBc3BlY3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykKIAotICAgICAg
ICAvLyBTVkdVUklSZWZlcmVuY2UKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJP
UEVSVFlfTkVXKFNWR0ltYWdlRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIFN0cmluZywg
SHJlZiwgaHJlZikKKyAgICAvLyBTVkdVUklSZWZlcmVuY2UKKyAgICBERUNMQVJFX0FOSU1BVEVE
X1NUQVRJQ19QUk9QRVJUWV9ORVcoU1ZHSW1hZ2VFbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0
ciwgU3RyaW5nLCBIcmVmLCBocmVmKQogCi0gICAgICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2Vz
UmVxdWlyZWQKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJPUEVSVFlfTkVXKFNW
R0ltYWdlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBi
b29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVk
KQorICAgIC8vIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKKyAgICBERUNMQVJFX0FOSU1B
VEVEX1NUQVRJQ19QUk9QRVJUWV9ORVcoU1ZHSW1hZ2VFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJu
YWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQs
IGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCiAKLSAgICAgICAgU1ZHSW1hZ2VMb2FkZXIgbV9p
bWFnZUxvYWRlcjsKLSAgICB9OworICAgIFNWR0ltYWdlTG9hZGVyIG1faW1hZ2VMb2FkZXI7Cit9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xpbmVF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDczMDEwKQorKysgV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMiw2ICszMiwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8v
IEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNW
R0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eDFBdHRyLCBYMSwgeDEpCitERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eTFBdHRyLCBZMSwgeTEpCitERUZJTkVf
QU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eDJBdHRyLCBYMiwgeDIp
CitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eTJBdHRy
LCBZMiwgeTIpCisKIGlubGluZSBTVkdMaW5lRWxlbWVudDo6U1ZHTGluZUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5
bGVkVHJhbnNmb3JtYWJsZUVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3gxKExl
bmd0aE1vZGVXaWR0aCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuaAkocmV2aXNpb24gNzMwMTApCisr
KyBXZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSwzOCAr
MzEsMzcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHTGVuZ3RoOwot
Ci0gICAgY2xhc3MgU1ZHTGluZUVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkVHJhbnNmb3JtYWJs
ZUVsZW1lbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQgewot
ICAgIHB1YmxpYzoKLSAgICAgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHTGluZUVsZW1lbnQ+IGNy
ZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKLQotICAgIHByaXZhdGU6Ci0g
ICAgICAgIFNWR0xpbmVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwot
ICAgICAgICAKLSAgICAgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBjb25zdCB7IHJldHVybiBT
VkdUZXN0czo6aXNWYWxpZCgpOyB9Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVk
QXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLQotICAgICAgICB2aXJ0dWFs
IHZvaWQgdG9QYXRoRGF0YShQYXRoJikgY29uc3Q7Ci0KLSAgICAgICAgdmlydHVhbCBib29sIHN1
cHBvcnRzTWFya2VycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KLQotICAgICAgICB2aXJ0dWFs
IGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwotCi0gICAgICAgIERFQ0xBUkVf
QU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eDFBdHRyLCBT
VkdMZW5ndGgsIFgxLCB4MSkKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVco
U1ZHTGluZUVsZW1lbnQsIFNWR05hbWVzOjp5MUF0dHIsIFNWR0xlbmd0aCwgWTEsIHkxKQotICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdMaW5lRWxlbWVudCwgU1ZHTmFt
ZXM6OngyQXR0ciwgU1ZHTGVuZ3RoLCBYMiwgeDIpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURf
UFJPUEVSVFlfTkVXKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6eTJBdHRyLCBTVkdMZW5ndGgs
IFkyLCB5MikKLQotICAgICAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAg
ICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdMaW5lRWxlbWVudCwg
U1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotICAgIH07CitjbGFz
cyBTVkdMaW5lRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwK
KyAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAorICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBwdWJs
aWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBh
c3NSZWZQdHI8U1ZHTGluZUVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9j
dW1lbnQqKTsKKworcHJpdmF0ZToKKyAgICBTVkdMaW5lRWxlbWVudChjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0
IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHN5bmNo
cm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworCisgICAgdmlydHVhbCB2b2lk
IHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIHN1cHBvcnRzTWFy
a2VycygpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CisKKyAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNs
YXJhdGlvbnMKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYMSwgeDEpCisgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoWTEsIHkxKQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFgy
LCB4MikKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChZMiwgeTIpCisKKyAgICAvLyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCisgICAgREVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJP
UEVSVFlfTkVXKFNWR0xpbmVFbGVtZW50LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3Vy
Y2VzUmVxdWlyZWQpCit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFdlYkNv
cmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzMwMTApCisrKyBX
ZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKKy8vIEFuaW1hdGVkIHBy
b3BlcnR5IGRlZmluaXRpb25zCitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCwgU1ZHTmFtZXM6OngxQXR0ciwgWDEsIHgxKQorREVGSU5FX0FOSU1BVEVEX0xF
TkdUSChTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp5MUF0dHIsIFkxLCB5MSkK
K0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LCBTVkdOYW1l
czo6eDJBdHRyLCBYMiwgeDIpCitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR0xpbmVhckdyYWRp
ZW50RWxlbWVudCwgU1ZHTmFtZXM6OnkyQXR0ciwgWTIsIHkyKQorCiBpbmxpbmUgU1ZHTGluZWFy
R3JhZGllbnRFbGVtZW50OjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHR3JhZGllbnRFbGVt
ZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV94MShMZW5ndGhNb2RlV2lkdGgpCkluZGV4
OiBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkocmV2aXNpb24gNzMwMTApCisr
KyBXZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMjgsMzIgKzI4LDMyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIHN0cnVjdCBM
aW5lYXJHcmFkaWVudEF0dHJpYnV0ZXM7Ci0gICAgY2xhc3MgU1ZHTGVuZ3RoOworc3RydWN0IExp
bmVhckdyYWRpZW50QXR0cmlidXRlczsKIAotICAgIGNsYXNzIFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudCA6IHB1YmxpYyBTVkdHcmFkaWVudEVsZW1lbnQgewotICAgIHB1YmxpYzoKLSAgICAgICAg
c3RhdGljIFBhc3NSZWZQdHI8U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50PiBjcmVhdGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CitjbGFzcyBTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQgOiBwdWJsaWMgU1ZHR3JhZGllbnRFbGVtZW50IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFz
c1JlZlB0cjxTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiwgRG9jdW1lbnQqKTsKIAotICAgICAgICB2b2lkIGNvbGxlY3RHcmFkaWVudEF0dHJpYnV0
ZXMoTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzJik7Ci0gICAgICAgIHZvaWQgY2FsY3VsYXRlU3Rh
cnRFbmRQb2ludHMoY29uc3QgTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzJiwgRmxvYXRQb2ludCYg
c3RhcnRQb2ludCwgRmxvYXRQb2ludCYgZW5kUG9pbnQpOworICAgIHZvaWQgY29sbGVjdEdyYWRp
ZW50QXR0cmlidXRlcyhMaW5lYXJHcmFkaWVudEF0dHJpYnV0ZXMmKTsKKyAgICB2b2lkIGNhbGN1
bGF0ZVN0YXJ0RW5kUG9pbnRzKGNvbnN0IExpbmVhckdyYWRpZW50QXR0cmlidXRlcyYsIEZsb2F0
UG9pbnQmIHN0YXJ0UG9pbnQsIEZsb2F0UG9pbnQmIGVuZFBvaW50KTsKIAotICAgIHByaXZhdGU6
Ci0gICAgICAgIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwg
RG9jdW1lbnQqKTsKK3ByaXZhdGU6CisgICAgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50KGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVh
bCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAgIHZpcnR1YWwgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAKLSAgICAg
ICAgdmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVu
ZGVyU3R5bGUqKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVu
ZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFz
UmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CisgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2
ZUxlbmd0aHMoKSBjb25zdDsKIAotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05F
VyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp4MUF0dHIsIFNWR0xlbmd0aCwg
WDEsIHgxKQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdMaW5lYXJH
cmFkaWVudEVsZW1lbnQsIFNWR05hbWVzOjp5MUF0dHIsIFNWR0xlbmd0aCwgWTEsIHkxKQotICAg
ICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQsIFNWR05hbWVzOjp4MkF0dHIsIFNWR0xlbmd0aCwgWDIsIHgyKQotICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
Ojp5MkF0dHIsIFNWR0xlbmd0aCwgWTIsIHkyKQotICAgIH07CisgICAgLy8gQW5pbWF0ZWQgcHJv
cGVydHkgZGVjbGFyYXRpb25zCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWDEsIHgxKQor
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFkxLCB5MSkKKyAgICBERUNMQVJFX0FOSU1BVEVE
X0xFTkdUSChYMiwgeDIpCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWTIsIHkyKQorfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJF
bGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNw
cAkocmV2aXNpb24gNzMwMTApCisrKyBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzUsNyArMzUsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TVkdNYXJrZXJFbGVtZW50OjpTVkdNYXJrZXJFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUm
IHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKKy8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmlu
aXRpb25zCitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVz
OjpyZWZYQXR0ciwgUmVmWCwgcmVmWCkKK0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHTWFya2Vy
RWxlbWVudCwgU1ZHTmFtZXM6OnJlZllBdHRyLCBSZWZZLCByZWZZKQorREVGSU5FX0FOSU1BVEVE
X0xFTkdUSChTVkdNYXJrZXJFbGVtZW50LCBTVkdOYW1lczo6bWFya2VyV2lkdGhBdHRyLCBNYXJr
ZXJXaWR0aCwgbWFya2VyV2lkdGgpCitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hcmtlckVs
ZW1lbnQsIFNWR05hbWVzOjptYXJrZXJIZWlnaHRBdHRyLCBNYXJrZXJIZWlnaHQsIG1hcmtlckhl
aWdodCkKKworaW5saW5lIFNWR01hcmtlckVsZW1lbnQ6OlNWR01hcmtlckVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5
bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1fcmVmWChMZW5ndGhNb2RlV2lk
dGgpCiAgICAgLCBtX3JlZlkoTGVuZ3RoTW9kZUhlaWdodCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NW
R01hcmtlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmgJKHJldmlzaW9uIDczMDExKQorKysgV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC03OCwxMCArNzgsMTEgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Y29uc3QgQXRvbWljU3RyaW5nJiBvcmllbnRUeXBlSWRlbnRpZmllcigpOwogICAgIHN0YXRpYyBj
b25zdCBBdG9taWNTdHJpbmcmIG9yaWVudEFuZ2xlSWRlbnRpZmllcigpOwogCi0gICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnJlZlhB
dHRyLCBTVkdMZW5ndGgsIFJlZlgsIHJlZlgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WV9ORVcoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6OnJlZllBdHRyLCBTVkdMZW5ndGgsIFJl
ZlksIHJlZlkpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHTWFya2VyRWxl
bWVudCwgU1ZHTmFtZXM6Om1hcmtlcldpZHRoQXR0ciwgU1ZHTGVuZ3RoLCBNYXJrZXJXaWR0aCwg
bWFya2VyV2lkdGgpCi0gICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHTWFya2Vy
RWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlckhlaWdodEF0dHIsIFNWR0xlbmd0aCwgTWFya2VySGVp
Z2h0LCBtYXJrZXJIZWlnaHQpCisgICAgLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVjbGFyYXRpb25z
CisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoUmVmWCwgcmVmWCkKKyAgICBERUNMQVJFX0FO
SU1BVEVEX0xFTkdUSChSZWZZLCByZWZZKQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKE1h
cmtlcldpZHRoLCBtYXJrZXJXaWR0aCkKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChNYXJr
ZXJIZWlnaHQsIG1hcmtlckhlaWdodCkKICAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9Q
RVJUWV9ORVcoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om1hcmtlclVuaXRzQXR0ciwgaW50
LCBNYXJrZXJVbml0cywgbWFya2VyVW5pdHMpCiAgICAgREVDTEFSRV9BTklNQVRFRF9TVEFUSUNf
UFJPUEVSVFlfTVVMVElQTEVfV1JBUFBFUlNfTkVXKFNWR01hcmtlckVsZW1lbnQsIFNWR05hbWVz
OjpvcmllbnRBdHRyLCBvcmllbnRUeXBlSWRlbnRpZmllcigpLCBpbnQsIE9yaWVudFR5cGUsIG9y
aWVudFR5cGUpCiAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9NVUxUSVBMRV9XUkFQUEVS
U19ORVcoU1ZHTWFya2VyRWxlbWVudCwgU1ZHTmFtZXM6Om9yaWVudEF0dHIsIG9yaWVudEFuZ2xl
SWRlbnRpZmllcigpLCBTVkdBbmdsZSwgT3JpZW50QW5nbGUsIG9yaWVudEFuZ2xlKQpJbmRleDog
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcAkocmV2aXNpb24gNzMwMTApCisrKyBXZWJDb3JlL3N2Zy9TVkdN
YXNrRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI5LDE1ICsyOSwxOCBAQAogI2luY2x1
ZGUgIkF0dHJpYnV0ZS5oIgogI2luY2x1ZGUgIkNTU1N0eWxlU2VsZWN0b3IuaCIKICNpbmNsdWRl
ICJSZW5kZXJTVkdSZXNvdXJjZU1hc2tlci5oIgotI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogI2lu
Y2x1ZGUgIlNWR05hbWVzLmgiCiAjaW5jbHVkZSAiU1ZHUmVuZGVyU3VwcG9ydC5oIgogI2luY2x1
ZGUgIlNWR1VuaXRUeXBlcy5oIgogCi11c2luZyBuYW1lc3BhY2Ugc3RkOwotCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKKy8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCitERUZJTkVfQU5J
TUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgsIHgpCitERUZJ
TkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkp
CitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50LCBTVkdOYW1lczo6d2lkdGhB
dHRyLCBXaWR0aCwgd2lkdGgpCitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR01hc2tFbGVtZW50
LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisKIGlubGluZSBTVkdNYXNr
RWxlbWVudDo6U1ZHTWFza0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9j
dW1lbnQqIGRvY3VtZW50KQogICAgIDogU1ZHU3R5bGVkTG9jYXRhYmxlRWxlbWVudCh0YWdOYW1l
LCBkb2N1bWVudCkKICAgICAsIG1fbWFza1VuaXRzKFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQ
RV9PQkpFQ1RCT1VORElOR0JPWCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuaAkocmV2aXNpb24gNzMw
MTApCisrKyBXZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MSw0MiArMzEsNDEgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgY2xhc3MgU1ZHTGVu
Z3RoOwotCi0gICAgY2xhc3MgU1ZHTWFza0VsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVkTG9jYXRh
YmxlRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7
Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdNYXNrRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgICAgIEZsb2F0
UmVjdCBtYXNrQm91bmRpbmdCb3goY29uc3QgRmxvYXRSZWN0JikgY29uc3Q7Ci0KLSAgICBwcml2
YXRlOgotICAgICAgICBTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNW
R1Rlc3RzOjppc1ZhbGlkKCk7IH0KLSAgICAgICAgdmlydHVhbCBib29sIG5lZWRzUGVuZGluZ1Jl
c291cmNlSGFuZGxpbmcoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAg
ICB2aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJz
ZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAw
LCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7Ci0KLSAgICAgICAgdmlydHVhbCBSZW5kZXJPYmpl
Y3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKLQotICAgICAg
ICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OwotCi0gICAgICAg
IERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdNYXNrRWxlbWVudCwgU1ZH
TmFtZXM6Om1hc2tVbml0c0F0dHIsIGludCwgTWFza1VuaXRzLCBtYXNrVW5pdHMpCi0gICAgICAg
IERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdNYXNrRWxlbWVudCwgU1ZH
TmFtZXM6Om1hc2tDb250ZW50VW5pdHNBdHRyLCBpbnQsIE1hc2tDb250ZW50VW5pdHMsIG1hc2tD
b250ZW50VW5pdHMpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR01h
c2tFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFNWR0xlbmd0aCwgWCwgeCkKLSAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHTWFza0VsZW1lbnQsIFNWR05hbWVzOjp5QXR0
ciwgU1ZHTGVuZ3RoLCBZLCB5KQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05F
VyhTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OndpZHRoQXR0ciwgU1ZHTGVuZ3RoLCBXaWR0aCwg
d2lkdGgpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR01hc2tFbGVt
ZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgU1ZHTGVuZ3RoLCBIZWlnaHQsIGhlaWdodCkKLQot
ICAgICAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgICAgIERFQ0xBUkVf
QU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OmV4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVp
cmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQotICAgIH07CitjbGFzcyBTVkdNYXNrRWxl
bWVudCA6IHB1YmxpYyBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBT
VkdMYW5nU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkIHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdNYXNr
RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOworCisgICAg
RmxvYXRSZWN0IG1hc2tCb3VuZGluZ0JveChjb25zdCBGbG9hdFJlY3QmKSBjb25zdDsKKworcHJp
dmF0ZToKKyAgICBTVkdNYXNrRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6
OmlzVmFsaWQoKTsgfQorICAgIHZpcnR1YWwgYm9vbCBuZWVkc1BlbmRpbmdSZXNvdXJjZUhhbmRs
aW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1h
cHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9u
aXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBjaGls
ZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hh
bmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7
CisKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEq
LCBSZW5kZXJTdHlsZSopOworCisgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0
aHMoKSBjb25zdDsKKworICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucworICAg
IERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdNYXNrRWxlbWVudCwgU1ZH
TmFtZXM6Om1hc2tVbml0c0F0dHIsIGludCwgTWFza1VuaXRzLCBtYXNrVW5pdHMpCisgICAgREVD
TEFSRV9BTklNQVRFRF9TVEFUSUNfUFJPUEVSVFlfTkVXKFNWR01hc2tFbGVtZW50LCBTVkdOYW1l
czo6bWFza0NvbnRlbnRVbml0c0F0dHIsIGludCwgTWFza0NvbnRlbnRVbml0cywgbWFza0NvbnRl
bnRVbml0cykKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChYLCB4KQorICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoV2lkdGgs
IHdpZHRoKQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEhlaWdodCwgaGVpZ2h0KQorCisg
ICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAorICAgIERFQ0xBUkVfQU5JTUFURURf
U1RBVElDX1BST1BFUlRZX05FVyhTVkdNYXNrRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQorfTsKIAogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdQ
YXR0ZXJuRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuY3BwCShyZXZpc2lvbiA3MzAxMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVt
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQAogI2luY2x1ZGUgIlBhdHRl
cm5BdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHQ29udGFpbmVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyU1ZHUmVzb3VyY2VQYXR0ZXJuLmgiCi0jaW5jbHVkZSAiU1ZHTGVuZ3RoLmgiCiAj
aW5jbHVkZSAiU1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJTdXBwb3J0LmgiCiAjaW5j
bHVkZSAiU1ZHU1ZHRWxlbWVudC5oIgpAQCAtNDEsMTQgKzQwLDE1IEBACiAjaW5jbHVkZSAiU1ZH
VHJhbnNmb3JtTGlzdC5oIgogI2luY2x1ZGUgIlNWR1RyYW5zZm9ybWFibGUuaCIKICNpbmNsdWRl
ICJTVkdVbml0VHlwZXMuaCIKLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8d3RmL01hdGhF
eHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvT3duUHRyLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBzdGQ7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlv
bnMKK0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjp4
QXR0ciwgWCwgeCkKK0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNW
R05hbWVzOjp5QXR0ciwgWSwgeSkKK0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUGF0dGVybkVs
ZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkKK0RFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQs
IGhlaWdodCkKKwogaW5saW5lIFNWR1BhdHRlcm5FbGVtZW50OjpTVkdQYXR0ZXJuRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBT
VkdTdHlsZWRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQogICAgICwgbV94KExlbmd0aE1vZGVX
aWR0aCkKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuaAkocmV2aXNpb24gNzMwMTEpCisrKyBX
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw1NCAr
MzcsNTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgc3RydWN0IFBhdHRlcm5BdHRy
aWJ1dGVzOworc3RydWN0IFBhdHRlcm5BdHRyaWJ1dGVzOwogIAotICAgIGNsYXNzIFNWR0xlbmd0
aDsKLQotICAgIGNsYXNzIFNWR1BhdHRlcm5FbGVtZW50IDogcHVibGljIFNWR1N0eWxlZEVsZW1l
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1Rlc3RzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0ZpdFRvVmlld0JveCB7Ci0g
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdQYXR0ZXJuRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotCi0gICAgICAgIHZvaWQg
Y29sbGVjdFBhdHRlcm5BdHRyaWJ1dGVzKFBhdHRlcm5BdHRyaWJ1dGVzJikgY29uc3Q7Ci0KLSAg
ICBwcml2YXRlOgotICAgICAgICBTVkdQYXR0ZXJuRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQotICAgICAgICB2aXJ0dWFsIGJv
b2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9
Ci0KLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSop
OwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0
IFF1YWxpZmllZE5hbWUmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChi
b29sIGNoYW5nZWRCeVBhcnNlciA9IGZhbHNlLCBOb2RlKiBiZWZvcmVDaGFuZ2UgPSAwLCBOb2Rl
KiBhZnRlckNoYW5nZSA9IDAsIGludCBjaGlsZENvdW50RGVsdGEgPSAwKTsKLQotICAgICAgICB2
aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJT
dHlsZSopOwotCi0gICAgICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkg
Y29uc3Q7Ci0KLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHUGF0dGVy
bkVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgU1ZHTGVuZ3RoLCBYLCB4KQotICAgICAgICBERUNM
QVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnlB
dHRyLCBTVkdMZW5ndGgsIFksIHkpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlf
TkVXKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6d2lkdGhBdHRyLCBTVkdMZW5ndGgsIFdp
ZHRoLCB3aWR0aCkKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHUGF0
dGVybkVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRBdHRyLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVp
Z2h0KQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJUWV9ORVcoU1ZHUGF0
dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuVW5pdHNBdHRyLCBpbnQsIFBhdHRlcm5Vbml0
cywgcGF0dGVyblVuaXRzKQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJU
WV9ORVcoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwYXR0ZXJuQ29udGVudFVuaXRzQXR0
ciwgaW50LCBQYXR0ZXJuQ29udGVudFVuaXRzLCBwYXR0ZXJuQ29udGVudFVuaXRzKQotICAgICAg
ICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUX1BST1BFUlRZX05FVyhTVkdQYXR0ZXJu
RWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLCBTVkdUcmFuc2Zvcm1MaXN0
LCBQYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3JtKQotCi0gICAgICAgIC8vIFNWR1VS
SVJlZmVyZW5jZQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJUWV9ORVco
U1ZHUGF0dGVybkVsZW1lbnQsIFhMaW5rTmFtZXM6OmhyZWZBdHRyLCBTdHJpbmcsIEhyZWYsIGhy
ZWYpCi0KLSAgICAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAotICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJUWV9ORVcoU1ZHUGF0dGVybkVsZW1lbnQsIFNW
R05hbWVzOjpleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkKLQotICAgICAgICAvLyBT
VkdQYXR0ZXJuRWxlbWVudAotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhT
VkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnZpZXdCb3hBdHRyLCBGbG9hdFJlY3QsIFZpZXdC
b3gsIHZpZXdCb3gpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR1Bh
dHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFNWR1ByZXNl
cnZlQXNwZWN0UmF0aW8sIFByZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8p
IAotICAgIH07CitjbGFzcyBTVkdQYXR0ZXJuRWxlbWVudCA6IHB1YmxpYyBTVkdTdHlsZWRFbGVt
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVGVzdHMsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICBwdWJsaWMgU1ZHRml0VG9WaWV3Qm94IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
UGFzc1JlZlB0cjxTVkdQYXR0ZXJuRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
LCBEb2N1bWVudCopOworCisgICAgdm9pZCBjb2xsZWN0UGF0dGVybkF0dHJpYnV0ZXMoUGF0dGVy
bkF0dHJpYnV0ZXMmKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBTVkdQYXR0ZXJuRWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICAKKyAgICB2aXJ0dWFsIGJvb2wg
aXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KKyAgICB2aXJ0
dWFsIGJvb2wgbmVlZHNQZW5kaW5nUmVzb3VyY2VIYW5kbGluZygpIGNvbnN0IHsgcmV0dXJuIGZh
bHNlOyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGJvb2wgY2hhbmdl
ZEJ5UGFyc2VyID0gZmFsc2UsIE5vZGUqIGJlZm9yZUNoYW5nZSA9IDAsIE5vZGUqIGFmdGVyQ2hh
bmdlID0gMCwgaW50IGNoaWxkQ291bnREZWx0YSA9IDApOworCisgICAgdmlydHVhbCBSZW5kZXJP
YmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVyU3R5bGUqKTsKKworICAg
IHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CisKKyAgICAvLyBB
bmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdU
SChYLCB4KQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RI
KEhlaWdodCwgaGVpZ2h0KQorICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05F
VyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5Vbml0c0F0dHIsIGludCwgUGF0
dGVyblVuaXRzLCBwYXR0ZXJuVW5pdHMpCisgICAgREVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJP
UEVSVFlfTkVXKFNWR1BhdHRlcm5FbGVtZW50LCBTVkdOYW1lczo6cGF0dGVybkNvbnRlbnRVbml0
c0F0dHIsIGludCwgUGF0dGVybkNvbnRlbnRVbml0cywgcGF0dGVybkNvbnRlbnRVbml0cykKKyAg
ICBERUNMQVJFX0FOSU1BVEVEX1RSQU5TRk9STV9MSVNUX1BST1BFUlRZX05FVyhTVkdQYXR0ZXJu
RWxlbWVudCwgU1ZHTmFtZXM6OnBhdHRlcm5UcmFuc2Zvcm1BdHRyLCBTVkdUcmFuc2Zvcm1MaXN0
LCBQYXR0ZXJuVHJhbnNmb3JtLCBwYXR0ZXJuVHJhbnNmb3JtKQorCisgICAgLy8gU1ZHVVJJUmVm
ZXJlbmNlCisgICAgREVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJPUEVSVFlfTkVXKFNWR1BhdHRl
cm5FbGVtZW50LCBYTGlua05hbWVzOjpocmVmQXR0ciwgU3RyaW5nLCBIcmVmLCBocmVmKQorCisg
ICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZAorICAgIERFQ0xBUkVfQU5JTUFURURf
U1RBVElDX1BST1BFUlRZX05FVyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBl
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQorCisgICAgLy8gU1ZHUGF0dGVybkVsZW1lbnQKKyAg
ICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdQYXR0ZXJuRWxlbWVudCwgU1ZHTmFt
ZXM6OnZpZXdCb3hBdHRyLCBGbG9hdFJlY3QsIFZpZXdCb3gsIHZpZXdCb3gpCisgICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHUGF0dGVybkVsZW1lbnQsIFNWR05hbWVzOjpwcmVz
ZXJ2ZUFzcGVjdFJhdGlvQXR0ciwgU1ZHUHJlc2VydmVBc3BlY3RSYXRpbywgUHJlc2VydmVBc3Bl
Y3RSYXRpbywgcHJlc2VydmVBc3BlY3RSYXRpbykgCit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKSW5kZXg6IFdlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAkocmV2
aXNpb24gNzMwMTApCisrKyBXZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW5jbHVkZSAiRmxvYXRQb2ludC5o
IgogI2luY2x1ZGUgIlJhZGlhbEdyYWRpZW50QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlJlbmRl
clNWR1Jlc291cmNlUmFkaWFsR3JhZGllbnQuaCIKLSNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNp
bmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1N0b3BFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiU1ZHVHJhbnNmb3JtLmgiCkBAIC00MCw2ICszOSwxMyBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKKy8vIEFuaW1hdGVkIHByb3BlcnR5IGRlZmluaXRpb25zCitERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwgQ3gsIGN4
KQorREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05h
bWVzOjpjeUF0dHIsIEN5LCBjeSkKK0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50LCBTVkdOYW1lczo6ckF0dHIsIFIsIHIpCitERUZJTkVfQU5JTUFURURfTEVO
R1RIKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ4QXR0ciwgRngsIGZ4KQor
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQsIFNWR05hbWVz
OjpmeUF0dHIsIEZ5LCBmeSkKKwogaW5saW5lIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6U1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3Vt
ZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0dyYWRpZW50RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVu
dCkKICAgICAsIG1fY3goTGVuZ3RoTW9kZVdpZHRoLCAiNTAlIikKSW5kZXg6IFdlYkNvcmUvc3Zn
L1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCShyZXZpc2lvbiA3MzAxMCkKKysrIFdlYkNvcmUvc3Zn
L1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwzMyArMjgs
MzMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi0gICAgc3RydWN0IFJhZGlhbEdyYWRpZW50
QXR0cmlidXRlczsKLSAgICBjbGFzcyBTVkdMZW5ndGg7CitzdHJ1Y3QgUmFkaWFsR3JhZGllbnRB
dHRyaWJ1dGVzOwogCi0gICAgY2xhc3MgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50IDogcHVibGlj
IFNWR0dyYWRpZW50RWxlbWVudCB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKK2NsYXNzIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCA6IHB1YmxpYyBT
VkdHcmFkaWVudEVsZW1lbnQgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1Jh
ZGlhbEdyYWRpZW50RWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVu
dCopOwogCi0gICAgICAgIHZvaWQgY29sbGVjdEdyYWRpZW50QXR0cmlidXRlcyhSYWRpYWxHcmFk
aWVudEF0dHJpYnV0ZXMmKTsKLSAgICAgICAgdm9pZCBjYWxjdWxhdGVGb2NhbENlbnRlclBvaW50
c0FuZFJhZGl1cyhjb25zdCBSYWRpYWxHcmFkaWVudEF0dHJpYnV0ZXMmLCBGbG9hdFBvaW50JiBm
b2NhbFBvaW50LCBGbG9hdFBvaW50JiBjZW50ZXJQb2ludCwgZmxvYXQmIHJhZGl1cyk7CisgICAg
dm9pZCBjb2xsZWN0R3JhZGllbnRBdHRyaWJ1dGVzKFJhZGlhbEdyYWRpZW50QXR0cmlidXRlcyYp
OworICAgIHZvaWQgY2FsY3VsYXRlRm9jYWxDZW50ZXJQb2ludHNBbmRSYWRpdXMoY29uc3QgUmFk
aWFsR3JhZGllbnRBdHRyaWJ1dGVzJiwgRmxvYXRQb2ludCYgZm9jYWxQb2ludCwgRmxvYXRQb2lu
dCYgY2VudGVyUG9pbnQsIGZsb2F0JiByYWRpdXMpOwogCi0gICAgcHJpdmF0ZToKLSAgICAgICAg
U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCop
OworcHJpdmF0ZToKKyAgICBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0
cmlidXRlKEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJv
bml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFy
c2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzeW5j
aHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKIAotICAgICAgICB2aXJ0dWFs
IFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSop
OworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CiAKLSAgICAgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxl
bmd0aHMoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3Rocygp
IGNvbnN0OwogCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR1JhZGlh
bEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmN4QXR0ciwgU1ZHTGVuZ3RoLCBDeCwgY3gpCi0g
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR1JhZGlhbEdyYWRpZW50RWxl
bWVudCwgU1ZHTmFtZXM6OmN5QXR0ciwgU1ZHTGVuZ3RoLCBDeSwgY3kpCi0gICAgICAgIERFQ0xB
UkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFt
ZXM6OnJBdHRyLCBTVkdMZW5ndGgsIFIsIHIpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVFlfTkVXKFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ4QXR0ciwgU1ZH
TGVuZ3RoLCBGeCwgZngpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNW
R1JhZGlhbEdyYWRpZW50RWxlbWVudCwgU1ZHTmFtZXM6OmZ5QXR0ciwgU1ZHTGVuZ3RoLCBGeSwg
ZnkpCi0gICAgfTsKKyAgICAvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKKyAgICBE
RUNMQVJFX0FOSU1BVEVEX0xFTkdUSChDeCwgY3gpCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5H
VEgoQ3ksIGN5KQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFIsIHIpCisgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoRngsIGZ4KQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKEZ5
LCBmeSkKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcv
U1ZHUmVjdEVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvc3ZnL1NWR1JlY3RFbGVt
ZW50LmNwcAkocmV2aXNpb24gNzMwMTApCisrKyBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAorLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKK0RFRklORV9BTklNQVRFRF9M
RU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgWCwgeCkKK0RFRklORV9BTklN
QVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgWSwgeSkKK0RFRklO
RV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdp
ZHRoLCB3aWR0aCkKK0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05h
bWVzOjpoZWlnaHRBdHRyLCBIZWlnaHQsIGhlaWdodCkKK0RFRklORV9BTklNQVRFRF9MRU5HVEgo
U1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpyeEF0dHIsIFJ4LCByeCkKK0RFRklORV9BTklNQVRF
RF9MRU5HVEgoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpyeUF0dHIsIFJ5LCByeSkKKwogaW5s
aW5lIFNWR1JlY3RFbGVtZW50OjpTVkdSZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0
YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxl
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgpCklu
ZGV4OiBXZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmgJKHJldmlzaW9uIDczMDEwKQorKysgV2ViQ29yZS9zdmcvU1ZH
UmVjdEVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzEsMzYgKzMxLDM3IEBACiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNWR1JlY3RFbGVtZW50IDogcHVibGljIFNWR1N0
eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR0xhbmdT
cGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNW
R1JlY3RFbGVtZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0K
LSAgICBwcml2YXRlOgotICAgICAgICBTVkdSZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKLSAgICAgICAgCi0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkg
Y29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6OmlzVmFsaWQoKTsgfQotCi0gICAgICAgIHZpcnR1YWwg
dm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKLSAgICAgICAgdmlydHVhbCB2
b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAgICB2
aXJ0dWFsIHZvaWQgc3luY2hyb25pemVQcm9wZXJ0eShjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0K
LSAgICAgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNvbnN0OwotCi0gICAgICAg
IHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7Ci0KLSAgICAgICAg
REVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjp4
QXR0ciwgU1ZHTGVuZ3RoLCBYLCB4KQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZ
X05FVyhTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnlBdHRyLCBTVkdMZW5ndGgsIFksIHkpCi0g
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR1JlY3RFbGVtZW50LCBTVkdO
YW1lczo6d2lkdGhBdHRyLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpoZWlnaHRB
dHRyLCBTVkdMZW5ndGgsIEhlaWdodCwgaGVpZ2h0KQotICAgICAgICBERUNMQVJFX0FOSU1BVEVE
X1BST1BFUlRZX05FVyhTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OnJ4QXR0ciwgU1ZHTGVuZ3Ro
LCBSeCwgcngpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR1JlY3RF
bGVtZW50LCBTVkdOYW1lczo6cnlBdHRyLCBTVkdMZW5ndGgsIFJ5LCByeSkKLQotICAgICAgICAv
LyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURf
U1RBVElDX1BST1BFUlRZX05FVyhTVkdSZWN0RWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVz
b3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkKQotICAgIH07CitjbGFzcyBTVkdSZWN0RWxlbWVudCA6IHB1
YmxpYyBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgcHVibGljIFNWR1Rlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFu
Z1NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQdHI8U1ZHUmVjdEVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKworcHJpdmF0ZToK
KyAgICBTVkdSZWN0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAg
ICAKKyAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjpp
c1ZhbGlkKCk7IH0KKworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRy
aWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworCisgICAgdmlydHVhbCB2b2lkIHRvUGF0aERhdGEoUGF0aCYpIGNv
bnN0OworCisgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25zdDsK
KworICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucworICAgIERFQ0xBUkVfQU5J
TUFURURfTEVOR1RIKFgsIHgpCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkKKyAg
ICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisgICAgREVDTEFSRV9BTklN
QVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgo
UngsIHJ4KQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFJ5LCByeSkKKworICAgIC8vIFNW
R0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKKyAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19Q
Uk9QRVJUWV9ORVcoU1ZHUmVjdEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJlc291cmNlc1Jl
cXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0ZXJuYWxSZXNv
dXJjZXNSZXF1aXJlZCkKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAJKHJldmlzaW9uIDczMDEwKQorKysgV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQwLDcgKzQwLDYgQEAKICNpbmNsdWRlICJSZW5k
ZXJTVkdWaWV3cG9ydENvbnRhaW5lci5oIgogI2luY2x1ZGUgIlNNSUxUaW1lQ29udGFpbmVyLmgi
CiAjaW5jbHVkZSAiU1ZHQW5nbGUuaCIKLSNpbmNsdWRlICJTVkdMZW5ndGguaCIKICNpbmNsdWRl
ICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNWR1ByZXNlcnZlQXNwZWN0UmF0aW8uaCIKICNpbmNs
dWRlICJTVkdUcmFuc2Zvcm0uaCIKQEAgLTU3LDEzICs1NiwxNCBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiB1c2luZyBuYW1lc3BhY2UgSFRNTE5hbWVzOwogdXNpbmcgbmFtZXNwYWNlIFNWR05hbWVz
OwogCi1TVkdTVkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRh
Z05hbWUsIERvY3VtZW50KiBkb2MpCisvLyBBbmltYXRlZCBwcm9wZXJ0eSBkZWZpbml0aW9ucwor
REVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFgs
IHgpCitERUZJTkVfQU5JTUFURURfTEVOR1RIKFNWR1NWR0VsZW1lbnQsIFNWR05hbWVzOjp5QXR0
ciwgWSwgeSkKK0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6
OndpZHRoQXR0ciwgV2lkdGgsIHdpZHRoKQorREVGSU5FX0FOSU1BVEVEX0xFTkdUSChTVkdTVkdF
bGVtZW50LCBTVkdOYW1lczo6aGVpZ2h0QXR0ciwgSGVpZ2h0LCBoZWlnaHQpCisKK2lubGluZSBT
VkdTVkdFbGVtZW50OjpTVkdTVkdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUs
IERvY3VtZW50KiBkb2MpCiAgICAgOiBTVkdTdHlsZWRMb2NhdGFibGVFbGVtZW50KHRhZ05hbWUs
IGRvYykKLSAgICAsIFNWR1Rlc3RzKCkKLSAgICAsIFNWR0xhbmdTcGFjZSgpCi0gICAgLCBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKCkKLSAgICAsIFNWR0ZpdFRvVmlld0JveCgpCi0gICAg
LCBTVkdab29tQW5kUGFuKCkKICAgICAsIG1feChMZW5ndGhNb2RlV2lkdGgpCiAgICAgLCBtX3ko
TGVuZ3RoTW9kZUhlaWdodCkKICAgICAsIG1fd2lkdGgoTGVuZ3RoTW9kZVdpZHRoLCAiMTAwJSIp
CkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5oCShyZXZpc2lvbiA3MzAxMSkKKysrIFdlYkNvcmUvc3ZnL1NW
R1NWR0VsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsMTQzICszNSwxNDUgQEAKICNpbmNs
dWRlICJTVkdab29tQW5kUGFuLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICBjbGFzcyBT
VkdBbmdsZTsKLSAgICBjbGFzcyBTVkdMZW5ndGg7Ci0gICAgY2xhc3MgU1ZHTWF0cml4OwotICAg
IGNsYXNzIFNWR1RyYW5zZm9ybTsKLSAgICBjbGFzcyBTVkdWaWV3U3BlYzsKLSAgICBjbGFzcyBT
VkdWaWV3RWxlbWVudDsKLSAgICBjbGFzcyBTTUlMVGltZUNvbnRhaW5lcjsKLSAgICBjbGFzcyBT
VkdTVkdFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZExvY2F0YWJsZUVsZW1lbnQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR0xhbmdTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR0V4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHB1
YmxpYyBTVkdab29tQW5kUGFuIHsKLSAgICBwdWJsaWM6Ci0gICAgICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR1NWR0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rl
c3RzOjppc1ZhbGlkKCk7IH0KLQotICAgICAgICAvLyAnU1ZHU1ZHRWxlbWVudCcgZnVuY3Rpb25z
Ci0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY29udGVudFNjcmlwdFR5cGUoKSBjb25zdDsK
LSAgICAgICAgdm9pZCBzZXRDb250ZW50U2NyaXB0VHlwZShjb25zdCBBdG9taWNTdHJpbmcmIHR5
cGUpOwotCi0gICAgICAgIGNvbnN0IEF0b21pY1N0cmluZyYgY29udGVudFN0eWxlVHlwZSgpIGNv
bnN0OwotICAgICAgICB2b2lkIHNldENvbnRlbnRTdHlsZVR5cGUoY29uc3QgQXRvbWljU3RyaW5n
JiB0eXBlKTsKLQotICAgICAgICBGbG9hdFJlY3Qgdmlld3BvcnQoKSBjb25zdDsKLQotICAgICAg
ICB2b2lkIHNldENvbnRhaW5lclNpemUoY29uc3QgSW50U2l6ZSYgY29udGFpbmVyU2l6ZSkgeyBt
X2NvbnRhaW5lclNpemUgPSBjb250YWluZXJTaXplOyBtX2hhc1NldENvbnRhaW5lclNpemUgPSB0
cnVlOyB9Ci0gICAgICAgIEludFNpemUgY29udGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1f
Y29udGFpbmVyU2l6ZTsgfQotICAgICAgICBib29sIGhhc1NldENvbnRhaW5lclNpemUoKSBjb25z
dCB7IHJldHVybiBtX2hhc1NldENvbnRhaW5lclNpemU7IH0KLSAgICAgICAgaW50IHJlbGF0aXZl
V2lkdGhWYWx1ZSgpIGNvbnN0OwotICAgICAgICBpbnQgcmVsYXRpdmVIZWlnaHRWYWx1ZSgpIGNv
bnN0OwotCi0gICAgICAgIGZsb2F0IHBpeGVsVW5pdFRvTWlsbGltZXRlclgoKSBjb25zdDsKLSAg
ICAgICAgZmxvYXQgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWSgpIGNvbnN0OwotICAgICAgICBmbG9h
dCBzY3JlZW5QaXhlbFRvTWlsbGltZXRlclgoKSBjb25zdDsKLSAgICAgICAgZmxvYXQgc2NyZWVu
UGl4ZWxUb01pbGxpbWV0ZXJZKCkgY29uc3Q7Ci0KLSAgICAgICAgYm9vbCB1c2VDdXJyZW50Vmll
dygpIGNvbnN0OwotICAgICAgICB2b2lkIHNldFVzZUN1cnJlbnRWaWV3KGJvb2wgY3VycmVudFZp
ZXcpOwotCi0gICAgICAgIFNWR1ZpZXdTcGVjKiBjdXJyZW50VmlldygpIGNvbnN0OwotCi0gICAg
ICAgIGZsb2F0IGN1cnJlbnRTY2FsZSgpIGNvbnN0OwotICAgICAgICB2b2lkIHNldEN1cnJlbnRT
Y2FsZShmbG9hdCBzY2FsZSk7Ci0KLSAgICAgICAgRmxvYXRQb2ludCYgY3VycmVudFRyYW5zbGF0
ZSgpIHsgcmV0dXJuIG1fdHJhbnNsYXRpb247IH0KLSAgICAgICAgdm9pZCBzZXRDdXJyZW50VHJh
bnNsYXRlKGNvbnN0IEZsb2F0UG9pbnQmKTsKLQotICAgICAgICAvLyBPbmx5IHVzZWQgZnJvbSB0
aGUgYmluZGluZ3MuCi0gICAgICAgIHZvaWQgdXBkYXRlQ3VycmVudFRyYW5zbGF0ZSgpOwotCi0g
ICAgICAgIFNNSUxUaW1lQ29udGFpbmVyKiB0aW1lQ29udGFpbmVyKCkgY29uc3QgeyByZXR1cm4g
bV90aW1lQ29udGFpbmVyLmdldCgpOyB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIHBhdXNlQW5p
bWF0aW9ucygpOwotICAgICAgICB2b2lkIHVucGF1c2VBbmltYXRpb25zKCk7Ci0gICAgICAgIGJv
b2wgYW5pbWF0aW9uc1BhdXNlZCgpIGNvbnN0OwotCi0gICAgICAgIGZsb2F0IGdldEN1cnJlbnRU
aW1lKCkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2V0Q3VycmVudFRpbWUoZmxvYXQgc2Vjb25kcyk7
Ci0KLSAgICAgICAgdW5zaWduZWQgc3VzcGVuZFJlZHJhdyh1bnNpZ25lZCBtYXhXYWl0TWlsbGlz
ZWNvbmRzKTsKLSAgICAgICAgdm9pZCB1bnN1c3BlbmRSZWRyYXcodW5zaWduZWQgc3VzcGVuZEhh
bmRsZUlkKTsKLSAgICAgICAgdm9pZCB1bnN1c3BlbmRSZWRyYXdBbGwoKTsKLSAgICAgICAgdm9p
ZCBmb3JjZVJlZHJhdygpOwotCi0gICAgICAgIE5vZGVMaXN0KiBnZXRJbnRlcnNlY3Rpb25MaXN0
KGNvbnN0IEZsb2F0UmVjdCYsIFNWR0VsZW1lbnQqIHJlZmVyZW5jZUVsZW1lbnQpOwotICAgICAg
ICBOb2RlTGlzdCogZ2V0RW5jbG9zdXJlTGlzdChjb25zdCBGbG9hdFJlY3QmLCBTVkdFbGVtZW50
KiByZWZlcmVuY2VFbGVtZW50KTsKLSAgICAgICAgYm9vbCBjaGVja0ludGVyc2VjdGlvbihTVkdF
bGVtZW50KiwgY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgICAgIGJvb2wgY2hlY2tFbmNsb3N1cmUo
U1ZHRWxlbWVudCosIGNvbnN0IEZsb2F0UmVjdCYpOwotICAgICAgICB2b2lkIGRlc2VsZWN0QWxs
KCk7Ci0KLSAgICAgICAgc3RhdGljIGZsb2F0IGNyZWF0ZVNWR051bWJlcigpOwotICAgICAgICBz
dGF0aWMgU1ZHTGVuZ3RoIGNyZWF0ZVNWR0xlbmd0aCgpOwotICAgICAgICBzdGF0aWMgU1ZHQW5n
bGUgY3JlYXRlU1ZHQW5nbGUoKTsKLSAgICAgICAgc3RhdGljIEZsb2F0UG9pbnQgY3JlYXRlU1ZH
UG9pbnQoKTsKLSAgICAgICAgc3RhdGljIFNWR01hdHJpeCBjcmVhdGVTVkdNYXRyaXgoKTsKLSAg
ICAgICAgc3RhdGljIEZsb2F0UmVjdCBjcmVhdGVTVkdSZWN0KCk7Ci0gICAgICAgIHN0YXRpYyBT
VkdUcmFuc2Zvcm0gY3JlYXRlU1ZHVHJhbnNmb3JtKCk7Ci0gICAgICAgIHN0YXRpYyBTVkdUcmFu
c2Zvcm0gY3JlYXRlU1ZHVHJhbnNmb3JtRnJvbU1hdHJpeChjb25zdCBTVkdNYXRyaXgmKTsKLQot
ICAgICAgICBBZmZpbmVUcmFuc2Zvcm0gdmlld0JveFRvVmlld1RyYW5zZm9ybShmbG9hdCB2aWV3
V2lkdGgsIGZsb2F0IHZpZXdIZWlnaHQpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgaW5oZXJpdFZp
ZXdBdHRyaWJ1dGVzKFNWR1ZpZXdFbGVtZW50Kik7Ci0KLSAgICAgICAgYm9vbCBpc091dGVybW9z
dFNWRygpIGNvbnN0OwotCi0gICAgICAgIEVsZW1lbnQqIGdldEVsZW1lbnRCeUlkKGNvbnN0IEF0
b21pY1N0cmluZyYpIGNvbnN0OwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICB2aXJ0dWFsIHZv
aWQgd2lsbE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZE1vdmVUb05ld093bmVyRG9jdW1lbnQoKTsKLQotICAgIHByaXZhdGU6Ci0gICAgICAgIFNWR1NW
R0VsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0gICAgICAgIHZpcnR1
YWwgflNWR1NWR0VsZW1lbnQoKTsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNTVkcoKSBjb25z
dCB7IHJldHVybiB0cnVlOyB9Ci0gICAgICAgIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VN
YXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0KLSAgICAgICAgdmlydHVhbCBib29sIHJlbmRl
cmVySXNOZWVkZWQoUmVuZGVyU3R5bGUqIHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50Ojpy
ZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsgfQotICAgICAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCog
Y3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1bWVudCgpOwotICAgICAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlZEZyb21Eb2N1bWVudCgpOwotCi0gICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7Ci0KLSAgICAgICAgREVDTEFS
RV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBT
VkdMZW5ndGgsIFgsIHgpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNW
R1NWR0VsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgU1ZHTGVuZ3RoLCBZLCB5KQotICAgICAgICBE
RUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6d2lk
dGhBdHRyLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgREVDTEFSRV9BTklNQVRF
RF9QUk9QRVJUWV9ORVcoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0dHIsIFNWR0xl
bmd0aCwgSGVpZ2h0LCBoZWlnaHQpCi0KLSAgICAgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNS
ZXF1aXJlZAotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJUWV9ORVcoU1ZH
U1ZHRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29s
LCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKQot
Ci0gICAgICAgIC8vIFNWR0ZpdFRvVmlld0JveAotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BS
T1BFUlRZX05FVyhTVkdTVkdFbGVtZW50LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIEZsb2F0UmVj
dCwgVmlld0JveCwgdmlld0JveCkKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9O
RVcoU1ZHU1ZHRWxlbWVudCwgU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyLCBTVkdQ
cmVzZXJ2ZUFzcGVjdFJhdGlvLCBQcmVzZXJ2ZUFzcGVjdFJhdGlvLCBwcmVzZXJ2ZUFzcGVjdFJh
dGlvKQorCitjbGFzcyBTVkdBbmdsZTsKK2NsYXNzIFNWR01hdHJpeDsKK2NsYXNzIFNWR1RyYW5z
Zm9ybTsKK2NsYXNzIFNWR1ZpZXdTcGVjOworY2xhc3MgU1ZHVmlld0VsZW1lbnQ7CitjbGFzcyBT
TUlMVGltZUNvbnRhaW5lcjsKKworY2xhc3MgU1ZHU1ZHRWxlbWVudCA6IHB1YmxpYyBTVkdTdHls
ZWRMb2NhdGFibGVFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0
cywKKyAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1NwYWNlLAorICAgICAgICAg
ICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLAorICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdGaXRUb1ZpZXdCb3gsCisgICAgICAgICAgICAgICAg
ICAgICAgcHVibGljIFNWR1pvb21BbmRQYW4geworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFNWR1NWR0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQq
KTsKKworICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gU1ZHVGVzdHM6
OmlzVmFsaWQoKTsgfQorCisgICAgLy8gJ1NWR1NWR0VsZW1lbnQnIGZ1bmN0aW9ucworICAgIGNv
bnN0IEF0b21pY1N0cmluZyYgY29udGVudFNjcmlwdFR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNl
dENvbnRlbnRTY3JpcHRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSk7CisKKyAgICBjb25z
dCBBdG9taWNTdHJpbmcmIGNvbnRlbnRTdHlsZVR5cGUoKSBjb25zdDsKKyAgICB2b2lkIHNldENv
bnRlbnRTdHlsZVR5cGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKTsKKworICAgIEZsb2F0UmVj
dCB2aWV3cG9ydCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRDb250YWluZXJTaXplKGNvbnN0IElu
dFNpemUmIGNvbnRhaW5lclNpemUpIHsgbV9jb250YWluZXJTaXplID0gY29udGFpbmVyU2l6ZTsg
bV9oYXNTZXRDb250YWluZXJTaXplID0gdHJ1ZTsgfQorICAgIEludFNpemUgY29udGFpbmVyU2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGFpbmVyU2l6ZTsgfQorICAgIGJvb2wgaGFzU2V0Q29u
dGFpbmVyU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faGFzU2V0Q29udGFpbmVyU2l6ZTsgfQorICAg
IGludCByZWxhdGl2ZVdpZHRoVmFsdWUoKSBjb25zdDsKKyAgICBpbnQgcmVsYXRpdmVIZWlnaHRW
YWx1ZSgpIGNvbnN0OworCisgICAgZmxvYXQgcGl4ZWxVbml0VG9NaWxsaW1ldGVyWCgpIGNvbnN0
OworICAgIGZsb2F0IHBpeGVsVW5pdFRvTWlsbGltZXRlclkoKSBjb25zdDsKKyAgICBmbG9hdCBz
Y3JlZW5QaXhlbFRvTWlsbGltZXRlclgoKSBjb25zdDsKKyAgICBmbG9hdCBzY3JlZW5QaXhlbFRv
TWlsbGltZXRlclkoKSBjb25zdDsKKworICAgIGJvb2wgdXNlQ3VycmVudFZpZXcoKSBjb25zdDsK
KyAgICB2b2lkIHNldFVzZUN1cnJlbnRWaWV3KGJvb2wgY3VycmVudFZpZXcpOworCisgICAgU1ZH
Vmlld1NwZWMqIGN1cnJlbnRWaWV3KCkgY29uc3Q7CisKKyAgICBmbG9hdCBjdXJyZW50U2NhbGUo
KSBjb25zdDsKKyAgICB2b2lkIHNldEN1cnJlbnRTY2FsZShmbG9hdCBzY2FsZSk7CisKKyAgICBG
bG9hdFBvaW50JiBjdXJyZW50VHJhbnNsYXRlKCkgeyByZXR1cm4gbV90cmFuc2xhdGlvbjsgfQor
ICAgIHZvaWQgc2V0Q3VycmVudFRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50Jik7CisKKyAgICAv
LyBPbmx5IHVzZWQgZnJvbSB0aGUgYmluZGluZ3MuCisgICAgdm9pZCB1cGRhdGVDdXJyZW50VHJh
bnNsYXRlKCk7CisKKyAgICBTTUlMVGltZUNvbnRhaW5lciogdGltZUNvbnRhaW5lcigpIGNvbnN0
IHsgcmV0dXJuIG1fdGltZUNvbnRhaW5lci5nZXQoKTsgfQorICAgIAorICAgIHZvaWQgcGF1c2VB
bmltYXRpb25zKCk7CisgICAgdm9pZCB1bnBhdXNlQW5pbWF0aW9ucygpOworICAgIGJvb2wgYW5p
bWF0aW9uc1BhdXNlZCgpIGNvbnN0OworCisgICAgZmxvYXQgZ2V0Q3VycmVudFRpbWUoKSBjb25z
dDsKKyAgICB2b2lkIHNldEN1cnJlbnRUaW1lKGZsb2F0IHNlY29uZHMpOworCisgICAgdW5zaWdu
ZWQgc3VzcGVuZFJlZHJhdyh1bnNpZ25lZCBtYXhXYWl0TWlsbGlzZWNvbmRzKTsKKyAgICB2b2lk
IHVuc3VzcGVuZFJlZHJhdyh1bnNpZ25lZCBzdXNwZW5kSGFuZGxlSWQpOworICAgIHZvaWQgdW5z
dXNwZW5kUmVkcmF3QWxsKCk7CisgICAgdm9pZCBmb3JjZVJlZHJhdygpOworCisgICAgTm9kZUxp
c3QqIGdldEludGVyc2VjdGlvbkxpc3QoY29uc3QgRmxvYXRSZWN0JiwgU1ZHRWxlbWVudCogcmVm
ZXJlbmNlRWxlbWVudCk7CisgICAgTm9kZUxpc3QqIGdldEVuY2xvc3VyZUxpc3QoY29uc3QgRmxv
YXRSZWN0JiwgU1ZHRWxlbWVudCogcmVmZXJlbmNlRWxlbWVudCk7CisgICAgYm9vbCBjaGVja0lu
dGVyc2VjdGlvbihTVkdFbGVtZW50KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgYm9vbCBjaGVj
a0VuY2xvc3VyZShTVkdFbGVtZW50KiwgY29uc3QgRmxvYXRSZWN0Jik7CisgICAgdm9pZCBkZXNl
bGVjdEFsbCgpOworCisgICAgc3RhdGljIGZsb2F0IGNyZWF0ZVNWR051bWJlcigpOworICAgIHN0
YXRpYyBTVkdMZW5ndGggY3JlYXRlU1ZHTGVuZ3RoKCk7CisgICAgc3RhdGljIFNWR0FuZ2xlIGNy
ZWF0ZVNWR0FuZ2xlKCk7CisgICAgc3RhdGljIEZsb2F0UG9pbnQgY3JlYXRlU1ZHUG9pbnQoKTsK
KyAgICBzdGF0aWMgU1ZHTWF0cml4IGNyZWF0ZVNWR01hdHJpeCgpOworICAgIHN0YXRpYyBGbG9h
dFJlY3QgY3JlYXRlU1ZHUmVjdCgpOworICAgIHN0YXRpYyBTVkdUcmFuc2Zvcm0gY3JlYXRlU1ZH
VHJhbnNmb3JtKCk7CisgICAgc3RhdGljIFNWR1RyYW5zZm9ybSBjcmVhdGVTVkdUcmFuc2Zvcm1G
cm9tTWF0cml4KGNvbnN0IFNWR01hdHJpeCYpOworCisgICAgQWZmaW5lVHJhbnNmb3JtIHZpZXdC
b3hUb1ZpZXdUcmFuc2Zvcm0oZmxvYXQgdmlld1dpZHRoLCBmbG9hdCB2aWV3SGVpZ2h0KSBjb25z
dDsKKworICAgIHZvaWQgaW5oZXJpdFZpZXdBdHRyaWJ1dGVzKFNWR1ZpZXdFbGVtZW50Kik7CisK
KyAgICBib29sIGlzT3V0ZXJtb3N0U1ZHKCkgY29uc3Q7CisKKyAgICBFbGVtZW50KiBnZXRFbGVt
ZW50QnlJZChjb25zdCBBdG9taWNTdHJpbmcmKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIHZp
cnR1YWwgdm9pZCB3aWxsTW92ZVRvTmV3T3duZXJEb2N1bWVudCgpOworICAgIHZpcnR1YWwgdm9p
ZCBkaWRNb3ZlVG9OZXdPd25lckRvY3VtZW50KCk7CisKK3ByaXZhdGU6CisgICAgU1ZHU1ZHRWxl
bWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5TVkdT
VkdFbGVtZW50KCk7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNTVkcoKSBjb25zdCB7IHJldHVybiB0
cnVlOyB9CisgICAgCisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJp
YnV0ZSopOworCisgICAgdmlydHVhbCBib29sIHJlbmRlcmVySXNOZWVkZWQoUmVuZGVyU3R5bGUq
IHN0eWxlKSB7IHJldHVybiBTdHlsZWRFbGVtZW50OjpyZW5kZXJlcklzTmVlZGVkKHN0eWxlKTsg
fQorICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihSZW5kZXJBcmVuYSos
IFJlbmRlclN0eWxlKik7CisKKyAgICB2aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQo
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb21Eb2N1bWVudCgpOworCisgICAgdmlydHVh
bCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZp
cnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKwor
ICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CisKKyAgICAv
LyBBbmltYXRlZCBwcm9wZXJ0eSBkZWNsYXJhdGlvbnMKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xF
TkdUSChYLCB4KQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFksIHkpCisgICAgREVDTEFS
RV9BTklNQVRFRF9MRU5HVEgoV2lkdGgsIHdpZHRoKQorICAgIERFQ0xBUkVfQU5JTUFURURfTEVO
R1RIKEhlaWdodCwgaGVpZ2h0KQorCisgICAgLy8gU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJl
ZAorICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdTVkdFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCisKKyAgICAvLyBT
VkdGaXRUb1ZpZXdCb3gKKyAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdTVkdF
bGVtZW50LCBTVkdOYW1lczo6dmlld0JveEF0dHIsIEZsb2F0UmVjdCwgVmlld0JveCwgdmlld0Jv
eCkKKyAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdTVkdFbGVtZW50LCBTVkdO
YW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIsIFNWR1ByZXNlcnZlQXNwZWN0UmF0aW8sIFBy
ZXNlcnZlQXNwZWN0UmF0aW8sIHByZXNlcnZlQXNwZWN0UmF0aW8pCiAgCi0gICAgICAgIHZpcnR1
YWwgdm9pZCBkb2N1bWVudFdpbGxCZWNvbWVJbmFjdGl2ZSgpOwotICAgICAgICB2aXJ0dWFsIHZv
aWQgZG9jdW1lbnREaWRCZWNvbWVBY3RpdmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnRX
aWxsQmVjb21lSW5hY3RpdmUoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZG9jdW1lbnREaWRCZWNvbWVB
Y3RpdmUoKTsKIAotICAgICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5h
dGVTcGFjZVRyYW5zZm9ybShTVkdMb2NhdGFibGU6OkNUTVNjb3BlKSBjb25zdDsKKyAgICB2aXJ0
dWFsIEFmZmluZVRyYW5zZm9ybSBsb2NhbENvb3JkaW5hdGVTcGFjZVRyYW5zZm9ybShTVkdMb2Nh
dGFibGU6OkNUTVNjb3BlKSBjb25zdDsKIAotICAgICAgICBib29sIG1fdXNlQ3VycmVudFZpZXc7
Ci0gICAgICAgIFJlZlB0cjxTTUlMVGltZUNvbnRhaW5lcj4gbV90aW1lQ29udGFpbmVyOwotICAg
ICAgICBGbG9hdFBvaW50IG1fdHJhbnNsYXRpb247Ci0gICAgICAgIGZsb2F0IG1fc2NhbGU7Ci0g
ICAgICAgIG11dGFibGUgT3duUHRyPFNWR1ZpZXdTcGVjPiBtX3ZpZXdTcGVjOwotICAgICAgICBJ
bnRTaXplIG1fY29udGFpbmVyU2l6ZTsKLSAgICAgICAgYm9vbCBtX2hhc1NldENvbnRhaW5lclNp
emU7Ci0gICAgfTsKKyAgICBib29sIG1fdXNlQ3VycmVudFZpZXc7CisgICAgUmVmUHRyPFNNSUxU
aW1lQ29udGFpbmVyPiBtX3RpbWVDb250YWluZXI7CisgICAgRmxvYXRQb2ludCBtX3RyYW5zbGF0
aW9uOworICAgIGZsb2F0IG1fc2NhbGU7CisgICAgbXV0YWJsZSBPd25QdHI8U1ZHVmlld1NwZWM+
IG1fdmlld1NwZWM7CisgICAgSW50U2l6ZSBtX2NvbnRhaW5lclNpemU7CisgICAgYm9vbCBtX2hh
c1NldENvbnRhaW5lclNpemU7Cit9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6
IFdlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAkocmV2aXNpb24gNzMwMTApCisrKyBX
ZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
Myw2ICszMyw5IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVmaW5pdGlvbnMKK0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LCBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIsIFRleHRMZW5ndGgsIHRleHRMZW5ndGgpCisK
IFNWR1RleHRDb250ZW50RWxlbWVudDo6U1ZHVGV4dENvbnRlbnRFbGVtZW50KGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR1N0eWxlZEVs
ZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3RleHRMZW5ndGgoTGVuZ3RoTW9kZU90
aGVyKQpJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHJldmlzaW9uIDczMDEw
KQorKysgV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTMxLDUzICszMSw1MiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBT
VkdMZW5ndGg7CitjbGFzcyBTVkdUZXh0Q29udGVudEVsZW1lbnQgOiBwdWJsaWMgU1ZHU3R5bGVk
RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdMYW5nU3BhY2UsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1
aXJlZCB7CitwdWJsaWM6CisgICAgZW51bSBTVkdMZW5ndGhBZGp1c3RUeXBlIHsKKyAgICAgICAg
TEVOR1RIQURKVVNUX1VOS05PV04gICAgICAgICAgICA9IDAsCisgICAgICAgIExFTkdUSEFESlVT
VF9TUEFDSU5HICAgICAgICAgICAgPSAxLAorICAgICAgICBMRU5HVEhBREpVU1RfU1BBQ0lOR0FO
REdMWVBIUyAgID0gMgorICAgIH07CiAKLSAgICBjbGFzcyBTVkdUZXh0Q29udGVudEVsZW1lbnQg
OiBwdWJsaWMgU1ZHU3R5bGVkRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBwdWJsaWMgU1ZHVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHVibGljIFNWR0xhbmdTcGFjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCB7Ci0gICAgcHVibGljOgotICAgICAg
ICBlbnVtIFNWR0xlbmd0aEFkanVzdFR5cGUgewotICAgICAgICAgICAgTEVOR1RIQURKVVNUX1VO
S05PV04gICAgICAgICAgICA9IDAsCi0gICAgICAgICAgICBMRU5HVEhBREpVU1RfU1BBQ0lORyAg
ICAgICAgICAgID0gMSwKLSAgICAgICAgICAgIExFTkdUSEFESlVTVF9TUEFDSU5HQU5ER0xZUEhT
ICAgPSAyCi0gICAgICAgIH07Ci0KLSAgICAgICAgdW5zaWduZWQgZ2V0TnVtYmVyT2ZDaGFycygp
IGNvbnN0OwotICAgICAgICBmbG9hdCBnZXRDb21wdXRlZFRleHRMZW5ndGgoKSBjb25zdDsKLSAg
ICAgICAgZmxvYXQgZ2V0U3ViU3RyaW5nTGVuZ3RoKHVuc2lnbmVkIGNoYXJudW0sIHVuc2lnbmVk
IG5jaGFycywgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwotICAgICAgICBGbG9hdFBvaW50IGdldFN0
YXJ0UG9zaXRpb25PZkNoYXIodW5zaWduZWQgY2hhcm51bSwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0
OwotICAgICAgICBGbG9hdFBvaW50IGdldEVuZFBvc2l0aW9uT2ZDaGFyKHVuc2lnbmVkIGNoYXJu
dW0sIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKLSAgICAgICAgRmxvYXRSZWN0IGdldEV4dGVudE9m
Q2hhcih1bnNpZ25lZCBjaGFybnVtLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0gICAgICAgIGZs
b2F0IGdldFJvdGF0aW9uT2ZDaGFyKHVuc2lnbmVkIGNoYXJudW0sIEV4Y2VwdGlvbkNvZGUmKSBj
b25zdDsKLSAgICAgICAgaW50IGdldENoYXJOdW1BdFBvc2l0aW9uKGNvbnN0IEZsb2F0UG9pbnQm
KSBjb25zdDsKLSAgICAgICAgdm9pZCBzZWxlY3RTdWJTdHJpbmcodW5zaWduZWQgY2hhcm51bSwg
dW5zaWduZWQgbmNoYXJzLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7Ci0KLSAgICAgICAgYm9vbCBp
c0tub3duQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLQotICAgICAgICBzdGF0aWMg
U1ZHVGV4dENvbnRlbnRFbGVtZW50KiBlbGVtZW50RnJvbVJlbmRlcmVyKFJlbmRlck9iamVjdCop
OwotCi0gICAgcHJvdGVjdGVkOgotICAgICAgICBTVkdUZXh0Q29udGVudEVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7Ci0KLSAgICAgICAgdmlydHVhbCBib29sIGlzVmFs
aWQoKSBjb25zdCB7IHJldHVybiBTVkdUZXN0czo6aXNWYWxpZCgpOyB9Ci0KLSAgICAgICAgdmly
dHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7Ci0gICAg
ICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmllZE5hbWUm
KTsKLQotICAgICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0
OworICAgIHVuc2lnbmVkIGdldE51bWJlck9mQ2hhcnMoKSBjb25zdDsKKyAgICBmbG9hdCBnZXRD
b21wdXRlZFRleHRMZW5ndGgoKSBjb25zdDsKKyAgICBmbG9hdCBnZXRTdWJTdHJpbmdMZW5ndGgo
dW5zaWduZWQgY2hhcm51bSwgdW5zaWduZWQgbmNoYXJzLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7
CisgICAgRmxvYXRQb2ludCBnZXRTdGFydFBvc2l0aW9uT2ZDaGFyKHVuc2lnbmVkIGNoYXJudW0s
IEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBGbG9hdFBvaW50IGdldEVuZFBvc2l0aW9uT2ZD
aGFyKHVuc2lnbmVkIGNoYXJudW0sIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBGbG9hdFJl
Y3QgZ2V0RXh0ZW50T2ZDaGFyKHVuc2lnbmVkIGNoYXJudW0sIEV4Y2VwdGlvbkNvZGUmKSBjb25z
dDsKKyAgICBmbG9hdCBnZXRSb3RhdGlvbk9mQ2hhcih1bnNpZ25lZCBjaGFybnVtLCBFeGNlcHRp
b25Db2RlJikgY29uc3Q7CisgICAgaW50IGdldENoYXJOdW1BdFBvc2l0aW9uKGNvbnN0IEZsb2F0
UG9pbnQmKSBjb25zdDsKKyAgICB2b2lkIHNlbGVjdFN1YlN0cmluZyh1bnNpZ25lZCBjaGFybnVt
LCB1bnNpZ25lZCBuY2hhcnMsIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKIAotICAgIHByaXZhdGU6
Ci0gICAgICAgIHZpcnR1YWwgYm9vbCBpc1RleHRDb250ZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1
ZTsgfQorICAgIGJvb2wgaXNLbm93bkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJik7CiAK
LSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LCBTVkdOYW1lczo6dGV4dExlbmd0aEF0dHIsIFNWR0xlbmd0aCwgVGV4dExlbmd0aCwgdGV4
dExlbmd0aCkKLSAgICAgICAgREVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJPUEVSVFlfTkVXKFNW
R1RleHRDb250ZW50RWxlbWVudCwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIGludCwgTGVu
Z3RoQWRqdXN0LCBsZW5ndGhBZGp1c3QpCisgICAgc3RhdGljIFNWR1RleHRDb250ZW50RWxlbWVu
dCogZWxlbWVudEZyb21SZW5kZXJlcihSZW5kZXJPYmplY3QqKTsKIAotICAgICAgICAvLyBTVkdF
eHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElD
X1BST1BFUlRZX05FVyhTVkdUZXh0Q29udGVudEVsZW1lbnQsIFNWR05hbWVzOjpleHRlcm5hbFJl
c291cmNlc1JlcXVpcmVkQXR0ciwgYm9vbCwgRXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCwgZXh0
ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZCkgCi0gICAgfTsKK3Byb3RlY3RlZDoKKyAgICBTVkdUZXh0
Q29udGVudEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CisKKyAgICB2
aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7
IH0KKworICAgIHZpcnR1YWwgdm9pZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
Jik7CisgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworCisgICAgdmlydHVhbCBib29sIHNlbGZIYXNSZWxhdGl2ZUxlbmd0aHMoKSBjb25z
dDsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIGJvb2wgaXNUZXh0Q29udGVudCgpIGNvbnN0IHsg
cmV0dXJuIHRydWU7IH0KKworICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucwor
ICAgIERFQ0xBUkVfQU5JTUFURURfTEVOR1RIKFRleHRMZW5ndGgsIHRleHRMZW5ndGgpCisgICAg
REVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJPUEVSVFlfTkVXKFNWR1RleHRDb250ZW50RWxlbWVu
dCwgU1ZHTmFtZXM6Omxlbmd0aEFkanVzdEF0dHIsIGludCwgTGVuZ3RoQWRqdXN0LCBsZW5ndGhB
ZGp1c3QpCisKKyAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCisgICAgREVDTEFS
RV9BTklNQVRFRF9TVEFUSUNfUFJPUEVSVFlfTkVXKFNWR1RleHRDb250ZW50RWxlbWVudCwgU1ZH
TmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291
cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNlc1JlcXVpcmVkKSAKK307CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCShyZXZp
c2lvbiA3MzAxMCkKKysrIFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIzLDE4ICsyMywxNSBAQAogI2lmIEVOQUJMRShTVkcpCiAjaW5jbHVkZSAi
U1ZHVGV4dFBhdGhFbGVtZW50LmgiCiAKLSNpbmNsdWRlICJBZmZpbmVUcmFuc2Zvcm0uaCIKICNp
bmNsdWRlICJBdHRyaWJ1dGUuaCIKLSNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRlICJS
ZW5kZXJTVkdSZXNvdXJjZS5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1RleHRQYXRoLmgiCi0jaW5j
bHVkZSAiU1ZHTGVuZ3RoTGlzdC5oIgotI2luY2x1ZGUgIlNWR1BhdGhFbGVtZW50LmgiCi0jaW5j
bHVkZSAiU1ZHUmVuZGVyU3R5bGUuaCIKLSNpbmNsdWRlICJTVkdUcmFuc2Zvcm1MaXN0LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8gQW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMK
K0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVGV4dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6c3Rh
cnRPZmZzZXRBdHRyLCBTdGFydE9mZnNldCwgc3RhcnRPZmZzZXQpCisKIGlubGluZSBTVkdUZXh0
UGF0aEVsZW1lbnQ6OlNWR1RleHRQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAgOiBTVkdUZXh0Q29udGVudEVsZW1lbnQodGFn
TmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX3N0YXJ0T2Zmc2V0KExlbmd0aE1vZGVPdGhlcikKSW5k
ZXg6IFdlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCShyZXZpc2lvbiA3MzAxMCkKKysrIFdlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw1NCArMjYsNTYg
QEAKICNpbmNsdWRlICJTVkdVUklSZWZlcmVuY2UuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
CiAgICAgZW51bSBTVkdUZXh0UGF0aE1ldGhvZFR5cGUgewotICAgICAgICBTVkdfVEVYVFBBVEhf
TUVUSE9EVFlQRV9VTktOT1dOID0gMCwKLSAgICAgICAgU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVf
QUxJR04gPSAxLAotICAgICAgICBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENIID0gMgor
ICAgIFNWR19URVhUUEFUSF9NRVRIT0RUWVBFX1VOS05PV04gPSAwLAorICAgIFNWR19URVhUUEFU
SF9NRVRIT0RUWVBFX0FMSUdOID0gMSwKKyAgICBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJF
VENIID0gMgorfTsKKworZW51bSBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIHsKKyAgICBTVkdfVEVY
VFBBVEhfU1BBQ0lOR1RZUEVfVU5LTk9XTiA9IDAsCisgICAgU1ZHX1RFWFRQQVRIX1NQQUNJTkdU
WVBFX0FVVE8gPSAxLAorICAgIFNWR19URVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVCA9IDIKK307
CisKK2NsYXNzIFNWR1RleHRQYXRoRWxlbWVudCA6IHB1YmxpYyBTVkdUZXh0Q29udGVudEVsZW1l
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHVVJJUmVmZXJlbmNlIHsK
K3B1YmxpYzoKKyAgICAvLyBGb3J3YXJkIGRlY2xhcmUgdGhlc2UgZW51bXMgaW4gdGhlIHczYyBu
YW1pbmcgc2NoZW1lLCBmb3IgSURMIGdlbmVyYXRpb24KKyAgICBlbnVtIHsKKyAgICAgICAgVEVY
VFBBVEhfTUVUSE9EVFlQRV9VTktOT1dOID0gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9X
TiwKKyAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTiA9IFNWR19URVhUUEFUSF9NRVRI
T0RUWVBFX0FMSUdOLAorICAgICAgICBURVhUUEFUSF9NRVRIT0RUWVBFX1NUUkVUQ0ggPSBTVkdf
VEVYVFBBVEhfTUVUSE9EVFlQRV9TVFJFVENILAorICAgICAgICBURVhUUEFUSF9TUEFDSU5HVFlQ
RV9VTktOT1dOID0gU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV04sCisgICAgICAgIFRF
WFRQQVRIX1NQQUNJTkdUWVBFX0FVVE8gPSBTVkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUTywK
KyAgICAgICAgVEVYVFBBVEhfU1BBQ0lOR1RZUEVfRVhBQ1QgPSBTVkdfVEVYVFBBVEhfU1BBQ0lO
R1RZUEVfRVhBQ1QKICAgICB9OwogCi0gICAgZW51bSBTVkdUZXh0UGF0aFNwYWNpbmdUeXBlIHsK
LSAgICAgICAgU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV04gPSAwLAotICAgICAgICBT
VkdfVEVYVFBBVEhfU1BBQ0lOR1RZUEVfQVVUTyA9IDEsCi0gICAgICAgIFNWR19URVhUUEFUSF9T
UEFDSU5HVFlQRV9FWEFDVCA9IDIKLSAgICB9OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1Rl
eHRQYXRoRWxlbWVudD4gY3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwor
IAorcHJpdmF0ZToKKyAgICBTVkdUZXh0UGF0aEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYs
IERvY3VtZW50Kik7CiAKLSAgICBjbGFzcyBTVkdUZXh0UGF0aEVsZW1lbnQgOiBwdWJsaWMgU1ZH
VGV4dENvbnRlbnRFbGVtZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1Ymxp
YyBTVkdVUklSZWZlcmVuY2UgewotICAgIHB1YmxpYzoKLSAgICAgICAgLy8gRm9yd2FyZCBkZWNs
YXJlIHRoZXNlIGVudW1zIGluIHRoZSB3M2MgbmFtaW5nIHNjaGVtZSwgZm9yIElETCBnZW5lcmF0
aW9uCi0gICAgICAgIGVudW0gewotICAgICAgICAgICAgVEVYVFBBVEhfTUVUSE9EVFlQRV9VTktO
T1dOID0gU1ZHX1RFWFRQQVRIX01FVEhPRFRZUEVfVU5LTk9XTiwKLSAgICAgICAgICAgIFRFWFRQ
QVRIX01FVEhPRFRZUEVfQUxJR04gPSBTVkdfVEVYVFBBVEhfTUVUSE9EVFlQRV9BTElHTiwKLSAg
ICAgICAgICAgIFRFWFRQQVRIX01FVEhPRFRZUEVfU1RSRVRDSCA9IFNWR19URVhUUEFUSF9NRVRI
T0RUWVBFX1NUUkVUQ0gsCi0gICAgICAgICAgICBURVhUUEFUSF9TUEFDSU5HVFlQRV9VTktOT1dO
ID0gU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX1VOS05PV04sCi0gICAgICAgICAgICBURVhUUEFU
SF9TUEFDSU5HVFlQRV9BVVRPID0gU1ZHX1RFWFRQQVRIX1NQQUNJTkdUWVBFX0FVVE8sCi0gICAg
ICAgICAgICBURVhUUEFUSF9TUEFDSU5HVFlQRV9FWEFDVCA9IFNWR19URVhUUEFUSF9TUEFDSU5H
VFlQRV9FWEFDVAotICAgICAgICB9OworICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZEludG9Eb2N1
bWVudCgpOwogCi0gICAgICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1RleHRQYXRoRWxlbWVudD4g
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwotIAotICAgIHByaXZhdGU6
Ci0gICAgICAgIFNWR1RleHRQYXRoRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7
CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpOworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3BlcnR5KGNvbnN0IFF1YWxpZmll
ZE5hbWUmKTsKKyAgICB2aXJ0dWFsIFJlbmRlck9iamVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVy
QXJlbmEqLCBSZW5kZXJTdHlsZSopOwogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBpbnNlcnRlZElu
dG9Eb2N1bWVudCgpOworICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVy
KE5vZGUqKSBjb25zdDsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1
dGUoQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN5bmNocm9uaXpl
UHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotICAgICAgICB2aXJ0dWFsIFJlbmRlck9i
amVjdCogY3JlYXRlUmVuZGVyZXIoUmVuZGVyQXJlbmEqLCBSZW5kZXJTdHlsZSopOwotCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKE5vZGUqKSBjb25zdDsK
LQotICAgICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0Owot
Ci0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJPUEVSVFlfTkVXKFNWR1RleHRQYXRoRWxlbWVu
dCwgU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0ciwgU1ZHTGVuZ3RoLCBTdGFydE9mZnNldCwgc3Rh
cnRPZmZzZXQpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhT
VkdUZXh0UGF0aEVsZW1lbnQsIFNWR05hbWVzOjptZXRob2RBdHRyLCBpbnQsIE1ldGhvZCwgbWV0
aG9kKQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJUWV9ORVcoU1ZHVGV4
dFBhdGhFbGVtZW50LCBTVkdOYW1lczo6c3BhY2luZ0F0dHIsIGludCwgU3BhY2luZywgc3BhY2lu
ZykKLSAgICAKLSAgICAgICAgLy8gU1ZHVVJJUmVmZXJlbmNlCi0gICAgICAgIERFQ0xBUkVfQU5J
TUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdUZXh0UGF0aEVsZW1lbnQsIFhMaW5rTmFtZXM6
OmhyZWZBdHRyLCBTdHJpbmcsIEhyZWYsIGhyZWYpCi0gICAgfTsKKyAgICB2aXJ0dWFsIGJvb2wg
c2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0OworCisgICAgLy8gQW5pbWF0ZWQgcHJvcGVy
dHkgZGVjbGFyYXRpb25zCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoU3RhcnRPZmZzZXQs
IHN0YXJ0T2Zmc2V0KQorICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhT
VkdUZXh0UGF0aEVsZW1lbnQsIFNWR05hbWVzOjptZXRob2RBdHRyLCBpbnQsIE1ldGhvZCwgbWV0
aG9kKQorICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdUZXh0UGF0
aEVsZW1lbnQsIFNWR05hbWVzOjpzcGFjaW5nQXR0ciwgaW50LCBTcGFjaW5nLCBzcGFjaW5nKQor
CisgICAgLy8gU1ZHVVJJUmVmZXJlbmNlCisgICAgREVDTEFSRV9BTklNQVRFRF9TVEFUSUNfUFJP
UEVSVFlfTkVXKFNWR1RleHRQYXRoRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIFN0cmlu
ZywgSHJlZiwgaHJlZikKK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuaAkocmV2aXNpb24gNzMwMTApCisrKyBX
ZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDI2ICsyOCwyNiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLSAgICBjbGFzcyBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50IDogcHVibGljIFNWR1RleHRDb250ZW50RWxlbWVudCB7Ci0g
ICAgcHVibGljOgotICAgICAgICBzdGF0aWMgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCogZWxl
bWVudEZyb21SZW5kZXJlcihSZW5kZXJPYmplY3QqKTsKLQotICAgIHByb3RlY3RlZDoKLSAgICAg
ICAgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1l
bnQqKTsKLQotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmli
dXRlKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2Vk
QnlQYXJzZXIgPSBmYWxzZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFu
Z2UgPSAwLCBpbnQgY2hpbGRDb3VudERlbHRhID0gMCk7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICAgICAgdmlydHVh
bCB2b2lkIHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwotCi0gICAg
ICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7Ci0KLSAgICAg
ICAgREVDTEFSRV9BTklNQVRFRF9MSVNUX1BST1BFUlRZX05FVyhTVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LCBTVkdOYW1lczo6eEF0dHIsIFNWR0xlbmd0aExpc3QsIFgsIHgpCi0gICAgICAgIERF
Q0xBUkVfQU5JTUFURURfTElTVF9QUk9QRVJUWV9ORVcoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVu
dCwgU1ZHTmFtZXM6OnlBdHRyLCBTVkdMZW5ndGhMaXN0LCBZLCB5KQotICAgICAgICBERUNMQVJF
X0FOSU1BVEVEX0xJU1RfUFJPUEVSVFlfTkVXKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNW
R05hbWVzOjpkeEF0dHIsIFNWR0xlbmd0aExpc3QsIER4LCBkeCkKLSAgICAgICAgREVDTEFSRV9B
TklNQVRFRF9MSVNUX1BST1BFUlRZX05FVyhTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LCBTVkdO
YW1lczo6ZHlBdHRyLCBTVkdMZW5ndGhMaXN0LCBEeSwgZHkpCi0gICAgICAgIERFQ0xBUkVfQU5J
TUFURURfTElTVF9QUk9QRVJUWV9ORVcoU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudCwgU1ZHTmFt
ZXM6OnJvdGF0ZUF0dHIsIFNWR051bWJlckxpc3QsIFJvdGF0ZSwgcm90YXRlKQotICAgIH07Citj
bGFzcyBTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50IDogcHVibGljIFNWR1RleHRDb250ZW50RWxl
bWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQqIGVs
ZW1lbnRGcm9tUmVuZGVyZXIoUmVuZGVyT2JqZWN0Kik7CisKK3Byb3RlY3RlZDoKKyAgICBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwor
CisgICAgdmlydHVhbCB2b2lkIHBhcnNlTWFwcGVkQXR0cmlidXRlKEF0dHJpYnV0ZSopOworICAg
IHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoYm9vbCBjaGFuZ2VkQnlQYXJzZXIgPSBmYWxz
ZSwgTm9kZSogYmVmb3JlQ2hhbmdlID0gMCwgTm9kZSogYWZ0ZXJDaGFuZ2UgPSAwLCBpbnQgY2hp
bGRDb3VudERlbHRhID0gMCk7CisgICAgdmlydHVhbCB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9pZCBzeW5jaHJvbml6ZVByb3Bl
cnR5KGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKworICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVs
YXRpdmVMZW5ndGhzKCkgY29uc3Q7CisKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVS
VFlfTkVXKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjp4QXR0ciwgU1ZHTGVu
Z3RoTGlzdCwgWCwgeCkKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFlfTkVXKFNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgU1ZHTGVuZ3RoTGlzdCwg
WSwgeSkKKyAgICBERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFlfTkVXKFNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQsIFNWR05hbWVzOjpkeEF0dHIsIFNWR0xlbmd0aExpc3QsIER4LCBkeCkK
KyAgICBERUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFlfTkVXKFNWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQsIFNWR05hbWVzOjpkeUF0dHIsIFNWR0xlbmd0aExpc3QsIER5LCBkeSkKKyAgICBE
RUNMQVJFX0FOSU1BVEVEX0xJU1RfUFJPUEVSVFlfTkVXKFNWR1RleHRQb3NpdGlvbmluZ0VsZW1l
bnQsIFNWR05hbWVzOjpyb3RhdGVBdHRyLCBTVkdOdW1iZXJMaXN0LCBSb3RhdGUsIHJvdGF0ZSkK
K307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRleDogV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJ
KHJldmlzaW9uIDczMDEwKQorKysgV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTU3LDYgKzU3LDEyIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorLy8g
QW5pbWF0ZWQgcHJvcGVydHkgZGVmaW5pdGlvbnMKK0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZH
VXNlRWxlbWVudCwgU1ZHTmFtZXM6OnhBdHRyLCBYLCB4KQorREVGSU5FX0FOSU1BVEVEX0xFTkdU
SChTVkdVc2VFbGVtZW50LCBTVkdOYW1lczo6eUF0dHIsIFksIHkpCitERUZJTkVfQU5JTUFURURf
TEVOR1RIKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp3aWR0aEF0dHIsIFdpZHRoLCB3aWR0aCkK
K0RFRklORV9BTklNQVRFRF9MRU5HVEgoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdodEF0
dHIsIEhlaWdodCwgaGVpZ2h0KQorCiBpbmxpbmUgU1ZHVXNlRWxlbWVudDo6U1ZHVXNlRWxlbWVu
dChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCogZG9jdW1lbnQpCiAgICAg
OiBTVkdTdHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAgICAs
IG1feChMZW5ndGhNb2RlV2lkdGgpCkluZGV4OiBXZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5oCShyZXZpc2lvbiA3MzAx
MCkKKysrIFdlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzIs
OTQgKzMyLDk0IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotICAgIGNsYXNzIFNWR0VsZW1l
bnRJbnN0YW5jZTsKLSAgICBjbGFzcyBTVkdMZW5ndGg7Ci0gICAgY2xhc3MgU1ZHU2hhZG93VHJl
ZVJvb3RFbGVtZW50OworY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOworY2xhc3MgU1ZHU2hhZG93
VHJlZVJvb3RFbGVtZW50OwogCi0gICAgY2xhc3MgU1ZHVXNlRWxlbWVudCA6IHB1YmxpYyBTVkdT
dHlsZWRUcmFuc2Zvcm1hYmxlRWxlbWVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVi
bGljIFNWR1Rlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHTGFuZ1Nw
YWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgU1ZHRXh0ZXJuYWxSZXNvdXJj
ZXNSZXF1aXJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFNWR1VSSVJlZmVy
ZW5jZSB7Ci0gICAgcHVibGljOgotICAgICAgICBzdGF0aWMgUGFzc1JlZlB0cjxTVkdVc2VFbGVt
ZW50PiBjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CitjbGFzcyBTVkdV
c2VFbGVtZW50IDogcHVibGljIFNWR1N0eWxlZFRyYW5zZm9ybWFibGVFbGVtZW50LAorICAgICAg
ICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdUZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICBw
dWJsaWMgU1ZHTGFuZ1NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdFeHRl
cm5hbFJlc291cmNlc1JlcXVpcmVkLAorICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBTVkdV
UklSZWZlcmVuY2UgeworcHVibGljOgorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFNWR1VzZUVsZW1l
bnQ+IGNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgICAgICBT
VkdFbGVtZW50SW5zdGFuY2UqIGluc3RhbmNlUm9vdCgpIGNvbnN0OwotICAgICAgICBTVkdFbGVt
ZW50SW5zdGFuY2UqIGFuaW1hdGVkSW5zdGFuY2VSb290KCkgY29uc3Q7Ci0gICAgICAgIFNWR0Vs
ZW1lbnRJbnN0YW5jZSogaW5zdGFuY2VGb3JTaGFkb3dUcmVlRWxlbWVudChOb2RlKikgY29uc3Q7
Ci0gICAgICAgIHZvaWQgaW52YWxpZGF0ZVNoYWRvd1RyZWUoKTsKKyAgICBTVkdFbGVtZW50SW5z
dGFuY2UqIGluc3RhbmNlUm9vdCgpIGNvbnN0OworICAgIFNWR0VsZW1lbnRJbnN0YW5jZSogYW5p
bWF0ZWRJbnN0YW5jZVJvb3QoKSBjb25zdDsKKyAgICBTVkdFbGVtZW50SW5zdGFuY2UqIGluc3Rh
bmNlRm9yU2hhZG93VHJlZUVsZW1lbnQoTm9kZSopIGNvbnN0OworICAgIHZvaWQgaW52YWxpZGF0
ZVNoYWRvd1RyZWUoKTsKIAotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyQ2xpcENoaWxk
KCkgY29uc3Q7CisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlckNsaXBDaGlsZCgpIGNvbnN0Owog
Ci0gICAgcHJpdmF0ZToKLSAgICAgICAgU1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1l
JiwgRG9jdW1lbnQqKTsKK3ByaXZhdGU6CisgICAgU1ZHVXNlRWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiwgRG9jdW1lbnQqKTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNv
bnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KKyAgICB2aXJ0dWFsIGJvb2wgaXNW
YWxpZCgpIGNvbnN0IHsgcmV0dXJuIFNWR1Rlc3RzOjppc1ZhbGlkKCk7IH0KIAotICAgICAgICB2
aXJ0dWFsIHZvaWQgaW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lk
IHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGJ1aWxkUGVuZGlu
Z1Jlc291cmNlKCk7CisgICAgdmlydHVhbCB2b2lkIGluc2VydGVkSW50b0RvY3VtZW50KCk7Cisg
ICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tRG9jdW1lbnQoKTsKKyAgICB2aXJ0dWFsIHZvaWQg
YnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBw
ZWRBdHRyaWJ1dGUoQXR0cmlidXRlKik7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIHN5
bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOworICAgIHZpcnR1YWwgdm9p
ZCBwYXJzZU1hcHBlZEF0dHJpYnV0ZShBdHRyaWJ1dGUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgdmlydHVhbCB2b2lk
IHN5bmNocm9uaXplUHJvcGVydHkoY29uc3QgUXVhbGlmaWVkTmFtZSYpOwogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCByZWNhbGNTdHlsZShTdHlsZUNoYW5nZSA9IE5vQ2hhbmdlKTsKLSAgICAgICAg
dmlydHVhbCBSZW5kZXJPYmplY3QqIGNyZWF0ZVJlbmRlcmVyKFJlbmRlckFyZW5hKiwgUmVuZGVy
U3R5bGUqKTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGV0YWNoKCk7CisgICAgdmlydHVhbCB2b2lkIHJlY2FsY1N0eWxlKFN0eWxlQ2hhbmdl
ID0gTm9DaGFuZ2UpOworICAgIHZpcnR1YWwgUmVuZGVyT2JqZWN0KiBjcmVhdGVSZW5kZXJlcihS
ZW5kZXJBcmVuYSosIFJlbmRlclN0eWxlKik7CisgICAgdmlydHVhbCB2b2lkIGF0dGFjaCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBkZXRhY2goKTsKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgdG9DbGlw
UGF0aChQYXRoJikgY29uc3Q7CisgICAgdmlydHVhbCB2b2lkIHRvQ2xpcFBhdGgoUGF0aCYpIGNv
bnN0OwogCi0gICAgICAgIHN0YXRpYyB2b2lkIHJlbW92ZURpc2FsbG93ZWRFbGVtZW50c0Zyb21T
dWJ0cmVlKE5vZGUqIGVsZW1lbnQpOworICAgIHN0YXRpYyB2b2lkIHJlbW92ZURpc2FsbG93ZWRF
bGVtZW50c0Zyb21TdWJ0cmVlKE5vZGUqIGVsZW1lbnQpOwogCi0gICAgICAgIHZvaWQgc2V0VXBk
YXRlc0Jsb2NrZWQoYm9vbCBibG9ja2VkKSB7IG1fdXBkYXRlc0Jsb2NrZWQgPSBibG9ja2VkOyB9
CisgICAgdm9pZCBzZXRVcGRhdGVzQmxvY2tlZChib29sIGJsb2NrZWQpIHsgbV91cGRhdGVzQmxv
Y2tlZCA9IGJsb2NrZWQ7IH0KIAotICAgICAgICBmcmllbmQgY2xhc3MgUmVuZGVyU1ZHU2hhZG93
VHJlZVJvb3RDb250YWluZXI7Ci0gICAgICAgIGJvb2wgaXNQZW5kaW5nUmVzb3VyY2UoKSBjb25z
dCB7IHJldHVybiBtX2lzUGVuZGluZ1Jlc291cmNlOyB9Ci0gICAgICAgIHZvaWQgYnVpbGRTaGFk
b3dBbmRJbnN0YW5jZVRyZWUoU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50Kik7CisgICAgZnJpZW5k
IGNsYXNzIFJlbmRlclNWR1NoYWRvd1RyZWVSb290Q29udGFpbmVyOworICAgIGJvb2wgaXNQZW5k
aW5nUmVzb3VyY2UoKSBjb25zdCB7IHJldHVybiBtX2lzUGVuZGluZ1Jlc291cmNlOyB9CisgICAg
dm9pZCBidWlsZFNoYWRvd0FuZEluc3RhbmNlVHJlZShTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQq
KTsKIAotICAgICAgICB2aXJ0dWFsIGJvb2wgc2VsZkhhc1JlbGF0aXZlTGVuZ3RocygpIGNvbnN0
OworICAgIHZpcnR1YWwgYm9vbCBzZWxmSGFzUmVsYXRpdmVMZW5ndGhzKCkgY29uc3Q7CiAKLSAg
ICAgICAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHVXNlRWxlbWVudCwgU1ZHTmFt
ZXM6OnhBdHRyLCBTVkdMZW5ndGgsIFgsIHgpCi0gICAgICAgIERFQ0xBUkVfQU5JTUFURURfUFJP
UEVSVFlfTkVXKFNWR1VzZUVsZW1lbnQsIFNWR05hbWVzOjp5QXR0ciwgU1ZHTGVuZ3RoLCBZLCB5
KQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZX05FVyhTVkdVc2VFbGVtZW50LCBT
VkdOYW1lczo6d2lkdGhBdHRyLCBTVkdMZW5ndGgsIFdpZHRoLCB3aWR0aCkKLSAgICAgICAgREVD
TEFSRV9BTklNQVRFRF9QUk9QRVJUWV9ORVcoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OmhlaWdo
dEF0dHIsIFNWR0xlbmd0aCwgSGVpZ2h0LCBoZWlnaHQpCisgICAgLy8gSW5zdGFuY2UgdHJlZSBo
YW5kbGluZworICAgIHZvaWQgYnVpbGRJbnN0YW5jZVRyZWUoU1ZHRWxlbWVudCogdGFyZ2V0LCBT
VkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlLCBib29sJiBmb3VuZEN5Y2xlKTsKKyAg
ICB2b2lkIGhhbmRsZURlZXBVc2VSZWZlcmVuY2luZyhTVkdVc2VFbGVtZW50KiB1c2UsIFNWR0Vs
ZW1lbnRJbnN0YW5jZSogdGFyZ2V0SW5zdGFuY2UsIGJvb2wmIGZvdW5kQ3ljbGUpOwogCi0gICAg
ICAgIC8vIFNWR1VSSVJlZmVyZW5jZQotICAgICAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19Q
Uk9QRVJUWV9ORVcoU1ZHVXNlRWxlbWVudCwgWExpbmtOYW1lczo6aHJlZkF0dHIsIFN0cmluZywg
SHJlZiwgaHJlZikKLQotICAgICAgICAvLyBTVkdFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkCi0g
ICAgICAgIERFQ0xBUkVfQU5JTUFURURfU1RBVElDX1BST1BFUlRZX05FVyhTVkdVc2VFbGVtZW50
LCBTVkdOYW1lczo6ZXh0ZXJuYWxSZXNvdXJjZXNSZXF1aXJlZEF0dHIsIGJvb2wsIEV4dGVybmFs
UmVzb3VyY2VzUmVxdWlyZWQsIGV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQpCi0KLSAgICAgICAg
Ly8gSW5zdGFuY2UgdHJlZSBoYW5kbGluZwotICAgICAgICB2b2lkIGJ1aWxkSW5zdGFuY2VUcmVl
KFNWR0VsZW1lbnQqIHRhcmdldCwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSwg
Ym9vbCYgZm91bmRDeWNsZSk7Ci0gICAgICAgIHZvaWQgaGFuZGxlRGVlcFVzZVJlZmVyZW5jaW5n
KFNWR1VzZUVsZW1lbnQqIHVzZSwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSwg
Ym9vbCYgZm91bmRDeWNsZSk7Ci0KLSAgICAgICAgLy8gU2hhZG93IHRyZWUgaGFuZGxpbmcKLSAg
ICAgICAgdm9pZCBidWlsZFNoYWRvd1RyZWUoU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50KiwgU1ZH
RWxlbWVudCogdGFyZ2V0LCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlKTsKKyAg
ICAvLyBTaGFkb3cgdHJlZSBoYW5kbGluZworICAgIHZvaWQgYnVpbGRTaGFkb3dUcmVlKFNWR1No
YWRvd1RyZWVSb290RWxlbWVudCosIFNWR0VsZW1lbnQqIHRhcmdldCwgU1ZHRWxlbWVudEluc3Rh
bmNlKiB0YXJnZXRJbnN0YW5jZSk7CiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX1VT
RSkKLSAgICAgICAgdm9pZCBleHBhbmRVc2VFbGVtZW50c0luU2hhZG93VHJlZShTVkdTaGFkb3dU
cmVlUm9vdEVsZW1lbnQqLCBOb2RlKiBlbGVtZW50KTsKLSAgICAgICAgdm9pZCBleHBhbmRTeW1i
b2xFbGVtZW50c0luU2hhZG93VHJlZShTVkdTaGFkb3dUcmVlUm9vdEVsZW1lbnQqLCBOb2RlKiBl
bGVtZW50KTsKKyAgICB2b2lkIGV4cGFuZFVzZUVsZW1lbnRzSW5TaGFkb3dUcmVlKFNWR1NoYWRv
d1RyZWVSb290RWxlbWVudCosIE5vZGUqIGVsZW1lbnQpOworICAgIHZvaWQgZXhwYW5kU3ltYm9s
RWxlbWVudHNJblNoYWRvd1RyZWUoU1ZHU2hhZG93VHJlZVJvb3RFbGVtZW50KiwgTm9kZSogZWxl
bWVudCk7CiAjZW5kaWYKIAotICAgICAgICAvLyAiVHJlZSBjb25uZWN0b3IiIAotICAgICAgICB2
b2lkIGFzc29jaWF0ZUluc3RhbmNlc1dpdGhTaGFkb3dUcmVlRWxlbWVudHMoTm9kZSogdGFyZ2V0
LCBTVkdFbGVtZW50SW5zdGFuY2UqIHRhcmdldEluc3RhbmNlKTsKLSAgICAgICAgU1ZHRWxlbWVu
dEluc3RhbmNlKiBpbnN0YW5jZUZvclNoYWRvd1RyZWVFbGVtZW50KE5vZGUqIGVsZW1lbnQsIFNW
R0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0OwotCi0gICAgICAgIHZvaWQgdHJhbnNm
ZXJVc2VBdHRyaWJ1dGVzVG9SZXBsYWNlZEVsZW1lbnQoU1ZHRWxlbWVudCogZnJvbSwgU1ZHRWxl
bWVudCogdG8pIGNvbnN0OwotICAgICAgICB2b2lkIHRyYW5zZmVyRXZlbnRMaXN0ZW5lcnNUb1No
YWRvd1RyZWUoU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXQpOwotCi0gICAgICAgIHZvaWQgdXBk
YXRlQ29udGFpbmVyT2Zmc2V0cygpOwotICAgICAgICB2b2lkIHVwZGF0ZUNvbnRhaW5lclNpemVz
KCk7Ci0KLSAgICAgICAgYm9vbCBtX3VwZGF0ZXNCbG9ja2VkOwotICAgICAgICBib29sIG1faXNQ
ZW5kaW5nUmVzb3VyY2U7Ci0gICAgICAgIGJvb2wgbV9uZWVkc1NoYWRvd1RyZWVSZWNyZWF0aW9u
OwotICAgICAgICBTdHJpbmcgbV9yZXNvdXJjZUlkOwotICAgICAgICBSZWZQdHI8U1ZHRWxlbWVu
dEluc3RhbmNlPiBtX3RhcmdldEVsZW1lbnRJbnN0YW5jZTsKLSAgICB9OworICAgIC8vICJUcmVl
IGNvbm5lY3RvciIgCisgICAgdm9pZCBhc3NvY2lhdGVJbnN0YW5jZXNXaXRoU2hhZG93VHJlZUVs
ZW1lbnRzKE5vZGUqIHRhcmdldCwgU1ZHRWxlbWVudEluc3RhbmNlKiB0YXJnZXRJbnN0YW5jZSk7
CisgICAgU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZUZvclNoYWRvd1RyZWVFbGVtZW50KE5v
ZGUqIGVsZW1lbnQsIFNWR0VsZW1lbnRJbnN0YW5jZSogaW5zdGFuY2UpIGNvbnN0OworCisgICAg
dm9pZCB0cmFuc2ZlclVzZUF0dHJpYnV0ZXNUb1JlcGxhY2VkRWxlbWVudChTVkdFbGVtZW50KiBm
cm9tLCBTVkdFbGVtZW50KiB0bykgY29uc3Q7CisgICAgdm9pZCB0cmFuc2ZlckV2ZW50TGlzdGVu
ZXJzVG9TaGFkb3dUcmVlKFNWR0VsZW1lbnRJbnN0YW5jZSogdGFyZ2V0KTsKKworICAgIHZvaWQg
dXBkYXRlQ29udGFpbmVyT2Zmc2V0cygpOworICAgIHZvaWQgdXBkYXRlQ29udGFpbmVyU2l6ZXMo
KTsKKworICAgIC8vIEFuaW1hdGVkIHByb3BlcnR5IGRlY2xhcmF0aW9ucworICAgIERFQ0xBUkVf
QU5JTUFURURfTEVOR1RIKFgsIHgpCisgICAgREVDTEFSRV9BTklNQVRFRF9MRU5HVEgoWSwgeSkK
KyAgICBERUNMQVJFX0FOSU1BVEVEX0xFTkdUSChXaWR0aCwgd2lkdGgpCisgICAgREVDTEFSRV9B
TklNQVRFRF9MRU5HVEgoSGVpZ2h0LCBoZWlnaHQpCisKKyAgICAvLyBTVkdVUklSZWZlcmVuY2UK
KyAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9QRVJUWV9ORVcoU1ZHVXNlRWxlbWVudCwg
WExpbmtOYW1lczo6aHJlZkF0dHIsIFN0cmluZywgSHJlZiwgaHJlZikKKworICAgIC8vIFNWR0V4
dGVybmFsUmVzb3VyY2VzUmVxdWlyZWQKKyAgICBERUNMQVJFX0FOSU1BVEVEX1NUQVRJQ19QUk9Q
RVJUWV9ORVcoU1ZHVXNlRWxlbWVudCwgU1ZHTmFtZXM6OmV4dGVybmFsUmVzb3VyY2VzUmVxdWly
ZWRBdHRyLCBib29sLCBFeHRlcm5hbFJlc291cmNlc1JlcXVpcmVkLCBleHRlcm5hbFJlc291cmNl
c1JlcXVpcmVkKQorCisgICAgYm9vbCBtX3VwZGF0ZXNCbG9ja2VkOworICAgIGJvb2wgbV9pc1Bl
bmRpbmdSZXNvdXJjZTsKKyAgICBib29sIG1fbmVlZHNTaGFkb3dUcmVlUmVjcmVhdGlvbjsKKyAg
ICBTdHJpbmcgbV9yZXNvdXJjZUlkOworICAgIFJlZlB0cjxTVkdFbGVtZW50SW5zdGFuY2U+IG1f
dGFyZ2V0RWxlbWVudEluc3RhbmNlOworfTsKIAogfQogCkluZGV4OiBXZWJDb3JlL3N2Zy9wcm9w
ZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaAkocmV2aXNpb24gNzMw
MTApCisrKyBXZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3Mu
aAkod29ya2luZyBjb3B5KQpAQCAtMTY3LDYgKzE2Nyw0NyBAQCB2b2lkIGRldGFjaEFuaW1hdGVk
IyNVcHBlclByb3BlcnR5IyNMaXN0CiAgICAgc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0UHJvcGVydHlUZWFyT2ZmKj4od3JhcHBlciktPmRldGFjaExpc3RXcmFwcGVycyhuZXdM
aXN0U2l6ZSk7IFwKIH0KIAorLy8gRklYTUU6IFJlbW92ZSBhbGwgbWFjcm9zIGFib3ZlLCBvbmNl
IHRoZXNlIHR3byBiZWxvdyBhcmUgZGVwbG95ZWQgZXZlcnl3aGVyZS4KKworI2RlZmluZSBERUZJ
TkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJp
YnV0ZUlkZW50aWZpZXIsIFRlYXJPZmZUeXBlLCBQcm9wZXJ0eVR5cGUsIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpIFwKK3ZvaWQgT3duZXJUeXBlOjpzeW5jaHJvbml6ZSMjVXBwZXJQcm9w
ZXJ0eSgpIFwKK3sgXAorICAgIGlmICghbV8jI0xvd2VyUHJvcGVydHkuc2hvdWxkU3luY2hyb25p
emUpIFwKKyAgICAgICAgIHJldHVybjsgXAorICAgIEF0b21pY1N0cmluZyB2YWx1ZShTVkdQcm9w
ZXJ0eVRyYWl0czxQcm9wZXJ0eVR5cGU+Ojp0b1N0cmluZyhMb3dlclByb3BlcnR5IyNCYXNlVmFs
dWUoKSkpOyBcCisgICAgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQgPSBHZXRPd25lckVsZW1l
bnRGb3JUeXBlPE93bmVyVHlwZSwgSXNEZXJpdmVkRnJvbVNWR0VsZW1lbnQ8T3duZXJUeXBlPjo6
dmFsdWU+Ojpvd25lckVsZW1lbnQodGhpcyk7IFwKKyAgICBTVkdBbmltYXRlZFByb3BlcnR5U3lu
Y2hyb25pemVyPElzRGVyaXZlZEZyb21TVkdFbGVtZW50PE93bmVyVHlwZT46OnZhbHVlPjo6c3lu
Y2hyb25pemUoY29udGV4dEVsZW1lbnQsIERPTUF0dHJpYnV0ZSwgdmFsdWUpOyBcCit9IFwKK1wK
K1Bhc3NSZWZQdHI8VGVhck9mZlR5cGU+IE93bmVyVHlwZTo6TG93ZXJQcm9wZXJ0eSMjQW5pbWF0
ZWQoKSBcCit7IFwKKyAgICBtXyMjTG93ZXJQcm9wZXJ0eS5zaG91bGRTeW5jaHJvbml6ZSA9IHRy
dWU7IFwKKyAgICBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCA9IEdldE93bmVyRWxlbWVudEZv
clR5cGU8T3duZXJUeXBlLCBJc0Rlcml2ZWRGcm9tU1ZHRWxlbWVudDxPd25lclR5cGU+Ojp2YWx1
ZT46Om93bmVyRWxlbWVudCh0aGlzKTsgXAorICAgIHJldHVybiBTVkdBbmltYXRlZFByb3BlcnR5
Ojpsb29rdXBPckNyZWF0ZVdyYXBwZXI8VGVhck9mZlR5cGUsIFByb3BlcnR5VHlwZT4oY29udGV4
dEVsZW1lbnQsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwgbV8jI0xv
d2VyUHJvcGVydHkudmFsdWUpOyBcCit9CisKKyNkZWZpbmUgREVDTEFSRV9BTklNQVRFRF9QUk9Q
RVJUWShUZWFyT2ZmVHlwZSwgUHJvcGVydHlUeXBlLCBVcHBlclByb3BlcnR5LCBMb3dlclByb3Bl
cnR5KSBcCitwdWJsaWM6IFwKK1Byb3BlcnR5VHlwZSYgTG93ZXJQcm9wZXJ0eSgpIGNvbnN0IFwK
K3sgXAorICAgIHJldHVybiBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZTsgXAorfSBcCitcCitQcm9w
ZXJ0eVR5cGUmIExvd2VyUHJvcGVydHkjI0Jhc2VWYWx1ZSgpIGNvbnN0IFwKK3sgXAorICAgIHJl
dHVybiBtXyMjTG93ZXJQcm9wZXJ0eS52YWx1ZTsgXAorfSBcCitcCit2b2lkIHNldCMjVXBwZXJQ
cm9wZXJ0eSMjQmFzZVZhbHVlKGNvbnN0IFByb3BlcnR5VHlwZSYgdHlwZSkgXAoreyBcCisgICAg
bV8jI0xvd2VyUHJvcGVydHkudmFsdWUgPSB0eXBlOyBcCit9IFwKK1wKK3ZvaWQgc3luY2hyb25p
emUjI1VwcGVyUHJvcGVydHkoKTsgXAorUGFzc1JlZlB0cjxUZWFyT2ZmVHlwZT4gTG93ZXJQcm9w
ZXJ0eSMjQW5pbWF0ZWQoKTsgXAorXAorcHJpdmF0ZTogXAorICAgIG11dGFibGUgU1ZHU3luY2hy
b25pemFibGVBbmltYXRlZFByb3BlcnR5PFByb3BlcnR5VHlwZT4gbV8jI0xvd2VyUHJvcGVydHk7
CiAKIH0KIAo=
</data>
<flag name="review"
          id="66037"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
      

    </bug>

</bugzilla>