<?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>90752</bug_id>
          
          <creation_ts>2012-07-08 22:37:26 -0700</creation_ts>
          <short_desc>[Platform-Mac] Derive LocaleMac.{cpp,h} and LocalizedDateMac.cpp from LocaleWin</short_desc>
          <delta_ts>2012-07-08 23:55:15 -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>Platform</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>
          
          <blocked>90248</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter>yosin</reporter>
          <assigned_to>yosin</assigned_to>
          <cc>tkent</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>664650</commentid>
    <comment_count>0</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-07-08 22:37:26 -0700</bug_when>
    <thetext>For re-factoring LocalizeDate for Mac. I introduce following files:
* LocaleMac.h &lt;= copy of LocaleWin.h
* LocaleMac.mm &lt;= copy of LocalizedDateMac.mm
* LocalizedDateMac.cpp &lt;= new file. Wrapper of LocaleMac.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664653</commentid>
    <comment_count>1</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-07-08 22:43:50 -0700</bug_when>
    <thetext>Correction:

For re-factoring LocalizeDate for Mac. I introduce following files:
* LocaleMac.h &lt;= copy of LocaleWin.h
* LocaleMac.mm &lt;= copy of LocalizedDateMac.mm
* LocalizedDateMac.cpp &lt;= copy of LocalizedDateWin.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664656</commentid>
    <comment_count>2</comment_count>
      <attachid>151187</attachid>
    <who name="">yosin</who>
    <bug_when>2012-07-08 22:52:28 -0700</bug_when>
    <thetext>Created attachment 151187
Patch 1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664657</commentid>
    <comment_count>3</comment_count>
      <attachid>151187</attachid>
    <who name="">yosin</who>
    <bug_when>2012-07-08 22:53:48 -0700</bug_when>
    <thetext>Comment on attachment 151187
Patch 1

Could you review this patch?
Thanks in advance.

Note: I&apos;ll do &quot;svn copy&quot; rather than commiting this patch as is for keeping history on copied files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664659</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-08 22:56:12 -0700</bug_when>
    <thetext>Attachment 151187 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1
