Commit Graph

13947 Commits

Author SHA1 Message Date
mtklein
9db328b64f Add *@skia.org to AUTHORS so we can land CLs using those addresses if we like.
BUG=skia:
R=hcm@google.com, reed@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/565293002
2014-09-12 12:03:55 -07:00
mtklein
eefd18cef2 Let SkTaskGroup work synchronously if no one created an SkTaskGroup::Enabler.
Tested by running DM with its SkTaskGroup::Enabler commented out.  Slow, but completed correctly.

BUG=skia:
R=reed@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/556223003
2014-09-12 09:35:56 -07:00
Mike Klein
11fca3f29f Add more debugging for newly failing assert (DM on Xoom bots).
BUG=skia:

Review URL: https://codereview.chromium.org/568823002
2014-09-12 12:17:25 -04:00
reed
83658305a1 remove confusing/unused stream methods
BUG=skia:
R=bungeman@google.com, djsollen@google.com

Author: reed@google.com

Review URL: https://codereview.chromium.org/563273003
2014-09-12 08:49:54 -07:00
borenet
1f777e8580 Update SKP version to 99
Automatic commit by the RecreateSKPs bot.

TBR=

Author: borenet@google.com

Review URL: https://codereview.chromium.org/571443002
2014-09-11 21:31:30 -07:00
mtklein
fbe4136845 Clear away any lingering error before testing SkError.
Looks like something's setting an error before ErrorTest runs on our new
Venue8 bots.

BUG=skia:
R=humper@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/551973004
2014-09-11 14:41:56 -07:00
mtklein
0b36e6b65f Add --matrix to DM, to play around with and maybe use on a bot.
BUG=skia:
R=reed@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/563723005
2014-09-11 12:30:12 -07:00
reed
56b00d9e7a add PurgeResourceCache to track leaks
TBR=halcananry

Author: reed@google.com

Review URL: https://codereview.chromium.org/554263005
2014-09-11 12:22:34 -07:00
danakj
f58a562d56 Disable discardable memory for the resource cache until tests pass.
BUG=skia:2926
R=reed@google.com

Author: danakj@chromium.org

Review URL: https://codereview.chromium.org/568493002
2014-09-11 11:08:50 -07:00
danakj
790ffe3feb Make SkBitmapCache remove invalid bitmaps from the SkResourceCache.
This adds SkResourceCache::Remove() which will remove a resource from
its cache. The resource is required to be unlocked at the time Remove()
is called.

Then SkBitmapCache::Find() makes use of this to Remove() bitmaps from
the cache whose pixels have been evicted. This allows the bitmap to be
re-added to the cache with pixels again.

After this change, background a tab (and discarding all the bitmaps'
contents) no longer disables image caching for those discarded images
once the tab is visible again.

BUG=skia:2926
NOTRY=true
R=reed@android.com, tomhudson@google.com, reed@google.com

Author: danakj@chromium.org

Review URL: https://codereview.chromium.org/561953002
2014-09-11 10:49:52 -07:00
reed
33a30503d7 SkData can allocate room for its contents in the same block
BUG=skia:
R=bungeman@google.com, mtklein@google.com

Author: reed@google.com

Review URL: https://codereview.chromium.org/560653004
2014-09-11 08:42:36 -07:00
mtklein
aa90d00f14 Assert SkTDArray::pop() doesn't underflow.
BUG=skia:
R=reed@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/563633003
2014-09-11 06:36:11 -07:00
borenet
26a4b51499 Update SKP version to 98
Automatic commit by the RecreateSKPs bot.

TBR=

Author: borenet@google.com

Review URL: https://codereview.chromium.org/559283002
2014-09-10 21:25:40 -07:00
mtklein
97bf60ff7f Delay any SkRecordOptimize until after SkRecord has stuck.
BUG=skia:
R=robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/561993002
2014-09-10 16:40:05 -07:00
mtklein
99d6a9ee8b Fix a bug in Save-Restore no-op optimization.
We optimize
    Save
        SaveLayer
        Restore
    Restore
into
    NoOp
        NoOp
        NoOp
    Restore

