<?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>234812</bug_id>
          
          <creation_ts>2022-01-03 04:13:29 -0800</creation_ts>
          <short_desc>Refactor code creating css values and lists for animation and transition properties</short_desc>
          <delta_ts>2022-01-05 01:26:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=234792</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1827682</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-03 04:13:29 -0800</bug_when>
    <thetext>Refactor code creating css values and lists for animation and transition properties</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827683</commentid>
    <comment_count>1</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-03 04:14:29 -0800</bug_when>
    <thetext>This is work that started from a comment made by Darin in bug 234792.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827687</commentid>
    <comment_count>2</comment_count>
      <attachid>448225</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-03 04:21:18 -0800</bug_when>
    <thetext>Created attachment 448225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827689</commentid>
    <comment_count>3</comment_count>
      <attachid>448225</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-03 04:29:21 -0800</bug_when>
    <thetext>Comment on attachment 448225
Patch

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

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1450
&gt; +void ComputedStyleExtractor::addCSSValueForAnimationPropertyToList(CSSPropertyID property, const Animation* animation, CSSValueList&amp; list)

I&apos;d make the target list the first argument.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827691</commentid>
    <comment_count>4</comment_count>
      <attachid>448225</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-01-03 04:31:31 -0800</bug_when>
    <thetext>Comment on attachment 448225
Patch

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

&gt;&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1450
&gt;&gt; +void ComputedStyleExtractor::addCSSValueForAnimationPropertyToList(CSSPropertyID property, const Animation* animation, CSSValueList&amp; list)
&gt; 
&gt; I&apos;d make the target list the first argument.

Also &quot;CSS&quot; in the name is bit unnecessary.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827697</commentid>
    <comment_count>5</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-03 05:51:20 -0800</bug_when>
    <thetext>Committed r287537 (245672@trunk): &lt;https://commits.webkit.org/245672@trunk&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827698</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-01-03 05:52:18 -0800</bug_when>
    <thetext>&lt;rdar://problem/87065662&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1827821</commentid>
    <comment_count>7</comment_count>
      <attachid>448225</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-01-03 14:08:04 -0800</bug_when>
    <thetext>Comment on attachment 448225
Patch

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

&gt;&gt;&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1450
&gt;&gt;&gt; +void ComputedStyleExtractor::addCSSValueForAnimationPropertyToList(CSSPropertyID property, const Animation* animation, CSSValueList&amp; list)
&gt;&gt; 
&gt;&gt; I&apos;d make the target list the first argument.
&gt; 
&gt; Also &quot;CSS&quot; in the name is bit unnecessary.

I’d also leave out the “to list” part of the name, and say “append” instead of “add”

    appendValueForAnimationProperty

&gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1493
&gt; +            auto shorthand = shorthandForProperty(CSSPropertyAnimation);

No need for a local variable here. Reads nicely inside the for statement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1828213</commentid>
    <comment_count>8</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-01-05 01:26:30 -0800</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Comment on attachment 448225 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=448225&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/css/CSSComputedStyleDeclaration.cpp:1493
&gt; &gt; +            auto shorthand = shorthandForProperty(CSSPropertyAnimation);
&gt; 
&gt; No need for a local variable here. Reads nicely inside the for statement.

I snuck that into some more refactoring in bug 234872.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>448225</attachid>
            <date>2022-01-03 04:21:18 -0800</date>
            <delta_ts>2022-01-03 04:29:21 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-234812-20220103132116.patch</filename>
            <type>text/plain</type>
            <size>20424</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg3NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2NjODIzM2FjNGY2YWEz