Source/WebCore/platform/text/mac/LocaleMac.cpp:32:  Found other header before a header this file implements. Should be: config.h, primary header, blank line, and then alphabetically sorted.  [build/include_order] [4]
Source/WebCore/platform/text/mac/LocaleMac.cpp:47:  Declaration has space between type name and * in NSDateFormatter *formatter  [whitespace/declaration] [3]
Source/WebCore/platform/text/mac/LocaleMac.cpp:60:  Declaration has space between type name and * in NSDate *date  [whitespace/declaration] [3]
Source/WebCore/platform/text/mac/LocaleMac.cpp:63:  Extra space before [  [whitespace/braces] [5]
Source/WebCore/platform/text/mac/LocaleMac.cpp:160:  Declaration has space between type name and * in NSArray *array  [whitespace/declaration] [3]
Source/WebCore/platform/text/mac/LocaleMac.cpp:178:  Declaration has space between type name and * in NSArray *array  [whitespace/declaration] [3]
Source/WebCore/platform/text/mac/LocaleMac.cpp:197:  Extra space before [  [whitespace/braces] [5]
Source/WebCore/platform/text/mac/LocaleMac.h:31:  #ifndef header guard has wrong style, please use: LocaleMac_h  [build/header_guard] [5]
Total errors found: 8 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>664661</commentid>
    <comment_count>5</comment_count>
      <attachid>151187</attachid>
    <who name="Kent Tamura">tkent</who>
    <bug_when>2012-07-08 23:05:48 -0700</bug_when>
    <thetext>Comment on attachment 151187
Patch 1

ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>664682</commentid>
    <comment_count>6</comment_count>
    <who name="">yosin</who>
    <bug_when>2012-07-08 23:55:15 -0700</bug_when>
    <thetext>Landed:
http://trac.webkit.org/changeset/122091</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>151187</attachid>
            <date>2012-07-08 22:52:28 -0700</date>
            <delta_ts>2012-07-08 23:05:48 -0700</delta_ts>
            <desc>Patch 1</desc>
            <filename>bug-90752-20120709145227.patch</filename>
            <type>text/plain</type>
            <size>16948</size>
            <attacher>yosin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIyMDg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzYxYzhhYmMyMzM2MmNm
ZmY2ZTQwNTVlNzJjN2E1ZTJlYjk3NWUyYy4uYmExYzU0NmE5YWI5OWNkZDFhNDIyODc4MWQ4N2Q4
MTI2ZDg5ZWE2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDEyLTA3LTA4ICBZb3No
aWZ1bWkgSW5vdWUgIDx5b3NpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1BsYXRmb3JtLU1h
Y10gRGVyaXZlIExvY2FsZU1hYy57Y3BwLGh9IGFuZCBMb2NhbGl6ZWREYXRlTWFjLmNwcCBmcm9t
IExvY2FsZVdpbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9OTA3NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBUaGlzIHBhdGNoIGlzIHByZXBhcmF0aW9uIG9mIGludHJvZHVjaW5nIExvY2FsZU1hYyBjbGFz
cyBmb3IgbG9jYWxpemUgZGF0ZSBmb3JtLgorICAgICAgICBUaGlzIHBhdGNoIGNvcGllcyBMb2Nh
bGVXaW4gYW5kIExvY2FsaXplZERhdGVXaW4uY3BwIGFzIGJlbG93OgorICAgICAgICAgLSBMb2Nh
bGVNYWMuaCBmcm9tIExvY2FsZVdpbi5oCisgICAgICAgICAtIExvY2FsZU1hYy5tbSBmcm9tIExv
Y2FsaWVkRGF0ZU1hYy5tbQorICAgICAgICAgLSBMb2NhbGllZERhdGVNYWMuY3BwIGZyb20gTG9j
YWxpemVkRGF0ZVdpbi5jcHAKKworICAgICAgICBEdWUgYnkgZ2l0LCBkaWZmcyBhcmUgYXBwZWFy
ZWQgYXMgbmV3IHRoaW5nLiBJJ2xsIGRvIHN2biBjb3B5IGF0IGxhbmRpbmcgdGltZS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMuIFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgYmVoYXZpb3IuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuY3BwOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlU2hvcnREYXRlRm9ybWF0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlTG9jYWxpemVkRGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpmb3JtYXRMb2NhbGl6ZWREYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmlzWWVhclN5bWJv
bCk6CisgICAgICAgIChXZWJDb3JlOjppc01vbnRoU3ltYm9sKToKKyAgICAgICAgKFdlYkNvcmU6
OmlzRGF5U3ltYm9sKToKKyAgICAgICAgKFdlYkNvcmU6OmxvY2FsaXplRGF0ZUZvcm1hdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpsb2NhbGl6ZWREYXRlRm9ybWF0VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjptb250aExhYmVscyk6CisgICAgICAgIChXZWJDb3JlOjp3ZWVrRGF5U2hvcnRMYWJlbHMp
OgorICAgICAgICAoV2ViQ29yZTo6Zmlyc3REYXlPZldlZWspOgorICAgICAgICAqIHBsYXRmb3Jt
L3RleHQvbWFjL0xvY2FsZU1hYy5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoTG9jYWxlV2luKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2FsZVdpbjo6Zmlyc3REYXlPZldl
ZWspOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvbWFjL0xvY2FsaXplZERhdGVNYWMuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VMb2NhbGl6
ZWREYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmZvcm1hdExvY2FsaXplZERhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6bG9jYWxpemVkRGF0ZUZvcm1hdFRleHQpOgorICAgICAgICAoV2ViQ29yZTo6
bW9udGhMYWJlbHMpOgorICAgICAgICAoV2ViQ29yZTo6d2Vla0RheVNob3J0TGFiZWxzKToKKyAg
ICAgICAgKFdlYkNvcmU6OmZpcnN0RGF5T2ZXZWVrKToKKwogMjAxMi0wNy0wOCAgU2hlcmlmZiBC
b3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjEyMTk2OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvbWFjL0xvY2FsZU1hYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L21h
Yy9Mb2NhbGVNYWMuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA4ODc2ZjlkMzgxMzUwYjhjY2ZkOTUzMmZjMjJi
YjlmNmJhNGJiMjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L21hYy9Mb2NhbGVNYWMuY3BwCkBAIC0wLDAgKzEsMjAxIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5o
IgorI2luY2x1ZGUgIkxvY2FsaXplZERhdGUuaCIKKworI2ltcG9ydCA8Rm91bmRhdGlvbi9OU0Rh
dGVGb3JtYXR0ZXIuaD4KKyNpbmNsdWRlICJMb2NhbGl6ZWRTdHJpbmdzLmgiCisjaW5jbHVkZSA8
bGltaXRzPgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgorI2luY2x1ZGUgPHd0Zi9SZXRhaW5Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+CisKK3VzaW5nIG5hbWVz
cGFjZSBzdGQ7CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RhdGljIE5TRGF0ZUZvcm1hdHRl
ciAqY3JlYXRlU2hvcnREYXRlRm9ybWF0dGVyKCkKK3sKKyAgICBOU0RhdGVGb3JtYXR0ZXIgKmZv
cm1hdHRlciA9IFtbTlNEYXRlRm9ybWF0dGVyIGFsbG9jXSBpbml0XTsKKyAgICBbZm9ybWF0dGVy
IHNldERhdGVTdHlsZTpOU0RhdGVGb3JtYXR0ZXJTaG9ydFN0eWxlXTsKKyAgICBbZm9ybWF0dGVy
IHNldFRpbWVTdHlsZTpOU0RhdGVGb3JtYXR0ZXJOb1N0eWxlXTsKKyAgICBbZm9ybWF0dGVyIHNl
dFRpbWVab25lOltOU1RpbWVab25lIHRpbWVab25lV2l0aEFiYnJldmlhdGlvbjpAIlVUQyJdXTsK
KyAgICBbZm9ybWF0dGVyIHNldENhbGVuZGFyOltbTlNDYWxlbmRhciBhbGxvY10gaW5pdFdpdGhD
YWxlbmRhcklkZW50aWZpZXI6TlNHcmVnb3JpYW5DYWxlbmRhcl1dOworICAgIHJldHVybiBmb3Jt
YXR0ZXI7Cit9CisKK2RvdWJsZSBwYXJzZUxvY2FsaXplZERhdGUoY29uc3QgU3RyaW5nJiBpbnB1
dCwgRGF0ZUNvbXBvbmVudHM6OlR5cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAg
ICBjYXNlIERhdGVDb21wb25lbnRzOjpEYXRlOiB7CisgICAgICAgIFJldGFpblB0cjxOU0RhdGVG
b3JtYXR0ZXI+IGZvcm1hdHRlcihBZG9wdE5TLCBjcmVhdGVTaG9ydERhdGVGb3JtYXR0ZXIoKSk7
CisgICAgICAgIE5TRGF0ZSAqZGF0ZSA9IFtmb3JtYXR0ZXIuZ2V0KCkgZGF0ZUZyb21TdHJpbmc6
aW5wdXRdOworICAgICAgICBpZiAoIWRhdGUpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
cmV0dXJuIFtkYXRlIHRpbWVJbnRlcnZhbFNpbmNlMTk3MF0gKiBtc1BlclNlY29uZDsKKyAgICB9
CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWU6CisgICAgY2FzZSBEYXRlQ29tcG9u
ZW50czo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzOjpNb250aDoKKyAg
ICBjYXNlIERhdGVDb21wb25lbnRzOjpUaW1lOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6Oldl
ZWs6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6SW52YWxpZDoKKyAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIHJldHVybiBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWlldF9OYU4oKTsKK30K
KworU3RyaW5nIGZvcm1hdExvY2FsaXplZERhdGUoY29uc3QgRGF0ZUNvbXBvbmVudHMmIGRhdGVD
b21wb25lbnRzKQoreworICAgIHN3aXRjaCAoZGF0ZUNvbXBvbmVudHMudHlwZSgpKSB7CisgICAg
Y2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZTogeworICAgICAgICBSZXRhaW5QdHI8TlNEYXRlRm9y
bWF0dGVyPiBmb3JtYXR0ZXIoQWRvcHROUywgY3JlYXRlU2hvcnREYXRlRm9ybWF0dGVyKCkpOwor
ICAgICAgICBOU1RpbWVJbnRlcnZhbCBpbnRlcnZhbCA9IGRhdGVDb21wb25lbnRzLm1pbGxpc2Vj
b25kc1NpbmNlRXBvY2goKSAvIG1zUGVyU2Vjb25kOworICAgICAgICByZXR1cm4gU3RyaW5nKFtm
b3JtYXR0ZXIuZ2V0KCkgc3RyaW5nRnJvbURhdGU6W05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZh
bFNpbmNlMTk3MDppbnRlcnZhbF1dKTsKKyAgICB9CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6
RGF0ZVRpbWU6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWVMb2NhbDoKKyAgICBj
YXNlIERhdGVDb21wb25lbnRzOjpNb250aDoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzOjpUaW1l
OgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6OldlZWs6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50
czo6SW52YWxpZDoKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBTdHJpbmcoKTsK
K30KKworI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCitzdGF0aWMgYm9vbCBpc1llYXJTeW1i
b2woVUNoYXIgbGV0dGVyKSB7IHJldHVybiBsZXR0ZXIgPT0gJ3knIHx8IGxldHRlciA9PSAnWScg
fHwgbGV0dGVyID09ICd1JzsgfQorc3RhdGljIGJvb2wgaXNNb250aFN5bWJvbChVQ2hhciBsZXR0
ZXIpIHsgcmV0dXJuIGxldHRlciA9PSAnTScgfHwgbGV0dGVyID09ICdMJzsgfQorc3RhdGljIGJv
b2wgaXNEYXlTeW1ib2woVUNoYXIgbGV0dGVyKSB7IHJldHVybiBsZXR0ZXIgPT0gJ2QnOyB9CisK
Ky8vIGh0dHA6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS02Lmh0bWwjRGF0ZV9Gb3Jt
YXRfUGF0dGVybnMKK3N0YXRpYyBTdHJpbmcgbG9jYWxpemVEYXRlRm9ybWF0KGNvbnN0IFN0cmlu
ZyYgZm9ybWF0KQoreworICAgIFN0cmluZyB5ZWFyVGV4dCA9IGRhdGVGb3JtYXRZZWFyVGV4dCgp
LmlzRW1wdHkoKSA/ICJZZWFyIiA6IGRhdGVGb3JtYXRZZWFyVGV4dCgpOworICAgIFN0cmluZyBt
b250aFRleHQgPSBkYXRlRm9ybWF0TW9udGhUZXh0KCkuaXNFbXB0eSgpID8gIk1vbnRoIiA6IGRh
dGVGb3JtYXRNb250aFRleHQoKTsKKyAgICBTdHJpbmcgZGF5VGV4dCA9IGRhdGVGb3JtYXREYXlJ
bk1vbnRoVGV4dCgpLmlzRW1wdHkoKSA/ICJEYXkiIDogZGF0ZUZvcm1hdERheUluTW9udGhUZXh0
KCk7CisgICAgU3RyaW5nQnVpbGRlciBidWZmZXI7CisgICAgYm9vbCBpblF1b3RlID0gZmFsc2U7
CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm1hdC5sZW5ndGgoKTsgKytpKSB7Cisg
ICAgICAgIFVDaGFyIGNoID0gZm9ybWF0W2ldOworICAgICAgICBpZiAoaW5RdW90ZSkgeworICAg
ICAgICAgICAgaWYgKGNoID09ICdcJycpIHsKKyAgICAgICAgICAgICAgICBpblF1b3RlID0gZmFs
c2U7CisgICAgICAgICAgICAgICAgQVNTRVJUKGkpOworICAgICAgICAgICAgICAgIGlmIChmb3Jt
YXRbaSAtIDFdID09ICdcJycpCisgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoJ1wn
Jyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGNo
KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNoID09
ICdcJycpIHsKKyAgICAgICAgICAgIGluUXVvdGUgPSB0cnVlOworICAgICAgICAgICAgaWYgKGkg
PiAwICYmIGZvcm1hdFtpIC0gMV0gPT0gJ1wnJykKKyAgICAgICAgICAgICAgICBidWZmZXIuYXBw
ZW5kKGNoKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc1llYXJTeW1ib2woY2gpKSB7CisgICAgICAg
ICAgICBpZiAoaSA+IDAgJiYgZm9ybWF0W2kgLSAxXSA9PSBjaCkKKyAgICAgICAgICAgICAgICBj
b250aW51ZTsKKyAgICAgICAgICAgIGJ1ZmZlci5hcHBlbmQoeWVhclRleHQpOworICAgICAgICB9
IGVsc2UgaWYgKGlzTW9udGhTeW1ib2woY2gpKSB7CisgICAgICAgICAgICBpZiAoaSA+IDAgJiYg
Zm9ybWF0W2kgLSAxXSA9PSBjaCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
ICAgIGJ1ZmZlci5hcHBlbmQobW9udGhUZXh0KTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0RheVN5
bWJvbChjaCkpIHsKKyAgICAgICAgICAgIGlmIChpID4gMCAmJiBmb3JtYXRbaSAtIDFdID09IGNo
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgYnVmZmVyLmFwcGVuZChk
YXlUZXh0KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBidWZmZXIuYXBwZW5kKGNoKTsK
KyAgICB9CisgICAgcmV0dXJuIGJ1ZmZlci50b1N0cmluZygpOworfQorCitTdHJpbmcgbG9jYWxp
emVkRGF0ZUZvcm1hdFRleHQoKQoreworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB0
ZXh0LCAoKSk7CisgICAgaWYgKCF0ZXh0LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHRleHQ7
CisgICAgUmV0YWluUHRyPE5TRGF0ZUZvcm1hdHRlcj4gZm9ybWF0dGVyKEFkb3B0TlMsIGNyZWF0
ZVNob3J0RGF0ZUZvcm1hdHRlcigpKTsKKyAgICB0ZXh0ID0gbG9jYWxpemVEYXRlRm9ybWF0KFN0
cmluZyhbZm9ybWF0dGVyLmdldCgpIGRhdGVGb3JtYXRdKSk7CisgICAgcmV0dXJuIHRleHQ7Cit9
CisKK2NvbnN0IFZlY3RvcjxTdHJpbmc+JiBtb250aExhYmVscygpCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChWZWN0b3I8U3RyaW5nPiwgbGFiZWxzLCAoKSk7CisgICAgaWYgKCFsYWJlbHMu
aXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gbGFiZWxzOworICAgIGxhYmVscy5yZXNlcnZlQ2Fw
YWNpdHkoMTIpOworICAgIFJldGFpblB0cjxOU0RhdGVGb3JtYXR0ZXI+IGZvcm1hdHRlcihBZG9w
dE5TLCBjcmVhdGVTaG9ydERhdGVGb3JtYXR0ZXIoKSk7CisgICAgTlNBcnJheSAqYXJyYXkgPSBb
Zm9ybWF0dGVyLmdldCgpIG1vbnRoU3ltYm9sc107CisgICAgaWYgKFthcnJheSBjb3VudF0gPT0g
MTIpIHsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IDEyOyArK2kpCisgICAgICAg
ICAgICBsYWJlbHMuYXBwZW5kKFN0cmluZyhbYXJyYXkgb2JqZWN0QXRJbmRleDppXSkpOworICAg
ICAgICByZXR1cm4gbGFiZWxzOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
V1RGX0FSUkFZX0xFTkdUSChXVEY6Om1vbnRoRnVsbE5hbWUpOyArK2kpCisgICAgICAgIGxhYmVs
cy5hcHBlbmQoV1RGOjptb250aEZ1bGxOYW1lW2ldKTsKKyAgICByZXR1cm4gbGFiZWxzOworfQor
Citjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2Vla0RheVNob3J0TGFiZWxzKCkKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKFZlY3RvcjxTdHJpbmc+LCBsYWJlbHMsICgpKTsKKyAgICBpZiAoIWxh
YmVscy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBsYWJlbHM7CisgICAgbGFiZWxzLnJlc2Vy
dmVDYXBhY2l0eSg3KTsKKyAgICBSZXRhaW5QdHI8TlNEYXRlRm9ybWF0dGVyPiBmb3JtYXR0ZXIo
QWRvcHROUywgY3JlYXRlU2hvcnREYXRlRm9ybWF0dGVyKCkpOworICAgIE5TQXJyYXkgKmFycmF5
ID0gW2Zvcm1hdHRlci5nZXQoKSBzaG9ydFdlZWtkYXlTeW1ib2xzXTsKKyAgICBpZiAoW2FycmF5
IGNvdW50XSA9PSA3KSB7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCA3OyArK2kp
CisgICAgICAgICAgICBsYWJlbHMuYXBwZW5kKFN0cmluZyhbYXJyYXkgb2JqZWN0QXRJbmRleDpp
XSkpOworICAgICAgICByZXR1cm4gbGFiZWxzOworICAgIH0KKyAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgV1RGX0FSUkFZX0xFTkdUSChXVEY6OndlZWtkYXlOYW1lKTsgKytpKSB7CisgICAg
ICAgIC8vIHdlZWtkYXlOYW1lIHN0YXJ0cyB3aXRoIE1vbmRheS4KKyAgICAgICAgbGFiZWxzLmFw
cGVuZChXVEY6OndlZWtkYXlOYW1lWyhpICsgNikgJSA3XSk7CisgICAgfQorICAgIHJldHVybiBs
YWJlbHM7Cit9CisKK3Vuc2lnbmVkIGZpcnN0RGF5T2ZXZWVrKCkKK3sKKyAgICBSZXRhaW5QdHI8
TlNDYWxlbmRhcj4gY2FsZW5kYXIoQWRvcHROUywgW1tOU0NhbGVuZGFyIGFsbG9jXSBpbml0V2l0
aENhbGVuZGFySWRlbnRpZmllcjpOU0dyZWdvcmlhbkNhbGVuZGFyXSk7CisgICAgLy8gVGhlIGRv
Y3VtZW50IGZvciBOU0NhbGVuZGFyIC0gZmlyc3RXZWVrZGF5IGRvZXNuJ3QgaGF2ZSBhbiBleHBs
YW5hdGlvbiBvZgorICAgIC8vIGZpcnN0V2Vla2RheSB2YWx1ZS4gV2UgY2FuIGd1ZXNzIGl0IGJ5
IHRoZSBkb2N1bWVudCBvZiBOU0RhdGVDb21wb25lbnRzIC0KKyAgICAvLyB3ZWVrRGF5LCBzbyBp
dCBjYW4gYmUgMSB0aHJvdWdoIDcgYW5kIDEgaXMgU3VuZGF5LgorICAgIHJldHVybiBbY2FsZW5k
YXIuZ2V0KCkgZmlyc3RXZWVrZGF5XSAtIDE7Cit9CisjZW5kaWYKKworfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L21hYy9Mb2NhbGVNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTc1Yzk5NDU1
N2Y1NzBhOThjYmY3ZjYwOWI0NTZmM2RjZTIzYzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxlTWFjLmgKQEAgLTAsMCArMSw4OCBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisg
KiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5k
b3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dO
RVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQor
ICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgTG9jYWxlV2luX2gKKyNkZWZpbmUgTG9jYWxlV2luX2gKKworI2luY2x1ZGUgPHdpbmRv
d3MuaD4KKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBEYXRlQ29tcG9uZW50czsKK3N0cnVjdCBE
YXRlRm9ybWF0VG9rZW47CisKK2NsYXNzIExvY2FsZVdpbiB7CitwdWJsaWM6CisgICAgc3RhdGlj
IFBhc3NPd25QdHI8TG9jYWxlV2luPiBjcmVhdGUoTENJRCk7CisgICAgc3RhdGljIExvY2FsZVdp
biogY3VycmVudExvY2FsZSgpOworICAgIH5Mb2NhbGVXaW4oKTsKKyAgICBkb3VibGUgcGFyc2VE
YXRlKGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBmb3JtYXREYXRlKGNvbnN0IERhdGVDb21w
b25lbnRzJik7CisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikKKyAgICBTdHJpbmcgZGF0ZUZv
cm1hdFRleHQoKTsKKyAgICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgbW9udGhMYWJlbHMoKTsKKyAg
ICBjb25zdCBWZWN0b3I8U3RyaW5nPiYgd2Vla0RheVNob3J0TGFiZWxzKCk7CisgICAgdW5zaWdu
ZWQgZmlyc3REYXlPZldlZWsoKSB7IHJldHVybiBtX2ZpcnN0RGF5T2ZXZWVrOyB9CisjZW5kaWYK
KworICAgIC8vIEZvciB0ZXN0aW5nLgorICAgIGRvdWJsZSBwYXJzZURhdGUoY29uc3QgU3RyaW5n
JiBmb3JtYXQsIGludCBiYXNlWWVhciwgY29uc3QgU3RyaW5nJiBpbnB1dCk7CisgICAgU3RyaW5n
IGZvcm1hdERhdGUoY29uc3QgU3RyaW5nJiBmb3JtYXQsIGludCBiYXNlWWVhciwgaW50IHllYXIs
IGludCBtb250aCwgaW50IGRheSk7CisgICAgc3RhdGljIFN0cmluZyBkYXRlRm9ybWF0VGV4dChj
b25zdCBTdHJpbmcmIGZvcm1hdCwgY29uc3QgU3RyaW5nJiB5ZWFyVGV4dCwgY29uc3QgU3RyaW5n
JiBtb250aFRleHQsIGNvbnN0IFN0cmluZyYgZGF5VGV4dCk7CisKK3ByaXZhdGU6CisgICAgZXhw
bGljaXQgTG9jYWxlV2luKExDSUQpOworICAgIFN0cmluZyBnZXRMb2NhbGVJbmZvU3RyaW5nKExD
VFlQRSk7CisgICAgdm9pZCBlbnN1cmVTaG9ydE1vbnRoTGFiZWxzKCk7CisgICAgdm9pZCBlbnN1
cmVNb250aExhYmVscygpOworICAgIHZvaWQgZW5zdXJlU2hvcnREYXRlVG9rZW5zKCk7CisgICAg
aW50IHBhcnNlTnVtYmVyT3JNb250aChjb25zdCBTdHJpbmcmLCB1bnNpZ25lZCYgaW5kZXgpOwor
ICAgIGRvdWJsZSBwYXJzZURhdGUoY29uc3QgVmVjdG9yPERhdGVGb3JtYXRUb2tlbj4mLCBpbnQg
YmFzZVllYXIsIGNvbnN0IFN0cmluZyYpOworICAgIFN0cmluZyBmb3JtYXREYXRlKGNvbnN0IFZl
Y3RvcjxEYXRlRm9ybWF0VG9rZW4+JiwgaW50IGJhc2VZZWFyLCBpbnQgeWVhciwgaW50IG1vbnRo
LCBpbnQgZGF5KTsKKyNpZiBFTkFCTEUoQ0FMRU5EQVJfUElDS0VSKQorICAgIHZvaWQgZW5zdXJl
V2Vla0RheVNob3J0TGFiZWxzKCk7CisjZW5kaWYKKworICAgIExDSUQgbV9sY2lkOworICAgIGlu
dCBtX2Jhc2VZZWFyOworICAgIFZlY3RvcjxEYXRlRm9ybWF0VG9rZW4+IG1fc2hvcnREYXRlVG9r
ZW5zOworICAgIFZlY3RvcjxTdHJpbmc+IG1fc2hvcnRNb250aExhYmVsczsKKyAgICBWZWN0b3I8
U3RyaW5nPiBtX21vbnRoTGFiZWxzOworI2lmIEVOQUJMRShDQUxFTkRBUl9QSUNLRVIpCisgICAg
VmVjdG9yPFN0cmluZz4gbV93ZWVrRGF5U2hvcnRMYWJlbHM7CisgICAgdW5zaWduZWQgbV9maXJz
dERheU9mV2VlazsKKyNlbmRpZgorCit9OworCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsaXplZERhdGVNYWMuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9tYWMvTG9jYWxpemVkRGF0ZU1hYy5jcHAKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYmQ4ZjM2N2YzYTVkYzFiODljNWQ3OGUwMmU1ZTM0N2FmYzg0N2FiNQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvbWFjL0xvY2FsaXplZERhdGVNYWMu
Y3BwCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hU
IEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgor
ICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiTG9jYWxp
emVkRGF0ZS5oIgorCisjaW5jbHVkZSAiTG9jYWxlV2luLmgiCisjaW5jbHVkZSA8bGltaXRzPgor
Cit1c2luZyBuYW1lc3BhY2Ugc3RkOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2RvdWJsZSBw
YXJzZUxvY2FsaXplZERhdGUoY29uc3QgU3RyaW5nJiBpbnB1dCwgRGF0ZUNvbXBvbmVudHM6OlR5
cGUgdHlwZSkKK3sKKyAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIERhdGVDb21wb25lbnRz
OjpEYXRlOgorICAgICAgICByZXR1cm4gTG9jYWxlV2luOjpjdXJyZW50TG9jYWxlKCktPnBhcnNl
RGF0ZShpbnB1dCk7CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWU6CisgICAgY2Fz
ZSBEYXRlQ29tcG9uZW50czo6RGF0ZVRpbWVMb2NhbDoKKyAgICBjYXNlIERhdGVDb21wb25lbnRz
OjpNb250aDoKKyAgICBjYXNlIERhdGVDb21wb25lbnRzOjpUaW1lOgorICAgIGNhc2UgRGF0ZUNv
bXBvbmVudHM6OldlZWs6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6SW52YWxpZDoKKyAgICAg
ICAgYnJlYWs7CisgICAgfQorICAgIHJldHVybiBudW1lcmljX2xpbWl0czxkb3VibGU+OjpxdWll
dF9OYU4oKTsKK30KKworU3RyaW5nIGZvcm1hdExvY2FsaXplZERhdGUoY29uc3QgRGF0ZUNvbXBv
bmVudHMmIGRhdGVDb21wb25lbnRzKQoreworICAgIHN3aXRjaCAoZGF0ZUNvbXBvbmVudHMudHlw
ZSgpKSB7CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6RGF0ZToKKyAgICAgICAgcmV0dXJuIExv
Y2FsZVdpbjo6Y3VycmVudExvY2FsZSgpLT5mb3JtYXREYXRlKGRhdGVDb21wb25lbnRzKTsKKyAg
ICBjYXNlIERhdGVDb21wb25lbnRzOjpEYXRlVGltZToKKyAgICBjYXNlIERhdGVDb21wb25lbnRz
OjpEYXRlVGltZUxvY2FsOgorICAgIGNhc2UgRGF0ZUNvbXBvbmVudHM6Ok1vbnRoOgorICAgIGNh
c2UgRGF0ZUNvbXBvbmVudHM6OlRpbWU6CisgICAgY2FzZSBEYXRlQ29tcG9uZW50czo6V2VlazoK
KyAgICBjYXNlIERhdGVDb21wb25lbnRzOjpJbnZhbGlkOgorICAgICAgICBicmVhazsKKyAgICB9
CisgICAgcmV0dXJuIFN0cmluZygpOworfQorCisjaWYgRU5BQkxFKENBTEVOREFSX1BJQ0tFUikK
K1N0cmluZyBsb2NhbGl6ZWREYXRlRm9ybWF0VGV4dCgpCit7CisgICAgcmV0dXJuIExvY2FsZVdp
bjo6Y3VycmVudExvY2FsZSgpLT5kYXRlRm9ybWF0VGV4dCgpOworfQorCitjb25zdCBWZWN0b3I8
U3RyaW5nPiYgbW9udGhMYWJlbHMoKQoreworICAgIHJldHVybiBMb2NhbGVXaW46OmN1cnJlbnRM
b2NhbGUoKS0+bW9udGhMYWJlbHMoKTsKK30KKworY29uc3QgVmVjdG9yPFN0cmluZz4mIHdlZWtE
YXlTaG9ydExhYmVscygpCit7CisgICAgcmV0dXJuIExvY2FsZVdpbjo6Y3VycmVudExvY2FsZSgp
LT53ZWVrRGF5U2hvcnRMYWJlbHMoKTsKK30KKwordW5zaWduZWQgZmlyc3REYXlPZldlZWsoKQor
eworICAgIHJldHVybiBMb2NhbGVXaW46OmN1cnJlbnRMb2NhbGUoKS0+Zmlyc3REYXlPZldlZWso
KTsKK30KKyNlbmRpZgorCit9Cg==
</data>
<flag name="review"
          id="159593"
          type_id="1"
          status="+"
          setter="tkent"
    />
    <flag name="commit-queue"
          id="159594"
          type_id="3"
          status="-"
          setter="tkent"
    />
          </attachment>
      

    </bug>

</bugzilla>