<?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>90012</bug_id>
          
          <creation_ts>2012-06-26 13:45:19 -0700</creation_ts>
          <short_desc>[chromium] Allow screen space rects and occluding rects to be visualized for debugging.</short_desc>
          <delta_ts>2012-06-27 13:31:47 -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>WebKit Misc.</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter>vollick</reporter>
          <assigned_to>vollick</assigned_to>
          <cc>cc-bugs</cc>
    
    <cc>danakj</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>657947</commentid>
    <comment_count>0</comment_count>
    <who name="">vollick</who>
    <bug_when>2012-06-26 13:45:19 -0700</bug_when>
    <thetext>It would be nice to beef up the debug rect visualization code so that we can see the rects used for occlusion, and the screen space rects for render surfaces and their replicas.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657955</commentid>
    <comment_count>1</comment_count>
      <attachid>149600</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-26 13:53:15 -0700</bug_when>
    <thetext>Created attachment 149600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>657982</commentid>
    <comment_count>2</comment_count>
      <attachid>149600</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-26 14:16:15 -0700</bug_when>
    <thetext>Comment on attachment 149600
Patch

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

Occlusion makes for a really cool visualization :)

&gt; Source/WebCore/platform/graphics/chromium/cc/CCDebugRectHistory.h:41
&gt; +// There are currently five types of debug rects:

nit: six?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCDebugRectHistory.h:56
&gt; +// - Screen space rects: this is the region the contents occupy in screen space.
&gt; +//
&gt; +// - Replica screen space rects: this is the region the replica&apos;s contents occupy in screen space.

nit: Comment upkeep :/ Does occlusion rects need to be here too then?

&gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp:249
&gt; +            // Screen space rects in purple.

nit: copypasta, update this one.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:298
&gt; +        frame.occlusionTracker-&gt;startRecordingOccludingScreenSpaceRects();

Could we maybe stick the list of rects on the frame instead of the whole occlusion tracker? Maybe pass a reference to the frame&apos;s list in to the startRecording function and it can record directly into the frame? This way we avoid an extra variable and getter method on the tracker class.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:367
&gt; +        addOcclusionBehindLayer&lt;LayerType&gt;(m_stack.last().occlusionInScreen, layer, contentToScreenSpaceTransform&lt;LayerType&gt;(layer), opaqueContents, scissorInScreenRect, m_minimumTrackingSize, m_recordingOccludingScreenSpaceRects ? &amp;m_occludingScreenSpaceRects : 0);

please use a temp var for this. the line is so long already, and its also easier to see whats going on in debugger.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.h:-72
&gt; -

prefer keep this whitespace. the below is not a getter for the above.

&gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.h:79
&gt; +    const Region&amp; occlusionInScreenSpace() const { return m_stack.last().occlusionInScreen; }
&gt; +    void setOcclusionInScreenSpace(const Region&amp; region) { m_stack.last().occlusionInScreen = region; }
&gt; +
&gt; +    const Region&amp; occlusionInTargetSurface() const { return m_stack.last().occlusionInTarget; }
&gt; +    void setOcclusionInTargetSurface(const Region&amp; region) { m_stack.last().occlusionInTarget = region; }

Can these still live in the testing subclass? If making them here but protected is easier that&apos;s okay, but prefer not public.

&gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:1290
&gt; -        // But the opaque layer&apos;s occlusion is preserved on the parent. 
&gt; +        // But the opaque layer&apos;s occlusion is preserved on the parent.

:p</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658189</commentid>
    <comment_count>3</comment_count>
      <attachid>149653</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-26 18:07:42 -0700</bug_when>
    <thetext>Created attachment 149653
Patch

