{"id":0,"registry":{"0":{"submorphs":[],"scripts":[],"shape":{"__isSmartRef__":true,"id":1},"_ClipMode":"visible","derivationIds":["0DB81006-4481-4955-9F2B-634C9F8A3291","DB068FC5-6C7D-41CE-9BA2-BFB75D14170D","1C6A2D58-EEBF-4B56-A570-A813D0E79AF1","67899964-69EF-4FEE-9299-97278745C986","240C04A0-CFFC-4811-86B8-F517C6A341AB","0337F153-7E6D-4C9F-BCCE-3A7A7B77EA56","79F62973-1036-4B9E-9346-71DE49C8F39D","F71C29C2-BB54-48F7-96DB-8376E731D78E","26A6BAFD-4B7E-47C9-8CCB-8B84ED82882A","B9365C00-2B56-4E8E-8AEA-9325CFD24A41","78D72400-F2FF-4ACA-953A-B19EBD70E2E0","26898FEC-2826-4269-9AA1-D8D9F137D6F8","6604BE07-3E08-4554-B5D5-25BD6721C9FD","DDD01C20-716F-49AC-A7B5-976A5C7465A8","08FA7EF0-9F3A-4AF9-9A97-F65A6605637A","AC6A61A8-C997-48FA-A8C5-250C44BF81F3","F25EC4F0-ADBF-4EE3-A2E5-A0FAC3F585BF","E4B140B5-E95A-4012-A48F-B5312F2B611D","1E9F8B1C-F12E-4A90-A181-1BDA53398B56","59860F36-96BD-42AA-B90C-F9EE639B1466","1FF11B1F-B7F1-454C-9A5A-8840E1F18FAC"],"id":"54EE0580-6D1B-46E0-86E7-3506591EDDDF","grabbingEnabled":false,"droppingEnabled":true,"halosEnabled":true,"eventHandler":{"__isSmartRef__":true,"id":2},"showsHalos":false,"_Rotation":0,"_Scale":1,"layout":{"__isSmartRef__":true,"id":3},"name":"ThumbnailHistoryDrawingCanvasMorph","partsBinMetaInfo":{"__isSmartRef__":true,"id":4},"chunkColors":[],"isCopyMorphRef":true,"morphRefId":1,"__serializedExpressions__":["_Position","distanceToDragEvent","penColor"],"pointInHistory":0,"timeChunks":[[]],"history":[],"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":31},"__LivelyClassName__":"DrawingCanvasMorph","__SourceModuleName__":"Global.users.robertkrahn.Canvas","_Position":"lively.pt(0.0,0.0)","distanceToDragEvent":"lively.pt(534.0,-18.0)","penColor":"Color.rgb(0,0,0)"},"1":{"dataURL":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0sAAAJoCAYAAAC3C3paAAAgAElEQVR4Xu3ZoRHAMAwEwbj/plOADY7/BotoZXKT8/kIECBAgAABAgQIECBA4BI4TAgQIECAAAECBAgQIEDgFhBLXgUBAgQIECBAgAABAgQeAmLJsyBAgAABAgQIECBAgIBY8gYIECBAgAABAgQIECDQBPxZak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQBsIGoIAAAtDSURBVIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAmIpbGDW5cAAQIECBAgQIAAgSYglpqTKQIECBAgQIAAAQIExgTE0tjBrUuAAAECBAgQIECAQBMQS83JFAECBAgQIECAAAECYwJiaezg1iVAgAABAgQIECBAoAmIpeZkigABAgQIECBAgACBMQGxNHZw6xIgQIAAAQIECBAg0ATEUnMyRYAAAQIECBAgQIDAmIBYGju4dQkQIECAAAECBAgQaAJiqTmZIkCAAAECBAgQIEBgTEAsjR3cugQIECBAgAABAgQINAGx1JxMESBAgAABAgQIECAwJiCWxg5uXQIECBAgQIAAAQIEmoBYak6mCBAgQIAAAQIECBAYExBLYwe3LgECBAgQIECAAAECTUAsNSdTBAgQIECAAAECBAiMCYilsYNblwABAgQIECBAgACBJiCWmpMpAgQIECBAgAABAgTGBMTS2MGtS4AAAQIECBAgQIBAExBLzckUAQIECBAgQIAAAQJjAmJp7ODWJUCAAAECBAgQIECgCYil5mSKAAECBAgQIECAAIExAbE0dnDrEiBAgAABAgQIECDQBMRSczJFgAABAgQIECBAgMCYgFgaO7h1CRAgQIAAAQIECBBoAmKpOZkiQIAAAQIECBAgQGBMQCyNHdy6BAgQIECAAAECBAg0AbHUnEwRIECAAAECBAgQIDAmIJbGDm5dAgQIECBAgAABAgSagFhqTqYIECBAgAABAgQIEBgTEEtjB7cuAQIECBAgQIAAAQJNQCw1J1MECBAgQIAAAQIECIwJiKWxg1uXAAECBAgQIECAAIEmIJaakykCBAgQIECAAAECBMYExNLYwa1LgAABAgQIECBAgEATEEvNyRQBAgQIECBAgAABAmMCYmns4NYlQIAAAQIECBAgQKAJiKXmZIoAAQIECBAgQIAAgTEBsTR2cOsSIECAAAECBAgQINAExFJzMkWAAAECBAgQIECAwJiAWBo7uHUJECBAgAABAgQIEGgCYqk5mSJAgAABAgQIECBAYExALI0d3LoECBAgQIAAAQIECDQBsdScTBEgQIAAAQIECBAgMCYglsYObl0CBAgQIECAAAECBJqAWGpOpggQIECAAAECBAgQGBMQS2MHty4BAgQIECBAgAABAk1ALDUnUwQIECBAgAABAgQIjAn8tBYCaSTAKdcAAAAASUVORK5CYII=","_BorderWidth":1.482,"_Opacity":1,"__serializedExpressions__":["_Position","_Extent","_Padding","_BorderColor","_Fill"],"__LivelyClassName__":"DrawingCanvasShape","__SourceModuleName__":"Global.users.robertkrahn.Canvas","_Position":"lively.pt(0.0,0.0)","_Extent":"lively.pt(843.0,616.0)","_Padding":"lively.rect(0,0,0,0)","_BorderColor":"Color.rgb(95,94,95)","_Fill":"Color.rgba(255,255,255,0)"},"2":{"morph":{"__isSmartRef__":true,"id":0},"__LivelyClassName__":"lively.morphic.EventHandler","__SourceModuleName__":"Global.lively.morphic.Events"},"3":{"resizeWidth":true,"resizeHeight":true},"4":{"partName":"ThumbnailHistoryDrawingCanvasMorph","requiredModules":[],"partsSpaceName":"PartsBin/Astrid/","comment":"Can be used to show a history and extract objects from it. Apart from that, it is similar to the drawingcanvasmorph in my categroy","changes":[{"__isSmartRef__":true,"id":5},{"__isSmartRef__":true,"id":6},{"__isSmartRef__":true,"id":7},{"__isSmartRef__":true,"id":8},{"__isSmartRef__":true,"id":9},{"__isSmartRef__":true,"id":10},{"__isSmartRef__":true,"id":11},{"__isSmartRef__":true,"id":12},{"__isSmartRef__":true,"id":13},{"__isSmartRef__":true,"id":14},{"__isSmartRef__":true,"id":15},{"__isSmartRef__":true,"id":16},{"__isSmartRef__":true,"id":17},{"__isSmartRef__":true,"id":18},{"__isSmartRef__":true,"id":19},{"__isSmartRef__":true,"id":20},{"__isSmartRef__":true,"id":21},{"__isSmartRef__":true,"id":22},{"__isSmartRef__":true,"id":23},{"__isSmartRef__":true,"id":24},{"__isSmartRef__":true,"id":25},{"__isSmartRef__":true,"id":26},{"__isSmartRef__":true,"id":27},{"__isSmartRef__":true,"id":28},{"__isSmartRef__":true,"id":29},{"__isSmartRef__":true,"id":30}],"migrationLevel":9,"__serializedExpressions__":["lastModifiedDate"],"__LivelyClassName__":"lively.PartsBin.PartsBinMetaInfo","__SourceModuleName__":"Global.lively.PartsBin","lastModifiedDate":"new Date(\"Tue Nov 25 2014 18:10:25 GMT-0800 (PST)\")"},"5":{"author":"athomschke","message":"thumbnail slider comes with history slider","id":"44288CD3-A2F4-4B4D-A909-016911150AC3","__serializedExpressions__":["date"],"date":"new Date(\"Mon Nov 24 2014 12:53:37 GMT-0800 (PST)\")"},"6":{"author":"athomschke","message":"drawing does not make eveerything visible again anymore","id":"FDBC2643-DF04-433A-ACD2-D087DD6E6B28","__serializedExpressions__":["date"],"date":"new Date(\"Fri Nov 21 2014 14:54:14 GMT-0800 (PST)\")"},"7":{"author":"athomschke","message":"allow re-adding exported morphs","id":"2A8FEE79-1036-4529-9291-A979A2F9F2BA","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 18 2014 10:00:41 GMT-0800 (PST)\")"},"8":{"author":"athomschke","message":"exporting functionality","id":"1CE17D73-2CBF-40D2-ABAB-09A812A49E0D","__serializedExpressions__":["date"],"date":"new Date(\"Mon Nov 17 2014 12:55:31 GMT-0800 (PST)\")"},"9":{"author":"athomschke","message":"made canvasses toggling","id":"B526FC1F-173B-4D30-9B63-E040EEB9A659","__serializedExpressions__":["date"],"date":"new Date(\"Fri Nov 14 2014 15:56:54 GMT-0800 (PST)\")"},"10":{"author":"athomschke","message":"implemented erase button","id":"25F78003-E821-41E0-A9F0-946FF0099DC6","__serializedExpressions__":["date"],"date":"new Date(\"Thu Nov 13 2014 16:37:49 GMT-0800 (PST)\")"},"11":{"author":"athomschke","message":"fixed colors","id":"EF761A7E-112B-4AB2-9177-714959C36504","__serializedExpressions__":["date"],"date":"new Date(\"Wed Nov 12 2014 18:08:13 GMT-0800 (PST)\")"},"12":{"author":"null","message":"more steady colors for time chunking ","id":"25C17D8D-4585-47C9-ACF3-062C6B8E55D9","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 11 2014 13:46:07 GMT-0800 (PST)\")"},"13":{"author":"null","message":"added time information to history","id":"F264FC5B-D4C1-41CA-9885-8A25340691DA","__serializedExpressions__":["date"],"date":"new Date(\"Mon Nov 10 2014 15:38:45 GMT-0800 (PST)\")"},"14":{"author":"null","message":"implemented history functionality. Use HistorySlider to navigate.","id":"E00F597A-CFC4-4CD6-AB18-11525CE0BB35","__serializedExpressions__":["date"],"date":"new Date(\"Mon Nov 10 2014 15:30:21 GMT-0800 (PST)\")"},"15":{"author":"athomschke","message":"adding a morph triggers it to be added to owner","id":"FD8C4C2D-CF6C-4E34-8C1B-3F548B63BDBD","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 04 2014 13:58:26 GMT-0800 (PST)\")"},"16":{"author":"athomschke","message":"initial","id":"3271B3BE-5414-4C31-981E-757EBD282205","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 04 2014 13:26:11 GMT-0800 (PST)\")"},"17":{"author":"athomschke","message":"initial","id":"BA153065-45C7-4C69-A7B9-426107E82C84","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 04 2014 13:43:08 GMT-0800 (PST)\")"},"18":{"author":"athomschke","message":"adding added morph to owner while keeping canvas in foreground","id":"E1299D6A-7A3C-477F-9A9B-F682E650A87D","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 04 2014 14:01:49 GMT-0800 (PST)\")"},"19":{"author":"null","message":"implemented show and hide history slider","id":"52AD802D-CE21-42CF-B308-B68816E7AE96","__serializedExpressions__":["date"],"date":"new Date(\"Wed Nov 12 2014 10:47:39 GMT-0800 (PST)\")"},"20":{"author":"athomschke","message":"initial","id":"9DE6E0CF-1976-4B04-AC80-C723ECC19A82","__serializedExpressions__":["date"],"date":"new Date(\"Thu Nov 13 2014 13:28:12 GMT-0800 (PST)\")"},"21":{"author":"athomschke","message":"updated historySlider used","id":"E8281E3C-27E3-44FD-9DE9-4FECFDD9CE62","__serializedExpressions__":["date"],"date":"new Date(\"Thu Nov 13 2014 13:29:10 GMT-0800 (PST)\")"},"22":{"author":"athomschke","message":"meh","id":"714A631A-A781-4BC3-A81F-F68811BF93E9","__serializedExpressions__":["date"],"date":"new Date(\"Thu Nov 13 2014 16:41:49 GMT-0800 (PST)\")"},"23":{"author":"athomschke","message":"resetting makes pen black","id":"E3B2021D-CF45-45B6-8B23-10B6F1D71A23","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 18 2014 09:32:21 GMT-0800 (PST)\")"},"24":{"author":"athomschke","message":"resetted","id":"1C309E10-D198-4BF8-800A-25E4C2914D2C","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 18 2014 09:32:41 GMT-0800 (PST)\")"},"25":{"author":"athomschke","message":"implemented rotation and scale recognition of stamps","id":"8C219F03-08F4-4EDD-AEEC-9F35C3663B4F","__serializedExpressions__":["date"],"date":"new Date(\"Fri Nov 21 2014 13:51:45 GMT-0800 (PST)\")"},"26":{"author":"athomschke","message":"fixed bug: when dropping a stamp, canvas and time slider would not be updated","id":"4633ADD3-4191-4EF8-A8B2-7386DC34A8E9","__serializedExpressions__":["date"],"date":"new Date(\"Fri Nov 21 2014 14:03:07 GMT-0800 (PST)\")"},"27":{"author":"athomschke","message":"alta, connections.","id":"38A022A1-2702-4896-93DF-C69EF16E6DB9","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 25 2014 18:06:34 GMT-0800 (PST)\")"},"28":{"author":"athomschke","message":"reset all","id":"4E83B6E4-E6DE-4B21-AEF0-DEE4C75A093F","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 25 2014 18:08:32 GMT-0800 (PST)\")"},"29":{"author":"athomschke","message":"now?","id":"9CA51B98-368E-4647-9248-E17C6BE18409","__serializedExpressions__":["date"],"date":"new Date(\"Tue Nov 25 2014 18:10:23 GMT-0800 (PST)\")"},"30":{"__serializedExpressions__":["date"],"author":"athomschke","message":"problem with slow connections","id":"5285A71B-AA85-4D96-9C05-CEB66F36B7D2","date":"new Date(\"Tue Nov 25 2014 18:25:41 GMT-0800 (PST)\")"},"31":{"startDrawing":{"__isSmartRef__":true,"id":32},"finishShape":{"__isSmartRef__":true,"id":35},"drawTo":{"__isSmartRef__":true,"id":38},"onMouseDown":{"__isSmartRef__":true,"id":41},"onMouseMove":{"__isSmartRef__":true,"id":48},"onMouseUp":{"__isSmartRef__":true,"id":55},"getPenColor":{"__isSmartRef__":true,"id":62},"$$addToHistory":{"__isSmartRef__":true,"id":65},"$$removeFromHistory":{"__isSmartRef__":true,"id":68},"goToPointInHistory":{"__isSmartRef__":true,"id":71},"reset":{"__isSmartRef__":true,"id":74},"drawStroke":{"__isSmartRef__":true,"id":77},"repeat":{"__isSmartRef__":true,"id":80},"recordStroke":{"__isSmartRef__":true,"id":83},"highlightObject":{"__isSmartRef__":true,"id":86},"setTimeChunks":{"__isSmartRef__":true,"id":89},"showHistorySlider":{"__isSmartRef__":true,"id":92},"showEraseButton":{"__isSmartRef__":true,"id":95},"showChunks":{"__isSmartRef__":true,"id":98},"exportCurrentContent":{"__isSmartRef__":true,"id":101},"getContentExtent":{"__isSmartRef__":true,"id":104},"clear":{"__isSmartRef__":true,"id":107},"showExportButton":{"__isSmartRef__":true,"id":114},"addMorph":{"__isSmartRef__":true,"id":117}},"32":{"varMapping":{"__isSmartRef__":true,"id":33},"source":"function startDrawing(aPos) {\n    if (this.currentPenPosition) {\n        alert('Already drawing');\n    } else {\n        this.currentPenPosition = aPos;\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":34},"__LivelyClassName__":"lively.Closure"},"33":{"this":{"__isSmartRef__":true,"id":0}},"34":{"__serializedExpressions__":["timestamp"],"user":"athomschke","tags":["interface"],"timestamp":"new Date(\"Fri Nov 21 2014 14:53:20 GMT-0800 (PST)\")"},"35":{"varMapping":{"__isSmartRef__":true,"id":36},"source":"function finishShape(aPos) {\n    if (this.currentPenPosition) {\n        this.drawStroke(this.currentPenPosition, aPos, this.getPenColor());\n        this.recordStroke(this.currentPenPosition, aPos, this.getPenColor());\n        delete this.currentPenPosition;\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":37},"__LivelyClassName__":"lively.Closure"},"36":{"this":{"__isSmartRef__":true,"id":0}},"37":{"__serializedExpressions__":["timestamp"],"user":"null","tags":["interface"],"timestamp":"new Date(\"Mon Nov 10 2014 15:02:52 GMT-0800 (PST)\")"},"38":{"varMapping":{"__isSmartRef__":true,"id":39},"source":"function drawTo(aPos) {\n    if (this.currentPenPosition) {\n        this.drawStroke(this.currentPenPosition, aPos, this.getPenColor());\n        this.recordStroke(this.currentPenPosition, aPos, this.getPenColor());\n        this.currentPenPosition = aPos;\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":40},"__LivelyClassName__":"lively.Closure"},"39":{"this":{"__isSmartRef__":true,"id":0}},"40":{"__serializedExpressions__":["timestamp"],"user":"null","tags":["interface"],"timestamp":"new Date(\"Mon Nov 10 2014 15:02:52 GMT-0800 (PST)\")"},"41":{"varMapping":{"__isSmartRef__":true,"id":42},"source":"function onMouseDown(evt) {\n    this.startDrawing(evt.getPositionIn(this))\n}","funcProperties":{"__isSmartRef__":true,"id":47},"__LivelyClassName__":"lively.Closure"},"42":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":43}},"43":{"$super":{"__isSmartRef__":true,"id":44}},"44":{"varMapping":{"__isSmartRef__":true,"id":45},"source":"function () {\n        try {\n          // FIXME super is supposed to be static\n          return Object.getPrototypeOf(obj)[name].apply(obj, arguments);\n        } catch (e) {\n          if (typeof $world !== undefined) $world.logError(e, 'Error in $super call')\n          else alert('Error in $super call: ' + e + '\\n' + e.stack);\n          return null;\n        }\n      }","funcProperties":{"__isSmartRef__":true,"id":46},"__LivelyClassName__":"lively.Closure"},"45":{"obj":{"__isSmartRef__":true,"id":0},"name":"onMouseDown"},"46":{},"47":{"__serializedExpressions__":["timestamp"],"user":"null","timestamp":"new Date(\"Mon Nov 10 2014 13:26:56 GMT-0800 (PST)\")"},"48":{"varMapping":{"__isSmartRef__":true,"id":49},"source":"function onMouseMove(evt) {\n    this.drawTo(evt.getPositionIn(this));\n}","funcProperties":{"__isSmartRef__":true,"id":54},"__LivelyClassName__":"lively.Closure"},"49":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":50}},"50":{"$super":{"__isSmartRef__":true,"id":51}},"51":{"varMapping":{"__isSmartRef__":true,"id":52},"source":"function () {\n        try {\n          // FIXME super is supposed to be static\n          return Object.getPrototypeOf(obj)[name].apply(obj, arguments);\n        } catch (e) {\n          if (typeof $world !== undefined) $world.logError(e, 'Error in $super call')\n          else alert('Error in $super call: ' + e + '\\n' + e.stack);\n          return null;\n        }\n      }","funcProperties":{"__isSmartRef__":true,"id":53},"__LivelyClassName__":"lively.Closure"},"52":{"obj":{"__isSmartRef__":true,"id":0},"name":"onMouseMove"},"53":{},"54":{"__serializedExpressions__":["timestamp"],"user":"null","timestamp":"new Date(\"Mon Nov 10 2014 14:44:21 GMT-0800 (PST)\")"},"55":{"varMapping":{"__isSmartRef__":true,"id":56},"source":"function onMouseUp(evt) {\n    this.finishShape(evt.getPositionIn(this));\n}","funcProperties":{"__isSmartRef__":true,"id":61},"__LivelyClassName__":"lively.Closure"},"56":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":57}},"57":{"$super":{"__isSmartRef__":true,"id":58}},"58":{"varMapping":{"__isSmartRef__":true,"id":59},"source":"function () {\n        try {\n          // FIXME super is supposed to be static\n          return Object.getPrototypeOf(obj)[name].apply(obj, arguments);\n        } catch (e) {\n          if (typeof $world !== undefined) $world.logError(e, 'Error in $super call')\n          else alert('Error in $super call: ' + e + '\\n' + e.stack);\n          return null;\n        }\n      }","funcProperties":{"__isSmartRef__":true,"id":60},"__LivelyClassName__":"lively.Closure"},"59":{"obj":{"__isSmartRef__":true,"id":0},"name":"onMouseUp"},"60":{},"61":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Mon Oct 27 2014 16:17:26 GMT-0700 (PDT)\")"},"62":{"varMapping":{"__isSmartRef__":true,"id":63},"source":"function getPenColor() {\n    return this.penColor || Global.Color.black;\n}","funcProperties":{"__isSmartRef__":true,"id":64},"__LivelyClassName__":"lively.Closure"},"63":{"this":{"__isSmartRef__":true,"id":0}},"64":{"__serializedExpressions__":["timestamp"],"user":"null","timestamp":"new Date(\"Mon Nov 10 2014 13:26:56 GMT-0800 (PST)\")"},"65":{"varMapping":{"__isSmartRef__":true,"id":66},"source":"function addToHistory(obj) {\n    this.history.push(obj);\n}","funcProperties":{"__isSmartRef__":true,"id":67},"__LivelyClassName__":"lively.Closure"},"66":{"this":{"__isSmartRef__":true,"id":0}},"67":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 13:26:56 GMT-0800 (PST)\")"},"68":{"varMapping":{"__isSmartRef__":true,"id":69},"source":"function removeFromHistory(obj) {\n    this.history.remove(obj);\n}","funcProperties":{"__isSmartRef__":true,"id":70},"__LivelyClassName__":"lively.Closure"},"69":{"this":{"__isSmartRef__":true,"id":0}},"70":{"user":"null","__serializedExpressions__":["timestamp"],"timestamp":"new Date(\"Mon Nov 10 2014 13:26:56 GMT-0800 (PST)\")"},"71":{"varMapping":{"__isSmartRef__":true,"id":72},"source":"function goToPointInHistory(idx) {\n    this.clear();\n    for (var i = 0; i<idx; i++) {\n        this.repeat(this.history[i]);\n    }\n    this.pointInHistory = idx;\n}","funcProperties":{"__isSmartRef__":true,"id":73},"__LivelyClassName__":"lively.Closure"},"72":{"this":{"__isSmartRef__":true,"id":0}},"73":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Fri Nov 14 2014 15:53:17 GMT-0800 (PST)\")"},"74":{"varMapping":{"__isSmartRef__":true,"id":75},"source":"function reset() {\n    this.clear();\n    this.history = [];\n    this.chunkColors = [];\n    for (var i = this.history.length; i >= 0; i--){\n        this.history.remove(this.history[i]);\n    }\n    this.timeChunks = [[]];\n    this.setPenColor(Global.Color.black)\n    lively.bindings.disconnectAll(this);\n    this.pointInHistory = 0;\n    this.historySlider && this.historySlider.remove();\n    delete this.historySlider;\n    this.timeChunkSlider && this.timeChunkSlider.remove();\n    delete this.timeChunkSlider;\n    delete this.timeChunkThreshold;\n    this.eraseButton && this.eraseButton.remove();\n    delete this.eraseButton;\n    this.exportButton && this.exportButton.remove();\n    delete this.exportButton;\n}","funcProperties":{"__isSmartRef__":true,"id":76},"__LivelyClassName__":"lively.Closure"},"75":{"this":{"__isSmartRef__":true,"id":0}},"76":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Tue Nov 25 2014 18:10:13 GMT-0800 (PST)\")"},"77":{"varMapping":{"__isSmartRef__":true,"id":78},"source":"function drawStroke(from, to, color) {\n    var ctxt2d = this.renderContext().ctxt2d;\n    ctxt2d.strokeStyle = '#'+color.toHexString();\n    ctxt2d.beginPath();\n    ctxt2d.moveTo(from.x, from.y);\n    ctxt2d.lineTo(to.x, to.y);\n    ctxt2d.stroke();\n}","funcProperties":{"__isSmartRef__":true,"id":79},"__LivelyClassName__":"lively.Closure"},"78":{"this":{"__isSmartRef__":true,"id":0}},"79":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Wed Nov 12 2014 18:07:59 GMT-0800 (PST)\")"},"80":{"varMapping":{"__isSmartRef__":true,"id":81},"source":"function repeat(historyEntry) {\n    if (historyEntry) {\n        this.drawStroke(\n            historyEntry.from,\n            historyEntry.to,\n            historyEntry.color)\n        historyEntry.isVisible = true;        \n    }\n}","funcProperties":{"__isSmartRef__":true,"id":82},"__LivelyClassName__":"lively.Closure"},"81":{"this":{"__isSmartRef__":true,"id":0}},"82":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Tue Nov 25 2014 18:25:25 GMT-0800 (PST)\")"},"83":{"varMapping":{"__isSmartRef__":true,"id":84},"source":"function recordStroke(from, to, color) {\n    var newEntry = { \n        from: from, \n        to: to, \n        color: color,\n        time: Date.now(),\n        isVisible: true // hack\n    }\n    this.history.pushAt(newEntry, this.pointInHistory);\n    this.setTimeChunks(this.timeChunkThreshold || 1000);\n    this.pointInHistory += 1;\n    lively.bindings.signal(this, 'history', this.history);\n}","funcProperties":{"__isSmartRef__":true,"id":85},"__LivelyClassName__":"lively.Closure"},"84":{"this":{"__isSmartRef__":true,"id":0}},"85":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Mon Nov 17 2014 12:31:22 GMT-0800 (PST)\")"},"86":{"varMapping":{"__isSmartRef__":true,"id":87},"source":"function highlightObject(anArray) {\n    var bounds = anArray.reduce(function(a,b) {\n        return {\n            minX: Math.min(b.from.x, b.to.x, a.minX),\n            maxX: Math.max(b.from.x, b.to.x, a.maxX),\n            minY: Math.min(b.from.y, b.to.y, a.minY),\n            maxY: Math.max(b.from.y, b.to.y, a.maxY)\n        }\n    }, {minX: this.getExtent().x, maxX: 0, minY: this.getExtent().y, maxY: 0})\n    var pos = this.getPositionInWorld();\n    show(rect(bounds.minX + pos.x, bounds.minY + pos.y, bounds.maxX - bounds.minX, bounds.maxY - bounds.minY));\n}","funcProperties":{"__isSmartRef__":true,"id":88},"__LivelyClassName__":"lively.Closure"},"87":{"this":{"__isSmartRef__":true,"id":0}},"88":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Thu Nov 13 2014 10:52:56 GMT-0800 (PST)\")"},"89":{"varMapping":{"__isSmartRef__":true,"id":90},"source":"function setTimeChunks(treshold) {\n    this.timeChunkThreshold = treshold;\n    this.timeChunks.each(function(ea) {\n        this.timeChunks.remove(ea);\n    }.bind(this));\n    var chunkIndex = -1;\n    this.history.reduce(function(prev, cur, idx, history) {\n        if (prev && Math.abs(cur.time - prev.time) < treshold) {\n            this.timeChunks[chunkIndex].push(cur);\n        } else {\n            chunkIndex += 1;\n            this.timeChunks[chunkIndex] = [cur];\n        }\n        return cur;\n    }.bind(this), undefined)\n    lively.bindings.signal(this, 'timeChunks', this.timeChunks);\n}","funcProperties":{"__isSmartRef__":true,"id":91},"__LivelyClassName__":"lively.Closure"},"90":{"this":{"__isSmartRef__":true,"id":0}},"91":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Tue Nov 25 2014 18:06:23 GMT-0800 (PST)\")"},"92":{"varMapping":{"__isSmartRef__":true,"id":93},"source":"function showHistorySlider(bool) {\n    var doShow = typeof bool === 'undefined' ? true : bool;\n    if (doShow) {\n        if (!this.historySlider) {\n            this.historySlider = $world.openPartItem('ThumbnailHistorySlider', 'PartsBin/Astrid');\n        }\n        if (!this.timeChunkSlider) {\n            this.timeChunkSlider = $world.openPartItem('TimeChunkSlider', 'PartsBin/Astrid');\n        }\n        this.historySlider.showOnCanvas(this);\n        this.setTimeChunks(this.timeChunkThreshold || 1000);\n        this.timeChunkSlider.showOnCanvas(this);\n    } else {\n        if (this.historySlider) {\n            this.historySlider.reset();\n            this.historySlider.remove();\n        }\n        if (this.timeChunkSlider) {\n            this.timeChunkSlider.reset()\n            this.timeChunkSlider.remove()\n        }\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":94},"__LivelyClassName__":"lively.Closure"},"93":{"this":{"__isSmartRef__":true,"id":0}},"94":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Mon Nov 24 2014 12:46:08 GMT-0800 (PST)\")"},"95":{"varMapping":{"__isSmartRef__":true,"id":96},"source":"function showEraseButton(bool) {\n    if ((typeof bool === 'undefined') || bool) {\n        this.eraseButton = this.eraseButton || $world.openPartItem('CanvasContentEraser', 'PartsBin/Astrid');\n        this.owner.addMorph(this.eraseButton)\n        this.eraseButton.setPosition(this.bounds().topRight().subPt(pt(this.eraseButton.getExtent().x, 0)).subPt(pt(5, -5)));\n        this.eraseButton.canvasMorph = this;\n    } else {\n        this.eraseButton && this.eraseButton.remove();\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":97},"__LivelyClassName__":"lively.Closure"},"96":{"this":{"__isSmartRef__":true,"id":0}},"97":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Thu Nov 13 2014 16:41:20 GMT-0800 (PST)\")"},"98":{"varMapping":{"__isSmartRef__":true,"id":99},"source":"function showChunks(indices) {\n    this.clear();\n    var idx = 0;\n    this.timeChunks.some(function(chunk, chunkIndex) {\n        if (!indices || indices.include(chunkIndex)) {\n            chunk.some(function(entry) {\n                this.repeat(this.history[idx]);\n                idx += 1\n                return idx > this.pointInHistory\n            }.bind(this))\n        } else {\n            idx += chunk.length\n        }\n        return (idx > this.pointInHistory);\n    }.bind(this))\n}","funcProperties":{"__isSmartRef__":true,"id":100},"__LivelyClassName__":"lively.Closure"},"99":{"this":{"__isSmartRef__":true,"id":0}},"100":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Tue Nov 25 2014 16:30:03 GMT-0800 (PST)\")"},"101":{"varMapping":{"__isSmartRef__":true,"id":102},"source":"function exportCurrentContent() {\n    var strokes = this.history.select(function(ea) {return ea.isVisible})\n    if (strokes.length > 0) {\n        var bounds = this.getContentExtent(strokes),\n            cMorph = new lively.morphic.CanvasMorph(bounds.extent()),\n            offset = bounds || { x: 0, y: 0 },\n            ctxt2d = cMorph.getContext();\n        cMorph.history = [];\n        strokes.each(function(stroke) {\n            cMorph.history.push(Object.merge([stroke, {\n                from: pt(stroke.from.x - offset.x, stroke.from.y - offset.y),\n                to: pt(stroke.to.x - offset.x, stroke.to.y - offset.y)\n            }]))\n            ctxt2d.strokeStyle = '#'+stroke.color.toHexString();\n            ctxt2d.beginPath();\n            ctxt2d.moveTo(stroke.from.x - offset.x, stroke.from.y - offset.y);\n            ctxt2d.lineTo(stroke.to.x - offset.x, stroke.to.y - offset.y);\n            ctxt2d.stroke();\n        })\n        cMorph.openInHand();        \n    }\n}","funcProperties":{"__isSmartRef__":true,"id":103},"__LivelyClassName__":"lively.Closure"},"102":{"this":{"__isSmartRef__":true,"id":0}},"103":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Tue Nov 18 2014 09:59:53 GMT-0800 (PST)\")"},"104":{"varMapping":{"__isSmartRef__":true,"id":105},"source":"function getContentExtent(strokeArray) {\n    var b = strokeArray.reduce(function(a,b) {\n        return {\n            minX: Math.min(b.from.x, b.to.x, a.minX),\n            maxX: Math.max(b.from.x, b.to.x, a.maxX),\n            minY: Math.min(b.from.y, b.to.y, a.minY),\n            maxY: Math.max(b.from.y, b.to.y, a.maxY)\n        }\n    }, {minX: 1000000, maxX: 0, minY: 1000000, maxY: 0})\n    return rect(b.minX, b.minY, Math.max(b.maxX - b.minX, 1), Math.max(b.maxY - b.minY, 1));\n}","funcProperties":{"__isSmartRef__":true,"id":106},"__LivelyClassName__":"lively.Closure"},"105":{"this":{"__isSmartRef__":true,"id":0}},"106":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Mon Nov 17 2014 12:40:46 GMT-0800 (PST)\")"},"107":{"varMapping":{"__isSmartRef__":true,"id":108},"source":"function clear() {\n    this.setFill(Global.Color.white.withA(0));\n    var ctxt2d = this.renderContext().ctxt2d;\n    ctxt2d.clearRect(0, 0, ctxt2d.canvas.width, ctxt2d.canvas.height);\n    this.history.each(function(ea) { ea.isVisible = false })\n}","funcProperties":{"__isSmartRef__":true,"id":113},"__LivelyClassName__":"lively.Closure"},"108":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":109}},"109":{"$super":{"__isSmartRef__":true,"id":110}},"110":{"varMapping":{"__isSmartRef__":true,"id":111},"source":"function () {\n        try {\n          // FIXME super is supposed to be static\n          return Object.getPrototypeOf(obj)[name].apply(obj, arguments);\n        } catch (e) {\n          if (typeof $world !== undefined) $world.logError(e, 'Error in $super call')\n          else alert('Error in $super call: ' + e + '\\n' + e.stack);\n          return null;\n        }\n      }","funcProperties":{"__isSmartRef__":true,"id":112},"__LivelyClassName__":"lively.Closure"},"111":{"obj":{"__isSmartRef__":true,"id":0},"name":"clear"},"112":{},"113":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Mon Nov 17 2014 12:34:35 GMT-0800 (PST)\")"},"114":{"varMapping":{"__isSmartRef__":true,"id":115},"source":"function showExportButton(bool) {\n    if ((typeof bool === 'undefined') || bool) {\n        this.exportButton = this.exportButton || $world.openPartItem('AsCanvasMorphButton', 'PartsBin/Astrid');\n        this.owner.addMorph(this.exportButton)\n        this.exportButton.align(this.exportButton.bounds().topLeft(),this.bounds().topLeft());\n        this.exportButton.moveBy(pt(-10,-10));\n        this.exportButton.setupConnections(this);\n    } else {\n        this.exportButton && this.exportButton.remove();\n    }\n}","funcProperties":{"__isSmartRef__":true,"id":116},"__LivelyClassName__":"lively.Closure"},"115":{"this":{"__isSmartRef__":true,"id":0}},"116":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Mon Nov 17 2014 12:53:27 GMT-0800 (PST)\")"},"117":{"varMapping":{"__isSmartRef__":true,"id":118},"source":"function addMorph(aMorph, optMorphBefore) {\n    if (aMorph.shape instanceof lively.morphic.Shapes.Image) {\n        this.imageWasDropped(aMorph);\n    }\n    if (aMorph instanceof lively.morphic.CanvasMorph && aMorph.history) {\n        var newPoint = this.pointInHistory + aMorph.history.length;\n        var off = aMorph.getPositionInWorld().subPt(this.getPositionInWorld());\n        aMorph.history.each(function(ea) {\n            var from = ea.from.matrixTransform(aMorph.getGlobalTransform())\n                    .subPt(aMorph.getPositionInWorld()),\n                to = ea.to.matrixTransform(aMorph.getGlobalTransform())\n                    .subPt(aMorph.getPositionInWorld());\n            this.history.push(Object.merge([ea, {\n                from: pt(from.x+off.x, from.y + off.y),\n                to: pt(to.x+off.x, to.y + off.y)\n            }]));\n        }.bind(this))\n        this.pointInHistory = newPoint;\n        lively.bindings.signal(this, 'history', this.history);\n        this.setTimeChunks(this.timeChunkThreshold || 1000);\n        this.goToPointInHistory(this.pointInHistory);\n    }\n    if (aMorph.previousOwner && aMorph.previousPosition) {\n        aMorph.previousOwner.addMorph(aMorph);\n        aMorph.setPosition(aMorph.previousPosition);\n        return;\n    }\n    this.world().addMorph(aMorph);\n}","funcProperties":{"__isSmartRef__":true,"id":123},"__LivelyClassName__":"lively.Closure"},"118":{"this":{"__isSmartRef__":true,"id":0},"__serializedLivelyClosures__":{"__isSmartRef__":true,"id":119}},"119":{"$super":{"__isSmartRef__":true,"id":120}},"120":{"varMapping":{"__isSmartRef__":true,"id":121},"source":"function () {\n        try {\n          // FIXME super is supposed to be static\n          return Object.getPrototypeOf(obj)[name].apply(obj, arguments);\n        } catch (e) {\n          if (typeof $world !== undefined) $world.logError(e, 'Error in $super call')\n          else alert('Error in $super call: ' + e + '\\n' + e.stack);\n          return null;\n        }\n      }","funcProperties":{"__isSmartRef__":true,"id":122},"__LivelyClassName__":"lively.Closure"},"121":{"obj":{"__isSmartRef__":true,"id":0},"name":"addMorph"},"122":{},"123":{"__serializedExpressions__":["timestamp"],"user":"athomschke","timestamp":"new Date(\"Fri Nov 21 2014 14:02:25 GMT-0800 (PST)\")"},"isSimplifiedRegistry":true}}