<?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>47027</bug_id>
          
          <creation_ts>2010-10-01 16:14:00 -0700</creation_ts>
          <short_desc>refactor the nested large switch statements in GraphicsContext3DCG.cpp:getImageData()</short_desc>
          <delta_ts>2010-10-27 14:09:41 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>46947</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zhenyao Mo">zmo</reporter>
          <assigned_to name="Zhenyao Mo">zmo</assigned_to>
          <cc>cmarrin</cc>
    
    <cc>enne</cc>
    
    <cc>kbr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>288556</commentid>
    <comment_count>0</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-01 16:14:00 -0700</bug_when>
    <thetext>Currently it&apos;s getting out of hand.  kbr suggested to use table instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297483</commentid>
    <comment_count>1</comment_count>
      <attachid>71449</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-21 10:05:54 -0700</bug_when>
    <thetext>Created attachment 71449
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>297488</commentid>
    <comment_count>2</comment_count>
      <attachid>71451</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-21 10:09:59 -0700</bug_when>
    <thetext>Created attachment 71451
revised patch: remove an extra whitespace</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298157</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-10-22 13:56:03 -0700</bug_when>
    <thetext>Attachment 71451 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;]&quot; exit_code: 1
WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:65:  One space before end of line comments  [whitespace/comments] [5]
WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:66:  One space before end of line comments  [whitespace/comments] [5]
WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:68:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 3 in 4 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>298201</commentid>
    <comment_count>4</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-22 14:59:27 -0700</bug_when>
    <thetext>I think I am not going to fix the style complaints because the current arrangement is much better for readability.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>299853</commentid>
    <comment_count>5</comment_count>
      <attachid>71451</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-26 15:36:27 -0700</bug_when>
    <thetext>Comment on attachment 71451
revised patch: remove an extra whitespace

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

This looks really nice overall (thanks for doing this cleanup) but there are a few issues that need to be addressed.

&gt; WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:52
&gt; +    kSourceFormatBaseUndefined

It turns out WebKit constant style is not to use the &quot;k&quot; prefix. So, &quot;SourceFormatBaseR&quot;, etc. Please add a SourceFormatBaseNumFormats or similar for below.

&gt; WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:58
&gt; +    kAlphaFormatLast,

Naming convention. Please also add an AlphaFormatNumFormats (collision with AlphaFormatLast is unfortunate).

&gt; WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:61
&gt; +static GraphicsContext3D::SourceDataFormat getSourceDataFormat(unsigned int componentsPerPixel, AlphaFormat alphaFormat, bool bit16, bool bigEndian)

bit16 -&gt; is16BitFormat

&gt; WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:63
&gt; +    const static SourceDataFormatBase tableFormatBase[4][3] = { // componentsPerPixel x AlphaFormat

I think this would read better as &quot;formatTableBase&quot;. Please also use AlphaFormatNumFormats as the second array dimension.

&gt; WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:65
&gt; +        { kSourceFormatBaseR,         kSourceFormatBaseA,         kSourceFormatBaseA },         // 1 componentsPerPixel

Please fix the style errors. You can put the extra spaces to the left of the &quot;}&quot;.

