<?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>176238</bug_id>
          
          <creation_ts>2017-09-01 12:02:34 -0700</creation_ts>
          <short_desc>WSL should allow you to say &quot;protocol Foo : Bar { ... }&quot;</short_desc>
          <delta_ts>2018-10-13 19:53:27 -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>WebGPU</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>176199</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>mmaxfield</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1344514</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-01 12:02:34 -0700</bug_when>
    <thetext>This would include all of Bar&apos;s signatures into Foo, and then Foo would be a subprotocol of Bar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1347807</commentid>
    <comment_count>1</comment_count>
      <attachid>320519</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-11 22:37:05 -0700</bug_when>
    <thetext>Created attachment 320519
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348048</commentid>
    <comment_count>2</comment_count>
      <attachid>320519</attachid>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2017-09-12 14:56:06 -0700</bug_when>
    <thetext>Comment on attachment 320519
the patch

Looks good.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1348053</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2017-09-12 15:04:26 -0700</bug_when>
    <thetext>Landed in https://trac.webkit.org/changeset/221940/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353584</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:40:09 -0700</bug_when>
    <thetext>&lt;rdar://problem/34693720&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1469003</commentid>
    <comment_count>5</comment_count>
    <who name="Myles C. Maxfield">mmaxfield</who>
    <bug_when>2018-10-13 19:53:27 -0700</bug_when>
    <thetext>Migrated to https://github.com/gpuweb/WHLSL/issues/197</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>320519</attachid>
            <date>2017-09-11 22:37:05 -0700</date>
            <delta_ts>2017-09-12 14:56:06 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>34004</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDIyMTkwMSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDEyNyBAQAorMjAxNy0wOS0xMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgor
