Ignore:
Timestamp:
16.06.2010 16:21:23 (2 years ago)
Author:
mhallbauer
Message:

1.1.0

  • added new function to crop hires from superres, draw drop-shadow, reset hires
File:
1 edited

Legend:

Unmodified
Added
Removed
  • CMESS/mediaplayer/branches/zmsgraphic_extedit/zmsgraphic_extedit.metaobj.xml

    r1010 r1052  
    1818<item type="dictionary"><dictionary> 
    1919<item key="custom"> 
    20 <data content_type="application/x-javascript" filename="handleEdit.js" type="file">7661722074656d705f6163745f6865696768740909090909093d20303b0d0a7661722074656d705f6163745f77696474680909090909093d20303b0d0a7661722074656d705f6163745f7468756d625f6865696768740909093d20303b0d0a7661722074656d705f6163745f7468756d625f77696474680909093d20303b0d0a7661722074656d705f63726f705f617069090909090909093d206e756c6c3b0d0a766172202474656d705f627574746f6e735f63726f70090909093d206e756c6c3b0d0a766172202474656d705f627574746f6e735f64696d09090909093d206e756c6c3b0d0a766172202474656d705f627574746f6e735f6d61696e090909093d206e756c6c3b0d0a766172202474656d705f627574746f6e735f726573697a650909093d206e756c6c3b0d0a766172202474656d705f616374696f6e5f6c69737409090909093d206e756c6c3b0d0a766172202474656d705f666f726d2009090909090909093d206e756c6c3b0d0a766172202474656d705f696d675f636f6e7461696e6572090909093d206e756c6c3b0d0a766172202474656d705f696e707574735f64696d09090909093d206e756c6c3b0d0a766172202474656d705f6c6162656c5f686972657309090909093d206e756c6c3b0d0a766172202474656d705f6c6162656c5f68697265735f726573697a65093d206e756c6c3b0d0a766172202474656d705f6c6162656c5f7468756d6209090909093d206e756c6c3b0d0a766172202474656d705f6c6162656c5f7468756d625f63726f7009093d206e756c6c3b0d0a766172202474656d705f7069706509090909090909093d206e756c6c3b0d0a766172202474656d705f7468756d625f636f6e7461696e65720909093d206e756c6c3b0d0a766172202474656d705f7468756d625f776964746809090909093d206e756c6c3b0d0a766172202474656d705f7468756d625f686569676874090909093d206e756c6c3b0d0a766172202474656d705f776f726b73706163655f64696d090909093d206e756c6c3b0d0a0d0a66756e6374696f6e206368616e6765427574746f6e417661696c6162696c69747928617661696c61626c652c2024627574746f6e732c206368616e67655f7374796c65290d0a7b0d0a0969662028617661696c61626c65290d0a090924627574746f6e732e636c69636b28636c69636b6564416374696f6e293b0d0a09656c73650d0a090924627574746f6e732e756e62696e642827636c69636b272c20636c69636b6564416374696f6e293b0d0a090d0a09696620286368616e67655f7374796c65290d0a097b0d0a090924627574746f6e732e656163682866756e6374696f6e28696e6465782c20627574746f6e290d0a09097b0d0a09092020766172202474656d705f627574746f6e203d202428627574746f6e293b0d0a090920200d0a090920206966202821617661696c61626c65290d0a09092020092474656d705f627574746f6e2e72656d6f76654174747228277374796c6527293b0d0a09092020090d0a09092020696620282474656d705f627574746f6e2e69732827696d672729290d0a09092020092474656d705f627574746f6e2e617474722827737263272c202474656d705f627574746f6e2e61747472282773726327292e7265706c6163652828617661696c61626c65203f202f5f64697361626c65642f67203a202f2e706e672f67292c2028617661696c61626c65203f202727203a20275f64697361626c65642e706e67272929293b0d0a09092020656c73650d0a090920207b0d0a090920200969662028617661696c61626c65290d0a09092020097b0d0a0909202009092474656d705f627574746f6e2e72656d6f766541747472282764697361626c656427293b0d0a0909202009092474656d705f627574746f6e2e72656d6f76654174747228277374796c6527293b0d0a09092020097d0d0a0909202009656c73650d0a09092020097b0d0a0909092020092474656d705f627574746f6e2e61747472282764697361626c6564272c202764697361626c656427293b0d0a0909092020092474656d705f627574746f6e2e6373732827636f6c6f72272c20272363636327293b0d0a09092020097d0d0a090920207d0d0a09092020090d0a0909202069662028617661696c61626c65290d0a09092020092474656d705f627574746f6e2e6373732827637572736f72272c2027706f696e74657227293b0d0a09097d293b0d0a097d0d0a7d0d0a0d0a66756e6374696f6e206368616e6765427574746f6e5669736962696c6974792876697369626c652c2024627574746f6e73290d0a7b0d0a096368616e6765427574746f6e417661696c6162696c6974792876697369626c652c2024627574746f6e732c2066616c7365293b0d0a090d0a096966202876697369626c65290d0a090924627574746f6e732e73686f7728293b0d0a09656c73650d0a090924627574746f6e732e6869646528293b0d0a7d0d0a0d0a66756e6374696f6e206368616e67654a63726f70417661696c6162696c69747928617661696c61626c652c2063726f7070696e67290d0a7b0d0a096966202874656d705f63726f705f61706920213d206e756c6c290d0a090974656d705f63726f705f6170692e64657374726f7928293b0d0a0909090d0a0969662028617661696c61626c65290d0a097b0d0a09097661722074656d705f686569676874093d2063726f7070696e67203f207061727365496e74282474656d705f7468756d625f6865696768742e76616c282929203a2074656d705f6163745f6865696768743b0d0a09097661722074656d705f7769647468093d2063726f7070696e67203f207061727365496e74282474656d705f7468756d625f77696474682e76616c282929203a2074656d705f6163745f77696474683b0d0a09090d0a090974656d705f63726f705f617069203d20242e4a63726f70282474656d705f696d675f636f6e7461696e65722e66696e642827696d6727292e65712830292c200d0a0909097b200d0a09090909616c6c6f7753656c656374093a2066616c73652c0d0a09090909617370656374526174696f093a2074656d705f77696474682f74656d705f6865696768742c0d0a090909096d696e53697a650909093a205b32352c2032355d2c0d0a090909096d617853697a650909093a205b696d675f696e666f5b27776f726b7370616365275d5b277769647468275d2c20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d5d2c0d0a0909090968616e646c65730909093a20747275652c0d0a090909096f6e4368616e676509093a206368616e67656453656c656374696f6e0d0a0909097d293b0d0a090974656d705f63726f705f6170692e73657453656c656374285b302c20302c2074656d705f77696474682c2074656d705f6865696768745d293b0d0a090974656d705f63726f705f6170692e7365744f7074696f6e73287b20616c6c6f77526573697a653a20747275652c20616c6c6f774d6f76653a2063726f7070696e677d293b0d0a090974656d705f63726f705f6170692e666f63757328293b0d0a097d0d0a7d0d0a0d0a66756e6374696f6e206368616e67656453656c656374696f6e2864696d656e73696f6e73290d0a7b0d0a09696620282474656d705f6c6162656c5f68697265735f726573697a6520213d206e756c6c290d0a09092474656d705f6c6162656c5f68697265735f726573697a652e746578742864696d656e73696f6e732e77202b202720782027202b2064696d656e73696f6e732e68293b0d0a09656c736520696620282474656d705f6c6162656c5f7468756d625f63726f7020213d206e756c6c290d0a09092474656d705f6c6162656c5f7468756d625f63726f702e746578742864696d656e73696f6e732e77202b202720782027202b2064696d656e73696f6e732e68293b0d0a7d0d0a0d0a66756e6374696f6e206368616e676544696d656e73696f6e732872657365745f64696d73290d0a7b0d0a097661722074656d705f6368616e67655f776f726b73706163653b0d0a090d0a09696620282172657365745f64696d73290d0a097b0d0a09097661722074656d705f68656967687420090909093d097061727365496e74282474656d705f7468756d625f6865696768742e76616c2829293b0d0a09097661722074656d705f776964746809090909093d207061727365496e74282474656d705f7468756d625f77696474682e76616c2829293b0d0a09097661722074656d705f776f726b73706163655f64696d093d207061727365496e74282474656d705f776f726b73706163655f64696d2e76616c2829293b0d0a09090d0a090974656d705f68656967687420090909093d202874656d705f686569676874203d3d204e614e29203f2074656d705f6163745f7468756d625f686569676874203a2074656d705f6865696768743b0d0a090974656d705f776964746809090909093d202874656d705f7769647468203d3d204e614e29203f2074656d705f6163745f7468756d625f7769647468203a2074656d705f77696474683b0d0a090974656d705f776f726b73706163655f64696d093d202874656d705f776f726b73706163655f64696d203d3d204e614e29203f20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d203a2074656d705f776f726b73706163655f64696d3b0d0a09090d0a09097661722074656d705f6368616e67655f7468756d62093d202874656d705f68656967687420213d2074656d705f6163745f7468756d625f68656967687429207c7c202874656d705f776964746820213d2074656d705f6163745f7468756d625f7769647468293b0d0a090974656d705f6368616e67655f776f726b7370616365093d2074656d705f776f726b73706163655f64696d20213d20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d3b0d0a0d0a090969662028636f6e6669726d44696d656e73696f6e4368616e6765732874656d705f6368616e67655f7468756d622c2074656d705f6368616e67655f776f726b737061636529290d0a09097b0d0a0909096966202874656d705f6368616e67655f7468756d62290d0a0909097b0d0a090909097661722074656d705f7374796c65203d202474656d705f7468756d625f636f6e7461696e65722e6174747228277374796c6527293b0d0a090909090d0a0909090974656d705f6163745f7468756d625f686569676874203d204d6174682e6d61782832352c204d6174682e6d696e2874656d705f6865696768742c2074656d705f6163745f68656967687429293b0d0a0909090974656d705f6163745f7468756d625f7769647468093d204d6174682e6d61782832352c204d6174682e6d696e2874656d705f77696474682c2074656d705f6163745f776964746829293b0d0a090909090d0a0909090974656d705f7374796c65203d2074656d705f7374796c652e7265706c616365282f6d696e2d6865696768745b3a5c735c645c775d2a3b2f672c20276d696e2d6865696768743a2027202b2074656d705f6163745f7468756d625f686569676874202b202770783b2027293b0d0a0909090974656d705f7374796c65203d2074656d705f7374796c652e7265706c616365282f77696474685b3a5c735c645c775d2a3b2f672c202777696474683a2027202b2074656d705f6163745f7468756d625f7769647468202b202770783b2027293b0d0a090909090d0a090909092474656d705f7468756d625f636f6e7461696e65722e656d70747928293b0d0a090909092474656d705f7468756d625f636f6e7461696e65722e6174747228277374796c65272c2074656d705f7374796c65293b0d0a0909097d0d0a0909090d0a0909096966202874656d705f6368616e67655f776f726b7370616365290d0a0909097b0d0a090909097661722074656d705f7374796c65203d202474656d705f696d675f636f6e7461696e65722e6174747228277374796c6527293b0d0a090909090d0a09090909696d675f696e666f5b27776f726b7370616365275d5b277769647468275d203d204d6174682e6d696e28696d675f696e666f5b27776f726b7370616365275d5b2777696474685f6d6178275d2c2074656d705f776f726b73706163655f64696d290d0a090909090d0a0909090974656d705f7374796c65203d2074656d705f7374796c652e7265706c616365282f6d696e2d6865696768745b3a5c735c645c775d2a3b2f672c20276d696e2d6865696768743a2027202b20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d202b202770783b2027293b0d0a0909090974656d705f7374796c65203d2074656d705f7374796c652e7265706c616365282f77696474685b3a5c735c645c775d2a3b2f672c202777696474683a2027202b20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d202b202770783b2027293b0d0a090909090d0a090909092474656d705f616374696f6e5f6c6973742e656d70747928293b0d0a090909092474656d705f696d675f636f6e7461696e65722e656d70747928293b0d0a090909092474656d705f696d675f636f6e7461696e65722e6174747228277374796c65272c2074656d705f7374796c65293b0d0a090909092474656d705f7468756d625f636f6e7461696e65722e656d70747928293b0d0a0909097d0d0a09097d0d0a0909656c73650d0a09090974656d705f6368616e67655f776f726b7370616365203d2066616c73653b0d0a097d0d0a09656c73650d0a090974656d705f6368616e67655f776f726b7370616365203d2066616c73653b0d0a0d0a092474656d705f7468756d625f6865696768742e76616c2874656d705f6163745f7468756d625f686569676874293b0d0a092474656d705f7468756d625f77696474682e76616c2874656d705f6163745f7468756d625f7769647468293b0d0a092474656d705f776f726b73706163655f64696d2e76616c28696d675f696e666f5b27776f726b7370616365275d5b277769647468275d293b0d0a090d0a0972657475726e2074656d705f6368616e67655f776f726b73706163653b0d0a7d0d0a0d0a66756e6374696f6e20636c69636b6564416374696f6e28290d0a7b0d0a097661722074656d705f616374696f6e090909093d20242874686973292e617474722827696427292e746f4c6f7765724361736528292e7265706c616365282f7a6d73677261706869635f657874656469745f2f672c202727293b0d0a097661722074656d705f616a61785f72657175657374203d2066616c73653b0d0a090d0a09696620282874656d705f616374696f6e203d3d202763616e63656c2729207c7c202874656d705f616374696f6e203d3d20276f6b2729290d0a097b0d0a09092474656d705f666f726d2e66696e642827696e7075745b6e616d653d22616374696f6e225d27292e76616c2874656d705f616374696f6e293b0d0a09090d0a09096966202874656d705f616374696f6e203d3d20276f6b27290d0a0909092474656d705f666f726d2e66696e642827696e7075745b6e616d653d22696d675f696e666f225d27292e76616c2867657445646974506970654173584d4c28696d675f696e666f29293b0d0a09090d0a09092474656d705f666f726d2e7375626d697428293b0d0a097d0d0a09656c736520696620282874656d705f616374696f6e203d3d2027726f746174655f702729207c7c202874656d705f616374696f6e203d3d2027726f746174655f6d2729290d0a097b0d0a090969662028636f6e6669726d5468756d6252657365742829290d0a09097b0d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a6563742827726f74617465272c202874656d705f616374696f6e2e7265706c616365282f726f746174655f2f672c20272729203d3d20276d2729203f20202d31203a203129293b0d0a0909090d0a0909092474656d705f616374696f6e5f6c6973742e617070656e6428273c6f7074696f6e3e27202b20242874686973292e617474722827616c742729202b20273c2f6f7074696f6e3e27293b0d0a090909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027666c69705f6827290d0a097b0d0a090969662028636f6e6669726d5468756d6252657365742829290d0a09097b0d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a656374282766686f72697a6f6e74616c272c203129293b0d0a0909090d0a0909092474656d705f616374696f6e5f6c6973742e617070656e6428273c6f7074696f6e3e27202b20242874686973292e617474722827616c742729202b20273c2f6f7074696f6e3e27293b0d0a0909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027666c69705f7627290d0a097b0d0a090969662028636f6e6669726d5468756d6252657365742829290d0a09097b0d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a656374282766766572746963616c272c203129293b0d0a0909090d0a0909092474656d705f616374696f6e5f6c6973742e617070656e6428273c6f7074696f6e3e27202b20242874686973292e617474722827616c742729202b20273c2f6f7074696f6e3e27293b0d0a0909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027726573697a6527290d0a097b0d0a09092474656d705f6c6162656c5f68697265735f726573697a65203d202428273c6c6162656c207374796c653d22636f6c6f723a626c75653b223e27202b2074656d705f6163745f7769647468202b202720782027202b2074656d705f6163745f686569676874202b20273c2f6c6162656c3e27293b0d0a09092474656d705f6c6162656c5f68697265732e6e657874416c6c28273a6c61737427292e6166746572282474656d705f6c6162656c5f68697265735f726573697a65293b0d0a09090d0a09096368616e6765427574746f6e417661696c6162696c6974792866616c73652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c69747928747275652c202474656d705f627574746f6e735f726573697a65293b0d0a09096368616e67654a63726f70417661696c6162696c69747928747275652c2066616c7365293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027726573697a655f6f6b27290d0a097b0d0a090964656c6574654c6162656c7328293b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f726573697a65293b0d0a09090d0a090969662028636f6e6669726d5468756d6252657365742829290d0a09097b0d0a0909097661722074656d705f61726561203d2074656d705f63726f705f6170692e74656c6c53656c65637428293b200d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a6563742827726573697a65272c202874656d705f617265612e7832202d2074656d705f617265612e7829202b20272c27202b202874656d705f617265612e7932202d2074656d705f617265612e792929293b0d0a0909090d0a0909092474656d705f616374696f6e5f6c6973742e617070656e6428273c6f7074696f6e3e726573697a6520746f2027202b202874656d705f617265612e7832202d2074656d705f617265612e7829202b202720782027202b202874656d705f617265612e7932202d2074656d705f617265612e7929202b20273c2f6f7074696f6e3e27293b0d0a0909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a09090d0a09096368616e67654a63726f70417661696c6162696c6974792866616c7365293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027726573697a655f63616e63656c27290d0a097b0d0a090964656c6574654c6162656c7328293b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f726573697a65293b0d0a09096368616e67654a63726f70417661696c6162696c6974792866616c7365293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202763726f7027290d0a097b0d0a09092f2f206765742061637475616c207468756d622064696d656e73696f6e730d0a090974656d705f6163745f7468756d625f686569676874203d207061727365496e74282474656d705f7468756d625f6865696768742e76616c2829293b0d0a090974656d705f6163745f7468756d625f7769647468093d207061727365496e74282474656d705f7468756d625f77696474682e76616c2829293b0d0a09090d0a09092474656d705f6c6162656c5f7468756d625f63726f70203d202428273c6c6162656c207374796c653d22636f6c6f723a626c75653b223e27202b2074656d705f6163745f7468756d625f7769647468202b202720782027202b2074656d705f6163745f7468756d625f686569676874202b20273c2f6c6162656c3e27293b0d0a09092474656d705f6c6162656c5f7468756d622e6e657874416c6c28273a6c61737427292e6166746572282474656d705f6c6162656c5f7468756d625f63726f70293b0d0a09090d0a09096368616e6765427574746f6e417661696c6162696c6974792866616c73652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c69747928747275652c202474656d705f627574746f6e735f63726f70293b0d0a09096368616e67654a63726f70417661696c6162696c69747928747275652c2074727565293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202763726f705f6f6b27290d0a097b0d0a090964656c6574654c6162656c7328293b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f63726f70293b0d0a09090d0a09097661722074656d705f61726561203d2074656d705f63726f705f6170692e74656c6c53656c65637428293b200d0a0909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a656374282763726f70272c2074656d705f617265612e78202b20272c27202b2074656d705f617265612e79202b20272c27202b2074656d705f617265612e7832202b20272c27202b2074656d705f617265612e7932202b20272c27202b202474656d705f7468756d625f77696474682e76616c2829202b20272c27202b202474656d705f7468756d625f6865696768742e76616c282929293b0d0a09090d0a09096368616e67654a63726f70417661696c6162696c6974792866616c7365293b0d0a09090d0a090974656d705f616a61785f72657175657374203d20747275653b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202763726f705f63616e63656c27290d0a097b0d0a090964656c6574654c6162656c7328293b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f63726f70293b0d0a09096368616e67654a63726f70417661696c6162696c6974792866616c7365293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202764696d656e73696f6e27290d0a097b0d0a09092f2f206765742061637475616c207468756d622064696d656e73696f6e730d0a090974656d705f6163745f7468756d625f686569676874203d207061727365496e74282474656d705f7468756d625f6865696768742e76616c2829293b0d0a090974656d705f6163745f7468756d625f7769647468093d207061727365496e74282474656d705f7468756d625f77696474682e76616c2829293b0d0a09092f2f206765742061637475616c20776f726b73706163652064696d656e73696f6e0d0a0909696d675f696e666f5b27776f726b7370616365275d5b277769647468275d093d207061727365496e74282474656d705f776f726b73706163655f64696d2e76616c2829293b0d0a09090d0a09096368616e6765427574746f6e417661696c6162696c6974792866616c73652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c69747928747275652c202474656d705f627574746f6e735f64696d293b0d0a09096368616e6765427574746f6e5669736962696c69747928747275652c202474656d705f696e707574735f64696d293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202764696d656e73696f6e5f6f6b27290d0a097b0d0a09097661722074656d705f776f726b73706163655f6368616e676564203d206368616e676544696d656e73696f6e7328293b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f64696d293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f696e707574735f64696d293b0d0a09090d0a09096966202874656d705f776f726b73706163655f6368616e676564290d0a09097b0d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a6563742827776f726b7370616365272c20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d29293b0d0a0909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202764696d656e73696f6e5f63616e63656c27290d0a097b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f64696d293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f696e707574735f64696d293b0d0a09096368616e676544696d656e73696f6e732874727565293b0d0a097d0d0a090d0a096966202874656d705f616a61785f72657175657374290d0a097b0d0a09096a51756572792e706f7374287a6d73677261706869635f657874656469745f726571756573745f75726c2c207b616374696f6e203a202772657175657374272c20696d675f696e666f203a2067657445646974506970654173584d4c28696d675f696e666f297d2c2072656365697665446174612c20276a736f6e27293b0d0a097d0d0a7d0d0a0d0a66756e6374696f6e20636f6e6669726d44696d656e73696f6e4368616e676573287468756d625f64696d5f6368616e6765642c20776f726b73706163655f64696d5f6368616e676564290d0a7b0d0a097661722074656d705f7465787409093d2027417474656e74696f6e21273b0d0a097661722074656d705f726573756c74093d20747275653b0d0a090d0a09696620287468756d625f64696d5f6368616e67656420262620776f726b73706163655f64696d5f6368616e676564290d0a090974656d705f74657874202b3d2027205468756d622d44696d656e73696f6e7320616e6420576f726b73706163652d44696d656e73696f6e2077657265206368616e6765642e2050726576696f7573206368616e67657320616e64205468756d622d496d6167652077696c6c206265206c6f73742e273b0d0a09656c736520696620287468756d625f64696d5f6368616e676564290d0a090974656d705f74657874202b3d2027205468756d622d44696d656e73696f6e732077657265206368616e6765642e20205468756d622d696d6167652077696c6c206265206c6f7374273b0d0a09656c73652069662028776f726b73706163655f64696d5f6368616e676564290d0a090974656d705f74657874202b3d202720576f726b73706163652d44696d656e73696f6e20776173206368616e6765642e2050726576696f7573206368616e67657320616e64205468756d622d496d6167652077696c6c206265206c6f73742e273b0d0a0974656d705f74657874202b3d20275c6e446f20796f752077616e7420746f20636f6e74696e75653f273b0d0a090d0a09696620287468756d625f64696d5f6368616e676564207c7c20776f726b73706163655f64696d5f6368616e676564290d0a090974656d705f726573756c74203d20636f6e6669726d2874656d705f74657874293b0d0a09090d0a0972657475726e2074656d705f726573756c743b0d0a7d0d0a0d0a66756e6374696f6e20636f6e6669726d5468756d62526573657428290d0a7b0d0a097661722074656d705f726573756c74203d20747275653b0d0a090d0a09696620282474656d705f7468756d625f636f6e7461696e65722e66696e642827696d6727292e6c656e677468203e2030290d0a097b0d0a090974656d705f726573756c74203d20636f6e6669726d2827417474656e74696f6e21205468756d622d696d6167652077696c6c206265206c6f73742e5c6e446f20796f752077616e7420746f20636f6e74696e75653f27293b0d0a090d0a09096966202874656d705f726573756c74290d0a0909092474656d705f7468756d625f636f6e7461696e65722e656d70747928293b0d0a097d0d0a090d0a0972657475726e2074656d705f726573756c743b0d0a7d0d0a0d0a66756e6374696f6e2063726561746551756575654f626a65637428616374696f6e2c2076616c7565290d0a7b0d0a097661722074656d705f6f626a203d206e6577204f626a65637428293b0d0a090d0a0974656d705f6f626a5b27616374696f6e275d09093d20616374696f6e3b0d0a0974656d705f6f626a5b2776616c7565275d0909093d2076616c75653b0d0a0974656d705f6f626a5b2766696c656e616d65275d093d206e756c6c3b0d0a0974656d705f6f626a5b2775726c275d090909093d206e756c6c3b0d0a0974656d705f6f626a5b277769647468275d0909093d206e756c6c3b0d0a0974656d705f6f626a5b27686569676874275d09093d206e756c6c3b0d0a090d0a0972657475726e2074656d705f6f626a3b0d0a7d0d0a0d0a66756e6374696f6e2064656c6574654c6162656c7328290d0a7b0d0a09696620282474656d705f6c6162656c5f68697265735f726573697a6520213d206e756c6c290d0a097b0d0a09092474656d705f6c6162656c5f68697265735f726573697a652e72656d6f766528293b0d0a09092474656d705f6c6162656c5f68697265735f726573697a65203d206e756c6c3b0d0a097d0d0a09696620282474656d705f6c6162656c5f7468756d625f63726f7020213d206e756c6c290d0a097b0d0a09092474656d705f6c6162656c5f7468756d625f63726f702e72656d6f766528293b0d0a09092474656d705f6c6162656c5f7468756d625f63726f70203d206e756c6c3b0d0a097d0d0a7d0d0a0d0a66756e6374696f6e2067657441637444696d46726f6d517565756528696d675f696e666f290d0a7b0d0a097661722074656d705f706f73203d20696d675f696e666f5b277175657565275d2e6c656e677468202d20313b0d0a090d0a0974656d705f6163745f686569676874093d20696d675f696e666f5b277175657565275d5b74656d705f706f735d5b27686569676874275d3b0d0a0974656d705f6163745f7769647468093d20696d675f696e666f5b277175657565275d5b74656d705f706f735d5b277769647468275d3b0d0a7d0d0a0d0a66756e6374696f6e2067657445646974506970654173584d4c28696d675f696e666f290d0a7b0d0a097661722074656d705f786d6c203d2027273b0d0a090d0a0974656d705f786d6c202b3d20273c64696374696f6e6172793e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d2271756575652220747970653d226c697374223e3c6c6973743e5c6e273b0d0a090d0a09666f7220287661722069203d20303b2069203c20696d675f696e666f5b277175657565275d2e6c656e6774683b20692b2b290d0a097b0d0a090974656d705f786d6c202b3d20273c6974656d20747970653d2264696374696f6e617279223e3c64696374696f6e6172793e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d22616374696f6e223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b27616374696f6e275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d2276616c7565223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b2776616c7565275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d2266696c656e616d65223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b2766696c656e616d65275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d2275726c223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b2775726c275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d227769647468223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b277769647468275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d22686569676874223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b27686569676874275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c2f64696374696f6e6172793e3c2f6974656d3e5c6e273b0d0a097d0d0a090d0a0974656d705f786d6c202b3d20273c2f6c6973743e3c2f6974656d3e5c6e273b0d0a090d0a0974656d705f786d6c202b3d20273c6974656d206b65793d227468756d622220747970653d2264696374696f6e617279223e3c64696374696f6e6172793e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d2266696c656e616d65223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277468756d62275d5b2766696c656e616d65275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d2275726c223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277468756d62275d5b2775726c275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d2263726f705f626f78223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277468756d62275d5b2763726f705f626f78275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d227769647468223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277468756d62275d5b277769647468275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d22686569676874223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277468756d62275d5b27686569676874275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c2f64696374696f6e6172793e3c2f6974656d3e5c6e273b0d0a090d0a0974656d705f786d6c202b3d20273c6974656d206b65793d22776f726b73706163652220747970653d2264696374696f6e617279223e3c64696374696f6e6172793e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d227769647468223e3c215b434441544127202b20275b27202b20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d2277696474685f6d6178223e3c215b434441544127202b20275b27202b20696d675f696e666f5b27776f726b7370616365275d5b2777696474685f6d6178275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c2f64696374696f6e6172793e3c2f6974656d3e5c6e270d0a090d0a0974656d705f786d6c202b3d20273c2f64696374696f6e6172793e5c6e273b0d0a090d0a0972657475726e2074656d705f786d6c3b0d0a7d0d0a0d0a66756e6374696f6e20726563656976654461746128646174612c2074657874537461747573290d0a7b0d0a09696620282874657874537461747573203d3d20277375636365737327292026262028646174615b27726573756c74275d203e203029290d0a097b0d0a0909696d675f696e666f203d20646174615b27696d675f696e666f275d3b0d0a09090d0a09097661722074656d705f71756575655f706f73203d20696d675f696e666f5b277175657565275d2e6c656e677468202d20313b0d0a09090d0a0909696620282474656d705f696d675f636f6e7461696e65722e66696e642827696d6727292e6c656e677468203e2030290d0a09097b0d0a090909696620282474656d705f696d675f636f6e7461696e65722e66696e642827696d6727292e617474722827737263272920213d20696d675f696e666f5b277175657565275d5b74656d705f71756575655f706f735d5b2775726c275d290d0a090909092474656d705f696d675f636f6e7461696e65722e66696e642827696d6727292e617474722827737263272c20696d675f696e666f5b277175657565275d5b74656d705f71756575655f706f735d5b2775726c275d293b0d0a09097d0d0a0909656c73650d0a0909092474656d705f696d675f636f6e7461696e65722e617070656e6428273c696d67207372633d2227202b20696d675f696e666f5b277175657565275d5b74656d705f71756575655f706f735d5b2775726c275d202b202722202f3e27293b0d0a09090d0a090969662028696d675f696e666f5b277468756d62275d5b2775726c275d20213d20276e756c6c27290d0a09097b0d0a090909696620282474656d705f7468756d625f636f6e7461696e65722e66696e642827696d6727292e6c656e677468203e2030290d0a090909092474656d705f7468756d625f636f6e7461696e65722e66696e642827696d6727292e617474722827737263272c20696d675f696e666f5b277468756d62275d5b2775726c275d293b0d0a090909656c73650d0a090909092474656d705f7468756d625f636f6e7461696e65722e617070656e6428273c696d67207372633d2227202b20696d675f696e666f5b277468756d62275d5b2775726c275d202b202722202f3e27293b0d0a09097d0d0a0909090d0a090967657441637444696d46726f6d517565756528696d675f696e666f290d0a090972656e646572496d67496e666f28696d675f696e666f290d0a097d0d0a7d0d0a0d0a66756e6374696f6e2072656e646572496d67496e666f28696d675f696e666f290d0a7b0d0a092474656d705f6c6162656c5f68697265732e746578742874656d705f6163745f7769647468202b202720782027202b2074656d705f6163745f686569676874293b0d0a0969662028696d675f696e666f5b277468756d62275d5b2775726c275d203d3d20276e756c6c27290d0a09092474656d705f6c6162656c5f7468756d622e7465787428274e6f6e6527293b0d0a09656c73650d0a09092474656d705f6c6162656c5f7468756d622e746578742874656d705f6163745f7468756d625f7769647468202b202720782027202b2074656d705f6163745f7468756d625f686569676874293b0d0a7d0d0a0d0a242827646f63756d656e7427292e72656164792866756e6374696f6e28290d0a7b0d0a092474656d705f666f726d0909090909093d20242827235a4d53477261706869635f657874456469745f666f726d27293b0d0a092474656d705f706970650909090909093d202474656d705f666f726d2e66696e642827696e7075745b6e616d653d2270697065225d27293b0d0a092474656d705f616374696f6e5f6c6973740909093d20242827235a4d53477261706869635f657874456469745f616374696f6e4c69737427293b0d0a092474656d705f696d675f636f6e7461696e657220093d20242827235a4d53477261706869635f657874456469745f696d61676527293b0d0a092474656d705f6c6162656c5f68697265730909093d20242827235a4d53477261706869635f657874456469745f696e666f5f686972657327293b0d0a092474656d705f6c6162656c5f7468756d620909093d20242827235a4d53477261706869635f657874456469745f696e666f5f7468756d6227293b0d0a092474656d705f7468756d625f636f6e7461696e6572093d20242827235a4d53477261706869635f657874456469745f7468756d625f696d6727293b0d0a092474656d705f7468756d625f68656967687409093d20242827235a4d53477261706869635f657874456469745f7468756d625f68656967687427293b0d0a092474656d705f7468756d625f77696474680909093d20242827235a4d53477261706869635f657874456469745f7468756d625f776964746827293b0d0a092474656d705f776f726b73706163655f64696d09093d20242827235a4d53477261706869635f657874456469745f776f726b737061636527293b0d0a090d0a092474656d705f627574746f6e735f63726f7009093d20242827235a4d53477261706869635f657874456469745f63726f705f63616e63656c2c20235a4d53477261706869635f657874456469745f63726f705f6f6b27293b0d0a092474656d705f627574746f6e735f64696d0909093d20242827235a4d53477261706869635f657874456469745f64696d656e73696f6e5f63616e63656c2c20235a4d53477261706869635f657874456469745f64696d656e73696f6e5f6f6b27293b0d0a092474656d705f627574746f6e735f6d61696e09093d20242827235a4d53477261706869635f657874456469745f63726f702c20235a4d53477261706869635f657874456469745f64696d656e73696f6e2c20235a4d53477261706869635f657874456469745f666c69705f682c20235a4d53477261706869635f657874456469745f666c69705f762c2027202b0d0a090909090909090909090909090927235a4d53477261706869635f657874456469745f726573697a652c20235a4d53477261706869635f657874456469745f726f746174655f6d2c20235a4d53477261706869635f657874456469745f726f746174655f702c2027202b0d0a090909090909090909090909090927235a4d53477261706869635f657874456469745f63616e63656c2c20235a4d53477261706869635f657874456469745f6f6b27293b0d0a092474656d705f627574746f6e735f726573697a65093d20242827235a4d53477261706869635f657874456469745f726573697a655f63616e63656c2c20235a4d53477261706869635f657874456469745f726573697a655f6f6b27293b0d0a092474656d705f696e707574735f64696d0909093d20242827235a4d53477261706869635f657874456469745f7468756d625f64696d27293b0d0a090d0a096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e293b0d0a096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f63726f70293b0d0a096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f64696d293b0d0a096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f726573697a65293b0d0a096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f696e707574735f64696d293b0d0a090d0a0967657441637444696d46726f6d517565756528696d675f696e666f293b0d0a7d293b</data></item> 
     20<data content_type="application/x-javascript" filename="handleEdit.js" type="file">7661722074656d705f6163745f6865696768740909090909093d20303b0d0a7661722074656d705f6163745f77696474680909090909093d20303b0d0a7661722074656d705f6163745f7468756d625f6865696768740909093d20303b0d0a7661722074656d705f6163745f7468756d625f77696474680909093d20303b0d0a7661722074656d705f63726f705f617069090909090909093d206e756c6c3b0d0a7661722074656d705f63726f705f68697265730909090909093d206e756c6c3b0d0a766172202474656d705f627574746f6e735f63726f70090909093d206e756c6c3b0d0a766172202474656d705f627574746f6e735f64696d09090909093d206e756c6c3b0d0a766172202474656d705f627574746f6e735f6d61696e090909093d206e756c6c3b0d0a766172202474656d705f627574746f6e735f726573697a650909093d206e756c6c3b0d0a766172202474656d705f616374696f6e5f6c69737409090909093d206e756c6c3b0d0a766172202474656d705f666f726d2009090909090909093d206e756c6c3b0d0a766172202474656d705f696d675f636f6e7461696e6572090909093d206e756c6c3b0d0a766172202474656d705f696e707574735f64696d09090909093d206e756c6c3b0d0a766172202474656d705f6c6162656c5f686972657309090909093d206e756c6c3b0d0a766172202474656d705f6c6162656c5f68697265735f726573697a65093d206e756c6c3b0d0a766172202474656d705f6c6162656c5f7468756d6209090909093d206e756c6c3b0d0a766172202474656d705f6c6162656c5f7468756d625f63726f7009093d206e756c6c3b0d0a766172202474656d705f7069706509090909090909093d206e756c6c3b0d0a766172202474656d705f7468756d625f636f6e7461696e65720909093d206e756c6c3b0d0a766172202474656d705f7468756d625f776964746809090909093d206e756c6c3b0d0a766172202474656d705f7468756d625f686569676874090909093d206e756c6c3b0d0a766172202474656d705f776f726b73706163655f64696d090909093d206e756c6c3b0d0a0d0a66756e6374696f6e206368616e6765427574746f6e417661696c6162696c69747928617661696c61626c652c2024627574746f6e732c206368616e67655f7374796c65290d0a7b0d0a0969662028617661696c61626c65290d0a090924627574746f6e732e636c69636b28636c69636b6564416374696f6e293b0d0a09656c73650d0a090924627574746f6e732e756e62696e642827636c69636b272c20636c69636b6564416374696f6e293b0d0a090d0a09696620286368616e67655f7374796c65290d0a097b0d0a090924627574746f6e732e656163682866756e6374696f6e28696e6465782c20627574746f6e290d0a09097b0d0a09092020766172202474656d705f627574746f6e203d202428627574746f6e293b0d0a090920200d0a090920206966202821617661696c61626c65290d0a09092020092474656d705f627574746f6e2e72656d6f76654174747228277374796c6527293b0d0a09092020090d0a09092020696620282474656d705f627574746f6e2e69732827696d672729290d0a09092020092474656d705f627574746f6e2e617474722827737263272c202474656d705f627574746f6e2e61747472282773726327292e7265706c6163652828617661696c61626c65203f202f5f64697361626c65642f67203a202f2e706e672f67292c2028617661696c61626c65203f202727203a20275f64697361626c65642e706e67272929293b0d0a09092020656c73650d0a090920207b0d0a090920200969662028617661696c61626c65290d0a09092020097b0d0a0909202009092474656d705f627574746f6e2e72656d6f766541747472282764697361626c656427293b0d0a0909202009092474656d705f627574746f6e2e72656d6f76654174747228277374796c6527293b0d0a09092020097d0d0a0909202009656c73650d0a09092020097b0d0a0909092020092474656d705f627574746f6e2e61747472282764697361626c6564272c202764697361626c656427293b0d0a0909092020092474656d705f627574746f6e2e6373732827636f6c6f72272c20272363636327293b0d0a09092020097d0d0a090920207d0d0a09092020090d0a0909202069662028617661696c61626c65290d0a09092020092474656d705f627574746f6e2e6373732827637572736f72272c2027706f696e74657227293b0d0a09097d293b0d0a097d0d0a7d0d0a0d0a66756e6374696f6e206368616e6765427574746f6e5669736962696c6974792876697369626c652c2024627574746f6e73290d0a7b0d0a096368616e6765427574746f6e417661696c6162696c6974792876697369626c652c2024627574746f6e732c2066616c7365293b0d0a090d0a096966202876697369626c65290d0a090924627574746f6e732e73686f7728293b0d0a09656c73650d0a090924627574746f6e732e6869646528293b0d0a7d0d0a0d0a66756e6374696f6e206368616e67654a63726f70417661696c6162696c69747928617661696c61626c652c2063726f7070696e672c2063726f705f6869726573290d0a7b0d0a096966202874656d705f63726f705f61706920213d206e756c6c290d0a090974656d705f63726f705f6170692e64657374726f7928293b0d0a0909090d0a0969662028617661696c61626c65290d0a097b0d0a09097661722074656d705f686569676874093d202863726f7070696e67202626202163726f705f686972657329203f207061727365496e74282474656d705f7468756d625f6865696768742e76616c282929203a2074656d705f6163745f6865696768743b0d0a09097661722074656d705f7769647468093d202863726f7070696e67202626202163726f705f686972657329203f207061727365496e74282474656d705f7468756d625f77696474682e76616c282929203a2074656d705f6163745f77696474683b0d0a09090d0a090974656d705f63726f705f617069203d20242e4a63726f70282474656d705f696d675f636f6e7461696e65722e66696e642827696d6727292e65712830292c200d0a0909097b200d0a09090909616c6c6f7753656c656374093a2066616c73652c0d0a09090909617370656374526174696f093a2074656d705f77696474682f74656d705f6865696768742c0d0a090909096d696e53697a650909093a205b32352c2032355d2c0d0a090909096d617853697a650909093a205b696d675f696e666f5b27776f726b7370616365275d5b277769647468275d2c20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d5d2c0d0a0909090968616e646c65730909093a20747275652c0d0a090909096f6e4368616e676509093a206368616e67656453656c656374696f6e0d0a0909097d293b0d0a090974656d705f63726f705f6170692e73657453656c656374285b302c20302c2074656d705f77696474682c2074656d705f6865696768745d293b0d0a090974656d705f63726f705f6170692e7365744f7074696f6e73287b20616c6c6f77526573697a653a20747275652c20616c6c6f774d6f76653a2063726f7070696e677d293b0d0a090974656d705f63726f705f6170692e666f63757328293b0d0a097d0d0a7d0d0a0d0a66756e6374696f6e206368616e67656453656c656374696f6e2864696d656e73696f6e73290d0a7b0d0a09696620282474656d705f6c6162656c5f68697265735f726573697a6520213d206e756c6c290d0a09092474656d705f6c6162656c5f68697265735f726573697a652e746578742864696d656e73696f6e732e77202b202720782027202b2064696d656e73696f6e732e68293b0d0a09656c736520696620282474656d705f6c6162656c5f7468756d625f63726f7020213d206e756c6c290d0a09092474656d705f6c6162656c5f7468756d625f63726f702e746578742864696d656e73696f6e732e77202b202720782027202b2064696d656e73696f6e732e68293b0d0a7d0d0a0d0a66756e6374696f6e206368616e676544696d656e73696f6e732872657365745f64696d73290d0a7b0d0a097661722074656d705f6368616e67655f776f726b73706163653b0d0a090d0a09696620282172657365745f64696d73290d0a097b0d0a09097661722074656d705f68656967687420090909093d097061727365496e74282474656d705f7468756d625f6865696768742e76616c2829293b0d0a09097661722074656d705f776964746809090909093d207061727365496e74282474656d705f7468756d625f77696474682e76616c2829293b0d0a09097661722074656d705f776f726b73706163655f64696d093d207061727365496e74282474656d705f776f726b73706163655f64696d2e76616c2829293b0d0a09090d0a090974656d705f68656967687420090909093d202874656d705f686569676874203d3d204e614e29203f2074656d705f6163745f7468756d625f686569676874203a2074656d705f6865696768743b0d0a090974656d705f776964746809090909093d202874656d705f7769647468203d3d204e614e29203f2074656d705f6163745f7468756d625f7769647468203a2074656d705f77696474683b0d0a090974656d705f776f726b73706163655f64696d093d202874656d705f776f726b73706163655f64696d203d3d204e614e29203f20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d203a2074656d705f776f726b73706163655f64696d3b0d0a09090d0a09097661722074656d705f6368616e67655f7468756d62093d202874656d705f68656967687420213d2074656d705f6163745f7468756d625f68656967687429207c7c202874656d705f776964746820213d2074656d705f6163745f7468756d625f7769647468293b0d0a090974656d705f6368616e67655f776f726b7370616365093d2074656d705f776f726b73706163655f64696d20213d20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d3b0d0a0d0a090969662028636f6e6669726d44696d656e73696f6e4368616e6765732874656d705f6368616e67655f7468756d622c2074656d705f6368616e67655f776f726b737061636529290d0a09097b0d0a0909096966202874656d705f6368616e67655f7468756d62290d0a0909097b0d0a090909097661722074656d705f7374796c65203d202474656d705f7468756d625f636f6e7461696e65722e6174747228277374796c6527293b0d0a090909090d0a0909090974656d705f6163745f7468756d625f686569676874203d204d6174682e6d61782832352c204d6174682e6d696e2874656d705f6865696768742c2074656d705f6163745f68656967687429293b0d0a0909090974656d705f6163745f7468756d625f7769647468093d204d6174682e6d61782832352c204d6174682e6d696e2874656d705f77696474682c2074656d705f6163745f776964746829293b0d0a090909090d0a0909090974656d705f7374796c65203d2074656d705f7374796c652e7265706c616365282f6d696e2d6865696768745b3a5c735c645c775d2a3b2f672c20276d696e2d6865696768743a2027202b2074656d705f6163745f7468756d625f686569676874202b202770783b2027293b0d0a0909090974656d705f7374796c65203d2074656d705f7374796c652e7265706c616365282f77696474685b3a5c735c645c775d2a3b2f672c202777696474683a2027202b2074656d705f6163745f7468756d625f7769647468202b202770783b2027293b0d0a090909090d0a090909092474656d705f7468756d625f636f6e7461696e65722e656d70747928293b0d0a090909092474656d705f7468756d625f636f6e7461696e65722e6174747228277374796c65272c2074656d705f7374796c65293b0d0a0909097d0d0a0909090d0a0909096966202874656d705f6368616e67655f776f726b7370616365290d0a0909097b0d0a090909097661722074656d705f7374796c65203d202474656d705f696d675f636f6e7461696e65722e6174747228277374796c6527293b0d0a090909090d0a09090909696d675f696e666f5b27776f726b7370616365275d5b277769647468275d203d204d6174682e6d696e28696d675f696e666f5b27776f726b7370616365275d5b2777696474685f6d6178275d2c2074656d705f776f726b73706163655f64696d290d0a090909090d0a0909090974656d705f7374796c65203d2074656d705f7374796c652e7265706c616365282f6d696e2d6865696768745b3a5c735c645c775d2a3b2f672c20276d696e2d6865696768743a2027202b20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d202b202770783b2027293b0d0a0909090974656d705f7374796c65203d2074656d705f7374796c652e7265706c616365282f77696474685b3a5c735c645c775d2a3b2f672c202777696474683a2027202b20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d202b202770783b2027293b0d0a090909090d0a090909092474656d705f616374696f6e5f6c6973742e656d70747928293b0d0a090909092474656d705f696d675f636f6e7461696e65722e656d70747928293b0d0a090909092474656d705f696d675f636f6e7461696e65722e6174747228277374796c65272c2074656d705f7374796c65293b0d0a090909092474656d705f7468756d625f636f6e7461696e65722e656d70747928293b0d0a0909097d0d0a09097d0d0a0909656c73650d0a09090974656d705f6368616e67655f776f726b7370616365203d2066616c73653b0d0a097d0d0a09656c73650d0a090974656d705f6368616e67655f776f726b7370616365203d2066616c73653b0d0a0d0a092474656d705f7468756d625f6865696768742e76616c2874656d705f6163745f7468756d625f686569676874293b0d0a092474656d705f7468756d625f77696474682e76616c2874656d705f6163745f7468756d625f7769647468293b0d0a092474656d705f776f726b73706163655f64696d2e76616c28696d675f696e666f5b27776f726b7370616365275d5b277769647468275d293b0d0a090d0a0972657475726e2074656d705f6368616e67655f776f726b73706163653b0d0a7d0d0a0d0a66756e6374696f6e20636c69636b6564416374696f6e28290d0a7b0d0a097661722074656d705f616374696f6e090909093d20242874686973292e617474722827696427292e746f4c6f7765724361736528292e7265706c616365282f7a6d73677261706869635f657874656469745f2f672c202727293b0d0a097661722074656d705f616a61785f72657175657374203d2066616c73653b0d0a090d0a09696620282874656d705f616374696f6e203d3d202763616e63656c2729207c7c202874656d705f616374696f6e203d3d20276f6b2729290d0a097b0d0a09092474656d705f666f726d2e66696e642827696e7075745b6e616d653d22616374696f6e225d27292e76616c2874656d705f616374696f6e293b0d0a09090d0a09096966202874656d705f616374696f6e203d3d20276f6b27290d0a0909092474656d705f666f726d2e66696e642827696e7075745b6e616d653d22696d675f696e666f225d27292e76616c2867657445646974506970654173584d4c28696d675f696e666f29293b0d0a09090d0a09092474656d705f666f726d2e7375626d697428293b0d0a097d0d0a09656c736520696620282874656d705f616374696f6e203d3d2027726f746174655f702729207c7c202874656d705f616374696f6e203d3d2027726f746174655f6d2729290d0a097b0d0a090969662028636f6e6669726d5468756d6252657365742829290d0a09097b0d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a6563742827726f74617465272c202874656d705f616374696f6e2e7265706c616365282f726f746174655f2f672c20272729203d3d20276d2729203f20202d31203a203129293b0d0a0909090d0a0909092474656d705f616374696f6e5f6c6973742e617070656e6428273c6f7074696f6e3e27202b20242874686973292e617474722827616c742729202b20273c2f6f7074696f6e3e27293b0d0a090909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027666c69705f6827290d0a097b0d0a090969662028636f6e6669726d5468756d6252657365742829290d0a09097b0d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a656374282766686f72697a6f6e74616c272c203129293b0d0a0909090d0a0909092474656d705f616374696f6e5f6c6973742e617070656e6428273c6f7074696f6e3e27202b20242874686973292e617474722827616c742729202b20273c2f6f7074696f6e3e27293b0d0a0909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027666c69705f7627290d0a097b0d0a090969662028636f6e6669726d5468756d6252657365742829290d0a09097b0d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a656374282766766572746963616c272c203129293b0d0a0909090d0a0909092474656d705f616374696f6e5f6c6973742e617070656e6428273c6f7074696f6e3e27202b20242874686973292e617474722827616c742729202b20273c2f6f7074696f6e3e27293b0d0a0909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027726573697a6527290d0a097b0d0a09092474656d705f6c6162656c5f68697265735f726573697a65203d202428273c6c6162656c207374796c653d22636f6c6f723a626c75653b223e27202b2074656d705f6163745f7769647468202b202720782027202b2074656d705f6163745f686569676874202b20273c2f6c6162656c3e27293b0d0a09092474656d705f6c6162656c5f68697265732e6e657874416c6c28273a6c61737427292e6166746572282474656d705f6c6162656c5f68697265735f726573697a65293b0d0a09090d0a09096368616e6765427574746f6e417661696c6162696c6974792866616c73652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c69747928747275652c202474656d705f627574746f6e735f726573697a65293b0d0a09096368616e67654a63726f70417661696c6162696c69747928747275652c2066616c73652c2066616c7365293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027726573697a655f6f6b27290d0a097b0d0a090964656c6574654c6162656c7328293b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f726573697a65293b0d0a09090d0a090969662028636f6e6669726d5468756d6252657365742829290d0a09097b0d0a0909097661722074656d705f61726561203d2074656d705f63726f705f6170692e74656c6c53656c65637428293b200d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a6563742827726573697a65272c202874656d705f617265612e7832202d2074656d705f617265612e7829202b20272c27202b202874656d705f617265612e7932202d2074656d705f617265612e792929293b0d0a0909090d0a0909092474656d705f616374696f6e5f6c6973742e617070656e6428273c6f7074696f6e3e726573697a6520746f2027202b202874656d705f617265612e7832202d2074656d705f617265612e7829202b202720782027202b202874656d705f617265612e7932202d2074656d705f617265612e7929202b20273c2f6f7074696f6e3e27293b0d0a0909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a09090d0a09096368616e67654a63726f70417661696c6162696c6974792866616c73652c2066616c73652c2066616c7365293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027726573697a655f63616e63656c27290d0a097b0d0a090964656c6574654c6162656c7328293b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f726573697a65293b0d0a09096368616e67654a63726f70417661696c6162696c6974792866616c73652c2066616c73652c2066616c7365293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202763726f7027290d0a097b0d0a090974656d705f63726f705f6869726573203d2066616c73653b0d0a09090d0a09092f2f206765742061637475616c207468756d622064696d656e73696f6e730d0a090974656d705f6163745f7468756d625f686569676874203d207061727365496e74282474656d705f7468756d625f6865696768742e76616c2829293b0d0a090974656d705f6163745f7468756d625f7769647468093d207061727365496e74282474656d705f7468756d625f77696474682e76616c2829293b0d0a09090d0a09092474656d705f6c6162656c5f7468756d625f63726f70203d202428273c6c6162656c207374796c653d22636f6c6f723a626c75653b223e27202b2074656d705f6163745f7468756d625f7769647468202b202720782027202b2074656d705f6163745f7468756d625f686569676874202b20273c2f6c6162656c3e27293b0d0a09092474656d705f6c6162656c5f7468756d622e6e657874416c6c28273a6c61737427292e6166746572282474656d705f6c6162656c5f7468756d625f63726f70293b0d0a09090d0a09096368616e6765427574746f6e417661696c6162696c6974792866616c73652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c69747928747275652c202474656d705f627574746f6e735f63726f70293b0d0a09096368616e67654a63726f70417661696c6162696c69747928747275652c20747275652c2066616c7365293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202763726f705f686972657327290d0a097b0d0a09096966202874656d705f63726f705f6869726573290d0a09097b0d0a0909096368616e6765427574746f6e417661696c6162696c6974792866616c73652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a0909096368616e6765427574746f6e5669736962696c69747928747275652c202474656d705f627574746f6e735f63726f70293b0d0a0909096368616e67654a63726f70417661696c6162696c69747928747275652c20747275652c2074727565293b0d0a09097d0d0a0909656c73650d0a09097b0d0a09090969662028636f6e6669726d486972657352657365742829290d0a0909097b0d0a0909090974656d705f63726f705f686972657309093d20747275653b0d0a0909090974656d705f616a61785f72657175657374203d20747275653b0d0a090909090d0a09090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a65637428277265736574272c203129293b0d0a0909097d0d0a09097d0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202763726f705f6f6b27290d0a097b0d0a090964656c6574654c6162656c7328293b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f63726f70293b0d0a09090d0a09097661722074656d705f61726561203d2074656d705f63726f705f6170692e74656c6c53656c65637428293b200d0a0909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a656374282874656d705f63726f705f6869726573203f202763726f705f686972657327203a202763726f7027292c200d0a090909090909090909090909090974656d705f617265612e78202b20272c27202b2074656d705f617265612e79202b20272c27202b2074656d705f617265612e7832202b20272c27202b2074656d705f617265612e7932202b20272c27202b200d0a09090909090909090909090909092874656d705f63726f705f6869726573203f2074656d705f6163745f7769647468202b20272c27202b2074656d705f6163745f686569676874203a202474656d705f7468756d625f77696474682e76616c2829202b20272c27202b202474656d705f7468756d625f6865696768742e76616c28292929293b0d0a09090d0a09096368616e67654a63726f70417661696c6162696c6974792866616c73652c2066616c73652c2066616c7365293b0d0a09090d0a090974656d705f616a61785f72657175657374203d20747275653b0d0a090974656d705f63726f705f686972657309093d2066616c73653b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202763726f705f63616e63656c27290d0a097b0d0a090964656c6574654c6162656c7328293b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f63726f70293b0d0a09096368616e67654a63726f70417661696c6162696c6974792866616c73652c2066616c73652c2066616c7365293b0d0a09090d0a090974656d705f63726f705f6869726573203d2066616c73653b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202764696d656e73696f6e27290d0a097b0d0a09092f2f206765742061637475616c207468756d622064696d656e73696f6e730d0a090974656d705f6163745f7468756d625f686569676874203d207061727365496e74282474656d705f7468756d625f6865696768742e76616c2829293b0d0a090974656d705f6163745f7468756d625f7769647468093d207061727365496e74282474656d705f7468756d625f77696474682e76616c2829293b0d0a09092f2f206765742061637475616c20776f726b73706163652064696d656e73696f6e0d0a0909696d675f696e666f5b27776f726b7370616365275d5b277769647468275d093d207061727365496e74282474656d705f776f726b73706163655f64696d2e76616c2829293b0d0a09090d0a09096368616e6765427574746f6e417661696c6162696c6974792866616c73652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c69747928747275652c202474656d705f627574746f6e735f64696d293b0d0a09096368616e6765427574746f6e5669736962696c69747928747275652c202474656d705f696e707574735f64696d293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202764696d656e73696f6e5f6f6b27290d0a097b0d0a09097661722074656d705f776f726b73706163655f6368616e676564203d206368616e676544696d656e73696f6e7328293b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f64696d293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f696e707574735f64696d293b0d0a09090d0a09096966202874656d705f776f726b73706163655f6368616e676564290d0a09097b0d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a6563742827776f726b7370616365272c20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d29293b0d0a0909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202764696d656e73696f6e5f63616e63656c27290d0a097b0d0a09096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e2c2074727565293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f64696d293b0d0a09096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f696e707574735f64696d293b0d0a09096368616e676544696d656e73696f6e732874727565293b0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d2027726573657427290d0a097b0d0a090969662028636f6e6669726d486972657352657365742829290d0a09097b0d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a65637428277265736574272c203129293b0d0a0909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a097d0d0a09656c7365206966202874656d705f616374696f6e203d3d202764726f705f736861646f7727290d0a097b0d0a090969662028636f6e6669726d5468756d6252657365742829290d0a09097b0d0a090909696d675f696e666f5b277175657565275d2e707573682863726561746551756575654f626a656374282764726f705f736861646f77272c203129293b0d0a0909090d0a09090974656d705f616a61785f72657175657374203d20747275653b0d0a09097d0d0a097d0d0a090d0a096966202874656d705f616a61785f72657175657374290d0a097b0d0a09096a51756572792e706f7374287a6d73677261706869635f657874656469745f726571756573745f75726c2c207b616374696f6e203a202772657175657374272c20696d675f696e666f203a2067657445646974506970654173584d4c28696d675f696e666f297d2c2072656365697665446174612c20276a736f6e27293b0d0a097d0d0a7d0d0a0d0a66756e6374696f6e20636f6e6669726d44696d656e73696f6e4368616e676573287468756d625f64696d5f6368616e6765642c20776f726b73706163655f64696d5f6368616e676564290d0a7b0d0a097661722074656d705f7465787409093d2027417474656e74696f6e21273b0d0a097661722074656d705f726573756c74093d20747275653b0d0a090d0a09696620287468756d625f64696d5f6368616e67656420262620776f726b73706163655f64696d5f6368616e676564290d0a090974656d705f74657874202b3d2027205468756d622d44696d656e73696f6e7320616e6420576f726b73706163652d44696d656e73696f6e2077657265206368616e6765642e2050726576696f7573206368616e67657320616e64205468756d622d496d6167652077696c6c206265206c6f73742e273b0d0a09656c736520696620287468756d625f64696d5f6368616e676564290d0a090974656d705f74657874202b3d2027205468756d622d44696d656e73696f6e732077657265206368616e6765642e20205468756d622d696d6167652077696c6c206265206c6f7374273b0d0a09656c73652069662028776f726b73706163655f64696d5f6368616e676564290d0a090974656d705f74657874202b3d202720576f726b73706163652d44696d656e73696f6e20776173206368616e6765642e2050726576696f7573206368616e67657320616e64205468756d622d496d6167652077696c6c206265206c6f73742e273b0d0a0974656d705f74657874202b3d20275c6e446f20796f752077616e7420746f20636f6e74696e75653f273b0d0a090d0a09696620287468756d625f64696d5f6368616e676564207c7c20776f726b73706163655f64696d5f6368616e676564290d0a090974656d705f726573756c74203d20636f6e6669726d2874656d705f74657874293b0d0a09090d0a0972657475726e2074656d705f726573756c743b0d0a7d0d0a0d0a66756e6374696f6e20636f6e6669726d4869726573526573657428290d0a7b0d0a097661722074656d705f726573756c74203d20636f6e6669726d2827417474656e74696f6e2120496d6167652077696c6c206265207265637265617465642066726f6d204f726967696e616c2e2050726576696f7573206368616e67657320616e64205468756d622d496d6167652077696c6c206265206c6f73742e5c6e446f20796f752077616e7420746f20636f6e74696e75653f27293b0d0a090d0a09696620282874656d705f726573756c742920262620282474656d705f7468756d625f636f6e7461696e65722e66696e642827696d6727292e6c656e677468203e203029290d0a09092474656d705f7468756d625f636f6e7461696e65722e656d70747928293b0d0a090d0a0972657475726e2074656d705f726573756c743b0d0a7d0d0a0d0a66756e6374696f6e20636f6e6669726d5468756d62526573657428290d0a7b0d0a097661722074656d705f726573756c74203d20747275653b0d0a090d0a09696620282474656d705f7468756d625f636f6e7461696e65722e66696e642827696d6727292e6c656e677468203e2030290d0a097b0d0a090974656d705f726573756c74203d20636f6e6669726d2827417474656e74696f6e2120507265766965772077696c6c206265206c6f73742e5c6e446f20796f752077616e7420746f20636f6e74696e75653f27293b0d0a090d0a09096966202874656d705f726573756c74290d0a0909092474656d705f7468756d625f636f6e7461696e65722e656d70747928293b0d0a097d0d0a090d0a0972657475726e2074656d705f726573756c743b0d0a7d0d0a0d0a66756e6374696f6e2063726561746551756575654f626a65637428616374696f6e2c2076616c7565290d0a7b0d0a097661722074656d705f6f626a203d206e6577204f626a65637428293b0d0a090d0a0974656d705f6f626a5b27616374696f6e275d09093d20616374696f6e3b0d0a0974656d705f6f626a5b2776616c7565275d0909093d2076616c75653b0d0a0974656d705f6f626a5b2766696c656e616d65275d093d206e756c6c3b0d0a0974656d705f6f626a5b2775726c275d090909093d206e756c6c3b0d0a0974656d705f6f626a5b277769647468275d0909093d206e756c6c3b0d0a0974656d705f6f626a5b27686569676874275d09093d206e756c6c3b0d0a090d0a0972657475726e2074656d705f6f626a3b0d0a7d0d0a0d0a66756e6374696f6e2064656c6574654c6162656c7328290d0a7b0d0a09696620282474656d705f6c6162656c5f68697265735f726573697a6520213d206e756c6c290d0a097b0d0a09092474656d705f6c6162656c5f68697265735f726573697a652e72656d6f766528293b0d0a09092474656d705f6c6162656c5f68697265735f726573697a65203d206e756c6c3b0d0a097d0d0a09696620282474656d705f6c6162656c5f7468756d625f63726f7020213d206e756c6c290d0a097b0d0a09092474656d705f6c6162656c5f7468756d625f63726f702e72656d6f766528293b0d0a09092474656d705f6c6162656c5f7468756d625f63726f70203d206e756c6c3b0d0a097d0d0a7d0d0a0d0a66756e6374696f6e2067657441637444696d46726f6d517565756528696d675f696e666f290d0a7b0d0a097661722074656d705f706f73203d20696d675f696e666f5b277175657565275d2e6c656e677468202d20313b0d0a090d0a0974656d705f6163745f686569676874093d20696d675f696e666f5b277175657565275d5b74656d705f706f735d5b27686569676874275d3b0d0a0974656d705f6163745f7769647468093d20696d675f696e666f5b277175657565275d5b74656d705f706f735d5b277769647468275d3b0d0a7d0d0a0d0a66756e6374696f6e2067657445646974506970654173584d4c28696d675f696e666f290d0a7b0d0a097661722074656d705f786d6c203d2027273b0d0a090d0a0974656d705f786d6c202b3d20273c64696374696f6e6172793e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d2271756575652220747970653d226c697374223e3c6c6973743e5c6e273b0d0a090d0a09666f7220287661722069203d20303b2069203c20696d675f696e666f5b277175657565275d2e6c656e6774683b20692b2b290d0a097b0d0a090974656d705f786d6c202b3d20273c6974656d20747970653d2264696374696f6e617279223e3c64696374696f6e6172793e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d22616374696f6e223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b27616374696f6e275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d2276616c7565223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b2776616c7565275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d2266696c656e616d65223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b2766696c656e616d65275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d2275726c223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b2775726c275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d227769647468223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b277769647468275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c6974656d206b65793d22686569676874223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277175657565275d5b695d5b27686569676874275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a090974656d705f786d6c202b3d20273c2f64696374696f6e6172793e3c2f6974656d3e5c6e273b0d0a097d0d0a090d0a0974656d705f786d6c202b3d20273c2f6c6973743e3c2f6974656d3e5c6e273b0d0a090d0a0974656d705f786d6c202b3d20273c6974656d206b65793d227468756d622220747970653d2264696374696f6e617279223e3c64696374696f6e6172793e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d2266696c656e616d65223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277468756d62275d5b2766696c656e616d65275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d2275726c223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277468756d62275d5b2775726c275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d2263726f705f626f78223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277468756d62275d5b2763726f705f626f78275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d227769647468223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277468756d62275d5b277769647468275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d22686569676874223e3c215b434441544127202b20275b27202b20696d675f696e666f5b277468756d62275d5b27686569676874275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c2f64696374696f6e6172793e3c2f6974656d3e5c6e273b0d0a090d0a0974656d705f786d6c202b3d20273c6974656d206b65793d22776f726b73706163652220747970653d2264696374696f6e617279223e3c64696374696f6e6172793e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d227769647468223e3c215b434441544127202b20275b27202b20696d675f696e666f5b27776f726b7370616365275d5b277769647468275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c6974656d206b65793d2277696474685f6d6178223e3c215b434441544127202b20275b27202b20696d675f696e666f5b27776f726b7370616365275d5b2777696474685f6d6178275d202b20275d27202b20275d3e3c2f6974656d3e5c6e273b0d0a0974656d705f786d6c202b3d20273c2f64696374696f6e6172793e3c2f6974656d3e5c6e270d0a090d0a0974656d705f786d6c202b3d20273c2f64696374696f6e6172793e5c6e273b0d0a090d0a0972657475726e2074656d705f786d6c3b0d0a7d0d0a0d0a66756e6374696f6e20726563656976654461746128646174612c2074657874537461747573290d0a7b0d0a09696620282874657874537461747573203d3d20277375636365737327292026262028646174615b27726573756c74275d203e203029290d0a097b0d0a0909696d675f696e666f203d20646174615b27696d675f696e666f275d3b0d0a09090d0a09097661722074656d705f71756575655f706f73203d20696d675f696e666f5b277175657565275d2e6c656e677468202d20313b0d0a09090d0a0909696620282474656d705f696d675f636f6e7461696e65722e66696e642827696d6727292e6c656e677468203e2030290d0a09097b0d0a090909696620282474656d705f696d675f636f6e7461696e65722e66696e642827696d6727292e617474722827737263272920213d20696d675f696e666f5b277175657565275d5b74656d705f71756575655f706f735d5b2775726c275d290d0a090909092474656d705f696d675f636f6e7461696e65722e66696e642827696d6727292e617474722827737263272c20696d675f696e666f5b277175657565275d5b74656d705f71756575655f706f735d5b2775726c275d293b0d0a09097d0d0a0909656c73650d0a0909092474656d705f696d675f636f6e7461696e65722e617070656e6428273c696d67207372633d2227202b20696d675f696e666f5b277175657565275d5b74656d705f71756575655f706f735d5b2775726c275d202b202722202f3e27293b0d0a09090d0a090969662028696d675f696e666f5b277468756d62275d5b2775726c275d20213d20276e756c6c27290d0a09097b0d0a090909696620282474656d705f7468756d625f636f6e7461696e65722e66696e642827696d6727292e6c656e677468203e2030290d0a090909092474656d705f7468756d625f636f6e7461696e65722e66696e642827696d6727292e617474722827737263272c20696d675f696e666f5b277468756d62275d5b2775726c275d293b0d0a090909656c73650d0a090909092474656d705f7468756d625f636f6e7461696e65722e617070656e6428273c696d67207372633d2227202b20696d675f696e666f5b277468756d62275d5b2775726c275d202b202722202f3e27293b0d0a09097d0d0a0909090d0a090967657441637444696d46726f6d517565756528696d675f696e666f290d0a090972656e646572496d67496e666f28696d675f696e666f290d0a09090d0a09096966202874656d705f63726f705f6869726573290d0a090909242827235a4d53477261706869635f657874456469745f63726f705f686972657327292e636c69636b28293b0d0a097d0d0a7d0d0a0d0a66756e6374696f6e2072656e646572496d67496e666f28696d675f696e666f290d0a7b0d0a092474656d705f6c6162656c5f68697265732e746578742874656d705f6163745f7769647468202b202720782027202b2074656d705f6163745f686569676874293b0d0a0969662028696d675f696e666f5b277468756d62275d5b2775726c275d203d3d20276e756c6c27290d0a09092474656d705f6c6162656c5f7468756d622e7465787428274e6f6e6527293b0d0a09656c73650d0a09092474656d705f6c6162656c5f7468756d622e746578742874656d705f6163745f7468756d625f7769647468202b202720782027202b2074656d705f6163745f7468756d625f686569676874293b0d0a7d0d0a0d0a242827646f63756d656e7427292e72656164792866756e6374696f6e28290d0a7b0d0a092474656d705f666f726d0909090909093d20242827235a4d53477261706869635f657874456469745f666f726d27293b0d0a092474656d705f706970650909090909093d202474656d705f666f726d2e66696e642827696e7075745b6e616d653d2270697065225d27293b0d0a092474656d705f616374696f6e5f6c6973740909093d20242827235a4d53477261706869635f657874456469745f616374696f6e4c69737427293b0d0a092474656d705f696d675f636f6e7461696e657220093d20242827235a4d53477261706869635f657874456469745f696d61676527293b0d0a092474656d705f6c6162656c5f68697265730909093d20242827235a4d53477261706869635f657874456469745f696e666f5f686972657327293b0d0a092474656d705f6c6162656c5f7468756d620909093d20242827235a4d53477261706869635f657874456469745f696e666f5f7468756d6227293b0d0a092474656d705f7468756d625f636f6e7461696e6572093d20242827235a4d53477261706869635f657874456469745f7468756d625f696d6727293b0d0a092474656d705f7468756d625f68656967687409093d20242827235a4d53477261706869635f657874456469745f7468756d625f68656967687427293b0d0a092474656d705f7468756d625f77696474680909093d20242827235a4d53477261706869635f657874456469745f7468756d625f776964746827293b0d0a092474656d705f776f726b73706163655f64696d09093d20242827235a4d53477261706869635f657874456469745f776f726b737061636527293b0d0a090d0a092474656d705f627574746f6e735f63726f7009093d20242827235a4d53477261706869635f657874456469745f63726f705f63616e63656c2c20235a4d53477261706869635f657874456469745f63726f705f6f6b27293b0d0a092474656d705f627574746f6e735f64696d0909093d20242827235a4d53477261706869635f657874456469745f64696d656e73696f6e5f63616e63656c2c20235a4d53477261706869635f657874456469745f64696d656e73696f6e5f6f6b27293b0d0a09696620287a6d73677261706869635f657874656469745f6861735f7375706572726573290d0a09092474656d705f627574746f6e735f6d61696e093d20242827235a4d53477261706869635f657874456469745f63726f702c20235a4d53477261706869635f657874456469745f64696d656e73696f6e2c20235a4d53477261706869635f657874456469745f666c69705f682c20235a4d53477261706869635f657874456469745f666c69705f762c2027202b0d0a090909090909090909090909090927235a4d53477261706869635f657874456469745f726573697a652c20235a4d53477261706869635f657874456469745f726f746174655f6d2c20235a4d53477261706869635f657874456469745f726f746174655f702c20235a4d53477261706869635f657874456469745f72657365742c2027202b0d0a090909090909090909090909090927235a4d53477261706869635f657874456469745f63726f705f68697265732c20235a4d53477261706869635f657874456469745f64726f705f736861646f772c20235a4d53477261706869635f657874456469745f63616e63656c2c20235a4d53477261706869635f657874456469745f6f6b27293b0d0a09656c73650d0a09092474656d705f627574746f6e735f6d61696e093d20242827235a4d53477261706869635f657874456469745f63726f702c20235a4d53477261706869635f657874456469745f64696d656e73696f6e2c20235a4d53477261706869635f657874456469745f666c69705f682c20235a4d53477261706869635f657874456469745f666c69705f762c2027202b0d0a090909090909090909090909090927235a4d53477261706869635f657874456469745f726573697a652c20235a4d53477261706869635f657874456469745f726f746174655f6d2c20235a4d53477261706869635f657874456469745f726f746174655f702c2027202b0d0a090909090909090909090909090927235a4d53477261706869635f657874456469745f64726f705f736861646f772c20235a4d53477261706869635f657874456469745f63616e63656c2c20235a4d53477261706869635f657874456469745f6f6b27293b0d0a09090d0a092474656d705f627574746f6e735f726573697a65093d20242827235a4d53477261706869635f657874456469745f726573697a655f63616e63656c2c20235a4d53477261706869635f657874456469745f726573697a655f6f6b27293b0d0a092474656d705f696e707574735f64696d0909093d20242827235a4d53477261706869635f657874456469745f7468756d625f64696d27293b0d0a090d0a096368616e6765427574746f6e417661696c6162696c69747928747275652c202474656d705f627574746f6e735f6d61696e293b0d0a096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f63726f70293b0d0a096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f64696d293b0d0a096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f627574746f6e735f726573697a65293b0d0a096368616e6765427574746f6e5669736962696c6974792866616c73652c202474656d705f696e707574735f64696d293b0d0a090d0a0967657441637444696d46726f6d517565756528696d675f696e666f293b0d0a7d293b</data></item> 
    2121<item key="id"><![CDATA[handleEdit.js]]></item> 
    2222<item key="mandatory" type="int">0</item> 
     
    13051305<item type="dictionary"><dictionary> 
    13061306<item key="custom"> 
    1307 <data content_type="image/png" filename="crop.png" type="file">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000000467414d410000afc837058ae90000001974455874536f6674776172650041646f626520496d616765526561647971c9653c000001bb4944415438cb8d93318b53511085cf0bd1c228618dd8c816762a36bad67103428a54f901c2a691fc84b476a631ff42c8569b2e04c14a0392dd428b45d6425670cbd89817de9b33c7e2be17dfea433230ccdccbccc799b9dc68381c9e4bda95743a180c1e600bebf7fbefd234dd27795a01b0dbe97440f21eb6b4388ef77bbd1ee238be5f257932994c1e5dbd7e3b3a5aac24004e208f0ec00590c0f3e6b50800d6ebf5dbd168f4ccccde47920000478b95766a1540a1491e1aa5102f7e3a0e9e0640d1aa79420fc57943ee12e00e98978fb301e485ca24bbff0561396133c2e187956edea840023e9d2f832a0924203acc0137871960245e1ddc8d2e2930012c8c7067e74a50e1025d7086480a5f7fa4253b604136959d0577071d201d640024a99700045c2c1d740fc52e381d24b2bb3f4ad254ff028a4ff4f270299a6f24d31d6e0a7ba0c3ac04503433c10a92373bc87233fe1f9026845975d36854b64c8713971574bbdd4592247b248fa7d3e9130048cd71f6fd175207680e23604638c3d37e7cf302b75e7f91999da1dd6e6b369ba9d96c4a12b6f146a3a1f178ac5aada6a8d56a1d2749f298e4c97c3edfdbe637d6ebf5cf66f690e4b7df0925a260120fa46f0000000049454e44ae426082</data></item> 
    1308 <item key="id"><![CDATA[crop.png]]></item> 
    1309 <item key="mandatory" type="int">0</item> 
    1310 <item key="multilang" type="int">0</item> 
    1311 <item key="name"><![CDATA[crop.png]]></item> 
    1312 <item key="repetitive" type="int">0</item> 
    1313 <item key="type"><![CDATA[resource]]></item> 
    1314 </dictionary> 
    1315 </item> 
    1316 <item type="dictionary"><dictionary> 
    1317 <item key="custom"> 
    1318 <data content_type="image/png" filename="crop_disabled.png" type="file">89504e470d0a1a0a0000000d494844520000001000000010080600000168f4cff70000001974455874536f6674776172650041646f626520496d616765526561647971c9653c0000023d4944415478da62484b4b7bf4ffff7f060610316fdebcff0001c408e60101cbf6eddbffdfbe7d9b012080c052fbf6edfbbf63c78eff20365c497f7fffff2f5fbe30000410434a4aca359020083b3838fc675cbf7efd7f5e5e5e86a74f9f32c4c5c531b27cfbf68de1ebd7af0cdfbf7f076b658a8a8a627cfffe3dc3870f1fc0020001c4989c9c7c968b8bcbc8d5d595e1cf9f3f60fcfbf76f0690426363e3ff605b57af5efd5f505090e1faf5eb60c95fbf7e31fcf8f183a1a1a1819105644c68682823887ef8f0e17f9024131313188381a6a6e67f2525a5ff30a722e3aeaeaeff0001d8a09613864220b84210c4cbc37e3c8b0dd881955888455840b0018f292377216a9c25e6f416d483333b1f8a31de7e6e4f4f6bedebb1355729658d31d8e09c93420862a7f8f4dedf6cb2d6ca8003f2de0bfa0d9b8473240078b3a8b5b69022a524d8ea615ed745c618426434c8cde172ce09307050e979ff121830b4d62c816d00f1e49c6f632aa59694727d05e89b0a5218848160022d78cbc95ff4125a6ff9895e7c8d7e24979c7d800f684f0509f403e2231a77845d4c095d588c6633ceee4c14b922cdf39cfabeff960a4be99c4b90a7699a240ec1ac8c3159219ae3f5b66daaeb3a194f3626043b018161733200342e853008211c8ec17b8c51d5752d2c7e934ca3c671d4190388b5aeeb518049e28f67f9f9896fac5106d0b6adf4470a1f4ae35089814804006bed930aefb4f15a96e5c19ae2529e01788db6a66952defb448c3e17ba701af46943180cc3a0d59fa8aaea4df53702b8ee2e970b61db5e74010000000049454e44ae426082</data></item> 
    1319 <item key="id"><![CDATA[crop_disabled.png]]></item> 
    1320 <item key="mandatory" type="int">0</item> 
    1321 <item key="multilang" type="int">0</item> 
    1322 <item key="name"><![CDATA[crop_disabled.png]]></item> 
     1307<data content_type="image/png" filename="crop_thumb.png" type="file">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000000467414d410000afc837058ae90000001974455874536f6674776172650041646f626520496d616765526561647971c9653c0000022c4944415438cba553316c1261147e87475b0a346d358db9041988038cc2e4d068188993830446757070c048024c2e2c24b2903010244c3a19217173705131a665686cd11aad5e6bad06b1831e84fbffff7cef07da42bbf54fbeffddddffde77dffbee9d6259169c66a9b4e572391d893c88562a950a4c26a5d3e997a6695e1142b4f2f97ce018012e4f2412817abdee7fb662588203902e8a0263b7db85582c06954ac57fa202ce79b356ab5d72cc2dc1e2ac4d1659b80964a10ee7ce5d8052a9048cb1d79304cac883a7ef0cebaccb260bc411c87b24dbdd1770ebeaac72a2025aa3c437cf8bd0f9b503ea8c1b2e5fbb0bf619d7e08c0b99170e8757d08f2062b5d168846c2302d92f26b6f7748846a3f0fbe70eac6fb761ed5b07d6b6dab0f7671f1e3cd1ad5eaf17cc6432e44b704c01c3628eb03be6a1582cc29929272cb9559876d88123b3c0438ace050d92c924a082e68107894442ca72ce9f87e5ebf7e13dbe555b98c296b010fb22f51c374e2488cdef0614ee5c947ec816484e3c1e871ffa26ec76d8205958323286ea18450bd890c0340f874f12605fcd42a120e3edb04b3129918a381509093e2219c6b1af50ad5683473fcde06d87920f3c185e33c68fcfc168854221bddfef7bdc8b1adcb8f748169212f283a31f8f1fde842f1b6f69f85aa838609b1c0c7ce8c966b3e8c727f8b86dc007fd1fc2808daf7fa1b565c0e7f50694cb659a4aff7080ac31f87cbe55afd72b344d6b4c9e1154557da1280ac97e45f7ca697fe7ff1fa88b9df58d166d0000000049454e44ae426082</data></item> 
     1308<item key="id"><![CDATA[crop_thumb.png]]></item> 
     1309<item key="mandatory" type="int">0</item> 
     1310<item key="multilang" type="int">0</item> 
     1311<item key="name"><![CDATA[crop_thumb.png]]></item> 
     1312<item key="repetitive" type="int">0</item> 
     1313<item key="type"><![CDATA[resource]]></item> 
     1314</dictionary> 
     1315</item> 
     1316<item type="dictionary"><dictionary> 
     1317<item key="custom"> 
     1318<data content_type="image/png" filename="crop_thumb_disabled.png" type="file">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000000467414d410000afc837058ae90000001974455874536f6674776172650041646f626520496d616765526561647971c9653c000001d54944415478daa4533b6b0241109e8b117c3f40acb415b4cce507e417586a2188166ae70fd042106c142c2c6c6cb4b1162d530424218ddac981e0b310516c7deb6567c2ca79da39f0ddb2bb33dfce7c3327c8b20ccfd82b7e1289c48c11b919a44aa5e2533b050281afe3f1f8713e9fa566b3e9bb2360e60e854250abd5bcad564b3e9d4e74c8020033dc6c36f808944a25efc30c9863af5aadbe592c16406010e272b9101c0e07148b45f4fb5113085c8346a321dbed760ae0c14aa2e57209e170587898011a3a61caf57a9d9c753a1d04834130180c44c2cbf2783c1de627b27d773a9dbebf2809108bc50262b118ac562b180c06204912f4fb7ddae77239998929a65229381c0ee24d06f83a12e8f57a28140aa0d56ac166b381c964a23b0ea3d108e9749a74bb6ae0f7fb3bc88c024622117ad5e9745ecb52024b994c26282ae941256cb75b311e8fc37c3ea7127836e8cc886f564ec28d08f6fb7d2f9fcfc36eb7eb45a351e15100079e236ebad06eb745656b9401ea1278667773c0cde572cd98831bc54b2693d70cb81ee57299dacc4c629df0bda807831dba33990cacd76b188fc7301a8d681d0e87040cce66b348f63fd67cda38d83476ad56ebc56c36ffaaef101a8de613c318be712f3cfb3bff09300083719dbdbb82fb6f0000000049454e44ae426082</data></item> 
     1319<item key="id"><![CDATA[crop_thumb_disabled.png]]></item> 
     1320<item key="mandatory" type="int">0</item> 
     1321<item key="multilang" type="int">0</item> 
     1322<item key="name"><![CDATA[crop_thumb_disabled.png]]></item> 
    13231323<item key="repetitive" type="int">0</item> 
    13241324<item key="type"><![CDATA[resource]]></item> 
     
    14641464<item key="multilang" type="int">0</item> 
    14651465<item key="name"><![CDATA[rotate_clockwise_disabled.png]]></item> 
     1466<item key="repetitive" type="int">0</item> 
     1467<item key="type"><![CDATA[resource]]></item> 
     1468</dictionary> 
     1469</item> 
     1470<item type="dictionary"><dictionary> 
     1471<item key="custom"> 
     1472<data content_type="image/png" filename="drop-shadow.png" type="file">89504e470d0a1a0a0000000d494844520000001000000010080600000168f4cff70000001974455874536f6674776172650041646f626520496d616765526561647971c9653c0000022b4944415478da62fcffff3f0308308188ae558ffe030410234c8465f2e6a7ff6fbd78dc0e1040609185075efffffefd0f83b3ca1788da780751c6ab4f1eb64f3af0f62f4000c1f5c000cbd2c36ffefff8f997e11b508b8bca270696cf5f7e03397f197efcf8c3f0fbf76f060690969c59c79f82e8e3c78fff070820b019bd5b9effff0ba4fffc6100aafacbf0fbd77f8696183946b80b85b8981904d9991904d818809891418083812177f689a7d7af5fffcf025270e1e647869fbfff0175ff03ebfef3f72fc3b21a0be9b367cffec770263a00084008b92341080241740236357437dd886b791acb6beca10ce0161ba88038d80d456c303543cd87d7fd386008c822e722675649f82641e7327d1b24e9c7e18530f246fe20d337e75c5d342962235d0d3013b4c81e54acb5ed42c023e2640f0ec7705599f5c2769cb2fe231ada4c028baab2f7ab9454e1bd2fb077ee36f79af128f3166004151002e0a800859594201bd8ca7f40f3feff03b99381e12f9000d1ff80fcbf7fff33dc7df69da127458911c3805f7f4029e11f564d601a6420900d0a5f60e8b4815265960dbf94a6a6262338b5fc0426b69fc050fa090ac29f9060fd8114b4600c9407193039d5a20a14827f8109069edc402916972670dc4023f3e76f48fc800c01a76e788e4a5464ccf69162f4d1f9c970f7cd936745c1b28c8f3e3c6b7ff2e9d9b3ca2805c617df5fb4bffaf1f2d9d26a5d90ff1f020df9f30794fad16301967e40cefb070e0bdc1804acacac18298e46005292b72d500388820000000049454e44ae426082</data></item> 
     1473<item key="id"><![CDATA[drop-shadow.png]]></item> 
     1474<item key="mandatory" type="int">0</item> 
     1475<item key="multilang" type="int">0</item> 
     1476<item key="name"><![CDATA[drop-shadow.png]]></item> 
     1477<item key="repetitive" type="int">0</item> 
     1478<item key="type"><![CDATA[resource]]></item> 
     1479</dictionary> 
     1480</item> 
     1481<item type="dictionary"><dictionary> 
     1482<item key="custom"> 
     1483<data content_type="image/png" filename="drop-shadow_disabled.png" type="file">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000000467414d410000afc837058ae90000001974455874536f6674776172650041646f626520496d616765526561647971c9653c000001364944415478dac4533b6e83401065a2880a5120992647a1e4045c801c02941358b62c4143e18e821289825344200e815c844398cf86b7cae035c6958b8c34ccec8a37fbde63212184f64abc692fc63b1e49920822921bd33469e3386a60868a1c8661a9fbfd9e1e06006cdbb604610027405c9197cb659b817aea1690d760d0348de03dc771487aa00254ba7ddfcbca3d32cff3635114dd9d89ea4b003370dda3cef11945d1077b26076c01f8445506d60087617840bf78c00c54ddcf8c04182cd02f0caed7eb838cb5073c8025fcc9b93168dbf6ce489501df09044b705df7c6e0743a511cc7e4fbbea6eb7a773e9fc9308ca3699a5d9aa66459d671b7db755996d10cfe9e215f182e03d339ebba16a841101ce6fc79d20fe8cbb294ef92fa33555525f8abac0de48bc4d2109ee711fdfbdff82bc000ee88a508657ee4330000000049454e44ae426082</data></item> 
     1484<item key="id"><![CDATA[drop-shadow_disabled.png]]></item> 
     1485<item key="mandatory" type="int">0</item> 
     1486<item key="multilang" type="int">0</item> 
     1487<item key="name"><![CDATA[drop-shadow_disabled.png]]></item> 
     1488<item key="repetitive" type="int">0</item> 
     1489<item key="type"><![CDATA[resource]]></item> 
     1490</dictionary> 
     1491</item> 
     1492<item type="dictionary"><dictionary> 
     1493<item key="custom"> 
     1494<data content_type="image/png" filename="reset.png" type="file">89504e470d0a1a0a0000000d494844520000000f0000000f08060000003bd6954a000000097048597300000b1300000b1301009a9c180000000467414d410000b18e7cfb5193000000206348524d00007a25000080830000f9ff000080e9000075300000ea6000003a980000176f925fc5460000017e4944415478da62f8ffff3fc33f1cb865d3f3ffd8c4ff43314000b130e0004d1b9efffff4fd2f033e0010408c6053b069fcf69701843f7efbc7f01988bffdfccb70a05e8d11ac09aa0e20809870d9f8f1fb3f864fdf411aff327c06f1bffc6550cbb982620f40006168ae0b9064fcfae33fc3a7af7fc1f833d0802f4003be02e96fdfff3308c55c841b0010404cd8fc323d51961164e317a0730f37aa319eefd664fcf603a819887ffc40580e10404cb802635b850ae317a400fb0ed4f8f3e77f865fbffec1c50002081cdac5cb9ffefffced0fc3c7afff1856e629c2c283e11cd046181b64e34f248d2000104060cda050fdfcf51fd89930a09673f5ffad29da70cd5fd71830a2bb0e2080c0ce06070c346ae08a8101248c1438d800400081e3d9b3e3ce7fd45005c52bd08f207ffefacff06793118aad300e4000c1138951e9f5ff5fbe4342f43b18a3060eb201300640003121070e2c3abea3852a2e0010405893273824fdcec184ff006d65c5e66c800062c16732ba5fd101408001005a9410e9e22e4a040000000049454e44ae426082</data></item> 
     1495<item key="id"><![CDATA[reset.png]]></item> 
     1496<item key="mandatory" type="int">0</item> 
     1497<item key="multilang" type="int">0</item> 
     1498<item key="name"><![CDATA[reset.png]]></item> 
     1499<item key="repetitive" type="int">0</item> 
     1500<item key="type"><![CDATA[resource]]></item> 
     1501</dictionary> 
     1502</item> 
     1503<item type="dictionary"><dictionary> 
     1504<item key="custom"> 
     1505<data content_type="image/png" filename="reset_disabled.png" type="file">89504e470d0a1a0a0000000d494844520000000f0000000f08060000003bd6954a0000000467414d410000afc837058ae90000001974455874536f6674776172650041646f626520496d616765526561647971c9653c000000f64944415478da94923d0a84301085278b7b245b7b4bafe015bc818d95d8585b89ada547b0f03afe2bccee0b8c842509ec832191e49b9f678899c9155555b1ef3c2087cab2e46559c827850c36709e6702bcaeab8ef33ca96d5b65de7bb92a02d8b64daffbbeeb44711cb317ceb24c0192ca00f18df5380e8aa2889d305414854e80e8ba4ef57dafaeeb22092f0c354da3504d8499effbd621d26ee779aee744d475fd98828ab24745137c6001618e08e60cc3f0c0e338aadfee74db3047dc35db34cd71fee7344dd97415a0988356a76952de47922409db40912dc1cb34c705fef53ca1300ce5e0fe567ddbee04beccae59451f0106009e590f814d8292bd0000000049454e44ae426082</data></item> 
     1506<item key="id"><![CDATA[reset_disabled.png]]></item> 
     1507<item key="mandatory" type="int">0</item> 
     1508<item key="multilang" type="int">0</item> 
     1509<item key="name"><![CDATA[reset_disabled.png]]></item> 
     1510<item key="repetitive" type="int">0</item> 
     1511<item key="type"><![CDATA[resource]]></item> 
     1512</dictionary> 
     1513</item> 
     1514<item type="dictionary"><dictionary> 
     1515<item key="custom"> 
     1516<data content_type="image/png" filename="crop_hires.png" type="file">89504e470d0a1a0a0000000d49484452000000100000001008060000001ff3ff610000000467414d410000afc837058ae90000001974455874536f6674776172650041646f626520496d616765526561647971c9653c000001bb4944415438cb8d93318b53511085cf0bd1c228618dd8c816762a36bad67103428a54f901c2a691fc84b476a631ff42c8569b2e04c14a0392dd428b45d6425670cbd89817de9b33c7e2be17dfea433230ccdccbccc799b9dc68381c9e4bda95743a180c1e600bebf7fbefd234dd27795a01b0dbe97440f21eb6b4388ef77bbd1ee238be5f257932994c1e5dbd7e3b3a5aac24004e208f0ec00590c0f3e6b50800d6ebf5dbd168f4ccccde47920000478b95766a1540a1491e1aa5102f7e3a0e9e0640d1aa79420fc57943ee12e00e98978fb301e485ca24bbff0561396133c2e187956edea840023e9d2f832a0924203acc0137871960245e1ddc8d2e2930012c8c7067e74a50e1025d7086480a5f7fa4253b604136959d0577071d201d640024a99700045c2c1d740fc52e381d24b2bb3f4ad254ff028a4ff4f270299a6f24d31d6e0a7ba0c3ac04503433c10a92373bc87233fe1f9026845975d36854b64c8713971574bbdd4592247b248fa7d3e9130048cd71f6fd175207680e23604638c3d37e7cf302b75e7f91999da1dd6e6b369ba9d96c4a12b6f146a3a1f178ac5aada6a8d56a1d2749f298e4c97c3edfdbe637d6ebf5cf66f690e4b7df0925a260120fa46f0000000049454e44ae426082</data></item> 
     1517<item key="id"><![CDATA[crop_hires.png]]></item> 
     1518<item key="mandatory" type="int">0</item> 
     1519<item key="multilang" type="int">0</item> 
     1520<item key="name"><![CDATA[crop_hires.png]]></item> 
     1521<item key="repetitive" type="int">0</item> 
     1522<item key="type"><![CDATA[resource]]></item> 
     1523</dictionary> 
     1524</item> 
     1525<item type="dictionary"><dictionary> 
     1526<item key="custom"> 
     1527<data content_type="image/png" filename="crop_hires_disabled.png" type="file">89504e470d0a1a0a0000000d494844520000001000000010080600000168f4cff70000001974455874536f6674776172650041646f626520496d616765526561647971c9653c0000023d4944415478da62484b4b7bf4ffff7f060610316fdebcff0001c408e60101cbf6eddbffdfbe7d9b012080c052fbf6edfbbf63c78eff20365c497f7fffff2f5fbe30000410434a4aca359020083b3838fc675cbf7efd7f5e5e5e86a74f9f32c4c5c531b27cfbf68de1ebd7af0cdfbf7f076b658a8a8a627cfffe3dc3870f1fc0020001c4989c9c7c968b8bcbc8d5d595e1cf9f3f60fcfbf76f0690426363e3ff605b57af5efd5f505090e1faf5eb60c95fbf7e31fcf8f183a1a1a1819105644c68682823887ef8f0e17f9024131313188381a6a6e67f2525a5ff30a722e3aeaeaeff0001d8a09613864220b84210c4cbc37e3c8b0dd881955888455840b0018f292377216a9c25e6f416d483333b1f8a31de7e6e4f4f6bedebb1355729658d31d8e09c93420862a7f8f4dedf6cb2d6ca8003f2de0bfa0d9b8473240078b3a8b5b69022a524d8ea615ed745c618426434c8cde172ce09307050e979ff121830b4d62c816d00f1e49c6f632aa59694727d05e89b0a5218848160022d78cbc95ff4125a6ff9895e7c8d7e24979c7d800f684f0509f403e2231a77845d4c095d588c6633ceee4c14b922cdf39cfabeff960a4be99c4b90a7699a240ec1ac8c3159219ae3f5b66daaeb3a194f3626043b018161733200342e853008211c8ec17b8c51d5752d2c7e934ca3c671d4190388b5aeeb518049e28f67f9f9896fac5106d0b6adf4470a1f4ae35089814804006bed930aefb4f15a96e5c19ae2529e01788db6a66952defb448c3e17ba701af46943180cc3a0d59fa8aaea4df53702b8ee2e970b61db5e74010000000049454e44ae426082</data></item> 
     1528<item key="id"><![CDATA[crop_hires_disabled.png]]></item> 
     1529<item key="mandatory" type="int">0</item> 
     1530<item key="multilang" type="int">0</item> 
     1531<item key="name"><![CDATA[crop_hires_disabled.png]]></item> 
    14661532<item key="repetitive" type="int">0</item> 
    14671533<item key="type"><![CDATA[resource]]></item> 
     
    14901556                var zmsgraphic_extedit_workspace_width_max      = &dtml-workspace_width_max; 
    14911557                var zmsgraphic_extedit_request_url                                      = "<dtml-var "absolute_url()">/ZMSGraphic_extEdit_core"; 
     1558                var zmsgraphic_extedit_has_superres                                     = <dtml-if "(img_info['imgsuperres'] is not None) and (img_info['imgsuperres']['filename'] is not None)">true<dtml-else>false</dtml-if>; 
    14921559                 
    14931560                img_info['queue'] = new Array(); 
     
    15181585 
    15191586<dtml-if "((img_info['act'].has_key('filename')) and (len(img_info['act']['filename']) > 0))"> 
    1520 <dtml-let resUrl="getDocumentElement().absolute_url()+'/metaobj_manager'"> 
     1587<dtml-let resUrl="getDocumentElement().absolute_url()+'/metaobj_manager'" 
     1588                                        has_superres="(img_info['imgsuperres'] is not None) and (img_info['imgsuperres']['filename'] is not None)"> 
    15211589        <div id="ZMSGraphic_extEdit_main" style="text-align:left;"> 
    15221590                <div id="ZMSGraphic_extEdit_info"> 
     
    15691637                                <td> 
    15701638                                        <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.dimensions.png" id="ZMSGraphic_extEdit_dimension" alt="change dimensions" title="change dimensions" style="cursor:pointer;" /><br /><br /> 
     1639                                        <br /> 
    15711640                                        <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.resize.png" id="ZMSGraphic_extEdit_resize" alt="resize image" title="resize image" style="cursor:pointer;" /><br /><br /> 
    1572                                         <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.crop.png" id="ZMSGraphic_extEdit_crop" alt="crop preview" title="crop preview" style="cursor:pointer;" /><br /><br /><br /> 
    1573                                          
     1641                                        <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.crop_hires.png" id="ZMSGraphic_extEdit_crop_hires" alt="crop image" title="crop image"<dtml-if "has_superres"> style="cursor:pointer;"</dtml-if> /><br /><br /> 
     1642                                        <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.crop_thumb.png" id="ZMSGraphic_extEdit_crop" alt="crop preview" title="crop preview" style="cursor:pointer;" /><br /><br /> 
     1643                                        <br /> 
     1644                                        <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.drop-shadow.png" id="ZMSGraphic_extEdit_drop_shadow" alt="drop shadow" title="drop shadow" style="cursor:pointer;" /><br /><br /> 
     1645                                        <br /> 
    15741646                                        <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.rotate_clockwise.png" id="ZMSGraphic_extEdit_rotate_p" alt="rotate clockwise" title="rotate clockwise" style="cursor:pointer;" /><br /><br /> 
    1575                                         <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.rotate_anticlockwise.png" id="ZMSGraphic_extEdit_rotate_m" alt="rotate anticlockwise" title="rotate anticlockwise" style="cursor:pointer;" /><br /><br /><br /> 
    1576                                          
     1647                                        <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.rotate_anticlockwise.png" id="ZMSGraphic_extEdit_rotate_m" alt="rotate anticlockwise" title="rotate anticlockwise" style="cursor:pointer;" /><br /><br /> 
     1648                                        <br /> 
     1649                                        <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.flip_vertical.png" id="ZMSGraphic_extEdit_flip_v" alt="flip vertical" title="flip vertical" style="cursor:pointer;" /><br /> 
    15771650                                        <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.flip_horizontal.png" id="ZMSGraphic_extEdit_flip_h" alt="flip horizontal" title="flip horizontal" style="cursor:pointer;" /><br /><br /> 
    1578                                         <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.flip_vertical.png" id="ZMSGraphic_extEdit_flip_v" alt="flip vertical" title="flip vertical" style="cursor:pointer;" /> 
     1651                                        <br /> 
     1652                                        <img src="<dtml-var resUrl>/ZMSGraphic_extEdit.reset.png" id="ZMSGraphic_extEdit_reset" alt="reset image" title="reset image"<dtml-if "has_superres"> style="cursor:pointer;"</dtml-if> /><br /><br /> 
    15791653                                </td> 
    15801654                                <td> 
     
    16761750                if (unique_filename): 
    16771751                        temp_dest_id += '_%s'%strftime('%Y%m%d%H%M%S', localtime()) 
    1678                 temp_dest_id = temp_path + '_thumb.jpg' 
     1752                temp_dest_id += '_crop.jpg' 
    16791753                 
    16801754                if (temp_dest_id in dest_folder.objectIds()): 
     
    18131887<item key="custom"><![CDATA[from DateTime import DateTime 
    18141888 
     1889def calcCropValues(src_values, src_dim, dest_dim): 
     1890        temp_factor = float (dest_dim[0]) / float (src_dim[0]) 
     1891         
     1892        for i in range(0, len(src_values)): 
     1893                src_values[i] = int (float (src_values[i]) * temp_factor) 
     1894                 
     1895        return src_values 
     1896         
    18151897def calcResizeDim(src_width, src_height, dest_width = None, dest_height = None): 
    18161898        if (dest_width is None): 
     
    18301912        if ((dest_folder is not None) and (dest_folder.getId() in context.temp_folder.objectIds())): 
    18311913                context.temp_folder.manage_delObjects(dest_folder.getId()) 
    1832          
    1833 def createTempImage(dest_folder, image_dict, conf_dimensions): 
    1834         temp_image_dict = (image_dict['imgsuperres'] is not None) and image_dict['imgsuperres'] or image_dict['imghires'] 
     1914 
     1915def createTempImage(dest_folder, image_filename, image_data): 
     1916        # delete old image 
     1917        if (image_filename in dest_folder.objectIds()): 
     1918                dest_folder.manage_delObjects(image_filename) 
     1919        # create image   
     1920        dest_folder.manage_addImage(image_filename, image_data) 
     1921 
     1922def createTempImages(dest_folder, image_dict, conf_dimensions, use_hires = False): 
     1923        temp_image_dict = ((image_dict['imgsuperres'] is not None) and (not use_hires)) and image_dict['imgsuperres'] or image_dict['imghires'] 
    18351924         
    18361925        if (temp_image_dict is not None): 
    1837                 # delete old image 
    1838                 if (temp_image_dict['filename'] in dest_folder.objectIds()): 
    1839                         dest_folder.manage_delObjects(temp_image_dict['filename']) 
     1926                # create new filename 
     1927                image_dict['act']['filename'] = createUniqueFilename(temp_image_dict['filename']) 
    18401928                # create image 
    1841                 temp_parts = temp_image_dict['filename'].rsplit('.') 
    1842                 image_dict['act']['filename'] = '%s_%s%s'%(temp_parts[0], DateTime().strftime('%Y%m%d%H%M%S'), (len(temp_parts) > 1) and '.%s'%temp_parts[1] or '') 
    1843  
    1844                 dest_folder.manage_addImage(image_dict['act']['filename'], temp_image_dict['data']) 
     1929                createTempImage(dest_folder, image_dict['act']['filename'], temp_image_dict['data']) 
    18451930                 
    18461931                # resize image if its greater than workspace width 
    18471932                if (max(temp_image_dict['height'], temp_image_dict['width']) > conf_dimensions['workspace']): 
    1848                         temp_size = calcResizeDim(temp_image_dict['width'], temp_image_dict['height'], conf_dimensions['workspace']) 
     1933                        temp_size = calcResizeDim(temp_image_dict['width'], temp_image_dict['height'], conf_dimensions['workspace'], conf_dimensions['workspace']) 
    18491934                        temp_info = context.ZMSGraphic_extEdit_resize(dest_folder, image_dict['act']['filename'], temp_size[0], temp_size[1], replace_source = True) 
    18501935                         
     
    18641949        return image_dict 
    18651950 
    1866 def cropThumb(dest_folder, source_id, crop_box_str, unique_filename = False): 
     1951def createUniqueFilename(src_filename): 
     1952        temp_parts = src_filename.rsplit('.') 
     1953         
     1954        return '%s_%s%s'%(temp_parts[0], DateTime().strftime('%Y%m%d%H%M%S'), (len(temp_parts) > 1) and '.%s'%temp_parts[1] or '')  
     1955 
     1956def cropImage(dest_folder, source_id, crop_box, max_dim, unique_filename = False): 
    18671957        temp_info = None 
    18681958         
    18691959        if ((dest_folder is not None) and (source_id in dest_folder.objectIds())): 
    1870                 temp_box        = crop_box_str.split(',') 
    1871                 temp_info = context.ZMSGraphic_extEdit_crop(dest_folder, source_id, \ 
    1872                                                                                                                                                                                                 (int (temp_box[0]), int (temp_box[1]), int (temp_box[2]), int (temp_box[3])), unique_filename) 
    1873                  
    1874                 temp_max_thumb_height = int (temp_box[5]) 
    1875                 temp_max_thumb_width    = int (temp_box[4]) 
    1876                  
    1877                 # resize thumb if dimensions are unequal to thumb-dimension-settings 
    1878                 if ((temp_info[1] <> temp_max_thumb_width) or (temp_info[2] <> temp_max_thumb_height)): 
    1879                         temp_thumb_width, temp_thumb_height = calcResizeDim(temp_info[1], temp_info[2], temp_max_thumb_width, temp_max_thumb_height) 
    1880                         temp_info = context.ZMSGraphic_extEdit_resize(dest_folder, temp_info[0], int(temp_thumb_width), int(temp_thumb_height), replace_source = True) 
     1960                temp_info = context.ZMSGraphic_extEdit_crop(dest_folder, source_id, 
     1961                                                                                                                                                                                                (int (crop_box[0]), int (crop_box[1]), int (crop_box[2]), int (crop_box[3])),  
     1962                                                                                                                                                                                                unique_filename = unique_filename) 
     1963                 
     1964                max_dim[0] = int (max_dim[0]) 
     1965                max_dim[1] = int (max_dim[1]) 
     1966                 
     1967                # resize cropped image to max dimensions if dimensions are unequal to thumb-dimension-settings 
     1968                if ((temp_info[1] <> max_dim[0]) or (temp_info[2] <> max_dim[1])): 
     1969                        temp_info = context.ZMSGraphic_extEdit_resize(dest_folder, temp_info[0], max_dim[0], max_dim[1], replace_source = True) 
    18811970                 
    18821971        return temp_info 
     
    19322021                 
    19332022                # create image 
    1934                 if (create_it): 
    1935                         dest_folder.manage_addImage(temp_image.getFilename(), temp_image.getData()) 
     2023                if (create_it and (dest_folder is not None)): 
     2024                        createTempImage(dest_folder, temp_image.getFilename(), temp_image.getData()) 
    19362025                 
    19372026        return temp_result 
    19382027 
    1939 def handleEditQueue(dest_folder, img_info): 
     2028def handleEditQueue(dest_folder, img_info, is_gallery): 
    19402029        if ((img_info is not None) and (len(img_info['queue']) > 1) and (img_info['queue'][-1]['filename'] == 'null')): 
    19412030                temp_action             = img_info['queue'][-1]['action'] 
     
    19652054                        img_info = setThumbInfo(img_info) 
    19662055                elif (temp_action == 'crop'): 
     2056                        temp_crop_info = img_info['queue'][-1]['value'].split(',') 
    19672057                        # crop thumb 
    1968                         temp_info       = cropThumb(dest_folder, img_info['queue'][-2]['filename'], img_info['queue'][-1]['value'], True) 
     2058                        temp_info       = cropImage(dest_folder, img_info['queue'][-2]['filename'], temp_crop_info[:4], temp_crop_info[-2:], True) 
    19692059                        img_info        = setThumbInfo(img_info, temp_info, img_info['queue'][-1]['value'], dest_folder) 
    19702060                        # delete crop-action from edit-queue 
    19712061                        img_info['queue'].pop() 
    1972                 elif (temp_action == 'workspace'): 
    1973                         temp_dims                                       = {'thumb_height' : 0, 'thumb_width' : 0, 'workspace' : int (img_info['queue'][-1]['value'])} 
     2062                elif (temp_action == 'crop_hires'): 
     2063                        temp_source_dict = getSourceImageData('imgsuperres', True, dest_folder) 
     2064                        if (temp_source_dict is not None): 
     2065                                # calculate crop-values 
     2066                                temp_crop_info  = img_info['queue'][-1]['value'].split(',') 
     2067                                temp_max_dim            = temp_crop_info[-2:] 
     2068                                temp_crop_info  = calcCropValues(temp_crop_info[:4], temp_max_dim, (temp_source_dict['width'], temp_source_dict['height'])) 
     2069                                # crop thumb 
     2070                                temp_info = cropImage(dest_folder, temp_source_dict['filename'], temp_crop_info, temp_max_dim, True) 
     2071                                # reset edit-queue 
     2072                                img_info['queue'] = [{'action'          : 'crop_hires', 
     2073                                                                                                                        'value'                 : '%i,%i,%i,%i,%s,%s'%(temp_crop_info[0], temp_crop_info[1], temp_crop_info[2], temp_crop_info[3],  
     2074                                                                                                                                                                                                                                                                        temp_max_dim[0], temp_max_dim[1]), 
     2075                                                                                                                        'filename'      : temp_info[0], 
     2076                                                                                                                        'url'                   : '%s/%s'%(dest_folder.absolute_url(), temp_info[0]), 
     2077                                                                                                                        'width'                 : temp_info[1], 
     2078                                                                                                                        'height'                : temp_info[2]}] 
     2079                                 
     2080                                img_info = setThumbInfo(img_info) 
     2081                        else: 
     2082                                # delete crop-hires-action from edit-queue 
     2083                                img_info['queue'].pop() 
     2084                elif ((temp_action == 'workspace') or (temp_action == 'reset')): 
     2085                        temp_workspace_width = (temp_action == 'reset') and int (img_info['workspace']['width']) or int (img_info['queue'][-1]['value']) 
     2086                        temp_dims                                       = {'thumb_height' : 0, 'thumb_width' : 0, 'workspace' : temp_workspace_width} 
    19742087                         
    19752088                        temp_source_dict                                                                = {} 
     
    19782091                        temp_source_dict['imghires']            = getSourceImageData('imghires') 
    19792092                        temp_source_dict['imgsuperres'] = getSourceImageData('imgsuperres') 
    1980                         temp_source_dict                                                                = createTempImage(dest_folder, temp_source_dict, temp_dims) 
    1981                          
    1982                         img_info['queue'] = [{'action'          : 'create', 
     2093                        temp_source_dict                                                                = createTempImages(dest_folder, temp_source_dict, temp_dims) 
     2094                        # reset edit-queue 
     2095                        img_info['queue'] = [{'action'          : 'reset', 
    19832096                                                                                                                'value'                 : 'null', 
    19842097                                                                                                                'filename'      : temp_source_dict['act']['filename'], 
     
    19862099                                                                                                                'width'                 : temp_source_dict['act']['width'], 
    19872100                                                                                                                'height'                : temp_source_dict['act']['height']}] 
     2101                         
     2102                        img_info = setThumbInfo(img_info) 
     2103                elif (temp_action == 'drop_shadow'): 
     2104                        temp_info = context.ZMSGraphic_extEdit_dropShadow(dest_folder, img_info['queue'][-2]['filename'], unique_filename = True) 
     2105                         
     2106                        img_info['queue'][-1]['filename']       = temp_info[0] 
     2107                        img_info['queue'][-1]['url']                    = '%s/%s'%(dest_folder.absolute_url(), temp_info[0]) 
     2108                        img_info['queue'][-1]['width']          = temp_info[1] 
     2109                        img_info['queue'][-1]['height']         = temp_info[2] 
    19882110                         
    19892111                        img_info = setThumbInfo(img_info) 
     
    20652187         
    20662188        temp_image_dict                                                                 = {} 
    2067         temp_image_dict['img']                                  = None 
     2189        temp_image_dict['img']                                  = (img_info['thumb']['url'] != 'null') and getSourceImageData('img', True, dest_folder) or None 
     2190        temp_image_dict['imghires']                     = (img_info['queue'][0]['action'] == 'create') and getSourceImageData('imghires', True, dest_folder) or None 
    20682191        temp_image_dict['imgsuperres']  = getSourceImageData('imgsuperres', True, dest_folder) 
    20692192         
    2070         # create hires from superres 
    2071         if (temp_image_dict['imgsuperres'] is not None): 
    2072                 temp_size = calcResizeDim(temp_image_dict['imgsuperres']['width'], temp_image_dict['imgsuperres']['height'], img_info['workspace']['width']) 
    2073                 temp_info = context.ZMSGraphic_extEdit_resize(dest_folder, temp_image_dict['imgsuperres']['filename'], temp_size[0], temp_size[1]) 
    2074                  
    2075                 temp_image_dict['imghires'] = {} 
     2193        if (temp_image_dict['imghires'] is None): 
     2194                # create hires from superres 
     2195                if (temp_image_dict['imgsuperres'] is not None): 
     2196                        # crop hires from superres 
     2197                        if (img_info['queue'][0]['action'] == 'crop_hires'): 
     2198                                temp_crop_info  = img_info['queue'][0]['value'].split(',') 
     2199                                temp_info                       = cropImage(dest_folder, temp_image_dict['imgsuperres']['filename'], temp_crop_info[:4], temp_crop_info[-2:], True) 
     2200                        else: 
     2201                                temp_size = calcResizeDim(temp_image_dict['imgsuperres']['width'], temp_image_dict['imgsuperres']['height'], img_info['workspace']['width']) 
     2202                                temp_info = context.ZMSGraphic_extEdit_resize(dest_folder, temp_image_dict['imgsuperres']['filename'], temp_size[0], temp_size[1]) 
     2203                                 
     2204                        temp_image_dict['imghires'] = {} 
     2205                        temp_image_dict['imghires']['filename'] = temp_info[0] 
     2206                        temp_image_dict['imghires']['height']           = temp_info[2] 
     2207                        temp_image_dict['imghires']['width']            = temp_info[1] 
     2208        # crop hires from superres 
     2209        elif (img_info['queue'][0]['action'] == 'crop_hires'): 
     2210                temp_crop_info  = img_info['queue'][0]['value'].split(',') 
     2211                temp_info                       = cropImage(dest_folder, temp_image_dict['imgsuperres']['filename'], temp_crop_info[:4], temp_crop_info[-2:], True) 
     2212                 
    20762213                temp_image_dict['imghires']['filename'] = temp_info[0] 
    20772214                temp_image_dict['imghires']['height']           = temp_info[2] 
    20782215                temp_image_dict['imghires']['width']            = temp_info[1] 
    2079         else: 
    2080                 temp_image_dict['imghires'] = getSourceImageData('imghires', True, dest_folder) 
    20812216         
    20822217        if ((temp_image_dict['imghires'] is not None or temp_image_dict['imgsuperres'] is not None) and (img_info is not None)): 
     
    21152250                                        # reset action-list 
    21162251                                        temp_action_list = [] 
     2252                                elif (temp_action == 'drop_shadow'): 
     2253                                        temp_image_dict = doTranspose(temp_image_dict, temp_action_list) 
     2254                                        # draw drop-shadow 
     2255                                        temp_image_dict['imghires'] = setInfo(temp_image_dict['imghires'], context.ZMSGraphic_extEdit_dropShadow(dest_folder, temp_image_dict['imghires']['filename'], replace_source = True)) 
     2256                                        # reset action-list 
     2257                                        temp_action_list = [] 
    21172258                         
    21182259                        temp_image_dict = doTranspose(temp_image_dict, temp_action_list) 
    21192260                # create thumb                   
    21202261                if (img_info['thumb']['crop_box'] != 'null'): 
    2121                         temp_info = cropThumb(dest_folder, temp_image_dict['imghires']['filename'], img_info['thumb']['crop_box']) 
     2262                        temp_crop_info = img_info['thumb']['crop_box'].split(',') 
     2263                        temp_info = cropImage(dest_folder, temp_image_dict['imghires']['filename'], temp_crop_info[:4], temp_crop_info[-2:]) 
    21222264 
    21232265                        temp_image_dict['img']                                                  = {} 
     
    21252267                        temp_image_dict['img']['height']                = temp_info[2] 
    21262268                        temp_image_dict['img']['width']                 = temp_info[1] 
     2269                # draw drop shadow 
     2270                #if ((int (img_info['drop_shadow']) != 0) and (temp_image_dict['imghires'] is not None)): 
     2271                #       context.ZMSGraphic_extEdit_dropShadow(dest_folder, temp_image_dict['imghires']['filename'], replace_source = True) 
    21272272                 
    21282273                if (temp_image_dict['img'] is None): 
     
    21732318                 
    21742319                if ((temp_img_info is not None) and (len(temp_img_info['queue']) > 0)): 
    2175                         temp_img_info = handleEditQueue(temp_folder, temp_img_info) 
     2320                        temp_img_info = handleEditQueue(temp_folder, temp_img_info, temp_is_gallery) 
    21762321                         
    21772322                        temp_result = {'result' : 1, 'img_info' :  temp_img_info} 
     
    22092354                                temp_conf_dims['workspace']     = temp_max_workspace_width 
    22102355                         
    2211                 temp_source_dict = createTempImage(temp_folder, temp_source_dict, temp_conf_dims) 
     2356                temp_source_dict = createTempImages(temp_folder, temp_source_dict, temp_conf_dims, use_hires = True) 
    22122357                 
    22132358                REQUEST.set('filename', temp_source_dict['act']['filename']) 
     
    22372382</dictionary> 
    22382383</item> 
     2384<item type="dictionary"><dictionary> 
     2385<item key="custom"><![CDATA[from time import localtime, strftime 
     2386from PIL import Image, ImageFilter 
     2387from cStringIO import StringIO 
     2388import os.path 
     2389 
     2390def ZMSGraphic_extEdit_dropShadow(dest_folder, source_id, dest_id = None, replace_source = False, unique_filename = False, maintain_size = True,  
     2391                                                                                                                                        iterations = 3, border = 5, offset = (3, 3), background_color = 0xffffff, shadow_color = 0x444444): 
     2392        # image: base image to give a drop shadow 
     2393        # iterations: number of times to apply the blur filter to the shadow 
     2394        # border: border to give the image to leave space for the shadow 
     2395        # offset: offset of the shadow as [x,y] 
     2396        # background_color: color of the background 
     2397        # shadow_color: color of the drop shadow 
     2398         
     2399        if (dest_folder is not None): 
     2400                if (not source_id in dest_folder.objectIds()): 
     2401                        raise 'ZMSGraphic_extEdit_resize: can\'t find source-image' 
     2402                 
     2403                temp_source = getattr(dest_folder, source_id) 
     2404                temp_source = StringIO(str(temp_source.data)) 
     2405                 
     2406                temp_image = Image.open(temp_source) 
     2407                temp_image = temp_image.convert('RGB') 
     2408         
     2409                # calculate size of shadow image 
     2410                temp_dest_width  = maintain_size and temp_image.size[0] or temp_image.size[0] + abs(offset[0]) + 2 * border 
     2411                temp_dest_height = maintain_size and temp_image.size[1] or temp_image.size[1] + abs(offset[1]) + 2 * border 
     2412                # resize image if necessary 
     2413                if (maintain_size): 
     2414                        temp_image = temp_image.resize((temp_image.size[0] - abs(offset[0]) - 2 * border, temp_image.size[1] - abs(offset[1]) - 2 * border), Image.ANTIALIAS) 
     2415                # create shadow image 
     2416                temp_shadow = Image.new(temp_image.mode, (temp_dest_width, temp_dest_height), background_color) 
     2417                # place the shadow, with the required offset 
     2418                temp_left = border + max(offset[0], 0) #if <0, push the rest of the image right 
     2419                temp_top        = border + max(offset[1], 0) #if <0, push the rest of the image down 
     2420                # paste in constant color 
     2421                temp_shadow.paste(shadow_color,  
     2422                                                    [temp_left, temp_top, 
     2423                                                     temp_left + temp_image.size[0], 
     2424                                                     temp_top  + temp_image.size[1]]) 
     2425                # apply BLUR filter repeatedly 
     2426                for i in range(iterations): 
     2427                    temp_shadow = temp_shadow.filter(ImageFilter.BLUR) 
     2428                 
     2429                temp_image_size = temp_shadow.size 
     2430                 
     2431                # paste image on top of shadow  
     2432                temp_left = border - min(offset[0], 0) #if the shadow offset was <0, push right 
     2433                temp_top        = border - min(offset[1], 0) #if the shadow offset was <0, push down 
     2434                temp_shadow.paste(temp_image, (temp_left, temp_top)) 
     2435                 
     2436                temp_dest = StringIO() 
     2437                temp_shadow.save(temp_dest, "JPEG")  
     2438                temp_dest.seek(0) 
     2439                 
     2440                temp_path, temp_ext = os.path.splitext(source_id) 
     2441                temp_dest_id = (dest_id is None) and temp_path or dest_id 
     2442                if (not replace_source): 
     2443                        temp_dest_id += '_shadow' 
     2444                if (unique_filename): 
     2445                        temp_dest_id += '_%s'%strftime('%Y%m%d%H%M%S', localtime()) 
     2446                temp_dest_id += '.jpg'  
     2447                 
     2448                if (replace_source): 
     2449                        dest_folder.manage_delObjects(source_id) 
     2450                 
     2451                if (temp_dest_id in dest_folder.objectIds()): 
     2452                        dest_folder.manage_delObjects(temp_dest_id) 
     2453                 
     2454                dest_folder.manage_addImage(temp_dest_id, temp_dest) 
     2455                 
     2456                temp_result = (temp_dest_id, temp_image_size[0], temp_image_size[1]) 
     2457        else: 
     2458                temp_result = None 
     2459 
     2460        return temp_result]]></item> 
     2461<item key="id"><![CDATA[ZMSGraphic_extEdit_dropShadow]]></item> 
     2462<item key="mandatory" type="int">0</item> 
     2463<item key="multilang" type="int">0</item> 
     2464<item key="name"><![CDATA[ZMSGraphic_extEdit_dropShadow]]></item> 
     2465<item key="repetitive" type="int">0</item> 
     2466<item key="type"><![CDATA[External Method]]></item> 
     2467</dictionary> 
     2468</item> 
    22392469</list> 
    22402470</item> 
     
    22582488<item key="name"><![CDATA[ZMSGraphic_extEdit]]></item> 
    22592489<item key="package"><![CDATA[com.zms.zmsgraphic_extedit]]></item> 
    2260 <item key="revision"><![CDATA[1.0.3]]></item> 
     2490<item key="revision"><![CDATA[1.1.0]]></item> 
    22612491<item key="type"><![CDATA[ZMSLibrary]]></item> 
    22622492</dictionary> 
     
    22892519<item key="name"><![CDATA[com.zms.extensions]]></item> 
    22902520<item key="package"/> 
    2291 <item key="revision"><![CDATA[1.0.3]]></item> 
     2521<item key="revision"><![CDATA[1.1.0]]></item> 
    22922522<item key="type"><![CDATA[ZMSPackage]]></item> 
    22932523</dictionary> 
Note: See TracChangeset for help on using the changeset viewer.