I'm considering skipping the call to SkRecordOptimize again just to eliminate
this extra variable from landing SkRecord.  Thoughts?

BUG=skia:
R=robertphillips@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/560163002
2014-09-10 16:08:28 -07:00
bungeman
f91c47d91d Remove a layer of indirection and code from SkFontHost.
R=mtklein@google.com, tomhudson@google.com, djsollen@google.com

Author: bungeman@google.com

Review URL: https://codereview.chromium.org/105223006
2014-09-10 15:49:48 -07:00
bungeman
77cd8b0ba2 Revert of Added test for non cached ETC1 (patchset #2 id:20001 of https://codereview.chromium.org/564493002/)
Reason for revert:
This is causing dm and gm to crash on the Win8 7770 bots, for example

http://108.170.220.120:10117/builders/Test-Win8-ShuttleA-HD7770-x86-Debug/builds/2128

An example stack trace looks like

[13:46:16.260000]   -1M drawing... extractbitmap [600 600]
[13:46:16.760000]   -1M drawing... etc1bitmap_npot [124 124]
[13:46:16.760000]   -1M drawing... etc1bitmap_r11.ktx [128 128]
[13:46:16.760000]   -1M drawing... etc1bitmap_ktx [128 128]
[13:46:16.760000]   -1M drawing... etc1bitmap_pkm_volatile [128 128]
[13:46:16.760000]
[13:46:16.760000] Caught exception 3221225477 EXCEPTION_ACCESS_VIOLATION
[13:46:16.760000] sk_gr_allocate_texture +c9
[13:46:16.760000] load_etc1_texture +1dd
[13:46:16.760000] sk_gr_create_bitmap_texture +199
[13:46:16.760000] GrLockAndRefCachedBitmapTexture +ad
[13:46:16.760000] SkGpuDevice::SkAutoCachedTexture::set +5d
[13:46:16.760000] SkGpuDevice::SkAutoCachedTexture::SkAutoCachedTexture +65
[13:46:16.760000] SkGpuDevice::internalDrawBitmap +8e
[13:46:16.760000] SkGpuDevice::drawBitmapCommon +608
[13:46:16.760000] SkGpuDevice::drawBitmap +79
[13:46:16.760000] SkCanvas::internalDrawBitmap +11b
[13:46:16.760000] SkCanvas::drawBitmap +d3
[13:46:16.760000] skiagm::ETC1BitmapGM::onDraw +140
[13:46:16.760000] skiagm::GM::drawContent +3c
[13:46:16.760000] skiagm::GM::draw +24
[13:46:16.760000] GMMain::invokeGM +63
[13:46:16.760000] GMMain::generate_image +186
[13:46:16.760000] GMMain::test_drawing +5b
[13:46:16.760000] run_multiple_configs +2f9
[13:46:16.760000] tool_main +75d
[13:46:16.760000] main +16
[13:46:16.760000] __tmainCRTStartup +199
[13:46:16.760000] mainCRTStartup +d
[13:46:16.760000] BaseThreadInitThunk +e
[13:46:16.760000] RtlInitializeExceptionChain +84
[13:46:16.760000] RtlInitializeExceptionChain +5a

Original issue's description:
> Added test for non cached ETC1
>
> BUG=skia:
>
> Committed: https://skia.googlesource.com/skia/+/d9ec549071581d9d1dc2e5fac3163305ae935a39

R=bsalomon@chromium.org, robertphillips@chromium.org, robertphillips@google.com, sugoi@chromium.org
TBR=bsalomon@chromium.org, robertphillips@chromium.org, robertphillips@google.com, sugoi@chromium.org
NOTREECHECKS=true
NOTRY=true
BUG=skia:

Author: bungeman@google.com

Review URL: https://codereview.chromium.org/559093003
2014-09-10 14:59:59 -07:00
cjacek
3e15f9006c Fixed void* to uint64_t cast on win64 in TraceID.
On win64, long is 32-bit. Found by GCC (mingw-w64) build, where this causes an error.

This is the Skia version of https://codereview.chromium.org/374043002 .

R=bungeman@google.com, humper@google.com

Author: cjacek@gmail.com

Review URL: https://codereview.chromium.org/510923002
2014-09-10 14:28:07 -07:00
sugoi
d9ec549071 Added test for non cached ETC1
BUG=skia:
R=bsalomon@chromium.org, robertphillips@chromium.org, robertphillips@google.com

Author: sugoi@chromium.org

Review URL: https://codereview.chromium.org/564493002
2014-09-10 13:40:18 -07:00
mtklein
fd731ce804 Measure picture recording speed in nanobench.
Today we measure SkPicture playback speed, but not the time it takes to record
the SkPicture.  This fixes that by reading SKPs from disk and re-recording them.

On the console, recording shows up first as the nonrendering skp benches,
followed later by the usual playback benches:

maxrss  loops   min median  mean    max stddev  samples     config  bench
51M  2   165µs   168µs   169µs   178µs   3%  ▆▄▃█▂▄▁▂▁▁  nonrendering    tabl_slashdot.skp
57M  1   9.72ms  9.77ms  9.79ms  9.97ms  1%  █▂▂▅▃▂▁▄▂▁  nonrendering    desk_pokemonwiki.skp
57M  32  2.92µs  2.96µs  3.03µs  3.46µs  6%  ▅▁▁▁▁▁▁█▂▁  nonrendering    desk_yahoosports.skp
...
147M 1   3.86ms  3.87ms  3.97ms  4.81ms  7%  █▁▁▁▁▁▁▁▁▁  8888    tabl_slashdot.skp_1
147M 1   4.54ms  4.56ms  4.55ms  4.56ms  0%  █▅▇▅█▅▂▁▅▁  565     tabl_slashdot.skp_1
147M 2   3.08ms  3.24ms  4.17ms  8.18ms  50% █▁▁█▁▁▁▁▁▁  gpu     tabl_slashdot.skp_1
147M 1   1.61ms  1.62ms  1.69ms  2.33ms  13% █▁▁▁▁▁▁▁▁▁  8888    desk_pokemonwiki.skp_1
147M 1   1.44ms  1.44ms  1.45ms  1.47ms  1%  ▅▂█▂▂▅▁▁▂▁  565     desk_pokemonwiki.skp_1
...

On skiaperf.com, they'll also be separated out from playback benches by bench_type.

BUG=skia:
R=reed@google.com, mtklein@google.com, jcgregorio@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/559153002
2014-09-10 12:19:30 -07:00
mtklein
33bce0a68b Clean up old custom tools now subsumed by nanobench.
BUG=skia:
R=mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/551263003
2014-09-10 12:11:23 -07:00
mtklein
962890568d Distinguish common and unique names for skiaperf.com.
Turns out we tack on the size post-facto in ResultsWriter::bench(), so the only
place we need getUniqueName() to differ from getName() is SKPBench.

BUG=skia:
R=jcgregorio@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/552303004
2014-09-10 12:05:59 -07:00
tomhudson
579b4fb92e Fix iteration bounds of Android GL API initialization
A dormant error in https://codereview.chromium.org/319043005 was
exposed on some new platforms; this makes sure loop iterations
are bounded.

BUG=
R=joshualitt@google.com, joshualitt@chromium.org

Author: tomhudson@google.com

Review URL: https://codereview.chromium.org/557363002
2014-09-10 10:45:42 -07:00
reed
cc0e3110bd make set3DMask virtual, so we can safely notify the shadercontext
also boost preallocated storage to account for this combo of bitmapshader + emboss + colorfilter

BUG=skia:
R=djsollen@google.com

Author: reed@google.com

Review URL: https://codereview.chromium.org/563563002
2014-09-10 10:20:24 -07:00
Mike Klein
d0af38793e Expectation file update for bot changes.
BUG=skia:

Review URL: https://codereview.chromium.org/560873002
2014-09-10 11:10:48 -04:00
bungeman
f548444684 Detect presence of dwrite_1.h.
This introduces the SK_HAS_DWRITE_1_H define which may be set at
build time or will be true when WINVER_MAXVER >= 0x0602 .

The dwrite_1.h header is available starting in Windows SDK 8.0.
This change supports users who must still use Windows SDK 7.0.
It also allows for easier local testing of the older interfaces
on newer versions of Windows.

See also: https://bugzilla.mozilla.org/show_bug.cgi?id=1053652

R=george@mozilla.com, mtklein@google.com

Author: bungeman@google.com

Review URL: https://codereview.chromium.org/552383002
2014-09-10 07:49:05 -07:00
reed
841010f4bd disable conservative rasterclip on gpu, until we understand perspective
BUG=skia:
R=bsalomon@google.com

Author: reed@google.com

Review URL: https://codereview.chromium.org/561763002
2014-09-10 07:23:32 -07:00
borenet
1e3dad0b17 Update SKP version to 97
Automatic commit by the RecreateSKPs bot.

TBR=

Author: borenet@google.com

Review URL: https://codereview.chromium.org/560743002
2014-09-09 21:14:51 -07:00
qiankun.miao
8247ec313d Fix format of nanobench result
Column of samples is too wide. This makes config is not align with the
'config' title. Pad 'samples' tilte with some whitespaces to fix this
issue.

BUG=skia:
R=mtklein@google.com

Author: qiankun.miao@intel.com

Review URL: https://codereview.chromium.org/549153005
2014-09-09 19:24:36 -07:00
reed
9728a2bf56 correct prev suppression
TBR=
NOTRY=True

Author: reed@chromium.org

Review URL: https://codereview.chromium.org/543903005
2014-09-09 19:22:37 -07:00
reed
9a6300a2b0 suppress multipicturedraw_pathclip_tiled_nvprmsaa4 after the conservative-rasterclip cl
TBR=
NOTRY=True

Author: reed@chromium.org

Review URL: https://codereview.chromium.org/555403002
2014-09-09 19:08:28 -07:00
reed
d954498c01 Revert of Revert of allow canvas to force conservative clips (for speed) (patchset #1 id:1 of https://codereview.chromium.org/554033003/)
Reason for revert:
May just rebaseline, plus want to see the results of the chrome tests, so re-trying this CL.

Original issue's description:
> Revert of allow canvas to force conservative clips (for speed) (patchset #7 id:120001 of https://codereview.chromium.org/541593005/)
>
> Reason for revert:
> multipicturedraw failed on nvprmsaa -- don't know why yet
>
> Original issue's description:
> > Allow SkCanvas to be initialized to force conservative rasterclips. This has the following effects:
> >
> > 1. Queries to the current clip will be conservatively large. This can mean the quickReject may return false more often.
> >
> > 2. The conservative clips mean less work is done.
> >
> > 3. Enabled by default for Gpu, Record, and NoSaveLayer canvases.
> >
> > 4. API is private for now.
> >
> > Committed: https://skia.googlesource.com/skia/+/27a5e656c3d6ef22f9cb34de18e1b960da3aa241
>
> TBR=robertphillips@google.com,bsalomon@google.com,mtklein@google.com,junov@google.com
> NOTREECHECKS=true
> NOTRY=true
>
> Committed: https://skia.googlesource.com/skia/+/6f09709519b79a1159f3826645f1c5fbc101ee11

R=robertphillips@google.com, bsalomon@google.com, mtklein@google.com, junov@google.com, reed@google.com
TBR=bsalomon@google.com, junov@google.com, mtklein@google.com, reed@google.com, robertphillips@google.com
NOTREECHECKS=true
NOTRY=true

Author: reed@chromium.org

Review URL: https://codereview.chromium.org/560713002
2014-09-09 18:46:22 -07:00
bungeman
87a79236f5 Rebaselines for 6bc2c94de3 (fontmgr_iter).
Rebaselines for "Add font fallback support to SkFontMgr_fontconfig."
2014-09-09 21:38:04 -04:00
humper
d3b6eb246d disable webtry seccmp on non-linux build
BUG=skia:
R=jcgregorio@google.com

Author: humper@google.com

Review URL: https://codereview.chromium.org/555993002
2014-09-09 15:57:33 -07:00
humper
d85ad50b0e simple build script for webtry that re-generates the code template
before compilation

BUG=skia:
R=jcgregorio@google.com

Author: humper@google.com

Review URL: https://codereview.chromium.org/552343003
2014-09-09 15:57:26 -07:00
Mike Klein
be20c5a118 rebase a couple oddballs
BUG=skia:

Review URL: https://codereview.chromium.org/555193004
2014-09-09 17:52:40 -04:00
Mike Klein
ef53f158de Rebase intel rhb gpu GMs.
Looks like I accidentally re-enabled GPU mode in GM for Intel RHB.
Rebaseline it so it's green today before we turn it off tomorrow.

BUG=skia:

Review URL: https://codereview.chromium.org/552413002
2014-09-09 16:00:58 -04:00
reed
6f09709519 Revert of allow canvas to force conservative clips (for speed) (patchset #7 id:120001 of https://codereview.chromium.org/541593005/)
Reason for revert:
multipicturedraw failed on nvprmsaa -- don't know why yet

Original issue's description:
> Allow SkCanvas to be initialized to force conservative rasterclips. This has the following effects:
>
> 1. Queries to the current clip will be conservatively large. This can mean the quickReject may return false more often.
>
> 2. The conservative clips mean less work is done.
>
> 3. Enabled by default for Gpu, Record, and NoSaveLayer canvases.
>
> 4. API is private for now.
>
> Committed: https://skia.googlesource.com/skia/+/27a5e656c3d6ef22f9cb34de18e1b960da3aa241

R=robertphillips@google.com, bsalomon@google.com, mtklein@google.com, junov@google.com
TBR=bsalomon@google.com, junov@google.com, mtklein@google.com, robertphillips@google.com
NOTREECHECKS=true
NOTRY=true

Author: reed@google.com

Review URL: https://codereview.chromium.org/554033003
2014-09-09 12:51:10 -07:00
bungeman
6bc2c94de3 Add font fallback support to SkFontMgr_fontconfig.
R=mtklein@google.com, djsollen@google.com

Author: bungeman@google.com

Review URL: https://codereview.chromium.org/489733005
2014-09-09 12:50:36 -07:00
senorblanco
4459a0448d When parsing arguments on Windows, check malloc() for failure.
Note: this code is only executed by Skia utilities AFAIK, not by
external clients.

BUG=skia:2642
R=reed@google.com

Author: senorblanco@chromium.org

Review URL: https://codereview.chromium.org/548343002
2014-09-09 12:37:16 -07:00
jshin
7476cf533b Update the alias mapping for Noto Sans CJK.
To make the family names 'future-proof', we decided to shorten
the name of Noto Sans CJK, which requires a change in the alias
table in Skia.

Chrome OS CL (actually updating the fonts) and Chrome CL (updating the
font preferences on CrOS) are going together with this CL.

BUG=412151
TEST=With the above two CLs in on Chrome OS, Noto Sans CJK {JP, SC} are
used when MS P Gothic / Simhei are asked for by a web page.

R=bungeman@google.com

Author: jshin@chromium.org

Review URL: https://codereview.chromium.org/554943002
2014-09-09 12:30:57 -07:00
reed
27a5e656c3 Allow SkCanvas to be initialized to force conservative rasterclips. This has the following effects:
1. Queries to the current clip will be conservatively large. This can mean the quickReject may return false more often.

2. The conservative clips mean less work is done.

3. Enabled by default for Gpu, Record, and NoSaveLayer canvases.

4. API is private for now.

R=robertphillips@google.com, bsalomon@google.com, mtklein@google.com, junov@google.com

Author: reed@google.com

Review URL: https://codereview.chromium.org/541593005
2014-09-09 12:19:30 -07:00
mtklein
f5b6bf775c Make -d x86 have the default GPU cache size.
We have no a priori reason to limit the cache for new devices.

BUG=skia:
R=djsollen@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/556863006
2014-09-09 12:07:05 -07:00
george
b3eba478d5 Outset the stroke width when computing the bounds for drawing a stroked rect, or 1 if it's a hairline
Adds a testcase for stroke rect bug

R=reed@google.com, reed1
BUG=skia:

Author: george@mozilla.com

Review URL: https://codereview.chromium.org/552743004
2014-09-09 11:33:57 -07:00
senorblanco
32673b99a4 Allow negative values in SkBlurImageFilter sigma.
There are two ways negative sigma values may occur: in
the original filter parameters, or after multiplication
by a negative scaling CTM. The former case is
invalid according to the spec, so we continue to check
for it at validation time. In the latter case, we should
interpret it as a horizontal flip in the kernel pixel
access, and simply take the absolute value (since the
filter kernel is symmetric).

Also refactor all this logic into a single place for the
CPU, GPU and onFilterBounds() paths.

BUG=https://code.google.com/p/chromium/issues/detail?id=409602
R=sugoi@google.com, reed@google.com, sugoi@chromium.org

Author: senorblanco@chromium.org

Review URL: https://codereview.chromium.org/555603002
2014-09-09 09:15:04 -07:00
mtklein
c54056c839 Back to hashing source content, not .png.
BUG=skia:
R=jcgregorio@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/560453002
2014-09-09 08:42:04 -07:00
fmalita
90dc6412b4 Revert of Use SkBitmapCache to optimize readPixels on a texture-backed bitmap (patchset #6 id:100001 of https://codereview.chromium.org/533323002/)
Reason for revert:
Component inversions in Blink's printing/webgl-repeated-printing.html: https://storage.googleapis.com/chromium-layout-test-archives/linux_blink_rel/24033/layout-test-results/printing/webgl-repeated-printing-diff.txt

Reverting to unblock rolls.

Original issue's description:
> Use SkBitmapCache to optimize readPixels on a texture-backed bitmap
>
> BUG=skia:2786
>
> Committed: https://skia.googlesource.com/skia/+/95fd68e5ccd242a91e6dd827dd695f18661efbe6

R=junov@chromium.org, reed@google.com, bsalomon@google.com, piotaixr@chromium.org
TBR=bsalomon@google.com, junov@chromium.org, piotaixr@chromium.org, reed@google.com
NOTREECHECKS=true
NOTRY=true
BUG=skia:2786

Author: fmalita@chromium.org

Review URL: https://codereview.chromium.org/551523003
2014-09-09 08:12:46 -07:00
sugoi
0249ec267a Adding texture uploads without cache for YUV and ETC1
BUG=skia:
R=bsalomon@google.com, robertphillips@google.com

Author: sugoi@chromium.org

Review URL: https://codereview.chromium.org/552843004
2014-09-09 08:12:34 -07:00
mtklein
ea65bfa8de Update DM JSON format.
Ex. dm --match patch -w bad --key arch x86 gpu nvidia model z620 --properties git_hash abcd build_number 20 ->

{
   "build_number" : "20",
   "git_hash" : "abcd",
   "key" : {
      "arch" : "x86",
      "gpu" : "nvidia",
      "model" : "z620"
   },
   "results" : [
      {
         "key" : {
            "config" : "565",
            "name" : "ninepatch-stretch"
         },
         "md5" : "f78cfafcbabaf815f3dfcf61fb59acc7",
         "options" : {
            "source_type" : "GM"
         }
      },
      {
         "key" : {
            "config" : "8888",
            "name" : "ninepatch-stretch"
         },
         "md5" : "3e8a42f35a1e76f00caa191e6310d789",
         "options" : {
            "source_type" : "GM"
         }
      },
...

This breaks -r, but that's okay.  Going to follow up this CL with one that removes that entirely.

BUG=skia:
R=stephana@google.com, jcgregorio@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/551873003
2014-09-09 07:59:46 -07:00
mtklein
197ceda929 Remove expectations / -r from DM entirely.
It's getting tricky to coordinate changes to output for bots with -r,
and -r is not widely used.  The suggested alternative is to run skdiff.

BUG=skia:
R=jcgregorio@google.com, mtklein@google.com

Author: mtklein@chromium.org

Review URL: https://codereview.chromium.org/553583004
2014-09-09 07:36:57 -07:00