<?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>131142</bug_id>
          
          <creation_ts>2014-04-02 20:17:37 -0700</creation_ts>
          <short_desc>Harden FilterOperation type casting</short_desc>
          <delta_ts>2014-05-22 21:36:16 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>133203</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Fraser (smfr)">simon.fraser</reporter>
          <assigned_to name="Simon Fraser (smfr)">simon.fraser</assigned_to>
          <cc>allan.jensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>996964</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-02 20:17:37 -0700</bug_when>
    <thetext>Harden FilterOperation type casting</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996965</commentid>
    <comment_count>1</comment_count>
      <attachid>228455</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-02 20:22:48 -0700</bug_when>
    <thetext>Created attachment 228455
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>996966</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-04-02 20:23:46 -0700</bug_when>
    <thetext>Attachment 228455 did not pass style-queue:


ERROR: Source/WebCore/platform/graphics/filters/FilterOperation.h:66:  enum members should use InterCaps with an initial capital letter.  [readability/enum_casing] [4]
Total errors found: 1 in 14 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997295</commentid>
    <comment_count>3</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2014-04-03 13:58:34 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/166741</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>997351</commentid>
    <comment_count>4</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2014-04-03 16:04:11 -0700</bug_when>
    <thetext>&lt;rdar://problem/15426741&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>228455</attachid>
            <date>2014-04-02 20:22:48 -0700</date>
            <delta_ts>2014-04-03 11:00:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-131142-20140402202228.patch</filename>
            <type>text/plain</type>
            <size>57413</size>
            <attacher name="Simon Fraser (smfr)">simon.fraser</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY2NjI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmFhMTkwYzU0OWU1OTRj