CisgICAgICAgIFdTTCBzaG91bGQgYWxsb3cgeW91IHRvIHNheSAicHJvdG9jb2wgRm9vIDogQmFy
IHsgLi4uIH0iCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNzYyMzgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKyAgICAgICAg
CisgICAgICAgIFRoaXMgbWFrZXMgcHJvdG9jb2wgInN1YnR5cGluZyIgd29yay4gSXQncyBub3Qg
cmVhbGx5IHN1YnR5cGluZy4gUHJvdG9jb2wgQSBpbmhlcml0cyBwcm90b2NvbCBCCisgICAgICAg
IGlmIGV2ZXJ5IHNpZ25hdHVyZSBpbiBCIGNhbiBiZSByZXNvbHZlZCBhZ2FpbnN0IHNvbWUgc2ln
bmF0dXJlIGluIEEuIEFsc28sIHlvdSBjYW4gZXhwbGljaXRseQorICAgICAgICBzdWJ0eXBlIHBy
b3RvY29scyB1c2luZyBleHRlbmRzIHN5bnRheCAoInByb3RvY29sIEZvbyA6IEJhciwgQmF6IHsg
Li4uIH0iKS4KKyAgICAgICAgCisgICAgICAgIEFsc28gbWFrZXMgdGhlIGRpYWdub3N0aWNzIHdo
ZW4gdHlwZSB2YXJpYWJsZSBjb25zdHJhaW50cyBmYWlsIGEgX2xvdF8gYmV0dGVyLiBUaGlzIHdp
bGwgZXZlbgorICAgICAgICB0ZWxsIHlvdSBkaWFnbm9zdGljcyBhYm91dCB3aHkgYSBmdW5jdGlv
biBkaWRuJ3QgbWF0Y2ggd2hlbiBwcm90b2NvbHMgYXJlIG5vdCBpbmhlcml0aW5nLCBhbmQKKyAg
ICAgICAgdGhlbiBpdCB3aWxsIHRlbGwgeW91IHdoeSB0aGUgaW5oZXJpdGFuY2UgZmFpbGVkLgor
CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQWxsLmpzOgorICAgICAgICAqIFdl
YkdQVVNoYWRpbmdMYW5ndWFnZVJJL0F1dG9XcmFwcGVyLmpzOgorICAgICAgICAoQXV0b1dyYXBw
ZXIucHJvdG90eXBlLnZpc2l0VHlwZVZhcmlhYmxlKToKKyAgICAgICAgKEF1dG9XcmFwcGVyKToK
KyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2VyLmpzOgorICAgICAgICAo
Q2hlY2tlci5wcm90b3R5cGUudmlzaXRQcm90b2NvbERlY2wuc2V0IHRocm93KToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Db25zdGV4cHJUeXBlUGFyYW1ldGVyLmpzOgorICAg
ICAgICAoQ29uc3RleHByVHlwZVBhcmFtZXRlci5wcm90b3R5cGUudmVyaWZ5QXNBcmd1bWVudCk6
CisgICAgICAgIChDb25zdGV4cHJUeXBlUGFyYW1ldGVyLnByb3RvdHlwZS52ZXJpZnlBc1BhcmFt
ZXRlcik6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRmxhdHRlblByb3RvY29s
RXh0ZW5kcy5qczogQWRkZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVu
Yy5qczoKKyAgICAgICAgKEZ1bmMucHJvdG90eXBlLmdldCB0eXBlUGFyYW1ldGVyc0ZvckNhbGxS
ZXNvbHV0aW9uKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmZlclR5cGVz
Rm9yQ2FsbC5qczoKKyAgICAgICAgKGluZmVyVHlwZXNGb3JDYWxsKToKKyAgICAgICAgKiBXZWJH
UFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRMaXRlcmFsVHlwZS5qczoKKyAgICAgICAgKEludExpdGVy
YWxUeXBlLnByb3RvdHlwZS52ZXJpZnlBc0FyZ3VtZW50KToKKyAgICAgICAgKiBXZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9OYW1lUmVzb2x2ZXIuanM6CisgICAgICAgIChOYW1lUmVzb2x2ZXIucHJv
dG90eXBlLnZpc2l0UHJvdG9jb2xEZWNsKToKKyAgICAgICAgKE5hbWVSZXNvbHZlci5wcm90b3R5
cGUudmlzaXRQcm90b2NvbFJlZik6IERlbGV0ZWQuCisgICAgICAgIChOYW1lUmVzb2x2ZXIucHJv
dG90eXBlLnZpc2l0UHJvdG9jb2xGdW5jRGVjbCk6IERlbGV0ZWQuCisgICAgICAgIChOYW1lUmVz
b2x2ZXIucHJvdG90eXBlLnZpc2l0VHlwZURlZik6IERlbGV0ZWQuCisgICAgICAgIChOYW1lUmVz
b2x2ZXIucHJvdG90eXBlLnZpc2l0U3RydWN0VHlwZSk6IERlbGV0ZWQuCisgICAgICAgIChOYW1l
UmVzb2x2ZXIucHJvdG90eXBlLl9yZXNvbHZlVHlwZUFyZ3VtZW50cyk6IERlbGV0ZWQuCisgICAg
ICAgIChOYW1lUmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0VHlwZVJlZik6IERlbGV0ZWQuCisgICAg
ICAgIChOYW1lUmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0UmVmZXJlbmNlVHlwZSk6IERlbGV0ZWQu
CisgICAgICAgIChOYW1lUmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0VmFyaWFibGVEZWNsKTogRGVs
ZXRlZC4KKyAgICAgICAgKE5hbWVSZXNvbHZlci5wcm90b3R5cGUudmlzaXRWYXJpYWJsZVJlZik6
IERlbGV0ZWQuCisgICAgICAgIChOYW1lUmVzb2x2ZXIucHJvdG90eXBlLnZpc2l0UmV0dXJuKTog
RGVsZXRlZC4KKyAgICAgICAgKE5hbWVSZXNvbHZlci5wcm90b3R5cGUudmlzaXRDYWxsRXhwcmVz
c2lvbik6IERlbGV0ZWQuCisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTm9kZS5q
czoKKyAgICAgICAgKE5vZGUucHJvdG90eXBlLmVxdWFscyk6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvTnVsbFR5cGUuanM6CisgICAgICAgIChOdWxsVHlwZS5wcm90b3R5cGUu
dmVyaWZ5QXNBcmd1bWVudCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUGFy
c2UuanM6CisgICAgICAgIChwYXJzZVByb3RvY29sRGVjbCk6CisgICAgICAgICogV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qczoKKyAgICAgICAgKHByZXBhcmUpOgorICAgICAgICAq
IFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb3RvY29sRGVjbC5qczoKKyAgICAgICAgKFByb3Rv
Y29sRGVjbCk6IERlbGV0ZWQuCisgICAgICAgIChQcm90b2NvbERlY2wucHJvdG90eXBlLmFkZCk6
IERlbGV0ZWQuCisgICAgICAgIChQcm90b2NvbERlY2wucHJvdG90eXBlLmdldCBzaWduYXR1cmVz
KTogRGVsZXRlZC4KKyAgICAgICAgKFByb3RvY29sRGVjbC5wcm90b3R5cGUuc2lnbmF0dXJlc0J5
TmFtZSk6IERlbGV0ZWQuCisgICAgICAgIChQcm90b2NvbERlY2wucHJvdG90eXBlLmdldCB0eXBl
VmFyaWFibGUpOiBEZWxldGVkLgorICAgICAgICAoUHJvdG9jb2xEZWNsLnByb3RvdHlwZS5zaWdu
YXR1cmVzQnlOYW1lV2l0aFR5cGVWYXJpYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChQcm90b2Nv
bERlY2wucHJvdG90eXBlLmluaGVyaXRzKTogRGVsZXRlZC4KKyAgICAgICAgKFByb3RvY29sRGVj
bC5wcm90b3R5cGUuaGFzSGVpcik6IERlbGV0ZWQuCisgICAgICAgIChQcm90b2NvbERlY2wucHJv
dG90eXBlLnRvU3RyaW5nKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9Qcm90b2NvbEZ1bmNEZWNsLmpzOgorICAgICAgICAoUHJvdG9jb2xGdW5jRGVjbC5wcm90
b3R5cGUuZ2V0IHR5cGVQYXJhbWV0ZXJzRm9yQ2FsbFJlc29sdXRpb24pOgorICAgICAgICAoUHJv
dG9jb2xGdW5jRGVjbCk6CisgICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUmV3cml0
ZXIuanM6CisgICAgICAgIChSZXdyaXRlci5wcm90b3R5cGUudmlzaXRQcm90b2NvbERlY2wpOgor
ICAgICAgICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Rlc3QuaHRtbDoKKyAgICAgICAgKiBX
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0LmpzOgorICAgICAgICAoVEVTVF9udWxsVHlwZVZh
cmlhYmxlVW5pZnkpOgorICAgICAgICAoVEVTVF9zaW1wbGVQcm90b2NvbEV4dGVuZHMpOgorICAg
ICAgICAoVEVTVF9wcm90b2NvbEV4dGVuZHNUd28pOgorICAgICAgICAqIFdlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1R5cGUuanM6CisgICAgICAgIChUeXBlLnByb3RvdHlwZS5pbmhlcml0cyk6Cisg
ICAgICAgICogV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZURlZlJlc29sdmVyLmpzOgorICAg
ICAgICAoVHlwZURlZlJlc29sdmVyLnByb3RvdHlwZS52aXNpdFR5cGVSZWYpOgorICAgICAgICAo
VHlwZURlZlJlc29sdmVyKToKKyAgICAgICAgKiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBl
VmFyaWFibGUuanM6CisgICAgICAgIChUeXBlVmFyaWFibGUucHJvdG90eXBlLmluaGVyaXRzKToK
KyAgICAgICAgKFR5cGVWYXJpYWJsZS5wcm90b3R5cGUudmVyaWZ5QXNBcmd1bWVudCk6CisgICAg
ICAgIChUeXBlVmFyaWFibGUucHJvdG90eXBlLnZlcmlmeUFzUGFyYW1ldGVyKToKKyAgICAgICAg
KiBXZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9VbmlmaWNhdGlvbkNvbnRleHQuanM6CisgICAgICAg
IChVbmlmaWNhdGlvbkNvbnRleHQucHJvdG90eXBlLnZlcmlmeSk6CisgICAgICAgICogV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvVmlzaXRvci5qczoKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBl
LnZpc2l0UHJvdG9jb2xEZWNsKToKKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0VHlw
ZVJlZik6IERlbGV0ZWQuCisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdE5hdGl2ZVR5
cGUpOiBEZWxldGVkLgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXROYXRpdmVUeXBl
SW5zdGFuY2UpOiBEZWxldGVkLgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRUeXBl
RGVmKTogRGVsZXRlZC4KKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0U3RydWN0VHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdFR5cGVWYXJpYWJs
ZSk6IERlbGV0ZWQuCisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdENvbnN0ZXhwclR5
cGVQYXJhbWV0ZXIpOiBEZWxldGVkLgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRG
aWVsZCk6IERlbGV0ZWQuCisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdEVsZW1lbnRh
bFR5cGUpOiBEZWxldGVkLgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRSZWZlcmVu
Y2VUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0UHRyVHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdEFycmF5UmVmVHlw
ZSk6IERlbGV0ZWQuCisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdEFycmF5VHlwZSk6
IERlbGV0ZWQuCisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdFZhcmlhYmxlRGVjbCk6
IERlbGV0ZWQuCisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdEFzc2lnbm1lbnQpOiBE
ZWxldGVkLgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXREZXJlZmVyZW5jZUV4cHJl
c3Npb24pOiBEZWxldGVkLgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXREb3RFeHBy
ZXNzaW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0TWFrZVB0
ckV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRW
YXJpYWJsZVJlZik6IERlbGV0ZWQuCisgICAgICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdElm
U3RhdGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0V2hp
bGVMb29wKTogRGVsZXRlZC4KKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0RG9XaGls
ZUxvb3ApOiBEZWxldGVkLgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRGb3JMb29w
KTogRGVsZXRlZC4KKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0UmV0dXJuKTogRGVs
ZXRlZC4KKyAgICAgICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0Q29udGludWUpOiBEZWxldGVk
LgorICAgICAgICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRCcmVhayk6IERlbGV0ZWQuCisgICAg
ICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdEludExpdGVyYWwpOiBEZWxldGVkLgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRJbnRMaXRlcmFsVHlwZSk6IERlbGV0ZWQuCisgICAg
ICAgIChWaXNpdG9yLnByb3RvdHlwZS52aXNpdFVpbnRMaXRlcmFsKTogRGVsZXRlZC4KKyAgICAg
ICAgKFZpc2l0b3IucHJvdG90eXBlLnZpc2l0TnVsbExpdGVyYWwpOiBEZWxldGVkLgorICAgICAg
ICAoVmlzaXRvci5wcm90b3R5cGUudmlzaXRCb29sTGl0ZXJhbCk6IERlbGV0ZWQuCisgICAgICAg
IChWaXNpdG9yLnByb3RvdHlwZS52aXNpdE51bGxUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKFZp
c2l0b3IucHJvdG90eXBlLnZpc2l0Q2FsbEV4cHJlc3Npb24pOiBEZWxldGVkLgorICAgICAgICAo
VmlzaXRvci5wcm90b3R5cGUudmlzaXRMb2dpY2FsTm90KTogRGVsZXRlZC4KKyAgICAgICAgKFZp
c2l0b3IucHJvdG90eXBlLnZpc2l0RnVuY3Rpb25MaWtlQmxvY2spOiBEZWxldGVkLgorICAgICAg
ICAqIFdlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1dyYXBDaGVja2VyLmpzOgorICAgICAgICAoV3Jh
cENoZWNrZXIucHJvdG90eXBlLnZpc2l0VHlwZVZhcmlhYmxlKToKKyAgICAgICAgKFdyYXBDaGVj
a2VyKToKKwogMjAxNy0wOS0xMSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNv
bT4KIAogICAgICAgICBbaU9TIFdLMl0gU3VwcG9ydCB0YXBwaW5nIHRvIGFkZCBpdGVtcyB0byB0
aGUgY3VycmVudCBkcmFnIHNlc3Npb24gaW4gd2ViIGNvbnRlbnQKSW5kZXg6IFRvb2xzL1dlYkdQ
VVNoYWRpbmdMYW5ndWFnZVJJL0FsbC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9BbGwuanMJKHJldmlzaW9uIDIyMTkwMCkKKysrIFRvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL0FsbC5qcwkod29ya2luZyBjb3B5KQpAQCAtNjYsNiArNjYsNyBAQCBs
b2FkKCJFdmFsdWF0aW9uQ29tbW9uLmpzIik7CiBsb2FkKCJFdmFsdWF0b3IuanMiKTsKIGxvYWQo
IkV4cHJlc3Npb25GaW5kZXIuanMiKTsKIGxvYWQoIkZpZWxkLmpzIik7Citsb2FkKCJGbGF0dGVu
UHJvdG9jb2xFeHRlbmRzLmpzIik7CiBsb2FkKCJGb3JMb29wLmpzIik7CiBsb2FkKCJGdW5jLmpz
Iik7CiBsb2FkKCJGdW5jRGVmLmpzIik7CkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3Vh
Z2VSSS9BdXRvV3JhcHBlci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9BdXRvV3JhcHBlci5qcwkocmV2aXNpb24gMjIxOTAwKQorKysgVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvQXV0b1dyYXBwZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTU5LDQg
KzU5LDkgQEAgY2xhc3MgQXV0b1dyYXBwZXIgZXh0ZW5kcyBSZXdyaXRlciB7CiAgICAgewogICAg
ICAgICByZXR1cm4gVHlwZVJlZi53cmFwKG5vZGUpOwogICAgIH0KKyAgICAKKyAgICB2aXNpdFR5
cGVWYXJpYWJsZShub2RlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIFR5cGVSZWYud3JhcChub2Rl
KTsKKyAgICB9CiB9CkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9DaGVja2Vy
LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NoZWNrZXIu
anMJKHJldmlzaW9uIDIyMTkwMCkKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0No
ZWNrZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTY3LDcgKzY3LDcgQEAgY2xhc3MgQ2hlY2tlciBl
eHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgICAgICAgICB0aHJvdyBXVHlwZUVycm9yKHR5
cGVQYXJhbWV0ZXIub3JpZ2luLm9yaWdpblN0cmluZywgIlR5cGUgcGFyYW1ldGVyIHRvIHByb3Rv
Y29sIHNpZ25hdHVyZSBub3QgaW5mZXJyYWJsZSBmcm9tIHZhbHVlIHBhcmFtZXRlcnMiKTsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc2V0Lmhhcyhub2RlLnR5cGVWYXJpYWJsZSkp
Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFdUeXBlRXJyb3Ioc2lnbmF0dXJlLm9yaWdpbi5v
cmlnaW5TdHJpbmcsICJQcm90b2NvbCdzIHR5cGUgdmFyaWFibGUgbm90IG1lbnRpb25lZCBpbiBz
aWduYXR1cmUiKTsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgV1R5cGVFcnJvcihzaWduYXR1
cmUub3JpZ2luLm9yaWdpblN0cmluZywgIlByb3RvY29sJ3MgdHlwZSB2YXJpYWJsZSAoIiArIG5v
ZGUubmFtZSArICIpIG5vdCBtZW50aW9uZWQgaW4gc2lnbmF0dXJlOiAiICsgc2lnbmF0dXJlKTsK
ICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTc3LDggKzc3LDkgQEAgY2xhc3MgQ2hlY2tlciBl
eHRlbmRzIFZpc2l0b3IgewogICAgICAgICAgICAgbGV0IGFyZ3VtZW50SXNUeXBlID0gdHlwZUFy
Z3VtZW50c1tpXSBpbnN0YW5jZW9mIFR5cGU7CiAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdHlw
ZUFyZ3VtZW50c1tpXS52aXNpdCh0aGlzKTsKICAgICAgICAgICAgIGlmIChhcmd1bWVudElzVHlw
ZSkgewotICAgICAgICAgICAgICAgIGlmICghdHlwZUFyZ3VtZW50c1tpXS5pbmhlcml0cyh0eXBl
UGFyYW1ldGVyc1tpXS5wcm90b2NvbCkpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBX
VHlwZUVycm9yKG9yaWdpbi5vcmlnaW5TdHJpbmcsICJUeXBlIGFyZ3VtZW50IGRvZXMgbm90IGlu
aGVyaXQgcHJvdG9jb2wiKTsKKyAgICAgICAgICAgICAgICBsZXQgcmVzdWx0ID0gdHlwZUFyZ3Vt
ZW50c1tpXS5pbmhlcml0cyh0eXBlUGFyYW1ldGVyc1tpXS5wcm90b2NvbCk7CisgICAgICAgICAg
ICAgICAgaWYgKCFyZXN1bHQucmVzdWx0KQorICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcg
V1R5cGVFcnJvcihvcmlnaW4ub3JpZ2luU3RyaW5nLCAiVHlwZSBhcmd1bWVudCBkb2VzIG5vdCBp
bmhlcml0IHByb3RvY29sOiAiICsgcmVzdWx0LnJlYXNvbik7CiAgICAgICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgICAgIGlmICghcmVzdWx0LmVxdWFsc1dpdGhDb21taXQodHlwZVBhcmFt
ZXRlcnNbaV0udHlwZSkpCiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9y
KG9yaWdpbi5vcmlnaW5TdHJpbmcsICJXcm9uZyB0eXBlIGZvciBjb25zdGV4cHIiKTsKSW5kZXg6
IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0NvbnN0ZXhwclR5cGVQYXJhbWV0ZXIuanMK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvQ29uc3RleHByVHlw
ZVBhcmFtZXRlci5qcwkocmV2aXNpb24gMjIxOTAwKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvQ29uc3RleHByVHlwZVBhcmFtZXRlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNTYs
MTIgKzU2LDEyIEBAIGNsYXNzIENvbnN0ZXhwclR5cGVQYXJhbWV0ZXIgZXh0ZW5kcyBWYWwKICAg
ICAKICAgICB2ZXJpZnlBc0FyZ3VtZW50KHVuaWZpY2F0aW9uQ29udGV4dCkKICAgICB7Ci0gICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4ge3Jlc3VsdDogdHJ1ZX07CiAgICAgfQog
ICAgIAogICAgIHZlcmlmeUFzUGFyYW1ldGVyKHVuaWZpY2F0aW9uQ29udGV4dCkKICAgICB7Ci0g
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4ge3Jlc3VsdDogdHJ1ZX07CiAgICAg
fQogICAgIAogICAgIHRvU3RyaW5nKCkKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL0ZsYXR0ZW5Qcm90b2NvbEV4dGVuZHMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BV
U2hhZGluZ0xhbmd1YWdlUkkvRmxhdHRlblByb3RvY29sRXh0ZW5kcy5qcwkobm9uZXhpc3RlbnQp
CisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9GbGF0dGVuUHJvdG9jb2xFeHRlbmRz
LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQor
ICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKyJ1c2Ugc3RyaWN0IjsKKworZnVuY3Rpb24gZmxhdHRl
blByb3RvY29sRXh0ZW5kcyhwcm9ncmFtKQoreworICAgIGxldCB2aXNpdGluZyA9IG5ldyBWaXNp
dGluZ1NldCgpOworICAgIAorICAgIGZ1bmN0aW9uIGZsYXR0ZW4ocHJvdG9jb2wpCisgICAgewor
ICAgICAgICBpZiAoIXByb3RvY29sLmV4dGVuZHMubGVuZ3RoKQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICAKKyAgICAgICAgdmlzaXRpbmcuZG9WaXNpdChwcm90b2NvbCwgKCkgPT4gewor
ICAgICAgICAgICAgZm9yIChsZXQgcGFyZW50IG9mIHByb3RvY29sLmV4dGVuZHMpIHsKKyAgICAg
ICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucHJvdG9jb2xEZWNsOworICAgICAgICAgICAgICAg
IGZsYXR0ZW4ocGFyZW50KTsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBzaWduYXR1cmUgb2Yg
cGFyZW50LnNpZ25hdHVyZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgbGV0IG5ld1NpZ25hdHVy
ZSA9IHNpZ25hdHVyZS52aXNpdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTdWJzdGl0
dXRpb24oW3BhcmVudC50eXBlVmFyaWFibGVdLCBbcHJvdG9jb2wudHlwZVZhcmlhYmxlXSkpOwor
ICAgICAgICAgICAgICAgICAgICBwcm90b2NvbC5hZGQobmV3U2lnbmF0dXJlKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwcm90b2NvbC5leHRlbmRzID0g
W107CisgICAgICAgIH0pOworICAgIH0KKyAgICAKKyAgICBmb3IgKGxldCBwcm90b2NvbCBvZiBw
cm9ncmFtLnByb3RvY29scy52YWx1ZXMoKSkKKyAgICAgICAgZmxhdHRlbihwcm90b2NvbCk7Cit9
CisKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL0Z1bmMuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwkocmV2aXNpb24gMjIx
OTAwKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvRnVuYy5qcwkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsNyBAQCBjbGFzcyBGdW5jIGV4dGVuZHMgTm9kZSB7CiAgICAgZ2V0
IG5hbWUoKSB7IHJldHVybiB0aGlzLl9uYW1lOyB9CiAgICAgZ2V0IHJldHVyblR5cGUoKSB7IHJl
dHVybiB0aGlzLl9yZXR1cm5UeXBlOyB9CiAgICAgZ2V0IHR5cGVQYXJhbWV0ZXJzKCkgeyByZXR1
cm4gdGhpcy5fdHlwZVBhcmFtZXRlcnM7IH0KKyAgICBnZXQgdHlwZVBhcmFtZXRlcnNGb3JDYWxs
UmVzb2x1dGlvbigpIHsgcmV0dXJuIHRoaXMudHlwZVBhcmFtZXRlcnM7IH0KICAgICBnZXQgcGFy
YW1ldGVycygpIHsgcmV0dXJuIHRoaXMuX3BhcmFtZXRlcnM7IH0KICAgICBnZXQgcGFyYW1ldGVy
VHlwZXMoKSB7IHJldHVybiB0aGlzLnBhcmFtZXRlcnMubWFwKHBhcmFtZXRlciA9PiBwYXJhbWV0
ZXIudHlwZSk7IH0KICAgICBnZXQgaXNDYXN0KCkgeyByZXR1cm4gdGhpcy5faXNDYXN0OyB9Cklu
ZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmZlclR5cGVzRm9yQ2FsbC5qcwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbmZlclR5cGVzRm9y
Q2FsbC5qcwkocmV2aXNpb24gMjIxOTAwKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvSW5mZXJUeXBlc0ZvckNhbGwuanMJKHdvcmtpbmcgY29weSkKQEAgLTMwLDcgKzMwLDcgQEAg
ZnVuY3Rpb24gaW5mZXJUeXBlc0ZvckNhbGwoZnVuYywgdHlwZUFyZwogICAgICAgICByZXR1cm4g
e2ZhaWx1cmU6IG5ldyBPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKGZ1bmMsICJXcm9uZyBudW1i
ZXIgb2YgdHlwZSBhcmd1bWVudHMgKHBhc3NlZCAiICsgdHlwZUFyZ3VtZW50cy5sZW5ndGggKyAi
LCByZXF1aXJlICIgKyBmdW5jLnR5cGVQYXJhbWV0ZXJzLmxlbmd0aCArICIpIil9OwogICAgIGlm
IChhcmd1bWVudFR5cGVzLmxlbmd0aCAhPSBmdW5jLnBhcmFtZXRlcnMubGVuZ3RoKQogICAgICAg
ICByZXR1cm4ge2ZhaWx1cmU6IG5ldyBPdmVybG9hZFJlc29sdXRpb25GYWlsdXJlKGZ1bmMsICJX
cm9uZyBudW1iZXIgb2YgYXJndW1lbnRzIChwYXNzZWQgIiArIGFyZ3VtZW50VHlwZXMubGVuZ3Ro
ICsgIiwgcmVxdWlyZSAiICsgZnVuYy5wYXJhbWV0ZXJzLmxlbmd0aCArICIpIil9OwotICAgIGxl
dCB1bmlmaWNhdGlvbkNvbnRleHQgPSBuZXcgVW5pZmljYXRpb25Db250ZXh0KGZ1bmMudHlwZVBh
cmFtZXRlcnMpOworICAgIGxldCB1bmlmaWNhdGlvbkNvbnRleHQgPSBuZXcgVW5pZmljYXRpb25D
b250ZXh0KGZ1bmMudHlwZVBhcmFtZXRlcnNGb3JDYWxsUmVzb2x1dGlvbik7CiAgICAgZm9yIChs
ZXQgaSA9IDA7IGkgPCB0eXBlQXJndW1lbnRzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgIGxldCBh
cmd1bWVudCA9IHR5cGVBcmd1bWVudHNbaV07CiAgICAgICAgIGxldCBwYXJhbWV0ZXIgPSBmdW5j
LnR5cGVQYXJhbWV0ZXJzW2ldOwpAQCAtNDUsOCArNDUsOSBAQCBmdW5jdGlvbiBpbmZlclR5cGVz
Rm9yQ2FsbChmdW5jLCB0eXBlQXJnCiAgICAgfQogICAgIGlmIChyZXR1cm5UeXBlICYmICFyZXR1
cm5UeXBlLnVuaWZ5KHVuaWZpY2F0aW9uQ29udGV4dCwgZnVuYy5yZXR1cm5UeXBlKSkKICAgICAg
ICAgcmV0dXJuIHtmYWlsdXJlOiBuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAi
UmV0dXJuIHR5cGUgIiArIGZ1bmMucmV0dXJuVHlwZSArICIgZG9lcyBub3QgbWF0Y2ggIiArIHJl
dHVyblR5cGUpfTsKLSAgICBpZiAoIXVuaWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKSkKLSAgICAg
ICAgcmV0dXJuIHtmYWlsdXJlOiBuZXcgT3ZlcmxvYWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCAi
VmlvbGF0ZXMgdHlwZSB2YXJpYWJsZSBjb25zdHJhaW50cyIpfTsKKyAgICBsZXQgdmVyaWZpY2F0
aW9uUmVzdWx0ID0gdW5pZmljYXRpb25Db250ZXh0LnZlcmlmeSgpOworICAgIGlmICghdmVyaWZp
Y2F0aW9uUmVzdWx0LnJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHtmYWlsdXJlOiBuZXcgT3Zlcmxv
YWRSZXNvbHV0aW9uRmFpbHVyZShmdW5jLCB2ZXJpZmljYXRpb25SZXN1bHQucmVhc29uKX07CiAg
ICAgbGV0IHNob3VsZEJ1aWxkVHlwZUFyZ3VtZW50cyA9ICF0eXBlQXJndW1lbnRzLmxlbmd0aDsK
ICAgICBpZiAoc2hvdWxkQnVpbGRUeXBlQXJndW1lbnRzKQogICAgICAgICB0eXBlQXJndW1lbnRz
ID0gW107CkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRMaXRlcmFsVHlw
ZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9JbnRMaXRl
cmFsVHlwZS5qcwkocmV2aXNpb24gMjIxOTAwKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvSW50TGl0ZXJhbFR5cGUuanMJKHdvcmtpbmcgY29weSkKQEAgLTU1LDcgKzU1LDExIEBA
IGNsYXNzIEludExpdGVyYWxUeXBlIGV4dGVuZHMgVHlwZSB7CiAgICAgdmVyaWZ5QXNBcmd1bWVu
dCh1bmlmaWNhdGlvbkNvbnRleHQpCiAgICAgewogICAgICAgICBsZXQgcmVhbFRoaXMgPSB1bmlm
aWNhdGlvbkNvbnRleHQuZmluZCh0aGlzKTsKLSAgICAgICAgcmV0dXJuIHJlYWxUaGlzLmlzTnVt
YmVyICYmIHJlYWxUaGlzLmNhblJlcHJlc2VudCh0aGlzLnZhbHVlKTsKKyAgICAgICAgaWYgKCFy
ZWFsVGhpcy5pc051bWJlcikKKyAgICAgICAgICAgIHJldHVybiB7cmVzdWx0OiBmYWxzZSwgcmVh
c29uOiAiQ2Fubm90IHVzZSBpbnQgbGl0ZXJhbCB3aXRoIG5vbi1udW1iZXIgdHlwZSAiICsgcmVh
bFRoaXN9OworICAgICAgICBpZiAoIXJlYWxUaGlzLmNhblJlcHJlc2VudCh0aGlzLnZhbHVlKSkK
KyAgICAgICAgICAgIHJldHVybiB7cmVzdWx0OiBmYWxzZSwgcmVhc29uOiAiSW50IGxpdGVyYWwg
IiArIHRoaXMudmFsdWUgKyAiIHRvbyBsYXJnZSB0byBiZSByZXByZXNlbnRlZCBieSB0eXBlICIg
KyByZWFsVGhpc307CisgICAgICAgIHJldHVybiB7cmVzdWx0OiB0cnVlfTsKICAgICB9CiAgICAg
CiAgICAgdmVyaWZ5QXNQYXJhbWV0ZXIodW5pZmljYXRpb25Db250ZXh0KQpJbmRleDogVG9vbHMv
V2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05hbWVSZXNvbHZlci5qcwkocmV2aXNpb24gMjIx
OTAwKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvTmFtZVJlc29sdmVyLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjksNiArMTI5LDggQEAgY2xhc3MgTmFtZVJlc29sdmVyIGV4dGVu
ZHMgVmlzaXRvciB7CiAgICAgCiAgICAgdmlzaXRQcm90b2NvbERlY2wobm9kZSkKICAgICB7Cisg
ICAgICAgIGZvciAobGV0IHBhcmVudCBvZiBub2RlLmV4dGVuZHMpCisgICAgICAgICAgICBwYXJl
bnQudmlzaXQodGhpcyk7CiAgICAgICAgIGxldCBuYW1lQ29udGV4dCA9IG5ldyBOYW1lQ29udGV4
dCh0aGlzLl9uYW1lQ29udGV4dCk7CiAgICAgICAgIG5hbWVDb250ZXh0LmFkZChub2RlLnR5cGVW
YXJpYWJsZSk7CiAgICAgICAgIGxldCBjaGVja2VyID0gbmV3IE5hbWVSZXNvbHZlcihuYW1lQ29u
dGV4dCk7CkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Ob2RlLmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05vZGUuanMJKHJldmlzaW9u
IDIyMTkwMCkKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL05vZGUuanMJKHdvcmtp
bmcgY29weSkKQEAgLTg0LDcgKzg0LDcgQEAgY2xhc3MgTm9kZSB7CiAgICAgZXF1YWxzKG90aGVy
KQogICAgIHsKICAgICAgICAgbGV0IHVuaWZpY2F0aW9uQ29udGV4dCA9IG5ldyBVbmlmaWNhdGlv
bkNvbnRleHQoKTsKLSAgICAgICAgaWYgKHRoaXMudW5pZnkodW5pZmljYXRpb25Db250ZXh0LCBv
dGhlcikgJiYgdW5pZmljYXRpb25Db250ZXh0LnZlcmlmeSgpKQorICAgICAgICBpZiAodGhpcy51
bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIG90aGVyKSAmJiB1bmlmaWNhdGlvbkNvbnRleHQudmVy
aWZ5KCkucmVzdWx0KQogICAgICAgICAgICAgcmV0dXJuIHVuaWZpY2F0aW9uQ29udGV4dDsKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL051bGxUeXBlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5n
dWFnZVJJL051bGxUeXBlLmpzCShyZXZpc2lvbiAyMjE5MDApCisrKyBUb29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9OdWxsVHlwZS5qcwkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsOSBA
QCBjbGFzcyBOdWxsVHlwZSBleHRlbmRzIFR5cGUgewogICAgIHZlcmlmeUFzQXJndW1lbnQodW5p
ZmljYXRpb25Db250ZXh0KQogICAgIHsKICAgICAgICAgbGV0IHJlYWxUaGlzID0gdW5pZmljYXRp
b25Db250ZXh0LmZpbmQodGhpcyk7Ci0gICAgICAgIHJldHVybiByZWFsVGhpcy5pc1B0ciB8fCBy
ZWFsVGhpcy5pc0FycmF5UmVmOworICAgICAgICBpZiAocmVhbFRoaXMuaXNQdHIgfHwgcmVhbFRo
aXMuaXNBcnJheVJlZikKKyAgICAgICAgICAgIHJldHVybiB7cmVzdWx0OiB0cnVlfTsKKyAgICAg
ICAgcmV0dXJuIHtyZXN1bHQ6IGZhbHNlLCByZWFzb246ICJOdWxsIGNhbm5vdCBiZSB1c2VkIHdp
dGggbm9uLXBvaW50ZXIgdHlwZSAiICsgcmVhbFRoaXN9OwogICAgIH0KICAgICAKICAgICB2ZXJp
ZnlBc1BhcmFtZXRlcih1bmlmaWNhdGlvbkNvbnRleHQpCkluZGV4OiBUb29scy9XZWJHUFVTaGFk
aW5nTGFuZ3VhZ2VSSS9QYXJzZS5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9QYXJzZS5qcwkocmV2aXNpb24gMjIxOTAwKQorKysgVG9vbHMvV2ViR1BVU2hh
ZGluZ0xhbmd1YWdlUkkvUGFyc2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTc0NywxMCArNzQ3LDE1
IEBAIGZ1bmN0aW9uIHBhcnNlKHByb2dyYW0sIG9yaWdpbiwgb3JpZ2luS2kKICAgICB7CiAgICAg
ICAgIGxldCBvcmlnaW4gPSBjb25zdW1lKCJwcm90b2NvbCIpOwogICAgICAgICBsZXQgbmFtZSA9
IGNvbnN1bWVLaW5kKCJpZGVudGlmaWVyIikudGV4dDsKLSAgICAgICAgLy8gRklYTUU6IFN1cHBv
cnQgcHJvdG9jb2wgaW5jbHVzaW9uCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNzYyMzgKLSAgICAgICAgY29uc3VtZSgieyIpOwogICAgICAgICBs
ZXQgcmVzdWx0ID0gbmV3IFByb3RvY29sRGVjbChvcmlnaW4sIG5hbWUpOworICAgICAgICBpZiAo
dHJ5Q29uc3VtZSgiOiIpKSB7CisgICAgICAgICAgICB3aGlsZSAoIXRlc3QoInsiKSkgeworICAg
ICAgICAgICAgICAgIHJlc3VsdC5hZGRFeHRlbmRzKHBhcnNlUHJvdG9jb2xSZWYoKSk7CisgICAg
ICAgICAgICAgICAgaWYgKCF0cnlDb25zdW1lKCIsIikpCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNvbnN1bWUoInsiKTsKICAg
ICAgICAgd2hpbGUgKCF0cnlDb25zdW1lKCJ9IikpIHsKICAgICAgICAgICAgIHJlc3VsdC5hZGQo
cGFyc2VQcm90b2NvbEZ1bmNEZWNsKCkpOwogICAgICAgICAgICAgY29uc3VtZSgiOyIpOwpJbmRl
eDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvUHJlcGFyZS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCShyZXZpc2lvbiAyMjE5
MDApCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9QcmVwYXJlLmpzCSh3b3JraW5n
IGNvcHkpCkBAIC0zMSw2ICszMSw3IEBAIGZ1bmN0aW9uIHByZXBhcmUob3JpZ2luLCBsaW5lTnVt
YmVyT2Zmc2UKICAgICBwYXJzZShwcm9ncmFtLCBvcmlnaW4sICJ1c2VyIiwgbGluZU51bWJlck9m
ZnNldCwgdGV4dCk7CiAgICAgcmVzb2x2ZU5hbWVzKHByb2dyYW0pOwogICAgIHJlc29sdmVUeXBl
RGVmcyhwcm9ncmFtKTsKKyAgICBmbGF0dGVuUHJvdG9jb2xFeHRlbmRzKHByb2dyYW0pOwogICAg
IGNoZWNrKHByb2dyYW0pOwogICAgIGNoZWNrTGl0ZXJhbFR5cGVzKHByb2dyYW0pOwogICAgIGNo
ZWNrUHJvZ3JhbVdyYXBwZWQocHJvZ3JhbSk7CkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFu
Z3VhZ2VSSS9Qcm90b2NvbERlY2wuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGlu
Z0xhbmd1YWdlUkkvUHJvdG9jb2xEZWNsLmpzCShyZXZpc2lvbiAyMjE5MDApCisrKyBUb29scy9X
ZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm90b2NvbERlY2wuanMJKHdvcmtpbmcgY29weSkKQEAg
LTI4LDEyICsyOCwxOCBAQCBjbGFzcyBQcm90b2NvbERlY2wgZXh0ZW5kcyBQcm90b2NvbCB7CiAg
ICAgY29uc3RydWN0b3Iob3JpZ2luLCBuYW1lKQogICAgIHsKICAgICAgICAgc3VwZXIob3JpZ2lu
LCBuYW1lKTsKKyAgICAgICAgdGhpcy5leHRlbmRzID0gW107CiAgICAgICAgIHRoaXMuX3NpZ25h
dHVyZXMgPSBbXTsKICAgICAgICAgdGhpcy5fc2lnbmF0dXJlTWFwID0gbmV3IE1hcCgpOwogICAg
ICAgICB0aGlzLl90eXBlVmFyaWFibGUgPSBuZXcgVHlwZVZhcmlhYmxlKG9yaWdpbiwgbmFtZSwg
bnVsbCk7CiAgICAgICAgIHRoaXMuaXNQcmltaXRpdmUgPSBmYWxzZTsKICAgICB9CiAgICAgCisg
ICAgYWRkRXh0ZW5kcyhwcm90b2NvbCkKKyAgICB7CisgICAgICAgIHRoaXMuZXh0ZW5kcy5wdXNo
KHByb3RvY29sKTsKKyAgICB9CisgICAgCiAgICAgYWRkKHNpZ25hdHVyZSkKICAgICB7CiAgICAg
ICAgIGlmICghKHNpZ25hdHVyZSBpbnN0YW5jZW9mIFByb3RvY29sRnVuY0RlY2wpKQpAQCAtNjMs
NyArNjksNyBAQCBjbGFzcyBQcm90b2NvbERlY2wgZXh0ZW5kcyBQcm90b2NvbCB7CiAgICAgaW5o
ZXJpdHMob3RoZXJQcm90b2NvbCkKICAgICB7CiAgICAgICAgIGlmICghb3RoZXJQcm90b2NvbCkK
LSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIHtyZXN1bHQ6IHRy
dWV9OwogICAgICAgICAKICAgICAgICAgaWYgKG90aGVyUHJvdG9jb2wgaW5zdGFuY2VvZiBQcm90
b2NvbFJlZikKICAgICAgICAgICAgIG90aGVyUHJvdG9jb2wgPSBvdGhlclByb3RvY29sLnByb3Rv
Y29sRGVjbDsKQEAgLTcxLDE3ICs3NywyMCBAQCBjbGFzcyBQcm90b2NvbERlY2wgZXh0ZW5kcyBQ
cm90b2NvbCB7CiAgICAgICAgIGZvciAobGV0IG90aGVyU2lnbmF0dXJlIG9mIG90aGVyUHJvdG9j
b2wuc2lnbmF0dXJlcykgewogICAgICAgICAgICAgbGV0IHNpZ25hdHVyZXMgPSB0aGlzLnNpZ25h
dHVyZXNCeU5hbWUob3RoZXJTaWduYXR1cmUubmFtZSk7CiAgICAgICAgICAgICBpZiAoIXNpZ25h
dHVyZXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgbGV0IG92
ZXJsb2FkID0gcmVzb2x2ZU92ZXJsb2FkSW1wbChzaWduYXR1cmVzLCBbXSwgb3RoZXJTaWduYXR1
cmUucGFyYW1ldGVyVHlwZXMsIG90aGVyU2lnbmF0dXJlLnJldHVyblR5cGVGb3JPdmVybG9hZFJl
c29sdXRpb24pOworICAgICAgICAgICAgICAgIHJldHVybiB7cmVzdWx0OiBmYWxzZSwgcmVhc29u
OiAiUHJvdG9jb2wgIiArIHRoaXMubmFtZSArICIgZG9lcyBub3QgaGF2ZSBhIGZ1bmN0aW9uIG5h
bWVkICIgKyBvdGhlclNpZ25hdHVyZS5uYW1lICsgIiAobG9va2luZyBhdCBzaWduYXR1cmUgIiAr
IG90aGVyU2lnbmF0dXJlICsgIikifTsKKyAgICAgICAgICAgIGxldCBvdmVybG9hZCA9IHJlc29s
dmVPdmVybG9hZEltcGwoCisgICAgICAgICAgICAgICAgc2lnbmF0dXJlcywgW10sCisgICAgICAg
ICAgICAgICAgb3RoZXJTaWduYXR1cmUucGFyYW1ldGVyVHlwZXMsCisgICAgICAgICAgICAgICAg
b3RoZXJTaWduYXR1cmUucmV0dXJuVHlwZUZvck92ZXJsb2FkUmVzb2x1dGlvbik7CiAgICAgICAg
ICAgICBpZiAoIW92ZXJsb2FkLmZ1bmMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgICAgICAgICAgICAgIHJldHVybiB7cmVzdWx0OiBmYWxzZSwgcmVhc29uOiAiRGlkIG5vdCBm
aW5kIG1hdGNoaW5nIHNpZ25hdHVyZSBmb3IgIiArIG90aGVyU2lnbmF0dXJlICsgIiBpbiAiICsg
dGhpcy5uYW1lICsgKG92ZXJsb2FkLmZhaWx1cmVzLmxlbmd0aCA/ICIgKHRyaWVkOiAiICsgb3Zl
cmxvYWQuZmFpbHVyZXMuam9pbigiOyAiKSArICIpIiA6ICIiKX07CiAgICAgICAgICAgICBsZXQg
c3Vic3RpdHV0ZWRSZXR1cm5UeXBlID0KICAgICAgICAgICAgICAgICBvdmVybG9hZC5mdW5jLnJl
dHVyblR5cGUuc3Vic3RpdHV0ZVRvVW5pZmljYXRpb24oCiAgICAgICAgICAgICAgICAgICAgIG92
ZXJsb2FkLmZ1bmMudHlwZVBhcmFtZXRlcnMsIG92ZXJsb2FkLnVuaWZpY2F0aW9uQ29udGV4dCk7
CiAgICAgICAgICAgICBpZiAoIXN1YnN0aXR1dGVkUmV0dXJuVHlwZS5lcXVhbHMob3RoZXJTaWdu
YXR1cmUucmV0dXJuVHlwZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIHJldHVybiB7cmVzdWx0OiBmYWxzZSwgcmVhc29uOiAiUmV0dXJuIHR5cGUgbWlz
bWF0Y2ggYmV0d2VlbiAiICsgb3RoZXJTaWduYXR1cmUucmV0dXJuVHlwZSArICIgYW5kICIgKyBz
dWJzdGl0dXRlZFJldHVyblR5cGV9OwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwor
ICAgICAgICByZXR1cm4ge3Jlc3VsdDogdHJ1ZX07CiAgICAgfQogICAgIAogICAgIGhhc0hlaXIo
dHlwZSkKQEAgLTkyLDE0ICsxMDEsMTQgQEAgY2xhc3MgUHJvdG9jb2xEZWNsIGV4dGVuZHMgUHJv
dG9jb2wgewogICAgICAgICAgICAgc2lnbmF0dXJlID0gc2lnbmF0dXJlLnZpc2l0KHN1YnN0aXR1
dGlvbik7CiAgICAgICAgICAgICBsZXQgb3ZlcmxvYWQgPSByZXNvbHZlT3ZlcmxvYWRJbXBsKHNp
Z25hdHVyZS5wb3NzaWJsZU92ZXJsb2Fkcywgc2lnbmF0dXJlLnR5cGVQYXJhbWV0ZXJzLCBzaWdu
YXR1cmUucGFyYW1ldGVyVHlwZXMsIHNpZ25hdHVyZS5yZXR1cm5UeXVwZUZvck92ZXJsb2FkUmVz
b2x1dGlvbik7CiAgICAgICAgICAgICBpZiAoIW92ZXJsb2FkLmZ1bmMpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiB7cmVzdWx0OiBmYWxzZSwg
cmVhc29uOiAiRGlkIG5vdCBmaW5kIG1hdGNoaW5nIHNpZ25hdHVyZSBmb3IgIiArIHNpZ25hdHVy
ZSArICIgd2l0aCB0eXBlICIgKyB0eXBlICsgKG92ZXJsb2FkLmZhaWx1cmVzLmxlbmd0aCA/ICIg
KHRyaWVkOiAiICsgb3ZlcmxvYWQuZmFpbHVyZXMuam9pbigiOyAiKSArICIpIiA6ICIiKX07CiAg
ICAgICAgICAgICAKICAgICAgICAgICAgIGxldCBzdWJzdGl0dXRlZFJldHVyblR5cGUgPSBvdmVy
bG9hZC5mdW5jLnJldHVyblR5cGUuc3Vic3RpdHV0ZVRvVW5pZmljYXRpb24oCiAgICAgICAgICAg
ICAgICAgb3ZlcmxvYWQuZnVuYy50eXBlUGFyYW1ldGVycywgb3ZlcmxvYWQudW5pZmljYXRpb25D
b250ZXh0KTsKICAgICAgICAgICAgIGlmICghc3Vic3RpdHV0ZWRSZXR1cm5UeXBlLmVxdWFscyhz
aWduYXR1cmUucmV0dXJuVHlwZSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIHJldHVybiB7cmVzdWx0OiBmYWxzZSwgcmVhc29uOiAiUmV0dXJuIHR5cGUg
bWlzbWF0Y2ggYmV0d2VlbiAiICsgc2lnbmF0dXJlLnJldHVyblR5cGUgKyAiIGFuZCAiICsgc3Vi
c3RpdHV0ZWRSZXR1cm5UeXBlfTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgcmV0dXJuIHtyZXN1bHQ6IHRydWV9OwogICAgIH0KICAgICAKICAgICB0b1N0cmluZygp
CkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9Qcm90b2NvbEZ1bmNEZWNsLmpz
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1Byb3RvY29sRnVu
Y0RlY2wuanMJKHJldmlzaW9uIDIyMTkwMCkKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1Byb3RvY29sRnVuY0RlY2wuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDUgKzI0LDEwIEBA
CiAgKi8KICJ1c2Ugc3RyaWN0IjsKIAotY2xhc3MgUHJvdG9jb2xGdW5jRGVjbCBleHRlbmRzIEZ1
bmMgeyB9CitjbGFzcyBQcm90b2NvbEZ1bmNEZWNsIGV4dGVuZHMgRnVuYyB7CisgICAgZ2V0IHR5
cGVQYXJhbWV0ZXJzRm9yQ2FsbFJlc29sdXRpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMudHlwZVBhcmFtZXRlcnMuY29uY2F0KHRoaXMucHJvdG9jb2xEZWNsLnR5cGVWYXJpYWJsZSk7
CisgICAgfQorfQogCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRl
ci5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9SZXdyaXRl
ci5qcwkocmV2aXNpb24gMjIxOTAwKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkv
UmV3cml0ZXIuanMJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYgKzU5LDcgQEAgY2xhc3MgUmV3cml0
ZXIgZXh0ZW5kcyBWaXNpdG9yQmFzZSB7CiAgICAgdmlzaXRUeXBlRGVmKG5vZGUpIHsgcmV0dXJu
IG5vZGU7IH0KICAgICB2aXNpdFN0cnVjdFR5cGUobm9kZSkgeyByZXR1cm4gbm9kZTsgfQogICAg
IHZpc2l0Q29uc3RleHByVHlwZVBhcmFtZXRlcihub2RlKSB7IHJldHVybiBub2RlOyB9CisgICAg
dmlzaXRQcm90b2NvbERlY2wobm9kZSkgeyByZXR1cm4gbm9kZTsgfQogCiAgICAgLy8gVGhpcyBp
cyBhbG1vc3Qgd3JvbmcuIFdlIGluc3RhbnRpYXRlIEZ1bmMgaW4gU3Vic3RpdHV0aW9uIGluIFBy
b3RvY29sRGVjbC4gVGhlbiwgd2UgZW5kIHVwCiAgICAgLy8gbm90IHJld3JpdGluZyB0eXBlIHZh
cmlhYmxlcy4gSSB0aGluayB0aGF0IGp1c3Qgd29ya3MgYmVjYXVzZSBub3QgcmV3cml0aW5nIHRo
ZW0gdGhlcmUgaXMgT0suCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UZXN0
Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVGVzdC5o
dG1sCShyZXZpc2lvbiAyMjE5MDApCisrKyBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9U
ZXN0Lmh0bWwJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDcgQEAKIDxzY3JpcHQgc3JjPSJF
dmFsdWF0b3IuanMiPjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkV4cHJlc3Npb25GaW5kZXIuanMi
Pjwvc2NyaXB0PgogPHNjcmlwdCBzcmM9IkZpZWxkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJGbGF0dGVuUHJvdG9jb2xFeHRlbmRzLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGb3JM
b29wLmpzIj48L3NjcmlwdD4KIDxzY3JpcHQgc3JjPSJGdW5jLmpzIj48L3NjcmlwdD4KIDxzY3Jp
cHQgc3JjPSJGdW5jRGVmLmpzIj48L3NjcmlwdD4KSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Rlc3QuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVGVzdC5qcwkocmV2aXNpb24gMjIxOTAwKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xh
bmd1YWdlUkkvVGVzdC5qcwkod29ya2luZyBjb3B5KQpAQCAtOTcyLDcgKzk3Miw3IEBAIGZ1bmN0
aW9uIFRFU1RfbnVsbFR5cGVWYXJpYWJsZVVuaWZ5KCkKICAgICAgICAgICAgICAgICBpZiAoIXJl
c3VsdCkKICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbiBvcmRlciAiICsg
b3JkZXIgKyAiIGNhbm5vdCB1bmlmeSAiICsgbGVmdCArICIgd2l0aCAiICsgcmlnaHQpOwogICAg
ICAgICAgICAgfQotICAgICAgICAgICAgaWYgKCF1bmlmaWNhdGlvbkNvbnRleHQudmVyaWZ5KCkp
CisgICAgICAgICAgICBpZiAoIXVuaWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKS5yZXN1bHQpCiAg
ICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbiBvcmRlciAiICsgb3JkZXIubWFwKHZh
bHVlID0+ICIoIiArIHZhbHVlICsgIikiKSArICIgY2Fubm90IHZlcmlmeSIpOwogICAgICAgICB9
KTsKIH0KQEAgLTE5NzcsNiArMTk3Nyw4OCBAQCBmdW5jdGlvbiBURVNUX3BhcmFtQ2hhaW5TdHJ1
Y3REZXZpY2UoKQogICAgIGNoZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAi
YmFyIiwgW10sIFtUeXBlZFZhbHVlLmJveChuZXcgUHRyVHlwZShudWxsLCAiZGV2aWNlIiwgcHJv
Z3JhbS5pbnRyaW5zaWNzLmludDMyKSwgbmV3IEVQdHIoYnVmZmVyLCAwKSldKSwgNzkyMDEpOwog
fQogCitmdW5jdGlvbiBURVNUX3NpbXBsZVByb3RvY29sRXh0ZW5kcygpCit7CisgICAgbGV0IHBy
b2dyYW0gPSBkb1ByZXAoYAorICAgICAgICBwcm90b2NvbCBGb28geworICAgICAgICAgICAgdm9p
ZCBmb28odGhyZWFkIEZvb14pOworICAgICAgICB9CisgICAgICAgIHByb3RvY29sIEJhciA6IEZv
byB7CisgICAgICAgICAgICB2b2lkIGJhcih0aHJlYWQgQmFyXik7CisgICAgICAgIH0KKyAgICAg
ICAgdm9pZCBmdXp6PFQ6Rm9vPih0aHJlYWQgVF4gcCkKKyAgICAgICAgeworICAgICAgICAgICAg
Zm9vKHApOworICAgICAgICB9CisgICAgICAgIHZvaWQgYnV6ejxUOkJhcj4odGhyZWFkIFReIHAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGZ1enoocCk7CisgICAgICAgICAgICBiYXIocCk7Cisg
ICAgICAgIH0KKyAgICAgICAgdm9pZCBmb28odGhyZWFkIGludF4gcCkKKyAgICAgICAgeworICAg
ICAgICAgICAgXnAgPSBecCArIDc0MzsKKyAgICAgICAgfQorICAgICAgICB2b2lkIGJhcih0aHJl
YWQgaW50XiBwKQorICAgICAgICB7CisgICAgICAgICAgICBecCA9IF5wICsgOTE7CisgICAgICAg
IH0KKyAgICAgICAgaW50IHRoaW5neShpbnQgYSkKKyAgICAgICAgeworICAgICAgICAgICAgYnV6
eigmYSk7CisgICAgICAgICAgICByZXR1cm4gYTsKKyAgICAgICAgfQorICAgIGApOworICAgIGNo
ZWNrSW50KHByb2dyYW0sIGNhbGxGdW5jdGlvbihwcm9ncmFtLCAidGhpbmd5IiwgW10sIFttYWtl
SW50KHByb2dyYW0sIDY0MildKSwgNjQyICsgNzQzICsgOTEpOworfQorCitmdW5jdGlvbiBURVNU
X3Byb3RvY29sRXh0ZW5kc1R3bygpCit7CisgICAgbGV0IHByb2dyYW0gPSBkb1ByZXAoYAorICAg
ICAgICBwcm90b2NvbCBGb28geworICAgICAgICAgICAgdm9pZCBmb28odGhyZWFkIEZvb14pOwor
ICAgICAgICB9CisgICAgICAgIHByb3RvY29sIEJhciB7CisgICAgICAgICAgICB2b2lkIGJhcih0
aHJlYWQgQmFyXik7CisgICAgICAgIH0KKyAgICAgICAgcHJvdG9jb2wgQmF6IDogRm9vLCBCYXIg
eworICAgICAgICAgICAgdm9pZCBiYXoodGhyZWFkIEJhel4pOworICAgICAgICB9CisgICAgICAg
IHZvaWQgZnV6ejxUOkZvbz4odGhyZWFkIFReIHApCisgICAgICAgIHsKKyAgICAgICAgICAgIGZv
byhwKTsKKyAgICAgICAgfQorICAgICAgICB2b2lkIGJ1eno8VDpCYXI+KHRocmVhZCBUXiBwKQor
ICAgICAgICB7CisgICAgICAgICAgICBiYXIocCk7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCB4
dXp6PFQ6QmF6Pih0aHJlYWQgVF4gcCkKKyAgICAgICAgeworICAgICAgICAgICAgZnV6eihwKTsK
KyAgICAgICAgICAgIGJ1enoocCk7CisgICAgICAgICAgICBiYXoocCk7CisgICAgICAgIH0KKyAg
ICAgICAgdm9pZCBmb28odGhyZWFkIGludF4gcCkKKyAgICAgICAgeworICAgICAgICAgICAgXnAg
PSBecCArIDc0MzsKKyAgICAgICAgfQorICAgICAgICB2b2lkIGJhcih0aHJlYWQgaW50XiBwKQor
ICAgICAgICB7CisgICAgICAgICAgICBecCA9IF5wICsgOTE7CisgICAgICAgIH0KKyAgICAgICAg
dm9pZCBiYXoodGhyZWFkIGludF4gcCkKKyAgICAgICAgeworICAgICAgICAgICAgXnAgPSBecCAr
IDM5OworICAgICAgICB9CisgICAgICAgIGludCB0aGluZ3koaW50IGEpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIHh1enooJmEpOworICAgICAgICAgICAgcmV0dXJuIGE7CisgICAgICAgIH0KKyAg
ICBgKTsKKyAgICBjaGVja0ludChwcm9ncmFtLCBjYWxsRnVuY3Rpb24ocHJvZ3JhbSwgInRoaW5n
eSIsIFtdLCBbbWFrZUludChwcm9ncmFtLCA2NDIpXSksIDY0MiArIDc0MyArIDkxICsgMzkpOwor
fQorCiBsZXQgZmlsdGVyID0gLy4qLzsgLy8gcnVuIGV2ZXJ5dGhpbmcgYnkgZGVmYXVsdAogaWYg
KHRoaXNbImFyZ3VtZW50cyJdKSB7CiAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMu
bGVuZ3RoOyBpKyspIHsKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGUu
anMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZS5qcwko
cmV2aXNpb24gMjIxOTAwKQorKysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVHlwZS5q
cwkod29ya2luZyBjb3B5KQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBUeXBlIGV4dGVuZHMgTm9k
ZSB7CiAgICAgaW5oZXJpdHMocHJvdG9jb2wpCiAgICAgewogICAgICAgICBpZiAoIXByb3RvY29s
KQotICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICByZXR1cm4ge3Jlc3VsdDog
dHJ1ZX07CiAgICAgICAgIHJldHVybiBwcm90b2NvbC5oYXNIZWlyKHRoaXMpOwogICAgIH0KICAg
ICAKSW5kZXg6IFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVEZWZSZXNvbHZlci5q
cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlRGVmUmVz
b2x2ZXIuanMJKHJldmlzaW9uIDIyMTkwMCkKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFn
ZVJJL1R5cGVEZWZSZXNvbHZlci5qcwkod29ya2luZyBjb3B5KQpAQCAtNDEsOCArNDEsOSBAQCBj
bGFzcyBUeXBlRGVmUmVzb2x2ZXIgZXh0ZW5kcyBWaXNpdG9yIHsKICAgICAgICAgICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJhcmd1bWVudC9wYXJhbWV0ZXIgbWlzbWF0Y2ggKHNob3VsZCBo
YXZlIGJlZW4gY2F1Z2h0IGVhcmxpZXIpIik7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9
IDA7IGkgPCBub2RlLnR5cGVBcmd1bWVudHMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICAgICAg
ICAgIG5vZGUudHlwZUFyZ3VtZW50c1tpXS51bmlmeSh1bmlmaWNhdGlvbkNvbnRleHQsIG5vZGUu
dHlwZS50eXBlUGFyYW1ldGVyc1tpXSk7Ci0gICAgICAgICAgICAgICAgaWYgKCF1bmlmaWNhdGlv
bkNvbnRleHQudmVyaWZ5KCkpCi0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVy
cm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmluZywgIlR5cGUgcmVmZXJlbmNlIHRvIGEgdHlwZSBk
ZWZpbml0aW9uIHZpb2xhdGVzIHByb3RvY29sIGNvbnN0cmFpbnRzIik7CisgICAgICAgICAgICAg
ICAgbGV0IHZlcmlmaWNhdGlvblJlc3VsdCA9IHVuaWZpY2F0aW9uQ29udGV4dC52ZXJpZnkoKTsK
KyAgICAgICAgICAgICAgICBpZiAoIXZlcmlmaWNhdGlvblJlc3VsdC5yZXN1bHQpCisgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBXVHlwZUVycm9yKG5vZGUub3JpZ2luLm9yaWdpblN0cmlu
ZywgIlR5cGUgcmVmZXJlbmNlIHRvIGEgdHlwZSBkZWZpbml0aW9uIHZpb2xhdGVzIHByb3RvY29s
IGNvbnN0cmFpbnRzOiAiICsgdmVyaWZpY2F0aW9uUmVzdWx0LnJlYXNvbik7CiAgICAgICAgICAg
ICAgICAgCiAgICAgICAgICAgICAgICAgbGV0IG5ld1R5cGUgPSBub2RlLnR5cGUudHlwZS5zdWJz
dGl0dXRlVG9VbmlmaWNhdGlvbihub2RlLnR5cGUudHlwZVBhcmFtZXRlcnMsIHVuaWZpY2F0aW9u
Q29udGV4dCk7CiAgICAgICAgICAgICAgICAgbmV3VHlwZS52aXNpdCh0aGlzKTsKSW5kZXg6IFRv
b2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVWYXJpYWJsZS5qcwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9XZWJHUFVTaGFkaW5nTGFuZ3VhZ2VSSS9UeXBlVmFyaWFibGUuanMJKHJldmlzaW9u
IDIyMTkwMCkKKysrIFRvb2xzL1dlYkdQVVNoYWRpbmdMYW5ndWFnZVJJL1R5cGVWYXJpYWJsZS5q
cwkod29ya2luZyBjb3B5KQpAQCAtNDcsOSArNDcsOSBAQCBjbGFzcyBUeXBlVmFyaWFibGUgZXh0
ZW5kcyBUeXBlIHsKICAgICBpbmhlcml0cyhwcm90b2NvbCkKICAgICB7CiAgICAgICAgIGlmICgh
cHJvdG9jb2wpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiB7
cmVzdWx0OiB0cnVlfTsKICAgICAgICAgaWYgKCF0aGlzLnByb3RvY29sKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHtyZXN1bHQ6IGZhbHNlLCByZWFzb246
ICJUeXBlIHZhcmlhYmxlICIgKyB0aGlzICsgIiBkb2VzIG5vdCBoYXZlIGEgcHJvdG9jb2wifTsK
ICAgICAgICAgcmV0dXJuIHRoaXMucHJvdG9jb2wuaW5oZXJpdHMocHJvdG9jb2wpOwogICAgIH0K
ICAgICAKQEAgLTczLDE5ICs3MywyOSBAQCBjbGFzcyBUeXBlVmFyaWFibGUgZXh0ZW5kcyBUeXBl
IHsKICAgICAgICAgLy8gVGhlIHRoaW5nIHdlIGdldCB1bmlmaWVkIHdpdGggbXVzdCBiZSBhIHR5
cGUgdmFyaWFibGUgdGhhdCBhY2NlcHRzIGEgYnJvYWRlciBzZXQgb2YKICAgICAgICAgLy8gdGhp
bmdzIHRoYW4gd2UgZG8uCiAgICAgICAgIGlmICghKHJlYWxUaGlzIGluc3RhbmNlb2YgVHlwZVZh
cmlhYmxlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIHJldHVybiB7
cmVzdWx0OiBmYWxzZSwgcmVhc29uOiAiVHlwZSB2YXJpYWJsZSBhcmd1bWVudCAiICsgdGhpcyAr
ICIgY2Fubm90IGJlIHBhc3NlZCB0byBub24tdHlwZS12YXJpYWJsZSBwYXJhbWV0ZXIgdHlwZSAi
ICsgcmVhbFRoaXN9OwogICAgICAgICAKLSAgICAgICAgaWYgKCF0aGlzLnByb3RvY29sKQotICAg
ICAgICAgICAgcmV0dXJuICFyZWFsVGhpcy5wcm90b2NvbDsKKyAgICAgICAgaWYgKCF0aGlzLnBy
b3RvY29sKSB7CisgICAgICAgICAgICBpZiAocmVhbFRoaXMucHJvdG9jb2wpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHtyZXN1bHQ6IGZhbHNlLCByZWFzb246ICJUeXBlIHZhcmlhYmxlIHdpdGhv
dXQgcHJvdG9jb2wgIiArIHRoaXMgKyAiIGNhbm5vdCBiZSBwYXNzZWQgdG8gcGFyYW1ldGVyIHR5
cGUgdmFyaWFibGUgd2l0aCBwcm90b2NvbCAiICsgcmVhbFRoaXMucHJvdG9jb2x9OworICAgICAg
ICAgICAgcmV0dXJuIHtyZXN1bHQ6IHRydWV9OworICAgICAgICB9CiAgICAgICAgIAotICAgICAg
ICByZXR1cm4gdGhpcy5wcm90b2NvbC5pbmhlcml0cyhyZWFsVGhpcy5wcm90b2NvbCk7CisgICAg
ICAgIGxldCByZXN1bHQgPSB0aGlzLnByb3RvY29sLmluaGVyaXRzKHJlYWxUaGlzLnByb3RvY29s
KTsKKyAgICAgICAgaWYgKCFyZXN1bHQucmVzdWx0KQorICAgICAgICAgICAgcmV0dXJuIHtyZXN1
bHQ6IGZhbHNlLCByZWFzb246ICJQcm90b2NvbCAiICsgdGhpcy5wcm90b2NvbCArICIgZG9lcyBu
b3Qgc3Vic3VtZSBwcm90b2NvbCAiICsgcmVhbFRoaXMucHJvdG9jb2wgKyAiIChwYXNzaW5nIHR5
cGUgIiArIHRoaXMgKyAiIHRvIHR5cGUgIiArIHJlYWxUaGlzICsgIik6ICIgKyByZXN1bHQucmVh
c29ufTsKKyAgICAgICAgcmV0dXJuIHtyZXN1bHQ6IHRydWV9OwogICAgIH0KICAgICAKICAgICB2
ZXJpZnlBc1BhcmFtZXRlcih1bmlmaWNhdGlvbkNvbnRleHQpCiAgICAgewogICAgICAgICBpZiAo
IXRoaXMucHJvdG9jb2wpCi0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgcmV0dXJu
IHVuaWZpY2F0aW9uQ29udGV4dC5maW5kKHRoaXMpLmluaGVyaXRzKHRoaXMucHJvdG9jb2wpOwor
ICAgICAgICAgICAgcmV0dXJuIHtyZXN1bHQ6IHRydWV9OworICAgICAgICBsZXQgcmVhbFRoaXMg
PSB1bmlmaWNhdGlvbkNvbnRleHQuZmluZCh0aGlzKTsKKyAgICAgICAgbGV0IHJlc3VsdCA9IHJl
YWxUaGlzLmluaGVyaXRzKHRoaXMucHJvdG9jb2wpOworICAgICAgICBpZiAoIXJlc3VsdC5yZXN1
bHQpCisgICAgICAgICAgICByZXR1cm4ge3Jlc3VsdDogZmFsc2UsIHJlYXNvbjogIlR5cGUgIiAr
IHJlYWxUaGlzICsgIiBkb2VzIG5vdCBpbmhlcml0IHByb3RvY29sICIgKyB0aGlzLnByb3RvY29s
ICsgIiAocGFzc2luZyB0eXBlICIgKyByZWFsVGhpcyArICIgdG8gdHlwZSAiICsgdGhpcyArICIp
OiAiICsgcmVzdWx0LnJlYXNvbn07CisgICAgICAgIHJldHVybiB7cmVzdWx0OiB0cnVlfTsKICAg
ICB9CiAgICAgCiAgICAgdG9TdHJpbmcoKQpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvVW5pZmljYXRpb25Db250ZXh0LmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1VuaWZpY2F0aW9uQ29udGV4dC5qcwkocmV2aXNpb24gMjIxOTAwKQor
KysgVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdlUkkvVW5pZmljYXRpb25Db250ZXh0LmpzCSh3
b3JraW5nIGNvcHkpCkBAIC05MiwxOCArOTIsMjIgQEAgY2xhc3MgVW5pZmljYXRpb25Db250ZXh0
IHsKICAgICB2ZXJpZnkoKQogICAgIHsKICAgICAgICAgZm9yIChsZXQgdHlwZVBhcmFtZXRlciBv
ZiB0aGlzLl90eXBlUGFyYW1ldGVycykgewotICAgICAgICAgICAgaWYgKCF0eXBlUGFyYW1ldGVy
LnZlcmlmeUFzUGFyYW1ldGVyKHRoaXMpKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgICAgIGxldCByZXN1bHQgPSB0eXBlUGFyYW1ldGVyLnZlcmlmeUFzUGFyYW1ldGVy
KHRoaXMpOworICAgICAgICAgICAgaWYgKCFyZXN1bHQucmVzdWx0KQorICAgICAgICAgICAgICAg
IHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KICAgICAgICAgbGV0IG51bVR5cGVWYXJpYWJsZUFy
Z3VtZW50cyA9IDA7CiAgICAgICAgIGxldCBhcmd1bWVudFNldCA9IG5ldyBTZXQoKTsKICAgICAg
ICAgZm9yIChsZXQgdHlwZUFyZ3VtZW50IG9mIHRoaXMudHlwZUFyZ3VtZW50cygpKSB7Ci0gICAg
ICAgICAgICBpZiAoIXR5cGVBcmd1bWVudC52ZXJpZnlBc0FyZ3VtZW50KHRoaXMpKQotICAgICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGxldCByZXN1bHQgPSB0eXBlQXJn
dW1lbnQudmVyaWZ5QXNBcmd1bWVudCh0aGlzKTsKKyAgICAgICAgICAgIGlmICghcmVzdWx0LnJl
c3VsdCkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgICAgICAgICAgYXJndW1l
bnRTZXQuYWRkKHRoaXMuZmluZCh0eXBlQXJndW1lbnQpKTsKICAgICAgICAgICAgIG51bVR5cGVW
YXJpYWJsZUFyZ3VtZW50cysrOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBhcmd1bWVudFNl
dC5zaXplID09IG51bVR5cGVWYXJpYWJsZUFyZ3VtZW50czsKKyAgICAgICAgaWYgKGFyZ3VtZW50
U2V0LnNpemUgPT0gbnVtVHlwZVZhcmlhYmxlQXJndW1lbnRzKQorICAgICAgICAgICAgcmV0dXJu
IHtyZXN1bHQ6IHRydWV9OworICAgICAgICByZXR1cm4ge3Jlc3VsdDogZmFsc2UsIHJlYXNvbjog
IlR5cGUgdmFyaWFibGVzIHVzZWQgYXMgYXJndW1lbnRzIGdvdCB1bmlmaWVkIn07CiAgICAgfQog
ICAgIAogICAgIGdldCBjb252ZXJzaW9uQ29zdCgpCkluZGV4OiBUb29scy9XZWJHUFVTaGFkaW5n
TGFuZ3VhZ2VSSS9WaXNpdG9yLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1dlYkdQVVNoYWRpbmdM
YW5ndWFnZVJJL1Zpc2l0b3IuanMJKHJldmlzaW9uIDIyMTkwMCkKKysrIFRvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1Zpc2l0b3IuanMJKHdvcmtpbmcgY29weSkKQEAgLTkwLDYgKzkwLDgg
QEAgY2xhc3MgVmlzaXRvciBleHRlbmRzIFZpc2l0b3JCYXNlIHsKICAgICAKICAgICB2aXNpdFBy
b3RvY29sRGVjbChub2RlKQogICAgIHsKKyAgICAgICAgZm9yIChsZXQgcHJvdG9jb2wgb2Ygbm9k
ZS5leHRlbmRzKQorICAgICAgICAgICAgcHJvdG9jb2wudmlzaXQodGhpcyk7CiAgICAgICAgIGZv
ciAobGV0IHNpZ25hdHVyZSBvZiBub2RlLnNpZ25hdHVyZXMpCiAgICAgICAgICAgICBzaWduYXR1
cmUudmlzaXQodGhpcyk7CiAgICAgfQpJbmRleDogVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1YWdl
UkkvV3JhcENoZWNrZXIuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvV2ViR1BVU2hhZGluZ0xhbmd1
YWdlUkkvV3JhcENoZWNrZXIuanMJKHJldmlzaW9uIDIyMTkwMCkKKysrIFRvb2xzL1dlYkdQVVNo
YWRpbmdMYW5ndWFnZVJJL1dyYXBDaGVja2VyLmpzCSh3b3JraW5nIGNvcHkpCkBAIC03Nyw2ICs3
NywxMSBAQCBjbGFzcyBXcmFwQ2hlY2tlciBleHRlbmRzIFZpc2l0b3IgewogICAgICAgICB0aGlz
Ll9mb3VuZFVud3JhcHBlZChub2RlKTsKICAgICB9CiAgICAgCisgICAgdmlzaXRUeXBlVmFyaWFi
bGUobm9kZSkKKyAgICB7CisgICAgICAgIHRoaXMuX2ZvdW5kVW53cmFwcGVkKG5vZGUpOworICAg
IH0KKyAgICAKICAgICAvLyBOT1RFOiBUaGlzIGRvZXMgbm90IGtub3cgaG93IHRvIGhhbmRsZSBO
YXRpdmVUeXBlSW5zdGFuY2UsIGJlY2F1c2UgdGhpcyBpcyBuZXZlciBjYWxsZWQgb24gaW5zdGFu
dGlhdGVkCiAgICAgLy8gY29kZS4gT25jZSBjb2RlIGlzIGluc3RhbnRpYXRlZCwgeW91IGNhbm5v
dCBpbnN0YW50aWF0ZSBpdCBmdXJ0aGVyLgogICAgIAo=
</data>
<flag name="review"
          id="340616"
          type_id="1"
          status="+"
          setter="mmaxfield"
    />
          </attachment>
      

    </bug>

</bugzilla>