See <http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/1016/changes>

Changes:

[Alex Harui] don't need preprocess

[Alex Harui] convert createjs build to use a patch file.  There are Ant targets 
that can be used to generate the patch files if we upgrade the createjs source 
we use

[Alex Harui] convert google_maps to use patches

[Alex Harui] move downloads and unpacking of externs out to the extern builds 
and convert js to use a patch file

[Alex Harui] run extern tests separately

[Alex Harui] patch $ command in jquery

------------------------------------------
[...truncated 2441 lines...]
     [java] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/GCL/src/main/flex/goog/events/EventType.as>:835
     [java] Warning: Incompatible initializer value of type 'int' where 
'String' is expected. An initial value of "0" will be used instead.
     [java]     public static const ANIMATIONEND:String = undefined /* TODO 
type not set */;
     [java]                                               ^
     [java] 
     [java] 13439 bytes written to 
C:\Jenkins\workspace\flex-falcon\externs\GCL\target\GCL.swc in 10.312 seconds
     [java] Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8

main:

preprocess:

externc:
     [java] 3.021249101 seconds
     [java] Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
     [java] Java Result: -1

postprocess:

compc:
     [copy] Copying 1 file to 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/cordova/target>
     [java] Loading configuration: 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/cordova/target/compile-as-config.xml>
     [java] 
     [java] 2541 bytes written to 
C:\Jenkins\workspace\flex-falcon\externs\cordova\target\cordova.swc in 5.846 
seconds
     [java] Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8

main:

download:
    [mkdir] Created dir: 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/downloads>
      [get] Getting: https://github.com/CreateJS/EaselJS/archive/0.8.0.zip
      [get] To: 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/downloads/easel-0.8.0.zip>
      [get] https://github.com/CreateJS/EaselJS/archive/0.8.0.zip moved to 
https://codeload.github.com/CreateJS/EaselJS/zip/0.8.0

download_tween:
      [get] Getting: https://github.com/CreateJS/TweenJS/archive/0.6.2.zip
      [get] To: 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/downloads/tween-0.6.2.zip>
      [get] https://github.com/CreateJS/TweenJS/archive/0.6.2.zip moved to 
https://codeload.github.com/CreateJS/TweenJS/zip/0.6.2

expandzip:
    [unzip] Expanding: 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/downloads/easel-0.8.0.zip>
 into 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/downloads>

expandzip_tween:
    [unzip] Expanding: 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/downloads/tween-0.6.2.zip>
 into 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/downloads>