&gt; WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:70
&gt; +    const static GraphicsContext3D::SourceDataFormat tableFormat[7][3] = { // SourceDataFormatBase x bitsPerComponentAndEndian

Instead of [7] use SourceFormatBaseNumFormats. Also, I think this would read better as &quot;formatTable&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300385</commentid>
    <comment_count>6</comment_count>
      <attachid>72058</attachid>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-27 11:27:19 -0700</bug_when>
    <thetext>Created attachment 72058
revised patch: responding to kbr&apos;s review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300521</commentid>
    <comment_count>7</comment_count>
      <attachid>72058</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2010-10-27 13:40:42 -0700</bug_when>
    <thetext>Comment on attachment 72058
revised patch: responding to kbr&apos;s review

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

Looks good. One comment.

&gt; WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp:62
&gt; +static GraphicsContext3D::SourceDataFormat getSourceDataFormat(unsigned int componentsPerPixel, AlphaFormat alphaFormat, bool is16BitFormat, bool bigEndian)

Please add a comment indicating that this returns kSourceFormatNumFormats if the combination of input parameters is unsupported.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>300559</commentid>
    <comment_count>8</comment_count>
    <who name="Zhenyao Mo">zmo</who>
    <bug_when>2010-10-27 14:09:41 -0700</bug_when>
    <thetext>Committed r70706: &lt;http://trac.webkit.org/changeset/70706&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71449</attachid>
            <date>2010-10-21 10:05:54 -0700</date>
            <delta_ts>2010-10-21 10:09:59 -0700</delta_ts>
            <desc>patch</desc>
            <filename>cg.patch</filename>
            <type>text/plain</type>
            <size>13211</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDI0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMTAtMjEgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByZWZhY3Rv
ciB0aGUgbmVzdGVkIGxhcmdlIHN3aXRjaCBzdGF0ZW1lbnRzIGluIEdyYXBoaWNzQ29udGV4dDNE
Q0cuY3BwOmdldEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzAyNworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9QYWNraW5nKTogQVNTRVJUIGZh
bHNlIGlmIHVuZGVmaW5lZCBmb3JtYXQgaXMgcGFzc2VkIGluLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IEFkZCBrU291cmNlRm9ybWF0VW5kZWZpbmVk
IGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTb3VyY2VEYXRhRm9ybWF0KTogRGVjaWRlIHNv
dXJjZSBkYXRhIGZvcm1hdCBmcm9tIGNvbXBvbmVudHNQZXJQaXhlbCwgYWxwaGEgZm9ybWF0LCBi
aXRzUGVyQ29tcG9uZXQsIGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRJbWFnZURhdGEpOiBSZWZhY3RvciB0aGUgY29kZSB0byB1c2UgZ2V0U291cmNlRGF0YUZv
cm1hdCBhbmQgcmVtb3ZlIG5lc3RlZCBzd2l0Y2hlcy4KKwogMjAxMC0xMC0yMSAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5
IFNlbWlraGF0c2t5LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDcwMTYzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0NSw2ICs5
NDUsOCBAQCBzdGF0aWMgdm9pZCBkb1BhY2tpbmcoY29uc3Qgdm9pZCogc291cmNlCiAgICAgICAg
IGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja0ExNkJpZ1Rv
UkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURh
dGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50
c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwog
ICAgICAgICBicmVhazsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUKGZhbHNl
KTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDcwMTYzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjYsNyArNTY2LDgg
QEAgcHVibGljOgogICAgICAgICBrU291cmNlRm9ybWF0QVIxNkJpZywKICAgICAgICAga1NvdXJj
ZUZvcm1hdEE4LAogICAgICAgICBrU291cmNlRm9ybWF0QTE2TGl0dGxlLAotICAgICAgICBrU291
cmNlRm9ybWF0QTE2QmlnCisgICAgICAgIGtTb3VyY2VGb3JtYXRBMTZCaWcsCisgICAgICAgIGtT
b3VyY2VGb3JtYXRVbmRlZmluZWQKICAgICB9OwogCiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
M0RDRy5jcHAJKHJldmlzaW9uIDcwMTYzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNTQg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIFNvdXJjZURhdGFGb3JtYXRCYXNlIHsK
KyAgICBrU291cmNlRm9ybWF0QmFzZVIgPSAwLAorICAgIGtTb3VyY2VGb3JtYXRCYXNlQSwKKyAg
ICBrU291cmNlRm9ybWF0QmFzZVJBLAorICAgIGtTb3VyY2VGb3JtYXRCYXNlQVIsCisgICAga1Nv
dXJjZUZvcm1hdEJhc2VSR0IsCisgICAga1NvdXJjZUZvcm1hdEJhc2VSR0JBLAorICAgIGtTb3Vy
Y2VGb3JtYXRCYXNlQVJHQiwKKyAgICBrU291cmNlRm9ybWF0QmFzZVVuZGVmaW5lZAorfTsKKwor
ZW51bSBBbHBoYUZvcm1hdCB7CisgICAga0FscGhhRm9ybWF0Tm9uZSA9IDAsCisgICAga0FscGhh
Rm9ybWF0Rmlyc3QsCisgICAga0FscGhhRm9ybWF0TGFzdCwKK307CisKK3N0YXRpYyBHcmFwaGlj
c0NvbnRleHQzRDo6U291cmNlRGF0YUZvcm1hdCBnZXRTb3VyY2VEYXRhRm9ybWF0KHVuc2lnbmVk
IGludCBjb21wb25lbnRzUGVyUGl4ZWwsIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0LCBib29sIGJp
dDE2LCBib29sIGJpZ0VuZGlhbikKK3sKKyAgICBjb25zdCBzdGF0aWMgU291cmNlRGF0YUZvcm1h
dEJhc2UgdGFibGVGb3JtYXRCYXNlWzRdWzNdID0geyAvLyBjb21wb25lbnRzUGVyUGl4ZWwgeCBB
bHBoYUZvcm1hdAorICAgICAgICAvLyBrQWxwaGFGb3JtYXROb25lICAgICAgICAgICBrQWxwaGFG
b3JtYXRGaXJzdCAgICAgICAgICAga0FscGhhRm9ybWF0TGFzdAorICAgICAgICB7IGtTb3VyY2VG
b3JtYXRCYXNlUiwgICAgICAgICBrU291cmNlRm9ybWF0QmFzZUEsICAgICAgICAga1NvdXJjZUZv
cm1hdEJhc2VBIH0sICAgICAgICAgLy8gMSBjb21wb25lbnRzUGVyUGl4ZWwKKyAgICAgICAgeyBr
U291cmNlRm9ybWF0QmFzZVVuZGVmaW5lZCwga1NvdXJjZUZvcm1hdEJhc2VBUiwgICAgICAgIGtT
b3VyY2VGb3JtYXRCYXNlUkEgfSwgICAgICAgIC8vIDIgY29tcG9uZW50c1BlclBpeGVsCisgICAg
ICAgIHsga1NvdXJjZUZvcm1hdEJhc2VSR0IsICAgICAgIGtTb3VyY2VGb3JtYXRCYXNlVW5kZWZp
bmVkLCBrU291cmNlRm9ybWF0QmFzZVVuZGVmaW5lZCB9LCAvLyAzIGNvbXBvbmVudHNQZXJQaXhl
bAorICAgICAgICB7IGtTb3VyY2VGb3JtYXRCYXNlVW5kZWZpbmVkLCBrU291cmNlRm9ybWF0QmFz
ZUFSR0IsICAgICAga1NvdXJjZUZvcm1hdEJhc2VSR0JBIH0gICAgICAgLy8gNCBjb21wb25lbnRz
UGVyUGl4ZWwKKyAgICB9OworICAgIGNvbnN0IHN0YXRpYyBHcmFwaGljc0NvbnRleHQzRDo6U291
cmNlRGF0YUZvcm1hdCB0YWJsZUZvcm1hdFs3XVszXSA9IHsgLy8gU291cmNlRGF0YUZvcm1hdEJh
c2UgeCBiaXRzUGVyQ29tcG9uZW50QW5kRW5kaWFuCisgICAgICAgIC8vIDhiaXRzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTZiaXRzLCBsaXR0bGUgZW5kaWFuICAgICAgICAgICAg
ICAgICAgICAgICAgIDE2Yml0cywgYmlnIGVuZGlhbgorICAgICAgICB7IEdyYXBoaWNzQ29udGV4
dDNEOjprU291cmNlRm9ybWF0UjgsICAgIEdyYXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0
UjE2TGl0dGxlLCAgICBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdFIxNkJpZyB9LAor
ICAgICAgICB7IEdyYXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0QTgsICAgIEdyYXBoaWNz
Q29udGV4dDNEOjprU291cmNlRm9ybWF0QTE2TGl0dGxlLCAgICBHcmFwaGljc0NvbnRleHQzRDo6
a1NvdXJjZUZvcm1hdEExNkJpZyB9LAorICAgICAgICB7IEdyYXBoaWNzQ29udGV4dDNEOjprU291
cmNlRm9ybWF0UkE4LCAgIEdyYXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0UkExNkxpdHRs
ZSwgICBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdFJBMTZCaWcgfSwKKyAgICAgICAg
eyBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdEFSOCwgICBHcmFwaGljc0NvbnRleHQz
RDo6a1NvdXJjZUZvcm1hdEFSMTZMaXR0bGUsICAgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VG
b3JtYXRBUjE2QmlnIH0sCisgICAgICAgIHsgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VGb3Jt
YXRSR0I4LCAgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VGb3JtYXRSR0IxNkxpdHRsZSwgIEdy
YXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0UkdCMTZCaWcgfSwKKyAgICAgICAgeyBHcmFw
aGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdFJHQkE4LCBHcmFwaGljc0NvbnRleHQzRDo6a1Nv
dXJjZUZvcm1hdFJHQkExNkxpdHRsZSwgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VGb3JtYXRS
R0JBMTZCaWcgfSwKKyAgICAgICAgeyBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdEFS
R0I4LCBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdEFSR0IxNkxpdHRsZSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OmtTb3VyY2VGb3JtYXRBUkdCMTZCaWcgfQorICAgIH07CisKKyAgICBBU1NF
UlQoY29tcG9uZW50c1BlclBpeGVsIDw9IDQgJiYgY29tcG9uZW50c1BlclBpeGVsID4gMCk7Cisg
ICAgU291cmNlRGF0YUZvcm1hdEJhc2UgZm9ybWF0QmFzZSA9IHRhYmxlRm9ybWF0QmFzZVtjb21w
b25lbnRzUGVyUGl4ZWwgLSAxXVthbHBoYUZvcm1hdF07CisgICAgaWYgKGZvcm1hdEJhc2UgPT0g
a1NvdXJjZUZvcm1hdEJhc2VVbmRlZmluZWQpCisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQzRDo6a1NvdXJjZUZvcm1hdFVuZGVmaW5lZDsKKyAgICBpZiAoIWJpdDE2KQorICAgICAgICBy
ZXR1cm4gdGFibGVGb3JtYXRbZm9ybWF0QmFzZV1bMF07CisgICAgaWYgKCFiaWdFbmRpYW4pCisg
ICAgICAgIHJldHVybiB0YWJsZUZvcm1hdFtmb3JtYXRCYXNlXVsxXTsKKyAgICByZXR1cm4gdGFi
bGVGb3JtYXRbZm9ybWF0QmFzZV1bMl07Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwKQEAgLTYyLDE3ICsxMTAsMTkgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYQogICAgICAgICBjZ0ltYWdlID0gaW1hZ2Ut
Pm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFjZ0ltYWdlKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CisKICAgICBzaXplX3Qgd2lkdGggPSBDR0ltYWdlR2V0V2lkdGgoY2dJ
bWFnZSk7CiAgICAgc2l6ZV90IGhlaWdodCA9IENHSW1hZ2VHZXRIZWlnaHQoY2dJbWFnZSk7CiAg
ICAgaWYgKCF3aWR0aCB8fCAhaGVpZ2h0KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgc2l6
ZV90IGJpdHNQZXJDb21wb25lbnQgPSBDR0ltYWdlR2V0Qml0c1BlckNvbXBvbmVudChjZ0ltYWdl
KTsKLSAgICBzaXplX3QgYml0c1BlclBpeGVsID0gQ0dJbWFnZUdldEJpdHNQZXJQaXhlbChjZ0lt
YWdlKTsKKyAgICAgc2l6ZV90IGJpdHNQZXJQaXhlbCA9IENHSW1hZ2VHZXRCaXRzUGVyUGl4ZWwo
Y2dJbWFnZSk7CiAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgIT0gOCAmJiBiaXRzUGVyQ29tcG9u
ZW50ICE9IDE2KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKGJpdHNQZXJQaXhlbCAl
IGJpdHNQZXJDb21wb25lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBzaXplX3QgY29t
cG9uZW50c1BlclBpeGVsID0gYml0c1BlclBpeGVsIC8gYml0c1BlckNvbXBvbmVudDsKKwogICAg
IGJvb2wgc3JjQnl0ZU9yZGVyMTZCaWcgPSBmYWxzZTsKICAgICBpZiAoYml0c1BlckNvbXBvbmVu
dCA9PSAxNikgewogICAgICAgICBDR0JpdG1hcEluZm8gYml0SW5mbyA9IENHSW1hZ2VHZXRCaXRt
YXBJbmZvKGNnSW1hZ2UpOwpAQCAtOTMsOCArMTQzLDkgQEAgYm9vbCBHcmFwaGljc0NvbnRleHQz
RDo6Z2V0SW1hZ2VEYXRhKEltYQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9
CiAgICAgfQotICAgIFNvdXJjZURhdGFGb3JtYXQgc3JjRGF0YUZvcm1hdCA9IGtTb3VyY2VGb3Jt
YXRSR0JBODsKKwogICAgIEFscGhhT3AgbmVlZGVkQWxwaGFPcCA9IGtBbHBoYURvTm90aGluZzsK
KyAgICBBbHBoYUZvcm1hdCBhbHBoYUZvcm1hdCA9IGtBbHBoYUZvcm1hdE5vbmU7CiAgICAgc3dp
dGNoIChDR0ltYWdlR2V0QWxwaGFJbmZvKGNnSW1hZ2UpKSB7CiAgICAgY2FzZSBrQ0dJbWFnZUFs
cGhhUHJlbXVsdGlwbGllZEZpcnN0OgogICAgICAgICAvLyBUaGlzIHBhdGggaXMgb25seSBhY2Nl
c3NpYmxlIGZvciBNYWNPUyBlYXJsaWVyIHRoYW4gMTAuNi40LgpAQCAtMTAzLDY4ICsxNTQsMTcg
QEAgYm9vbCBHcmFwaGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYQogICAgICAgICBBU1NF
UlQoIWltYWdlLT5kYXRhKCkpOwogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAg
ICAgICAgICBuZWVkZWRBbHBoYU9wID0ga0FscGhhRG9Vbm11bHRpcGx5OwotICAgICAgICBzd2l0
Y2ggKGNvbXBvbmVudHNQZXJQaXhlbCkgewotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBp
ZiAoYml0c1BlckNvbXBvbmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQg
PSBrU291cmNlRm9ybWF0QVI4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNy
Y0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRBUjE2QmlnIDog
a1NvdXJjZUZvcm1hdEFSMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2Fz
ZSA0OgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkKLSAgICAgICAgICAg
ICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdEFSR0I4OwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtT
b3VyY2VGb3JtYXRBUkdCMTZCaWcgOiBrU291cmNlRm9ybWF0QVJHQjE2TGl0dGxlOwotICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7
Ci0gICAgICAgIH0KKyAgICAgICAgYWxwaGFGb3JtYXQgPSBrQWxwaGFGb3JtYXRGaXJzdDsKICAg
ICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhRmlyc3Q6CiAgICAgICAgIC8vIFRo
aXMgcGF0aCBpcyBvbmx5IGFjY2Vzc2libGUgZm9yIE1hY09TIGVhcmxpZXIgdGhhbiAxMC42LjQu
CiAgICAgICAgIGlmIChwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbmVlZGVkQWxwaGFP
cCA9IGtBbHBoYURvUHJlbXVsdGlwbHk7Ci0gICAgICAgIHN3aXRjaCAoY29tcG9uZW50c1BlclBp
eGVsKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmIChiaXRzUGVyQ29tcG9uZW50
ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IGtTb3VyY2VGb3JtYXRBODsK
LSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0gc3JjQnl0
ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0QTE2QmlnIDoga1NvdXJjZUZvcm1hdEExNkxpdHRs
ZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAo
Yml0c1BlckNvbXBvbmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBr
U291cmNlRm9ybWF0QVI4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0Rh
dGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRBUjE2QmlnIDoga1Nv
dXJjZUZvcm1hdEFSMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0
OgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkKLSAgICAgICAgICAgICAg
ICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdEFSR0I4OwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3Vy
Y2VGb3JtYXRBUkdCMTZCaWcgOiBrU291cmNlRm9ybWF0QVJHQjE2TGl0dGxlOwotICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgICAgIH0KKyAgICAgICAgYWxwaGFGb3JtYXQgPSBrQWxwaGFGb3JtYXRGaXJzdDsKICAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhTm9uZVNraXBGaXJzdDoKICAgICAgICAg
Ly8gVGhpcyBwYXRoIGlzIG9ubHkgYWNjZXNzaWJsZSBmb3IgTWFjT1MgZWFybGllciB0aGFuIDEw
LjYuNC4KLSAgICAgICAgc3dpdGNoIChjb21wb25lbnRzUGVyUGl4ZWwpIHsKLSAgICAgICAgY2Fz
ZSAyOgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkKLSAgICAgICAgICAg
ICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdEFSODsKLSAgICAgICAgICAgIGVsc2UK
LSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291
cmNlRm9ybWF0QVIxNkJpZyA6IGtTb3VyY2VGb3JtYXRBUjE2TGl0dGxlOwotICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmIChiaXRzUGVyQ29tcG9uZW50
ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IGtTb3VyY2VGb3JtYXRBUkdC
ODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0gc3Jj
Qnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0QVJHQjE2QmlnIDoga1NvdXJjZUZvcm1hdEFS
R0IxNkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGFscGhhRm9ybWF0ID0ga0Fs
cGhhRm9ybWF0Rmlyc3Q7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVBy
ZW11bHRpcGxpZWRMYXN0OgogICAgICAgICAvLyBUaGlzIGlzIGEgc3BlY2lhbCBjYXNlIGZvciB0
ZXhJbWFnZTJEIHdpdGggSFRNTENhbnZhc0VsZW1lbnQgaW5wdXQsCkBAIC0xNzIsODggKzE3Miwy
NiBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hCiAgICAgICAgIEFT
U0VSVCghaW1hZ2UtPmRhdGEoKSk7CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkKICAg
ICAgICAgICAgIG5lZWRlZEFscGhhT3AgPSBrQWxwaGFEb1VubXVsdGlwbHk7Ci0gICAgICAgIHN3
aXRjaCAoY29tcG9uZW50c1BlclBpeGVsKSB7Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAg
IGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1h
dCA9IGtTb3VyY2VGb3JtYXRSQTg7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
c3JjRGF0YUZvcm1hdCA9IHNyY0J5dGVPcmRlcjE2QmlnID8ga1NvdXJjZUZvcm1hdFJBMTZCaWcg
OiBrU291cmNlRm9ybWF0UkExNkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBj
YXNlIDQ6Ci0gICAgICAgICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSA4KQotICAgICAgICAg
ICAgICAgIHNyY0RhdGFGb3JtYXQgPSBrU291cmNlRm9ybWF0UkdCQTg7Ci0gICAgICAgICAgICBl
bHNlCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IHNyY0J5dGVPcmRlcjE2QmlnID8g
a1NvdXJjZUZvcm1hdFJHQkExNkJpZyA6IGtTb3VyY2VGb3JtYXRSR0JBMTZMaXR0bGU7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKLSAgICAgICAgfQorICAgICAgICBhbHBoYUZvcm1hdCA9IGtBbHBoYUZvcm1hdExhc3Q7CiAg
ICAgICAgIGJyZWFrOwogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYUxhc3Q6CiAgICAgICAgIGlmIChw
cmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbmVlZGVkQWxwaGFPcCA9IGtBbHBoYURvUHJl
bXVsdGlwbHk7Ci0gICAgICAgIHN3aXRjaCAoY29tcG9uZW50c1BlclBpeGVsKSB7Ci0gICAgICAg
IGNhc2UgMToKLSAgICAgICAgICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDgpCi0gICAgICAg
ICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IGtTb3VyY2VGb3JtYXRBODsKLSAgICAgICAgICAgIGVs
c2UKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBr
U291cmNlRm9ybWF0QTE2QmlnIDogIGtTb3VyY2VGb3JtYXRBMTZMaXR0bGU7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21wb25l
bnQgPT0gOCkKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdFJB
ODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0gc3Jj
Qnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0UkExNkJpZyA6ICBrU291cmNlRm9ybWF0UkEx
NkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAg
ICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3Jt
YXQgPSBrU291cmNlRm9ybWF0UkdCQTg7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgc3JjRGF0YUZvcm1hdCA9IHNyY0J5dGVPcmRlcjE2QmlnID8ga1NvdXJjZUZvcm1hdFJHQkEx
NkJpZyA6IGtTb3VyY2VGb3JtYXRSR0JBMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAg
ICAgICBhbHBoYUZvcm1hdCA9IGtBbHBoYUZvcm1hdExhc3Q7CiAgICAgICAgIGJyZWFrOwogICAg
IGNhc2Uga0NHSW1hZ2VBbHBoYU5vbmVTa2lwTGFzdDoKLSAgICAgICAgc3dpdGNoIChjb21wb25l
bnRzUGVyUGl4ZWwpIHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKGJpdHNQZXJD
b21wb25lbnQgPT0gOCkKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZv
cm1hdFJBODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0
ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0UkExNkJpZyA6IGtTb3VyY2VGb3Jt
YXRSQTE2TGl0dGxlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAg
ICAgICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0
YUZvcm1hdCA9IGtTb3VyY2VGb3JtYXRSR0JBODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBzcmNEYXRhRm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0
UkdCQTE2QmlnIDogIGtTb3VyY2VGb3JtYXRSR0JBMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQorICAgICAgICBhbHBoYUZvcm1hdCA9IGtBbHBoYUZvcm1hdExhc3Q7CiAgICAgICAgIGJyZWFr
OwogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYU5vbmU6Ci0gICAgICAgIHN3aXRjaCAoY29tcG9uZW50
c1BlclBpeGVsKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmIChiaXRzUGVyQ29t
cG9uZW50ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IGtTb3VyY2VGb3Jt
YXRSODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0g
c3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0UjE2QmlnIDoga1NvdXJjZUZvcm1hdFIx
NkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDM6Ci0gICAgICAgICAg
ICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3Jt
YXQgPSBrU291cmNlRm9ybWF0UkdCODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICBzcmNEYXRhRm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0UkdCMTZC
aWcgOiBrU291cmNlRm9ybWF0UkdCMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAg
ICBhbHBoYUZvcm1hdCA9IGtBbHBoYUZvcm1hdE5vbmU7CiAgICAgICAgIGJyZWFrOwogICAgIGRl
ZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisgICAgU291cmNlRGF0YUZvcm1h
dCBzcmNEYXRhRm9ybWF0ID0gZ2V0U291cmNlRGF0YUZvcm1hdChjb21wb25lbnRzUGVyUGl4ZWws
IGFscGhhRm9ybWF0LCBiaXRzUGVyQ29tcG9uZW50ID09IDE2LCBzcmNCeXRlT3JkZXIxNkJpZyk7
CisgICAgaWYgKHNyY0RhdGFGb3JtYXQgPT0ga1NvdXJjZUZvcm1hdFVuZGVmaW5lZCkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCiAgICAgUmV0YWluUHRyPENGRGF0YVJlZj4gcGl4ZWxEYXRhOwog
ICAgIHBpeGVsRGF0YS5hZG9wdENGKENHRGF0YVByb3ZpZGVyQ29weURhdGEoQ0dJbWFnZUdldERh
dGFQcm92aWRlcihjZ0ltYWdlKSkpOwogICAgIGlmICghcGl4ZWxEYXRhKQo=
</data>
<flag name="commit-queue"
          id="61493"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>71451</attachid>
            <date>2010-10-21 10:09:59 -0700</date>
            <delta_ts>2010-10-27 11:27:19 -0700</delta_ts>
            <desc>revised patch: remove an extra whitespace</desc>
            <filename>cg.patch</filename>
            <type>text/plain</type>
            <size>12976</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDI0NCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMTAtMjEgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByZWZhY3Rv
ciB0aGUgbmVzdGVkIGxhcmdlIHN3aXRjaCBzdGF0ZW1lbnRzIGluIEdyYXBoaWNzQ29udGV4dDNE
Q0cuY3BwOmdldEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzAyNworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9QYWNraW5nKTogQVNTRVJUIGZh
bHNlIGlmIHVuZGVmaW5lZCBmb3JtYXQgaXMgcGFzc2VkIGluLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IEFkZCBrU291cmNlRm9ybWF0VW5kZWZpbmVk
IGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTb3VyY2VEYXRhRm9ybWF0KTogRGVjaWRlIHNv
dXJjZSBkYXRhIGZvcm1hdCBmcm9tIGNvbXBvbmVudHNQZXJQaXhlbCwgYWxwaGEgZm9ybWF0LCBi
aXRzUGVyQ29tcG9uZXQsIGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRJbWFnZURhdGEpOiBSZWZhY3RvciB0aGUgY29kZSB0byB1c2UgZ2V0U291cmNlRGF0YUZv
cm1hdCBhbmQgcmVtb3ZlIG5lc3RlZCBzd2l0Y2hlcy4KKwogMjAxMC0xMC0yMSAgUGF2ZWwgRmVs
ZG1hbiAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5
IFNlbWlraGF0c2t5LgpJbmRleDogV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5jcHAJKHJldmlzaW9uIDcwMTYzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9HcmFwaGljc0NvbnRleHQzRC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk0NSw2ICs5
NDUsOCBAQCBzdGF0aWMgdm9pZCBkb1BhY2tpbmcoY29uc3Qgdm9pZCogc291cmNlCiAgICAgICAg
IGRvVW5wYWNraW5nQW5kUGFja2luZzx1aW50MTZfdCwgRGVzdFR5cGUsIHVucGFja0ExNkJpZ1Rv
UkdCQTgsIHBhY2tpbmdGdW5jPihzdGF0aWNfY2FzdDxjb25zdCB1aW50MTZfdCo+KHNvdXJjZURh
dGEpLCB3aWR0aCwgaGVpZ2h0LCBzb3VyY2VFbGVtZW50c1BlclBpeGVsLCBzb3VyY2VFbGVtZW50
c1BlclJvdywgZGVzdGluYXRpb25EYXRhLCBkZXN0aW5hdGlvbkVsZW1lbnRzUGVyUGl4ZWwpOwog
ICAgICAgICBicmVhazsKICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUKGZhbHNl
KTsKICAgICB9CiB9CiAKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNELmgJKHJldmlzaW9uIDcwMTYzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9HcmFwaGljc0NvbnRleHQzRC5oCSh3b3JraW5nIGNvcHkpCkBAIC01NjYsNyArNTY2LDgg
QEAgcHVibGljOgogICAgICAgICBrU291cmNlRm9ybWF0QVIxNkJpZywKICAgICAgICAga1NvdXJj
ZUZvcm1hdEE4LAogICAgICAgICBrU291cmNlRm9ybWF0QTE2TGl0dGxlLAotICAgICAgICBrU291
cmNlRm9ybWF0QTE2QmlnCisgICAgICAgIGtTb3VyY2VGb3JtYXRBMTZCaWcsCisgICAgICAgIGtT
b3VyY2VGb3JtYXRVbmRlZmluZWQKICAgICB9OwogCiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4
OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0
M0RDRy5jcHAJKHJldmlzaW9uIDcwMTYzKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
Zy9HcmFwaGljc0NvbnRleHQzRENHLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNTQg
QEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitlbnVtIFNvdXJjZURhdGFGb3JtYXRCYXNlIHsK
KyAgICBrU291cmNlRm9ybWF0QmFzZVIgPSAwLAorICAgIGtTb3VyY2VGb3JtYXRCYXNlQSwKKyAg
ICBrU291cmNlRm9ybWF0QmFzZVJBLAorICAgIGtTb3VyY2VGb3JtYXRCYXNlQVIsCisgICAga1Nv
dXJjZUZvcm1hdEJhc2VSR0IsCisgICAga1NvdXJjZUZvcm1hdEJhc2VSR0JBLAorICAgIGtTb3Vy
Y2VGb3JtYXRCYXNlQVJHQiwKKyAgICBrU291cmNlRm9ybWF0QmFzZVVuZGVmaW5lZAorfTsKKwor
ZW51bSBBbHBoYUZvcm1hdCB7CisgICAga0FscGhhRm9ybWF0Tm9uZSA9IDAsCisgICAga0FscGhh
Rm9ybWF0Rmlyc3QsCisgICAga0FscGhhRm9ybWF0TGFzdCwKK307CisKK3N0YXRpYyBHcmFwaGlj
c0NvbnRleHQzRDo6U291cmNlRGF0YUZvcm1hdCBnZXRTb3VyY2VEYXRhRm9ybWF0KHVuc2lnbmVk
IGludCBjb21wb25lbnRzUGVyUGl4ZWwsIEFscGhhRm9ybWF0IGFscGhhRm9ybWF0LCBib29sIGJp
dDE2LCBib29sIGJpZ0VuZGlhbikKK3sKKyAgICBjb25zdCBzdGF0aWMgU291cmNlRGF0YUZvcm1h
dEJhc2UgdGFibGVGb3JtYXRCYXNlWzRdWzNdID0geyAvLyBjb21wb25lbnRzUGVyUGl4ZWwgeCBB
bHBoYUZvcm1hdAorICAgICAgICAvLyBrQWxwaGFGb3JtYXROb25lICAgICAgICAgICBrQWxwaGFG
b3JtYXRGaXJzdCAgICAgICAgICAga0FscGhhRm9ybWF0TGFzdAorICAgICAgICB7IGtTb3VyY2VG
b3JtYXRCYXNlUiwgICAgICAgICBrU291cmNlRm9ybWF0QmFzZUEsICAgICAgICAga1NvdXJjZUZv
cm1hdEJhc2VBIH0sICAgICAgICAgLy8gMSBjb21wb25lbnRzUGVyUGl4ZWwKKyAgICAgICAgeyBr
U291cmNlRm9ybWF0QmFzZVVuZGVmaW5lZCwga1NvdXJjZUZvcm1hdEJhc2VBUiwgICAgICAgIGtT
b3VyY2VGb3JtYXRCYXNlUkEgfSwgICAgICAgIC8vIDIgY29tcG9uZW50c1BlclBpeGVsCisgICAg
ICAgIHsga1NvdXJjZUZvcm1hdEJhc2VSR0IsICAgICAgIGtTb3VyY2VGb3JtYXRCYXNlVW5kZWZp
bmVkLCBrU291cmNlRm9ybWF0QmFzZVVuZGVmaW5lZCB9LCAvLyAzIGNvbXBvbmVudHNQZXJQaXhl
bAorICAgICAgICB7IGtTb3VyY2VGb3JtYXRCYXNlVW5kZWZpbmVkLCBrU291cmNlRm9ybWF0QmFz
ZUFSR0IsICAgICAga1NvdXJjZUZvcm1hdEJhc2VSR0JBIH0gICAgICAgLy8gNCBjb21wb25lbnRz
UGVyUGl4ZWwKKyAgICB9OworICAgIGNvbnN0IHN0YXRpYyBHcmFwaGljc0NvbnRleHQzRDo6U291
cmNlRGF0YUZvcm1hdCB0YWJsZUZvcm1hdFs3XVszXSA9IHsgLy8gU291cmNlRGF0YUZvcm1hdEJh
c2UgeCBiaXRzUGVyQ29tcG9uZW50QW5kRW5kaWFuCisgICAgICAgIC8vIDhiaXRzICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgMTZiaXRzLCBsaXR0bGUgZW5kaWFuICAgICAgICAgICAg
ICAgICAgICAgICAgIDE2Yml0cywgYmlnIGVuZGlhbgorICAgICAgICB7IEdyYXBoaWNzQ29udGV4
dDNEOjprU291cmNlRm9ybWF0UjgsICAgIEdyYXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0
UjE2TGl0dGxlLCAgICBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdFIxNkJpZyB9LAor
ICAgICAgICB7IEdyYXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0QTgsICAgIEdyYXBoaWNz
Q29udGV4dDNEOjprU291cmNlRm9ybWF0QTE2TGl0dGxlLCAgICBHcmFwaGljc0NvbnRleHQzRDo6
a1NvdXJjZUZvcm1hdEExNkJpZyB9LAorICAgICAgICB7IEdyYXBoaWNzQ29udGV4dDNEOjprU291
cmNlRm9ybWF0UkE4LCAgIEdyYXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0UkExNkxpdHRs
ZSwgICBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdFJBMTZCaWcgfSwKKyAgICAgICAg
eyBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdEFSOCwgICBHcmFwaGljc0NvbnRleHQz
RDo6a1NvdXJjZUZvcm1hdEFSMTZMaXR0bGUsICAgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VG
b3JtYXRBUjE2QmlnIH0sCisgICAgICAgIHsgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VGb3Jt
YXRSR0I4LCAgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VGb3JtYXRSR0IxNkxpdHRsZSwgIEdy
YXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0UkdCMTZCaWcgfSwKKyAgICAgICAgeyBHcmFw
aGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdFJHQkE4LCBHcmFwaGljc0NvbnRleHQzRDo6a1Nv
dXJjZUZvcm1hdFJHQkExNkxpdHRsZSwgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VGb3JtYXRS
R0JBMTZCaWcgfSwKKyAgICAgICAgeyBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdEFS
R0I4LCBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdEFSR0IxNkxpdHRsZSwgR3JhcGhp
Y3NDb250ZXh0M0Q6OmtTb3VyY2VGb3JtYXRBUkdCMTZCaWcgfQorICAgIH07CisKKyAgICBBU1NF
UlQoY29tcG9uZW50c1BlclBpeGVsIDw9IDQgJiYgY29tcG9uZW50c1BlclBpeGVsID4gMCk7Cisg
ICAgU291cmNlRGF0YUZvcm1hdEJhc2UgZm9ybWF0QmFzZSA9IHRhYmxlRm9ybWF0QmFzZVtjb21w
b25lbnRzUGVyUGl4ZWwgLSAxXVthbHBoYUZvcm1hdF07CisgICAgaWYgKGZvcm1hdEJhc2UgPT0g
a1NvdXJjZUZvcm1hdEJhc2VVbmRlZmluZWQpCisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRl
eHQzRDo6a1NvdXJjZUZvcm1hdFVuZGVmaW5lZDsKKyAgICBpZiAoIWJpdDE2KQorICAgICAgICBy
ZXR1cm4gdGFibGVGb3JtYXRbZm9ybWF0QmFzZV1bMF07CisgICAgaWYgKCFiaWdFbmRpYW4pCisg
ICAgICAgIHJldHVybiB0YWJsZUZvcm1hdFtmb3JtYXRCYXNlXVsxXTsKKyAgICByZXR1cm4gdGFi
bGVGb3JtYXRbZm9ybWF0QmFzZV1bMl07Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6Omdl
dEltYWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbnQgdHlwZSwKQEAgLTYyLDYgKzExMCw3IEBAIGJvb2wgR3JhcGhp
Y3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWEKICAgICAgICAgY2dJbWFnZSA9IGltYWdlLT5u
YXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghY2dJbWFnZSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOworCiAgICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNnSW1h
Z2UpOwogICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOwogICAg
IGlmICghd2lkdGggfHwgIWhlaWdodCkKQEAgLTczLDYgKzEyMiw3IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWEKICAgICBpZiAoYml0c1BlclBpeGVsICUgYml0c1Bl
ckNvbXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNpemVfdCBjb21wb25lbnRz
UGVyUGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVyQ29tcG9uZW50OworCiAgICAgYm9vbCBz
cmNCeXRlT3JkZXIxNkJpZyA9IGZhbHNlOwogICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDE2
KSB7CiAgICAgICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8o
Y2dJbWFnZSk7CkBAIC05Myw4ICsxNDMsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJ
bWFnZURhdGEoSW1hCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9
Ci0gICAgU291cmNlRGF0YUZvcm1hdCBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdFJHQkE4
OworCiAgICAgQWxwaGFPcCBuZWVkZWRBbHBoYU9wID0ga0FscGhhRG9Ob3RoaW5nOworICAgIEFs
cGhhRm9ybWF0IGFscGhhRm9ybWF0ID0ga0FscGhhRm9ybWF0Tm9uZTsKICAgICBzd2l0Y2ggKENH
SW1hZ2VHZXRBbHBoYUluZm8oY2dJbWFnZSkpIHsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFQcmVt
dWx0aXBsaWVkRmlyc3Q6CiAgICAgICAgIC8vIFRoaXMgcGF0aCBpcyBvbmx5IGFjY2Vzc2libGUg
Zm9yIE1hY09TIGVhcmxpZXIgdGhhbiAxMC42LjQuCkBAIC0xMDMsNjggKzE1NCwxNyBAQCBib29s
IEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFnZURhdGEoSW1hCiAgICAgICAgIEFTU0VSVCghaW1h
Z2UtPmRhdGEoKSk7CiAgICAgICAgIGlmICghcHJlbXVsdGlwbHlBbHBoYSkKICAgICAgICAgICAg
IG5lZWRlZEFscGhhT3AgPSBrQWxwaGFEb1VubXVsdGlwbHk7Ci0gICAgICAgIHN3aXRjaCAoY29t
cG9uZW50c1BlclBpeGVsKSB7Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmIChiaXRz
UGVyQ29tcG9uZW50ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IGtTb3Vy
Y2VGb3JtYXRBUjg7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZv
cm1hdCA9IHNyY0J5dGVPcmRlcjE2QmlnID8ga1NvdXJjZUZvcm1hdEFSMTZCaWcgOiBrU291cmNl
Rm9ybWF0QVIxNkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6Ci0g
ICAgICAgICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNy
Y0RhdGFGb3JtYXQgPSBrU291cmNlRm9ybWF0QVJHQjg7Ci0gICAgICAgICAgICBlbHNlCi0gICAg
ICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IHNyY0J5dGVPcmRlcjE2QmlnID8ga1NvdXJjZUZv
cm1hdEFSR0IxNkJpZyA6IGtTb3VyY2VGb3JtYXRBUkdCMTZMaXR0bGU7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAg
ICAgfQorICAgICAgICBhbHBoYUZvcm1hdCA9IGtBbHBoYUZvcm1hdEZpcnN0OwogICAgICAgICBi
cmVhazsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFGaXJzdDoKICAgICAgICAgLy8gVGhpcyBwYXRo
IGlzIG9ubHkgYWNjZXNzaWJsZSBmb3IgTWFjT1MgZWFybGllciB0aGFuIDEwLjYuNC4KICAgICAg
ICAgaWYgKHByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBuZWVkZWRBbHBoYU9wID0ga0Fs
cGhhRG9QcmVtdWx0aXBseTsKLSAgICAgICAgc3dpdGNoIChjb21wb25lbnRzUGVyUGl4ZWwpIHsK
LSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkK
LSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdEE4OwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIx
NkJpZyA/IGtTb3VyY2VGb3JtYXRBMTZCaWcgOiBrU291cmNlRm9ybWF0QTE2TGl0dGxlOwotICAg
ICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmIChiaXRzUGVy
Q29tcG9uZW50ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IGtTb3VyY2VG
b3JtYXRBUjg7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1h
dCA9IHNyY0J5dGVPcmRlcjE2QmlnID8ga1NvdXJjZUZvcm1hdEFSMTZCaWcgOiBrU291cmNlRm9y
bWF0QVIxNkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6Ci0gICAg
ICAgICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNyY0Rh
dGFGb3JtYXQgPSBrU291cmNlRm9ybWF0QVJHQjg7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAg
ICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IHNyY0J5dGVPcmRlcjE2QmlnID8ga1NvdXJjZUZvcm1h
dEFSR0IxNkJpZyA6IGtTb3VyY2VGb3JtYXRBUkdCMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVh
azsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
fQorICAgICAgICBhbHBoYUZvcm1hdCA9IGtBbHBoYUZvcm1hdEZpcnN0OwogICAgICAgICBicmVh
azsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0OgogICAgICAgICAvLyBUaGlz
IHBhdGggaXMgb25seSBhY2Nlc3NpYmxlIGZvciBNYWNPUyBlYXJsaWVyIHRoYW4gMTAuNi40Lgot
ICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudHNQZXJQaXhlbCkgewotICAgICAgICBjYXNlIDI6Ci0g
ICAgICAgICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNy
Y0RhdGFGb3JtYXQgPSBrU291cmNlRm9ybWF0QVI4OwotICAgICAgICAgICAgZWxzZQotICAgICAg
ICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3Jt
YXRBUjE2QmlnIDoga1NvdXJjZUZvcm1hdEFSMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkK
LSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdEFSR0I4OwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3Jk
ZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRBUkdCMTZCaWcgOiBrU291cmNlRm9ybWF0QVJHQjE2TGl0
dGxlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgYWxwaGFGb3JtYXQgPSBrQWxwaGFGb3Jt
YXRGaXJzdDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhUHJlbXVsdGlw
bGllZExhc3Q6CiAgICAgICAgIC8vIFRoaXMgaXMgYSBzcGVjaWFsIGNhc2UgZm9yIHRleEltYWdl
MkQgd2l0aCBIVE1MQ2FudmFzRWxlbWVudCBpbnB1dCwKQEAgLTE3Miw4OCArMTcyLDI2IEBAIGJv
b2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWEKICAgICAgICAgQVNTRVJUKCFp
bWFnZS0+ZGF0YSgpKTsKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAg
ICAgbmVlZGVkQWxwaGFPcCA9IGtBbHBoYURvVW5tdWx0aXBseTsKLSAgICAgICAgc3dpdGNoIChj
b21wb25lbnRzUGVyUGl4ZWwpIHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKGJp
dHNQZXJDb21wb25lbnQgPT0gOCkKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1Nv
dXJjZUZvcm1hdFJBODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzcmNEYXRh
Rm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0UkExNkJpZyA6IGtTb3Vy
Y2VGb3JtYXRSQTE2TGl0dGxlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNDoK
LSAgICAgICAgICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDgpCi0gICAgICAgICAgICAgICAg
c3JjRGF0YUZvcm1hdCA9IGtTb3VyY2VGb3JtYXRSR0JBODsKLSAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291cmNl
Rm9ybWF0UkdCQTE2QmlnIDoga1NvdXJjZUZvcm1hdFJHQkExNkxpdHRsZTsKLSAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
ICAgICB9CisgICAgICAgIGFscGhhRm9ybWF0ID0ga0FscGhhRm9ybWF0TGFzdDsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhTGFzdDoKICAgICAgICAgaWYgKHByZW11bHRp
cGx5QWxwaGEpCiAgICAgICAgICAgICBuZWVkZWRBbHBoYU9wID0ga0FscGhhRG9QcmVtdWx0aXBs
eTsKLSAgICAgICAgc3dpdGNoIChjb21wb25lbnRzUGVyUGl4ZWwpIHsKLSAgICAgICAgY2FzZSAx
OgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkKLSAgICAgICAgICAgICAg
ICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdEE4OwotICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VG
b3JtYXRBMTZCaWcgOiAga1NvdXJjZUZvcm1hdEExNkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSA4
KQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBrU291cmNlRm9ybWF0UkE4OwotICAg
ICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3Jk
ZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRSQTE2QmlnIDogIGtTb3VyY2VGb3JtYXRSQTE2TGl0dGxl
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAgICAgICAgIGlmIChi
aXRzUGVyQ29tcG9uZW50ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IGtT
b3VyY2VGb3JtYXRSR0JBODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzcmNE
YXRhRm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0UkdCQTE2QmlnIDog
a1NvdXJjZUZvcm1hdFJHQkExNkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBk
ZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGFs
cGhhRm9ybWF0ID0ga0FscGhhRm9ybWF0TGFzdDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBr
Q0dJbWFnZUFscGhhTm9uZVNraXBMYXN0OgotICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudHNQZXJQ
aXhlbCkgewotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoYml0c1BlckNvbXBvbmVu
dCA9PSA4KQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBrU291cmNlRm9ybWF0UkE4
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNC
eXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRSQTE2QmlnIDoga1NvdXJjZUZvcm1hdFJBMTZM
aXR0bGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAg
aWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0
ID0ga1NvdXJjZUZvcm1hdFJHQkE4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAg
IHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRSR0JBMTZC
aWcgOiAga1NvdXJjZUZvcm1hdFJHQkExNkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAg
ICAgIGFscGhhRm9ybWF0ID0ga0FscGhhRm9ybWF0TGFzdDsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBrQ0dJbWFnZUFscGhhTm9uZToKLSAgICAgICAgc3dpdGNoIChjb21wb25lbnRzUGVyUGl4
ZWwpIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQg
PT0gOCkKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdFI4Owot
ICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRl
T3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRSMTZCaWcgOiBrU291cmNlRm9ybWF0UjE2TGl0dGxl
OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMzoKLSAgICAgICAgICAgIGlmIChi
aXRzUGVyQ29tcG9uZW50ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IGtT
b3VyY2VGb3JtYXRSR0I4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0Rh
dGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRSR0IxNkJpZyA6IGtT
b3VyY2VGb3JtYXRSR0IxNkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGFscGhh
Rm9ybWF0ID0ga0FscGhhRm9ybWF0Tm9uZTsKICAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICBTb3VyY2VEYXRhRm9ybWF0IHNyY0Rh
dGFGb3JtYXQgPSBnZXRTb3VyY2VEYXRhRm9ybWF0KGNvbXBvbmVudHNQZXJQaXhlbCwgYWxwaGFG
b3JtYXQsIGJpdHNQZXJDb21wb25lbnQgPT0gMTYsIHNyY0J5dGVPcmRlcjE2QmlnKTsKKyAgICBp
ZiAoc3JjRGF0YUZvcm1hdCA9PSBrU291cmNlRm9ybWF0VW5kZWZpbmVkKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisKICAgICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBwaXhlbERhdGE7CiAgICAgcGl4
ZWxEYXRhLmFkb3B0Q0YoQ0dEYXRhUHJvdmlkZXJDb3B5RGF0YShDR0ltYWdlR2V0RGF0YVByb3Zp
ZGVyKGNnSW1hZ2UpKSk7CiAgICAgaWYgKCFwaXhlbERhdGEpCg==
</data>
<flag name="review"
          id="61495"
          type_id="1"
          status="-"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="61496"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>72058</attachid>
            <date>2010-10-27 11:27:19 -0700</date>
            <delta_ts>2010-10-27 13:40:41 -0700</delta_ts>
            <desc>revised patch: responding to kbr&apos;s review</desc>
            <filename>cg.patch</filename>
            <type>text/plain</type>
            <size>13365</size>
            <attacher name="Zhenyao Mo">zmo</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3MDY3MSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTcgQEAKKzIwMTAtMTAtMjcgIFpoZW55YW8gTW8gIDx6bW9AZ29vZ2xlLmNvbT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICByZWZhY3Rv
ciB0aGUgbmVzdGVkIGxhcmdlIHN3aXRjaCBzdGF0ZW1lbnRzIGluIEdyYXBoaWNzQ29udGV4dDNE
Q0cuY3BwOmdldEltYWdlRGF0YSgpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD00NzAyNworCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZG9QYWNraW5nKTogQVNTRVJUIGZh
bHNlIGlmIHVuZGVmaW5lZCBmb3JtYXQgaXMgcGFzc2VkIGluLgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNELmg6IEFkZCBrU291cmNlRm9ybWF0VW5kZWZpbmVk
IGVudW0uCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RD
Ry5jcHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRTb3VyY2VEYXRhRm9ybWF0KTogRGVjaWRlIHNv
dXJjZSBkYXRhIGZvcm1hdCBmcm9tIGNvbXBvbmVudHNQZXJQaXhlbCwgYWxwaGEgZm9ybWF0LCBi
aXRzUGVyQ29tcG9uZXQsIGV0Yy4KKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dDNE
OjpnZXRJbWFnZURhdGEpOiBSZWZhY3RvciB0aGUgY29kZSB0byB1c2UgZ2V0U291cmNlRGF0YUZv
cm1hdCBhbmQgcmVtb3ZlIG5lc3RlZCBzd2l0Y2hlcy4KKwogMjAxMC0xMC0yNyAgU2F0aXNoIFNh
bXBhdGggIDxzYXRpc2hAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxp
bmcgb3V0IHI3MDY2NS4KSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3ND
b250ZXh0M0QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3Jh
cGhpY3NDb250ZXh0M0QuY3BwCShyZXZpc2lvbiA3MDY3MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05NDUsNiAr
OTQ1LDggQEAgc3RhdGljIHZvaWQgZG9QYWNraW5nKGNvbnN0IHZvaWQqIHNvdXJjZQogICAgICAg
ICBkb1VucGFja2luZ0FuZFBhY2tpbmc8dWludDE2X3QsIERlc3RUeXBlLCB1bnBhY2tBMTZCaWdU
b1JHQkE4LCBwYWNraW5nRnVuYz4oc3RhdGljX2Nhc3Q8Y29uc3QgdWludDE2X3QqPihzb3VyY2VE
YXRhKSwgd2lkdGgsIGhlaWdodCwgc291cmNlRWxlbWVudHNQZXJQaXhlbCwgc291cmNlRWxlbWVu
dHNQZXJSb3csIGRlc3RpbmF0aW9uRGF0YSwgZGVzdGluYXRpb25FbGVtZW50c1BlclBpeGVsKTsK
ICAgICAgICAgYnJlYWs7CiAgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIEFTU0VSVChmYWxz
ZSk7CiAgICAgfQogfQogCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNz
Q29udGV4dDNELmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFw
aGljc0NvbnRleHQzRC5oCShyZXZpc2lvbiA3MDY3MSkKKysrIFdlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvR3JhcGhpY3NDb250ZXh0M0QuaAkod29ya2luZyBjb3B5KQpAQCAtNTQwLDcgKzU0MCw3
IEBAIHB1YmxpYzoKICAgICAvLyB1cGxvYWRpbmcuIFRoaXMgZW51bSBtdXN0IGJlIHB1YmxpYyBi
ZWNhdXNlIGl0IGlzIGFjY2Vzc2VkCiAgICAgLy8gYnkgbm9uLW1lbWJlciBmdW5jdGlvbnMuCiAg
ICAgZW51bSBTb3VyY2VEYXRhRm9ybWF0IHsKLSAgICAgICAga1NvdXJjZUZvcm1hdFJHQkE4LAor
ICAgICAgICBrU291cmNlRm9ybWF0UkdCQTggPSAwLAogICAgICAgICBrU291cmNlRm9ybWF0UkdC
QTE2TGl0dGxlLAogICAgICAgICBrU291cmNlRm9ybWF0UkdCQTE2QmlnLAogICAgICAgICBrU291
cmNlRm9ybWF0UkdCOCwKQEAgLTU2Niw3ICs1NjYsOCBAQCBwdWJsaWM6CiAgICAgICAgIGtTb3Vy
Y2VGb3JtYXRBUjE2QmlnLAogICAgICAgICBrU291cmNlRm9ybWF0QTgsCiAgICAgICAgIGtTb3Vy
Y2VGb3JtYXRBMTZMaXR0bGUsCi0gICAgICAgIGtTb3VyY2VGb3JtYXRBMTZCaWcKKyAgICAgICAg
a1NvdXJjZUZvcm1hdEExNkJpZywKKyAgICAgICAga1NvdXJjZUZvcm1hdE51bUZvcm1hdHMKICAg
ICB9OwogCiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkluZGV4OiBXZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NnL0dyYXBoaWNzQ29udGV4dDNEQ0cuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2cvR3JhcGhpY3NDb250ZXh0M0RDRy5jcHAJKHJldmlzaW9uIDcwNjcx
KQorKysgV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jZy9HcmFwaGljc0NvbnRleHQzRENHLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNDEsNiArNDEsNTUgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCitlbnVtIFNvdXJjZURhdGFGb3JtYXRCYXNlIHsKKyAgICBTb3VyY2VGb3JtYXRCYXNlUiA9
IDAsCisgICAgU291cmNlRm9ybWF0QmFzZUEsCisgICAgU291cmNlRm9ybWF0QmFzZVJBLAorICAg
IFNvdXJjZUZvcm1hdEJhc2VBUiwKKyAgICBTb3VyY2VGb3JtYXRCYXNlUkdCLAorICAgIFNvdXJj
ZUZvcm1hdEJhc2VSR0JBLAorICAgIFNvdXJjZUZvcm1hdEJhc2VBUkdCLAorICAgIFNvdXJjZUZv
cm1hdEJhc2VOdW1Gb3JtYXRzCit9OworCitlbnVtIEFscGhhRm9ybWF0IHsKKyAgICBBbHBoYUZv
cm1hdE5vbmUgPSAwLAorICAgIEFscGhhRm9ybWF0Rmlyc3QsCisgICAgQWxwaGFGb3JtYXRMYXN0
LAorICAgIEFscGhhRm9ybWF0TnVtRm9ybWF0cworfTsKKworc3RhdGljIEdyYXBoaWNzQ29udGV4
dDNEOjpTb3VyY2VEYXRhRm9ybWF0IGdldFNvdXJjZURhdGFGb3JtYXQodW5zaWduZWQgaW50IGNv
bXBvbmVudHNQZXJQaXhlbCwgQWxwaGFGb3JtYXQgYWxwaGFGb3JtYXQsIGJvb2wgaXMxNkJpdEZv
cm1hdCwgYm9vbCBiaWdFbmRpYW4pCit7CisgICAgY29uc3Qgc3RhdGljIFNvdXJjZURhdGFGb3Jt
YXRCYXNlIGZvcm1hdFRhYmxlQmFzZVs0XVtBbHBoYUZvcm1hdE51bUZvcm1hdHNdID0geyAvLyBj
b21wb25lbnRzUGVyUGl4ZWwgeCBBbHBoYUZvcm1hdAorICAgICAgICAvLyBBbHBoYUZvcm1hdE5v
bmUgICAgICAgICAgICBBbHBoYUZvcm1hdEZpcnN0ICAgICAgICAgICAgQWxwaGFGb3JtYXRMYXN0
CisgICAgICAgIHsgU291cmNlRm9ybWF0QmFzZVIsICAgICAgICAgIFNvdXJjZUZvcm1hdEJhc2VB
LCAgICAgICAgICBTb3VyY2VGb3JtYXRCYXNlQSAgICAgICAgICB9LCAvLyAxIGNvbXBvbmVudHNQ
ZXJQaXhlbAorICAgICAgICB7IFNvdXJjZUZvcm1hdEJhc2VOdW1Gb3JtYXRzLCBTb3VyY2VGb3Jt
YXRCYXNlQVIsICAgICAgICAgU291cmNlRm9ybWF0QmFzZVJBICAgICAgICAgfSwgLy8gMiBjb21w
b25lbnRzUGVyUGl4ZWwKKyAgICAgICAgeyBTb3VyY2VGb3JtYXRCYXNlUkdCLCAgICAgICAgU291
cmNlRm9ybWF0QmFzZU51bUZvcm1hdHMsIFNvdXJjZUZvcm1hdEJhc2VOdW1Gb3JtYXRzIH0sIC8v
IDMgY29tcG9uZW50c1BlclBpeGVsCisgICAgICAgIHsgU291cmNlRm9ybWF0QmFzZU51bUZvcm1h
dHMsIFNvdXJjZUZvcm1hdEJhc2VBUkdCLCAgICAgICBTb3VyY2VGb3JtYXRCYXNlUkdCQSAgICAg
ICAgfSAvLyA0IGNvbXBvbmVudHNQZXJQaXhlbAorICAgIH07CisgICAgY29uc3Qgc3RhdGljIEdy
YXBoaWNzQ29udGV4dDNEOjpTb3VyY2VEYXRhRm9ybWF0IGZvcm1hdFRhYmxlW1NvdXJjZUZvcm1h
dEJhc2VOdW1Gb3JtYXRzXVszXSA9IHsgLy8gU291cmNlRGF0YUZvcm1hdEJhc2UgeCBiaXRzUGVy
Q29tcG9uZW50QW5kRW5kaWFuCisgICAgICAgIC8vIDhiaXRzICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgMTZiaXRzLCBsaXR0bGUgZW5kaWFuICAgICAgICAgICAgICAgICAgICAgICAg
IDE2Yml0cywgYmlnIGVuZGlhbgorICAgICAgICB7IEdyYXBoaWNzQ29udGV4dDNEOjprU291cmNl
Rm9ybWF0UjgsICAgIEdyYXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0UjE2TGl0dGxlLCAg
ICBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdFIxNkJpZyB9LAorICAgICAgICB7IEdy
YXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0QTgsICAgIEdyYXBoaWNzQ29udGV4dDNEOjpr
U291cmNlRm9ybWF0QTE2TGl0dGxlLCAgICBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1h
dEExNkJpZyB9LAorICAgICAgICB7IEdyYXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0UkE4
LCAgIEdyYXBoaWNzQ29udGV4dDNEOjprU291cmNlRm9ybWF0UkExNkxpdHRsZSwgICBHcmFwaGlj
c0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdFJBMTZCaWcgfSwKKyAgICAgICAgeyBHcmFwaGljc0Nv
bnRleHQzRDo6a1NvdXJjZUZvcm1hdEFSOCwgICBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZv
cm1hdEFSMTZMaXR0bGUsICAgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VGb3JtYXRBUjE2Qmln
IH0sCisgICAgICAgIHsgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VGb3JtYXRSR0I4LCAgR3Jh
cGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VGb3JtYXRSR0IxNkxpdHRsZSwgIEdyYXBoaWNzQ29udGV4
dDNEOjprU291cmNlRm9ybWF0UkdCMTZCaWcgfSwKKyAgICAgICAgeyBHcmFwaGljc0NvbnRleHQz
RDo6a1NvdXJjZUZvcm1hdFJHQkE4LCBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdFJH
QkExNkxpdHRsZSwgR3JhcGhpY3NDb250ZXh0M0Q6OmtTb3VyY2VGb3JtYXRSR0JBMTZCaWcgfSwK
KyAgICAgICAgeyBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdEFSR0I4LCBHcmFwaGlj
c0NvbnRleHQzRDo6a1NvdXJjZUZvcm1hdEFSR0IxNkxpdHRsZSwgR3JhcGhpY3NDb250ZXh0M0Q6
OmtTb3VyY2VGb3JtYXRBUkdCMTZCaWcgfQorICAgIH07CisKKyAgICBBU1NFUlQoY29tcG9uZW50
c1BlclBpeGVsIDw9IDQgJiYgY29tcG9uZW50c1BlclBpeGVsID4gMCk7CisgICAgU291cmNlRGF0
YUZvcm1hdEJhc2UgZm9ybWF0QmFzZSA9IGZvcm1hdFRhYmxlQmFzZVtjb21wb25lbnRzUGVyUGl4
ZWwgLSAxXVthbHBoYUZvcm1hdF07CisgICAgaWYgKGZvcm1hdEJhc2UgPT0gU291cmNlRm9ybWF0
QmFzZU51bUZvcm1hdHMpCisgICAgICAgIHJldHVybiBHcmFwaGljc0NvbnRleHQzRDo6a1NvdXJj
ZUZvcm1hdE51bUZvcm1hdHM7CisgICAgaWYgKCFpczE2Qml0Rm9ybWF0KQorICAgICAgICByZXR1
cm4gZm9ybWF0VGFibGVbZm9ybWF0QmFzZV1bMF07CisgICAgaWYgKCFiaWdFbmRpYW4pCisgICAg
ICAgIHJldHVybiBmb3JtYXRUYWJsZVtmb3JtYXRCYXNlXVsxXTsKKyAgICByZXR1cm4gZm9ybWF0
VGFibGVbZm9ybWF0QmFzZV1bMl07Cit9CisKIGJvb2wgR3JhcGhpY3NDb250ZXh0M0Q6OmdldElt
YWdlRGF0YShJbWFnZSogaW1hZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNpZ25lZCBpbnQgdHlwZSwKQEAgLTYyLDYgKzExMSw3IEBAIGJvb2wgR3JhcGhpY3ND
b250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWEKICAgICAgICAgY2dJbWFnZSA9IGltYWdlLT5uYXRp
dmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwogICAgIGlmICghY2dJbWFnZSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOworCiAgICAgc2l6ZV90IHdpZHRoID0gQ0dJbWFnZUdldFdpZHRoKGNnSW1hZ2Up
OwogICAgIHNpemVfdCBoZWlnaHQgPSBDR0ltYWdlR2V0SGVpZ2h0KGNnSW1hZ2UpOwogICAgIGlm
ICghd2lkdGggfHwgIWhlaWdodCkKQEAgLTczLDYgKzEyMyw3IEBAIGJvb2wgR3JhcGhpY3NDb250
ZXh0M0Q6OmdldEltYWdlRGF0YShJbWEKICAgICBpZiAoYml0c1BlclBpeGVsICUgYml0c1BlckNv
bXBvbmVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHNpemVfdCBjb21wb25lbnRzUGVy
UGl4ZWwgPSBiaXRzUGVyUGl4ZWwgLyBiaXRzUGVyQ29tcG9uZW50OworCiAgICAgYm9vbCBzcmNC
eXRlT3JkZXIxNkJpZyA9IGZhbHNlOwogICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDE2KSB7
CiAgICAgICAgIENHQml0bWFwSW5mbyBiaXRJbmZvID0gQ0dJbWFnZUdldEJpdG1hcEluZm8oY2dJ
bWFnZSk7CkBAIC05Myw4ICsxNDQsOSBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEOjpnZXRJbWFn
ZURhdGEoSW1hCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9Ci0g
ICAgU291cmNlRGF0YUZvcm1hdCBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdFJHQkE4Owor
CiAgICAgQWxwaGFPcCBuZWVkZWRBbHBoYU9wID0ga0FscGhhRG9Ob3RoaW5nOworICAgIEFscGhh
Rm9ybWF0IGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXROb25lOwogICAgIHN3aXRjaCAoQ0dJbWFn
ZUdldEFscGhhSW5mbyhjZ0ltYWdlKSkgewogICAgIGNhc2Uga0NHSW1hZ2VBbHBoYVByZW11bHRp
cGxpZWRGaXJzdDoKICAgICAgICAgLy8gVGhpcyBwYXRoIGlzIG9ubHkgYWNjZXNzaWJsZSBmb3Ig
TWFjT1MgZWFybGllciB0aGFuIDEwLjYuNC4KQEAgLTEwMyw2OCArMTU1LDE3IEBAIGJvb2wgR3Jh
cGhpY3NDb250ZXh0M0Q6OmdldEltYWdlRGF0YShJbWEKICAgICAgICAgQVNTRVJUKCFpbWFnZS0+
ZGF0YSgpKTsKICAgICAgICAgaWYgKCFwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbmVl
ZGVkQWxwaGFPcCA9IGtBbHBoYURvVW5tdWx0aXBseTsKLSAgICAgICAgc3dpdGNoIChjb21wb25l
bnRzUGVyUGl4ZWwpIHsKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKGJpdHNQZXJD
b21wb25lbnQgPT0gOCkKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZv
cm1hdEFSODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0
ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0QVIxNkJpZyA6IGtTb3VyY2VGb3Jt
YXRBUjE2TGl0dGxlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgNDoKLSAgICAg
ICAgICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0
YUZvcm1hdCA9IGtTb3VyY2VGb3JtYXRBUkdCODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAg
ICAgICAgICBzcmNEYXRhRm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0
QVJHQjE2QmlnIDoga1NvdXJjZUZvcm1hdEFSR0IxNkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFr
OwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9
CisgICAgICAgIGFscGhhRm9ybWF0ID0gQWxwaGFGb3JtYXRGaXJzdDsKICAgICAgICAgYnJlYWs7
CiAgICAgY2FzZSBrQ0dJbWFnZUFscGhhRmlyc3Q6CiAgICAgICAgIC8vIFRoaXMgcGF0aCBpcyBv
bmx5IGFjY2Vzc2libGUgZm9yIE1hY09TIGVhcmxpZXIgdGhhbiAxMC42LjQuCiAgICAgICAgIGlm
IChwcmVtdWx0aXBseUFscGhhKQogICAgICAgICAgICAgbmVlZGVkQWxwaGFPcCA9IGtBbHBoYURv
UHJlbXVsdGlwbHk7Ci0gICAgICAgIHN3aXRjaCAoY29tcG9uZW50c1BlclBpeGVsKSB7Ci0gICAg
ICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDgpCi0gICAg
ICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IGtTb3VyY2VGb3JtYXRBODsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcg
PyBrU291cmNlRm9ybWF0QTE2QmlnIDoga1NvdXJjZUZvcm1hdEExNkxpdHRsZTsKLSAgICAgICAg
ICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoYml0c1BlckNvbXBv
bmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBrU291cmNlRm9ybWF0
QVI4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBz
cmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRBUjE2QmlnIDoga1NvdXJjZUZvcm1hdEFS
MTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAg
ICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9y
bWF0ID0ga1NvdXJjZUZvcm1hdEFSR0I4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRBUkdC
MTZCaWcgOiBrU291cmNlRm9ybWF0QVJHQjE2TGl0dGxlOwotICAgICAgICAgICAgYnJlYWs7Ci0g
ICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAg
ICAgICAgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdEZpcnN0OwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIGtDR0ltYWdlQWxwaGFOb25lU2tpcEZpcnN0OgogICAgICAgICAvLyBUaGlzIHBhdGgg
aXMgb25seSBhY2Nlc3NpYmxlIGZvciBNYWNPUyBlYXJsaWVyIHRoYW4gMTAuNi40LgotICAgICAg
ICBzd2l0Y2ggKGNvbXBvbmVudHNQZXJQaXhlbCkgewotICAgICAgICBjYXNlIDI6Ci0gICAgICAg
ICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNyY0RhdGFG
b3JtYXQgPSBrU291cmNlRm9ybWF0QVI4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAg
ICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRBUjE2
QmlnIDoga1NvdXJjZUZvcm1hdEFSMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkKLSAgICAg
ICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdEFSR0I4OwotICAgICAgICAg
ICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJp
ZyA/IGtTb3VyY2VGb3JtYXRBUkdCMTZCaWcgOiBrU291cmNlRm9ybWF0QVJHQjE2TGl0dGxlOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdEZpcnN0
OwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDR0ltYWdlQWxwaGFQcmVtdWx0aXBsaWVkTGFz
dDoKICAgICAgICAgLy8gVGhpcyBpcyBhIHNwZWNpYWwgY2FzZSBmb3IgdGV4SW1hZ2UyRCB3aXRo
IEhUTUxDYW52YXNFbGVtZW50IGlucHV0LApAQCAtMTcyLDg4ICsxNzMsMjYgQEAgYm9vbCBHcmFw
aGljc0NvbnRleHQzRDo6Z2V0SW1hZ2VEYXRhKEltYQogICAgICAgICBBU1NFUlQoIWltYWdlLT5k
YXRhKCkpOwogICAgICAgICBpZiAoIXByZW11bHRpcGx5QWxwaGEpCiAgICAgICAgICAgICBuZWVk
ZWRBbHBoYU9wID0ga0FscGhhRG9Vbm11bHRpcGx5OwotICAgICAgICBzd2l0Y2ggKGNvbXBvbmVu
dHNQZXJQaXhlbCkgewotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoYml0c1BlckNv
bXBvbmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBrU291cmNlRm9y
bWF0UkE4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQg
PSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRSQTE2QmlnIDoga1NvdXJjZUZvcm1h
dFJBMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAgICAg
ICAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkKLSAgICAgICAgICAgICAgICBzcmNEYXRh
Rm9ybWF0ID0ga1NvdXJjZUZvcm1hdFJHQkE4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRS
R0JBMTZCaWcgOiBrU291cmNlRm9ybWF0UkdCQTE2TGl0dGxlOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0K
KyAgICAgICAgYWxwaGFGb3JtYXQgPSBBbHBoYUZvcm1hdExhc3Q7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2Uga0NHSW1hZ2VBbHBoYUxhc3Q6CiAgICAgICAgIGlmIChwcmVtdWx0aXBseUFscGhh
KQogICAgICAgICAgICAgbmVlZGVkQWxwaGFPcCA9IGtBbHBoYURvUHJlbXVsdGlwbHk7Ci0gICAg
ICAgIHN3aXRjaCAoY29tcG9uZW50c1BlclBpeGVsKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAg
ICAgICAgIGlmIChiaXRzUGVyQ29tcG9uZW50ID09IDgpCi0gICAgICAgICAgICAgICAgc3JjRGF0
YUZvcm1hdCA9IGtTb3VyY2VGb3JtYXRBODsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAg
ICAgICBzcmNEYXRhRm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcgPyBrU291cmNlRm9ybWF0QTE2
QmlnIDogIGtTb3VyY2VGb3JtYXRBMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSAyOgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21wb25lbnQgPT0gOCkKLSAgICAg
ICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1hdFJBODsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0gc3JjQnl0ZU9yZGVyMTZCaWcg
PyBrU291cmNlRm9ybWF0UkExNkJpZyA6ICBrU291cmNlRm9ybWF0UkExNkxpdHRsZTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDQ6Ci0gICAgICAgICAgICBpZiAoYml0c1BlckNv
bXBvbmVudCA9PSA4KQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBrU291cmNlRm9y
bWF0UkdCQTg7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1h
dCA9IHNyY0J5dGVPcmRlcjE2QmlnID8ga1NvdXJjZUZvcm1hdFJHQkExNkJpZyA6IGtTb3VyY2VG
b3JtYXRSR0JBMTZMaXR0bGU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICBhbHBoYUZvcm1h
dCA9IEFscGhhRm9ybWF0TGFzdDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBrQ0dJbWFnZUFs
cGhhTm9uZVNraXBMYXN0OgotICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudHNQZXJQaXhlbCkgewot
ICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSA4KQot
ICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBrU291cmNlRm9ybWF0UkE4OwotICAgICAg
ICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBzcmNCeXRlT3JkZXIx
NkJpZyA/IGtTb3VyY2VGb3JtYXRSQTE2QmlnIDoga1NvdXJjZUZvcm1hdFJBMTZMaXR0bGU7Ci0g
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSA0OgotICAgICAgICAgICAgaWYgKGJpdHNQ
ZXJDb21wb25lbnQgPT0gOCkKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJj
ZUZvcm1hdFJHQkE4OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHNyY0RhdGFG
b3JtYXQgPSBzcmNCeXRlT3JkZXIxNkJpZyA/IGtTb3VyY2VGb3JtYXRSR0JBMTZCaWcgOiAga1Nv
dXJjZUZvcm1hdFJHQkExNkxpdHRsZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZh
dWx0OgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9CisgICAgICAgIGFscGhh
Rm9ybWF0ID0gQWxwaGFGb3JtYXRMYXN0OwogICAgICAgICBicmVhazsKICAgICBjYXNlIGtDR0lt
YWdlQWxwaGFOb25lOgotICAgICAgICBzd2l0Y2ggKGNvbXBvbmVudHNQZXJQaXhlbCkgewotICAg
ICAgICBjYXNlIDE6Ci0gICAgICAgICAgICBpZiAoYml0c1BlckNvbXBvbmVudCA9PSA4KQotICAg
ICAgICAgICAgICAgIHNyY0RhdGFGb3JtYXQgPSBrU291cmNlRm9ybWF0Ujg7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9IHNyY0J5dGVPcmRlcjE2Qmln
ID8ga1NvdXJjZUZvcm1hdFIxNkJpZyA6IGtTb3VyY2VGb3JtYXRSMTZMaXR0bGU7Ci0gICAgICAg
ICAgICBicmVhazsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICAgICAgaWYgKGJpdHNQZXJDb21w
b25lbnQgPT0gOCkKLSAgICAgICAgICAgICAgICBzcmNEYXRhRm9ybWF0ID0ga1NvdXJjZUZvcm1h
dFJHQjg7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc3JjRGF0YUZvcm1hdCA9
IHNyY0J5dGVPcmRlcjE2QmlnID8ga1NvdXJjZUZvcm1hdFJHQjE2QmlnIDoga1NvdXJjZUZvcm1h
dFJHQjE2TGl0dGxlOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAg
ICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KKyAgICAgICAgYWxwaGFGb3JtYXQgPSBB
bHBoYUZvcm1hdE5vbmU7CiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CisgICAgU291cmNlRGF0YUZvcm1hdCBzcmNEYXRhRm9ybWF0ID0g
Z2V0U291cmNlRGF0YUZvcm1hdChjb21wb25lbnRzUGVyUGl4ZWwsIGFscGhhRm9ybWF0LCBiaXRz
UGVyQ29tcG9uZW50ID09IDE2LCBzcmNCeXRlT3JkZXIxNkJpZyk7CisgICAgaWYgKHNyY0RhdGFG
b3JtYXQgPT0ga1NvdXJjZUZvcm1hdE51bUZvcm1hdHMpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KwogICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHBpeGVsRGF0YTsKICAgICBwaXhlbERhdGEuYWRv
cHRDRihDR0RhdGFQcm92aWRlckNvcHlEYXRhKENHSW1hZ2VHZXREYXRhUHJvdmlkZXIoY2dJbWFn
ZSkpKTsKICAgICBpZiAoIXBpeGVsRGF0YSkK
</data>
<flag name="review"
          id="62234"
          type_id="1"
          status="+"
          setter="kbr"
    />
    <flag name="commit-queue"
          id="62235"
          type_id="3"
          status="-"
          setter="zmo"
    />
          </attachment>
      

    </bug>

</bugzilla>