NWU0Nzc5MGQxMzNhZWRhMjk0ZTAzZDY3YS4uZmY3NDU0ZGYyYTM4Y2ViNWQwODYwOTE1NjIwNTZj
OGNmZTUyZTI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDE0LTA0LTAyICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgorCisgICAgICAgIEhhcmRlbiBGaWx0
ZXJPcGVyYXRpb24gdHlwZSBjYXN0aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMzExNDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uIGhhZCBhbiBlcnJvci1wcm9u
ZSBiZWhhdmlvciB3aGVyZSBpdCBzZXQgdGhlIGJhc2UgY2xhc3MKKyAgICAgICAgT3BlcmF0aW9u
VHlwZSB0byB0aGUgdHlwZSBvZiBzb21lIG90aGVyIGZpbHRlciBjbGFzcywgYnV0IG92ZXJyb2Rl
IGlzRGVmYXVsdCgpLiAKKyAgICAgICAgVGhpcyBtYWRlIGl0IHZlcnkgZWFzeSB0byB3cml0ZSBp
bmNvcnJlY3QgY29kZSB0aGF0IGNhc3RlZCBpbmNvcnJlY3RseSBiYXNlZCBvbiB0eXBlKCkuCisg
ICAgICAgIAorICAgICAgICBGaXggYnkgbWFraW5nIGFkZGluZyBhIERFRkFVTFQgZmlsdGVyIG9w
ZXJhdGlvbiB0eXBlLCBhbmQgc3RvcmluZyB0aGUgcmVwcmVzZW50ZWQKKyAgICAgICAgdHlwZSBv
biBEZWZhdWx0RmlsdGVyT3BlcmF0aW9uKCkuCisgICAgICAgIAorICAgICAgICBBbHNvIHJlbW92
ZSB0aGUgT3BlcmF0aW9uVHlwZSBhcmd1bWVudCBmb3IgY29uc3RydWN0b3JzIG9mIEZpbHRlck9w
ZXJhdGlvbnMgdGhhdAorICAgICAgICBjYW4gb25seSBiZSBvZiBvbmUgdHlwZSwgdG8gYXZvaWQg
cG9zc2libGUgbWlzdGFrZXMuCisgICAgICAgIAorICAgICAgICBNYWtlIHRoZSB0eXBlIGNhc3Qg
bWFjcm9zIGEgYml0IG1vcmUgbm9ybWFsLCBhbmQgdXNlIHRoZW0gaW4gYSBmZXcgcGxhY2VzLgor
ICAgICAgICAKKyAgICAgICAgRml4ZWQgUGxhdGZvcm1DQUZpbHRlcnNNYWMgdG8gaGFuZGxlIHRo
ZSBkZWZhdWx0IGZpbHRlciBjYXNlIG1vcmUgY2xlYW5seS4KKworICAgICAgICAqIFdlYkNvcmUu
ZXhwLmluOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIp
OgorICAgICAgICAqIGNzcy9TdHlsZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2NhL1BsYXRmb3JtQ0FGaWx0ZXJzLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FGaWx0ZXJzTWFjLm1tOgorICAgICAgICAoUGxhdGZvcm1D
QUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKToKKyAgICAgICAgKFBsYXRmb3JtQ0FG
aWx0ZXJzOjpjb2xvck1hdHJpeFZhbHVlRm9yRmlsdGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWZhdWx0RmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlJl
ZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PSk6CisgICAg
ICAgIChXZWJDb3JlOjpCbHVyRmlsdGVyT3BlcmF0aW9uOjpvcGVyYXRvcj09KToKKyAgICAgICAg
KFdlYkNvcmU6OkJsdXJGaWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29y
ZTo6RHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmg6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJPcGVyYXRpb246OmJsZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlv
bjo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246OmlzQmFzaWNDb2xv
ck1hdHJpeEZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJPcGVyYXRp
b246OmlzQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb246OmlzU2FtZVR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6
RGVmYXVsdEZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkRlZmF1
bHRGaWx0ZXJPcGVyYXRpb246OnJlcHJlc2VudGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpE
ZWZhdWx0RmlsdGVyT3BlcmF0aW9uOjpEZWZhdWx0RmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpC
bHVyRmlsdGVyT3BlcmF0aW9uOjpCbHVyRmlsdGVyT3BlcmF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uOjpEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlck9wZXJhdGlvbjo6aXNEZWZhdWx0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbnMuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyT3BlcmF0aW9uczo6b3V0c2V0cyk6CisgICAgICAg
ICogcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
ckxheWVyRmlsdGVySW5mby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllcjo6Rmls
dGVySW5mbzo6dXBkYXRlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cyk6CisKIDIwMTQtMDQtMDEgIFRp
bW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBIZWFw
UHJvZmlsZXIgZnJvbSB0aGUgV2ViIEluc3BlY3RvciBwcm90b2NvbC4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCAw
YTE2ZmZiZTI0OGQ1MDM4MjBlY2RhNWFkOTdkM2I1NmJiODRkNzhiLi5kMmM4M2I3MjEyOWMzNTVm
MzllODUzNWUyNzAxMjZiNWE1M2Y3NmZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIw
MTQtMDQtMDIgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CisKKyAgICAg
ICAgSGFyZGVuIEZpbHRlck9wZXJhdGlvbiB0eXBlIGNhc3RpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzMTE0MgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERlZmF1bHRGaWx0ZXJPcGVyYXRpb24gaGFk
IGFuIGVycm9yLXByb25lIGJlaGF2aW9yIHdoZXJlIGl0IHNldCB0aGUgYmFzZSBjbGFzcworICAg
ICAgICBPcGVyYXRpb25UeXBlIHRvIHRoZSB0eXBlIG9mIHNvbWUgb3RoZXIgZmlsdGVyIGNsYXNz
LCBidXQgb3ZlcnJvZGUgaXNEZWZhdWx0KCkuIAorICAgICAgICBUaGlzIG1hZGUgaXQgdmVyeSBl
YXN5IHRvIHdyaXRlIGluY29ycmVjdCBjb2RlIHRoYXQgY2FzdGVkIGluY29ycmVjdGx5IGJhc2Vk
IG9uIHR5cGUoKS4KKyAgICAgICAgCisgICAgICAgIEZpeCBieSBtYWtpbmcgYWRkaW5nIGEgREVG
QVVMVCBmaWx0ZXIgb3BlcmF0aW9uIHR5cGUsIGFuZCBzdG9yaW5nIHRoZSByZXByZXNlbnRlZAor
ICAgICAgICB0eXBlIG9uIERlZmF1bHRGaWx0ZXJPcGVyYXRpb24oKS4KKyAgICAgICAgCisgICAg
ICAgIEFsc28gcmVtb3ZlIHRoZSBPcGVyYXRpb25UeXBlIGFyZ3VtZW50IGZvciBjb25zdHJ1Y3Rv
cnMgb2YgRmlsdGVyT3BlcmF0aW9ucyB0aGF0CisgICAgICAgIGNhbiBvbmx5IGJlIG9mIG9uZSB0
eXBlLCB0byBhdm9pZCBwb3NzaWJsZSBtaXN0YWtlcy4KKyAgICAgICAgCisgICAgICAgIE1ha2Ug
dGhlIHR5cGUgY2FzdCBtYWNyb3MgYSBiaXQgbW9yZSBub3JtYWwsIGFuZCB1c2UgdGhlbSBpbiBh
IGZldyBwbGFjZXMuCisgICAgICAgIAorICAgICAgICBGaXhlZCBQbGF0Zm9ybUNBRmlsdGVyc01h
YyB0byBoYW5kbGUgdGhlIGRlZmF1bHQgZmlsdGVyIGNhc2UgbW9yZSBjbGVhbmx5LgorCisgICAg
ICAgICogU2hhcmVkL1dlYkNvcmVBcmd1bWVudENvZGVycy5jcHA6CisgICAgICAgIChJUEM6OmVu
Y29kZUZpbHRlck9wZXJhdGlvbik6CisgICAgICAgIChJUEM6OmRlY29kZUZpbHRlck9wZXJhdGlv
bik6CisgICAgICAgICogU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbToK
KyAgICAgICAgKFdlYktpdDo6UmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PCk6
CisKIDIwMTQtMDQtMDEgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAog
ICAgICAgICBTdHViIG91dCBtb3JlIFdLTmF2aWdhdGlvbiBwcm9wZXJ0aWVzCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
ZXhwLmluCmluZGV4IDAxYmVmMDI2MDYzMGU3NmFkOGYwNDFlNDBjNGRiYWVlNzBiZWRkZTguLmUx
YTAzZjc2N2QzZmEzNDA3ZmUwMmViNDFiZjA1YmRkMTNkMWU4NTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhw
LmluCkBAIC05NTIsNyArOTUyLDcgQEAgX19aTjdXZWJDb3JlMjRGcmFtZURlc3RydWN0aW9uT2Jz
ZXJ2ZXIxNHdpbGxEZXRhY2hQYWdlRXYKIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9i
c2VydmVyQzJFUE5TXzVGcmFtZUUKIF9fWk43V2ViQ29yZTI0RnJhbWVEZXN0cnVjdGlvbk9ic2Vy
dmVyRDJFdgogX19aTjdXZWJDb3JlMjRJbW11dGFibGVTdHlsZVByb3BlcnRpZXNEMUV2Ci1fX1pO
N1dlYkNvcmUyNFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbkMxRVJLTjNXVEY2U3RyaW5nRVM0X05T
XzE1RmlsdGVyT3BlcmF0aW9uMTNPcGVyYXRpb25UeXBlRQorX19aTjdXZWJDb3JlMjRSZWZlcmVu
Y2VGaWx0ZXJPcGVyYXRpb25DMUVSS04zV1RGNlN0cmluZ0VTNF8KIF9fWk43V2ViQ29yZTI0Y3Jl
YXRlRnJhZ21lbnRGcm9tTWFya3VwRVJOU184RG9jdW1lbnRFUktOM1dURjZTdHJpbmdFUzVfTlNf
MTlQYXJzZXJDb250ZW50UG9saWN5RQogX19aTjdXZWJDb3JlMjRkZWNvZGVVUkxFc2NhcGVTZXF1
ZW5jZXNFUktOM1dURjZTdHJpbmdFCiBfX1pON1dlYkNvcmUyNGRlbGV0ZUNvb2tpZXNGb3JIb3N0
bmFtZUVSS05TXzIxTmV0d29ya1N0b3JhZ2VTZXNzaW9uRVJLTjNXVEY2U3RyaW5nRQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAppbmRl
eCBhNjIxNTQ0ZTgxYWEyYmM3ZDc3YWI4MDEyNTUwNzcwZjY0ZTlmNzc5Li45ZGM5YTc2NDk2MzY3
YTQzY2ZmOGYxN2FmZjczZjgzMTJhODExYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmNwcApAQCAtODc4LDY3ICs4NzgsNjcgQEAg
UGFzc1JlZjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JGaWx0ZXIo
Y29uc3QgUmVuZGVyU3R5bGUqIHN0eWwKICAgICAgICAgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXJP
cGVyYXRpb24gPSAoKml0KS5nZXQoKTsKICAgICAgICAgc3dpdGNoIChmaWx0ZXJPcGVyYXRpb24t
PnR5cGUoKSkgewogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFOiB7Ci0g
ICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIHJlZmVyZW5jZU9wZXJhdGlvbiA9
IHN0YXRpY19jYXN0PFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7
CisgICAgICAgICAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIHJlZmVyZW5jZU9wZXJhdGlv
biA9IHRvUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAg
ICAgICBmaWx0ZXJWYWx1ZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjcmVhdGUoV2ViS2l0Q1NT
RmlsdGVyVmFsdWU6OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBmaWx0
ZXJWYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKHJlZmVyZW5jZU9wZXJh
dGlvbi0+dXJsKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVVJJKSk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxF
OiB7Ci0gICAgICAgICAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1h
dHJpeE9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRp
b24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgQmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24gPSB0b0Jhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGZpbHRlclZhbHVlID0g
V2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmNyZWF0ZShXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6R3JheXNj
YWxlRmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGZpbHRlclZhbHVlLT5hcHBlbmQoY3Nz
VmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgpLCBD
U1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOiB7Ci0gICAgICAgICAg
ICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9
IHN0YXRpY19jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVy
YXRpb24pOworICAgICAgICAgICAgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogY29s
b3JNYXRyaXhPcGVyYXRpb24gPSB0b0Jhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oZmls
dGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGZpbHRlclZhbHVlID0gV2ViS2l0Q1NTRmlsdGVy
VmFsdWU6OmNyZWF0ZShXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6U2VwaWFGaWx0ZXJPcGVyYXRpb24p
OwogICAgICAgICAgICAgZmlsdGVyVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVW
YWx1ZShjb2xvck1hdHJpeE9wZXJhdGlvbi0+YW1vdW50KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfTlVNQkVSKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNl
IEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6IHsKLSAgICAgICAgICAgIEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFz
aWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAg
ICAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlv
biA9IHRvQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihmaWx0ZXJPcGVyYXRpb24pOwog
ICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Y3JlYXRlKFdl
YktpdENTU0ZpbHRlclZhbHVlOjpTYXR1cmF0ZUZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAg
ICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGNvbG9yTWF0
cml4T3BlcmF0aW9uLT5hbW91bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0
aW9uOjpIVUVfUk9UQVRFOiB7Ci0gICAgICAgICAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3Bl
cmF0aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24gPSB0b0Jhc2lj
Q29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAg
IGZpbHRlclZhbHVlID0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmNyZWF0ZShXZWJLaXRDU1NGaWx0
ZXJWYWx1ZTo6SHVlUm90YXRlRmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGZpbHRlclZh
bHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoY29sb3JNYXRyaXhPcGVyYXRp
b24tPmFtb3VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0RFRykpOwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVDog
ewotICAgICAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29t
cG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0
aW9uID0gdG9CYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGZpbHRlck9wZXJh
dGlvbik7CiAgICAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpj
cmVhdGUoV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OkludmVydEZpbHRlck9wZXJhdGlvbik7CiAgICAg
ICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGNv
bXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLT5hbW91bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19OVU1CRVIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7Ci0gICAgICAgICAgICBCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbiA9IHN0YXRp
Y19jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVy
YXRpb24pOworICAgICAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlv
biogY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSB0b0Jhc2ljQ29tcG9uZW50VHJhbnNmZXJG
aWx0ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGZpbHRlclZhbHVl
ID0gV2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmNyZWF0ZShXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6T3Bh
Y2l0eUZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGNz
c1ZhbHVlUG9vbCgpLmNyZWF0ZVZhbHVlKGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLT5hbW91
bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7
Ci0gICAgICAgICAgICBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBicmln
aHRuZXNzT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRl
ck9wZXJhdGlvbio+KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBCYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBicmlnaHRuZXNzT3BlcmF0aW9uID0gdG9CYXNpY0Nv
bXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAg
ICAgICBmaWx0ZXJWYWx1ZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjcmVhdGUoV2ViS2l0Q1NT
RmlsdGVyVmFsdWU6OkJyaWdodG5lc3NGaWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAgZmls
dGVyVmFsdWUtPmFwcGVuZChjc3NWYWx1ZVBvb2woKS5jcmVhdGVWYWx1ZShicmlnaHRuZXNzT3Bl
cmF0aW9uLT5hbW91bnQoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpD
T05UUkFTVDogewotICAgICAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJh
dGlvbiogY29udHJhc3RPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRyYW5z
ZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbnRyYXN0T3BlcmF0aW9uID0gdG9C
YXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGZpbHRlck9wZXJhdGlvbik7CiAg
ICAgICAgICAgICBmaWx0ZXJWYWx1ZSA9IFdlYktpdENTU0ZpbHRlclZhbHVlOjpjcmVhdGUoV2Vi
S2l0Q1NTRmlsdGVyVmFsdWU6OkNvbnRyYXN0RmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAg
IGZpbHRlclZhbHVlLT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUoY29udHJhc3RP
cGVyYXRpb24tPmFtb3VudCgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX05VTUJFUikpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkJMVVI6IHsKLSAgICAgICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24g
PSBzdGF0aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAg
ICAgICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24gPSB0b0JsdXJGaWx0
ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGZpbHRlclZhbHVlID0g
V2ViS2l0Q1NTRmlsdGVyVmFsdWU6OmNyZWF0ZShXZWJLaXRDU1NGaWx0ZXJWYWx1ZTo6Qmx1ckZp
bHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBmaWx0ZXJWYWx1ZS0+YXBwZW5kKGFkanVzdExl
bmd0aEZvclpvb20oYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCksIHN0eWxlLCBhZGp1c3Qp
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpEUk9QX1NIQURPVzogewotICAgICAgICAgICAgRHJvcFNoYWRvd0ZpbHRlck9wZXJh
dGlvbiogZHJvcFNoYWRvd09wZXJhdGlvbiA9IHN0YXRpY19jYXN0PERyb3BTaGFkb3dGaWx0ZXJP
cGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgRHJvcFNoYWRvd0ZpbHRl
ck9wZXJhdGlvbiogZHJvcFNoYWRvd09wZXJhdGlvbiA9IHRvRHJvcFNoYWRvd0ZpbHRlck9wZXJh
dGlvbihmaWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAgZmlsdGVyVmFsdWUgPSBXZWJLaXRD
U1NGaWx0ZXJWYWx1ZTo6Y3JlYXRlKFdlYktpdENTU0ZpbHRlclZhbHVlOjpEcm9wU2hhZG93Rmls
dGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIC8vIFdlIHdhbnQgb3VyIGNvbXB1dGVkIHN0eWxl
IHRvIGxvb2sgbGlrZSB0aGF0IG9mIGEgdGV4dCBzaGFkb3cgKGhhcyBuZWl0aGVyIHNwcmVhZCBu
b3IgaW5zZXQgc3R5bGUpLgogICAgICAgICAgICAgU2hhZG93RGF0YSBzaGFkb3dEYXRhID0gU2hh
ZG93RGF0YShkcm9wU2hhZG93T3BlcmF0aW9uLT5sb2NhdGlvbigpLCBkcm9wU2hhZG93T3BlcmF0
aW9uLT5zdGREZXZpYXRpb24oKSwgMCwgTm9ybWFsLCBmYWxzZSwgZHJvcFNoYWRvd09wZXJhdGlv
bi0+Y29sb3IoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNvbHZlci5jcHAKaW5kZXggNjljNjFl
NTRkYTRhOWQ0OTQ5ZDdmZjg2ZGViZmRmNTNmYjY0ODdjNy4uYzFkYTk0ZjQxZTUyYjcxOTViOTVh
NzhmYzBiMDJmZjBmMjk0MjFhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxl
UmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJlc29sdmVyLmNwcApA
QCAtMzM1OSw3ICszMzU5LDcgQEAgYm9vbCBTdHlsZVJlc29sdmVyOjpjcmVhdGVGaWx0ZXJPcGVy
YXRpb25zKENTU1ZhbHVlKiBpblZhbHVlLCBGaWx0ZXJPcGVyYXRpb25zJgogICAgICAgICAgICAg
U3RyaW5nIGNzc1VybCA9IHByaW1pdGl2ZVZhbHVlLmdldFN0cmluZ1ZhbHVlKCk7CiAgICAgICAg
ICAgICBVUkwgdXJsID0gbV9zdGF0ZS5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKGNzc1VybCk7CiAK
LSAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IG9wZXJhdGlvbiA9
IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRl
bnRpZmllcigpLCBvcGVyYXRpb25UeXBlKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZWZlcmVuY2VG
aWx0ZXJPcGVyYXRpb24+IG9wZXJhdGlvbiA9IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKGNzc1VybCwgdXJsLmZyYWdtZW50SWRlbnRpZmllcigpKTsKICAgICAgICAgICAgIGlmIChT
VkdVUklSZWZlcmVuY2U6OmlzRXh0ZXJuYWxVUklSZWZlcmVuY2UoY3NzVXJsLCBtX3N0YXRlLmRv
Y3VtZW50KCkpKQogICAgICAgICAgICAgICAgIHN0YXRlLmZpbHRlcnNXaXRoUGVuZGluZ1NWR0Rv
Y3VtZW50cygpLmFwcGVuZChvcGVyYXRpb24pOwogCkBAIC0zNDI3LDcgKzM0MjcsNyBAQCBib29s
IFN0eWxlUmVzb2x2ZXI6OmNyZWF0ZUZpbHRlck9wZXJhdGlvbnMoQ1NTVmFsdWUqIGluVmFsdWUs
IEZpbHRlck9wZXJhdGlvbnMmCiAgICAgICAgICAgICBpZiAoc3RkRGV2aWF0aW9uLmlzVW5kZWZp
bmVkKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgICAgICAgICBvcGVy
YXRpb25zLm9wZXJhdGlvbnMoKS5hcHBlbmQoQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHN0
ZERldmlhdGlvbiwgb3BlcmF0aW9uVHlwZSkpOworICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVy
YXRpb25zKCkuYXBwZW5kKEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShzdGREZXZpYXRpb24p
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgV2ViS2l0Q1NT
RmlsdGVyVmFsdWU6OkRyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246IHsKQEAgLTM0NTMsNyArMzQ1
Myw3IEBAIGJvb2wgU3R5bGVSZXNvbHZlcjo6Y3JlYXRlRmlsdGVyT3BlcmF0aW9ucyhDU1NWYWx1
ZSogaW5WYWx1ZSwgRmlsdGVyT3BlcmF0aW9ucyYKICAgICAgICAgICAgIGlmIChpdGVtLT5jb2xv
cikKICAgICAgICAgICAgICAgICBjb2xvciA9IGNvbG9yRnJvbVByaW1pdGl2ZVZhbHVlKGl0ZW0t
PmNvbG9yLmdldCgpKTsKIAotICAgICAgICAgICAgb3BlcmF0aW9ucy5vcGVyYXRpb25zKCkuYXBw
ZW5kKERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShsb2NhdGlvbiwgYmx1ciwgY29s
b3IuaXNWYWxpZCgpID8gY29sb3IgOiBDb2xvcjo6dHJhbnNwYXJlbnQsIG9wZXJhdGlvblR5cGUp
KTsKKyAgICAgICAgICAgIG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmFwcGVuZChEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uOjpjcmVhdGUobG9jYXRpb24sIGJsdXIsIGNvbG9yLmlzVmFsaWQoKSA/
IGNvbG9yIDogQ29sb3I6OnRyYW5zcGFyZW50KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIFdlYktpdENTU0ZpbHRlclZhbHVlOjpVbmtub3duRmlsdGVyT3Bl
cmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Ev
UGxhdGZvcm1DQUZpbHRlcnMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nh
L1BsYXRmb3JtQ0FGaWx0ZXJzLmgKaW5kZXggNjVkZjBkMzVlMzEwYzNhZjI3YmMxZDEzNzQ0NWFk
MTNkOWJhOWQyMC4uZDBhNGYwZGY4YTlmZDgzYzdkNTIwODNmZWE2NTI0NTlhYzg4Yjk5NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvUGxhdGZvcm1DQUZp
bHRlcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9QbGF0Zm9y
bUNBRmlsdGVycy5oCkBAIC01Nyw3ICs1Nyw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWZkZWYg
VVNFX0NBX0ZJTFRFUlMKLSAgICBzdGF0aWMgUmV0YWluUHRyPE5TVmFsdWU+IGNvbG9yTWF0cml4
VmFsdWVGb3JGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcmF0aW9uJik7CisgICAgLy8gQSBudWxsIG9w
ZXJhdGlvbiBpbmRpY2F0ZXMgdGhhdCB3ZSBzaG91bGQgbWFrZSBhICJuby1vcCIgZmlsdGVyIG9m
IHRoZSBnaXZlbiB0eXBlLgorICAgIHN0YXRpYyBSZXRhaW5QdHI8TlNWYWx1ZT4gY29sb3JNYXRy
aXhWYWx1ZUZvckZpbHRlcihGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUsIGNvbnN0IEZp
bHRlck9wZXJhdGlvbiopOwogI2VuZGlmCiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUZpbHRlcnNNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYS9tYWMvUGxhdGZvcm1DQUZpbHRlcnNNYWMu
bW0KaW5kZXggY2FlNjExZGNhZjk0MzRkMTgwMTFjNjMzMDgxZGQxM2M5OGUxY2Y1ZC4uMGQwYzg2
YWU0MWJlOTI1M2I0YWJhYTY0ZmJmYmQxMWFhYjgyZDMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2EvbWFjL1BsYXRmb3JtQ0FGaWx0ZXJzTWFjLm1tCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhL21hYy9QbGF0Zm9ybUNBRmls
dGVyc01hYy5tbQpAQCAtNzYsNiArNzYsOSBAQCB2b2lkIFBsYXRmb3JtQ0FGaWx0ZXJzOjpzZXRG
aWx0ZXJzT25MYXllcihQbGF0Zm9ybUxheWVyKiBsYXllciwgY29uc3QgRmlsdGVyT3BlcgogICAg
ICAgICBTdHJpbmcgZmlsdGVyTmFtZSA9IFN0cmluZzo6Zm9ybWF0KCJmaWx0ZXJfJWQiLCBpKTsK
ICAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVyYXRpb24gPSBmaWx0ZXJz
LmF0KGkpOwogICAgICAgICBzd2l0Y2ggKGZpbHRlck9wZXJhdGlvbi0+dHlwZSgpKSB7CisgICAg
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpERUZBVUxUOgorICAgICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBGaWx0ZXJPcGVy
YXRpb246OkRST1BfU0hBRE9XOiB7CiAgICAgICAgICAgICAvLyBGSVhNRTogRm9yIG5vdyBhc3N1
bWUgZHJvcCBzaGFkb3cgaXMgdGhlIGxhc3QgZmlsdGVyLCBwdXQgaXQgb24gdGhlIGxheWVyLgog
ICAgICAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzEwOTU5OTY5PiBIYW5kbGUgY2FzZSB3aGVy
ZSBkcm9wLXNoYWRvdyBpcyBub3QgdGhlIGxhc3QgZmlsdGVyLgpAQCAtMTAxLDcgKzEwNCw3IEBA
IHZvaWQgUGxhdGZvcm1DQUZpbHRlcnM6OnNldEZpbHRlcnNPbkxheWVyKFBsYXRmb3JtTGF5ZXIq
IGxheWVyLCBjb25zdCBGaWx0ZXJPcGVyCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQog
ICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0VQSUE6IHsKLSAgICAgICAgICAgIFJldGFp
blB0cjxOU1ZhbHVlPiBjb2xvck1hdHJpeFZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6OmNvbG9y
TWF0cml4VmFsdWVGb3JGaWx0ZXIoKmZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBSZXRh
aW5QdHI8TlNWYWx1ZT4gY29sb3JNYXRyaXhWYWx1ZSA9IFBsYXRmb3JtQ0FGaWx0ZXJzOjpjb2xv
ck1hdHJpeFZhbHVlRm9yRmlsdGVyKGZpbHRlck9wZXJhdGlvbi0+dHlwZSgpLCBmaWx0ZXJPcGVy
YXRpb24pOwogICAgICAgICAgICAgQ0FGaWx0ZXIgKmZpbHRlciA9IFtDQUZpbHRlciBmaWx0ZXJX
aXRoVHlwZTprQ0FGaWx0ZXJDb2xvck1hdHJpeF07CiAgICAgICAgICAgICBbZmlsdGVyIHNldFZh
bHVlOmNvbG9yTWF0cml4VmFsdWUuZ2V0KCkgZm9yS2V5OkAiaW5wdXRDb2xvck1hdHJpeCJdOwog
ICAgICAgICAgICAgW2ZpbHRlciBzZXROYW1lOmZpbHRlck5hbWVdOwpAQCAtMTI2LDcgKzEyOSw3
IEBAIHZvaWQgUGxhdGZvcm1DQUZpbHRlcnM6OnNldEZpbHRlcnNPbkxheWVyKFBsYXRmb3JtTGF5
ZXIqIGxheWVyLCBjb25zdCBGaWx0ZXJPcGVyCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6SU5WRVJUOiB7Ci0gICAgICAgICAgICBS
ZXRhaW5QdHI8TlNWYWx1ZT4gY29sb3JNYXRyaXhWYWx1ZSA9IFBsYXRmb3JtQ0FGaWx0ZXJzOjpj
b2xvck1hdHJpeFZhbHVlRm9yRmlsdGVyKCpmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAg
UmV0YWluUHRyPE5TVmFsdWU+IGNvbG9yTWF0cml4VmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6
Y29sb3JNYXRyaXhWYWx1ZUZvckZpbHRlcihmaWx0ZXJPcGVyYXRpb24tPnR5cGUoKSwgZmlsdGVy
T3BlcmF0aW9uKTsKICAgICAgICAgICAgIENBRmlsdGVyICpmaWx0ZXIgPSBbQ0FGaWx0ZXIgZmls
dGVyV2l0aFR5cGU6a0NBRmlsdGVyQ29sb3JNYXRyaXhdOwogICAgICAgICAgICAgW2ZpbHRlciBz
ZXRWYWx1ZTpjb2xvck1hdHJpeFZhbHVlLmdldCgpIGZvcktleTpAImlucHV0Q29sb3JNYXRyaXgi
XTsKICAgICAgICAgICAgIFtmaWx0ZXIgc2V0TmFtZTpmaWx0ZXJOYW1lXTsKQEAgLTEzNCw3ICsx
MzcsNyBAQCB2b2lkIFBsYXRmb3JtQ0FGaWx0ZXJzOjpzZXRGaWx0ZXJzT25MYXllcihQbGF0Zm9y
bUxheWVyKiBsYXllciwgY29uc3QgRmlsdGVyT3BlcgogICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok9QQUNJVFk6IHsKLSAgICAgICAg
ICAgIFJldGFpblB0cjxOU1ZhbHVlPiBjb2xvck1hdHJpeFZhbHVlID0gUGxhdGZvcm1DQUZpbHRl
cnM6OmNvbG9yTWF0cml4VmFsdWVGb3JGaWx0ZXIoKmZpbHRlck9wZXJhdGlvbik7CisgICAgICAg
ICAgICBSZXRhaW5QdHI8TlNWYWx1ZT4gY29sb3JNYXRyaXhWYWx1ZSA9IFBsYXRmb3JtQ0FGaWx0
ZXJzOjpjb2xvck1hdHJpeFZhbHVlRm9yRmlsdGVyKGZpbHRlck9wZXJhdGlvbi0+dHlwZSgpLCBm
aWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAgQ0FGaWx0ZXIgKmZpbHRlciA9IFtDQUZpbHRl
ciBmaWx0ZXJXaXRoVHlwZTprQ0FGaWx0ZXJDb2xvck1hdHJpeF07CiAgICAgICAgICAgICBbZmls
dGVyIHNldFZhbHVlOmNvbG9yTWF0cml4VmFsdWUuZ2V0KCkgZm9yS2V5OkAiaW5wdXRDb2xvck1h
dHJpeCJdOwogICAgICAgICAgICAgW2ZpbHRlciBzZXROYW1lOmZpbHRlck5hbWVdOwpAQCAtMTQy
LDcgKzE0NSw3IEBAIHZvaWQgUGxhdGZvcm1DQUZpbHRlcnM6OnNldEZpbHRlcnNPbkxheWVyKFBs
YXRmb3JtTGF5ZXIqIGxheWVyLCBjb25zdCBGaWx0ZXJPcGVyCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVTUzogewot
ICAgICAgICAgICAgUmV0YWluUHRyPE5TVmFsdWU+IGNvbG9yTWF0cml4VmFsdWUgPSBQbGF0Zm9y
bUNBRmlsdGVyczo6Y29sb3JNYXRyaXhWYWx1ZUZvckZpbHRlcigqZmlsdGVyT3BlcmF0aW9uKTsK
KyAgICAgICAgICAgIFJldGFpblB0cjxOU1ZhbHVlPiBjb2xvck1hdHJpeFZhbHVlID0gUGxhdGZv
cm1DQUZpbHRlcnM6OmNvbG9yTWF0cml4VmFsdWVGb3JGaWx0ZXIoZmlsdGVyT3BlcmF0aW9uLT50
eXBlKCksIGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBDQUZpbHRlciAqZmlsdGVyID0g
W0NBRmlsdGVyIGZpbHRlcldpdGhUeXBlOmtDQUZpbHRlckNvbG9yTWF0cml4XTsKICAgICAgICAg
ICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y29sb3JNYXRyaXhWYWx1ZS5nZXQoKSBmb3JLZXk6QCJpbnB1
dENvbG9yTWF0cml4Il07CiAgICAgICAgICAgICBbZmlsdGVyIHNldE5hbWU6ZmlsdGVyTmFtZV07
CkBAIC0xNTAsNyArMTUzLDcgQEAgdm9pZCBQbGF0Zm9ybUNBRmlsdGVyczo6c2V0RmlsdGVyc09u
TGF5ZXIoUGxhdGZvcm1MYXllciogbGF5ZXIsIGNvbnN0IEZpbHRlck9wZXIKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFT
VDogewotICAgICAgICAgICAgUmV0YWluUHRyPE5TVmFsdWU+IGNvbG9yTWF0cml4VmFsdWUgPSBQ
bGF0Zm9ybUNBRmlsdGVyczo6Y29sb3JNYXRyaXhWYWx1ZUZvckZpbHRlcigqZmlsdGVyT3BlcmF0
aW9uKTsKKyAgICAgICAgICAgIFJldGFpblB0cjxOU1ZhbHVlPiBjb2xvck1hdHJpeFZhbHVlID0g
UGxhdGZvcm1DQUZpbHRlcnM6OmNvbG9yTWF0cml4VmFsdWVGb3JGaWx0ZXIoZmlsdGVyT3BlcmF0
aW9uLT50eXBlKCksIGZpbHRlck9wZXJhdGlvbik7CiAgICAgICAgICAgICBDQUZpbHRlciAqZmls
dGVyID0gW0NBRmlsdGVyIGZpbHRlcldpdGhUeXBlOmtDQUZpbHRlckNvbG9yTWF0cml4XTsKICAg
ICAgICAgICAgIFtmaWx0ZXIgc2V0VmFsdWU6Y29sb3JNYXRyaXhWYWx1ZS5nZXQoKSBmb3JLZXk6
QCJpbnB1dENvbG9yTWF0cml4Il07CiAgICAgICAgICAgICBbZmlsdGVyIHNldE5hbWU6ZmlsdGVy
TmFtZV07CkBAIC0zMDIsMjYgKzMwNSwzMyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1D
QUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAg
IEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlID0gb3BlcmF0aW9uLT50eXBlKCk7
CiAgICAgUmV0YWluUHRyPGlkPiB2YWx1ZTsKICAgICAKKyAgICBpZiAodHlwZSA9PSBGaWx0ZXJP
cGVyYXRpb246OkRFRkFVTFQpIHsKKyAgICAgICAgdHlwZSA9IHRvRGVmYXVsdEZpbHRlck9wZXJh
dGlvbihvcGVyYXRpb24pLT5yZXByZXNlbnRlZFR5cGUoKTsKKyAgICAgICAgb3BlcmF0aW9uID0g
bnVsbHB0cjsKKyAgICB9CisgICAgCiAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBGaWx0
ZXJPcGVyYXRpb246OkRFRkFVTFQ6CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBicmVhazsKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxFOiB7CiAgICAg
ICAgIC8vIENJRmlsdGVyOiBpbnB1dEludGVuc2l0eQogICAgICAgICAvLyBDQUZpbHRlcjogaW5w
dXRBbW91bnQKICAgICAgICAgZG91YmxlIGFtb3VudCA9IDA7Ci0gICAgICAgIGlmICghb3BlcmF0
aW9uLT5pc0RlZmF1bHQoKSkgewotICAgICAgICAgICAgY29uc3QgQmFzaWNDb2xvck1hdHJpeEZp
bHRlck9wZXJhdGlvbiogb3AgPSB0b0Jhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24ob3Bl
cmF0aW9uKTsKLSAgICAgICAgICAgIGFtb3VudCA9IG9wLT5hbW91bnQoKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAob3BlcmF0aW9uKQorICAgICAgICAgICAgYW1vdW50ID0gdG9CYXNpY0NvbG9y
TWF0cml4RmlsdGVyT3BlcmF0aW9uKG9wZXJhdGlvbiktPmFtb3VudCgpOworICAgICAgICAKICAg
ICAgICAgdmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTphbW91bnRdOwogICAgICAg
ICBicmVhazsKICAgICB9CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOiB7CiAjaWYg
VVNFX0NBX0ZJTFRFUlMKICAgICAgICAgLy8gQ0FGaWx0ZXI6IGlucHV0Q29sb3JNYXRyaXgKLSAg
ICAgICAgdmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6Y29sb3JNYXRyaXhWYWx1ZUZvckZpbHRl
cigqb3BlcmF0aW9uKTsKKyAgICAgICAgdmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6Y29sb3JN
YXRyaXhWYWx1ZUZvckZpbHRlcih0eXBlLCBvcGVyYXRpb24pOwogI2Vsc2UKICAgICAgICAgLy8g
Q0lGaWx0ZXI6IGlucHV0UlZlY3RvciwgaW5wdXRHVmVjdG9yLCBpbnB1dEJWZWN0b3IKICAgICAg
ICAgZG91YmxlIGFtb3VudCA9IDA7Ci0gICAgICAgIGlmICghb3BlcmF0aW9uLT5pc0RlZmF1bHQo
KSkgeworICAgICAgICBpZiAob3BlcmF0aW9uKSB7CiAgICAgICAgICAgICBjb25zdCBCYXNpY0Nv
bG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBvcCA9IHRvQmFzaWNDb2xvck1hdHJpeEZpbHRlck9w
ZXJhdGlvbihvcGVyYXRpb24pOwogICAgICAgICAgICAgYW1vdW50ID0gb3AtPmFtb3VudCgpOwog
ICAgICAgICB9CkBAIC0zNDYsMTAgKzM1Niw4IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9y
bUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAg
ICAgICAgIC8vIENJRmlsdGVyOiBpbnB1dFNhdHVyYXRpb24KICAgICAgICAgLy8gQ0FGaWx0ZXI6
IGlucHV0QW1vdW50CiAgICAgICAgIGRvdWJsZSBhbW91bnQgPSAxOwotICAgICAgICBpZiAoIW9w
ZXJhdGlvbi0+aXNEZWZhdWx0KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IEJhc2ljQ29sb3JNYXRy
aXhGaWx0ZXJPcGVyYXRpb24qIG9wID0gdG9CYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9u
KG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBhbW91bnQgPSBvcC0+YW1vdW50KCk7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKG9wZXJhdGlvbikKKyAgICAgICAgICAgIGFtb3VudCA9IHRvQmFzaWND
b2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihvcGVyYXRpb24pLT5hbW91bnQoKTsKICAgICAgICAg
CiAgICAgICAgIHZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50XTsKICAg
ICAgICAgYnJlYWs7CkBAIC0zNTgsMTAgKzM2Niw5IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0
Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0
CiAgICAgICAgIC8vIEh1ZSByb3RhdGUgQ0lGaWx0ZXI6IGlucHV0QW5nbGUKICAgICAgICAgLy8g
SHVlIHJvdGF0ZSBDQUZpbHRlcjogaW5wdXRBbmdsZQogICAgICAgICBkb3VibGUgYW1vdW50ID0g
MDsKLSAgICAgICAgaWYgKCFvcGVyYXRpb24tPmlzRGVmYXVsdCgpKSB7Ci0gICAgICAgICAgICBj
b25zdCBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBvcCA9IHRvQmFzaWNDb2xvck1h
dHJpeEZpbHRlck9wZXJhdGlvbihvcGVyYXRpb24pOwotICAgICAgICAgICAgYW1vdW50ID0gb3At
PmFtb3VudCgpOwotICAgICAgICB9CisgICAgICAgIGlmIChvcGVyYXRpb24pCisgICAgICAgICAg
ICBhbW91bnQgPSB0b0Jhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24ob3BlcmF0aW9uKS0+
YW1vdW50KCk7CisgICAgICAgIAogICAgICAgICBhbW91bnQgPSBkZWcycmFkKGFtb3VudCk7CiAg
ICAgICAgIHZhbHVlID0gW05TTnVtYmVyIG51bWJlcldpdGhEb3VibGU6YW1vdW50XTsKICAgICAg
ICAgYnJlYWs7CkBAIC0zNjksMTUgKzM3NiwxMyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZv
cm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAog
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKICNpZiBVU0VfQ0FfRklMVEVSUwog
ICAgICAgICAvLyBDQUZpbHRlcjogaW5wdXRDb2xvck1hdHJpeAotICAgICAgICB2YWx1ZSA9IFBs
YXRmb3JtQ0FGaWx0ZXJzOjpjb2xvck1hdHJpeFZhbHVlRm9yRmlsdGVyKCpvcGVyYXRpb24pOwor
ICAgICAgICB2YWx1ZSA9IFBsYXRmb3JtQ0FGaWx0ZXJzOjpjb2xvck1hdHJpeFZhbHVlRm9yRmls
dGVyKHR5cGUsIG9wZXJhdGlvbik7CiAjZWxzZQogICAgICAgICAvLyBDSUZpbHRlcjogaW5wdXRS
VmVjdG9yLCBpbnB1dEdWZWN0b3IsIGlucHV0QlZlY3RvciwgaW5wdXRCaWFzVmVjdG9yCiAgICAg
ICAgIGRvdWJsZSBhbW91bnQgPSAwOwotICAgICAgICBpZiAoIW9wZXJhdGlvbi0+aXNEZWZhdWx0
KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVy
YXRpb24qIG9wID0gdG9CYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKG9wZXJh
dGlvbik7Ci0gICAgICAgICAgICBhbW91bnQgPSBvcC0+YW1vdW50KCk7Ci0gICAgICAgIH0KLQor
ICAgICAgICBpZiAob3BlcmF0aW9uKQorICAgICAgICAgICAgYW1vdW50ID0gdG9CYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKG9wZXJhdGlvbiktPmFtb3VudCgpOworICAgICAg
ICAKICAgICAgICAgZG91YmxlIG11bHRpcGxpZXIgPSAxIC0gYW1vdW50ICogMjsKIAogICAgICAg
ICAvLyBUaGUgY29sb3IgbWF0cml4IGFuaW1hdGlvbiBmb3IgaW52ZXJ0IGRvZXMgYSBzY2FsZSBv
ZiBlYWNoIGNvbG9yIGNvbXBvbmVudCBieSBhIHZhbHVlIHRoYXQgZ29lcyBmcm9tIApAQCAtMzk3
LDE0ICs0MDIsMTIgQEAgUmV0YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpmaWx0
ZXJWYWx1ZUZvck9wZXJhdGlvbihjb25zdCBGaWx0ZXJPcGVyYXQKICAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6T1BBQ0lUWTogewogI2lmIFVTRV9DQV9GSUxURVJTCiAgICAgICAgIC8vIE9wYWNp
dHkgQ0FGaWx0ZXI6IGlucHV0Q29sb3JNYXRyaXgKLSAgICAgICAgdmFsdWUgPSBQbGF0Zm9ybUNB
RmlsdGVyczo6Y29sb3JNYXRyaXhWYWx1ZUZvckZpbHRlcigqb3BlcmF0aW9uKTsKKyAgICAgICAg
dmFsdWUgPSBQbGF0Zm9ybUNBRmlsdGVyczo6Y29sb3JNYXRyaXhWYWx1ZUZvckZpbHRlcih0eXBl
LCBvcGVyYXRpb24pOwogI2Vsc2UKICAgICAgICAgLy8gT3BhY2l0eSBDSUZpbHRlcjogaW5wdXRB
VmVjdG9yCiAgICAgICAgIGRvdWJsZSBhbW91bnQgPSAxOwotICAgICAgICBpZiAoIW9wZXJhdGlv
bi0+aXNEZWZhdWx0KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24qIG9wID0gdG9CYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uKG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBhbW91bnQgPSBvcC0+YW1vdW50KCk7Ci0g
ICAgICAgIH0KKyAgICAgICAgaWYgKG9wZXJhdGlvbikKKyAgICAgICAgICAgIGFtb3VudCA9IHRv
QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihvcGVyYXRpb24pLT5hbW91bnQo
KTsKICAgICAgICAgCiAgICAgICAgIHZhbHVlID0gYWRvcHROUyhbW0NJVmVjdG9yIGFsbG9jXSBp
bml0V2l0aFg6MCBZOjAgWjowIFc6YW1vdW50XSk7CiAjZW5kaWYKQEAgLTQxNCwxNCArNDE3LDEy
IEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVyczo6ZmlsdGVyVmFsdWVGb3JP
cGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkJS
SUdIVE5FU1M6IHsKICNpZiBVU0VfQ0FfRklMVEVSUwogICAgICAgICAvLyBCcmlnaHRuZXNzIENB
RmlsdGVyOiBpbnB1dENvbG9yTWF0cml4Ci0gICAgICAgIHZhbHVlID0gUGxhdGZvcm1DQUZpbHRl
cnM6OmNvbG9yTWF0cml4VmFsdWVGb3JGaWx0ZXIoKm9wZXJhdGlvbik7CisgICAgICAgIHZhbHVl
ID0gUGxhdGZvcm1DQUZpbHRlcnM6OmNvbG9yTWF0cml4VmFsdWVGb3JGaWx0ZXIodHlwZSwgb3Bl
cmF0aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIEJyaWdodG5lc3MgQ0lGaWx0ZXI6IGlucHV0Q29s
b3JNYXRyaXgKICAgICAgICAgZG91YmxlIGFtb3VudCA9IDE7Ci0gICAgICAgIGlmICghb3BlcmF0
aW9uLT5pc0RlZmF1bHQoKSkgewotICAgICAgICAgICAgY29uc3QgQmFzaWNDb21wb25lbnRUcmFu
c2ZlckZpbHRlck9wZXJhdGlvbiogb3AgPSB0b0Jhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb24ob3BlcmF0aW9uKTsKLSAgICAgICAgICAgIGFtb3VudCA9IG9wLT5hbW91bnQoKTsK
LSAgICAgICAgfQorICAgICAgICBpZiAob3BlcmF0aW9uKQorICAgICAgICAgICAgYW1vdW50ID0g
dG9CYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKG9wZXJhdGlvbiktPmFtb3Vu
dCgpOwogICAgICAgICAKICAgICAgICAgQ0lWZWN0b3IqIHJvd1ZlY3RvciA9IDA7CiAgICAgICAg
IHN3aXRjaCAoaW50ZXJuYWxGaWx0ZXJQcm9wZXJ0eUluZGV4KSB7CkBAIC00MzcsMTUgKzQzOCwx
MyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9y
T3BlcmF0aW9uKGNvbnN0IEZpbHRlck9wZXJhdAogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpD
T05UUkFTVDogewogI2lmIFVTRV9DQV9GSUxURVJTCiAgICAgICAgIC8vIENvbnRyYXN0IENBRmls
dGVyOiBpbnB1dENvbG9yTWF0cml4Ci0gICAgICAgIHZhbHVlID0gUGxhdGZvcm1DQUZpbHRlcnM6
OmNvbG9yTWF0cml4VmFsdWVGb3JGaWx0ZXIoKm9wZXJhdGlvbik7CisgICAgICAgIHZhbHVlID0g
UGxhdGZvcm1DQUZpbHRlcnM6OmNvbG9yTWF0cml4VmFsdWVGb3JGaWx0ZXIodHlwZSwgb3BlcmF0
aW9uKTsKICNlbHNlCiAgICAgICAgIC8vIENvbnRyYXN0IENJRmlsdGVyOiBpbnB1dENvbnRyYXN0
CiAgICAgICAgIGRvdWJsZSBhbW91bnQgPSAxOwotICAgICAgICBpZiAoIW9wZXJhdGlvbi0+aXNE
ZWZhdWx0KCkpIHsKLSAgICAgICAgICAgIGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb24qIG9wID0gdG9CYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9u
KG9wZXJhdGlvbik7Ci0gICAgICAgICAgICBhbW91bnQgPSBvcC0+YW1vdW50KCk7Ci0gICAgICAg
IH0KLQorICAgICAgICBpZiAob3BlcmF0aW9uKQorICAgICAgICAgICAgYW1vdW50ID0gdG9CYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKG9wZXJhdGlvbiktPmFtb3VudCgpOwor
ICAgICAgICAKICAgICAgICAgdmFsdWUgPSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTphbW91
bnRdOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwpAQCAtNDU0LDExICs0NTMsOCBAQCBSZXRhaW5Q
dHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmZpbHRlclZhbHVlRm9yT3BlcmF0aW9uKGNv
bnN0IEZpbHRlck9wZXJhdAogICAgICAgICAvLyBDSUZpbHRlcjogaW5wdXRSYWRpdXMKICAgICAg
ICAgLy8gQ0FGaWx0ZXI6IGlucHV0UmFkaXVzCiAgICAgICAgIGRvdWJsZSBhbW91bnQgPSAwOwot
Ci0gICAgICAgIGlmICghb3BlcmF0aW9uLT5pc0RlZmF1bHQoKSkgewotICAgICAgICAgICAgY29u
c3QgQmx1ckZpbHRlck9wZXJhdGlvbiogb3AgPSB0b0JsdXJGaWx0ZXJPcGVyYXRpb24ob3BlcmF0
aW9uKTsKLSAgICAgICAgICAgIGFtb3VudCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgob3AtPnN0ZERl
dmlhdGlvbigpLCAwKTsKLSAgICAgICAgfQorICAgICAgICBpZiAob3BlcmF0aW9uKQorICAgICAg
ICAgICAgYW1vdW50ID0gZmxvYXRWYWx1ZUZvckxlbmd0aCh0b0JsdXJGaWx0ZXJPcGVyYXRpb24o
b3BlcmF0aW9uKS0+c3RkRGV2aWF0aW9uKCksIDApOwogICAgICAgICAKICAgICAgICAgdmFsdWUg
PSBbTlNOdW1iZXIgbnVtYmVyV2l0aERvdWJsZTphbW91bnRdOwogICAgICAgICBicmVhazsKQEAg
LTQ3MSwxMiArNDY3LDExIEBAIFJldGFpblB0cjxOU1ZhbHVlPiBQbGF0Zm9ybUNBRmlsdGVyczo6
ZmlsdGVyVmFsdWVGb3JPcGVyYXRpb24oY29uc3QgRmlsdGVyT3BlcmF0CiB9CiAKICNpZiBVU0Vf
Q0FfRklMVEVSUwotUmV0YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpjb2xvck1h
dHJpeFZhbHVlRm9yRmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgZmlsdGVyT3BlcmF0aW9u
KQorUmV0YWluUHRyPE5TVmFsdWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpjb2xvck1hdHJpeFZhbHVl
Rm9yRmlsdGVyKEZpbHRlck9wZXJhdGlvbjo6T3BlcmF0aW9uVHlwZSB0eXBlLCBjb25zdCBGaWx0
ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlvbikKIHsKLSAgICBzd2l0Y2ggKGZpbHRlck9wZXJh
dGlvbi50eXBlKCkpIHsKKyAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIEZpbHRlck9wZXJh
dGlvbjo6U0VQSUE6IHsKLSAgICAgICAgY29uc3QgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbiYgb3AgPSB0b0Jhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0
aW9uKTsKLSAgICAgICAgZG91YmxlIHQgPSBvcC5hbW91bnQoKTsKKyAgICAgICAgZG91YmxlIHQg
PSBmaWx0ZXJPcGVyYXRpb24gPyB0b0Jhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24oZmls
dGVyT3BlcmF0aW9uKS0+YW1vdW50KCkgOiAwOwogICAgICAgICB0ID0gc3RkOjptaW4oc3RkOjpt
YXgoMC4wLCB0KSwgMS4wKTsKICAgICAgICAgQ0FDb2xvck1hdHJpeCBjb2xvck1hdHJpeCA9IHsK
ICAgICAgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0PihXZWJDb3JlOjpibGVuZChzZXBpYU5vbmVD
b25zdGFudHNbMF1bMF0sIHNlcGlhRnVsbENvbnN0YW50c1swXVswXSwgdCkpLApAQCAtNDk1LDEx
ICs0OTAsNyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmNvbG9yTWF0
cml4VmFsdWVGb3JGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcgogICAgICAgICByZXR1cm4gW05TVmFs
dWUgdmFsdWVXaXRoQ0FDb2xvck1hdHJpeDpjb2xvck1hdHJpeF07CiAgICAgfQogICAgIGNhc2Ug
RmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKLSAgICAgICAgY29uc3QgQmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbiYgb3AgPSB0b0Jhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0
ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0aW9uKTsKLSAgICAgICAgZmxvYXQgYW1vdW50ID0gb3Au
YW1vdW50KCk7Ci0gICAgICAgIGlmIChvcC5pc0RlZmF1bHQoKSkKLSAgICAgICAgICAgIGFtb3Vu
dCA9IDA7Ci0KKyAgICAgICAgZmxvYXQgYW1vdW50ID0gZmlsdGVyT3BlcmF0aW9uID8gdG9CYXNp
Y0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGZpbHRlck9wZXJhdGlvbiktPmFtb3Vu
dCgpIDogMDsKICAgICAgICAgZmxvYXQgbXVsdGlwbGllciA9IDEgLSBhbW91bnQgKiAyOwogICAg
ICAgICBDQUNvbG9yTWF0cml4IGNvbG9yTWF0cml4ID0gewogICAgICAgICAgICAgbXVsdGlwbGll
ciwgMCwgMCwgMCwgYW1vdW50LApAQCAtNTEwLDExICs1MDEsNyBAQCBSZXRhaW5QdHI8TlNWYWx1
ZT4gUGxhdGZvcm1DQUZpbHRlcnM6OmNvbG9yTWF0cml4VmFsdWVGb3JGaWx0ZXIoY29uc3QgRmls
dGVyT3BlcgogICAgICAgICByZXR1cm4gW05TVmFsdWUgdmFsdWVXaXRoQ0FDb2xvck1hdHJpeDpj
b2xvck1hdHJpeF07CiAgICAgfQogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7
Ci0gICAgICAgIGNvbnN0IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24mIG9w
ID0gdG9CYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGZpbHRlck9wZXJhdGlv
bik7Ci0gICAgICAgIGZsb2F0IGFtb3VudCA9IG9wLmFtb3VudCgpOwotICAgICAgICBpZiAob3Au
aXNEZWZhdWx0KCkpCi0gICAgICAgICAgICBhbW91bnQgPSAxOwotCisgICAgICAgIGZsb2F0IGFt
b3VudCA9IGZpbHRlck9wZXJhdGlvbiA/IHRvQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9w
ZXJhdGlvbihmaWx0ZXJPcGVyYXRpb24pLT5hbW91bnQoKSA6IDE7CiAgICAgICAgIENBQ29sb3JN
YXRyaXggY29sb3JNYXRyaXggPSB7CiAgICAgICAgICAgICAxLCAwLCAwLCAwLCAwLAogICAgICAg
ICAgICAgMCwgMSwgMCwgMCwgMCwKQEAgLTUyNCwxMSArNTExLDcgQEAgUmV0YWluUHRyPE5TVmFs
dWU+IFBsYXRmb3JtQ0FGaWx0ZXJzOjpjb2xvck1hdHJpeFZhbHVlRm9yRmlsdGVyKGNvbnN0IEZp
bHRlck9wZXIKICAgICAgICAgcmV0dXJuIFtOU1ZhbHVlIHZhbHVlV2l0aENBQ29sb3JNYXRyaXg6
Y29sb3JNYXRyaXhdOwogICAgIH0KICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Q09OVFJBU1Q6
IHsKLSAgICAgICAgY29uc3QgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiYg
b3AgPSB0b0Jhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0
aW9uKTsKLSAgICAgICAgZmxvYXQgYW1vdW50ID0gb3AuYW1vdW50KCk7Ci0gICAgICAgIGlmIChv
cC5pc0RlZmF1bHQoKSkKLSAgICAgICAgICAgIGFtb3VudCA9IDE7Ci0KKyAgICAgICAgZmxvYXQg
YW1vdW50ID0gZmlsdGVyT3BlcmF0aW9uID8gdG9CYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVy
T3BlcmF0aW9uKGZpbHRlck9wZXJhdGlvbiktPmFtb3VudCgpIDogMTsKICAgICAgICAgZmxvYXQg
aW50ZXJjZXB0ID0gLTAuNSAqIGFtb3VudCArIDAuNTsKICAgICAgICAgQ0FDb2xvck1hdHJpeCBj
b2xvck1hdHJpeCA9IHsKICAgICAgICAgICAgIGFtb3VudCwgMCwgMCwgMCwgaW50ZXJjZXB0LApA
QCAtNTM5LDExICs1MjIsNyBAQCBSZXRhaW5QdHI8TlNWYWx1ZT4gUGxhdGZvcm1DQUZpbHRlcnM6
OmNvbG9yTWF0cml4VmFsdWVGb3JGaWx0ZXIoY29uc3QgRmlsdGVyT3BlcgogICAgICAgICByZXR1
cm4gW05TVmFsdWUgdmFsdWVXaXRoQ0FDb2xvck1hdHJpeDpjb2xvck1hdHJpeF07CiAgICAgfQog
ICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpCUklHSFRORVNTOiB7Ci0gICAgICAgIGNvbnN0IEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24mIG9wID0gdG9CYXNpY0NvbXBvbmVu
dFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGZpbHRlck9wZXJhdGlvbik7Ci0gICAgICAgIGZsb2F0
IGFtb3VudCA9IG9wLmFtb3VudCgpOwotICAgICAgICBpZiAob3AuaXNEZWZhdWx0KCkpCi0gICAg
ICAgICAgICBhbW91bnQgPSAxOwotCisgICAgICAgIGZsb2F0IGFtb3VudCA9IGZpbHRlck9wZXJh
dGlvbiA/IHRvQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihmaWx0ZXJPcGVy
YXRpb24pLT5hbW91bnQoKSA6IDE7CiAgICAgICAgIENBQ29sb3JNYXRyaXggY29sb3JNYXRyaXgg
PSB7CiAgICAgICAgICAgICBhbW91bnQsIDAsIDAsIDAsIDAsCiAgICAgICAgICAgICAwLCBhbW91
bnQsIDAsIDAsIDAsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZpbHRlck9wZXJhdGlvbi5jcHAKaW5kZXggNzk4ZWMyYTljYWIwM2Y0
M2Y5ZTc5YTZiMzkwOTQ1ZDhiZjRkZTQxMy4uZDg3ZjA2OTY1NTRhYzkwNmJjZDcwNGI2ODU5NmZi
Yzk2NmU4M2JkMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJPcGVyYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9uLmNwcApAQCAtMzIsOSArMzIsMTcgQEAK
ICNpbmNsdWRlICJDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CisgICAgCitib29sIERlZmF1bHRGaWx0ZXJPcGVyYXRpb246Om9wZXJhdG9yPT0oY29u
c3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAoreworICAgIGlmICghaXNTYW1lVHlwZShvKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiByZXByZXNlbnRlZFR5cGUo
KSA9PSB0b0RlZmF1bHRGaWx0ZXJPcGVyYXRpb24obykucmVwcmVzZW50ZWRUeXBlKCk7Cit9CiAK
LVJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50LCBPcGVyYXRpb25UeXBlIHR5cGUp
Ci0gICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkKK1JlZmVyZW5jZUZpbHRlck9wZXJhdGlvbjo6
UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcm
IGZyYWdtZW50KQorICAgIDogRmlsdGVyT3BlcmF0aW9uKFJFRkVSRU5DRSkKICAgICAsIG1fdXJs
KHVybCkKICAgICAsIG1fZnJhZ21lbnQoZnJhZ21lbnQpCiB7CkBAIC00Myw3ICs1MSwxNSBAQCBS
ZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb246OlJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihjb25zdCBT
dHJpbmcmIHVybCwgY29uc3QgU3RyaQogUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOjp+UmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uKCkKIHsKIH0KLQorICAgIAorYm9vbCBSZWZlcmVuY2VGaWx0ZXJP
cGVyYXRpb246Om9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdAorewor
ICAgIGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAg
IHJldHVybiBtX3VybCA9PSB0b1JlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihvKS5tX3VybDsKK30K
KyAgICAKIENhY2hlZFNWR0RvY3VtZW50UmVmZXJlbmNlKiBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRp
b246OmdldE9yQ3JlYXRlQ2FjaGVkU1ZHRG9jdW1lbnRSZWZlcmVuY2UoKQogewogICAgIGlmICgh
bV9jYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSkKQEAgLTEyNCw3ICsxNDAsMTUgQEAgZG91Ymxl
IEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb246OnBhc3N0aHJvdWdoQW1vdW50
KCkgY29uc3QKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogfQotCisgICAgCitib29sIEJsdXJG
aWx0ZXJPcGVyYXRpb246Om9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25z
dAoreworICAgIGlmICghaXNTYW1lVHlwZShvKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
IAorICAgIHJldHVybiBtX3N0ZERldmlhdGlvbiA9PSB0b0JsdXJGaWx0ZXJPcGVyYXRpb24obyku
c3RkRGV2aWF0aW9uKCk7Cit9CisgICAgCiBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gQmx1
ckZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9uKiBmcm9tLCBkb3Vi
bGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAgIGlmIChmcm9tICYm
ICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKQEAgLTEzMywxMyArMTU3LDIxIEBAIFBhc3NSZWZQ
dHI8RmlsdGVyT3BlcmF0aW9uPiBCbHVyRmlsdGVyT3BlcmF0aW9uOjpibGVuZChjb25zdCBGaWx0
ZXJPcGVyYXRpb24qIGZyCiAgICAgTGVuZ3RoVHlwZSBsZW5ndGhUeXBlID0gbV9zdGREZXZpYXRp
b24udHlwZSgpOwogCiAgICAgaWYgKGJsZW5kVG9QYXNzdGhyb3VnaCkKLSAgICAgICAgcmV0dXJu
IEJsdXJGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShMZW5ndGgobGVuZ3RoVHlwZSkuYmxlbmQobV9z
dGREZXZpYXRpb24sIHByb2dyZXNzKSwgbV90eXBlKTsKKyAgICAgICAgcmV0dXJuIEJsdXJGaWx0
ZXJPcGVyYXRpb246OmNyZWF0ZShMZW5ndGgobGVuZ3RoVHlwZSkuYmxlbmQobV9zdGREZXZpYXRp
b24sIHByb2dyZXNzKSk7CiAKLSAgICBjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKiBmcm9tT3Ag
PSBzdGF0aWNfY2FzdDxjb25zdCBCbHVyRmlsdGVyT3BlcmF0aW9uKj4oZnJvbSk7CisgICAgY29u
c3QgQmx1ckZpbHRlck9wZXJhdGlvbiogZnJvbU9wID0gdG9CbHVyRmlsdGVyT3BlcmF0aW9uKGZy
b20pOwogICAgIExlbmd0aCBmcm9tTGVuZ3RoID0gZnJvbU9wID8gZnJvbU9wLT5tX3N0ZERldmlh
dGlvbiA6IExlbmd0aChsZW5ndGhUeXBlKTsKLSAgICByZXR1cm4gQmx1ckZpbHRlck9wZXJhdGlv
bjo6Y3JlYXRlKG1fc3RkRGV2aWF0aW9uLmJsZW5kKGZyb21MZW5ndGgsIHByb2dyZXNzKSwgbV90
eXBlKTsKKyAgICByZXR1cm4gQmx1ckZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKG1fc3RkRGV2aWF0
aW9uLmJsZW5kKGZyb21MZW5ndGgsIHByb2dyZXNzKSk7CiB9Ci0KKyAgICAKK2Jvb2wgRHJvcFNo
YWRvd0ZpbHRlck9wZXJhdGlvbjo6b3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8p
IGNvbnN0Cit7CisgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiYgb3RoZXIgPSB0b0Ryb3BTaGFk
b3dGaWx0ZXJPcGVyYXRpb24obyk7CisgICAgcmV0dXJuIG1fbG9jYXRpb24gPT0gb3RoZXIubV9s
b2NhdGlvbiAmJiBtX3N0ZERldmlhdGlvbiA9PSBvdGhlci5tX3N0ZERldmlhdGlvbiAmJiBtX2Nv
bG9yID09IG90aGVyLm1fY29sb3I7Cit9CisgICAgCiBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlv
bj4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6YmxlbmQoY29uc3QgRmlsdGVyT3BlcmF0aW9u
KiBmcm9tLCBkb3VibGUgcHJvZ3Jlc3MsIGJvb2wgYmxlbmRUb1Bhc3N0aHJvdWdoKQogewogICAg
IGlmIChmcm9tICYmICFmcm9tLT5pc1NhbWVUeXBlKCp0aGlzKSkKQEAgLTE0OSwxMCArMTgxLDkg
QEAgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246
OmJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGkKICAgICAgICAgcmV0dXJuIERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb246OmNyZWF0ZSgKICAgICAgICAgICAgIFdlYkNvcmU6OmJsZW5kKG1fbG9jYXRp
b24sIEludFBvaW50KCksIHByb2dyZXNzKSwKICAgICAgICAgICAgIFdlYkNvcmU6OmJsZW5kKG1f
c3RkRGV2aWF0aW9uLCAwLCBwcm9ncmVzcyksCi0gICAgICAgICAgICBXZWJDb3JlOjpibGVuZCht
X2NvbG9yLCBDb2xvcihDb2xvcjo6dHJhbnNwYXJlbnQpLCBwcm9ncmVzcyksCi0gICAgICAgICAg
ICBtX3R5cGUpOworICAgICAgICAgICAgV2ViQ29yZTo6YmxlbmQobV9jb2xvciwgQ29sb3IoQ29s
b3I6OnRyYW5zcGFyZW50KSwgcHJvZ3Jlc3MpKTsKIAotICAgIGNvbnN0IERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb24qIGZyb21PcCA9IHN0YXRpY19jYXN0PGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJP
cGVyYXRpb24qPihmcm9tKTsKKyAgICBjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKiBm
cm9tT3AgPSB0b0Ryb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24oZnJvbSk7CiAgICAgSW50UG9pbnQg
ZnJvbUxvY2F0aW9uID0gZnJvbU9wID8gZnJvbU9wLT5sb2NhdGlvbigpIDogSW50UG9pbnQoKTsK
ICAgICBpbnQgZnJvbVN0ZERldmlhdGlvbiA9IGZyb21PcCA/IGZyb21PcC0+c3RkRGV2aWF0aW9u
KCkgOiAwOwogICAgIENvbG9yIGZyb21Db2xvciA9IGZyb21PcCA/IGZyb21PcC0+Y29sb3IoKSA6
IENvbG9yKENvbG9yOjp0cmFuc3BhcmVudCk7CkBAIC0xNjAsNyArMTkxLDcgQEAgUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmJsZW5kKGNvbnN0
IEZpbHRlck9wZXJhdGkKICAgICByZXR1cm4gRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbjo6Y3Jl
YXRlKAogICAgICAgICBXZWJDb3JlOjpibGVuZChmcm9tTG9jYXRpb24sIG1fbG9jYXRpb24sIHBy
b2dyZXNzKSwKICAgICAgICAgV2ViQ29yZTo6YmxlbmQoZnJvbVN0ZERldmlhdGlvbiwgbV9zdGRE
ZXZpYXRpb24sIHByb2dyZXNzKSwKLSAgICAgICAgV2ViQ29yZTo6YmxlbmQoZnJvbUNvbG9yLCBt
X2NvbG9yLCBwcm9ncmVzcyksIG1fdHlwZSk7CisgICAgICAgIFdlYkNvcmU6OmJsZW5kKGZyb21D
b2xvciwgbV9jb2xvciwgcHJvZ3Jlc3MpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJPcGVyYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyT3BlcmF0aW9uLmgKaW5kZXggY2M5YmIxZjAyMWRkYzFlYTY2MDE2MTAzZTlhMWZmMDYw
MDBiYzkwZi4uMjMwNmI3ZTFmNTI5MjRjMzBkMzE5NzEzZGUxOTUwYThkNDk3MDczMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJPcGVy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlck9wZXJhdGlvbi5oCkBAIC0yMCw3ICsyMCw3IEBACiAgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCiAgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
ICAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAK
ICNpZm5kZWYgRmlsdGVyT3BlcmF0aW9uX2gKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAg
ICAgICBCTFVSLAogICAgICAgICBEUk9QX1NIQURPVywKICAgICAgICAgUEFTU1RIUk9VR0gsCisg
ICAgICAgIERFRkFVTFQsCiAgICAgICAgIE5PTkUKICAgICB9OwogCkBAIC03MiwyMSArNzMsMzAg
QEAgcHVibGljOgogICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBGaWx0ZXJPcGVyYXRpb24mIG8p
IGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gbyk7IH0KIAogICAgIHZpcnR1YWwgUGFzc1JlZlB0
cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJhdGlvbiogLypmcm9tKi8s
IGRvdWJsZSAvKnByb2dyZXNzKi8sIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNl
KQotICAgIHsgCisgICAgewogICAgICAgICBBU1NFUlQoIWJsZW5kaW5nTmVlZHNSZW5kZXJlclNp
emUoKSk7Ci0gICAgICAgIHJldHVybiAwOyAKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCiAg
ICAgdmlydHVhbCBQYXNzUmVmUHRyPEZpbHRlck9wZXJhdGlvbj4gYmxlbmQoY29uc3QgRmlsdGVy
T3BlcmF0aW9uKiAvKmZyb20qLywgZG91YmxlIC8qcHJvZ3Jlc3MqLywgY29uc3QgTGF5b3V0U2l6
ZSYsIGJvb2wgLypibGVuZFRvUGFzc3Rocm91Z2gqLyA9IGZhbHNlKQotICAgIHsgCisgICAgewog
ICAgICAgICBBU1NFUlQoYmxlbmRpbmdOZWVkc1JlbmRlcmVyU2l6ZSgpKTsKLSAgICAgICAgcmV0
dXJuIDA7IAorICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICB2aXJ0dWFsIE9wZXJhdGlv
blR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQotICAgIHZpcnR1YWwgYm9vbCBp
c1NhbWVUeXBlKGNvbnN0IEZpbHRlck9wZXJhdGlvbiYgbykgY29uc3QgeyByZXR1cm4gby50eXBl
KCkgPT0gbV90eXBlOyB9Ci0gICAgCi0gICAgdmlydHVhbCBib29sIGlzRGVmYXVsdCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CisgICAgT3BlcmF0aW9uVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1
cm4gbV90eXBlOyB9CisKKyAgICBib29sIGlzQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlv
bigpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV90eXBlID09IEdSQVlTQ0FMRSB8fCBt
X3R5cGUgPT0gU0VQSUEgfHwgbV90eXBlID09IFNBVFVSQVRFIHx8IG1fdHlwZSA9PSBIVUVfUk9U
QVRFOworICAgIH0KKworICAgIGJvb2wgaXNCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3R5cGUgPT0gSU5WRVJUIHx8
IG1fdHlwZSA9PSBCUklHSFRORVNTIHx8IG1fdHlwZSA9PSBDT05UUkFTVCB8fCBtX3R5cGUgPT0g
T1BBQ0lUWTsKKyAgICB9CisKKyAgICBib29sIGlzU2FtZVR5cGUoY29uc3QgRmlsdGVyT3BlcmF0
aW9uJiBvKSBjb25zdCB7IHJldHVybiBvLnR5cGUoKSA9PSBtX3R5cGU7IH0KIAogICAgIC8vIFRy
dWUgaWYgdGhlIGFscGhhIGNoYW5uZWwgb2YgYW55IHBpeGVsIGNhbiBjaGFuZ2UgdW5kZXIgdGhp
cyBvcGVyYXRpb24uCiAgICAgdmlydHVhbCBib29sIGFmZmVjdHNPcGFjaXR5KCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KQEAgLTEwNCwyNyArMTE0LDMzIEBAIHByb3RlY3RlZDoKICAgICBPcGVy
YXRpb25UeXBlIG1fdHlwZTsKIH07CiAKKyNkZWZpbmUgRklMVEVST1BFUkFUSU9OX1RZUEVfQ0FT
VFMoVG9WYWx1ZVR5cGVOYW1lLCBwcmVkaWNhdGUpIFwKKyAgICBUWVBFX0NBU1RTX0JBU0UoVG9W
YWx1ZVR5cGVOYW1lLCBXZWJDb3JlOjpGaWx0ZXJPcGVyYXRpb24sIHZhbHVlLCB2YWx1ZS0+cHJl
ZGljYXRlLCB2YWx1ZS5wcmVkaWNhdGUpCisKIGNsYXNzIERlZmF1bHRGaWx0ZXJPcGVyYXRpb24g
OiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEZWZhdWx0RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoT3BlcmF0aW9uVHlwZSB0eXBlKQorICAg
IHN0YXRpYyBQYXNzUmVmUHRyPERlZmF1bHRGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShPcGVyYXRp
b25UeXBlIHJlcHJlc2VudGVkVHlwZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgRGVmYXVsdEZpbHRlck9wZXJhdGlvbih0eXBlKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihyZXByZXNlbnRlZFR5cGUpKTsKICAgICB9CiAK
LXByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0
aW9uJiBvKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgcmV0dXJuIGlzU2FtZVR5cGUo
byk7Ci0gICAgfQorICAgIE9wZXJhdGlvblR5cGUgcmVwcmVzZW50ZWRUeXBlKCkgY29uc3QgeyBy
ZXR1cm4gbV9yZXByZXNlbnRlZFR5cGU7IH0KIAotICAgIHZpcnR1YWwgYm9vbCBpc0RlZmF1bHQo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9Citwcml2YXRlOgorICAgIHZpcnR1YWwg
Ym9vbCBvcGVyYXRvcj09KGNvbnN0IEZpbHRlck9wZXJhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwog
Ci0gICAgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihPcGVyYXRpb25UeXBlIHR5cGUpCi0gICAgICAg
IDogRmlsdGVyT3BlcmF0aW9uKHR5cGUpCisgICAgRGVmYXVsdEZpbHRlck9wZXJhdGlvbihPcGVy
YXRpb25UeXBlIHJlcHJlc2VudGVkVHlwZSkKKyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24oREVG
QVVMVCkKKyAgICAgICAgLCBtX3JlcHJlc2VudGVkVHlwZShyZXByZXNlbnRlZFR5cGUpCiAgICAg
ewogICAgIH0KKworICAgIE9wZXJhdGlvblR5cGUgbV9yZXByZXNlbnRlZFR5cGU7CiB9OwogCitG
SUxURVJPUEVSQVRJT05fVFlQRV9DQVNUUyhEZWZhdWx0RmlsdGVyT3BlcmF0aW9uLCB0eXBlKCkg
PT0gRmlsdGVyT3BlcmF0aW9uOjpERUZBVUxUKTsKKworCiBjbGFzcyBQYXNzdGhyb3VnaEZpbHRl
ck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRpb24gewogcHVibGljOgogICAgIHN0YXRp
YyBQYXNzUmVmUHRyPFBhc3N0aHJvdWdoRmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoKQpAQCAtMTQ0
LDExICsxNjAsMTMgQEAgcHJpdmF0ZToKICAgICB9CiB9OwogCitGSUxURVJPUEVSQVRJT05fVFlQ
RV9DQVNUUyhQYXNzdGhyb3VnaEZpbHRlck9wZXJhdGlvbiwgdHlwZSgpID09IEZpbHRlck9wZXJh
dGlvbjo6UEFTU1RIUk9VR0gpOworCiBjbGFzcyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gOiBw
dWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxS
ZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24+IGNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiBmcmFnbWVudCwgT3BlcmF0aW9uVHlwZSB0eXBlKQorICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBj
b25zdCBTdHJpbmcmIGZyYWdtZW50KQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24odXJsLCBmcmFnbWVudCwgdHlwZSkpOworICAgICAg
ICByZXR1cm4gYWRvcHRSZWYobmV3IFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbih1cmwsIGZyYWdt
ZW50KSk7CiAgICAgfQogICAgIHZpcnR1YWwgflJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbigpOwog
CkBAIC0xNjUsMTUgKzE4Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEZpbHRlckVmZmVjdChQ
YXNzUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KSB7IG1fZmlsdGVyRWZmZWN0ID0g
ZmlsdGVyRWZmZWN0OyB9CiAKIHByaXZhdGU6Ci0gICAgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
KGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGZyYWdtZW50LCBPcGVyYXRpb25UeXBl
KTsKKyAgICBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0
IFN0cmluZyYgZnJhZ21lbnQpOwogCi0gICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0oY29uc3Qg
RmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAgICAgICAgaWYgKCFp
c1NhbWVUeXBlKG8pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBjb25zdCBS
ZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgUmVmZXJl
bmNlRmlsdGVyT3BlcmF0aW9uKj4oJm8pOwotICAgICAgICByZXR1cm4gbV91cmwgPT0gb3RoZXIt
Pm1fdXJsOwotICAgIH0KKyAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJP
cGVyYXRpb24mKSBjb25zdCBvdmVycmlkZTsKIAogICAgIFN0cmluZyBtX3VybDsKICAgICBTdHJp
bmcgbV9mcmFnbWVudDsKQEAgLTE4MSw2ICsxOTMsOCBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxG
aWx0ZXJFZmZlY3Q+IG1fZmlsdGVyRWZmZWN0OwogfTsKIAorRklMVEVST1BFUkFUSU9OX1RZUEVf
Q0FTVFMoUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uLCB0eXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9u
OjpSRUZFUkVOQ0UpOworCiAvLyBHUkFZU0NBTEUsIFNFUElBLCBTQVRVUkFURSBhbmQgSFVFX1JP
VEFURSBhcmUgdmFyaWF0aW9ucyBvbiBhIGJhc2ljIGNvbG9yIG1hdHJpeCBlZmZlY3QuCiAvLyBG
b3IgSFVFX1JPVEFURSwgdGhlIGFuZ2xlIG9mIHJvdGF0aW9uIGlzIHN0b3JlZCBpbiBtX2Ftb3Vu
dC4KIGNsYXNzIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVy
T3BlcmF0aW9uIHsKQEAgLTIwOCw2ICsyMjIsOCBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2Ft
b3VudDsKIH07CiAKK0ZJTFRFUk9QRVJBVElPTl9UWVBFX0NBU1RTKEJhc2ljQ29sb3JNYXRyaXhG
aWx0ZXJPcGVyYXRpb24sIGlzQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbigpKTsKKwog
Ly8gSU5WRVJULCBCUklHSFRORVNTLCBDT05UUkFTVCBhbmQgT1BBQ0lUWSBhcmUgdmFyaWF0aW9u
cyBvbiBhIGJhc2ljIGNvbXBvbmVudCB0cmFuc2ZlciBlZmZlY3QuCiBjbGFzcyBCYXNpY0NvbXBv
bmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uIDogcHVibGljIEZpbHRlck9wZXJhdGlvbiB7CiBw
dWJsaWM6CkBAIC0yMzYsMTEgKzI1MiwxMyBAQCBwcml2YXRlOgogICAgIGRvdWJsZSBtX2Ftb3Vu
dDsKIH07CiAKK0ZJTFRFUk9QRVJBVElPTl9UWVBFX0NBU1RTKEJhc2ljQ29tcG9uZW50VHJhbnNm
ZXJGaWx0ZXJPcGVyYXRpb24sIGlzQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlv
bigpKTsKKwogY2xhc3MgQmx1ckZpbHRlck9wZXJhdGlvbiA6IHB1YmxpYyBGaWx0ZXJPcGVyYXRp
b24gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEJsdXJGaWx0ZXJPcGVyYXRpb24+
IGNyZWF0ZShMZW5ndGggc3RkRGV2aWF0aW9uLCBPcGVyYXRpb25UeXBlIHR5cGUpCisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8Qmx1ckZpbHRlck9wZXJhdGlvbj4gY3JlYXRlKExlbmd0aCBzdGREZXZp
YXRpb24pCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEJsdXJGaWx0ZXJPcGVy
YXRpb24oc3RkOjptb3ZlKHN0ZERldmlhdGlvbiksIHR5cGUpKTsKKyAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBCbHVyRmlsdGVyT3BlcmF0aW9uKHN0ZDo6bW92ZShzdGREZXZpYXRpb24pKSk7
CiAgICAgfQogCiAgICAgY29uc3QgTGVuZ3RoJiBzdGREZXZpYXRpb24oKSBjb25zdCB7IHJldHVy
biBtX3N0ZERldmlhdGlvbjsgfQpAQCAtMjUxLDE2ICsyNjksMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGJsZW5kKGNvbnN0IEZpbHRlck9wZXJh
dGlvbiogZnJvbSwgZG91YmxlIHByb2dyZXNzLCBib29sIGJsZW5kVG9QYXNzdGhyb3VnaCA9IGZh
bHNlKSBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBGaWx0ZXJPcGVyYXRpb24mIG8pIGNvbnN0IG92ZXJyaWRlCi0gICAgewotICAgICAgICBp
ZiAoIWlzU2FtZVR5cGUobykpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIGNv
bnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qIG90aGVyID0gc3RhdGljX2Nhc3Q8Y29uc3QgQmx1ckZp
bHRlck9wZXJhdGlvbio+KCZvKTsKLSAgICAgICAgcmV0dXJuIG1fc3RkRGV2aWF0aW9uID09IG90
aGVyLT5tX3N0ZERldmlhdGlvbjsKLSAgICB9CisgICAgdmlydHVhbCBib29sIG9wZXJhdG9yPT0o
Y29uc3QgRmlsdGVyT3BlcmF0aW9uJikgY29uc3Qgb3ZlcnJpZGU7CiAKLSAgICBCbHVyRmlsdGVy
T3BlcmF0aW9uKExlbmd0aCBzdGREZXZpYXRpb24sIE9wZXJhdGlvblR5cGUgdHlwZSkKLSAgICAg
ICAgOiBGaWx0ZXJPcGVyYXRpb24odHlwZSkKKyAgICBCbHVyRmlsdGVyT3BlcmF0aW9uKExlbmd0
aCBzdGREZXZpYXRpb24pCisgICAgICAgIDogRmlsdGVyT3BlcmF0aW9uKEJMVVIpCiAgICAgICAg
ICwgbV9zdGREZXZpYXRpb24oc3RkOjptb3ZlKHN0ZERldmlhdGlvbikpCiAgICAgewogICAgIH0K
QEAgLTI2OCwxMSArMjgwLDEzIEBAIHByaXZhdGU6CiAgICAgTGVuZ3RoIG1fc3RkRGV2aWF0aW9u
OwogfTsKIAorRklMVEVST1BFUkFUSU9OX1RZUEVfQ0FTVFMoQmx1ckZpbHRlck9wZXJhdGlvbiwg
dHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6QkxVUik7CisKIGNsYXNzIERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb24gOiBwdWJsaWMgRmlsdGVyT3BlcmF0aW9uIHsKIHB1YmxpYzoKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uPiBjcmVhdGUoY29uc3QgSW50
UG9pbnQmIGxvY2F0aW9uLCBpbnQgc3RkRGV2aWF0aW9uLCBDb2xvciBjb2xvciwgT3BlcmF0aW9u
VHlwZSB0eXBlKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRp
b24+IGNyZWF0ZShjb25zdCBJbnRQb2ludCYgbG9jYXRpb24sIGludCBzdGREZXZpYXRpb24sIENv
bG9yIGNvbG9yKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEcm9wU2hhZG93
RmlsdGVyT3BlcmF0aW9uKGxvY2F0aW9uLCBzdGREZXZpYXRpb24sIGNvbG9yLCB0eXBlKSk7Cisg
ICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihsb2Nh
dGlvbiwgc3RkRGV2aWF0aW9uLCBjb2xvcikpOwogICAgIH0KIAogICAgIGludCB4KCkgY29uc3Qg
eyByZXR1cm4gbV9sb2NhdGlvbi54KCk7IH0KQEAgLTI4NywxNiArMzAxLDEwIEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBibGVuZChjb25zdCBGaWx0
ZXJPcGVyYXRpb24qIGZyb20sIGRvdWJsZSBwcm9ncmVzcywgYm9vbCBibGVuZFRvUGFzc3Rocm91
Z2ggPSBmYWxzZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgdmlydHVhbCBib29sIG9wZXJh
dG9yPT0oY29uc3QgRmlsdGVyT3BlcmF0aW9uJiBvKSBjb25zdCBvdmVycmlkZQotICAgIHsKLSAg
ICAgICAgaWYgKCFpc1NhbWVUeXBlKG8pKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICBjb25zdCBEcm9wU2hhZG93RmlsdGVyT3BlcmF0aW9uKiBvdGhlciA9IHN0YXRpY19jYXN0
PGNvbnN0IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qPigmbyk7Ci0gICAgICAgIHJldHVybiBt
X2xvY2F0aW9uID09IG90aGVyLT5tX2xvY2F0aW9uICYmIG1fc3RkRGV2aWF0aW9uID09IG90aGVy
LT5tX3N0ZERldmlhdGlvbiAmJiBtX2NvbG9yID09IG90aGVyLT5tX2NvbG9yOwotICAgIH0KKyAg
ICB2aXJ0dWFsIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGaWx0ZXJPcGVyYXRpb24mKSBjb25zdCBv
dmVycmlkZTsKIAotICAgIERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24oY29uc3QgSW50UG9pbnQm
IGxvY2F0aW9uLCBpbnQgc3RkRGV2aWF0aW9uLCBDb2xvciBjb2xvciwgT3BlcmF0aW9uVHlwZSB0
eXBlKQotICAgICAgICA6IEZpbHRlck9wZXJhdGlvbih0eXBlKQorICAgIERyb3BTaGFkb3dGaWx0
ZXJPcGVyYXRpb24oY29uc3QgSW50UG9pbnQmIGxvY2F0aW9uLCBpbnQgc3RkRGV2aWF0aW9uLCBD
b2xvciBjb2xvcikKKyAgICAgICAgOiBGaWx0ZXJPcGVyYXRpb24oRFJPUF9TSEFET1cpCiAgICAg
ICAgICwgbV9sb2NhdGlvbihsb2NhdGlvbikKICAgICAgICAgLCBtX3N0ZERldmlhdGlvbihzdGRE
ZXZpYXRpb24pCiAgICAgICAgICwgbV9jb2xvcihjb2xvcikKQEAgLTMwOCwxNSArMzE2LDcgQEAg
cHJpdmF0ZToKICAgICBDb2xvciBtX2NvbG9yOwogfTsKIAotI2RlZmluZSBTSU1QTEVfRklMVEVS
X09QRVJBVElPTl9DQVNUUyhUb1ZhbHVlVHlwZU5hbWUsIHByZWRpY2F0ZSkgXAotICAgIFRZUEVf
Q0FTVFNfQkFTRShUb1ZhbHVlVHlwZU5hbWUsIEZpbHRlck9wZXJhdGlvbiwgb3BlcmF0aW9uLCBv
cGVyYXRpb24tPnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OnByZWRpY2F0ZSwgb3BlcmF0aW9u
LnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OnByZWRpY2F0ZSkKLQotU0lNUExFX0ZJTFRFUl9P
UEVSQVRJT05fQ0FTVFMoUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uLCBSRUZFUkVOQ0UpCi1TSU1Q
TEVfRklMVEVSX09QRVJBVElPTl9DQVNUUyhCbHVyRmlsdGVyT3BlcmF0aW9uLCBCTFVSKQotU0lN
UExFX0ZJTFRFUl9PUEVSQVRJT05fQ0FTVFMoRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiwgRFJP
UF9TSEFET1cpCi0KLVRZUEVfQ0FTVFNfQkFTRShCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0
aW9uLCBGaWx0ZXJPcGVyYXRpb24sIG9wZXJhdGlvbiwgb3BlcmF0aW9uLT50eXBlKCkgPT0gRmls
dGVyT3BlcmF0aW9uOjpHUkFZU0NBTEUgfHwgb3BlcmF0aW9uLT50eXBlKCkgPT0gRmlsdGVyT3Bl
cmF0aW9uOjpTRVBJQSB8fCBvcGVyYXRpb24tPnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OlNB
VFVSQVRFIHx8IG9wZXJhdGlvbi0+dHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6SFVFX1JPVEFU
RSwgb3BlcmF0aW9uLnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRSB8fCBvcGVy
YXRpb24udHlwZSgpID09IEZpbHRlck9wZXJhdGlvbjo6U0VQSUEgfHwgb3BlcmF0aW9uLnR5cGUo
KSA9PSBGaWx0ZXJPcGVyYXRpb246OlNBVFVSQVRFIHx8IG9wZXJhdGlvbi50eXBlKCkgPT0gRmls
dGVyT3BlcmF0aW9uOjpIVUVfUk9UQVRFKQotVFlQRV9DQVNUU19CQVNFKEJhc2ljQ29tcG9uZW50
VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24sIEZpbHRlck9wZXJhdGlvbiwgb3BlcmF0aW9uLCBvcGVy
YXRpb24tPnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OklOVkVSVCB8fCBvcGVyYXRpb24tPnR5
cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5FU1MgfHwgb3BlcmF0aW9uLT50eXBlKCkg
PT0gRmlsdGVyT3BlcmF0aW9uOjpDT05UUkFTVCB8fCBvcGVyYXRpb24tPnR5cGUoKSA9PSBGaWx0
ZXJPcGVyYXRpb246Ok9QQUNJVFksIG9wZXJhdGlvbi50eXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9u
OjpJTlZFUlQgfHwgb3BlcmF0aW9uLnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OkJSSUdIVE5F
U1MgfHwgb3BlcmF0aW9uLnR5cGUoKSA9PSBGaWx0ZXJPcGVyYXRpb246OkNPTlRSQVNUIHx8IG9w
ZXJhdGlvbi50eXBlKCkgPT0gRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZKQorRklMVEVST1BFUkFU
SU9OX1RZUEVfQ0FTVFMoRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiwgdHlwZSgpID09IEZpbHRl
ck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlck9wZXJhdGlvbnMuY3BwCmluZGV4IGQ2ZmQ4OTllOTI3ZjU3ZDBkZmIxYTNiZjJlZDk4
NTdjMGUzMDFlYmIuLjI1NDU0NjE1MDI4MTNhNDcxNWQwYjk1YjY3NDY1OTdjOWNkZTg5YjcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVy
T3BlcmF0aW9ucy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GaWx0ZXJPcGVyYXRpb25zLmNwcApAQCAtMTA4LDEwICsxMDgsMTAgQEAgRmlsdGVyT3V0
c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpvdXRzZXRzKCkgY29uc3QKIHsKICAgICBGaWx0ZXJPdXRz
ZXRzIHRvdGFsT3V0c2V0czsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1fb3BlcmF0aW9u
cy5zaXplKCk7ICsraSkgewotICAgICAgICBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlv
biA9IG1fb3BlcmF0aW9ucy5hdChpKS5nZXQoKTsKKyAgICAgICAgY29uc3QgRmlsdGVyT3BlcmF0
aW9uKiBmaWx0ZXJPcGVyYXRpb24gPSBtX29wZXJhdGlvbnMuYXQoaSkuZ2V0KCk7CiAgICAgICAg
IHN3aXRjaCAoZmlsdGVyT3BlcmF0aW9uLT50eXBlKCkpIHsKICAgICAgICAgY2FzZSBGaWx0ZXJP
cGVyYXRpb246OkJMVVI6IHsKLSAgICAgICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJP
cGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0
aW9uKTsKKyAgICAgICAgICAgIGNvbnN0IEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRp
b24gPSB0b0JsdXJGaWx0ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAg
IGZsb2F0IHN0ZERldmlhdGlvbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlvbi0+
c3RkRGV2aWF0aW9uKCksIDApOwogICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXRTaXplID0gb3V0
c2V0U2l6ZUZvckJsdXIoc3RkRGV2aWF0aW9uKTsKICAgICAgICAgICAgIEZpbHRlck91dHNldHMg
b3V0c2V0cyhvdXRzZXRTaXplLmhlaWdodCgpLCBvdXRzZXRTaXplLndpZHRoKCksIG91dHNldFNp
emUuaGVpZ2h0KCksIG91dHNldFNpemUud2lkdGgoKSk7CkBAIC0xMTksNyArMTE5LDcgQEAgRmls
dGVyT3V0c2V0cyBGaWx0ZXJPcGVyYXRpb25zOjpvdXRzZXRzKCkgY29uc3QKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NI
QURPVzogewotICAgICAgICAgICAgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogZHJvcFNoYWRv
d09wZXJhdGlvbiA9IHN0YXRpY19jYXN0PERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qPihmaWx0
ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgY29uc3QgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlv
biogZHJvcFNoYWRvd09wZXJhdGlvbiA9IHRvRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihmaWx0
ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAgSW50U2l6ZSBvdXRzZXRTaXplID0gb3V0c2V0U2l6
ZUZvckJsdXIoZHJvcFNoYWRvd09wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCkpOwogICAgICAgICAg
ICAgRmlsdGVyT3V0c2V0cyBvdXRzZXRzKAogICAgICAgICAgICAgICAgIHN0ZDo6bWF4KDAsIG91
dHNldFNpemUuaGVpZ2h0KCkgLSBkcm9wU2hhZG93T3BlcmF0aW9uLT55KCkpLApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKaW5kZXggMGYz
YzE0NDljYzgxNzJmMDYwNDNhMWJmZDE3ZTQwYjFmNmIzOTkxNy4uN2JjMWYwYmJmYjU1YTlhYjQw
Mjg4Y2Q2MTFhNTRlZDkyNTJjMjRlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL0ZpbHRlckVmZmVjdFJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvRmlsdGVyRWZmZWN0UmVuZGVyZXIuY3BwCkBAIC0xNDUsMTMgKzE0NSwxMyBAQCBib29sIEZp
bHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3Qg
RmlsdGVyT3BlcmF0aW9ucwogICAgICAgICBGaWx0ZXJPcGVyYXRpb24qIGZpbHRlck9wZXJhdGlv
biA9IG9wZXJhdGlvbnMub3BlcmF0aW9ucygpLmF0KGkpLmdldCgpOwogICAgICAgICBzd2l0Y2gg
KGZpbHRlck9wZXJhdGlvbi0+dHlwZSgpKSB7CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9u
OjpSRUZFUkVOQ0U6IHsKLSAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiogcmVm
ZXJlbmNlT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uKj4o
ZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiog
cmVmZXJlbmNlT3BlcmF0aW9uID0gdG9SZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24oZmlsdGVyT3Bl
cmF0aW9uKTsKICAgICAgICAgICAgIGVmZmVjdCA9IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKHJlbmRl
cmVyLCBwcmV2aW91c0VmZmVjdCwgcmVmZXJlbmNlT3BlcmF0aW9uKTsKICAgICAgICAgICAgIHJl
ZmVyZW5jZU9wZXJhdGlvbi0+c2V0RmlsdGVyRWZmZWN0KGVmZmVjdCk7CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6R1JBWVNDQUxF
OiB7Ci0gICAgICAgICAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1h
dHJpeE9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRp
b24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgQmFzaWNDb2xvck1hdHJpeEZpbHRl
ck9wZXJhdGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24gPSB0b0Jhc2ljQ29sb3JNYXRyaXhGaWx0
ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4g
aW5wdXRQYXJhbWV0ZXJzOwogICAgICAgICAgICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0gY2xh
bXBUbygxIC0gY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgpLCAwLjAsIDEuMCk7CiAKQEAg
LTE3OSw3ICsxNzksNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpidWlsZChSZW5kZXJF
bGVtZW50KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OlNFUElBOiB7Ci0g
ICAgICAgICAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBjb2xvck1hdHJpeE9w
ZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qPihm
aWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbiogY29sb3JNYXRyaXhPcGVyYXRpb24gPSB0b0Jhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVy
YXRpb24oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gaW5wdXRQ
YXJhbWV0ZXJzOwogICAgICAgICAgICAgZG91YmxlIG9uZU1pbnVzQW1vdW50ID0gY2xhbXBUbygx
IC0gY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgpLCAwLjAsIDEuMCk7CiAKQEAgLTIwNywy
MSArMjA3LDIxIEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zCiAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6U0FUVVJBVEU6IHsKLSAg
ICAgICAgICAgIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3Bl
cmF0aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZp
bHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0
aW9uKiBjb2xvck1hdHJpeE9wZXJhdGlvbiA9IHRvQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJh
dGlvbihmaWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBh
cmFtZXRlcnM7CiAgICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNp
c2lvblRvRmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgpKSk7CiAgICAgICAgICAg
ICBlZmZlY3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBF
X1NBVFVSQVRFLCBpbnB1dFBhcmFtZXRlcnMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
IH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkhVRV9ST1RBVEU6IHsKLSAgICAgICAg
ICAgIEJhc2ljQ29sb3JNYXRyaXhGaWx0ZXJPcGVyYXRpb24qIGNvbG9yTWF0cml4T3BlcmF0aW9u
ID0gc3RhdGljX2Nhc3Q8QmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbio+KGZpbHRlck9w
ZXJhdGlvbik7CisgICAgICAgICAgICBCYXNpY0NvbG9yTWF0cml4RmlsdGVyT3BlcmF0aW9uKiBj
b2xvck1hdHJpeE9wZXJhdGlvbiA9IHRvQmFzaWNDb2xvck1hdHJpeEZpbHRlck9wZXJhdGlvbihm
aWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAgVmVjdG9yPGZsb2F0PiBpbnB1dFBhcmFtZXRl
cnM7CiAgICAgICAgICAgICBpbnB1dFBhcmFtZXRlcnMuYXBwZW5kKG5hcnJvd1ByZWNpc2lvblRv
RmxvYXQoY29sb3JNYXRyaXhPcGVyYXRpb24tPmFtb3VudCgpKSk7CiAgICAgICAgICAgICBlZmZl
Y3QgPSBGRUNvbG9yTWF0cml4OjpjcmVhdGUodGhpcywgRkVDT0xPUk1BVFJJWF9UWVBFX0hVRVJP
VEFURSwgaW5wdXRQYXJhbWV0ZXJzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpJTlZFUlQ6IHsKLSAgICAgICAgICAgIEJhc2lj
Q29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0
aW9uID0gc3RhdGljX2Nhc3Q8QmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbio+
KGZpbHRlck9wZXJhdGlvbik7CisgICAgICAgICAgICBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmls
dGVyT3BlcmF0aW9uKiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbiA9IHRvQmFzaWNDb21wb25l
bnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbihmaWx0ZXJPcGVyYXRpb24pOwogICAgICAgICAgICAg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiB0cmFuc2ZlckZ1bmN0aW9uOwogICAgICAgICAgICAg
dHJhbnNmZXJGdW5jdGlvbi50eXBlID0gRkVDT01QT05FTlRUUkFOU0ZFUl9UWVBFX1RBQkxFOwog
ICAgICAgICAgICAgVmVjdG9yPGZsb2F0PiB0cmFuc2ZlclBhcmFtZXRlcnM7CkBAIC0yMzQsNyAr
MjM0LDcgQEAgYm9vbCBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCog
cmVuZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMKICAgICAgICAgICAgIGJyZWFrOwogICAg
ICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpPUEFDSVRZOiB7Ci0gICAgICAg
ICAgICBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKiBjb21wb25lbnRUcmFu
c2Zlck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJP
cGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAgICAgICAgQmFzaWNDb21wb25lbnRU
cmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSB0b0Jh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0aW9uKTsKICAg
ICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gdHJhbnNmZXJGdW5jdGlvbjsKICAg
ICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZFQ09NUE9ORU5UVFJBTlNGRVJfVFlQ
RV9UQUJMRTsKICAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gdHJhbnNmZXJQYXJhbWV0ZXJzOwpA
QCAtMjQ3LDcgKzI0Nyw3IEBAIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXI6OmJ1aWxkKFJlbmRl
ckVsZW1lbnQqIHJlbmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6QlJJR0hUTkVT
UzogewotICAgICAgICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiog
Y29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24gPSBzdGF0aWNfY2FzdDxCYXNpY0NvbXBvbmVudFRy
YW5zZmVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgICAgIEJh
c2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qIGNvbXBvbmVudFRyYW5zZmVyT3Bl
cmF0aW9uID0gdG9CYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3BlcmF0aW9uKGZpbHRlck9w
ZXJhdGlvbik7CiAgICAgICAgICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHRyYW5zZmVy
RnVuY3Rpb247CiAgICAgICAgICAgICB0cmFuc2ZlckZ1bmN0aW9uLnR5cGUgPSBGRUNPTVBPTkVO
VFRSQU5TRkVSX1RZUEVfTElORUFSOwogICAgICAgICAgICAgdHJhbnNmZXJGdW5jdGlvbi5zbG9w
ZSA9IG5hcnJvd1ByZWNpc2lvblRvRmxvYXQoY29tcG9uZW50VHJhbnNmZXJPcGVyYXRpb24tPmFt
b3VudCgpKTsKQEAgLTI1OCw3ICsyNTgsNyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpi
dWlsZChSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkNPTlRSQVNUOiB7Ci0gICAgICAgICAgICBCYXNpY0NvbXBvbmVudFRyYW5zZmVyRmlsdGVyT3Bl
cmF0aW9uKiBjb21wb25lbnRUcmFuc2Zlck9wZXJhdGlvbiA9IHN0YXRpY19jYXN0PEJhc2ljQ29t
cG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRpb24pOworICAgICAg
ICAgICAgQmFzaWNDb21wb25lbnRUcmFuc2ZlckZpbHRlck9wZXJhdGlvbiogY29tcG9uZW50VHJh
bnNmZXJPcGVyYXRpb24gPSB0b0Jhc2ljQ29tcG9uZW50VHJhbnNmZXJGaWx0ZXJPcGVyYXRpb24o
ZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24g
dHJhbnNmZXJGdW5jdGlvbjsKICAgICAgICAgICAgIHRyYW5zZmVyRnVuY3Rpb24udHlwZSA9IEZF
Q09NUE9ORU5UVFJBTlNGRVJfVFlQRV9MSU5FQVI7CiAgICAgICAgICAgICBmbG9hdCBhbW91bnQg
PSBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KGNvbXBvbmVudFRyYW5zZmVyT3BlcmF0aW9uLT5hbW91
bnQoKSk7CkBAIC0yNzAsMTMgKzI3MCwxMyBAQCBib29sIEZpbHRlckVmZmVjdFJlbmRlcmVyOjpi
dWlsZChSZW5kZXJFbGVtZW50KiByZW5kZXJlciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246
OkJMVVI6IHsKLSAgICAgICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24g
PSBzdGF0aWNfY2FzdDxCbHVyRmlsdGVyT3BlcmF0aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAg
ICAgICAgICAgIEJsdXJGaWx0ZXJPcGVyYXRpb24qIGJsdXJPcGVyYXRpb24gPSB0b0JsdXJGaWx0
ZXJPcGVyYXRpb24oZmlsdGVyT3BlcmF0aW9uKTsKICAgICAgICAgICAgIGZsb2F0IHN0ZERldmlh
dGlvbiA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoYmx1ck9wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCks
IDApOwogICAgICAgICAgICAgZWZmZWN0ID0gRkVHYXVzc2lhbkJsdXI6OmNyZWF0ZSh0aGlzLCBz
dGREZXZpYXRpb24sIHN0ZERldmlhdGlvbiwgY29uc3VtZXIgPT0gRmlsdGVyUHJvcGVydHkgPyBF
REdFTU9ERV9OT05FIDogRURHRU1PREVfRFVQTElDQVRFKTsKICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CiAgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVzogewot
ICAgICAgICAgICAgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogZHJvcFNoYWRvd09wZXJhdGlv
biA9IHN0YXRpY19jYXN0PERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb24qPihmaWx0ZXJPcGVyYXRp
b24pOworICAgICAgICAgICAgRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbiogZHJvcFNoYWRvd09w
ZXJhdGlvbiA9IHRvRHJvcFNoYWRvd0ZpbHRlck9wZXJhdGlvbihmaWx0ZXJPcGVyYXRpb24pOwog
ICAgICAgICAgICAgZWZmZWN0ID0gRkVEcm9wU2hhZG93OjpjcmVhdGUodGhpcywgZHJvcFNoYWRv
d09wZXJhdGlvbi0+c3RkRGV2aWF0aW9uKCksIGRyb3BTaGFkb3dPcGVyYXRpb24tPnN0ZERldmlh
dGlvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZHJvcFNoYWRvd09wZXJhdGlvbi0+eCgpLCBkcm9wU2hhZG93T3BlcmF0aW9uLT55KCksIGRyb3BT
aGFkb3dPcGVyYXRpb24tPmNvbG9yKCksIDEpOwogICAgICAgICAgICAgYnJlYWs7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJJbmZvLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCmluZGV4
IDM5N2VhZmUwMTdlN2U1OTE5ZmQxYzA2ZDMwYTA1Yjg2NmY3ZDc3OWEuLjM2N2Q5YWU0NDVlZTIy
NjMwNDcxNzVjMjAxN2MxMDliOGFmNmQwMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJMYXllckZpbHRlckluZm8uY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgdm9p
ZCBSZW5kZXJMYXllcjo6RmlsdGVySW5mbzo6dXBkYXRlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cyhj
b25zdCBGaWx0ZXJPcGVyYXRpb24KICAgICAgICAgRmlsdGVyT3BlcmF0aW9uKiBmaWx0ZXJPcGVy
YXRpb24gPSBvcGVyYXRpb25zLm9wZXJhdGlvbnMoKVtpXS5nZXQoKTsKICAgICAgICAgaWYgKGZp
bHRlck9wZXJhdGlvbi0+dHlwZSgpICE9IEZpbHRlck9wZXJhdGlvbjo6UkVGRVJFTkNFKQogICAg
ICAgICAgICAgY29udGludWU7Ci0gICAgICAgIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiogcmVm
ZXJlbmNlRmlsdGVyT3BlcmF0aW9uID0gc3RhdGljX2Nhc3Q8UmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uKj4oZmlsdGVyT3BlcmF0aW9uKTsKKyAgICAgICAgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9u
KiByZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24gPSB0b1JlZmVyZW5jZUZpbHRlck9wZXJhdGlvbihm
aWx0ZXJPcGVyYXRpb24pOwogICAgICAgICBDYWNoZWRTVkdEb2N1bWVudFJlZmVyZW5jZSogZG9j
dW1lbnRSZWZlcmVuY2UgPSByZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24tPmNhY2hlZFNWR0RvY3Vt
ZW50UmVmZXJlbmNlKCk7CiAgICAgICAgIENhY2hlZFNWR0RvY3VtZW50KiBjYWNoZWRTVkdEb2N1
bWVudCA9IGRvY3VtZW50UmVmZXJlbmNlID8gZG9jdW1lbnRSZWZlcmVuY2UtPmRvY3VtZW50KCkg
OiAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViQ29yZUFyZ3VtZW50
Q29kZXJzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMu
Y3BwCmluZGV4IDJjYjUyNDgwMzliOTgwMTg3ZTkzMmMwMGQ1OGEwYjE5ODQ0ZGE3MzQuLmNlMjg0
MTQ5MTlkZDVkMGEyN2RlNDZiZTViNmNjNzYxNjhjMWY3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9XZWJDb3JlQXJndW1lbnRDb2RlcnMuY3BwCkBAIC0xNjA4LDYgKzE2MDgsNyBA
QCBzdGF0aWMgdm9pZCBlbmNvZGVGaWx0ZXJPcGVyYXRpb24oQXJndW1lbnRFbmNvZGVyJiBlbmNv
ZGVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpbwogICAgICAgICBlbmNvZGVyIDw8IGRyb3BTaGFkb3dG
aWx0ZXIuY29sb3IoKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpERUZBVUxUOgogICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpQQVNTVEhST1VHSDoK
ICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6Tk9ORToKICAgICAgICAgYnJlYWs7CkBAIC0xNjI4
LDcgKzE2MjksNyBAQCBzdGF0aWMgYm9vbCBkZWNvZGVGaWx0ZXJPcGVyYXRpb24oQXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBSZWZQdHI8RmlsdGVyT3BlcmF0aQogICAgICAgICAgICAgcmV0dXJu
IGZhbHNlOwogICAgICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKGZyYWdtZW50KSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZmlsdGVyID0gUmVmZXJlbmNlRmlsdGVyT3BlcmF0
aW9uOjpjcmVhdGUodXJsLCBmcmFnbWVudCwgdHlwZSk7CisgICAgICAgIGZpbHRlciA9IFJlZmVy
ZW5jZUZpbHRlck9wZXJhdGlvbjo6Y3JlYXRlKHVybCwgZnJhZ21lbnQpOwogICAgICAgICBicmVh
azsKICAgICB9CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkdSQVlTQ0FMRToKQEAgLTE2NTUs
NyArMTY1Niw3IEBAIHN0YXRpYyBib29sIGRlY29kZUZpbHRlck9wZXJhdGlvbihBcmd1bWVudERl
Y29kZXImIGRlY29kZXIsIFJlZlB0cjxGaWx0ZXJPcGVyYXRpCiAgICAgICAgIExlbmd0aCBzdGRE
ZXZpYXRpb247CiAgICAgICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc3RkRGV2aWF0aW9uKSkKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgZmlsdGVyID0gQmx1ckZpbHRlck9wZXJh
dGlvbjo6Y3JlYXRlKHN0ZERldmlhdGlvbiwgdHlwZSk7CisgICAgICAgIGZpbHRlciA9IEJsdXJG
aWx0ZXJPcGVyYXRpb246OmNyZWF0ZShzdGREZXZpYXRpb24pOwogICAgICAgICBicmVhazsKICAg
ICB9CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246OkRST1BfU0hBRE9XOiB7CkBAIC0xNjY4LDkg
KzE2NjksMTAgQEAgc3RhdGljIGJvb2wgZGVjb2RlRmlsdGVyT3BlcmF0aW9uKEFyZ3VtZW50RGVj
b2RlciYgZGVjb2RlciwgUmVmUHRyPEZpbHRlck9wZXJhdGkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICAgICAgaWYgKCFkZWNvZGVyLmRlY29kZShjb2xvcikpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIGZpbHRlciA9IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246
OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2aWF0aW9uLCBjb2xvciwgdHlwZSk7CisgICAgICAgIGZp
bHRlciA9IERyb3BTaGFkb3dGaWx0ZXJPcGVyYXRpb246OmNyZWF0ZShsb2NhdGlvbiwgc3RkRGV2
aWF0aW9uLCBjb2xvcik7CiAgICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIEZpbHRlck9w
ZXJhdGlvbjo6REVGQVVMVDoKICAgICBjYXNlIEZpbHRlck9wZXJhdGlvbjo6UEFTU1RIUk9VR0g6
CiAgICAgY2FzZSBGaWx0ZXJPcGVyYXRpb246Ok5PTkU6CiAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9tYWMvUmVtb3RlTGF5ZXJUcmVlVHJhbnNhY3Rp
b24ubW0KaW5kZXggNWUyMWQxZmE5ODc4ZTcwMGNkOTk1YTVlMzdhZDY2OGZhZDZiYWNhNi4uZWNm
YzE4YWQ1ODYxOGM2NWI5NDQzMTdlMGY5MTg4N2UzMWYzMzczNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL21hYy9SZW1vdGVMYXllclRyZWVUcmFuc2FjdGlvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvbWFjL1JlbW90ZUxheWVyVHJlZVRyYW5zYWN0aW9uLm1tCkBA
IC02MzIsNiArNjMyLDkgQEAgUmVtb3RlTGF5ZXJUcmVlVGV4dFN0cmVhbSYgUmVtb3RlTGF5ZXJU
cmVlVGV4dFN0cmVhbTo6b3BlcmF0b3I8PChjb25zdCBGaWx0ZXJPcGUKICAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IGZpbHRlcnMuc2l6ZSgpOyArK2kpIHsKICAgICAgICAgY29uc3QgYXV0byBm
aWx0ZXIgPSBmaWx0ZXJzLmF0KGkpOwogICAgICAgICBzd2l0Y2ggKGZpbHRlci0+dHlwZSgpKSB7
CisgICAgICAgIGNhc2UgRmlsdGVyT3BlcmF0aW9uOjpERUZBVUxUOgorICAgICAgICAgICAgdHMg
PDwgImRlZmF1bHQiOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgRmlsdGVyT3Bl
cmF0aW9uOjpSRUZFUkVOQ0U6CiAgICAgICAgICAgICB0cyA8PCAicmVmZXJlbmNlIjsKICAgICAg
ICAgICAgIGJyZWFrOwo=
</data>
<flag name="review"
          id="252742"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>