preprocess:
     [exec] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/src/main/patch/easeljs.patch>:34:
 trailing whitespace.
     [exec] /** @fileoverview Auto-generated Externs files
     [exec] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/src/main/patch/easeljs.patch>:35:
 trailing whitespace.
     [exec]  * @externs
     [exec] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/src/main/patch/easeljs.patch>:36:
 trailing whitespace.
     [exec]  */
     [exec] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/src/main/patch/easeljs.patch>:42:
 trailing whitespace.
     [exec]  * Contains properties and methods shared by all events for use with
     [exec] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/src/main/patch/easeljs.patch>:43:
 trailing whitespace.
     [exec]  * {{#crossLink "EventDispatcher"}}{{/crossLink}}.
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/Event.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/Event.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/events/EventDispatcher.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/Ticker.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/extend.js:31
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/extend.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/indexOf.js:31
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/indexOf.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/promote.js:31
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/createjs/utils/promote.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Bitmap.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Bitmap.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/BitmapText.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/BitmapText.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Container.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Container.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DOMElement.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DOMElement.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/DisplayObject.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Graphics.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Graphics.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/MovieClip.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/MovieClip.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Shadow.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Shadow.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Shape.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Shape.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Sprite.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Sprite.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/SpriteContainer.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/SpriteContainer.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/SpriteSheet.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/SpriteSheet.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/SpriteStage.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/SpriteStage.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Stage.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Stage.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Text.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/display/Text.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/events/MouseEvent.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/events/MouseEvent.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/AlphaMapFilter.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/AlphaMapFilter.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/AlphaMaskFilter.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/AlphaMaskFilter.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/BlurFilter.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/BlurFilter.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/ColorFilter.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/ColorFilter.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/ColorMatrix.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/ColorMatrix.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/ColorMatrixFilter.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/ColorMatrixFilter.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/Filter.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/filters/Filter.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/geom/DisplayProps.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/geom/DisplayProps.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/geom/Matrix2D.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/geom/Matrix2D.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/geom/Point.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/geom/Point.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/geom/Rectangle.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/geom/Rectangle.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/ui/ButtonHelper.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/ui/ButtonHelper.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/ui/Touch.js:31
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/ui/Touch.js: patch 
does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetBuilder.js:1
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetBuilder.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetUtils.js:31
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/utils/SpriteSheetUtils.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/utils/UID.js:31
     [exec] error: 
externs/createjs/target/downloads/EaselJS-0.8.0/src/easeljs/utils/UID.js: patch 
does not apply
     [exec] Result: 1
     [exec] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/src/main/patch/tweenjs.patch>:13:
 trailing whitespace.
     [exec] 
     [exec] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/src/main/patch/tweenjs.patch>:14:
 trailing whitespace.
     [exec] 
     [exec] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/src/main/patch/tweenjs.patch>:15:
 trailing whitespace.
     [exec] 
     [exec] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/src/main/patch/tweenjs.patch>:22:
 trailing whitespace.
     [exec]      *      createjs.createjs.CSSPlugin.install();
     [exec] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/src/main/patch/tweenjs.patch>:31:
 trailing whitespace.
     [exec]     createjs.CSSPlugin = function() {
     [exec] error: patch failed: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/CSSPlugin.js:31
     [exec] error: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/CSSPlugin.js: patch 
does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/Ease.js:1
     [exec] error: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/Ease.js: patch does 
not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/MotionGuidePlugin.js:31
     [exec] error: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/MotionGuidePlugin.js:
 patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/SamplePlugin.js:31
     [exec] error: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/SamplePlugin.js: 
patch does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/Timeline.js:1
     [exec] error: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/Timeline.js: patch 
does not apply
     [exec] error: patch failed: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/Tween.js:1
     [exec] error: 
externs/createjs/target/downloads/TweenJS-0.6.2/src/tweenjs/Tween.js: patch 
does not apply
     [exec] Result: 1

externc:
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [Bitmap]:77: WARNING - Misplaced type annotation. Type 
annotations are not allowed here. Are you missing parentheses?
     [java]             if (typeof imageOrUri == "string") {
     [java]             ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [ButtonHelper]:208: WARNING - Misplaced type annotation. 
Type annotations are not allowed here. Are you missing parentheses?
     [java]     try {
     [java]     ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [Container]:113: WARNING - Misplaced type annotation. Type 
annotations are not allowed here. Are you missing parentheses?
     [java]     try {
     [java]     ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [DisplayObject]:678: WARNING - Misplaced type annotation. 
Type annotations are not allowed here. Are you missing parentheses?
     [java]     try {
     [java]     ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [Graphics]:391: WARNING - Misplaced type annotation. Type 
annotations are not allowed here. Are you missing parentheses?
     [java]     try {
     [java]     ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [Graphics]:1822: WARNING - Misplaced type annotation. Type 
annotations are not allowed here. Are you missing parentheses?
     [java]     p = (G.Fill = function(style, matrix) {
     [java]     ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [Graphics]:1900: WARNING - Misplaced type annotation. Type 
annotations are not allowed here. Are you missing parentheses?
     [java]     p = (G.Stroke = function(style, ignoreScale) {
     [java]     ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [Graphics]:1974: WARNING - Misplaced type annotation. Type 
annotations are not allowed here. Are you missing parentheses?
     [java]     p = (G.StrokeStyle = function(width, caps, joints, miterLimit) {
     [java]     ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [MovieClip]:327: WARNING - Misplaced type annotation. Type 
annotations are not allowed here. Are you missing parentheses?
     [java]     try {
     [java]     ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [SpriteSheet]:325: WARNING - Misplaced type annotation. 
Type annotations are not allowed here. Are you missing parentheses?
     [java]     try {
     [java]     ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager println
     [java] WARNING: [Ticker]:376: WARNING - Misplaced type annotation. Type 
annotations are not allowed here. Are you missing parentheses?
     [java]     try {
     [java]     ^
     [java] 
     [java] May 24, 2016 7:37:57 PM 
com.google.javascript.jscomp.LoggerErrorManager printSummary
     [java] WARNING: 0 error(s), 11 warning(s)
     [java] 15.4430344 seconds
     [java] Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
     [java] Java Result: -1

postprocess:

compc:
     [copy] Copying 1 file to 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target>
     [java] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/compile-as-config.xml>:64
     [java] Error: unable to open 
'<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/generated-sources/externc/classes'.>
     [java] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/compile-as-config.xml>
 (line: 64)
     [java]         </source-path>
     [java] 
     [java] 
     [java] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/compile-as-config.xml>:77
     [java] Error: 'generated-sources/externc/classes' is not a file.
     [java] 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/compile-as-config.xml>
 (line: 77)
     [java]     </include-sources>
     [java] 
     [java] 
     [java] Loading configuration: 
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/target/compile-as-config.xml>
     [java] 
     [java] Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8

BUILD FAILED
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/build.xml>:106: 
The following error occurred while executing this line:
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/build.xml>:55:
 The following error occurred while executing this line:
<http://apacheflexbuild.cloudapp.net:8080/job/flex-falcon/ws/externs/createjs/build.xml>:487:
 Java returned: 4

Total time: 45 minutes 11 seconds
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
Build step 'Invoke Ant' marked build as failure
Skipped archiving because build is not successful
Recording test results

Reply via email to