ZDg4NTk5ZDIzYTRlMjk2MDYzN2FkZTcyOS4uZTBmMjZjZDgzOTMyNDIzYzE1OGQyN2RhODkyMzI1
ZDg4NTM2NTcyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDIyLTAxLTAzICBBbnRv
aW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJlZmFjdG9yIGNvZGUg
Y3JlYXRpbmcgY3NzIHZhbHVlcyBhbmQgbGlzdHMgZm9yIGFuaW1hdGlvbiBhbmQgdHJhbnNpdGlv
biBwcm9wZXJ0aWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzQ4MTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBGb3IgYnVnIDIzNDc5MiB3ZSBleHBvc2VkIGEgc2VyaWVzIG9mIHN0YXRpYyBmdW5jdGlv
bnMgb24gQ29tcHV0ZWRTdHlsZUV4dHJhY3RvciB0byBzaGFyZQorICAgICAgICBjb2RlIGJldHdl
ZW4gQ1NTUHJvcGVydHlQYXJzZXIuY3BwIGFuZCBDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24u
Y3BwIGZvciB0aGUgY3JlYXRpb24gb2YKKyAgICAgICAgQ1NTIHZhbHVlcyBmb3IgQ1NTIEFuaW1h
dGlvbnMgcHJvcGVydGllcy4gRGFyaW4gc3VnZ2VzdGVkIHNvbWUgcmVmYWN0b3JpbmcgYXMgcGFy
dCBvZiB0aGUKKyAgICAgICAgcmV2aWV3IG9mIHRoYXQgYnVnIHdoaWNoIHdhcyBldmVuIG1vcmUg
YXBwcm9wcmlhdGUgZm9sbG93aW5nIHRoZSBmaXggZm9yIGJ1ZyAyMzQ3ODUuCisKKyAgICAgICAg
V2Ugbm93IGV4cG9zZSBhIHNpbmdsZSBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGRDU1NWYWx1
ZUZvckFuaW1hdGlvblByb3BlcnR5VG9MaXN0KCkKKyAgICAgICAgc3RhdGljIG1ldGhvZCB0byBh
ZGQgdGhlIENTU1ZhbHVlIGZvciBhIGdpdmVuIGFuaW1hdGlvbiBvciB0cmFuc2l0aW9uIENTUyBw
cm9wZXJ0eSB0bworICAgICAgICBhIENTUyBsaXN0LCBwcm92aWRpbmcgYW4gb3B0aW9uYWwgQW5p
bWF0aW9uIHRvIHJlYWQgdGhlIHZhbHVlIGZyb20gdGhhdCwgb3RoZXJ3aXNlCisgICAgICAgIHVz
aW5nIHRoZSBkZWZhdWx0IHZhbHVlLiAgCisKKyAgICAgICAgVGhpcyBhbGxvd2VkIGluaXRpYWxs
eSBmb3Igc2hvcnRlciBjb2RlIGluIENTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQW5pbWF0aW9u
U2hvcnRoYW5kKCkKKyAgICAgICAgYW5kIGFuaW1hdGlvblNob3J0aGFuZFZhbHVlKCkuIExvb2tp
bmcgYXQgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoKSwK
KyAgICAgICAgdGhlcmUgd2VyZSBtb3JlIG9wcG9ydHVuaXRpZXMgdG8gc2hhcmUgY29kZSBhbmQg
c28gdmFsdWVMaXN0Rm9yQW5pbWF0aW9uT3JUcmFuc2l0aW9uUHJvcGVydHkoKQorICAgICAgICB3
YXMgYWRkZWQgYXMgd2VsbC4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JBbmltYXRpb25EdXJhdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckFuaW1hdGlvbkRlbGF5KToKKyAgICAgICAgKFdl
YkNvcmU6OnZhbHVlRm9yQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpOgorICAgICAgICAoV2ViQ29y
ZTo6dmFsdWVGb3JBbmltYXRpb25EaXJlY3Rpb24pOgorICAgICAgICAoV2ViQ29yZTo6dmFsdWVG
b3JBbmltYXRpb25GaWxsTW9kZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckFuaW1hdGlv
blBsYXlTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjp2YWx1ZUZvckFuaW1hdGlvbk5hbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6dmFsdWVGb3JBbmltYXRpb25UaW1pbmdGdW5jdGlvbik6CisgICAg
ICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGRDU1NWYWx1ZUZvckFuaW1h
dGlvblByb3BlcnR5VG9MaXN0KToKKyAgICAgICAgKFdlYkNvcmU6OnZhbHVlTGlzdEZvckFuaW1h
dGlvbk9yVHJhbnNpdGlvblByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmFuaW1hdGlvblNo
b3J0aGFuZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnZhbHVlRm9yUHJvcGVydHlJblN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnZhbHVlRm9yQW5pbWF0aW9uRHVyYXRpb24pOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRpb25EZWxh
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2
YWx1ZUZvckFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yQW5pbWF0aW9uRGlyZWN0aW9uKTog
RGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkNvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVl
Rm9yQW5pbWF0aW9uRmlsbE1vZGUpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6Q29tcHV0
ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRpb25QbGF5U3RhdGUpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRp
b25OYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OmRlbGF5VmFsdWUpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6ZHVyYXRpb25WYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckFuaW1hdGlvblRpbWluZ0Z1
bmN0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OnRpbWluZ0Z1bmN0aW9uVmFsdWUp
OiBEZWxldGVkLgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaDoK
KyAgICAgICAgKiBjc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkNTU1Byb3BlcnR5UGFyc2VyOjpjb25zdW1lQW5pbWF0aW9uU2hvcnRoYW5kKToKKwog
MjAyMi0wMS0wMyAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBTdXBwb3J0IHRoZSAiYW5pbWF0aW9uIiBzaG9ydGhhbmQgcHJvcGVydHkgaW4gdGhlIGNvbXB1
dGVkIHN0eWxlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwCmluZGV4IDRkN2NjYmNiZDU4YjFiMzI4ZjE4OWE2NDdmYWIyMjBhMjAyM2Ni
YTMuLmZmMThlYWIxNDYzMDUxZjU3ZDY1YWRhNDZhMDIxNTY2N2U2YzBjMTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC0x
MzQ1LDI0ICsxMzQ1LDI0IEBAIHN0YXRpYyBSZWY8Q1NTVmFsdWU+IGZvbnRWYXJpYW50RWFzdEFz
aWFuUHJvcGVydHlWYWx1ZShGb250VmFyaWFudEVhc3RBc2lhblZhcmlhCiAgICAgcmV0dXJuIHZh
bHVlTGlzdDsKIH0KIAotUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFj
dG9yOjp2YWx1ZUZvckFuaW1hdGlvbkR1cmF0aW9uKGRvdWJsZSBkdXJhdGlvbikKK3N0YXRpYyBS
ZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZhbHVlRm9yQW5pbWF0aW9uRHVyYXRpb24oZG91YmxlIGR1
cmF0aW9uKQogewogICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmdsZXRvbigpLmNyZWF0ZVZh
bHVlKGR1cmF0aW9uLCBDU1NVbml0VHlwZTo6Q1NTX1MpOwogfQogCi1SZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yQW5pbWF0aW9uRGVsYXkoZG91
YmxlIGRlbGF5KQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JBbmltYXRp
b25EZWxheShkb3VibGUgZGVsYXkpCiB7CiAgICAgcmV0dXJuIENTU1ZhbHVlUG9vbDo6c2luZ2xl
dG9uKCkuY3JlYXRlVmFsdWUoZGVsYXksIENTU1VuaXRUeXBlOjpDU1NfUyk7CiB9CiAKLVJlZjxD
U1NQcmltaXRpdmVWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRp
b25JdGVyYXRpb25Db3VudChkb3VibGUgaXRlcmF0aW9uQ291bnQpCitzdGF0aWMgUmVmPENTU1By
aW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50KGRvdWJsZSBpdGVy
YXRpb25Db3VudCkKIHsKICAgICBpZiAoaXRlcmF0aW9uQ291bnQgPT0gQW5pbWF0aW9uOjpJdGVy
YXRpb25Db3VudEluZmluaXRlKQogICAgICAgICByZXR1cm4gQ1NTVmFsdWVQb29sOjpzaW5nbGV0
b24oKS5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVJbmZpbml0ZSk7CiAgICAgcmV0dXJu
IENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlVmFsdWUoaXRlcmF0aW9uQ291bnQsIENT
U1VuaXRUeXBlOjpDU1NfTlVNQkVSKTsKIH0KIAotUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRpb246
OkFuaW1hdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24pCitzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiB2YWx1ZUZvckFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRpb246OkFuaW1hdGlvbkRpcmVj
dGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKICAgICBjYXNlIEFu
aW1hdGlvbjo6QW5pbWF0aW9uRGlyZWN0aW9uTm9ybWFsOgpAQCAtMTM3Niw3ICsxMzc2LDcgQEAg
UmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckFu
aW1hdGlvbkRpcmVjdGlvbihBbmltYXQKICAgICB9CiB9CiAKLVJlZjxDU1NQcmltaXRpdmVWYWx1
ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRpb25GaWxsTW9kZShBbmlt
YXRpb25GaWxsTW9kZSBmaWxsTW9kZSkKK3N0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZh
bHVlRm9yQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0aW9uRmlsbE1vZGUgZmlsbE1vZGUpCiB7CiAg
ICAgc3dpdGNoIChmaWxsTW9kZSkgewogICAgIGNhc2UgQW5pbWF0aW9uRmlsbE1vZGU6Ok5vbmU6
CkBAIC0xMzkwLDcgKzEzOTAsNyBAQCBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5
bGVFeHRyYWN0b3I6OnZhbHVlRm9yQW5pbWF0aW9uRmlsbE1vZGUoQW5pbWF0aQogICAgIH0KIH0K
IAotUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZv
ckFuaW1hdGlvblBsYXlTdGF0ZShBbmltYXRpb25QbGF5U3RhdGUgcGxheVN0YXRlKQorc3RhdGlj
IFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0
aW9uUGxheVN0YXRlIHBsYXlTdGF0ZSkKIHsKICAgICBzd2l0Y2ggKHBsYXlTdGF0ZSkgewogICAg
IGNhc2UgQW5pbWF0aW9uUGxheVN0YXRlOjpQbGF5aW5nOgpAQCAtMTQwMCw0MCArMTQwMCwxNCBA
QCBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9y
QW5pbWF0aW9uUGxheVN0YXRlKEFuaW1hdAogICAgIH0KIH0KIAotUmVmPENTU1ByaW1pdGl2ZVZh
bHVlPiBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckFuaW1hdGlvbk5hbWUoY29uc3Qg
QW5pbWF0aW9uOjpOYW1lJiBuYW1lKQorc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
dWVGb3JBbmltYXRpb25OYW1lKGNvbnN0IEFuaW1hdGlvbjo6TmFtZSYgbmFtZSkKIHsKICAgICBp
ZiAobmFtZS5pc0lkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBDU1NWYWx1ZVBvb2w6OnNpbmds
ZXRvbigpLmNyZWF0ZUN1c3RvbUlkZW50KG5hbWUuc3RyaW5nKTsKICAgICByZXR1cm4gQ1NTVmFs
dWVQb29sOjpzaW5nbGV0b24oKS5jcmVhdGVWYWx1ZShuYW1lLnN0cmluZywgQ1NTVW5pdFR5cGU6
OkNTU19TVFJJTkcpOwogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZGVsYXlWYWx1ZShj
b25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25MaXN0KQotewotICAgIGF1dG8gbGlzdCA9IENT
U1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICBpZiAoYW5pbWF0aW9uTGlz
dCkgewotICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlvbkxpc3QtPnNpemUo
KTsgKytpKQotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnZhbHVlRm9yQW5pbWF0aW9uRGVsYXkoYW5pbWF0aW9uTGlzdC0+YW5pbWF0aW9uKGkpLmRlbGF5
KCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBOb3RlIHRoYXQgaW5pdGlhbEFuaW1hdGlv
bkRlbGF5KCkgaXMgdXNlZCBmb3IgYm90aCB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucwotICAg
ICAgICBsaXN0LT5hcHBlbmQoQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRp
b25EZWxheShBbmltYXRpb246OmluaXRpYWxEZWxheSgpKSk7Ci0gICAgfQotICAgIHJldHVybiBs
aXN0OwotfQotCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gZHVyYXRpb25WYWx1ZShjb25zdCBB
bmltYXRpb25MaXN0KiBhbmltYXRpb25MaXN0KQotewotICAgIGF1dG8gbGlzdCA9IENTU1ZhbHVl
TGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICBpZiAoYW5pbWF0aW9uTGlzdCkgewot
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFuaW1hdGlvbkxpc3QtPnNpemUoKTsgKytp
KQotICAgICAgICAgICAgbGlzdC0+YXBwZW5kKENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVl
Rm9yQW5pbWF0aW9uRHVyYXRpb24oYW5pbWF0aW9uTGlzdC0+YW5pbWF0aW9uKGkpLmR1cmF0aW9u
KCkpKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBOb3RlIHRoYXQgaW5pdGlhbEFuaW1hdGlv
bkR1cmF0aW9uKCkgaXMgdXNlZCBmb3IgYm90aCB0cmFuc2l0aW9ucyBhbmQgYW5pbWF0aW9ucwot
ICAgICAgICBsaXN0LT5hcHBlbmQoQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmlt
YXRpb25EdXJhdGlvbihBbmltYXRpb246OmluaXRpYWxEdXJhdGlvbigpKSk7Ci0gICAgfQotICAg
IHJldHVybiBsaXN0OwotfQotCi1SZWY8Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnZhbHVlRm9yQW5pbWF0aW9uVGltaW5nRnVuY3Rpb24oY29uc3QgVGltaW5nRnVuY3Rpb24mIHRp
bWluZ0Z1bmN0aW9uKQorc3RhdGljIFJlZjxDU1NWYWx1ZT4gdmFsdWVGb3JBbmltYXRpb25UaW1p
bmdGdW5jdGlvbihjb25zdCBUaW1pbmdGdW5jdGlvbiYgdGltaW5nRnVuY3Rpb24pCiB7CiAgICAg
c3dpdGNoICh0aW1pbmdGdW5jdGlvbi50eXBlKCkpIHsKICAgICBjYXNlIFRpbWluZ0Z1bmN0aW9u
OjpDdWJpY0JlemllckZ1bmN0aW9uOiB7CkBAIC0xNDczLDE1ICsxNDQ3LDM5IEBAIFJlZjxDU1NW
YWx1ZT4gQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRpb25UaW1pbmdGdW5j
dGlvbihjb25zdCBUaW1pCiAgICAgfQogfQogCi1zdGF0aWMgUmVmPENTU1ZhbHVlTGlzdD4gdGlt
aW5nRnVuY3Rpb25WYWx1ZShjb25zdCBBbmltYXRpb25MaXN0KiBhbmltYXRpb25MaXN0KQordm9p
ZCBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGRDU1NWYWx1ZUZvckFuaW1hdGlvblByb3BlcnR5
VG9MaXN0KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IEFuaW1hdGlvbiogYW5pbWF0aW9u
LCBDU1NWYWx1ZUxpc3QmIGxpc3QpCit7CisgICAgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5
QW5pbWF0aW9uRHVyYXRpb24gfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUcmFuc2l0aW9uRHVy
YXRpb24pCisgICAgICAgIGxpc3QuYXBwZW5kKHZhbHVlRm9yQW5pbWF0aW9uRHVyYXRpb24oYW5p
bWF0aW9uID8gYW5pbWF0aW9uLT5kdXJhdGlvbigpIDogQW5pbWF0aW9uOjppbml0aWFsRHVyYXRp
b24oKSkpOworICAgIGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QW5pbWF0aW9uRGVs
YXkgfHwgcHJvcGVydHkgPT0gQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXkpCisgICAgICAgIGxp
c3QuYXBwZW5kKHZhbHVlRm9yQW5pbWF0aW9uRGVsYXkoYW5pbWF0aW9uID8gYW5pbWF0aW9uLT5k
ZWxheSgpIDogQW5pbWF0aW9uOjppbml0aWFsRGVsYXkoKSkpOworICAgIGVsc2UgaWYgKHByb3Bl
cnR5ID09IENTU1Byb3BlcnR5QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQpCisgICAgICAgIGxpc3Qu
YXBwZW5kKHZhbHVlRm9yQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoYW5pbWF0aW9uID8gYW5pbWF0
aW9uLT5pdGVyYXRpb25Db3VudCgpIDogQW5pbWF0aW9uOjppbml0aWFsSXRlcmF0aW9uQ291bnQo
KSkpOworICAgIGVsc2UgaWYgKHByb3BlcnR5ID09IENTU1Byb3BlcnR5QW5pbWF0aW9uRGlyZWN0
aW9uKQorICAgICAgICBsaXN0LmFwcGVuZCh2YWx1ZUZvckFuaW1hdGlvbkRpcmVjdGlvbihhbmlt
YXRpb24gPyBhbmltYXRpb24tPmRpcmVjdGlvbigpIDogQW5pbWF0aW9uOjppbml0aWFsRGlyZWN0
aW9uKCkpKTsKKyAgICBlbHNlIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkZp
bGxNb2RlKQorICAgICAgICBsaXN0LmFwcGVuZCh2YWx1ZUZvckFuaW1hdGlvbkZpbGxNb2RlKGFu
aW1hdGlvbiA/IGFuaW1hdGlvbi0+ZmlsbE1vZGUoKSA6IEFuaW1hdGlvbjo6aW5pdGlhbEZpbGxN
b2RlKCkpKTsKKyAgICBlbHNlIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFuaW1hdGlvblBs
YXlTdGF0ZSkKKyAgICAgICAgbGlzdC5hcHBlbmQodmFsdWVGb3JBbmltYXRpb25QbGF5U3RhdGUo
YW5pbWF0aW9uID8gYW5pbWF0aW9uLT5wbGF5U3RhdGUoKSA6IEFuaW1hdGlvbjo6aW5pdGlhbFBs
YXlTdGF0ZSgpKSk7CisgICAgZWxzZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlBbmltYXRp
b25OYW1lKQorICAgICAgICBsaXN0LmFwcGVuZCh2YWx1ZUZvckFuaW1hdGlvbk5hbWUoYW5pbWF0
aW9uID8gYW5pbWF0aW9uLT5uYW1lKCkgOiBBbmltYXRpb246OmluaXRpYWxOYW1lKCkpKTsKKyAg
ICBlbHNlIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9u
IHx8IHByb3BlcnR5ID09IENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uKSB7Cisg
ICAgICAgIGlmIChhbmltYXRpb24pCisgICAgICAgICAgICBsaXN0LmFwcGVuZCh2YWx1ZUZvckFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKCphbmltYXRpb24tPnRpbWluZ0Z1bmN0aW9uKCkpKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgbGlzdC5hcHBlbmQodmFsdWVGb3JBbmltYXRpb25UaW1p
bmdGdW5jdGlvbihDdWJpY0JlemllclRpbWluZ0Z1bmN0aW9uOjpkZWZhdWx0VGltaW5nRnVuY3Rp
b24oKSkpOworICAgIH0gZWxzZQorICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwor
c3RhdGljIFJlZjxDU1NWYWx1ZUxpc3Q+IHZhbHVlTGlzdEZvckFuaW1hdGlvbk9yVHJhbnNpdGlv
blByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IEFuaW1hdGlvbkxpc3QqIGFu
aW1hdGlvbkxpc3QpCiB7CiAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21t
YVNlcGFyYXRlZCgpOwogICAgIGlmIChhbmltYXRpb25MaXN0KSB7CiAgICAgICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgYW5pbWF0aW9uTGlzdC0+c2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBs
aXN0LT5hcHBlbmQoQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRpb25UaW1p
bmdGdW5jdGlvbigqYW5pbWF0aW9uTGlzdC0+YW5pbWF0aW9uKGkpLnRpbWluZ0Z1bmN0aW9uKCkp
KTsKKyAgICAgICAgICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkZENTU1ZhbHVlRm9yQW5p
bWF0aW9uUHJvcGVydHlUb0xpc3QocHJvcGVydHksICZhbmltYXRpb25MaXN0LT5hbmltYXRpb24o
aSksIGxpc3QuZ2V0KCkpOwogICAgIH0gZWxzZQotICAgICAgICAvLyBOb3RlIHRoYXQgaW5pdGlh
bEFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKCkgaXMgdXNlZCBmb3IgYm90aCB0cmFuc2l0aW9ucyBh
bmQgYW5pbWF0aW9ucwotICAgICAgICBsaXN0LT5hcHBlbmQoQ29tcHV0ZWRTdHlsZUV4dHJhY3Rv
cjo6dmFsdWVGb3JBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmltYXRpb246OmluaXRpYWxUaW1p
bmdGdW5jdGlvbigpKSk7CisgICAgICAgIENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OmFkZENTU1Zh
bHVlRm9yQW5pbWF0aW9uUHJvcGVydHlUb0xpc3QocHJvcGVydHksIG51bGxwdHIsIGxpc3QuZ2V0
KCkpOwogICAgIHJldHVybiBsaXN0OwogfQogCkBAIC0xNDkyLDE0ICsxNDkwLDkgQEAgc3RhdGlj
IFJlZjxDU1NWYWx1ZUxpc3Q+IGFuaW1hdGlvblNob3J0aGFuZFZhbHVlKGNvbnN0IEFuaW1hdGlv
bkxpc3QqIGFuaW1hdGlvbkwKICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBhbmltYXRp
b25MaXN0LT5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgY29uc3QgYXV0byYgYW5pbWF0aW9u
ID0gYW5pbWF0aW9uTGlzdC0+YW5pbWF0aW9uKGkpOwogICAgICAgICAgICAgYXV0byBjaGlsZExp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBj
aGlsZExpc3QtPmFwcGVuZChDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckFuaW1hdGlv
bkR1cmF0aW9uKGFuaW1hdGlvbi5kdXJhdGlvbigpKSk7Ci0gICAgICAgICAgICBjaGlsZExpc3Qt
PmFwcGVuZChDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckFuaW1hdGlvblRpbWluZ0Z1
bmN0aW9uKCphbmltYXRpb24udGltaW5nRnVuY3Rpb24oKSkpOwotICAgICAgICAgICAgY2hpbGRM
aXN0LT5hcHBlbmQoQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRpb25EZWxh
eShhbmltYXRpb24uZGVsYXkoKSkpOwotICAgICAgICAgICAgY2hpbGRMaXN0LT5hcHBlbmQoQ29t
cHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRpb25JdGVyYXRpb25Db3VudChhbmlt
YXRpb24uaXRlcmF0aW9uQ291bnQoKSkpOwotICAgICAgICAgICAgY2hpbGRMaXN0LT5hcHBlbmQo
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRpb25EaXJlY3Rpb24oYW5pbWF0
aW9uLmRpcmVjdGlvbigpKSk7Ci0gICAgICAgICAgICBjaGlsZExpc3QtPmFwcGVuZChDb21wdXRl
ZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckFuaW1hdGlvbkZpbGxNb2RlKGFuaW1hdGlvbi5maWxs
TW9kZSgpKSk7Ci0gICAgICAgICAgICBjaGlsZExpc3QtPmFwcGVuZChDb21wdXRlZFN0eWxlRXh0
cmFjdG9yOjp2YWx1ZUZvckFuaW1hdGlvblBsYXlTdGF0ZShhbmltYXRpb24ucGxheVN0YXRlKCkp
KTsKLSAgICAgICAgICAgIGNoaWxkTGlzdC0+YXBwZW5kKENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6
OnZhbHVlRm9yQW5pbWF0aW9uTmFtZShhbmltYXRpb24ubmFtZSgpKSk7CisgICAgICAgICAgICBh
dXRvIHNob3J0aGFuZCA9IHNob3J0aGFuZEZvclByb3BlcnR5KENTU1Byb3BlcnR5QW5pbWF0aW9u
KTsKKyAgICAgICAgICAgIGZvciAoYXV0byBsb25naGFuZCA6IHNob3J0aGFuZCkKKyAgICAgICAg
ICAgICAgICBDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjphZGRDU1NWYWx1ZUZvckFuaW1hdGlvblBy
b3BlcnR5VG9MaXN0KGxvbmdoYW5kLCAmYW5pbWF0aW9uLCBjaGlsZExpc3QuZ2V0KCkpOwogICAg
ICAgICAgICAgcGFyZW50TGlzdC0+YXBwZW5kKGNoaWxkTGlzdCk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0zNTkwLDYxICszNTgzLDE0IEBAIFJlZlB0cjxDU1NWYWx1ZT4gQ29tcHV0ZWRTdHlsZUV4
dHJhY3Rvcjo6dmFsdWVGb3JQcm9wZXJ0eUluU3R5bGUoY29uc3QgUmVuZGVyU3R5CiAgICAgICAg
IGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb246CiAgICAgICAgICAgICByZXR1cm4gYW5pbWF0aW9u
U2hvcnRoYW5kVmFsdWUoc3R5bGUuYW5pbWF0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9w
ZXJ0eUFuaW1hdGlvbkRlbGF5OgotICAgICAgICAgICAgcmV0dXJuIGRlbGF5VmFsdWUoc3R5bGUu
YW5pbWF0aW9ucygpKTsKLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkRpcmVjdGlv
bjogewotICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNl
cGFyYXRlZCgpOwotICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLmFu
aW1hdGlvbnMoKTsKLSAgICAgICAgICAgIGlmICh0KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKHZhbHVlRm9yQW5pbWF0aW9uRGlyZWN0aW9uKHQtPmFuaW1hdGlvbihpKS5kaXJl
Y3Rpb24oKSkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFsdWVOb3JtYWwpKTsK
LSAgICAgICAgICAgIHJldHVybiBsaXN0OwotICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTUHJv
cGVydHlBbmltYXRpb25EaXJlY3Rpb246CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRp
b25EdXJhdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblZhbHVlKHN0eWxlLmFuaW1h
dGlvbnMoKSk7Ci0gICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25GaWxsTW9kZTogewot
ICAgICAgICAgICAgYXV0byBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVDb21tYVNlcGFyYXRl
ZCgpOwotICAgICAgICAgICAgY29uc3QgQW5pbWF0aW9uTGlzdCogdCA9IHN0eWxlLmFuaW1hdGlv
bnMoKTsKLSAgICAgICAgICAgIGlmICh0KSB7Ci0gICAgICAgICAgICAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCB0LT5zaXplKCk7ICsraSkKLSAgICAgICAgICAgICAgICAgICAgbGlzdC0+YXBw
ZW5kKHZhbHVlRm9yQW5pbWF0aW9uRmlsbE1vZGUodC0+YW5pbWF0aW9uKGkpLmZpbGxNb2RlKCkp
KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZChjc3NW
YWx1ZVBvb2wuY3JlYXRlSWRlbnRpZmllclZhbHVlKENTU1ZhbHVlTm9uZSkpOwotICAgICAgICAg
ICAgcmV0dXJuIGxpc3Q7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1h
dGlvbkl0ZXJhdGlvbkNvdW50OiB7Ci0gICAgICAgICAgICBhdXRvIGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBjb25zdCBBbmltYXRpb25M
aXN0KiB0ID0gc3R5bGUuYW5pbWF0aW9ucygpOwotICAgICAgICAgICAgaWYgKHQpIHsKLSAgICAg
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUoKTsgKytpKQotICAgICAg
ICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JBbmltYXRpb25JdGVyYXRpb25Db3Vu
dCh0LT5hbmltYXRpb24oaSkuaXRlcmF0aW9uQ291bnQoKSkpOwotICAgICAgICAgICAgfSBlbHNl
Ci0gICAgICAgICAgICAgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVWYWx1ZShB
bmltYXRpb246OmluaXRpYWxJdGVyYXRpb25Db3VudCgpLCBDU1NVbml0VHlwZTo6Q1NTX05VTUJF
UikpOwotICAgICAgICAgICAgcmV0dXJuIGxpc3Q7Ci0gICAgICAgIH0KLSAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eUFuaW1hdGlvbk5hbWU6IHsKLSAgICAgICAgICAgIGF1dG8gbGlzdCA9IENTU1Zh
bHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKLSAgICAgICAgICAgIGNvbnN0IEFuaW1h
dGlvbkxpc3QqIHQgPSBzdHlsZS5hbmltYXRpb25zKCk7Ci0gICAgICAgICAgICBpZiAodCkgewot
ICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdC0+c2l6ZSgpOyArK2kpCi0g
ICAgICAgICAgICAgICAgICAgIGxpc3QtPmFwcGVuZCh2YWx1ZUZvckFuaW1hdGlvbk5hbWUodC0+
YW5pbWF0aW9uKGkpLm5hbWUoKSkpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAg
ICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbC5jcmVhdGVJZGVudGlmaWVyVmFsdWUoQ1NTVmFs
dWVOb25lKSk7Ci0gICAgICAgICAgICByZXR1cm4gbGlzdDsKLSAgICAgICAgfQotICAgICAgICBj
YXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uUGxheVN0YXRlOiB7Ci0gICAgICAgICAgICBhdXRvIGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZUNvbW1hU2VwYXJhdGVkKCk7Ci0gICAgICAgICAgICBj
b25zdCBBbmltYXRpb25MaXN0KiB0ID0gc3R5bGUuYW5pbWF0aW9ucygpOwotICAgICAgICAgICAg
aWYgKHQpIHsKLSAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHQtPnNpemUo
KTsgKytpKQotICAgICAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQodmFsdWVGb3JBbmltYXRp
b25QbGF5U3RhdGUodC0+YW5pbWF0aW9uKGkpLnBsYXlTdGF0ZSgpKSk7Ci0gICAgICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sLmNyZWF0ZUlk
ZW50aWZpZXJWYWx1ZShDU1NWYWx1ZVJ1bm5pbmcpKTsKLSAgICAgICAgICAgIHJldHVybiBsaXN0
OwotICAgICAgICB9CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlBbmltYXRpb25GaWxsTW9kZToK
KyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50OgorICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5QW5pbWF0aW9uTmFtZToKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0
eUFuaW1hdGlvblBsYXlTdGF0ZToKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRp
bWluZ0Z1bmN0aW9uOgotICAgICAgICAgICAgcmV0dXJuIHRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5
bGUuYW5pbWF0aW9ucygpKTsKKyAgICAgICAgICAgIHJldHVybiB2YWx1ZUxpc3RGb3JBbmltYXRp
b25PclRyYW5zaXRpb25Qcm9wZXJ0eShwcm9wZXJ0eUlELCBzdHlsZS5hbmltYXRpb25zKCkpOwog
ICAgICAgICBjYXNlIENTU1Byb3BlcnR5QXBwZWFyYW5jZToKICAgICAgICAgICAgIHJldHVybiBj
c3NWYWx1ZVBvb2wuY3JlYXRlVmFsdWUoc3R5bGUuYXBwZWFyYW5jZSgpKTsKICAgICAgICAgY2Fz
ZSBDU1NQcm9wZXJ0eUFzcGVjdFJhdGlvOgpAQCAtMzgzNywxMyArMzc4MywxMSBAQCBSZWZQdHI8
Q1NTVmFsdWU+IENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yUHJvcGVydHlJblN0eWxl
KGNvbnN0IFJlbmRlclN0eQogICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgICAg
ICAgICAgcmV0dXJuIGNvbXB1dGVkUm90YXRlKHJlbmRlcmVyLCBzdHlsZSk7CiAgICAgICAgIGNh
c2UgQ1NTUHJvcGVydHlUcmFuc2l0aW9uRGVsYXk6Ci0gICAgICAgICAgICByZXR1cm4gZGVsYXlW
YWx1ZShzdHlsZS50cmFuc2l0aW9ucygpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVRyYW5z
aXRpb25EdXJhdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBkdXJhdGlvblZhbHVlKHN0eWxlLnRy
YW5zaXRpb25zKCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1
bmN0aW9uOgorICAgICAgICAgICAgcmV0dXJuIHZhbHVlTGlzdEZvckFuaW1hdGlvbk9yVHJhbnNp
dGlvblByb3BlcnR5KHByb3BlcnR5SUQsIHN0eWxlLnRyYW5zaXRpb25zKCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5VHJhbnNpdGlvblByb3BlcnR5OgogICAgICAgICAgICAgcmV0dXJuIHRy
YW5zaXRpb25Qcm9wZXJ0eVZhbHVlKHN0eWxlLnRyYW5zaXRpb25zKCkpOwotICAgICAgICBjYXNl
IENTU1Byb3BlcnR5VHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uOgotICAgICAgICAgICAgcmV0dXJu
IHRpbWluZ0Z1bmN0aW9uVmFsdWUoc3R5bGUudHJhbnNpdGlvbnMoKSk7CiAgICAgICAgIGNhc2Ug
Q1NTUHJvcGVydHlUcmFuc2l0aW9uOiB7CiAgICAgICAgICAgICBpZiAoYXV0byogYW5pbWF0aW9u
TGlzdCA9IHN0eWxlLnRyYW5zaXRpb25zKCkpIHsKICAgICAgICAgICAgICAgICBhdXRvIHRyYW5z
aXRpb25zTGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlQ29tbWFTZXBhcmF0ZWQoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uaAppbmRleCA3
OGJiMjdiM2ZiOGRkM2Q1MGNhY2Q2NmNjMTMwNGMyZWU4MjhiODE5Li4zNDlkMDY5YjcwZjAyZTNj
YzQzYzRjNDE2ZWUzZWFkMzdlOGFjY2NhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3Mv
Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL0NT
U0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5oCkBAIC03OCwxNCArNzgsNyBAQCBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxDU1NGb250U3R5bGVWYWx1ZT4gZm9udE5vbktleXdvcmRTdHlsZUZyb21T
dHlsZVZhbHVlKEZvbnRTZWxlY3Rpb25WYWx1ZSk7CiAgICAgc3RhdGljIFJlZjxDU1NGb250U3R5
bGVWYWx1ZT4gZm9udFN0eWxlRnJvbVN0eWxlVmFsdWUoc3RkOjpvcHRpb25hbDxGb250U2VsZWN0
aW9uVmFsdWU+LCBGb250U3R5bGVBeGlzKTsKIAotICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZl
VmFsdWU+IHZhbHVlRm9yQW5pbWF0aW9uRHVyYXRpb24oZG91YmxlKTsKLSAgICBzdGF0aWMgUmVm
PENTU1ZhbHVlPiB2YWx1ZUZvckFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKGNvbnN0IFRpbWluZ0Z1
bmN0aW9uJik7Ci0gICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JBbmlt
YXRpb25EZWxheShkb3VibGUpOwotICAgIHN0YXRpYyBSZWY8Q1NTUHJpbWl0aXZlVmFsdWU+IHZh
bHVlRm9yQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQoZG91YmxlKTsKLSAgICBzdGF0aWMgUmVmPENT
U1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckFuaW1hdGlvbkRpcmVjdGlvbihBbmltYXRpb246OkFu
aW1hdGlvbkRpcmVjdGlvbik7Ci0gICAgc3RhdGljIFJlZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFs
dWVGb3JBbmltYXRpb25GaWxsTW9kZShBbmltYXRpb25GaWxsTW9kZSk7Ci0gICAgc3RhdGljIFJl
ZjxDU1NQcmltaXRpdmVWYWx1ZT4gdmFsdWVGb3JBbmltYXRpb25QbGF5U3RhdGUoQW5pbWF0aW9u
UGxheVN0YXRlKTsKLSAgICBzdGF0aWMgUmVmPENTU1ByaW1pdGl2ZVZhbHVlPiB2YWx1ZUZvckFu
aW1hdGlvbk5hbWUoY29uc3QgQW5pbWF0aW9uOjpOYW1lJik7CisgICAgc3RhdGljIHZvaWQgYWRk
Q1NTVmFsdWVGb3JBbmltYXRpb25Qcm9wZXJ0eVRvTGlzdChDU1NQcm9wZXJ0eUlELCBjb25zdCBB
bmltYXRpb24qLCBDU1NWYWx1ZUxpc3QmKTsKIAogcHJpdmF0ZToKICAgICAvLyBUaGUgc3R5bGVk
IGVsZW1lbnQgaXMgZWl0aGVyIHRoZSBlbGVtZW50IHBhc3NlZCBpbnRvCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9jc3MvcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuY3BwCmluZGV4IDM5MTA1N2ViMTcx
NzYwMzhjODA1YWNiNzM2NDQyN2JjYzQ5N2Q3ZDIuLmY3NTFhOGZjNTY4ZDdlZWFmZTVkMTdkYTIz
MzQ3YzBlNDZlNTE1OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NT
UHJvcGVydHlQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9wYXJzZXIvQ1NTUHJv
cGVydHlQYXJzZXIuY3BwCkBAIC0xNjU4LDI3ICsxNjU4LDEwIEBAIGJvb2wgQ1NTUHJvcGVydHlQ
YXJzZXI6OmNvbnN1bWVBbmltYXRpb25TaG9ydGhhbmQoY29uc3QgU3R5bGVQcm9wZXJ0eVNob3J0
aGFuZCYKICAgICAgICAgLy8gRklYTUU6IFRoaXMgd2lsbCBtYWtlIGludmFsaWQgbG9uZ2hhbmRz
LCBzZWUgY3JidWcuY29tLzM4NjQ1OQogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxv
bmdoYW5kQ291bnQ7ICsraSkgewogICAgICAgICAgICAgaWYgKCFwYXJzZWRMb25naGFuZFtpXSkg
ewotICAgICAgICAgICAgICAgIGF1dG8gcHJvcGVydHkgPSBzaG9ydGhhbmQucHJvcGVydGllcygp
W2ldOwotICAgICAgICAgICAgICAgIGlmIChwcm9wZXJ0eSA9PSBDU1NQcm9wZXJ0eUFuaW1hdGlv
bkR1cmF0aW9uKQotICAgICAgICAgICAgICAgICAgICBsb25naGFuZHNbaV0tPmFwcGVuZChDb21w
dXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckFuaW1hdGlvbkR1cmF0aW9uKEFuaW1hdGlvbjo6
aW5pdGlhbER1cmF0aW9uKCkpKTsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChwcm9wZXJ0eSA9
PSBDU1NQcm9wZXJ0eUFuaW1hdGlvblRpbWluZ0Z1bmN0aW9uKQotICAgICAgICAgICAgICAgICAg
ICBsb25naGFuZHNbaV0tPmFwcGVuZChDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckFu
aW1hdGlvblRpbWluZ0Z1bmN0aW9uKEN1YmljQmV6aWVyVGltaW5nRnVuY3Rpb246OmRlZmF1bHRU
aW1pbmdGdW5jdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVydHkgPT0g
Q1NTUHJvcGVydHlBbmltYXRpb25EZWxheSkKLSAgICAgICAgICAgICAgICAgICAgbG9uZ2hhbmRz
W2ldLT5hcHBlbmQoQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6dmFsdWVGb3JBbmltYXRpb25EZWxh
eShBbmltYXRpb246OmluaXRpYWxEZWxheSgpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAo
cHJvcGVydHkgPT0gQ1NTUHJvcGVydHlBbmltYXRpb25JdGVyYXRpb25Db3VudCkKLSAgICAgICAg
ICAgICAgICAgICAgbG9uZ2hhbmRzW2ldLT5hcHBlbmQoQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
dmFsdWVGb3JBbmltYXRpb25JdGVyYXRpb25Db3VudChBbmltYXRpb246OmluaXRpYWxJdGVyYXRp
b25Db3VudCgpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJv
cGVydHlBbmltYXRpb25EaXJlY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIGxvbmdoYW5kc1tp
XS0+YXBwZW5kKENvbXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yQW5pbWF0aW9uRGlyZWN0
aW9uKEFuaW1hdGlvbjo6aW5pdGlhbERpcmVjdGlvbigpKSk7Ci0gICAgICAgICAgICAgICAgZWxz
ZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlBbmltYXRpb25GaWxsTW9kZSkKLSAgICAgICAg
ICAgICAgICAgICAgbG9uZ2hhbmRzW2ldLT5hcHBlbmQoQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6
dmFsdWVGb3JBbmltYXRpb25GaWxsTW9kZShBbmltYXRpb246OmluaXRpYWxGaWxsTW9kZSgpKSk7
Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVydHkgPT0gQ1NTUHJvcGVydHlBbmltYXRp
b25QbGF5U3RhdGUpCi0gICAgICAgICAgICAgICAgICAgIGxvbmdoYW5kc1tpXS0+YXBwZW5kKENv
bXB1dGVkU3R5bGVFeHRyYWN0b3I6OnZhbHVlRm9yQW5pbWF0aW9uUGxheVN0YXRlKEFuaW1hdGlv
bjo6aW5pdGlhbFBsYXlTdGF0ZSgpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAocHJvcGVy
dHkgPT0gQ1NTUHJvcGVydHlBbmltYXRpb25OYW1lKQotICAgICAgICAgICAgICAgICAgICBsb25n
aGFuZHNbaV0tPmFwcGVuZChDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjp2YWx1ZUZvckFuaW1hdGlv
bk5hbWUoQW5pbWF0aW9uOjppbml0aWFsTmFtZSgpKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICAgICAgICAgIEFTU0VSVChzaG9ydGhhbmQuaWQoKSA9PSBDU1NQcm9wZXJ0
eVRyYW5zaXRpb24pOworICAgICAgICAgICAgICAgIGlmIChzaG9ydGhhbmQuaWQoKSA9PSBDU1NQ
cm9wZXJ0eVRyYW5zaXRpb24pCiAgICAgICAgICAgICAgICAgICAgIGxvbmdoYW5kc1tpXS0+YXBw
ZW5kKENTU1ZhbHVlUG9vbDo6c2luZ2xldG9uKCkuY3JlYXRlSW1wbGljaXRJbml0aWFsVmFsdWUo
KSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgQ29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6YWRkQ1NTVmFsdWVGb3JBbmltYXRpb25Q
cm9wZXJ0eVRvTGlzdChzaG9ydGhhbmQucHJvcGVydGllcygpW2ldLCBudWxscHRyLCAqbG9uZ2hh
bmRzW2ldKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBhcnNlZExvbmdoYW5kW2ldID0g
ZmFsc2U7CiAgICAgICAgIH0K
</data>
<flag name="review"
          id="474057"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>