(In reply to comment #2)
&gt; (From update of attachment 149600 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=149600&amp;action=review
&gt;
&gt; Occlusion makes for a really cool visualization :)
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCDebugRectHistory.h:41
&gt; &gt; +// There are currently five types of debug rects:
&gt;
&gt; nit: six?
Fixed.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCDebugRectHistory.h:56
&gt; &gt; +// - Screen space rects: this is the region the contents occupy in screen space.
&gt; &gt; +//
&gt; &gt; +// - Replica screen space rects: this is the region the replica&apos;s contents occupy in screen space.
&gt;
&gt; nit: Comment upkeep :/ Does occlusion rects need to be here too then?
Fixed.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCHeadsUpDisplay.cpp:249
&gt; &gt; +            // Screen space rects in purple.
&gt;
&gt; nit: copypasta, update this one.
Fixed.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCLayerTreeHostImpl.cpp:298
&gt; &gt; +        frame.occlusionTracker-&gt;startRecordingOccludingScreenSpaceRects();
&gt;
&gt; Could we maybe stick the list of rects on the frame instead of the whole occlusion tracker? Maybe pass a reference to the frame&apos;s list in to the startRecording function and it can record directly into the frame? This way we avoid an extra variable and getter method on the tracker class.
Sure can. This also saves me from having to forward declare CCOcclusionTracerImpl, so a whole bunch of the patch can disappear.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.cpp:367
&gt; &gt; +        addOcclusionBehindLayer&lt;LayerType&gt;(m_stack.last().occlusionInScreen, layer, contentToScreenSpaceTransform&lt;LayerType&gt;(layer), opaqueContents, scissorInScreenRect, m_minimumTrackingSize, m_recordingOccludingScreenSpaceRects ? &amp;m_occludingScreenSpaceRects : 0);
&gt;
&gt; please use a temp var for this. the line is so long already, and its also easier to see whats going on in debugger.
Ternary is gone.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.h:-72
&gt; &gt; -
&gt;
&gt; prefer keep this whitespace. the below is not a getter for the above.
Put it back.
&gt;
&gt; &gt; Source/WebCore/platform/graphics/chromium/cc/CCOcclusionTracker.h:79
&gt; &gt; +    const Region&amp; occlusionInScreenSpace() const { return m_stack.last().occlusionInScreen; }
&gt; &gt; +    void setOcclusionInScreenSpace(const Region&amp; region) { m_stack.last().occlusionInScreen = region; }
&gt; &gt; +
&gt; &gt; +    const Region&amp; occlusionInTargetSurface() const { return m_stack.last().occlusionInTarget; }
&gt; &gt; +    void setOcclusionInTargetSurface(const Region&amp; region) { m_stack.last().occlusionInTarget = region; }
&gt;
&gt; Can these still live in the testing subclass? If making them here but protected is easier that&apos;s okay, but prefer not public.
Yep. Done.
&gt;
&gt; &gt; Source/WebKit/chromium/tests/CCOcclusionTrackerTest.cpp:1290
&gt; &gt; -        // But the opaque layer&apos;s occlusion is preserved on the parent.
&gt; &gt; +        // But the opaque layer&apos;s occlusion is preserved on the parent.
&gt;
&gt; :p
My whitespace is awesomer. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658195</commentid>
    <comment_count>4</comment_count>
      <attachid>149655</attachid>
    <who name="">vollick</who>
    <bug_when>2012-06-26 18:10:34 -0700</bug_when>
    <thetext>Created attachment 149655
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658196</commentid>
    <comment_count>5</comment_count>
      <attachid>149655</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-06-26 18:14:26 -0700</bug_when>
    <thetext>Comment on attachment 149655
Patch

lgtm</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658805</commentid>
    <comment_count>6</comment_count>
      <attachid>149655</attachid>
    <who name="Adrienne Walker">enne</who>
    <bug_when>2012-06-27 13:01:32 -0700</bug_when>
    <thetext>Comment on attachment 149655
Patch

R=me.  Sounds great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658832</commentid>
    <comment_count>7</comment_count>
      <attachid>149655</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 13:31:41 -0700</bug_when>
    <thetext>Comment on attachment 149655
Patch

Clearing flags on attachment: 149655

Committed r121361: &lt;http://trac.webkit.org/changeset/121361&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>658833</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-06-27 13:31:47 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149600</attachid>
            <date>2012-06-26 13:53:15 -0700</date>
            <delta_ts>2012-06-26 18:07:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90012-20120626165314.patch</filename>
            <type>text/plain</type>
            <size>68309</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBiNTBhZjA5YTc2MGZj
OWI3YzNlNTZmYzA0NGUzMTBkZmU5YWEzZC4uMTJmZDYyM2QxMTk2YmJkOTg1ZmE3NTM3NDliNDRl
ZGQyZDc2NDkwMyAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU4IEBACisyMDEyLTA2LTI2ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxs
b3cgc2NyZWVuIHNwYWNlIHJlY3RzIGFuZCBvY2NsdWRpbmcgcmVjdHMgdG8gYmUgdmlzdWFsaXpl
ZCBmb3IgZGVidWdnaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTAwMTIKKworICAgICAgICBDQ09jY2x1c2lvblRyYWNrZXIgbm93IGluaGVyaXRz
IGZyb20gQ0NPY2NsdXNpb25UcmFja2VyQmFzZSByYXRoZXIgdGhhbgorICAgICAgICB0eXBlZGVm
J2luZyBpdCB0byBhbGxvdyBmb3IgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBObyBuZXcg
ZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDRGVidWdSZWN0SGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVjdEhp
c3Rvcnk6OmVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z1JlY3RIaXN0b3J5Ojpz
YXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVn
UmVjdEhpc3Rvcnk6OnNhdmVTY3JlZW5TcGFjZVJlY3RzKToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlT2NjbHVkaW5nUmVjdHMp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlz
dG9yeS5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChDQ0RlYnVnUmVjdEhpc3Rvcnkp
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3Bs
YXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6c2hvd0RlYnVnUmVj
dHMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NIZWFkc1VwRGlzcGxheTo6ZHJhdyk6CisgICAgICAg
IChXZWJDb3JlOjpDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0cyk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0Lmg6CisgICAgICAg
IChXZWJDb3JlOjpDQ0xheWVyVHJlZVNldHRpbmdzOjpDQ0xheWVyVHJlZVNldHRpbmdzKToKKyAg
ICAgICAgKENDTGF5ZXJUcmVlU2V0dGluZ3MpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKToKKyAgICAgICAgKFdl
YkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoRnJhbWVEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6OmFkZE9jY2x1
c2lvbkJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bWFya09jY2x1ZGVkQmVoaW5k
TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyOjpDQ09jY2x1c2lv
blRyYWNrZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyOjp+Q0NPY2Ns
dXNpb25UcmFja2VyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q0NP
Y2NsdXNpb25UcmFja2VySW1wbDo6Q0NPY2NsdXNpb25UcmFja2VySW1wbCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJJbXBsOjp+Q0NPY2NsdXNpb25UcmFja2VySW1wbCk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFj
a2VyLmg6CisgICAgICAgIChDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNDT2NjbHVzaW9uVHJhY2tlckJhc2U6Om9jY2x1c2lvbkluU2NyZWVuU3BhY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFja2VyQmFzZTo6c2V0T2NjbHVzaW9uSW5TY3Jl
ZW5TcGFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlOjpvY2Ns
dXNpb25JblRhcmdldFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q0NPY2NsdXNpb25UcmFj
a2VyQmFzZTo6c2V0T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNDT2NjbHVzaW9uVHJhY2tlckJhc2U6OnN0YXJ0UmVjb3JkaW5nT2NjbHVkaW5nU2NyZWVuU3Bh
Y2VSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlOjpvY2Ns
dWRpbmdTY3JlZW5TcGFjZVJlY3RzKToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlcik6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKENDT2NjbHVzaW9uVHJhY2tlckltcGwpOgorCiAy
MDEyLTA2LTI2ICBIdWFuZyBEb25nc3VuZyAgPGx1eHRlbGxhQGNvbXBhbnkxMDAubmV0PgogCiAg
ICAgICAgIFtUZXhtYXBdIEJ1ZyBmaXggdHlwbyBhYm91dCBjb21wdXRpbmcgYnl0ZXNQZXJMaW5l
IGluIEJpdG1hcFRleHR1cmVHTC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggOGQzNTg5
ODNiODNmMzhiYTgyMGI4MzExZDI1MTJmM2VkNmIwYjJmZC4uYTcwMDg1ZmVhNDY3MGI1M2RlZTU3
ZGM3NTg2YzAzYTAxZGQ3M2Y3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSw3MCBAQAorMjAxMi0wNi0yNiAgSWFuIFZvbGxpY2sgIDx2b2xsaWNrQGNocm9taXVtLm9yZz4K
KworICAgICAgICBbY2hyb21pdW1dIEFsbG93IHNjcmVlbiBzcGFjZSByZWN0cyBhbmQgb2NjbHVk
aW5nIHJlY3RzIHRvIGJlIHZpc3VhbGl6ZWQgZm9yIGRlYnVnZ2luZy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkwMDEyCisKKyAgICAgICAgQ0NPY2Ns
dXNpb25UcmFja2VyIG5vdyBpbmhlcml0cyBmcm9tIENDT2NjbHVzaW9uVHJhY2tlckJhc2UgcmF0
aGVyIHRoYW4KKyAgICAgICAgdHlwZWRlZidpbmcgaXQgdG8gYWxsb3cgZm9yIGZvcndhcmQgZGVj
bGFyYXRpb25zLiBUaGlzIGNhdXNlZCBhIGxvdCBvZgorICAgICAgICBjaHVybiBpbiB0aGUgb2Nj
bHVzaW9uIHRlc3QuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiB0ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcDoKKyAgICAgICAgKiB0ZXN0cy9D
Q09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcDoKKyAgICAgICAgKFdlYktpdFRlc3RzKToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I6OlRlc3RD
Q09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcik6CisgICAgICAgIChXZWJLaXRUZXN0czo6VGVz
dENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yOjpsYXllclNjaXNzb3JSZWN0SW5UYXJnZXRT
dXJmYWNlKToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0SWRl
bnRpdHlUcmFuc2Zvcm1zOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RSb3RhdGVkQ2hpbGQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJL
aXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFRyYW5zbGF0ZWRDaGlsZDo6cnVuTXlUZXN0
KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0Q2hpbGRJblJv
dGF0ZWRDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0VmlzaXRUYXJnZXRUd29UaW1lczo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U3VyZmFjZVJvdGF0ZWRPZmZBeGlzOjpy
dW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RT
dXJmYWNlV2l0aFR3b09wYXF1ZUNoaWxkcmVuOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPdmVybGFwcGluZ1N1cmZhY2VTaWJsaW5nczo6
cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
T3ZlcmxhcHBpbmdTdXJmYWNlU2libGluZ3NXaXRoVHdvVHJhbnNmb3Jtczo6cnVuTXlUZXN0KToK
KyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0RmlsdGVyczo6cnVu
TXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0UmVw
bGljYURvZXNPY2NsdWRlOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RSZXBsaWNhV2l0aENsaXBwaW5nOjpydW5NeVRlc3QpOgorICAgICAg
ICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RSZXBsaWNhV2l0aE1hc2s6OnJ1
bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdExh
eWVyU2Npc3NvclJlY3RPdXRzaWRlQ2hpbGQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRU
ZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFNjcmVlblNjaXNzb3JSZWN0T3V0c2lkZUNoaWxk
OjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRl
c3RMYXllclNjaXNzb3JSZWN0T3ZlckNoaWxkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RTY3JlZW5TY2lzc29yUmVjdE92ZXJDaGlsZDo6
cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
TGF5ZXJTY2lzc29yUmVjdFBhcnRseU92ZXJDaGlsZDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdl
YktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RQYXJ0bHlP
dmVyQ2hpbGQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25U
cmFja2VyVGVzdExheWVyU2Npc3NvclJlY3RPdmVyTm90aGluZzo6cnVuTXlUZXN0KToKKyAgICAg
ICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0U2NyZWVuU2Npc3NvclJlY3RP
dmVyTm90aGluZzo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lv
blRyYWNrZXJUZXN0TGF5ZXJTY2lzc29yUmVjdEZvckxheWVyT2ZmT3JpZ2luOjpydW5NeVRlc3Qp
OgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250
ZW50c1JlZ2lvbkVtcHR5OjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RPcGFxdWVDb250ZW50c1JlZ2lvbk5vbkVtcHR5OjpydW5NeVRlc3Qp
OgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3QzZFRyYW5zZm9y
bTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0VW5zb3J0ZWQzZExheWVyczo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpD
Q09jY2x1c2lvblRyYWNrZXJUZXN0UGVyc3BlY3RpdmVUcmFuc2Zvcm06OnJ1bk15VGVzdCk6Cisg
ICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFBlcnNwZWN0aXZlVHJh
bnNmb3JtQmVoaW5kQ2FtZXJhOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkND
T2NjbHVzaW9uVHJhY2tlclRlc3RMYXllckJlaGluZENhbWVyYURvZXNOb3RPY2NsdWRlOjpydW5N
eVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RMYXJn
ZVBpeGVsc09jY2x1ZGVJbnNpZGVDbGlwUmVjdDo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktp
dFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0QW5pbWF0aW9uT3BhY2l0eTFPbk1haW5UaHJl
YWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2Vy
VGVzdEFuaW1hdGlvbk9wYWNpdHkwT25NYWluVGhyZWFkOjpydW5NeVRlc3QpOgorICAgICAgICAo
V2ViS2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RBbmltYXRpb25UcmFuc2xhdGVPbk1h
aW5UaHJlYWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25U
cmFja2VyVGVzdFN1cmZhY2VPY2NsdXNpb25UcmFuc2xhdGVzVG9QYXJlbnQ6OnJ1bk15VGVzdCk6
CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VPY2Ns
dXNpb25UcmFuc2xhdGVzV2l0aENsaXBwaW5nOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0
VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RSZXBsaWNhT2NjbHVkZWQ6OnJ1bk15VGVzdCk6
CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VXaXRo
UmVwbGljYVVub2NjbHVkZWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NP
Y2NsdXNpb25UcmFja2VyVGVzdFN1cmZhY2VBbmRSZXBsaWNhT2NjbHVkZWREaWZmZXJlbnRseTo6
cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
U3VyZmFjZUNoaWxkT2ZTdXJmYWNlOjpydW5NeVRlc3QpOgorICAgICAgICAoV2ViS2l0VGVzdHM6
OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RUb3Btb3N0U3VyZmFjZUlzQ2xpcHBlZFRvU2Npc3Nvcjo6
cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJUZXN0
U3VyZmFjZUNoaWxkT2ZDbGlwcGluZ1N1cmZhY2U6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJL
aXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdERvbnRPY2NsdWRlUGl4ZWxzTmVlZGVkRm9y
QmFja2dyb3VuZEZpbHRlcjo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0VHdvQmFja2dyb3VuZEZpbHRlcnNSZWR1Y2VPY2NsdXNpb25Ud2lj
ZTo6cnVuTXlUZXN0KToKKyAgICAgICAgKFdlYktpdFRlc3RzOjpDQ09jY2x1c2lvblRyYWNrZXJU
ZXN0RG9udE9jY2x1ZGVQaXhlbHNOZWVkZWRGb3JCYWNrZ3JvdW5kRmlsdGVyV2l0aENsaXA6OnJ1
bk15VGVzdCk6CisgICAgICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdERv
bnRSZWR1Y2VPY2NsdXNpb25CZWxvd0JhY2tncm91bmRGaWx0ZXI6OnJ1bk15VGVzdCk6CisgICAg
ICAgIChXZWJLaXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdERvbnRSZWR1Y2VPY2NsdXNp
b25JZkJhY2tncm91bmRGaWx0ZXJJc09jY2x1ZGVkOjpydW5NeVRlc3QpOgorICAgICAgICAoV2Vi
S2l0VGVzdHM6OkNDT2NjbHVzaW9uVHJhY2tlclRlc3RSZWR1Y2VPY2NsdXNpb25XaGVuQmFja2dy
b3VuZEZpbHRlcklzUGFydGlhbGx5T2NjbHVkZWQ6OnJ1bk15VGVzdCk6CisgICAgICAgIChXZWJL
aXRUZXN0czo6Q0NPY2NsdXNpb25UcmFja2VyVGVzdE1pbmltdW1UcmFja2luZ1NpemU6OnJ1bk15
VGVzdCk6CisgICAgICAgICogdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdENvbW1vbi5oOiBS
ZW1vdmVkLgorICAgICAgICAqIHRlc3RzL0NDVGhyZWFkZWRUZXN0LmNwcDoKKwogMjAxMi0wNi0y
NiAgSnVuIE11a2FpICA8bXVrYWlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEFsbG93IHVzaW5n
IDxpbnB1dCB0eXBlPSJjb2xvciI+IFVJIGluIENocm9tZU9TLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVi
dWdSZWN0SGlzdG9yeS5jcHAKaW5kZXggMTdkNTk0NmVjMmVjY2RlYmFjYmFmMDM0OGZmODEwNjJm
OTg3YTQ1Mi4uMmM4MmIwZDYyNGRiZjIyY2EzZjEwM2Y4ZWM0ZWMzODIxM2M0N2NhZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1
Z1JlY3RIaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCkBAIC00MCwxMCArNDAsMTAgQEAgQ0NE
ZWJ1Z1JlY3RIaXN0b3J5OjpDQ0RlYnVnUmVjdEhpc3RvcnkoKQogCiBib29sIENDRGVidWdSZWN0
SGlzdG9yeTo6ZW5hYmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKIHsK
LSAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0dGluZ3Muc2hvd1Byb3Bl
cnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFtYWdlUmVjdHM7CisgICAg
cmV0dXJuIHNldHRpbmdzLnNob3dQYWludFJlY3RzIHx8IHNldHRpbmdzLnNob3dQcm9wZXJ0eUNo
YW5nZWRSZWN0cyB8fCBzZXR0aW5ncy5zaG93U3VyZmFjZURhbWFnZVJlY3RzIHx8IHNldHRpbmdz
LnNob3dTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dSZXBsaWNhU2NyZWVuU3BhY2VS
ZWN0cyB8fCBzZXR0aW5ncy5zaG93T2NjbHVkaW5nUmVjdHM7CiB9CiAKLXZvaWQgQ0NEZWJ1Z1Jl
Y3RIaXN0b3J5OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9v
dExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MpCit2b2lkIENDRGVidWdSZWN0
SGlzdG9yeTo6c2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NMYXllckltcGwqIHJvb3RM
YXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3Qs
IGNvbnN0IENDT2NjbHVzaW9uVHJhY2tlckltcGwmIG9jY2x1c2lvblRyYWNrZXIsIGNvbnN0IEND
TGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKQogewogICAgIC8vIEZvciBub3csIGNsZWFyIGFs
bCByZWN0cyBmcm9tIHByZXZpb3VzIGZyYW1lcy4gSW4gdGhlIGZ1dHVyZSB3ZSBtYXkgd2FudCB0
byBzdG9yZQogICAgIC8vIGFsbCBkZWJ1ZyByZWN0cyBmb3IgYSBoaXN0b3J5IG9mIG1hbnkgZnJh
bWVzLgpAQCAtNTcsNiArNTcsMTIgQEAgdm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1
Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGMKIAogICAgIGlm
IChzZXR0aW5ncy5zaG93U3VyZmFjZURhbWFnZVJlY3RzKQogICAgICAgICBzYXZlU3VyZmFjZURh
bWFnZVJlY3RzKHJlbmRlclN1cmZhY2VMYXllckxpc3QpOworCisgICAgaWYgKHNldHRpbmdzLnNo
b3dTY3JlZW5TcGFjZVJlY3RzKQorICAgICAgICBzYXZlU2NyZWVuU3BhY2VSZWN0cyhyZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKKworICAgIGlmIChzZXR0aW5ncy5zaG93T2NjbHVkaW5nUmVjdHMp
CisgICAgICAgIHNhdmVPY2NsdWRpbmdSZWN0cyhvY2NsdXNpb25UcmFja2VyKTsKIH0KIAogCkBA
IC0xMDQsNiArMTEwLDI3IEBAIHZvaWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlU3VyZmFjZURh
bWFnZVJlY3RzKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCogPiYgcmVuCiAgICAgfQogfQogCit2
b2lkIENDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZVNjcmVlblNwYWNlUmVjdHMoY29uc3QgVmVjdG9y
PENDTGF5ZXJJbXBsKiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KQoreworICAgIGZvciAoaW50
IHN1cmZhY2VJbmRleCA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFj
ZUluZGV4ID49IDAgOyAtLXN1cmZhY2VJbmRleCkgeworICAgICAgICBDQ0xheWVySW1wbCogcmVu
ZGVyU3VyZmFjZUxheWVyID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdOwor
ICAgICAgICBDQ1JlbmRlclN1cmZhY2UqIHJlbmRlclN1cmZhY2UgPSByZW5kZXJTdXJmYWNlTGF5
ZXItPnJlbmRlclN1cmZhY2UoKTsKKyAgICAgICAgQVNTRVJUKHJlbmRlclN1cmZhY2UpOworCisg
ICAgICAgIG1fZGVidWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoU2NyZWVuU3BhY2VSZWN0VHlw
ZSwgQ0NNYXRoVXRpbDo6bWFwQ2xpcHBlZFJlY3QocmVuZGVyU3VyZmFjZS0+c2NyZWVuU3BhY2VU
cmFuc2Zvcm0oKSwgcmVuZGVyU3VyZmFjZS0+Y29udGVudFJlY3QoKSkpKTsKKworICAgICAgICBp
ZiAocmVuZGVyU3VyZmFjZUxheWVyLT5yZXBsaWNhTGF5ZXIoKSkKKyAgICAgICAgICAgIG1fZGVi
dWdSZWN0cy5hcHBlbmQoQ0NEZWJ1Z1JlY3QoUmVwbGljYVNjcmVlblNwYWNlUmVjdFR5cGUsIEND
TWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHJlbmRlclN1cmZhY2UtPnJlcGxpY2FTY3JlZW5TcGFj
ZVRyYW5zZm9ybSgpLCByZW5kZXJTdXJmYWNlLT5jb250ZW50UmVjdCgpKSkpOworICAgIH0KK30K
Kwordm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVPY2NsdWRpbmdSZWN0cyhjb25zdCBDQ09j
Y2x1c2lvblRyYWNrZXJJbXBsJiBvY2NsdXNpb25UcmFja2VyKQoreworICAgIGNvbnN0IFZlY3Rv
cjxJbnRSZWN0PiYgb2NjbHVkaW5nUmVjdHMgPSBvY2NsdXNpb25UcmFja2VyLm9jY2x1ZGluZ1Nj
cmVlblNwYWNlUmVjdHMoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9jY2x1ZGluZ1Jl
Y3RzLnNpemUoKTsgKytpKQorICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0
KE9jY2x1ZGluZ1JlY3RUeXBlLCBvY2NsdWRpbmdSZWN0c1tpXSkpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0RlYnVnUmVjdEhpc3RvcnkuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCmluZGV4IGJiM2NkYjc5ZDU3MTg0N2IyNzZl
OTdjODBmZDY4YzFhYzJjNDhkNmEuLjljOTUwZTJkZTBkMzhlOWExZmVhZTJlOTQ1OWFmMDFiNGI0
Y2VjMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9t
aXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCkBAIC0zNiw4ICszNiw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQ0NMYXllckltcGw7CiBzdHJ1Y3QgQ0NM
YXllclRyZWVTZXR0aW5nczsKK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlckltcGw7CiAKLS8vIFRo
ZXJlIGFyZSBjdXJyZW50bHkgdGhyZWUgdHlwZXMgb2YgZGVidWcgcmVjdHM6CisvLyBUaGVyZSBh
cmUgY3VycmVudGx5IGZpdmUgdHlwZXMgb2YgZGVidWcgcmVjdHM6CiAvLwogLy8gLSBQYWludCBy
ZWN0cyAodXBkYXRlIHJlY3RzKTogcmVnaW9ucyBvZiBhIGxheWVyIHRoYXQgbmVlZGVkIHRvIGJl
IHJlLXVwbG9hZGVkIHRvIHRoZQogLy8gICB0ZXh0dXJlIHJlc291cmNlOyBpbiBtb3N0IGNhc2Vz
IGltcGx5aW5nIHRoYXQgV2ViQ29yZSBoYWQgdG8gcmVwYWludCB0aGVtLCB0b28uCkBAIC01MCw3
ICs1MSwxMSBAQCBzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsKIC8vICAgbGF5ZXJzIGFuZCBz
dXJmYWNlcyB0aGF0IGNvbnRyaWJ1dGUgdG8gaXQuIFRoaXMgaW5jbHVkZXMgKDEpIHBhaW50IHJl
Y3RzLCAoMikgcHJvcGVydHktCiAvLyAgIGNoYW5nZWQgcmVjdHMsIGFuZCAoMykgbmV3bHkgZXhw
b3NlZCBhcmVhcy4KIC8vCi1lbnVtIERlYnVnUmVjdFR5cGUgeyBQYWludFJlY3RUeXBlLCBQcm9w
ZXJ0eUNoYW5nZWRSZWN0VHlwZSwgU3VyZmFjZURhbWFnZVJlY3RUeXBlIH07CisvLyAtIFNjcmVl
biBzcGFjZSByZWN0czogdGhpcyBpcyB0aGUgcmVnaW9uIHRoZSBjb250ZW50cyBvY2N1cHkgaW4g
c2NyZWVuIHNwYWNlLgorLy8KKy8vIC0gUmVwbGljYSBzY3JlZW4gc3BhY2UgcmVjdHM6IHRoaXMg
aXMgdGhlIHJlZ2lvbiB0aGUgcmVwbGljYSdzIGNvbnRlbnRzIG9jY3VweSBpbiBzY3JlZW4gc3Bh
Y2UuCisvLworZW51bSBEZWJ1Z1JlY3RUeXBlIHsgUGFpbnRSZWN0VHlwZSwgUHJvcGVydHlDaGFu
Z2VkUmVjdFR5cGUsIFN1cmZhY2VEYW1hZ2VSZWN0VHlwZSwgU2NyZWVuU3BhY2VSZWN0VHlwZSwg
UmVwbGljYVNjcmVlblNwYWNlUmVjdFR5cGUsIE9jY2x1ZGluZ1JlY3RUeXBlIH07CiAKIHN0cnVj
dCBDQ0RlYnVnUmVjdCB7CiAgICAgQ0NEZWJ1Z1JlY3QoRGVidWdSZWN0VHlwZSBuZXdUeXBlLCBG
bG9hdFJlY3QgbmV3UmVjdCkKQEAgLTc1LDcgKzgwLDcgQEAgcHVibGljOgogICAgIGJvb2wgZW5h
YmxlZChjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJik7CiAKICAgICAvLyBOb3RlOiBTYXZpbmcg
ZGVidWcgcmVjdHMgbXVzdCBoYXBwZW4gYmVmb3JlIGxheWVycycgY2hhbmdlIHRyYWNraW5nIGlz
IHJlc2V0LgotICAgIHZvaWQgc2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUoQ0NMYXllcklt
cGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VM
YXllckxpc3QsIGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKKyAgICB2b2lkIHNhdmVEZWJ1
Z1JlY3RzRm9yQ3VycmVudEZyYW1lKENDTGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3Rv
cjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBDQ09jY2x1c2lv
blRyYWNrZXJJbXBsJiwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwogCiAgICAgY29uc3Qg
VmVjdG9yPENDRGVidWdSZWN0PiYgZGVidWdSZWN0cygpIHsgcmV0dXJuIG1fZGVidWdSZWN0czsg
fQogCkBAIC04NSw2ICs5MCw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzYXZlUGFpbnRSZWN0cyhD
Q0xheWVySW1wbCopOwogICAgIHZvaWQgc2F2ZVByb3BlcnR5Q2hhbmdlZFJlY3RzKGNvbnN0IFZl
Y3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKICAgICB2b2lkIHNh
dmVTdXJmYWNlRGFtYWdlUmVjdHMoY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBsKiA+JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0KTsKKyAgICB2b2lkIHNhdmVTY3JlZW5TcGFjZVJlY3RzKGNvbnN0IFZl
Y3RvcjxDQ0xheWVySW1wbCogPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisgICAgdm9pZCBz
YXZlT2NjbHVkaW5nUmVjdHMoY29uc3QgQ0NPY2NsdXNpb25UcmFja2VySW1wbCYpOwogCiAgICAg
VmVjdG9yPENDRGVidWdSZWN0PiBtX2RlYnVnUmVjdHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRz
VXBEaXNwbGF5LmNwcAppbmRleCBmM2Q0MTVkY2ZkMzViNjgzZDdkMzE2MGVhYjI4OTk2M2JjYTIx
NTc0Li5jMDQ3NjE1YThjYjU3YzA4NzI1M2Y0ZGY0Njc5MzU5Y2U4NDBjMDI3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0hlYWRzVXBE
aXNwbGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0hlYWRzVXBEaXNwbGF5LmNwcApAQCAtNjMsNyArNjMsNyBAQCBib29sIENDSGVhZHNV
cERpc3BsYXk6OnNob3dQbGF0Zm9ybUxheWVyVHJlZShjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdz
JiBzZXR0aW5ncwogCiBib29sIENDSGVhZHNVcERpc3BsYXk6OnNob3dEZWJ1Z1JlY3RzKGNvbnN0
IENDTGF5ZXJUcmVlU2V0dGluZ3MmIHNldHRpbmdzKSBjb25zdAogewotICAgIHJldHVybiBzZXR0
aW5ncy5zaG93UGFpbnRSZWN0cyB8fCBzZXR0aW5ncy5zaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMg
fHwgc2V0dGluZ3Muc2hvd1N1cmZhY2VEYW1hZ2VSZWN0czsKKyAgICByZXR1cm4gc2V0dGluZ3Mu
c2hvd1BhaW50UmVjdHMgfHwgc2V0dGluZ3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNl
dHRpbmdzLnNob3dTdXJmYWNlRGFtYWdlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1NjcmVlblNwYWNl
UmVjdHMgfHwgc2V0dGluZ3Muc2hvd1JlcGxpY2FTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdz
LnNob3dPY2NsdWRpbmdSZWN0czsKIH0KIAogdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3KEND
TGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQpAQCAtODEsOCArODEsOCBAQCB2
b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXcoQ0NMYXllclRyZWVIb3N0SW1wbCogbGF5ZXJUcmVl
SG9zdEltcGwpCiAgICAgLy8gVXNlIGEgZnVsbHNjcmVlbiB0ZXh0dXJlIG9ubHkgaWYgd2UgbmVl
ZCB0by4uLgogICAgIEludFNpemUgaHVkU2l6ZTsKICAgICBpZiAoc2hvd1BsYXRmb3JtTGF5ZXJU
cmVlKHNldHRpbmdzKSB8fCBzaG93RGVidWdSZWN0cyhzZXR0aW5ncykpIHsKLSAgICAgICAgaHVk
U2l6ZS5zZXRXaWR0aChtaW4oMjA0OCwgbGF5ZXJUcmVlSG9zdEltcGwtPnZpZXdwb3J0U2l6ZSgp
LndpZHRoKCkpKTsKLSAgICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQobWluKDIwNDgsIGxheWVyVHJl
ZUhvc3RJbXBsLT52aWV3cG9ydFNpemUoKS5oZWlnaHQoKSkpOworICAgICAgICBodWRTaXplLnNl
dFdpZHRoKG1pbigyMDQ4LCBsYXllclRyZWVIb3N0SW1wbC0+ZGV2aWNlVmlld3BvcnRTaXplKCku
d2lkdGgoKSkpOworICAgICAgICBodWRTaXplLnNldEhlaWdodChtaW4oMjA0OCwgbGF5ZXJUcmVl
SG9zdEltcGwtPmRldmljZVZpZXdwb3J0U2l6ZSgpLmhlaWdodCgpKSk7CiAgICAgfSBlbHNlIHsK
ICAgICAgICAgaHVkU2l6ZS5zZXRXaWR0aCg1MTIpOwogICAgICAgICBodWRTaXplLnNldEhlaWdo
dCgxMjgpOwpAQCAtMjQ0LDYgKzI0NCwyNyBAQCB2b2lkIENDSGVhZHNVcERpc3BsYXk6OmRyYXdE
ZWJ1Z1JlY3RzKEdyYXBoaWNzQ29udGV4dCogY29udGV4dCwgQ0NEZWJ1Z1JlY3RIaXN0bwogICAg
ICAgICAgICAgY29udGV4dC0+ZmlsbFJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCBDb2xvcigyMDAs
IDEwMCwgMCwgMzApLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKICAgICAgICAgICAgIGNvbnRleHQt
PnN0cm9rZVJlY3QoZGVidWdSZWN0c1tpXS5yZWN0LCAyLjApOwogICAgICAgICB9CisKKyAgICAg
ICAgaWYgKGRlYnVnUmVjdHNbaV0udHlwZSA9PSBSZXBsaWNhU2NyZWVuU3BhY2VSZWN0VHlwZSkg
eworICAgICAgICAgICAgLy8gU2NyZWVuIHNwYWNlIHJlY3RzIGluIHB1cnBsZS4KKyAgICAgICAg
ICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwgMjAwLCAwLCAyNTUpLCBDb2xv
clNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVj
dHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAyMDAsIDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7
CisgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4w
KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gU2NyZWVu
U3BhY2VSZWN0VHlwZSkgeworICAgICAgICAgICAgLy8gU2NyZWVuIHNwYWNlIHJlY3RzIGluIHB1
cnBsZS4KKyAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwgMCwg
MjAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZp
bGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAwLCAyMDAsIDEwKSwgQ29sb3JT
cGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVj
dHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ld
LnR5cGUgPT0gT2NjbHVkaW5nUmVjdFR5cGUpIHsKKyAgICAgICAgICAgIC8vIE9jY2x1ZGluZyBy
ZWN0cyBpbiBhIHJlZGRpc2ggY29sb3IuCisgICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VD
b2xvcihDb2xvcigyMDAsIDAsIDEwMCwgMjU1KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAg
ICAgICAgICBjb250ZXh0LT5maWxsUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDIwMCwg
MCwgMTAwLCAxMCksIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+
c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJlY3QsIDIuMCk7CisgICAgICAgIH0KICAgICB9CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKaW5kZXggMWY0ZDNjOTY3MjI4NTUwZmY2NjA5
ZDYxMWY4N2VlYjZkYWQwOWYwMS4uNDQxZjhlOTFjZWFjYzQ5OGZmZjlmMzNmOWU4NTM5YjgyNmMy
NDI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKQEAgLTg0LDYgKzg0LDkgQEAgc3Ry
dWN0IENDTGF5ZXJUcmVlU2V0dGluZ3MgewogICAgICAgICAgICAgLCBzaG93UGFpbnRSZWN0cyhm
YWxzZSkKICAgICAgICAgICAgICwgc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzKGZhbHNlKQogICAg
ICAgICAgICAgLCBzaG93U3VyZmFjZURhbWFnZVJlY3RzKGZhbHNlKQorICAgICAgICAgICAgLCBz
aG93U2NyZWVuU3BhY2VSZWN0cyhmYWxzZSkKKyAgICAgICAgICAgICwgc2hvd1JlcGxpY2FTY3Jl
ZW5TcGFjZVJlY3RzKGZhbHNlKQorICAgICAgICAgICAgLCBzaG93T2NjbHVkaW5nUmVjdHMoZmFs
c2UpCiAgICAgICAgICAgICAsIHJlZnJlc2hSYXRlKDApCiAgICAgICAgICAgICAsIG1heFBhcnRp
YWxUZXh0dXJlVXBkYXRlcyhzdGQ6Om51bWVyaWNfbGltaXRzPHNpemVfdD46Om1heCgpKQogICAg
ICAgICAgICAgLCBkZWZhdWx0VGlsZVNpemUoSW50U2l6ZSgyNTYsIDI1NikpCkBAIC05Nyw2ICsx
MDAsOSBAQCBzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5ncyB7CiAgICAgYm9vbCBzaG93UGFpbnRS
ZWN0czsKICAgICBib29sIHNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0czsKICAgICBib29sIHNob3dT
dXJmYWNlRGFtYWdlUmVjdHM7CisgICAgYm9vbCBzaG93U2NyZWVuU3BhY2VSZWN0czsKKyAgICBi
b29sIHNob3dSZXBsaWNhU2NyZWVuU3BhY2VSZWN0czsKKyAgICBib29sIHNob3dPY2NsdWRpbmdS
ZWN0czsKICAgICBkb3VibGUgcmVmcmVzaFJhdGU7CiAgICAgc2l6ZV90IG1heFBhcnRpYWxUZXh0
dXJlVXBkYXRlczsKICAgICBJbnRTaXplIGRlZmF1bHRUaWxlU2l6ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5kZXggMzAxMWI1ZWNjNjYzMDZjY2Q2MGQ5OTIxNDFk
MWY4NGZlZjdlZTlkZC4uODdkYTM1OGIzYjcxMmRkNmM1ODNkMmUxY2IxZGZlYzQ1Njg4YzIyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTI5MSw4ICsyOTEs
MTEgQEAgYm9vbCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoRnJh
bWVEYXRhJiBmcmFtZSkKICAgICB9CiAKICAgICBib29sIHJlY29yZE1ldHJpY3NGb3JGcmFtZSA9
IHRydWU7IC8vIEZJWE1FOiBJbiB0aGUgZnV0dXJlLCBkaXNhYmxlIHRoaXMgd2hlbiBhYm91dDp0
cmFjaW5nIGlzIG9mZi4KLSAgICBDQ09jY2x1c2lvblRyYWNrZXJJbXBsIG9jY2x1c2lvblRyYWNr
ZXIoZW5jbG9zaW5nSW50UmVjdChtX3Jvb3RTY2lzc29yUmVjdCksIHJlY29yZE1ldHJpY3NGb3JG
cmFtZSk7Ci0gICAgb2NjbHVzaW9uVHJhY2tlci5zZXRNaW5pbXVtVHJhY2tpbmdTaXplKENDT2Nj
bHVzaW9uVHJhY2tlckltcGw6OnByZWZlcnJlZE1pbmltdW1UcmFja2luZ1NpemUoKSk7CisgICAg
ZnJhbWUub2NjbHVzaW9uVHJhY2tlciA9IGFkb3B0UHRyKG5ldyBDQ09jY2x1c2lvblRyYWNrZXJJ
bXBsKGVuY2xvc2luZ0ludFJlY3QobV9yb290U2Npc3NvclJlY3QpLCByZWNvcmRNZXRyaWNzRm9y
RnJhbWUpKTsKKyAgICBmcmFtZS5vY2NsdXNpb25UcmFja2VyLT5zZXRNaW5pbXVtVHJhY2tpbmdT
aXplKENDT2NjbHVzaW9uVHJhY2tlckltcGw6OnByZWZlcnJlZE1pbmltdW1UcmFja2luZ1NpemUo
KSk7CisKKyAgICBpZiAoc2V0dGluZ3MoKS5zaG93T2NjbHVkaW5nUmVjdHMpCisgICAgICAgIGZy
YW1lLm9jY2x1c2lvblRyYWNrZXItPnN0YXJ0UmVjb3JkaW5nT2NjbHVkaW5nU2NyZWVuU3BhY2VS
ZWN0cygpOwogCiAgICAgLy8gQWRkIHF1YWRzIHRvIHRoZSBSZW5kZXIgcGFzc2VzIGluIEZyb250
VG9CYWNrIG9yZGVyIHRvIGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWlu
ZyBjdWxsaW5nIGR1cmluZyB0aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJh
dG9yPENDTGF5ZXJJbXBsLCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBD
Q0xheWVySXRlcmF0b3JBY3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsK
QEAgLTMwOCwxNiArMzExLDE2IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRl
UmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAgIENDUmVuZGVyUGFzcyogcGFz
cyA9IHN1cmZhY2VQYXNzTWFwLmdldChyZW5kZXJTdXJmYWNlKTsKICAgICAgICAgYm9vbCBoYWRN
aXNzaW5nVGlsZXMgPSBmYWxzZTsKIAotICAgICAgICBvY2NsdXNpb25UcmFja2VyLmVudGVyTGF5
ZXIoaXQpOworICAgICAgICBmcmFtZS5vY2NsdXNpb25UcmFja2VyLT5lbnRlckxheWVyKGl0KTsK
IAogICAgICAgICBpZiAoaXQucmVwcmVzZW50c0NvbnRyaWJ1dGluZ1JlbmRlclN1cmZhY2UoKSAm
JiAhaXQtPnJlbmRlclN1cmZhY2UoKS0+c2Npc3NvclJlY3QoKS5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIENDUmVuZGVyUGFzcyogY29udHJpYnV0aW5nUmVuZGVyUGFzcyA9IHN1cmZhY2VQYXNz
TWFwLmdldChpdC0+cmVuZGVyU3VyZmFjZSgpKTsKLSAgICAgICAgICAgIHBhc3MtPmFwcGVuZFF1
YWRzRm9yUmVuZGVyU3VyZmFjZUxheWVyKCppdCwgY29udHJpYnV0aW5nUmVuZGVyUGFzcywgJm9j
Y2x1c2lvblRyYWNrZXIpOwotICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYo
KSAmJiAhb2NjbHVzaW9uVHJhY2tlci5vY2NsdWRlZCgqaXQsIGl0LT52aXNpYmxlTGF5ZXJSZWN0
KCkpICYmICFpdC0+dmlzaWJsZUxheWVyUmVjdCgpLmlzRW1wdHkoKSAmJiAhaXQtPnNjaXNzb3JS
ZWN0KCkuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0ZvclJlbmRl
clN1cmZhY2VMYXllcigqaXQsIGNvbnRyaWJ1dGluZ1JlbmRlclBhc3MsIGZyYW1lLm9jY2x1c2lv
blRyYWNrZXIuZ2V0KCkpOworICAgICAgICB9IGVsc2UgaWYgKGl0LnJlcHJlc2VudHNJdHNlbGYo
KSAmJiAhZnJhbWUub2NjbHVzaW9uVHJhY2tlci0+b2NjbHVkZWQoKml0LCBpdC0+dmlzaWJsZUxh
eWVyUmVjdCgpKSAmJiAhaXQtPnZpc2libGVMYXllclJlY3QoKS5pc0VtcHR5KCkgJiYgIWl0LT5z
Y2lzc29yUmVjdCgpLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaXQtPndpbGxEcmF3KG1fbGF5
ZXJSZW5kZXJlci5nZXQoKSwgY29udGV4dCgpKTsKICAgICAgICAgICAgIGZyYW1lLndpbGxEcmF3
TGF5ZXJzLmFwcGVuZCgqaXQpOwogCi0gICAgICAgICAgICBwYXNzLT5hcHBlbmRRdWFkc0Zvckxh
eWVyKCppdCwgJm9jY2x1c2lvblRyYWNrZXIsIGhhZE1pc3NpbmdUaWxlcyk7CisgICAgICAgICAg
ICBwYXNzLT5hcHBlbmRRdWFkc0ZvckxheWVyKCppdCwgZnJhbWUub2NjbHVzaW9uVHJhY2tlci5n
ZXQoKSwgaGFkTWlzc2luZ1RpbGVzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChoYWRNaXNz
aW5nVGlsZXMpIHsKQEAgLTMyNiwxNiArMzI5LDE2IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgICAgICAgICAg
ICAgZHJhd0ZyYW1lID0gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBvY2NsdXNpb25UcmFj
a2VyLmxlYXZlTGF5ZXIoaXQpOworICAgICAgICBmcmFtZS5vY2NsdXNpb25UcmFja2VyLT5sZWF2
ZUxheWVyKGl0KTsKICAgICB9CiAKICAgICBpZiAoIW1faGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5k
KSB7CiAgICAgICAgIGZyYW1lLnJlbmRlclBhc3Nlcy5sYXN0KCktPnNldEhhc1RyYW5zcGFyZW50
QmFja2dyb3VuZChmYWxzZSk7Ci0gICAgICAgIGZyYW1lLnJlbmRlclBhc3Nlcy5sYXN0KCktPmFw
cGVuZFF1YWRzVG9GaWxsU2NyZWVuKG1fcm9vdExheWVySW1wbC5nZXQoKSwgbV9iYWNrZ3JvdW5k
Q29sb3IsIG9jY2x1c2lvblRyYWNrZXIpOworICAgICAgICBmcmFtZS5yZW5kZXJQYXNzZXMubGFz
dCgpLT5hcHBlbmRRdWFkc1RvRmlsbFNjcmVlbihtX3Jvb3RMYXllckltcGwuZ2V0KCksIG1fYmFj
a2dyb3VuZENvbG9yLCAqZnJhbWUub2NjbHVzaW9uVHJhY2tlcik7CiAgICAgfQogCiAgICAgaWYg
KGRyYXdGcmFtZSkKLSAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5vdmVyZHJhd01ldHJpY3MoKS5y
ZWNvcmRNZXRyaWNzKHRoaXMpOworICAgICAgICBmcmFtZS5vY2NsdXNpb25UcmFja2VyLT5vdmVy
ZHJhd01ldHJpY3MoKS5yZWNvcmRNZXRyaWNzKHRoaXMpOwogCiAgICAgbV9sYXllclJlbmRlcmVy
LT5kZWNpZGVSZW5kZXJQYXNzQWxsb2NhdGlvbnNGb3JGcmFtZShmcmFtZS5yZW5kZXJQYXNzZXMp
OwogICAgIHJlbW92ZVBhc3Nlc1dpdGhDYWNoZWRUZXh0dXJlcyhmcmFtZS5yZW5kZXJQYXNzZXMs
IGZyYW1lLnNraXBwZWRQYXNzZXMpOwpAQCAtNTEyLDcgKzUxNSw3IEBAIHZvaWQgQ0NMYXllclRy
ZWVIb3N0SW1wbDo6ZHJhd0xheWVycyhjb25zdCBGcmFtZURhdGEmIGZyYW1lKQogICAgIH0KIAog
ICAgIGlmIChtX2RlYnVnUmVjdEhpc3RvcnktPmVuYWJsZWQoc2V0dGluZ3MoKSkpCi0gICAgICAg
IG1fZGVidWdSZWN0SGlzdG9yeS0+c2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUobV9yb290
TGF5ZXJJbXBsLmdldCgpLCAqZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgc2V0dGluZ3Mo
KSk7CisgICAgICAgIG1fZGVidWdSZWN0SGlzdG9yeS0+c2F2ZURlYnVnUmVjdHNGb3JDdXJyZW50
RnJhbWUobV9yb290TGF5ZXJJbXBsLmdldCgpLCAqZnJhbWUucmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgKmZyYW1lLm9jY2x1c2lvblRyYWNrZXIsIHNldHRpbmdzKCkpOwogCiAgICAgaWYgKG1faGVh
ZHNVcERpc3BsYXktPmVuYWJsZWQoc2V0dGluZ3MoKSkpCiAgICAgICAgIG1faGVhZHNVcERpc3Bs
YXktPmRyYXcodGhpcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXgg
NGU0ZjZjY2I3ZTJmNjU1YjUyYjIyNDIwM2RkZTg1OTdmMDBjNmVkNS4uZDQ3MDVlNzEyMzU2ZWIy
OGE1OTZhYjI0MzM5NTc1ZjZiZTE4MmU2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuaApAQCAtNDUsNiArNDUsNyBAQCBjbGFzcyBDQ0hlYWRzVXBEaXNwbGF5OwogY2xhc3Mg
Q0NQYWdlU2NhbGVBbmltYXRpb247CiBjbGFzcyBDQ0xheWVySW1wbDsKIGNsYXNzIENDTGF5ZXJU
cmVlSG9zdEltcGxUaW1lU291cmNlQWRhcHRlcjsKK2NsYXNzIENDT2NjbHVzaW9uVHJhY2tlcklt
cGw7CiBjbGFzcyBMYXllclJlbmRlcmVyQ2hyb21pdW07CiBjbGFzcyBUZXh0dXJlQWxsb2NhdG9y
Owogc3RydWN0IExheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXM7CkBAIC04Miw2ICs4Myw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKIAogICAgIHN0cnVj
dCBGcmFtZURhdGEgeworICAgICAgICBPd25QdHI8Q0NPY2NsdXNpb25UcmFja2VySW1wbD4gb2Nj
bHVzaW9uVHJhY2tlcjsKICAgICAgICAgQ0NSZW5kZXJQYXNzTGlzdCByZW5kZXJQYXNzZXM7CiAg
ICAgICAgIENDUmVuZGVyUGFzc0xpc3Qgc2tpcHBlZFBhc3NlczsKICAgICAgICAgQ0NMYXllckxp
c3QqIHJlbmRlclN1cmZhY2VMYXllckxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFj
a2VyLmNwcAppbmRleCA0ODM2ZWI1MjgwN2NlYWIwMDRlNDJiYzQzZDE5ODMzYjhkNmJlNDQyLi44
OThlZTg5NGM2ODE1MjA0MWJhMTRjYmQwNzQyZWRmZjk4Yzc0NzA5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNr
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgTGF5ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KIENDT2NjbHVzaW9uVHJh
Y2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OkNDT2NjbHVzaW9uVHJhY2tl
ckJhc2UoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wgcmVjb3JkTWV0cmlj
c0ZvckZyYW1lKQogICAgIDogbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2Uoc2Npc3NvclJlY3RJ
blNjcmVlblNwYWNlKQogICAgICwgbV9vdmVyZHJhd01ldHJpY3MoQ0NPdmVyZHJhd01ldHJpY3M6
OmNyZWF0ZShyZWNvcmRNZXRyaWNzRm9yRnJhbWUpKQorICAgICwgbV9yZWNvcmRpbmdPY2NsdWRp
bmdTY3JlZW5TcGFjZVJlY3RzKGZhbHNlKQogewogfQogCkBAIC0zMDcsNyArMzA4LDcgQEAgc3Rh
dGljIGlubGluZSBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9UYXJnZXRTdXJmYWNl
VHJhbnNmb3JtKGNvbnN0IExheWUKIAogLy8gRklYTUU6IFJlbW92ZSB1c2VQYWludFRyYWNraW5n
IHdoZW4gcGFpbnQgdHJhY2tpbmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCiB0ZW1wbGF0ZTx0
eXBlbmFtZSBMYXllclR5cGU+Ci1zdGF0aWMgaW5saW5lIHZvaWQgYWRkT2NjbHVzaW9uQmVoaW5k
TGF5ZXIoUmVnaW9uJiByZWdpb24sIGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IFdlYlRy
YW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGNvbnN0IFJlZ2lvbiYgb3BhcXVlQ29udGVu
dHMsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JSZWN0LCBjb25zdCBJbnRTaXplJiBtaW5pbXVtVHJh
Y2tpbmdTaXplKQorc3RhdGljIGlubGluZSB2b2lkIGFkZE9jY2x1c2lvbkJlaGluZExheWVyKFJl
Z2lvbiYgcmVnaW9uLCBjb25zdCBMYXllclR5cGUqIGxheWVyLCBjb25zdCBXZWJUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBjb25zdCBSZWdpb24mIG9wYXF1ZUNvbnRlbnRzLCBjb25z
dCBJbnRSZWN0JiBzY2lzc29yUmVjdCwgY29uc3QgSW50U2l6ZSYgbWluaW11bVRyYWNraW5nU2l6
ZSwgVmVjdG9yPEludFJlY3Q+KiBvY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzKQogewogICAgIEFT
U0VSVChsYXllci0+dmlzaWJsZUxheWVyUmVjdCgpLmNvbnRhaW5zKG9wYXF1ZUNvbnRlbnRzLmJv
dW5kcygpKSk7CiAKQEAgLTMyMiw4ICszMjMsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE9j
Y2x1c2lvbkJlaGluZExheWVyKFJlZ2lvbiYgcmVnaW9uLCBjb25zdCBMYXllclR5cGUqIGxheWUK
ICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnRlbnRSZWN0cy5zaXplKCk7ICsraSkgewog
ICAgICAgICBJbnRSZWN0IHRyYW5zZm9ybWVkUmVjdCA9IGVuY2xvc2VkSW50UmVjdCh0cmFuc2Zv
cm0ubWFwUmVjdChGbG9hdFJlY3QoY29udGVudFJlY3RzW2ldKSkpOwogICAgICAgICB0cmFuc2Zv
cm1lZFJlY3QuaW50ZXJzZWN0KHNjaXNzb3JSZWN0KTsKLSAgICAgICAgaWYgKHRyYW5zZm9ybWVk
UmVjdC53aWR0aCgpID49IG1pbmltdW1UcmFja2luZ1NpemUud2lkdGgoKSB8fCB0cmFuc2Zvcm1l
ZFJlY3QuaGVpZ2h0KCkgPj0gbWluaW11bVRyYWNraW5nU2l6ZS5oZWlnaHQoKSkKKyAgICAgICAg
aWYgKHRyYW5zZm9ybWVkUmVjdC53aWR0aCgpID49IG1pbmltdW1UcmFja2luZ1NpemUud2lkdGgo
KSB8fCB0cmFuc2Zvcm1lZFJlY3QuaGVpZ2h0KCkgPj0gbWluaW11bVRyYWNraW5nU2l6ZS5oZWln
aHQoKSkgeworICAgICAgICAgICAgaWYgKG9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMpCisgICAg
ICAgICAgICAgICAgb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cy0+YXBwZW5kKHRyYW5zZm9ybWVk
UmVjdCk7CiAgICAgICAgICAgICByZWdpb24udW5pdGUodHJhbnNmb3JtZWRSZWN0KTsKKyAgICAg
ICAgfQogICAgIH0KIH0KIApAQCAtMzQ3LDcgKzM1MSw3IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFj
a2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVkQmVoaW5k
TGF5CiAKICAgICBJbnRSZWN0IHNjaXNzb3JJblRhcmdldCA9IGxheWVyU2Npc3NvclJlY3RJblRh
cmdldFN1cmZhY2UobGF5ZXIpOwogICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3du
KGxheWVyKSkKLSAgICAgICAgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihtX3N0
YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCwgbGF5ZXIsIGNvbnRlbnRUb1RhcmdldFN1cmZh
Y2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG9wYXF1ZUNvbnRlbnRzLCBzY2lzc29ySW5U
YXJnZXQsIG1fbWluaW11bVRyYWNraW5nU2l6ZSk7CisgICAgICAgIGFkZE9jY2x1c2lvbkJlaGlu
ZExheWVyPExheWVyVHlwZT4obV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQsIGxheWVy
LCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBvcGFx
dWVDb250ZW50cywgc2Npc3NvckluVGFyZ2V0LCBtX21pbmltdW1UcmFja2luZ1NpemUsIDApOwog
CiAgICAgLy8gV2UgbXVzdCBjbGlwIHRoZSBvY2NsdXNpb24gd2l0aGluIHRoZSBsYXllcidzIHNj
aXNzb3JJblRhcmdldCB3aXRoaW4gc2NyZWVuIHNwYWNlIGFzIHdlbGwuIElmIHRoZSBzY2lzc29y
IHJlY3QgY2FuJ3QgYmUgbW92ZWQgdG8gc2NyZWVuIHNwYWNlIGFuZAogICAgIC8vIHJlbWFpbiBy
ZWN0aWxpbmVhciwgdGhlbiB3ZSBkb24ndCBhZGQgYW55IG9jY2x1c2lvbiBpbiBzY3JlZW4gc3Bh
Y2UuCkBAIC0zNjAsNyArMzY0LDcgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVy
VHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjptYXJrT2NjbHVkZWRCZWhpbmRMYXkKICAgICAgICAg
aWYgKGNsaXBwZWQgfHwgIXNjaXNzb3JJblNjcmVlblF1YWQuaXNSZWN0aWxpbmVhcigpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBJbnRSZWN0IHNjaXNzb3JJblNjcmVlblJlY3QgPSBp
bnRlcnNlY3Rpb24obV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIGVuY2xvc2VkSW50UmVjdChz
Y2lzc29ySW5TY3JlZW5RdWFkLmJvdW5kaW5nQm94KCkpKTsKLSAgICAgICAgYWRkT2NjbHVzaW9u
QmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiwg
bGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBv
cGFxdWVDb250ZW50cywgc2Npc3NvckluU2NyZWVuUmVjdCwgbV9taW5pbXVtVHJhY2tpbmdTaXpl
KTsKKyAgICAgICAgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihtX3N0YWNrLmxh
c3QoKS5vY2NsdXNpb25JblNjcmVlbiwgbGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNm
b3JtPExheWVyVHlwZT4obGF5ZXIpLCBvcGFxdWVDb250ZW50cywgc2Npc3NvckluU2NyZWVuUmVj
dCwgbV9taW5pbXVtVHJhY2tpbmdTaXplLCBtX3JlY29yZGluZ09jY2x1ZGluZ1NjcmVlblNwYWNl
UmVjdHMgPyAmbV9vY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzIDogMCk7CiAgICAgfQogfQogCkBA
IC01MDAsNiArNTA0LDE4IEBAIEludFJlY3QgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5
cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGF5ZXJTY2lzc29yUmVjdEluCiAgICAgcmV0dXJuIGVu
Y2xvc2luZ0ludFJlY3QodG90YWxTY2lzc29yKTsKIH0KIAorQ0NPY2NsdXNpb25UcmFja2VyOjpD
Q09jY2x1c2lvblRyYWNrZXIoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wg
cmVjb3JkTWV0cmljc0ZvckZyYW1lKQorICAgIDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXll
ckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+KHNjaXNzb3JSZWN0SW5TY3JlZW5TcGFj
ZSwgcmVjb3JkTWV0cmljc0ZvckZyYW1lKQoreworfQorQ0NPY2NsdXNpb25UcmFja2VyOjp+Q0NP
Y2NsdXNpb25UcmFja2VyKCkgeyB9CisKK0NDT2NjbHVzaW9uVHJhY2tlckltcGw6OkNDT2NjbHVz
aW9uVHJhY2tlckltcGwoSW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wgcmVj
b3JkTWV0cmljc0ZvckZyYW1lKQorICAgIDogQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVy
SW1wbCwgQ0NSZW5kZXJTdXJmYWNlPihzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIHJlY29yZE1l
dHJpY3NGb3JGcmFtZSkKK3sKK30KK0NDT2NjbHVzaW9uVHJhY2tlckltcGw6On5DQ09jY2x1c2lv
blRyYWNrZXJJbXBsKCkgeyB9CisKIC8vIERlY2xhcmUgdGhlIHBvc3NpYmxlIGZ1bmN0aW9ucyBo
ZXJlIGZvciB0aGUgbGlua2VyLgogdGVtcGxhdGUgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXll
ckNocm9taXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNl
KEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBib29sIHJlY29yZE1ldHJpY3NGb3JG
cmFtZSk7CiB0ZW1wbGF0ZSB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1
bSwgUmVuZGVyU3VyZmFjZUNocm9taXVtPjo6ZW50ZXJMYXllcihjb25zdCBDQ0xheWVySXRlcmF0
b3JQb3NpdGlvbjxMYXllckNocm9taXVtPiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNr
ZXIuaAppbmRleCAxOWU1MzM1MzZjODlhZDBjMDNmZjhhYWVhMjZkNDBiZTQxY2Q1OGY4Li4zNTMx
OTcwYjY3Mjk2ODEyNTJkNzQ0NGYxZTRkYWE5ZjMwY2RiZWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuaApAQCAtNjksOSArNjksMTggQEAgcHVibGljOgogICAgIFJlZ2lvbiBj
b21wdXRlVmlzaWJsZVJlZ2lvbkluU2NyZWVuKCkgY29uc3QgeyByZXR1cm4gc3VidHJhY3QoUmVn
aW9uKG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKSwgbV9zdGFjay5sYXN0KCkub2NjbHVzaW9u
SW5TY3JlZW4pOyB9CiAKICAgICB2b2lkIHNldE1pbmltdW1UcmFja2luZ1NpemUoY29uc3QgSW50
U2l6ZSYgc2l6ZSkgeyBtX21pbmltdW1UcmFja2luZ1NpemUgPSBzaXplOyB9Ci0KICAgICBzdGF0
aWMgSW50U2l6ZSBwcmVmZXJyZWRNaW5pbXVtVHJhY2tpbmdTaXplKCkgeyByZXR1cm4gSW50U2l6
ZSgxNjAsIDE2MCk7IH0KIAorICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlIHVzZWQgZm9yIGRlYnVn
Z2luZyBhbmQgdmlzdWFsaXphdGlvbiBwdXJwb3Nlcy4KKyAgICBjb25zdCBSZWdpb24mIG9jY2x1
c2lvbkluU2NyZWVuU3BhY2UoKSBjb25zdCB7IHJldHVybiBtX3N0YWNrLmxhc3QoKS5vY2NsdXNp
b25JblNjcmVlbjsgfQorICAgIHZvaWQgc2V0T2NjbHVzaW9uSW5TY3JlZW5TcGFjZShjb25zdCBS
ZWdpb24mIHJlZ2lvbikgeyBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiA9IHJlZ2lv
bjsgfQorCisgICAgY29uc3QgUmVnaW9uJiBvY2NsdXNpb25JblRhcmdldFN1cmZhY2UoKSBjb25z
dCB7IHJldHVybiBtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldDsgfQorICAgIHZvaWQg
c2V0T2NjbHVzaW9uSW5UYXJnZXRTdXJmYWNlKGNvbnN0IFJlZ2lvbiYgcmVnaW9uKSB7IG1fc3Rh
Y2subGFzdCgpLm9jY2x1c2lvbkluVGFyZ2V0ID0gcmVnaW9uOyB9CisKKyAgICB2b2lkIHN0YXJ0
UmVjb3JkaW5nT2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cygpIHsgbV9yZWNvcmRpbmdPY2NsdWRp
bmdTY3JlZW5TcGFjZVJlY3RzID0gdHJ1ZTsgfQorICAgIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYg
b2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cygpIGNvbnN0IHsgcmV0dXJuIG1fb2NjbHVkaW5nU2Ny
ZWVuU3BhY2VSZWN0czsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgc3RydWN0IFN0YWNrT2JqZWN0IHsK
ICAgICAgICAgU3RhY2tPYmplY3QoKSA6IHN1cmZhY2UoMCkgeyB9CkBAIC0xMTEsMTAgKzEyMCwy
NCBAQCBwcml2YXRlOgogICAgIEludFJlY3QgbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2U7CiAg
ICAgT3duUHRyPENDT3ZlcmRyYXdNZXRyaWNzPiBtX292ZXJkcmF3TWV0cmljczsKICAgICBJbnRT
aXplIG1fbWluaW11bVRyYWNraW5nU2l6ZTsKKworICAgIC8vIFRoZXNlIGFyZSB1c2VkIGZvciBk
ZWJ1Z2dpbmcgdmlzdWFsaXphdGlvbnMuCisgICAgVmVjdG9yPEludFJlY3Q+IG1fb2NjbHVkaW5n
U2NyZWVuU3BhY2VSZWN0czsKKyAgICBib29sIG1fcmVjb3JkaW5nT2NjbHVkaW5nU2NyZWVuU3Bh
Y2VSZWN0czsKIH07CiAKLXR5cGVkZWYgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9t
aXVtLCBSZW5kZXJTdXJmYWNlQ2hyb21pdW0+IENDT2NjbHVzaW9uVHJhY2tlcjsKLXR5cGVkZWYg
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxDQ0xheWVySW1wbCwgQ0NSZW5kZXJTdXJmYWNlPiBDQ09j
Y2x1c2lvblRyYWNrZXJJbXBsOworY2xhc3MgQ0NPY2NsdXNpb25UcmFja2VyIDogcHVibGljIEND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJDaHJvbWl1bSwgUmVuZGVyU3VyZmFjZUNocm9taXVt
PiB7CitwdWJsaWM6CisgICAgQ0NPY2NsdXNpb25UcmFja2VyKEludFJlY3Qgc2Npc3NvclJlY3RJ
blNjcmVlblNwYWNlLCBib29sIHJlY29yZE1ldHJpY3NGb3JGcmFtZSk7CisgICAgdmlydHVhbCB+
Q0NPY2NsdXNpb25UcmFja2VyKCk7Cit9OworCitjbGFzcyBDQ09jY2x1c2lvblRyYWNrZXJJbXBs
IDogcHVibGljIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8Q0NMYXllckltcGwsIENDUmVuZGVyU3Vy
ZmFjZT4geworcHVibGljOgorICAgIENDT2NjbHVzaW9uVHJhY2tlckltcGwoSW50UmVjdCBzY2lz
c29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wgcmVjb3JkTWV0cmljc0ZvckZyYW1lKTsKKyAgICB2
aXJ0dWFsIH5DQ09jY2x1c2lvblRyYWNrZXJJbXBsKCk7Cit9OwogCiB9CisKICNlbmRpZiAvLyBD
Q09jY2x1c2lvblRyYWNrZXJfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9DQ0xheWVyVHJlZUhvc3RUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NMYXllclRyZWVIb3N0VGVzdC5jcHAKaW5kZXggM2JmMjYyMDRkMWJhZjRiZTQ4YjJjYzA2
OWUxYTliYTdhNjdiMWQ2MC4uODc4ZmQxNzkxY2U2ODg3MTVmNTg1ZDg5NzI4N2E3MDdjOGFlNmVh
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhv
c3RUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVl
SG9zdFRlc3QuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVI
b3N0LmgiCiAKICNpbmNsdWRlICJBbmltYXRpb25JZFZlbmRvci5oIgotI2luY2x1ZGUgIkNDT2Nj
bHVzaW9uVHJhY2tlclRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ1RocmVhZGVkVGVzdC5oIgog
I2luY2x1ZGUgIkNvbnRlbnRMYXllckNocm9taXVtLmgiCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0RQcml2YXRlLmgiCkBAIC0xNjA3LDkgKzE2MDYsNyBAQCBwdWJsaWM6CiAKICAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlKENDVGV4dHVyZVVwZGF0ZXImLCBjb25zdCBDQ09jY2x1c2lvblRyYWNr
ZXIqIG9jY2x1c2lvbikgT1ZFUlJJREUKICAgICB7Ci0gICAgICAgIC8vIEdhaW4gYWNjZXNzIHRv
IGludGVybmFscyBvZiB0aGUgQ0NPY2NsdXNpb25UcmFja2VyLgotICAgICAgICBjb25zdCBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyKiB0ZXN0T2NjbHVzaW9uID0gc3RhdGljX2Nhc3Q8Y29uc3QgVGVz
dENDT2NjbHVzaW9uVHJhY2tlcio+KG9jY2x1c2lvbik7Ci0gICAgICAgIG1fb2NjbHVkZWRTY3Jl
ZW5TcGFjZSA9IHRlc3RPY2NsdXNpb24gPyB0ZXN0T2NjbHVzaW9uLT5vY2NsdXNpb25JblNjcmVl
blNwYWNlKCkgOiBSZWdpb24oKTsKKyAgICAgICAgbV9vY2NsdWRlZFNjcmVlblNwYWNlID0gb2Nj
bHVzaW9uID8gb2NjbHVzaW9uLT5vY2NsdXNpb25JblNjcmVlblNwYWNlKCkgOiBSZWdpb24oKTsK
ICAgICB9CiAKICAgICB2aXJ0dWFsIGJvb2wgZHJhd3NDb250ZW50KCkgY29uc3QgT1ZFUlJJREUg
eyByZXR1cm4gdHJ1ZTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdC5jcHAKaW5kZXggZWU1ZTI5MDdkZTFkMzVlMmNlYjU2
ZmU0ZWI5MDBiODZlNzVmMDhiYi4uYjY3MjFiOWU4MTVhNWQ5Nzg0ZGJlMzgyMzdjYWJlOThhMGQ4
MWVhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lv
blRyYWNrZXJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDT2Nj
bHVzaW9uVHJhY2tlclRlc3QuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJDQ0Fu
aW1hdGlvblRlc3RDb21tb24uaCIKICNpbmNsdWRlICJDQ0xheWVyVHJlZVRlc3RDb21tb24uaCIK
LSNpbmNsdWRlICJDQ09jY2x1c2lvblRyYWNrZXJUZXN0Q29tbW9uLmgiCiAjaW5jbHVkZSAiTGF5
ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlJlZ2lvbi5oIgogI2luY2x1ZGUgIlRyYW5zbGF0ZVRy
YW5zZm9ybU9wZXJhdGlvbi5oIgpAQCAtMTAyLDExICsxMDEsMTEgQEAgcHJpdmF0ZToKICAgICBJ
bnRSZWN0IG1fb3BhcXVlQ29udGVudHNSZWN0OwogfTsKIAotdGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLWNsYXNzIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJXaXRoU2Npc3NvciA6IHB1YmxpYyBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxM
YXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPiB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgQmFzZU9j
Y2x1c2lvblRyYWNrZXJUeXBlLCB0eXBlbmFtZSBMYXllclR5cGU+CitjbGFzcyBUZXN0Q0NPY2Ns
dXNpb25UcmFja2VyV2l0aFNjaXNzb3IgOiBwdWJsaWMgQmFzZU9jY2x1c2lvblRyYWNrZXJUeXBl
IHsKIHB1YmxpYzoKICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3IoSW50UmVj
dCBzY3JlZW5TY2lzc29yUmVjdCwgYm9vbCByZWNvcmRNZXRyaWNzRm9yRnJhbWUgPSBmYWxzZSkK
LSAgICAgICAgOiBUZXN0Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1
cmZhY2VUeXBlPihzY3JlZW5TY2lzc29yUmVjdCwgcmVjb3JkTWV0cmljc0ZvckZyYW1lKQorICAg
ICAgICA6IEJhc2VPY2NsdXNpb25UcmFja2VyVHlwZShzY3JlZW5TY2lzc29yUmVjdCwgcmVjb3Jk
TWV0cmljc0ZvckZyYW1lKQogICAgICAgICAsIG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0KGZh
bHNlKQogICAgIHsKICAgICB9CkBAIC0xMTUsNyArMTE0LDcgQEAgcHVibGljOgogICAgIHZvaWQg
dXNlRGVmYXVsdExheWVyU2Npc3NvclJlY3QoKSB7IG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0
ID0gZmFsc2U7IH0KIAogcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgSW50UmVjdCBsYXllclNjaXNz
b3JSZWN0SW5UYXJnZXRTdXJmYWNlKGNvbnN0IExheWVyVHlwZSogbGF5ZXIpIGNvbnN0IHsgcmV0
dXJuIG1fb3ZlcnJpZGVMYXllclNjaXNzb3JSZWN0ID8gbV9sYXllclNjaXNzb3JSZWN0IDogQ0NP
Y2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bGF5ZXJT
Y2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllcik7IH0KKyAgICB2aXJ0dWFsIEludFJlY3Qg
bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShjb25zdCBMYXllclR5cGUqIGxheWVyKSBj
b25zdCB7IHJldHVybiBtX292ZXJyaWRlTGF5ZXJTY2lzc29yUmVjdCA/IG1fbGF5ZXJTY2lzc29y
UmVjdCA6IEJhc2VPY2NsdXNpb25UcmFja2VyVHlwZTo6bGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0
U3VyZmFjZShsYXllcik7IH0KIAogcHJpdmF0ZToKICAgICBib29sIG1fb3ZlcnJpZGVMYXllclNj
aXNzb3JSZWN0OwpAQCAtNDUzLDcgKzQ1Miw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdHlwZW5h
bWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xh
eWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50
U2l6ZSg1MDAsIDUwMCksIHRydWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQp
OwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFja2VyVHlwZSwg
dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAs
IDAsIDEwMDAsIDEwMDApKTsKIAogICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyLCBvY2Ns
dXNpb24pOwpAQCAtNTA2LDcgKzUwNSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdHlwZW5hbWUg
VHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVy
KHBhcmVudCwgbGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAs
IDUwMCksIHRydWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldp
dGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFja2VyVHlwZSwgdHlwZW5hbWUg
VHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwog
ICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAs
IDEwMDApKTsKIAogICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyLCBvY2NsdXNpb24pOwpA
QCAtNTU3LDcgKzU1Niw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNv
bnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwg
bGF5ZXJUcmFuc2Zvcm0sIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRy
dWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAgICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0
eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29y
PHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFja2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBv
Y2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
IAogICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyLCBvY2NsdXNpb24pOwpAQCAtNjI0LDcg
KzYyMyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXll
clR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCB0aGlzLT5pZGVu
dGl0eU1hdHJpeCwgRmxvYXRQb2ludCgxMCwgMTApLCBJbnRTaXplKDUwMCwgNTAwKSwgdHJ1ZSk7
CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVu
YW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlw
ZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6TGF5ZXJU
eXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1
c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCiAg
ICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CkBAIC03MjAsNyArNzE5
LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlw
ZSogY2hpbGQyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRp
dHlNYXRyaXgsIEZsb2F0UG9pbnQoMzAsIDMwKSwgSW50U2l6ZSg2MCwgMjApLCB0cnVlKTsKICAg
ICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUg
VHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFt
ZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+
IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9u
LnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgtMTAsIC0xMCwgMTAwMCwgMTAwMCkpOwogCiAg
ICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoY2hpbGQyLCBvY2NsdXNpb24pOwpAQCAtODY2LDcgKzg2
NSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5
cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCBsYXllclRyYW5zZm9y
bSwgRmxvYXRQb2ludCgwLCAwKSwgSW50U2l6ZSg1MDAsIDUwMCksIHRydWUpOwogICAgICAgICB0
aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6
UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
KyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVz
OjpPY2NsdXNpb25UcmFja2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5
ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAogICAgICAgICBJbnRS
ZWN0IGNsaXBwZWRMYXllckluQ2hpbGQgPSBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChsYXll
clRyYW5zZm9ybSwgbGF5ZXItPnZpc2libGVMYXllclJlY3QoKSk7CkBAIC05MzAsNyArOTI5LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
bGF5ZXIyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkLCB0aGlzLT5pZGVudGl0eU1h
dHJpeCwgRmxvYXRQb2ludCgxMCwgNDUwKSwgSW50U2l6ZSg1MDAsIDYwKSwgdHJ1ZSk7CiAgICAg
ICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9u
VHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5
cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAw
MCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUg
VHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5z
ZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAg
IHRoaXMtPnZpc2l0TGF5ZXIobGF5ZXIyLCBvY2NsdXNpb24pOwpAQCAtMTAxOCw3ICsxMDE3LDcg
QEAgcHJvdGVjdGVkOgogICAgICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSog
bGF5ZXIyID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKGNoaWxkMiwgdGhpcy0+aWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoLTEwLCAtMTApLCBJbnRTaXplKDUxMCwgNTEwKSwgdHJ1ZSk7CiAg
ICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1l
IFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwg
MTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5h
bWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lv
bi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoLTIwLCAtMjAsIDEwMDAsIDEwMDApKTsKIAog
ICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyMiwgb2NjbHVzaW9uKTsKQEAgLTExMzIsNyAr
MTEzMSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXll
clR5cGUqIGxheWVyMiA9IHRoaXMtPmNyZWF0ZURyYXdpbmdMYXllcihjaGlsZDIsIHRoaXMtPmlk
ZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KC0xMCwgLTEwKSwgSW50U2l6ZSg1MTAsIDUxMCksIHRy
dWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAgICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0
eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29y
PHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFja2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBv
Y2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KC0zMCwgLTMwLCAxMDAwLCAxMDAw
KSk7CiAKICAgICAgICAgdGhpcy0+dmlzaXRMYXllcihsYXllcjIsIG9jY2x1c2lvbik7CkBAIC0x
MjQ2LDcgKzEyNDUsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMo
cGFyZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tl
clR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKICAgICAgICAgLy8gT3BhY2l0eSBsYXllciB3b24n
dCBjb250cmlidXRlIHRvIG9jY2x1c2lvbi4KQEAgLTEyODgsNyArMTI4Nyw3IEBAIHByb3RlY3Rl
ZDoKICAgICAgICAgRVhQRUNUX1RSVUUob2NjbHVzaW9uLm9jY2x1c2lvbkluU2NyZWVuU3BhY2Uo
KS5pc0VtcHR5KCkpOwogICAgICAgICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5U
YXJnZXRTdXJmYWNlKCkuaXNFbXB0eSgpKTsKIAotICAgICAgICAvLyBCdXQgdGhlIG9wYXF1ZSBs
YXllcidzIG9jY2x1c2lvbiBpcyBwcmVzZXJ2ZWQgb24gdGhlIHBhcmVudC4gCisgICAgICAgIC8v
IEJ1dCB0aGUgb3BhcXVlIGxheWVyJ3Mgb2NjbHVzaW9uIGlzIHByZXNlcnZlZCBvbiB0aGUgcGFy
ZW50LgogICAgICAgICB0aGlzLT5sZWF2ZUNvbnRyaWJ1dGluZ1N1cmZhY2UoYmx1ckxheWVyLCBv
Y2NsdXNpb24pOwogICAgICAgICB0aGlzLT5lbnRlckxheWVyKHBhcmVudCwgb2NjbHVzaW9uKTsK
ICAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMzAsIDMwLCA3MCwgNzApLCBvY2Ns
dXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmJvdW5kcygpKTsKQEAgLTEzMTAsNyArMTMw
OSw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdGhpcy0+Y3JlYXRlUmVwbGljYUxheWVyKHN1cmZh
Y2UsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDUwLCA1MCksIEludFNpemUoKSk7
CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVu
YW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlw
ZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6TGF5ZXJU
eXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1
c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCiAg
ICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsKQEAgLTEzNDEsNyAr
MTM0MCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdGhpcy0+Y3JlYXRlUmVwbGljYUxheWVyKHN1
cmZhY2UsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDUwLCA1MCksIEludFNpemUo
KSk7CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5
cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8
dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9j
Y2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwog
CiAgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoc3VyZmFjZSwgb2NjbHVzaW9uKTsKQEAgLTEzNzMs
NyArMTM3Miw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdGhpcy0+Y3JlYXRlTWFza0xheWVyKHJl
cGxpY2EsIEludFNpemUoMTAsIDEwKSk7CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVu
dCk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1l
IFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBl
LCB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoc3VyZmFjZSwg
b2NjbHVzaW9uKTsKQEAgLTE0MDMsNyArMTQwMiw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgdHlw
ZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJhd2lu
Z1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwg
SW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJl
bnQpOwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVz
aW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFja2VyVHlw
ZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAw
MCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0
KDIwMCwgMTAwLCAxMDAsIDEwMCkpOwogCiAgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIobGF5ZXIs
IG9jY2x1c2lvbik7CkBAIC0xNDQ3LDcgKzE0NDYsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5
cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURyYXdp
bmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFy
ZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5h
bWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgyMDAsIDEwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgVGVzdENDT2Nj
bHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFja2Vy
VHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMjAwLCAx
MDAsIDEwMCwgMTAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KElu
dFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIobGF5
ZXIsIG9jY2x1c2lvbik7CkBAIC0xNDkxLDcgKzE0OTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0ZURy
YXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwg
MCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMo
cGFyZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tl
clR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50
UmVjdCgxMDAsIDEwMCwgMTAwLCAxMDApKTsKIAogICAgICAgICB0aGlzLT5lbnRlckxheWVyKGxh
eWVyLCBvY2NsdXNpb24pOwpAQCAtMTUzMCw3ICsxNTI5LDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVhdGVE
cmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50KDAs
IDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRj
KHBhcmVudCk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMTAwLCAxMDAsIDEwMCwgMTAwKSk7CisgICAgICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJh
Y2tlclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDEw
MCwgMTAwLCAxMDAsIDEwMCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVj
dChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAogICAgICAgICB0aGlzLT5lbnRlckxheWVy
KGxheWVyLCBvY2NsdXNpb24pOwpAQCAtMTU2OSw3ICsxNTY4LDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICB0eXBlbmFtZSBUeXBlczo6Q29udGVudExheWVyVHlwZSogbGF5ZXIgPSB0aGlzLT5jcmVh
dGVEcmF3aW5nU3VyZmFjZShwYXJlbnQsIHRoaXMtPmlkZW50aXR5TWF0cml4LCBGbG9hdFBvaW50
KDAsIDApLCBJbnRTaXplKDIwMCwgMjAwKSwgdHJ1ZSk7CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3
RXRjKHBhcmVudCk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29y
PHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNl
VHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRy
YWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoNTAsIDUwLCAyMDAsIDIwMCkpOwogCiAgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIo
bGF5ZXIsIG9jY2x1c2lvbik7CkBAIC0xNjEyLDcgKzE2MTEsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0
ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdF
dGMocGFyZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8
dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VU
eXBlPiBvY2NsdXNpb24oSW50UmVjdCg1MCwgNTAsIDIwMCwgMjAwKSk7CisgICAgICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJh
Y2tlclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDUw
LCA1MCwgMjAwLCAyMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3Qo
SW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKICAgICAgICAgdGhpcy0+ZW50ZXJMYXllcihs
YXllciwgb2NjbHVzaW9uKTsKQEAgLTE2NTUsNyArMTY1NCw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRl
RHJhd2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgw
LCAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0
YyhwYXJlbnQpOwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0
eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5
cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFj
a2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJ
bnRSZWN0KDUwMCwgNTAwLCAxMDAsIDEwMCkpOwogCiAgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIo
bGF5ZXIsIG9jY2x1c2lvbik7CkBAIC0xNjk4LDcgKzE2OTcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
ICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNyZWF0
ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQo
MCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdF
dGMocGFyZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8
dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VU
eXBlPiBvY2NsdXNpb24oSW50UmVjdCg1MDAsIDUwMCwgMTAwLCAxMDApKTsKKyAgICAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25U
cmFja2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3Qo
NTAwLCA1MDAsIDEwMCwgMTAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JS
ZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgIHRoaXMtPmVudGVyTGF5
ZXIobGF5ZXIsIG9jY2x1c2lvbik7CkBAIC0xNzQxLDcgKzE3NDAsNyBAQCBwcm90ZWN0ZWQ6CiAg
ICAgICAgIHR5cGVuYW1lIFR5cGVzOjpDb250ZW50TGF5ZXJUeXBlKiBsYXllciA9IHRoaXMtPmNy
ZWF0ZURyYXdpbmdTdXJmYWNlKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9p
bnQoMCwgMCksIEludFNpemUoMjAwLCAyMDApLCB0cnVlKTsKICAgICAgICAgdGhpcy0+Y2FsY0Ry
YXdFdGMocGFyZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNz
b3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZh
Y2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9u
VHJhY2tlclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0
KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgdGhpcy0+ZW50ZXJMYXllcihsYXllciwgb2Nj
bHVzaW9uKTsKIAogICAgICAgICAvLyBUaGlzIGxheWVyIGlzIHRyYW5zbGF0ZWQgd2hlbiBkcmF3
biBpbnRvIGl0cyB0YXJnZXQuIFNvIGlmIHRoZSBzY2lzc29yIHJlY3QgZ2l2ZW4gZnJvbSB0aGUg
dGFyZ2V0IHN1cmZhY2UKQEAgLTE3NjUsNyArMTc2NCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAg
dHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+Y3JlYXRlRHJh
d2luZ1N1cmZhY2UocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAw
KSwgSW50U2l6ZSgyMDAsIDIwMCksIGZhbHNlKTsKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMo
cGFyZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tl
clR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKICAgICAgICAgdGhpcy0+ZW50ZXJMYXllcihsYXllciwgb2NjbHVzaW9u
KTsKIAogICAgICAgICBFWFBFQ1RfRkFMU0Uob2NjbHVzaW9uLm9jY2x1ZGVkKGxheWVyLCBJbnRS
ZWN0KDAsIDAsIDEwMCwgMTAwKSkpOwpAQCAtMTgwMiw3ICsxODAxLDcgQEAgcHJvdGVjdGVkOgog
ICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCiAgICAgICAgIHsKLSAgICAgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRS
ZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNr
ZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5cGUsIHR5cGVu
YW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDAp
KTsKICAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50UmVjdCgwLCAw
LCAxMDAsIDEwMCkpOwogCiAgICAgICAgICAgICB0aGlzLT5yZXNldExheWVySXRlcmF0b3IoKTsK
QEAgLTE4MTgsNyArMTgxNyw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgfQogCiAgICAgICAgIHsK
LSAgICAgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBU
eXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1
c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5
cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKICAgICAgICAgICAgIGxheWVyLT5zZXRPcGFxdWVDb250ZW50c1JlY3QoSW50
UmVjdCgyMCwgMjAsIDE4MCwgMTgwKSk7CiAKICAgICAgICAgICAgIHRoaXMtPnJlc2V0TGF5ZXJJ
dGVyYXRvcigpOwpAQCAtMTgzNCw3ICsxODMzLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB9CiAK
ICAgICAgICAgewotICAgICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29y
PHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNl
VHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNp
b25UcmFja2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICAgICAgbGF5ZXItPnNldE9wYXF1ZUNvbnRl
bnRzUmVjdChJbnRSZWN0KDE1MCwgMTUwLCAxMDAsIDEwMCkpOwogCiAgICAgICAgICAgICB0aGlz
LT5yZXNldExheWVySXRlcmF0b3IoKTsKQEAgLTE4NjYsNyArMTg2NSw3IEBAIHByb3RlY3RlZDoK
ICAgICAgICAgdHlwZW5hbWUgVHlwZXM6OkNvbnRlbnRMYXllclR5cGUqIGxheWVyID0gdGhpcy0+
Y3JlYXRlRHJhd2luZ0xheWVyKGNvbnRhaW5lciwgdHJhbnNmb3JtLCBGbG9hdFBvaW50KDEwMCwg
MTAwKSwgSW50U2l6ZSgyMDAsIDIwMCksIHRydWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0
YyhwYXJlbnQpOwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0
eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5
cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFj
a2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwogICAgICAgICB0aGlzLT5lbnRlckxheWVyKGxheWVyLCBvY2NsdXNp
b24pOwogCiAgICAgICAgIC8vIFRoZSBsYXllciBpcyByb3RhdGVkIGluIDNkIGJ1dCB3aXRob3V0
IHByZXNlcnZpbmcgM2QsIHNvIGl0IG9ubHkgZ2V0cyByZXNpemVkLgpAQCAtMTkwMCw3ICsxODk5
LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAK
LSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVz
OjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9u
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFj
a2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0eXBl
bmFtZSBUeXBlczo6TGF5ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7CiAgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoY2hpbGQyLCBvY2NsdXNpb24pOwogICAgICAg
ICBFWFBFQ1RfVFJVRShvY2NsdXNpb24ub2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpLmlzRW1wdHko
KSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKG9jY2x1c2lvbi5vY2NsdXNpb25JblRhcmdldFN1cmZh
Y2UoKS5pc0VtcHR5KCkpOwpAQCAtMTkzMiw3ICsxOTMxLDcgQEAgcHJvdGVjdGVkOgogICAgICAg
ICBsYXllci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRj
KHBhcmVudCk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NP
Y2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNr
ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIobGF5ZXIsIG9jY2x1c2lv
bik7CiAKICAgICAgICAgRVhQRUNUX0lOVF9SRUNUX0VRKEludFJlY3QoMCwgMCwgMjAwLCAyMDAp
LCBvY2NsdXNpb24udW5vY2NsdWRlZENvbnRlbnRSZWN0KGxheWVyLCBJbnRSZWN0KDAsIDAsIDIw
MCwgMjAwKSkpOwpAQCAtMTk2Myw3ICsxOTYyLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBsYXll
ci0+c2V0UHJlc2VydmVzM0QodHJ1ZSk7CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVu
dCk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1l
IFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2Nj
bHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNp
b25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBl
LCB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CiAgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIobGF5ZXIsIG9jY2x1c2lvbik7CiAK
ICAgICAgICAgLy8gVGhlIGJvdHRvbSAxMSBwaXhlbCByb3dzIG9mIHRoaXMgbGF5ZXIgcmVtYWlu
IHZpc2libGUgaW5zaWRlIHRoZSBjb250YWluZXIsIGFmdGVyIHRyYW5zbGF0aW9uIHRvIHRoZSB0
YXJnZXQgc3VyZmFjZS4gV2hlbiB0cmFuc2xhdGVkIGJhY2ssCkBAIC0xOTkyLDcgKzE5OTEsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIGxheWVyLT5zZXRQcmVzZXJ2ZXMzRCh0cnVlKTsKICAgICAg
ICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlw
ZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAw
KSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBU
eXBlczo6T2NjbHVzaW9uVHJhY2tlclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAogICAgICAgICAvLyBUaGUgfGxh
eWVyfCBpcyBlbnRpcmVseSBiZWhpbmQgdGhlIGNhbWVyYSBhbmQgc2hvdWxkIG5vdCBvY2NsdWRl
LgogICAgICAgICB0aGlzLT52aXNpdExheWVyKGxheWVyLCBvY2NsdXNpb24pOwpAQCAtMjAyMiw3
ICsyMDIxLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICBsYXllci0+c2V0UHJlc2VydmVzM0QodHJ1
ZSk7CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5
cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwg
MTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8
dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6TGF5
ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKICAgICAgICAg
Ly8gVGhpcyBpcyB2ZXJ5IGNsb3NlIHRvIHRoZSBjYW1lcmEsIHNvIHBpeGVscyBpbiBpdHMgdmlz
aWJsZUxheWVyUmVjdCB3aWxsIGFjdHVhbGx5IGdvIG91dHNpZGUgb2YgdGhlIGxheWVyJ3MgY2xp
cFJlY3QuCiAgICAgICAgIC8vIEVuc3VyZSB0aGF0IHRob3NlIHBpeGVscyBkb24ndCBvY2NsdWRl
IHRoaW5ncyBvdXRzaWRlIHRoZSBjbGlwUmVjdC4KQEAgLTIwNTksNyArMjA1OCw3IEBAIHByb3Rl
Y3RlZDoKICAgICAgICAgRVhQRUNUX0ZBTFNFKHN1cmZhY2UtPmRyYXdPcGFjaXR5SXNBbmltYXRp
bmcoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKS0+ZHJh
d09wYWNpdHlJc0FuaW1hdGluZygpKTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
V2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJl
bmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Cisg
ICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6
T2NjbHVzaW9uVHJhY2tlclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lv
bihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAogICAgICAgICB0aGlzLT52aXNpdExheWVy
KHRvcG1vc3QsIG9jY2x1c2lvbik7CiAgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50Miwg
b2NjbHVzaW9uKTsKQEAgLTIxMTEsNyArMjExMCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQ
RUNUX0ZBTFNFKHN1cmZhY2UtPmRyYXdPcGFjaXR5SXNBbmltYXRpbmcoKSk7CiAgICAgICAgIEVY
UEVDVF9UUlVFKHN1cmZhY2UtPnJlbmRlclN1cmZhY2UoKS0+ZHJhd09wYWNpdHlJc0FuaW1hdGlu
ZygpKTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5h
bWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBv
Y2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIFRlc3RDQ09jY2x1
c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5
cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEw
MDAsIDEwMDApKTsKIAogICAgICAgICB0aGlzLT52aXNpdExheWVyKHRvcG1vc3QsIG9jY2x1c2lv
bik7CiAgICAgICAgIHRoaXMtPmVudGVyTGF5ZXIocGFyZW50Miwgb2NjbHVzaW9uKTsKQEAgLTIx
NjksNyArMjE2OCw3IEBAIHByb3RlY3RlZDoKICAgICAgICAgRVhQRUNUX1RSVUUoc3VyZmFjZUNo
aWxkLT5kcmF3VHJhbnNmb3JtSXNBbmltYXRpbmcoKSk7CiAgICAgICAgIEVYUEVDVF9UUlVFKHN1
cmZhY2VDaGlsZC0+c2NyZWVuU3BhY2VUcmFuc2Zvcm1Jc0FuaW1hdGluZygpKTsKIAotICAgICAg
ICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVy
VHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVj
dCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRo
U2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5cGUsIHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAog
ICAgICAgICB0aGlzLT52aXNpdExheWVyKHN1cmZhY2UyLCBvY2NsdXNpb24pOwogICAgICAgICB0
aGlzLT5lbnRlckNvbnRyaWJ1dGluZ1N1cmZhY2Uoc3VyZmFjZTIsIG9jY2x1c2lvbik7CkBAIC0y
MjUxLDcgKzIyNTAsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHN1cmZhY2UyLT5zZXRPcGFxdWVD
b250ZW50c1JlY3QoSW50UmVjdCgwLCAwLCAyMDAsIDIwMCkpOwogICAgICAgICB0aGlzLT5jYWxj
RHJhd0V0YyhwYXJlbnQpOwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Np
c3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3Vy
ZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNp
b25UcmFja2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJl
Y3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoc3VyZmFj
ZTIsIG9jY2x1c2lvbik7CiAgICAgICAgIHRoaXMtPnZpc2l0Q29udHJpYnV0aW5nU3VyZmFjZShz
dXJmYWNlMiwgb2NjbHVzaW9uKTsKQEAgLTIyODcsNyArMjI4Niw3IEBAIHByb3RlY3RlZDoKICAg
ICAgICAgc3VyZmFjZS0+c2V0T3BhcXVlQ29udGVudHNSZWN0KEludFJlY3QoMCwgMCwgNDAwLCAy
MDApKTsKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgICAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwg
dHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAw
LCAxMDAwLCAxMDAwKSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nv
cjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpM
YXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAogICAgICAg
ICB0aGlzLT52aXNpdExheWVyKHN1cmZhY2UsIG9jY2x1c2lvbik7CiAgICAgICAgIHRoaXMtPnZp
c2l0Q29udHJpYnV0aW5nU3VyZmFjZShzdXJmYWNlLCBvY2NsdXNpb24pOwpAQCAtMjMxMiw3ICsy
MzExLDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiB0
b3Btb3N0ID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlN
YXRyaXgsIEZsb2F0UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSgxMDAsIDEwMCksIHRydWUpOwogICAg
ICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lv
blRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBU
eXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEw
MDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1l
IFR5cGVzOjpPY2NsdXNpb25UcmFja2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4g
b2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBvY2NsdXNpb24u
c2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKIAogICAgICAg
ICAvLyB8dG9wbW9zdHwgb2NjbHVkZXMgdGhlIHJlcGxpY2EsIGJ1dCBub3QgdGhlIHN1cmZhY2Ug
aXRzZWxmLgpAQCAtMjM1MCw3ICsyMzQ5LDcgQEAgcHJvdGVjdGVkOgogICAgICAgICB0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlKiB0b3Btb3N0ID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBh
cmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCksIEludFNpemUoMTAw
LCAxMTApLCB0cnVlKTsKICAgICAgICAgdGhpcy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAg
ICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJX
aXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tlclR5cGUsIHR5cGVuYW1l
IFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
ICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAw
LCAxMDAwKSk7CiAKICAgICAgICAgLy8gfHRvcG1vc3R8IG9jY2x1ZGVzIHRoZSBzdXJmYWNlLCBi
dXQgbm90IHRoZSBlbnRpcmUgc3VyZmFjZSdzIHJlcGxpY2EuCkBAIC0yMzkwLDcgKzIzODksNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIG92ZXJSZXBs
aWNhID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRy
aXgsIEZsb2F0UG9pbnQoMCwgMTAwKSwgSW50U2l6ZSg1MCwgMTAwKSwgdHJ1ZSk7CiAgICAgICAg
IHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJh
Y2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVz
OjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlw
ZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlPiBvY2Ns
dXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRM
YXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgIC8v
IFRoZXNlIG9jY2x1ZGUgdGhlIHN1cmZhY2UgYW5kIHJlcGxpY2EgZGlmZmVyZW50bHksIHNvIHdl
IGNhbiB0ZXN0IGVhY2ggb25lLgpAQCAtMjQzMiw3ICsyNDMxLDcgQEAgcHJvdGVjdGVkOgogICAg
ICAgICB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlKiB0b3Btb3N0ID0gdGhpcy0+Y3JlYXRlRHJh
d2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgsIEZsb2F0UG9pbnQoMCwgMCks
IEludFNpemUoMTAwLCA1MCksIHRydWUpOwogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJl
bnQpOwogCi0gICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFt
ZSBUeXBlczo6TGF5ZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9j
Y2x1c2lvbihJbnRSZWN0KC0xMDAsIC0xMDAsIDEwMDAsIDEwMDApKTsKKyAgICAgICAgVGVzdEND
T2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFj
a2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoLTEw
MCwgLTEwMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgIC8vIHx0b3Btb3N0fCBvY2NsdWRlcyBl
dmVyeXRoaW5nIHBhcnRpYWxseSBzbyB3ZSBrbm93IG9jY2x1c2lvbiBpcyBoYXBwZW5pbmcgYXQg
YWxsLgogICAgICAgICB0aGlzLT52aXNpdExheWVyKHRvcG1vc3QsIG9jY2x1c2lvbik7CkBAIC0y
NDkwLDcgKzI0ODksNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgewogICAgICAgICAgICAgLy8g
TWFrZSBhIHNjcmVlbiBzY2lzc29yIHJlY3QgdGhhdCBpcyBsYXJnZXIgdGhhbiB0aGUgcm9vdCBs
YXllcidzLgotICAgICAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5
cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlw
ZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25U
cmFja2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgICAgICB0aGlzLT52aXNpdExheWVyKHN1cmZh
Y2UsIG9jY2x1c2lvbik7CiAKQEAgLTI1MDIsNyArMjUwMSw3IEBAIHByb3RlY3RlZDoKICAgICAg
ICAgdGhpcy0+cmVzZXRMYXllckl0ZXJhdG9yKCk7CiAgICAgICAgIHsKICAgICAgICAgICAgIC8v
IE1ha2UgYSBzY3JlZW4gc2Npc3NvciByZWN0IHRoYXQgaXMgc21hbGxlciB0aGFuIHRoZSByb290
IGxheWVyJ3MuCi0gICAgICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8
dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VU
eXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAsIDEwMCkpOworICAgICAgICAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25U
cmFja2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3Qo
MCwgMCwgMTAwLCAxMDApKTsKIAogICAgICAgICAgICAgdGhpcy0+dmlzaXRMYXllcihzdXJmYWNl
LCBvY2NsdXNpb24pOwogCkBAIC0yNTI5LDcgKzI1MjgsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAg
IHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIHRvcG1vc3QgPSB0aGlzLT5jcmVhdGVEcmF3aW5n
TGF5ZXIocGFyZW50LCB0aGlzLT5pZGVudGl0eU1hdHJpeCwgRmxvYXRQb2ludCgwLCAwKSwgSW50
U2l6ZSgxMDAsIDUwKSwgdHJ1ZSk7CiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7
CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5
cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVz
aW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25U
cmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0
eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAx
MDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgIC8vIHx0b3Btb3N0fCBvY2NsdWRlcyBldmVyeXRo
aW5nIHBhcnRpYWxseSBzbyB3ZSBrbm93IG9jY2x1c2lvbiBpcyBoYXBwZW5pbmcgYXQgYWxsLgpA
QCAtMjU5Nyw3ICsyNTk2LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgICAgIHRoaXMtPmNhbGNEcmF3
RXRjKHBhcmVudCk7CiAKLSAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29y
PHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNl
VHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRy
YWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgw
LCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0
KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogCiAgICAgICAgIC8vIFRoZXNlIGxheWVycyBv
Y2NsdWRlIHBpeGVscyBkaXJlY3RseSBiZXNpZGUgdGhlIGZpbHRlcmVkU3VyZmFjZS4gQmVjYXVz
ZSBmaWx0ZXJlZCBzdXJmYWNlIGJsZW5kcyBwaXhlbHMgaW4gYSByYWRpdXMsIGl0IHdpbGwKQEAg
LTI3MTksNyArMjcxOCw3IEBAIHByb3RlY3RlZDoKIAogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0
Yyhyb290KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNzb3I8dHlw
ZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRlclN1cmZhY2VUeXBl
PiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAgICAgIFRlc3RDQ09j
Y2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2NjbHVzaW9uVHJhY2tl
clR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Npc3NvclJlY3QoSW50
UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKICAgICAgICAgdGhpcy0+dmlzaXRMYXllcihvY2Ns
dWRpbmdMYXllckFib3ZlLCBvY2NsdXNpb24pOwpAQCAtMjc4Myw3ICsyNzgyLDcgQEAgcHJvdGVj
dGVkOgogCiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAgVGVz
dENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUs
IHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwg
MCwgMTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNjaXNz
b3I8dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBlczo6
TGF5ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAg
IG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkp
OwogCiAgICAgICAgIC8vIFRoZXNlIGxheWVycyBvY2NsdWRlIHBpeGVscyBkaXJlY3RseSBiZXNp
ZGUgdGhlIGZpbHRlcmVkU3VyZmFjZS4gQmVjYXVzZSBmaWx0ZXJlZCBzdXJmYWNlIGJsZW5kcyBw
aXhlbHMgaW4gYSByYWRpdXMsIGl0IHdpbGwKQEAgLTI5MDIsNyArMjkwMSw3IEBAIHByb3RlY3Rl
ZDoKIAogICAgICAgICB0aGlzLT5jYWxjRHJhd0V0YyhwYXJlbnQpOwogCi0gICAgICAgIFRlc3RD
Q09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6TGF5ZXJUeXBlLCB0
eXBlbmFtZSBUeXBlczo6UmVuZGVyU3VyZmFjZVR5cGU+IG9jY2x1c2lvbihJbnRSZWN0KDAsIDAs
IDEwMDAsIDEwMDApKTsKKyAgICAgICAgVGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29y
PHR5cGVuYW1lIFR5cGVzOjpPY2NsdXNpb25UcmFja2VyVHlwZSwgdHlwZW5hbWUgVHlwZXM6Okxh
eWVyVHlwZT4gb2NjbHVzaW9uKEludFJlY3QoMCwgMCwgMTAwMCwgMTAwMCkpOwogICAgICAgICBv
Y2NsdXNpb24uc2V0TGF5ZXJTY2lzc29yUmVjdChJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsK
IAogICAgICAgICAvLyBUaGUgc3VyZmFjZSBoYXMgYSBiYWNrZ3JvdW5kIGJsdXIsIHNvIGl0IGJs
dXJzIG5vbi1vcGFxdWUgcGl4ZWxzIGJlbG93IGl0LgpAQCAtMjk1MSw3ICsyOTUwLDcgQEAgcHJv
dGVjdGVkOgogCiAgICAgICAgIHRoaXMtPmNhbGNEcmF3RXRjKHBhcmVudCk7CiAKLSAgICAgICAg
VGVzdENDT2NjbHVzaW9uVHJhY2tlcldpdGhTY2lzc29yPHR5cGVuYW1lIFR5cGVzOjpMYXllclR5
cGUsIHR5cGVuYW1lIFR5cGVzOjpSZW5kZXJTdXJmYWNlVHlwZT4gb2NjbHVzaW9uKEludFJlY3Qo
MCwgMCwgMTAwMCwgMTAwMCkpOworICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0aFNj
aXNzb3I8dHlwZW5hbWUgVHlwZXM6Ok9jY2x1c2lvblRyYWNrZXJUeXBlLCB0eXBlbmFtZSBUeXBl
czo6TGF5ZXJUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAg
ICAgIG9jY2x1c2lvbi5zZXRMYXllclNjaXNzb3JSZWN0KEludFJlY3QoMCwgMCwgMTAwMCwgMTAw
MCkpOwogCiAgICAgICAgIHRoaXMtPnZpc2l0TGF5ZXIoYWJvdmVSZXBsaWNhTGF5ZXIsIG9jY2x1
c2lvbik7CkBAIC0zMDA1LDcgKzMwMDQsNyBAQCBwcm90ZWN0ZWQ6CiAKICAgICAgICAgdGhpcy0+
Y2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2VyV2l0
aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJlbmRl
clN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CisgICAg
ICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6T2Nj
bHVzaW9uVHJhY2tlclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lvbihJ
bnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVyU2Np
c3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAKICAgICAgICAgdGhpcy0+dmlz
aXRMYXllcihiZXNpZGVSZXBsaWNhTGF5ZXIsIG9jY2x1c2lvbik7CkBAIC0zMDYwLDcgKzMwNTks
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGUqIHNtYWxs
ID0gdGhpcy0+Y3JlYXRlRHJhd2luZ0xheWVyKHBhcmVudCwgdGhpcy0+aWRlbnRpdHlNYXRyaXgs
IEZsb2F0UG9pbnQoMCwgMCksIGJlbG93VHJhY2tpbmdTaXplLCB0cnVlKTsKICAgICAgICAgdGhp
cy0+Y2FsY0RyYXdFdGMocGFyZW50KTsKIAotICAgICAgICBUZXN0Q0NPY2NsdXNpb25UcmFja2Vy
V2l0aFNjaXNzb3I8dHlwZW5hbWUgVHlwZXM6OkxheWVyVHlwZSwgdHlwZW5hbWUgVHlwZXM6OlJl
bmRlclN1cmZhY2VUeXBlPiBvY2NsdXNpb24oSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7Cisg
ICAgICAgIFRlc3RDQ09jY2x1c2lvblRyYWNrZXJXaXRoU2Npc3Nvcjx0eXBlbmFtZSBUeXBlczo6
T2NjbHVzaW9uVHJhY2tlclR5cGUsIHR5cGVuYW1lIFR5cGVzOjpMYXllclR5cGU+IG9jY2x1c2lv
bihJbnRSZWN0KDAsIDAsIDEwMDAsIDEwMDApKTsKICAgICAgICAgb2NjbHVzaW9uLnNldExheWVy
U2Npc3NvclJlY3QoSW50UmVjdCgwLCAwLCAxMDAwLCAxMDAwKSk7CiAgICAgICAgIG9jY2x1c2lv
bi5zZXRNaW5pbXVtVHJhY2tpbmdTaXplKHRyYWNraW5nU2l6ZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NPY2NsdXNpb25UcmFja2VyVGVzdENvbW1vbi5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNrZXJUZXN0Q29t
bW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjZGMzZWQ2YzhhYzcxNWQ5ODgz
MzNiMTc1NzkyNTZhZjQ1YmQ4Y2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ09jY2x1c2lvblRyYWNr
ZXJUZXN0Q29tbW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29w
eXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiAgUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQK
LSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TgotICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCi0gKiBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jaWZuZGVmIENDT2NjbHVzaW9uVHJhY2tlclRlc3RDb21tb25faAotI2RlZmluZSBDQ09j
Y2x1c2lvblRyYWNrZXJUZXN0Q29tbW9uX2gKLQotI2luY2x1ZGUgIkludFJlY3QuaCIKLSNpbmNs
dWRlICJSZWdpb24uaCIKLSNpbmNsdWRlICJSZW5kZXJTdXJmYWNlQ2hyb21pdW0uaCIKLSNpbmNs
dWRlICJjYy9DQ09jY2x1c2lvblRyYWNrZXIuaCIKLSNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZh
Y2UuaCIKLQotbmFtZXNwYWNlIFdlYktpdFRlc3RzIHsKLQotLy8gQSBzdWJjbGFzcyB0byBleHBv
c2UgdGhlIHRvdGFsIGN1cnJlbnQgb2NjbHVzaW9uLgotdGVtcGxhdGU8dHlwZW5hbWUgTGF5ZXJU
eXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KLWNsYXNzIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXJCYXNlIDogcHVibGljIFdlYkNvcmU6OkNDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJU
eXBlLCBSZW5kZXJTdXJmYWNlVHlwZT4gewotcHVibGljOgotICAgIFRlc3RDQ09jY2x1c2lvblRy
YWNrZXJCYXNlKFdlYkNvcmU6OkludFJlY3Qgc2NyZWVuU2Npc3NvclJlY3QsIGJvb2wgcmVjb3Jk
TWV0cmljc0ZvckZyYW1lID0gZmFsc2UpCi0gICAgICAgIDogV2ViQ29yZTo6Q0NPY2NsdXNpb25U
cmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPihzY3JlZW5TY2lzc29yUmVj
dCwgcmVjb3JkTWV0cmljc0ZvckZyYW1lKQotICAgIHsKLSAgICB9Ci0KLSAgICBXZWJDb3JlOjpS
ZWdpb24gb2NjbHVzaW9uSW5TY3JlZW5TcGFjZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkND
T2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1fc3Rh
Y2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuOyB9Ci0gICAgV2ViQ29yZTo6UmVnaW9uIG9jY2x1
c2lvbkluVGFyZ2V0U3VyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OkNDT2NjbHVzaW9u
VHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46Om1fc3RhY2subGFzdCgp
Lm9jY2x1c2lvbkluVGFyZ2V0OyB9Ci0KLSAgICB2b2lkIHNldE9jY2x1c2lvbkluU2NyZWVuU3Bh
Y2UoY29uc3QgV2ViQ29yZTo6UmVnaW9uJiByZWdpb24pIHsgV2ViQ29yZTo6Q0NPY2NsdXNpb25U
cmFja2VyQmFzZTxMYXllclR5cGUsIFJlbmRlclN1cmZhY2VUeXBlPjo6bV9zdGFjay5sYXN0KCku
b2NjbHVzaW9uSW5TY3JlZW4gPSByZWdpb247IH0KLSAgICB2b2lkIHNldE9jY2x1c2lvbkluVGFy
Z2V0U3VyZmFjZShjb25zdCBXZWJDb3JlOjpSZWdpb24mIHJlZ2lvbikgeyBXZWJDb3JlOjpDQ09j
Y2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjptX3N0YWNr
Lmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCA9IHJlZ2lvbjsgfQotfTsKLQotdHlwZWRlZiBUZXN0
Q0NPY2NsdXNpb25UcmFja2VyQmFzZTxXZWJDb3JlOjpMYXllckNocm9taXVtLCBXZWJDb3JlOjpS
ZW5kZXJTdXJmYWNlQ2hyb21pdW0+IFRlc3RDQ09jY2x1c2lvblRyYWNrZXI7Ci10eXBlZGVmIFRl
c3RDQ09jY2x1c2lvblRyYWNrZXJCYXNlPFdlYkNvcmU6OkNDTGF5ZXJJbXBsLCBXZWJDb3JlOjpD
Q1JlbmRlclN1cmZhY2U+IFRlc3RDQ09jY2x1c2lvblRyYWNrZXJJbXBsOwotCi19Ci0KLSNlbmRp
ZiAvLyBDQ09jY2x1c2lvblRyYWNrZXJUZXN0Q29tbW9uX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NUaHJlYWRlZFRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVkVGVzdC5jcHAKaW5kZXggNDBkM2NlNWU2ZmY5NDNiY2Qw
ZTk0ZTc1YWIzMGJlNmM4MDZlZGQxOS4uNjBlM2Y1YmVlZThmOWNjMTNjNWI2ZTgwODRmYTBmYmM1
ZmNjNTBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVh
ZGVkVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ1RocmVhZGVk
VGVzdC5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFuaW1hdGlvbklkVmVuZG9y
LmgiCiAjaW5jbHVkZSAiQ0NBbmltYXRpb25UZXN0Q29tbW9uLmgiCi0jaW5jbHVkZSAiQ0NPY2Ns
dXNpb25UcmFja2VyVGVzdENvbW1vbi5oIgogI2luY2x1ZGUgIkNDVGlsZWRMYXllclRlc3RDb21t
b24uaCIKICNpbmNsdWRlICJDb250ZW50TGF5ZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIkZha2VX
ZWJHcmFwaGljc0NvbnRleHQzRC5oIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149653</attachid>
            <date>2012-06-26 18:07:42 -0700</date>
            <delta_ts>2012-06-26 18:10:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90012-20120626210742.patch</filename>
            <type>text/plain</type>
            <size>19412</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBiNTBhZjA5YTc2MGZj
OWI3YzNlNTZmYzA0NGUzMTBkZmU5YWEzZC4uZjYyMTY0ZDgxMjhmZDJkZjE5NGFhZmI1YTViZDZi
ODQyNjk3OTBjOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA2LTI2ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxs
b3cgc2NyZWVuIHNwYWNlIHJlY3RzIGFuZCBvY2NsdWRpbmcgcmVjdHMgdG8gYmUgdmlzdWFsaXpl
ZCBmb3IgZGVidWdnaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTAwMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMuIE5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZVNjcmVlblNwYWNl
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVj
dEhpc3Rvcnk6OnNhdmVPY2NsdWRpbmdSZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKENDRGVidWdSZWN0SGlzdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0hlYWRzVXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hl
YWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6
OmRyYXdEZWJ1Z1JlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlU2V0dGlu
Z3M6OkNDTGF5ZXJUcmVlU2V0dGluZ3MpOgorICAgICAgICAoQ0NMYXllclRyZWVTZXR0aW5ncyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxh
dGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6
ZHJhd0xheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoRnJhbWVEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZE9jY2x1c2lvbkJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5oOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlOjpzZXRPY2NsdWRpbmdT
Y3JlZW5TcGFjZVJlY3RzQ29udGFpbmVyKToKKwogMjAxMi0wNi0yNiAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4bWFwXSBCdWcgZml4IHR5
cG8gYWJvdXQgY29tcHV0aW5nIGJ5dGVzUGVyTGluZSBpbiBCaXRtYXBUZXh0dXJlR0wuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rl
YnVnUmVjdEhpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcAppbmRleCAxN2Q1OTQ2ZWMyZWNjZGViYWNi
YWYwMzQ4ZmY4MTA2MmY5ODdhNDUyLi5jNjEzMjE3OGUxNjM5MzM1ZDAxNGM4NmRlYjg2NmE2M2I1
YmQ3Njc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKQEAgLTQwLDEw
ICs0MCwxMCBAQCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OkNDRGVidWdSZWN0SGlzdG9yeSgpCiAKIGJv
b2wgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjplbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzKQogewotICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyB8fCBzZXR0
aW5ncy5zaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1N1cmZhY2VEYW1h
Z2VSZWN0czsKKyAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0dGluZ3Mu
c2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFtYWdlUmVj
dHMgfHwgc2V0dGluZ3Muc2hvd1NjcmVlblNwYWNlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1JlcGxp
Y2FTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dPY2NsdWRpbmdSZWN0czsKIH0KIAot
dm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKEND
TGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKK3Zv
aWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xh
eWVySW1wbCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdWRpbmdTY3JlZW5TcGFj
ZVJlY3RzLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICAvLyBG
b3Igbm93LCBjbGVhciBhbGwgcmVjdHMgZnJvbSBwcmV2aW91cyBmcmFtZXMuIEluIHRoZSBmdXR1
cmUgd2UgbWF5IHdhbnQgdG8gc3RvcmUKICAgICAvLyBhbGwgZGVidWcgcmVjdHMgZm9yIGEgaGlz
dG9yeSBvZiBtYW55IGZyYW1lcy4KQEAgLTU3LDYgKzU3LDEyIEBAIHZvaWQgQ0NEZWJ1Z1JlY3RI
aXN0b3J5OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExh
eWVyLCBjCiAKICAgICBpZiAoc2V0dGluZ3Muc2hvd1N1cmZhY2VEYW1hZ2VSZWN0cykKICAgICAg
ICAgc2F2ZVN1cmZhY2VEYW1hZ2VSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKworICAg
IGlmIChzZXR0aW5ncy5zaG93U2NyZWVuU3BhY2VSZWN0cykKKyAgICAgICAgc2F2ZVNjcmVlblNw
YWNlUmVjdHMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisKKyAgICBpZiAoc2V0dGluZ3Muc2hv
d09jY2x1ZGluZ1JlY3RzKQorICAgICAgICBzYXZlT2NjbHVkaW5nUmVjdHMob2NjbHVkaW5nU2Ny
ZWVuU3BhY2VSZWN0cyk7CiB9CiAKIApAQCAtMTA0LDYgKzExMCwyNiBAQCB2b2lkIENDRGVidWdS
ZWN0SGlzdG9yeTo6c2F2ZVN1cmZhY2VEYW1hZ2VSZWN0cyhjb25zdCBWZWN0b3I8Q0NMYXllcklt
cGwqID4mIHJlbgogICAgIH0KIH0KIAordm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVTY3Jl
ZW5TcGFjZVJlY3RzKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCogPiYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCkKK3sKKyAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsK
KyAgICAgICAgQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VM
YXllckxpc3Rbc3VyZmFjZUluZGV4XTsKKyAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJT
dXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIEFT
U0VSVChyZW5kZXJTdXJmYWNlKTsKKworICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVi
dWdSZWN0KFNjcmVlblNwYWNlUmVjdFR5cGUsIENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHJl
bmRlclN1cmZhY2UtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIHJlbmRlclN1cmZhY2UtPmNvbnRl
bnRSZWN0KCkpKSk7CisKKyAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxh
eWVyKCkpCisgICAgICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KFJlcGxp
Y2FTY3JlZW5TcGFjZVJlY3RUeXBlLCBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChyZW5kZXJT
dXJmYWNlLT5yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgcmVuZGVyU3VyZmFjZS0+Y29u
dGVudFJlY3QoKSkpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZl
T2NjbHVkaW5nUmVjdHMoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdWRpbmdSZWN0cykKK3sK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9jY2x1ZGluZ1JlY3RzLnNpemUoKTsgKytpKQor
ICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KE9jY2x1ZGluZ1JlY3RUeXBl
LCBvY2NsdWRpbmdSZWN0c1tpXSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rvcnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdS
ZWN0SGlzdG9yeS5oCmluZGV4IGJiM2NkYjc5ZDU3MTg0N2IyNzZlOTdjODBmZDY4YzFhYzJjNDhk
NmEuLjdmZDAwYzNmNjI2MjExYmQ1MjNjZmFjNGM5ZDNkZTM2MmMwZDg5ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0
SGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzcsNyArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0xheWVySW1wbDsKIHN0cnVjdCBDQ0xheWVyVHJl
ZVNldHRpbmdzOwogCi0vLyBUaGVyZSBhcmUgY3VycmVudGx5IHRocmVlIHR5cGVzIG9mIGRlYnVn
IHJlY3RzOgorLy8gVGhlcmUgYXJlIGN1cnJlbnRseSBzaXggdHlwZXMgb2YgZGVidWcgcmVjdHM6
CiAvLwogLy8gLSBQYWludCByZWN0cyAodXBkYXRlIHJlY3RzKTogcmVnaW9ucyBvZiBhIGxheWVy
IHRoYXQgbmVlZGVkIHRvIGJlIHJlLXVwbG9hZGVkIHRvIHRoZQogLy8gICB0ZXh0dXJlIHJlc291
cmNlOyBpbiBtb3N0IGNhc2VzIGltcGx5aW5nIHRoYXQgV2ViQ29yZSBoYWQgdG8gcmVwYWludCB0
aGVtLCB0b28uCkBAIC01MCw3ICs1MSwxMyBAQCBzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsK
IC8vICAgbGF5ZXJzIGFuZCBzdXJmYWNlcyB0aGF0IGNvbnRyaWJ1dGUgdG8gaXQuIFRoaXMgaW5j
bHVkZXMgKDEpIHBhaW50IHJlY3RzLCAoMikgcHJvcGVydHktCiAvLyAgIGNoYW5nZWQgcmVjdHMs
IGFuZCAoMykgbmV3bHkgZXhwb3NlZCBhcmVhcy4KIC8vCi1lbnVtIERlYnVnUmVjdFR5cGUgeyBQ
YWludFJlY3RUeXBlLCBQcm9wZXJ0eUNoYW5nZWRSZWN0VHlwZSwgU3VyZmFjZURhbWFnZVJlY3RU
eXBlIH07CisvLyAtIFNjcmVlbiBzcGFjZSByZWN0czogdGhpcyBpcyB0aGUgcmVnaW9uIHRoZSBj
b250ZW50cyBvY2N1cHkgaW4gc2NyZWVuIHNwYWNlLgorLy8KKy8vIC0gUmVwbGljYSBzY3JlZW4g
c3BhY2UgcmVjdHM6IHRoaXMgaXMgdGhlIHJlZ2lvbiB0aGUgcmVwbGljYSdzIGNvbnRlbnRzIG9j
Y3VweSBpbiBzY3JlZW4gc3BhY2UuCisvLworLy8gLSBPY2NsdWRpbmcgcmVjdHM6IHRoZXNlIGFy
ZSB0aGUgcmVnaW9ucyB0aGF0IGNvbnRyaWJ1dGUgdG8gdGhlIG9jY2x1ZGVkIHJlZ2lvbi4KKy8v
CitlbnVtIERlYnVnUmVjdFR5cGUgeyBQYWludFJlY3RUeXBlLCBQcm9wZXJ0eUNoYW5nZWRSZWN0
VHlwZSwgU3VyZmFjZURhbWFnZVJlY3RUeXBlLCBTY3JlZW5TcGFjZVJlY3RUeXBlLCBSZXBsaWNh
U2NyZWVuU3BhY2VSZWN0VHlwZSwgT2NjbHVkaW5nUmVjdFR5cGUgfTsKIAogc3RydWN0IENDRGVi
dWdSZWN0IHsKICAgICBDQ0RlYnVnUmVjdChEZWJ1Z1JlY3RUeXBlIG5ld1R5cGUsIEZsb2F0UmVj
dCBuZXdSZWN0KQpAQCAtNzUsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmFibGVkKGNv
bnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKIAogICAgIC8vIE5vdGU6IFNhdmluZyBkZWJ1ZyBy
ZWN0cyBtdXN0IGhhcHBlbiBiZWZvcmUgbGF5ZXJzJyBjaGFuZ2UgdHJhY2tpbmcgaXMgcmVzZXQu
Ci0gICAgdm9pZCBzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9v
dExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOworICAgIHZvaWQgc2F2ZURlYnVnUmVjdHNG
b3JDdXJyZW50RnJhbWUoQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5
ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYg
b2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cywgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwog
CiAgICAgY29uc3QgVmVjdG9yPENDRGVidWdSZWN0PiYgZGVidWdSZWN0cygpIHsgcmV0dXJuIG1f
ZGVidWdSZWN0czsgfQogCkBAIC04NSw2ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzYXZl
UGFpbnRSZWN0cyhDQ0xheWVySW1wbCopOwogICAgIHZvaWQgc2F2ZVByb3BlcnR5Q2hhbmdlZFJl
Y3RzKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
ICAgICB2b2lkIHNhdmVTdXJmYWNlRGFtYWdlUmVjdHMoY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBs
KiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICB2b2lkIHNhdmVTY3JlZW5TcGFjZVJl
Y3RzKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCogPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
CisgICAgdm9pZCBzYXZlT2NjbHVkaW5nUmVjdHMoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2Ns
dWRpbmdTY3JlZW5TcGFjZVJlY3RzKTsKIAogICAgIFZlY3RvcjxDQ0RlYnVnUmVjdD4gbV9kZWJ1
Z1JlY3RzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggZjNkNDE1
ZGNmZDM1YjY4M2Q3ZDMxNjBlYWIyODk5NjNiY2EyMTU3NC4uMjRkNDBiZmI0ZTVhM2I2NGExOGNk
ZDNjZGRiZGJkMDYzY2RiMmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93UGxhdGZvcm1MYXll
clRyZWUoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MKIAogYm9vbCBDQ0hlYWRz
VXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0
aW5ncykgY29uc3QKIHsKLSAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0
dGluZ3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFt
YWdlUmVjdHM7CisgICAgcmV0dXJuIHNldHRpbmdzLnNob3dQYWludFJlY3RzIHx8IHNldHRpbmdz
LnNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyB8fCBzZXR0aW5ncy5zaG93U3VyZmFjZURhbWFnZVJl
Y3RzIHx8IHNldHRpbmdzLnNob3dTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dSZXBs
aWNhU2NyZWVuU3BhY2VSZWN0cyB8fCBzZXR0aW5ncy5zaG93T2NjbHVkaW5nUmVjdHM7CiB9CiAK
IHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRy
ZWVIb3N0SW1wbCkKQEAgLTgxLDggKzgxLDggQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgIC8vIFVzZSBhIGZ1
bGxzY3JlZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5lZWQgdG8uLi4KICAgICBJbnRTaXplIGh1ZFNp
emU7CiAgICAgaWYgKHNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0aW5ncykgfHwgc2hvd0RlYnVn
UmVjdHMoc2V0dGluZ3MpKSB7Ci0gICAgICAgIGh1ZFNpemUuc2V0V2lkdGgobWluKDIwNDgsIGxh
eWVyVHJlZUhvc3RJbXBsLT52aWV3cG9ydFNpemUoKS53aWR0aCgpKSk7Ci0gICAgICAgIGh1ZFNp
emUuc2V0SGVpZ2h0KG1pbigyMDQ4LCBsYXllclRyZWVIb3N0SW1wbC0+dmlld3BvcnRTaXplKCku
aGVpZ2h0KCkpKTsKKyAgICAgICAgaHVkU2l6ZS5zZXRXaWR0aChtaW4oMjA0OCwgbGF5ZXJUcmVl
SG9zdEltcGwtPmRldmljZVZpZXdwb3J0U2l6ZSgpLndpZHRoKCkpKTsKKyAgICAgICAgaHVkU2l6
ZS5zZXRIZWlnaHQobWluKDIwNDgsIGxheWVyVHJlZUhvc3RJbXBsLT5kZXZpY2VWaWV3cG9ydFNp
emUoKS5oZWlnaHQoKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGh1ZFNpemUuc2V0V2lkdGgo
NTEyKTsKICAgICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQoMTI4KTsKQEAgLTI0NCw2ICsyNDQsMjcg
QEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIENDRGVidWdSZWN0SGlzdG8KICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMjAwLCAxMDAsIDAsIDMwKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0u
cmVjdCwgMi4wKTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUg
PT0gUmVwbGljYVNjcmVlblNwYWNlUmVjdFR5cGUpIHsKKyAgICAgICAgICAgIC8vIFNjcmVlbiBz
cGFjZSByZWN0cyBpbiBncmVlbi4KKyAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KENvbG9yKDEwMCwgMjAwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAyMDAs
IDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5zdHJv
a2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gU2NyZWVuU3BhY2VSZWN0VHlwZSkgeworICAgICAgICAg
ICAgLy8gU2NyZWVuIHNwYWNlIHJlY3RzIGluIHB1cnBsZS4KKyAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwgMCwgMjAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwg
Q29sb3IoMTAwLCAwLCAyMDAsIDEwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAg
ICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gT2NjbHVkaW5nUmVjdFR5cGUp
IHsKKyAgICAgICAgICAgIC8vIE9jY2x1ZGluZyByZWN0cyBpbiBhIHJlZGRpc2ggY29sb3IuCisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyMDAsIDAsIDEwMCwgMjU1
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChk
ZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDIwMCwgMCwgMTAwLCAxMCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJl
Y3QsIDIuMCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKaW5kZXggMWY0ZDNjOTY3MjI4NTUwZmY2NjA5ZDYxMWY4N2VlYjZkYWQwOWYwMS4uM2QxODQ4
NDU2NmMyZTU3ZjgzMGE0MGQxMjNiNTVmMzc1YzJjM2E2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKQEAgLTg0LDYgKzg0LDkgQEAgc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mgewog
ICAgICAgICAgICAgLCBzaG93UGFpbnRSZWN0cyhmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1By
b3BlcnR5Q2hhbmdlZFJlY3RzKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93U3VyZmFjZURhbWFn
ZVJlY3RzKGZhbHNlKQorICAgICAgICAgICAgLCBzaG93U2NyZWVuU3BhY2VSZWN0cyhmYWxzZSkK
KyAgICAgICAgICAgICwgc2hvd1JlcGxpY2FTY3JlZW5TcGFjZVJlY3RzKGZhbHNlKQorICAgICAg
ICAgICAgLCBzaG93T2NjbHVkaW5nUmVjdHModHJ1ZSkKICAgICAgICAgICAgICwgcmVmcmVzaFJh
dGUoMCkKICAgICAgICAgICAgICwgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzKHN0ZDo6bnVtZXJp
Y19saW1pdHM8c2l6ZV90Pjo6bWF4KCkpCiAgICAgICAgICAgICAsIGRlZmF1bHRUaWxlU2l6ZShJ
bnRTaXplKDI1NiwgMjU2KSkKQEAgLTk3LDYgKzEwMCw5IEBAIHN0cnVjdCBDQ0xheWVyVHJlZVNl
dHRpbmdzIHsKICAgICBib29sIHNob3dQYWludFJlY3RzOwogICAgIGJvb2wgc2hvd1Byb3BlcnR5
Q2hhbmdlZFJlY3RzOwogICAgIGJvb2wgc2hvd1N1cmZhY2VEYW1hZ2VSZWN0czsKKyAgICBib29s
IHNob3dTY3JlZW5TcGFjZVJlY3RzOworICAgIGJvb2wgc2hvd1JlcGxpY2FTY3JlZW5TcGFjZVJl
Y3RzOworICAgIGJvb2wgc2hvd09jY2x1ZGluZ1JlY3RzOwogICAgIGRvdWJsZSByZWZyZXNoUmF0
ZTsKICAgICBzaXplX3QgbWF4UGFydGlhbFRleHR1cmVVcGRhdGVzOwogICAgIEludFNpemUgZGVm
YXVsdFRpbGVTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRl
eCAzMDExYjVlY2M2NjMwNmNjZDYwZDk5MjE0MWQxZjg0ZmVmN2VlOWRkLi5kZGJhYmMzNmJkNmYy
YjQxZDAwYzg1ZjRmZWY1MGMwZDNmYTE3ZGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmNwcApAQCAtMjk0LDYgKzI5NCw5IEBAIGJvb2wgQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKEZyYW1lRGF0YSYgZnJhbWUpCiAgICAgQ0NPY2NsdXNp
b25UcmFja2VySW1wbCBvY2NsdXNpb25UcmFja2VyKGVuY2xvc2luZ0ludFJlY3QobV9yb290U2Np
c3NvclJlY3QpLCByZWNvcmRNZXRyaWNzRm9yRnJhbWUpOwogICAgIG9jY2x1c2lvblRyYWNrZXIu
c2V0TWluaW11bVRyYWNraW5nU2l6ZShDQ09jY2x1c2lvblRyYWNrZXJJbXBsOjpwcmVmZXJyZWRN
aW5pbXVtVHJhY2tpbmdTaXplKCkpOwogCisgICAgaWYgKHNldHRpbmdzKCkuc2hvd09jY2x1ZGlu
Z1JlY3RzKQorICAgICAgICBvY2NsdXNpb25UcmFja2VyLnNldE9jY2x1ZGluZ1NjcmVlblNwYWNl
UmVjdHNDb250YWluZXIoJmZyYW1lLm9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMpOworCiAgICAg
Ly8gQWRkIHF1YWRzIHRvIHRoZSBSZW5kZXIgcGFzc2VzIGluIEZyb250VG9CYWNrIG9yZGVyIHRv
IGFsbG93IGZvciB0ZXN0aW5nIG9jY2x1c2lvbiBhbmQgcGVyZm9ybWluZyBjdWxsaW5nIGR1cmlu
ZyB0aGUgdHJlZSB3YWxrLgogICAgIHR5cGVkZWYgQ0NMYXllckl0ZXJhdG9yPENDTGF5ZXJJbXBs
LCBWZWN0b3I8Q0NMYXllckltcGwqPiwgQ0NSZW5kZXJTdXJmYWNlLCBDQ0xheWVySXRlcmF0b3JB
Y3Rpb25zOjpGcm9udFRvQmFjaz4gQ0NMYXllckl0ZXJhdG9yVHlwZTsKIApAQCAtNTEyLDcgKzUx
NSw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6ZHJhd0xheWVycyhjb25zdCBGcmFtZURh
dGEmIGZyYW1lKQogICAgIH0KIAogICAgIGlmIChtX2RlYnVnUmVjdEhpc3RvcnktPmVuYWJsZWQo
c2V0dGluZ3MoKSkpCi0gICAgICAgIG1fZGVidWdSZWN0SGlzdG9yeS0+c2F2ZURlYnVnUmVjdHNG
b3JDdXJyZW50RnJhbWUobV9yb290TGF5ZXJJbXBsLmdldCgpLCAqZnJhbWUucmVuZGVyU3VyZmFj
ZUxheWVyTGlzdCwgc2V0dGluZ3MoKSk7CisgICAgICAgIG1fZGVidWdSZWN0SGlzdG9yeS0+c2F2
ZURlYnVnUmVjdHNGb3JDdXJyZW50RnJhbWUobV9yb290TGF5ZXJJbXBsLmdldCgpLCAqZnJhbWUu
cmVuZGVyU3VyZmFjZUxheWVyTGlzdCwgZnJhbWUub2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cywg
c2V0dGluZ3MoKSk7CiAKICAgICBpZiAobV9oZWFkc1VwRGlzcGxheS0+ZW5hYmxlZChzZXR0aW5n
cygpKSkKICAgICAgICAgbV9oZWFkc1VwRGlzcGxheS0+ZHJhdyh0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVl
SG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCA0ZTRmNmNjYjdlMmY2NTViNTJiMjI0MjAzZGRl
ODU5N2YwMGM2ZWQ1Li41NjlmYjRhZjQ3MmViYjQwYzEwN2VjMDk0Mjc4MWM3NWVjMWRmM2M0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9D
Q0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCkBAIC04Miw2ICs4Miw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2NoZWR1bGVBbmltYXRpb24oKTsKIAogICAgIHN0cnVj
dCBGcmFtZURhdGEgeworICAgICAgICBWZWN0b3I8SW50UmVjdD4gb2NjbHVkaW5nU2NyZWVuU3Bh
Y2VSZWN0czsKICAgICAgICAgQ0NSZW5kZXJQYXNzTGlzdCByZW5kZXJQYXNzZXM7CiAgICAgICAg
IENDUmVuZGVyUGFzc0xpc3Qgc2tpcHBlZFBhc3NlczsKICAgICAgICAgQ0NMYXllckxpc3QqIHJl
bmRlclN1cmZhY2VMYXllckxpc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cAppbmRleCA0ODM2ZWI1MjgwN2NlYWIwMDRlNDJiYzQzZDE5ODMzYjhkNmJlNDQyLi45MTdkYzg3
ZDBmZjVjMzViMTY2ZTRhZjQwMThlYWViY2EzZDY1MmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2Nj
bHVzaW9uVHJhY2tlci5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUgTGF5
ZXJUeXBlLCB0eXBlbmFtZSBSZW5kZXJTdXJmYWNlVHlwZT4KIENDT2NjbHVzaW9uVHJhY2tlckJh
c2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNlVHlwZT46OkNDT2NjbHVzaW9uVHJhY2tlckJhc2Uo
SW50UmVjdCBzY2lzc29yUmVjdEluU2NyZWVuU3BhY2UsIGJvb2wgcmVjb3JkTWV0cmljc0ZvckZy
YW1lKQogICAgIDogbV9zY2lzc29yUmVjdEluU2NyZWVuU3BhY2Uoc2Npc3NvclJlY3RJblNjcmVl
blNwYWNlKQogICAgICwgbV9vdmVyZHJhd01ldHJpY3MoQ0NPdmVyZHJhd01ldHJpY3M6OmNyZWF0
ZShyZWNvcmRNZXRyaWNzRm9yRnJhbWUpKQorICAgICwgbV9vY2NsdWRpbmdTY3JlZW5TcGFjZVJl
Y3RzKDApCiB7CiB9CiAKQEAgLTMwNyw3ICszMDgsNyBAQCBzdGF0aWMgaW5saW5lIFdlYlRyYW5z
Zm9ybWF0aW9uTWF0cml4IGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm0oY29uc3QgTGF5
ZQogCiAvLyBGSVhNRTogUmVtb3ZlIHVzZVBhaW50VHJhY2tpbmcgd2hlbiBwYWludCB0cmFja2lu
ZyBpcyBvbiBmb3IgcGFpbnQgY3VsbGluZy4KIHRlbXBsYXRlPHR5cGVuYW1lIExheWVyVHlwZT4K
LXN0YXRpYyBpbmxpbmUgdm9pZCBhZGRPY2NsdXNpb25CZWhpbmRMYXllcihSZWdpb24mIHJlZ2lv
biwgY29uc3QgTGF5ZXJUeXBlKiBsYXllciwgY29uc3QgV2ViVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgY29uc3QgUmVnaW9uJiBvcGFxdWVDb250ZW50cywgY29uc3QgSW50UmVjdCYg
c2Npc3NvclJlY3QsIGNvbnN0IEludFNpemUmIG1pbmltdW1UcmFja2luZ1NpemUpCitzdGF0aWMg
aW5saW5lIHZvaWQgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXIoUmVnaW9uJiByZWdpb24sIGNvbnN0
IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGNvbnN0IFJlZ2lvbiYgb3BhcXVlQ29udGVudHMsIGNvbnN0IEludFJlY3QmIHNjaXNzb3JS
ZWN0LCBjb25zdCBJbnRTaXplJiBtaW5pbXVtVHJhY2tpbmdTaXplLCBWZWN0b3I8SW50UmVjdD4q
IG9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMpCiB7CiAgICAgQVNTRVJUKGxheWVyLT52aXNpYmxl
TGF5ZXJSZWN0KCkuY29udGFpbnMob3BhcXVlQ29udGVudHMuYm91bmRzKCkpKTsKIApAQCAtMzIy
LDggKzMyMywxMSBAQCBzdGF0aWMgaW5saW5lIHZvaWQgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXIo
UmVnaW9uJiByZWdpb24sIGNvbnN0IExheWVyVHlwZSogbGF5ZQogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgY29udGVudFJlY3RzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIEludFJlY3QgdHJh
bnNmb3JtZWRSZWN0ID0gZW5jbG9zZWRJbnRSZWN0KHRyYW5zZm9ybS5tYXBSZWN0KEZsb2F0UmVj
dChjb250ZW50UmVjdHNbaV0pKSk7CiAgICAgICAgIHRyYW5zZm9ybWVkUmVjdC5pbnRlcnNlY3Qo
c2Npc3NvclJlY3QpOwotICAgICAgICBpZiAodHJhbnNmb3JtZWRSZWN0LndpZHRoKCkgPj0gbWlu
aW11bVRyYWNraW5nU2l6ZS53aWR0aCgpIHx8IHRyYW5zZm9ybWVkUmVjdC5oZWlnaHQoKSA+PSBt
aW5pbXVtVHJhY2tpbmdTaXplLmhlaWdodCgpKQorICAgICAgICBpZiAodHJhbnNmb3JtZWRSZWN0
LndpZHRoKCkgPj0gbWluaW11bVRyYWNraW5nU2l6ZS53aWR0aCgpIHx8IHRyYW5zZm9ybWVkUmVj
dC5oZWlnaHQoKSA+PSBtaW5pbXVtVHJhY2tpbmdTaXplLmhlaWdodCgpKSB7CisgICAgICAgICAg
ICBpZiAob2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cykKKyAgICAgICAgICAgICAgICBvY2NsdWRp
bmdTY3JlZW5TcGFjZVJlY3RzLT5hcHBlbmQodHJhbnNmb3JtZWRSZWN0KTsKICAgICAgICAgICAg
IHJlZ2lvbi51bml0ZSh0cmFuc2Zvcm1lZFJlY3QpOworICAgICAgICB9CiAgICAgfQogfQogCkBA
IC0zNDcsNyArMzUxLDcgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwg
UmVuZGVyU3VyZmFjZVR5cGU+OjptYXJrT2NjbHVkZWRCZWhpbmRMYXkKIAogICAgIEludFJlY3Qg
c2Npc3NvckluVGFyZ2V0ID0gbGF5ZXJTY2lzc29yUmVjdEluVGFyZ2V0U3VyZmFjZShsYXllcik7
CiAgICAgaWYgKGxheWVyVHJhbnNmb3Jtc1RvVGFyZ2V0S25vd24obGF5ZXIpKQotICAgICAgICBh
ZGRPY2NsdXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KG1fc3RhY2subGFzdCgpLm9jY2x1c2lv
bkluVGFyZ2V0LCBsYXllciwgY29udGVudFRvVGFyZ2V0U3VyZmFjZVRyYW5zZm9ybTxMYXllclR5
cGU+KGxheWVyKSwgb3BhcXVlQ29udGVudHMsIHNjaXNzb3JJblRhcmdldCwgbV9taW5pbXVtVHJh
Y2tpbmdTaXplKTsKKyAgICAgICAgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPiht
X3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblRhcmdldCwgbGF5ZXIsIGNvbnRlbnRUb1RhcmdldFN1
cmZhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG9wYXF1ZUNvbnRlbnRzLCBzY2lzc29y
SW5UYXJnZXQsIG1fbWluaW11bVRyYWNraW5nU2l6ZSwgMCk7CiAKICAgICAvLyBXZSBtdXN0IGNs
aXAgdGhlIG9jY2x1c2lvbiB3aXRoaW4gdGhlIGxheWVyJ3Mgc2Npc3NvckluVGFyZ2V0IHdpdGhp
biBzY3JlZW4gc3BhY2UgYXMgd2VsbC4gSWYgdGhlIHNjaXNzb3IgcmVjdCBjYW4ndCBiZSBtb3Zl
ZCB0byBzY3JlZW4gc3BhY2UgYW5kCiAgICAgLy8gcmVtYWluIHJlY3RpbGluZWFyLCB0aGVuIHdl
IGRvbid0IGFkZCBhbnkgb2NjbHVzaW9uIGluIHNjcmVlbiBzcGFjZS4KQEAgLTM2MCw3ICszNjQs
NyBAQCB2b2lkIENDT2NjbHVzaW9uVHJhY2tlckJhc2U8TGF5ZXJUeXBlLCBSZW5kZXJTdXJmYWNl
VHlwZT46Om1hcmtPY2NsdWRlZEJlaGluZExheQogICAgICAgICBpZiAoY2xpcHBlZCB8fCAhc2Np
c3NvckluU2NyZWVuUXVhZC5pc1JlY3RpbGluZWFyKCkpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIEludFJlY3Qgc2Npc3NvckluU2NyZWVuUmVjdCA9IGludGVyc2VjdGlvbihtX3NjaXNz
b3JSZWN0SW5TY3JlZW5TcGFjZSwgZW5jbG9zZWRJbnRSZWN0KHNjaXNzb3JJblNjcmVlblF1YWQu
Ym91bmRpbmdCb3goKSkpOwotICAgICAgICBhZGRPY2NsdXNpb25CZWhpbmRMYXllcjxMYXllclR5
cGU+KG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2NyZWVuLCBsYXllciwgY29udGVudFRvU2Ny
ZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXllciksIG9wYXF1ZUNvbnRlbnRzLCBzY2lz
c29ySW5TY3JlZW5SZWN0LCBtX21pbmltdW1UcmFja2luZ1NpemUpOworICAgICAgICBhZGRPY2Ns
dXNpb25CZWhpbmRMYXllcjxMYXllclR5cGU+KG1fc3RhY2subGFzdCgpLm9jY2x1c2lvbkluU2Ny
ZWVuLCBsYXllciwgY29udGVudFRvU2NyZWVuU3BhY2VUcmFuc2Zvcm08TGF5ZXJUeXBlPihsYXll
ciksIG9wYXF1ZUNvbnRlbnRzLCBzY2lzc29ySW5TY3JlZW5SZWN0LCBtX21pbmltdW1UcmFja2lu
Z1NpemUsIG1fb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cyk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1
c2lvblRyYWNrZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCmluZGV4IDE5ZTUzMzUzNmM4OWFkMGMwM2ZmOGFhZWEy
NmQ0MGJlNDFjZDU4ZjguLjAyN2ZhYjcxZGI3YWI1MDRmYmVkN2Y1MWU1MGQ3ZWY1NmFiNTRmNmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5oCkBAIC03Miw2ICs3Miw5IEBAIHB1
YmxpYzoKIAogICAgIHN0YXRpYyBJbnRTaXplIHByZWZlcnJlZE1pbmltdW1UcmFja2luZ1NpemUo
KSB7IHJldHVybiBJbnRTaXplKDE2MCwgMTYwKTsgfQogCisgICAgLy8gVGhlIGZvbGxvd2luZyBp
cyB1c2VkIGZvciB2aXN1YWxpemF0aW9uIHB1cnBvc2VzLgorICAgIHZvaWQgc2V0T2NjbHVkaW5n
U2NyZWVuU3BhY2VSZWN0c0NvbnRhaW5lcihWZWN0b3I8SW50UmVjdD4qIHJlY3RzKSB7IG1fb2Nj
bHVkaW5nU2NyZWVuU3BhY2VSZWN0cyA9IHJlY3RzOyB9CisKIHByb3RlY3RlZDoKICAgICBzdHJ1
Y3QgU3RhY2tPYmplY3QgewogICAgICAgICBTdGFja09iamVjdCgpIDogc3VyZmFjZSgwKSB7IH0K
QEAgLTExMSw2ICsxMTQsOSBAQCBwcml2YXRlOgogICAgIEludFJlY3QgbV9zY2lzc29yUmVjdElu
U2NyZWVuU3BhY2U7CiAgICAgT3duUHRyPENDT3ZlcmRyYXdNZXRyaWNzPiBtX292ZXJkcmF3TWV0
cmljczsKICAgICBJbnRTaXplIG1fbWluaW11bVRyYWNraW5nU2l6ZTsKKworICAgIC8vIFRoaXMg
aXMgdXNlZCBmb3IgdmlzdWFsaXppbmcgdGhlIG9jY2x1c2lvbiB0cmFja2luZyBwcm9jZXNzLgor
ICAgIFZlY3RvcjxJbnRSZWN0PiogbV9vY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzOwogfTsKIAog
dHlwZWRlZiBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyQ2hyb21pdW0sIFJlbmRlclN1cmZh
Y2VDaHJvbWl1bT4gQ0NPY2NsdXNpb25UcmFja2VyOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>149655</attachid>
            <date>2012-06-26 18:10:34 -0700</date>
            <delta_ts>2012-06-27 13:31:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-90012-20120626211034.patch</filename>
            <type>text/plain</type>
            <size>19413</size>
            <attacher>vollick</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIxMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDBiNTBhZjA5YTc2MGZj
OWI3YzNlNTZmYzA0NGUzMTBkZmU5YWEzZC4uZjYyMTY0ZDgxMjhmZDJkZjE5NGFhZmI1YTViZDZi
ODQyNjk3OTBjOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQxIEBACisyMDEyLTA2LTI2ICBJYW4g
Vm9sbGljayAgPHZvbGxpY2tAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gQWxs
b3cgc2NyZWVuIHNwYWNlIHJlY3RzIGFuZCBvY2NsdWRpbmcgcmVjdHMgdG8gYmUgdmlzdWFsaXpl
ZCBmb3IgZGVidWdnaW5nLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTAwMTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMuIE5vIG5ldyBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0SGlzdG9yeTo6ZW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1l
KToKKyAgICAgICAgKFdlYkNvcmU6OkNDRGVidWdSZWN0SGlzdG9yeTo6c2F2ZVNjcmVlblNwYWNl
UmVjdHMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDQ0RlYnVnUmVj
dEhpc3Rvcnk6OnNhdmVPY2NsdWRpbmdSZWN0cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKENDRGVidWdSZWN0SGlzdG9yeSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
Q0hlYWRzVXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpDQ0hl
YWRzVXBEaXNwbGF5OjpkcmF3KToKKyAgICAgICAgKFdlYkNvcmU6OkNDSGVhZHNVcERpc3BsYXk6
OmRyYXdEZWJ1Z1JlY3RzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlU2V0dGlu
Z3M6OkNDTGF5ZXJUcmVlU2V0dGluZ3MpOgorICAgICAgICAoQ0NMYXllclRyZWVTZXR0aW5ncyk6
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxh
dGVSZW5kZXJQYXNzZXMpOgorICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6
ZHJhd0xheWVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NM
YXllclRyZWVIb3N0SW1wbC5oOgorICAgICAgICAoRnJhbWVEYXRhKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlKToKKyAgICAgICAgKFdlYkNvcmU6
OmFkZE9jY2x1c2lvbkJlaGluZExheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Ojo6bWFya09jY2x1
ZGVkQmVoaW5kTGF5ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2Nj
L0NDT2NjbHVzaW9uVHJhY2tlci5oOgorICAgICAgICAoQ0NPY2NsdXNpb25UcmFja2VyQmFzZSk6
CisgICAgICAgIChXZWJDb3JlOjpDQ09jY2x1c2lvblRyYWNrZXJCYXNlOjpzZXRPY2NsdWRpbmdT
Y3JlZW5TcGFjZVJlY3RzQ29udGFpbmVyKToKKwogMjAxMi0wNi0yNiAgSHVhbmcgRG9uZ3N1bmcg
IDxsdXh0ZWxsYUBjb21wYW55MTAwLm5ldD4KIAogICAgICAgICBbVGV4bWFwXSBCdWcgZml4IHR5
cG8gYWJvdXQgY29tcHV0aW5nIGJ5dGVzUGVyTGluZSBpbiBCaXRtYXBUZXh0dXJlR0wuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0Rl
YnVnUmVjdEhpc3RvcnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vY2MvQ0NEZWJ1Z1JlY3RIaXN0b3J5LmNwcAppbmRleCAxN2Q1OTQ2ZWMyZWNjZGViYWNi
YWYwMzQ4ZmY4MTA2MmY5ODdhNDUyLi5jNjEzMjE3OGUxNjM5MzM1ZDAxNGM4NmRlYjg2NmE2M2I1
YmQ3Njc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJv
bWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0SGlzdG9yeS5jcHAKQEAgLTQwLDEw
ICs0MCwxMCBAQCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OkNDRGVidWdSZWN0SGlzdG9yeSgpCiAKIGJv
b2wgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjplbmFibGVkKGNvbnN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mm
IHNldHRpbmdzKQogewotICAgIHJldHVybiBzZXR0aW5ncy5zaG93UGFpbnRSZWN0cyB8fCBzZXR0
aW5ncy5zaG93UHJvcGVydHlDaGFuZ2VkUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1N1cmZhY2VEYW1h
Z2VSZWN0czsKKyAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0dGluZ3Mu
c2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFtYWdlUmVj
dHMgfHwgc2V0dGluZ3Muc2hvd1NjcmVlblNwYWNlUmVjdHMgfHwgc2V0dGluZ3Muc2hvd1JlcGxp
Y2FTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dPY2NsdWRpbmdSZWN0czsKIH0KIAot
dm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKEND
TGF5ZXJJbXBsKiByb290TGF5ZXIsIGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJT
dXJmYWNlTGF5ZXJMaXN0LCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKK3Zv
aWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xh
eWVySW1wbCogcm9vdExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3Vy
ZmFjZUxheWVyTGlzdCwgY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdWRpbmdTY3JlZW5TcGFj
ZVJlY3RzLCBjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0aW5ncykKIHsKICAgICAvLyBG
b3Igbm93LCBjbGVhciBhbGwgcmVjdHMgZnJvbSBwcmV2aW91cyBmcmFtZXMuIEluIHRoZSBmdXR1
cmUgd2UgbWF5IHdhbnQgdG8gc3RvcmUKICAgICAvLyBhbGwgZGVidWcgcmVjdHMgZm9yIGEgaGlz
dG9yeSBvZiBtYW55IGZyYW1lcy4KQEAgLTU3LDYgKzU3LDEyIEBAIHZvaWQgQ0NEZWJ1Z1JlY3RI
aXN0b3J5OjpzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9vdExh
eWVyLCBjCiAKICAgICBpZiAoc2V0dGluZ3Muc2hvd1N1cmZhY2VEYW1hZ2VSZWN0cykKICAgICAg
ICAgc2F2ZVN1cmZhY2VEYW1hZ2VSZWN0cyhyZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKworICAg
IGlmIChzZXR0aW5ncy5zaG93U2NyZWVuU3BhY2VSZWN0cykKKyAgICAgICAgc2F2ZVNjcmVlblNw
YWNlUmVjdHMocmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7CisKKyAgICBpZiAoc2V0dGluZ3Muc2hv
d09jY2x1ZGluZ1JlY3RzKQorICAgICAgICBzYXZlT2NjbHVkaW5nUmVjdHMob2NjbHVkaW5nU2Ny
ZWVuU3BhY2VSZWN0cyk7CiB9CiAKIApAQCAtMTA0LDYgKzExMCwyNiBAQCB2b2lkIENDRGVidWdS
ZWN0SGlzdG9yeTo6c2F2ZVN1cmZhY2VEYW1hZ2VSZWN0cyhjb25zdCBWZWN0b3I8Q0NMYXllcklt
cGwqID4mIHJlbgogICAgIH0KIH0KIAordm9pZCBDQ0RlYnVnUmVjdEhpc3Rvcnk6OnNhdmVTY3Jl
ZW5TcGFjZVJlY3RzKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCogPiYgcmVuZGVyU3VyZmFjZUxh
eWVyTGlzdCkKK3sKKyAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5
ZXJMaXN0LnNpemUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsK
KyAgICAgICAgQ0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VM
YXllckxpc3Rbc3VyZmFjZUluZGV4XTsKKyAgICAgICAgQ0NSZW5kZXJTdXJmYWNlKiByZW5kZXJT
dXJmYWNlID0gcmVuZGVyU3VyZmFjZUxheWVyLT5yZW5kZXJTdXJmYWNlKCk7CisgICAgICAgIEFT
U0VSVChyZW5kZXJTdXJmYWNlKTsKKworICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVi
dWdSZWN0KFNjcmVlblNwYWNlUmVjdFR5cGUsIENDTWF0aFV0aWw6Om1hcENsaXBwZWRSZWN0KHJl
bmRlclN1cmZhY2UtPnNjcmVlblNwYWNlVHJhbnNmb3JtKCksIHJlbmRlclN1cmZhY2UtPmNvbnRl
bnRSZWN0KCkpKSk7CisKKyAgICAgICAgaWYgKHJlbmRlclN1cmZhY2VMYXllci0+cmVwbGljYUxh
eWVyKCkpCisgICAgICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KFJlcGxp
Y2FTY3JlZW5TcGFjZVJlY3RUeXBlLCBDQ01hdGhVdGlsOjptYXBDbGlwcGVkUmVjdChyZW5kZXJT
dXJmYWNlLT5yZXBsaWNhU2NyZWVuU3BhY2VUcmFuc2Zvcm0oKSwgcmVuZGVyU3VyZmFjZS0+Y29u
dGVudFJlY3QoKSkpKTsKKyAgICB9Cit9CisKK3ZvaWQgQ0NEZWJ1Z1JlY3RIaXN0b3J5OjpzYXZl
T2NjbHVkaW5nUmVjdHMoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2NsdWRpbmdSZWN0cykKK3sK
KyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9jY2x1ZGluZ1JlY3RzLnNpemUoKTsgKytpKQor
ICAgICAgICBtX2RlYnVnUmVjdHMuYXBwZW5kKENDRGVidWdSZWN0KE9jY2x1ZGluZ1JlY3RUeXBl
LCBvY2NsdWRpbmdSZWN0c1tpXSkpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0RlYnVnUmVjdEhpc3Rvcnku
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdS
ZWN0SGlzdG9yeS5oCmluZGV4IGJiM2NkYjc5ZDU3MTg0N2IyNzZlOTdjODBmZDY4YzFhYzJjNDhk
NmEuLjdmZDAwYzNmNjI2MjExYmQ1MjNjZmFjNGM5ZDNkZTM2MmMwZDg5ZTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDRGVidWdSZWN0
SGlzdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L2NjL0NDRGVidWdSZWN0SGlzdG9yeS5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgVVNFKEFDQ0VM
RVJBVEVEX0NPTVBPU0lUSU5HKQogCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCisjaW5jbHVkZSAi
SW50UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtMzcsNyArMzgsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDQ0xheWVySW1wbDsKIHN0cnVjdCBDQ0xheWVyVHJl
ZVNldHRpbmdzOwogCi0vLyBUaGVyZSBhcmUgY3VycmVudGx5IHRocmVlIHR5cGVzIG9mIGRlYnVn
IHJlY3RzOgorLy8gVGhlcmUgYXJlIGN1cnJlbnRseSBzaXggdHlwZXMgb2YgZGVidWcgcmVjdHM6
CiAvLwogLy8gLSBQYWludCByZWN0cyAodXBkYXRlIHJlY3RzKTogcmVnaW9ucyBvZiBhIGxheWVy
IHRoYXQgbmVlZGVkIHRvIGJlIHJlLXVwbG9hZGVkIHRvIHRoZQogLy8gICB0ZXh0dXJlIHJlc291
cmNlOyBpbiBtb3N0IGNhc2VzIGltcGx5aW5nIHRoYXQgV2ViQ29yZSBoYWQgdG8gcmVwYWludCB0
aGVtLCB0b28uCkBAIC01MCw3ICs1MSwxMyBAQCBzdHJ1Y3QgQ0NMYXllclRyZWVTZXR0aW5nczsK
IC8vICAgbGF5ZXJzIGFuZCBzdXJmYWNlcyB0aGF0IGNvbnRyaWJ1dGUgdG8gaXQuIFRoaXMgaW5j
bHVkZXMgKDEpIHBhaW50IHJlY3RzLCAoMikgcHJvcGVydHktCiAvLyAgIGNoYW5nZWQgcmVjdHMs
IGFuZCAoMykgbmV3bHkgZXhwb3NlZCBhcmVhcy4KIC8vCi1lbnVtIERlYnVnUmVjdFR5cGUgeyBQ
YWludFJlY3RUeXBlLCBQcm9wZXJ0eUNoYW5nZWRSZWN0VHlwZSwgU3VyZmFjZURhbWFnZVJlY3RU
eXBlIH07CisvLyAtIFNjcmVlbiBzcGFjZSByZWN0czogdGhpcyBpcyB0aGUgcmVnaW9uIHRoZSBj
b250ZW50cyBvY2N1cHkgaW4gc2NyZWVuIHNwYWNlLgorLy8KKy8vIC0gUmVwbGljYSBzY3JlZW4g
c3BhY2UgcmVjdHM6IHRoaXMgaXMgdGhlIHJlZ2lvbiB0aGUgcmVwbGljYSdzIGNvbnRlbnRzIG9j
Y3VweSBpbiBzY3JlZW4gc3BhY2UuCisvLworLy8gLSBPY2NsdWRpbmcgcmVjdHM6IHRoZXNlIGFy
ZSB0aGUgcmVnaW9ucyB0aGF0IGNvbnRyaWJ1dGUgdG8gdGhlIG9jY2x1ZGVkIHJlZ2lvbi4KKy8v
CitlbnVtIERlYnVnUmVjdFR5cGUgeyBQYWludFJlY3RUeXBlLCBQcm9wZXJ0eUNoYW5nZWRSZWN0
VHlwZSwgU3VyZmFjZURhbWFnZVJlY3RUeXBlLCBTY3JlZW5TcGFjZVJlY3RUeXBlLCBSZXBsaWNh
U2NyZWVuU3BhY2VSZWN0VHlwZSwgT2NjbHVkaW5nUmVjdFR5cGUgfTsKIAogc3RydWN0IENDRGVi
dWdSZWN0IHsKICAgICBDQ0RlYnVnUmVjdChEZWJ1Z1JlY3RUeXBlIG5ld1R5cGUsIEZsb2F0UmVj
dCBuZXdSZWN0KQpAQCAtNzUsNyArODIsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBlbmFibGVkKGNv
bnN0IENDTGF5ZXJUcmVlU2V0dGluZ3MmKTsKIAogICAgIC8vIE5vdGU6IFNhdmluZyBkZWJ1ZyBy
ZWN0cyBtdXN0IGhhcHBlbiBiZWZvcmUgbGF5ZXJzJyBjaGFuZ2UgdHJhY2tpbmcgaXMgcmVzZXQu
Ci0gICAgdm9pZCBzYXZlRGVidWdSZWN0c0ZvckN1cnJlbnRGcmFtZShDQ0xheWVySW1wbCogcm9v
dExheWVyLCBjb25zdCBWZWN0b3I8Q0NMYXllckltcGwqPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlz
dCwgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOworICAgIHZvaWQgc2F2ZURlYnVnUmVjdHNG
b3JDdXJyZW50RnJhbWUoQ0NMYXllckltcGwqIHJvb3RMYXllciwgY29uc3QgVmVjdG9yPENDTGF5
ZXJJbXBsKj4mIHJlbmRlclN1cmZhY2VMYXllckxpc3QsIGNvbnN0IFZlY3RvcjxJbnRSZWN0PiYg
b2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0cywgY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYpOwog
CiAgICAgY29uc3QgVmVjdG9yPENDRGVidWdSZWN0PiYgZGVidWdSZWN0cygpIHsgcmV0dXJuIG1f
ZGVidWdSZWN0czsgfQogCkBAIC04NSw2ICs5Miw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzYXZl
UGFpbnRSZWN0cyhDQ0xheWVySW1wbCopOwogICAgIHZvaWQgc2F2ZVByb3BlcnR5Q2hhbmdlZFJl
Y3RzKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCo+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsK
ICAgICB2b2lkIHNhdmVTdXJmYWNlRGFtYWdlUmVjdHMoY29uc3QgVmVjdG9yPENDTGF5ZXJJbXBs
KiA+JiByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0KTsKKyAgICB2b2lkIHNhdmVTY3JlZW5TcGFjZVJl
Y3RzKGNvbnN0IFZlY3RvcjxDQ0xheWVySW1wbCogPiYgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7
CisgICAgdm9pZCBzYXZlT2NjbHVkaW5nUmVjdHMoY29uc3QgVmVjdG9yPEludFJlY3Q+JiBvY2Ns
dWRpbmdTY3JlZW5TcGFjZVJlY3RzKTsKIAogICAgIFZlY3RvcjxDQ0RlYnVnUmVjdD4gbV9kZWJ1
Z1JlY3RzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL2NjL0NDSGVhZHNVcERpc3BsYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKaW5kZXggZjNkNDE1
ZGNmZDM1YjY4M2Q3ZDMxNjBlYWIyODk5NjNiY2EyMTU3NC4uMjRkNDBiZmI0ZTVhM2I2NGExOGNk
ZDNjZGRiZGJkMDYzY2RiMmIwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NIZWFkc1VwRGlzcGxheS5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgYm9vbCBDQ0hlYWRzVXBEaXNwbGF5OjpzaG93UGxhdGZvcm1MYXll
clRyZWUoY29uc3QgQ0NMYXllclRyZWVTZXR0aW5ncyYgc2V0dGluZ3MKIAogYm9vbCBDQ0hlYWRz
VXBEaXNwbGF5OjpzaG93RGVidWdSZWN0cyhjb25zdCBDQ0xheWVyVHJlZVNldHRpbmdzJiBzZXR0
aW5ncykgY29uc3QKIHsKLSAgICByZXR1cm4gc2V0dGluZ3Muc2hvd1BhaW50UmVjdHMgfHwgc2V0
dGluZ3Muc2hvd1Byb3BlcnR5Q2hhbmdlZFJlY3RzIHx8IHNldHRpbmdzLnNob3dTdXJmYWNlRGFt
YWdlUmVjdHM7CisgICAgcmV0dXJuIHNldHRpbmdzLnNob3dQYWludFJlY3RzIHx8IHNldHRpbmdz
LnNob3dQcm9wZXJ0eUNoYW5nZWRSZWN0cyB8fCBzZXR0aW5ncy5zaG93U3VyZmFjZURhbWFnZVJl
Y3RzIHx8IHNldHRpbmdzLnNob3dTY3JlZW5TcGFjZVJlY3RzIHx8IHNldHRpbmdzLnNob3dSZXBs
aWNhU2NyZWVuU3BhY2VSZWN0cyB8fCBzZXR0aW5ncy5zaG93T2NjbHVkaW5nUmVjdHM7CiB9CiAK
IHZvaWQgQ0NIZWFkc1VwRGlzcGxheTo6ZHJhdyhDQ0xheWVyVHJlZUhvc3RJbXBsKiBsYXllclRy
ZWVIb3N0SW1wbCkKQEAgLTgxLDggKzgxLDggQEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3
KENDTGF5ZXJUcmVlSG9zdEltcGwqIGxheWVyVHJlZUhvc3RJbXBsKQogICAgIC8vIFVzZSBhIGZ1
bGxzY3JlZW4gdGV4dHVyZSBvbmx5IGlmIHdlIG5lZWQgdG8uLi4KICAgICBJbnRTaXplIGh1ZFNp
emU7CiAgICAgaWYgKHNob3dQbGF0Zm9ybUxheWVyVHJlZShzZXR0aW5ncykgfHwgc2hvd0RlYnVn
UmVjdHMoc2V0dGluZ3MpKSB7Ci0gICAgICAgIGh1ZFNpemUuc2V0V2lkdGgobWluKDIwNDgsIGxh
eWVyVHJlZUhvc3RJbXBsLT52aWV3cG9ydFNpemUoKS53aWR0aCgpKSk7Ci0gICAgICAgIGh1ZFNp
emUuc2V0SGVpZ2h0KG1pbigyMDQ4LCBsYXllclRyZWVIb3N0SW1wbC0+dmlld3BvcnRTaXplKCku
aGVpZ2h0KCkpKTsKKyAgICAgICAgaHVkU2l6ZS5zZXRXaWR0aChtaW4oMjA0OCwgbGF5ZXJUcmVl
SG9zdEltcGwtPmRldmljZVZpZXdwb3J0U2l6ZSgpLndpZHRoKCkpKTsKKyAgICAgICAgaHVkU2l6
ZS5zZXRIZWlnaHQobWluKDIwNDgsIGxheWVyVHJlZUhvc3RJbXBsLT5kZXZpY2VWaWV3cG9ydFNp
emUoKS5oZWlnaHQoKSkpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIGh1ZFNpemUuc2V0V2lkdGgo
NTEyKTsKICAgICAgICAgaHVkU2l6ZS5zZXRIZWlnaHQoMTI4KTsKQEAgLTI0NCw2ICsyNDQsMjcg
QEAgdm9pZCBDQ0hlYWRzVXBEaXNwbGF5OjpkcmF3RGVidWdSZWN0cyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIENDRGVidWdSZWN0SGlzdG8KICAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0
KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMjAwLCAxMDAsIDAsIDMwKSwgQ29sb3JTcGFjZURl
dmljZVJHQik7CiAgICAgICAgICAgICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0u
cmVjdCwgMi4wKTsKICAgICAgICAgfQorCisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUg
PT0gUmVwbGljYVNjcmVlblNwYWNlUmVjdFR5cGUpIHsKKyAgICAgICAgICAgIC8vIFNjcmVlbiBz
cGFjZSByZWN0cyBpbiBncmVlbi4KKyAgICAgICAgICAgIGNvbnRleHQtPnNldFN0cm9rZUNvbG9y
KENvbG9yKDEwMCwgMjAwLCAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNlUkdCKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgQ29sb3IoMTAwLCAyMDAs
IDAsIDMwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5zdHJv
a2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
IChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gU2NyZWVuU3BhY2VSZWN0VHlwZSkgeworICAgICAgICAg
ICAgLy8gU2NyZWVuIHNwYWNlIHJlY3RzIGluIHB1cnBsZS4KKyAgICAgICAgICAgIGNvbnRleHQt
PnNldFN0cm9rZUNvbG9yKENvbG9yKDEwMCwgMCwgMjAwLCAyNTUpLCBDb2xvclNwYWNlRGV2aWNl
UkdCKTsKKyAgICAgICAgICAgIGNvbnRleHQtPmZpbGxSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwg
Q29sb3IoMTAwLCAwLCAyMDAsIDEwKSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAg
ICBjb250ZXh0LT5zdHJva2VSZWN0KGRlYnVnUmVjdHNbaV0ucmVjdCwgMi4wKTsKKyAgICAgICAg
fQorCisgICAgICAgIGlmIChkZWJ1Z1JlY3RzW2ldLnR5cGUgPT0gT2NjbHVkaW5nUmVjdFR5cGUp
IHsKKyAgICAgICAgICAgIC8vIE9jY2x1ZGluZyByZWN0cyBpbiBhIHJlZGRpc2ggY29sb3IuCisg
ICAgICAgICAgICBjb250ZXh0LT5zZXRTdHJva2VDb2xvcihDb2xvcigyMDAsIDAsIDEwMCwgMjU1
KSwgQ29sb3JTcGFjZURldmljZVJHQik7CisgICAgICAgICAgICBjb250ZXh0LT5maWxsUmVjdChk
ZWJ1Z1JlY3RzW2ldLnJlY3QsIENvbG9yKDIwMCwgMCwgMTAwLCAxMCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgICAgICAgICAgY29udGV4dC0+c3Ryb2tlUmVjdChkZWJ1Z1JlY3RzW2ldLnJl
Y3QsIDIuMCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdC5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
LmgKaW5kZXggMWY0ZDNjOTY3MjI4NTUwZmY2NjA5ZDYxMWY4N2VlYjZkYWQwOWYwMS4uNDQxZjhl
OTFjZWFjYzQ5OGZmZjlmMzNmOWU4NTM5YjgyNmMyNDI5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0LmgKQEAgLTg0LDYgKzg0LDkgQEAgc3RydWN0IENDTGF5ZXJUcmVlU2V0dGluZ3Mgewog
ICAgICAgICAgICAgLCBzaG93UGFpbnRSZWN0cyhmYWxzZSkKICAgICAgICAgICAgICwgc2hvd1By
b3BlcnR5Q2hhbmdlZFJlY3RzKGZhbHNlKQogICAgICAgICAgICAgLCBzaG93U3VyZmFjZURhbWFn
ZVJlY3RzKGZhbHNlKQorICAgICAgICAgICAgLCBzaG93U2NyZWVuU3BhY2VSZWN0cyhmYWxzZSkK
KyAgICAgICAgICAgICwgc2hvd1JlcGxpY2FTY3JlZW5TcGFjZVJlY3RzKGZhbHNlKQorICAgICAg
ICAgICAgLCBzaG93T2NjbHVkaW5nUmVjdHMoZmFsc2UpCiAgICAgICAgICAgICAsIHJlZnJlc2hS
YXRlKDApCiAgICAgICAgICAgICAsIG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlcyhzdGQ6Om51bWVy
aWNfbGltaXRzPHNpemVfdD46Om1heCgpKQogICAgICAgICAgICAgLCBkZWZhdWx0VGlsZVNpemUo
SW50U2l6ZSgyNTYsIDI1NikpCkBAIC05Nyw2ICsxMDAsOSBAQCBzdHJ1Y3QgQ0NMYXllclRyZWVT
ZXR0aW5ncyB7CiAgICAgYm9vbCBzaG93UGFpbnRSZWN0czsKICAgICBib29sIHNob3dQcm9wZXJ0
eUNoYW5nZWRSZWN0czsKICAgICBib29sIHNob3dTdXJmYWNlRGFtYWdlUmVjdHM7CisgICAgYm9v
bCBzaG93U2NyZWVuU3BhY2VSZWN0czsKKyAgICBib29sIHNob3dSZXBsaWNhU2NyZWVuU3BhY2VS
ZWN0czsKKyAgICBib29sIHNob3dPY2NsdWRpbmdSZWN0czsKICAgICBkb3VibGUgcmVmcmVzaFJh
dGU7CiAgICAgc2l6ZV90IG1heFBhcnRpYWxUZXh0dXJlVXBkYXRlczsKICAgICBJbnRTaXplIGRl
ZmF1bHRUaWxlU2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKaW5k
ZXggMzAxMWI1ZWNjNjYzMDZjY2Q2MGQ5OTIxNDFkMWY4NGZlZjdlZTlkZC4uZGRiYWJjMzZiZDZm
MmI0MWQwMGM4NWY0ZmVmNTBjMGQzZmExN2RhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRy
ZWVIb3N0SW1wbC5jcHAKQEAgLTI5NCw2ICsyOTQsOSBAQCBib29sIENDTGF5ZXJUcmVlSG9zdElt
cGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhGcmFtZURhdGEmIGZyYW1lKQogICAgIENDT2NjbHVz
aW9uVHJhY2tlckltcGwgb2NjbHVzaW9uVHJhY2tlcihlbmNsb3NpbmdJbnRSZWN0KG1fcm9vdFNj
aXNzb3JSZWN0KSwgcmVjb3JkTWV0cmljc0ZvckZyYW1lKTsKICAgICBvY2NsdXNpb25UcmFja2Vy
LnNldE1pbmltdW1UcmFja2luZ1NpemUoQ0NPY2NsdXNpb25UcmFja2VySW1wbDo6cHJlZmVycmVk
TWluaW11bVRyYWNraW5nU2l6ZSgpKTsKIAorICAgIGlmIChzZXR0aW5ncygpLnNob3dPY2NsdWRp
bmdSZWN0cykKKyAgICAgICAgb2NjbHVzaW9uVHJhY2tlci5zZXRPY2NsdWRpbmdTY3JlZW5TcGFj
ZVJlY3RzQ29udGFpbmVyKCZmcmFtZS5vY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzKTsKKwogICAg
IC8vIEFkZCBxdWFkcyB0byB0aGUgUmVuZGVyIHBhc3NlcyBpbiBGcm9udFRvQmFjayBvcmRlciB0
byBhbGxvdyBmb3IgdGVzdGluZyBvY2NsdXNpb24gYW5kIHBlcmZvcm1pbmcgY3VsbGluZyBkdXJp
bmcgdGhlIHRyZWUgd2Fsay4KICAgICB0eXBlZGVmIENDTGF5ZXJJdGVyYXRvcjxDQ0xheWVySW1w
bCwgVmVjdG9yPENDTGF5ZXJJbXBsKj4sIENDUmVuZGVyU3VyZmFjZSwgQ0NMYXllckl0ZXJhdG9y
QWN0aW9uczo6RnJvbnRUb0JhY2s+IENDTGF5ZXJJdGVyYXRvclR5cGU7CiAKQEAgLTUxMiw3ICs1
MTUsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmRyYXdMYXllcnMoY29uc3QgRnJhbWVE
YXRhJiBmcmFtZSkKICAgICB9CiAKICAgICBpZiAobV9kZWJ1Z1JlY3RIaXN0b3J5LT5lbmFibGVk
KHNldHRpbmdzKCkpKQotICAgICAgICBtX2RlYnVnUmVjdEhpc3RvcnktPnNhdmVEZWJ1Z1JlY3Rz
Rm9yQ3VycmVudEZyYW1lKG1fcm9vdExheWVySW1wbC5nZXQoKSwgKmZyYW1lLnJlbmRlclN1cmZh
Y2VMYXllckxpc3QsIHNldHRpbmdzKCkpOworICAgICAgICBtX2RlYnVnUmVjdEhpc3RvcnktPnNh
dmVEZWJ1Z1JlY3RzRm9yQ3VycmVudEZyYW1lKG1fcm9vdExheWVySW1wbC5nZXQoKSwgKmZyYW1l
LnJlbmRlclN1cmZhY2VMYXllckxpc3QsIGZyYW1lLm9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMs
IHNldHRpbmdzKCkpOwogCiAgICAgaWYgKG1faGVhZHNVcERpc3BsYXktPmVuYWJsZWQoc2V0dGlu
Z3MoKSkpCiAgICAgICAgIG1faGVhZHNVcERpc3BsYXktPmRyYXcodGhpcyk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJl
ZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggNGU0ZjZjY2I3ZTJmNjU1YjUyYjIyNDIwM2Rk
ZTg1OTdmMDBjNmVkNS4uNTY5ZmI0YWY0NzJlYmI0MGMxMDdlYzA5NDI3ODFjNzVlYzFkZjNjNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2Mv
Q0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtODIsNiArODIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNjaGVkdWxlQW5pbWF0aW9uKCk7CiAKICAgICBzdHJ1
Y3QgRnJhbWVEYXRhIHsKKyAgICAgICAgVmVjdG9yPEludFJlY3Q+IG9jY2x1ZGluZ1NjcmVlblNw
YWNlUmVjdHM7CiAgICAgICAgIENDUmVuZGVyUGFzc0xpc3QgcmVuZGVyUGFzc2VzOwogICAgICAg
ICBDQ1JlbmRlclBhc3NMaXN0IHNraXBwZWRQYXNzZXM7CiAgICAgICAgIENDTGF5ZXJMaXN0KiBy
ZW5kZXJTdXJmYWNlTGF5ZXJMaXN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDT2NjbHVzaW9uVHJhY2tlci5j
cHAKaW5kZXggNDgzNmViNTI4MDdjZWFiMDA0ZTQyYmM0M2QxOTgzM2I4ZDZiZTQ0Mi4uOTE3ZGM4
N2QwZmY1YzM1YjE2NmU0YWY0MDE4ZWFlYmNhM2Q2NTJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2NsdXNpb25UcmFja2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ09j
Y2x1c2lvblRyYWNrZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBAIHRlbXBsYXRlPHR5cGVuYW1lIExh
eWVyVHlwZSwgdHlwZW5hbWUgUmVuZGVyU3VyZmFjZVR5cGU+CiBDQ09jY2x1c2lvblRyYWNrZXJC
YXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFjZVR5cGU+OjpDQ09jY2x1c2lvblRyYWNrZXJCYXNl
KEludFJlY3Qgc2Npc3NvclJlY3RJblNjcmVlblNwYWNlLCBib29sIHJlY29yZE1ldHJpY3NGb3JG
cmFtZSkKICAgICA6IG1fc2Npc3NvclJlY3RJblNjcmVlblNwYWNlKHNjaXNzb3JSZWN0SW5TY3Jl
ZW5TcGFjZSkKICAgICAsIG1fb3ZlcmRyYXdNZXRyaWNzKENDT3ZlcmRyYXdNZXRyaWNzOjpjcmVh
dGUocmVjb3JkTWV0cmljc0ZvckZyYW1lKSkKKyAgICAsIG1fb2NjbHVkaW5nU2NyZWVuU3BhY2VS
ZWN0cygwKQogewogfQogCkBAIC0zMDcsNyArMzA4LDcgQEAgc3RhdGljIGlubGluZSBXZWJUcmFu
c2Zvcm1hdGlvbk1hdHJpeCBjb250ZW50VG9UYXJnZXRTdXJmYWNlVHJhbnNmb3JtKGNvbnN0IExh
eWUKIAogLy8gRklYTUU6IFJlbW92ZSB1c2VQYWludFRyYWNraW5nIHdoZW4gcGFpbnQgdHJhY2tp
bmcgaXMgb24gZm9yIHBhaW50IGN1bGxpbmcuCiB0ZW1wbGF0ZTx0eXBlbmFtZSBMYXllclR5cGU+
Ci1zdGF0aWMgaW5saW5lIHZvaWQgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXIoUmVnaW9uJiByZWdp
b24sIGNvbnN0IExheWVyVHlwZSogbGF5ZXIsIGNvbnN0IFdlYlRyYW5zZm9ybWF0aW9uTWF0cml4
JiB0cmFuc2Zvcm0sIGNvbnN0IFJlZ2lvbiYgb3BhcXVlQ29udGVudHMsIGNvbnN0IEludFJlY3Qm
IHNjaXNzb3JSZWN0LCBjb25zdCBJbnRTaXplJiBtaW5pbXVtVHJhY2tpbmdTaXplKQorc3RhdGlj
IGlubGluZSB2b2lkIGFkZE9jY2x1c2lvbkJlaGluZExheWVyKFJlZ2lvbiYgcmVnaW9uLCBjb25z
dCBMYXllclR5cGUqIGxheWVyLCBjb25zdCBXZWJUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNm
b3JtLCBjb25zdCBSZWdpb24mIG9wYXF1ZUNvbnRlbnRzLCBjb25zdCBJbnRSZWN0JiBzY2lzc29y
UmVjdCwgY29uc3QgSW50U2l6ZSYgbWluaW11bVRyYWNraW5nU2l6ZSwgVmVjdG9yPEludFJlY3Q+
KiBvY2NsdWRpbmdTY3JlZW5TcGFjZVJlY3RzKQogewogICAgIEFTU0VSVChsYXllci0+dmlzaWJs
ZUxheWVyUmVjdCgpLmNvbnRhaW5zKG9wYXF1ZUNvbnRlbnRzLmJvdW5kcygpKSk7CiAKQEAgLTMy
Miw4ICszMjMsMTEgQEAgc3RhdGljIGlubGluZSB2b2lkIGFkZE9jY2x1c2lvbkJlaGluZExheWVy
KFJlZ2lvbiYgcmVnaW9uLCBjb25zdCBMYXllclR5cGUqIGxheWUKICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvbnRlbnRSZWN0cy5zaXplKCk7ICsraSkgewogICAgICAgICBJbnRSZWN0IHRy
YW5zZm9ybWVkUmVjdCA9IGVuY2xvc2VkSW50UmVjdCh0cmFuc2Zvcm0ubWFwUmVjdChGbG9hdFJl
Y3QoY29udGVudFJlY3RzW2ldKSkpOwogICAgICAgICB0cmFuc2Zvcm1lZFJlY3QuaW50ZXJzZWN0
KHNjaXNzb3JSZWN0KTsKLSAgICAgICAgaWYgKHRyYW5zZm9ybWVkUmVjdC53aWR0aCgpID49IG1p
bmltdW1UcmFja2luZ1NpemUud2lkdGgoKSB8fCB0cmFuc2Zvcm1lZFJlY3QuaGVpZ2h0KCkgPj0g
bWluaW11bVRyYWNraW5nU2l6ZS5oZWlnaHQoKSkKKyAgICAgICAgaWYgKHRyYW5zZm9ybWVkUmVj
dC53aWR0aCgpID49IG1pbmltdW1UcmFja2luZ1NpemUud2lkdGgoKSB8fCB0cmFuc2Zvcm1lZFJl
Y3QuaGVpZ2h0KCkgPj0gbWluaW11bVRyYWNraW5nU2l6ZS5oZWlnaHQoKSkgeworICAgICAgICAg
ICAgaWYgKG9jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMpCisgICAgICAgICAgICAgICAgb2NjbHVk
aW5nU2NyZWVuU3BhY2VSZWN0cy0+YXBwZW5kKHRyYW5zZm9ybWVkUmVjdCk7CiAgICAgICAgICAg
ICByZWdpb24udW5pdGUodHJhbnNmb3JtZWRSZWN0KTsKKyAgICAgICAgfQogICAgIH0KIH0KIApA
QCAtMzQ3LDcgKzM1MSw3IEBAIHZvaWQgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllclR5cGUs
IFJlbmRlclN1cmZhY2VUeXBlPjo6bWFya09jY2x1ZGVkQmVoaW5kTGF5CiAKICAgICBJbnRSZWN0
IHNjaXNzb3JJblRhcmdldCA9IGxheWVyU2Npc3NvclJlY3RJblRhcmdldFN1cmZhY2UobGF5ZXIp
OwogICAgIGlmIChsYXllclRyYW5zZm9ybXNUb1RhcmdldEtub3duKGxheWVyKSkKLSAgICAgICAg
YWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihtX3N0YWNrLmxhc3QoKS5vY2NsdXNp
b25JblRhcmdldCwgbGF5ZXIsIGNvbnRlbnRUb1RhcmdldFN1cmZhY2VUcmFuc2Zvcm08TGF5ZXJU
eXBlPihsYXllciksIG9wYXF1ZUNvbnRlbnRzLCBzY2lzc29ySW5UYXJnZXQsIG1fbWluaW11bVRy
YWNraW5nU2l6ZSk7CisgICAgICAgIGFkZE9jY2x1c2lvbkJlaGluZExheWVyPExheWVyVHlwZT4o
bV9zdGFjay5sYXN0KCkub2NjbHVzaW9uSW5UYXJnZXQsIGxheWVyLCBjb250ZW50VG9UYXJnZXRT
dXJmYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBvcGFxdWVDb250ZW50cywgc2Npc3Nv
ckluVGFyZ2V0LCBtX21pbmltdW1UcmFja2luZ1NpemUsIDApOwogCiAgICAgLy8gV2UgbXVzdCBj
bGlwIHRoZSBvY2NsdXNpb24gd2l0aGluIHRoZSBsYXllcidzIHNjaXNzb3JJblRhcmdldCB3aXRo
aW4gc2NyZWVuIHNwYWNlIGFzIHdlbGwuIElmIHRoZSBzY2lzc29yIHJlY3QgY2FuJ3QgYmUgbW92
ZWQgdG8gc2NyZWVuIHNwYWNlIGFuZAogICAgIC8vIHJlbWFpbiByZWN0aWxpbmVhciwgdGhlbiB3
ZSBkb24ndCBhZGQgYW55IG9jY2x1c2lvbiBpbiBzY3JlZW4gc3BhY2UuCkBAIC0zNjAsNyArMzY0
LDcgQEAgdm9pZCBDQ09jY2x1c2lvblRyYWNrZXJCYXNlPExheWVyVHlwZSwgUmVuZGVyU3VyZmFj
ZVR5cGU+OjptYXJrT2NjbHVkZWRCZWhpbmRMYXkKICAgICAgICAgaWYgKGNsaXBwZWQgfHwgIXNj
aXNzb3JJblNjcmVlblF1YWQuaXNSZWN0aWxpbmVhcigpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBJbnRSZWN0IHNjaXNzb3JJblNjcmVlblJlY3QgPSBpbnRlcnNlY3Rpb24obV9zY2lz
c29yUmVjdEluU2NyZWVuU3BhY2UsIGVuY2xvc2VkSW50UmVjdChzY2lzc29ySW5TY3JlZW5RdWFk
LmJvdW5kaW5nQm94KCkpKTsKLSAgICAgICAgYWRkT2NjbHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJU
eXBlPihtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNjcmVlbiwgbGF5ZXIsIGNvbnRlbnRUb1Nj
cmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5ZXIpLCBvcGFxdWVDb250ZW50cywgc2Np
c3NvckluU2NyZWVuUmVjdCwgbV9taW5pbXVtVHJhY2tpbmdTaXplKTsKKyAgICAgICAgYWRkT2Nj
bHVzaW9uQmVoaW5kTGF5ZXI8TGF5ZXJUeXBlPihtX3N0YWNrLmxhc3QoKS5vY2NsdXNpb25JblNj
cmVlbiwgbGF5ZXIsIGNvbnRlbnRUb1NjcmVlblNwYWNlVHJhbnNmb3JtPExheWVyVHlwZT4obGF5
ZXIpLCBvcGFxdWVDb250ZW50cywgc2Npc3NvckluU2NyZWVuUmVjdCwgbV9taW5pbXVtVHJhY2tp
bmdTaXplLCBtX29jY2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMpOwogICAgIH0KIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NPY2Ns
dXNpb25UcmFja2VyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaAppbmRleCAxOWU1MzM1MzZjODlhZDBjMDNmZjhhYWVh
MjZkNDBiZTQxY2Q1OGY4Li4wMjdmYWI3MWRiN2FiNTA0ZmJlZDdmNTFlNTBkN2VmNTZhYjU0ZjZl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ09jY2x1c2lvblRyYWNrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9jYy9DQ09jY2x1c2lvblRyYWNrZXIuaApAQCAtNzIsNiArNzIsOSBAQCBw
dWJsaWM6CiAKICAgICBzdGF0aWMgSW50U2l6ZSBwcmVmZXJyZWRNaW5pbXVtVHJhY2tpbmdTaXpl
KCkgeyByZXR1cm4gSW50U2l6ZSgxNjAsIDE2MCk7IH0KIAorICAgIC8vIFRoZSBmb2xsb3dpbmcg
aXMgdXNlZCBmb3IgdmlzdWFsaXphdGlvbiBwdXJwb3Nlcy4KKyAgICB2b2lkIHNldE9jY2x1ZGlu
Z1NjcmVlblNwYWNlUmVjdHNDb250YWluZXIoVmVjdG9yPEludFJlY3Q+KiByZWN0cykgeyBtX29j
Y2x1ZGluZ1NjcmVlblNwYWNlUmVjdHMgPSByZWN0czsgfQorCiBwcm90ZWN0ZWQ6CiAgICAgc3Ry
dWN0IFN0YWNrT2JqZWN0IHsKICAgICAgICAgU3RhY2tPYmplY3QoKSA6IHN1cmZhY2UoMCkgeyB9
CkBAIC0xMTEsNiArMTE0LDkgQEAgcHJpdmF0ZToKICAgICBJbnRSZWN0IG1fc2Npc3NvclJlY3RJ
blNjcmVlblNwYWNlOwogICAgIE93blB0cjxDQ092ZXJkcmF3TWV0cmljcz4gbV9vdmVyZHJhd01l
dHJpY3M7CiAgICAgSW50U2l6ZSBtX21pbmltdW1UcmFja2luZ1NpemU7CisKKyAgICAvLyBUaGlz
IGlzIHVzZWQgZm9yIHZpc3VhbGl6aW5nIHRoZSBvY2NsdXNpb24gdHJhY2tpbmcgcHJvY2Vzcy4K
KyAgICBWZWN0b3I8SW50UmVjdD4qIG1fb2NjbHVkaW5nU2NyZWVuU3BhY2VSZWN0czsKIH07CiAK
IHR5cGVkZWYgQ0NPY2NsdXNpb25UcmFja2VyQmFzZTxMYXllckNocm9taXVtLCBSZW5kZXJTdXJm
YWNlQ2hyb21pdW0+IENDT2NjbHVzaW9uVHJhY2tlcjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>