From 7faadb69e262c2fbf05f0abe9e92cc4f6704e7e9 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Fri, 1 Nov 2024 00:12:03 +0100 Subject: [PATCH] =?UTF-8?q?Usuni=C4=99cie=20nieu=C5=BCywanych=20plik=C3=B3?= =?UTF-8?q?w=20konfiguracyjnych=20i=20CSS=20z=20mened=C5=BCera=20plik?= =?UTF-8?q?=C3=B3w=20oraz=20uproszczenie=20przetwarzania=20warto=C5=9Bci?= =?UTF-8?q?=20w=20klasach=20ShopProduct,=20Settings,=20Users,=20ShopPromot?= =?UTF-8?q?ion,=20ShopCoupon,=20ShopProductSets=20i=20Dictionaries.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- autoload/admin/controls/class.Articles.php | 12 +- autoload/admin/controls/class.Banners.php | 12 +- .../admin/controls/class.Dictionaries.php | 12 +- autoload/admin/controls/class.Languages.php | 24 +- autoload/admin/controls/class.Layouts.php | 12 +- autoload/admin/controls/class.Newsletter.php | 24 +- autoload/admin/controls/class.Pages.php | 24 +- autoload/admin/controls/class.Scontainers.php | 12 +- autoload/admin/controls/class.Settings.php | 12 +- .../admin/controls/class.ShopAttribute.php | 24 +- .../admin/controls/class.ShopCategory.php | 12 +- autoload/admin/controls/class.ShopCoupon.php | 12 +- .../admin/controls/class.ShopProducer.php | 12 +- autoload/admin/controls/class.ShopProduct.php | 12 +- .../admin/controls/class.ShopProductSets.php | 12 +- .../admin/controls/class.ShopPromotion.php | 12 +- .../admin/controls/class.ShopStatuses.php | 12 +- .../admin/controls/class.ShopTransport.php | 12 +- autoload/admin/controls/class.Users.php | 12 +- autoload/admin/factory/class.ShopProduct.php | 11 +- autoload/front/controls/class.ShopProduct.php | 12 +- .../filemanager-9.12.1/UploadHandler.php | 1543 --- libraries/filemanager-9.12.1/ajax_calls.php | 703 -- libraries/filemanager-9.12.1/config/.htaccess | 1 - .../filemanager-9.12.1/config/config.php | 450 - .../css/jquery.fileupload-noscript.css | 22 - .../css/jquery.fileupload-ui-noscript.css | 17 - .../css/jquery.fileupload-ui.css | 53 - .../css/jquery.fileupload.css | 37 - .../filemanager-9.12.1/css/rtl-style.css | Bin 6224 -> 0 bytes libraries/filemanager-9.12.1/css/style.css | 40 - libraries/filemanager-9.12.1/dialog.php | 1204 --- libraries/filemanager-9.12.1/execute.php | 528 - .../filemanager-9.12.1/force_download.php | 151 - .../img/clipboard_apply.png | Bin 189 -> 0 bytes .../img/clipboard_clear.png | Bin 195 -> 0 bytes libraries/filemanager-9.12.1/img/copy.png | Bin 238 -> 0 bytes libraries/filemanager-9.12.1/img/cut.png | Bin 173 -> 0 bytes libraries/filemanager-9.12.1/img/date.png | Bin 611 -> 0 bytes .../filemanager-9.12.1/img/dimension.png | Bin 489 -> 0 bytes libraries/filemanager-9.12.1/img/down.png | Bin 163 -> 0 bytes libraries/filemanager-9.12.1/img/download.png | Bin 674 -> 0 bytes .../filemanager-9.12.1/img/duplicate.png | Bin 245 -> 0 bytes libraries/filemanager-9.12.1/img/edit_img.png | Bin 673 -> 0 bytes .../filemanager-9.12.1/img/file_edit.png | Bin 764 -> 0 bytes .../img/glyphicons-halflings-white.png | Bin 8583 -> 0 bytes .../img/glyphicons-halflings.png | Bin 15602 -> 0 bytes libraries/filemanager-9.12.1/img/ico/ac3.jpg | Bin 1692 -> 0 bytes .../filemanager-9.12.1/img/ico/accdb.jpg | Bin 2613 -> 0 bytes libraries/filemanager-9.12.1/img/ico/ade.jpg | Bin 2290 -> 0 bytes libraries/filemanager-9.12.1/img/ico/adp.jpg | Bin 2290 -> 0 bytes libraries/filemanager-9.12.1/img/ico/ai.jpg | Bin 1776 -> 0 bytes libraries/filemanager-9.12.1/img/ico/aiff.jpg | Bin 1717 -> 0 bytes libraries/filemanager-9.12.1/img/ico/avi.jpg | Bin 1548 -> 0 bytes libraries/filemanager-9.12.1/img/ico/bmp.jpg | Bin 1979 -> 0 bytes libraries/filemanager-9.12.1/img/ico/c4d.jpg | Bin 6241 -> 0 bytes libraries/filemanager-9.12.1/img/ico/css.jpg | Bin 1722 -> 0 bytes libraries/filemanager-9.12.1/img/ico/csv.jpg | Bin 2558 -> 0 bytes .../filemanager-9.12.1/img/ico/default.jpg | Bin 1723 -> 0 bytes libraries/filemanager-9.12.1/img/ico/dmg.jpg | Bin 1579 -> 0 bytes libraries/filemanager-9.12.1/img/ico/doc.jpg | Bin 2511 -> 0 bytes libraries/filemanager-9.12.1/img/ico/docx.jpg | Bin 2511 -> 0 bytes libraries/filemanager-9.12.1/img/ico/dwg.jpg | Bin 5457 -> 0 bytes libraries/filemanager-9.12.1/img/ico/dxf.jpg | Bin 5419 -> 0 bytes .../filemanager-9.12.1/img/ico/favicon.ico | Bin 1150 -> 0 bytes libraries/filemanager-9.12.1/img/ico/fla.jpg | Bin 1859 -> 0 bytes libraries/filemanager-9.12.1/img/ico/flv.jpg | Bin 1806 -> 0 bytes .../filemanager-9.12.1/img/ico/folder.png | Bin 737 -> 0 bytes .../img/ico/folder_back.png | Bin 1128 -> 0 bytes libraries/filemanager-9.12.1/img/ico/gif.jpg | Bin 1979 -> 0 bytes libraries/filemanager-9.12.1/img/ico/gz.jpg | Bin 1718 -> 0 bytes libraries/filemanager-9.12.1/img/ico/html.jpg | Bin 2152 -> 0 bytes libraries/filemanager-9.12.1/img/ico/iso.jpg | Bin 1496 -> 0 bytes libraries/filemanager-9.12.1/img/ico/jpeg.jpg | Bin 1960 -> 0 bytes libraries/filemanager-9.12.1/img/ico/jpg.jpg | Bin 1979 -> 0 bytes libraries/filemanager-9.12.1/img/ico/log.jpg | Bin 1765 -> 0 bytes libraries/filemanager-9.12.1/img/ico/m4a.jpg | Bin 1529 -> 0 bytes libraries/filemanager-9.12.1/img/ico/mdb.jpg | Bin 2613 -> 0 bytes libraries/filemanager-9.12.1/img/ico/mid.jpg | Bin 1630 -> 0 bytes libraries/filemanager-9.12.1/img/ico/mov.jpg | Bin 1574 -> 0 bytes libraries/filemanager-9.12.1/img/ico/mp3.jpg | Bin 1555 -> 0 bytes libraries/filemanager-9.12.1/img/ico/mp4.jpg | Bin 1529 -> 0 bytes libraries/filemanager-9.12.1/img/ico/mpeg.jpg | Bin 1589 -> 0 bytes libraries/filemanager-9.12.1/img/ico/mpg.jpg | Bin 1532 -> 0 bytes libraries/filemanager-9.12.1/img/ico/odb.jpg | Bin 1748 -> 0 bytes libraries/filemanager-9.12.1/img/ico/odf.jpg | Bin 1760 -> 0 bytes libraries/filemanager-9.12.1/img/ico/odg.jpg | Bin 1748 -> 0 bytes libraries/filemanager-9.12.1/img/ico/odp.jpg | Bin 1760 -> 0 bytes libraries/filemanager-9.12.1/img/ico/ods.jpg | Bin 1748 -> 0 bytes libraries/filemanager-9.12.1/img/ico/odt.jpg | Bin 1748 -> 0 bytes libraries/filemanager-9.12.1/img/ico/ogg.jpg | Bin 1557 -> 0 bytes libraries/filemanager-9.12.1/img/ico/otg.jpg | Bin 1759 -> 0 bytes libraries/filemanager-9.12.1/img/ico/otp.jpg | Bin 1870 -> 0 bytes libraries/filemanager-9.12.1/img/ico/ots.jpg | Bin 1748 -> 0 bytes libraries/filemanager-9.12.1/img/ico/ott.jpg | Bin 1748 -> 0 bytes libraries/filemanager-9.12.1/img/ico/pdf.jpg | Bin 2050 -> 0 bytes libraries/filemanager-9.12.1/img/ico/png.jpg | Bin 1979 -> 0 bytes libraries/filemanager-9.12.1/img/ico/ppt.jpg | Bin 2386 -> 0 bytes libraries/filemanager-9.12.1/img/ico/pptx.jpg | Bin 2479 -> 0 bytes libraries/filemanager-9.12.1/img/ico/psd.jpg | Bin 2110 -> 0 bytes libraries/filemanager-9.12.1/img/ico/rar.jpg | Bin 1718 -> 0 bytes libraries/filemanager-9.12.1/img/ico/rtf.jpg | Bin 2511 -> 0 bytes libraries/filemanager-9.12.1/img/ico/skp.jpg | Bin 6347 -> 0 bytes libraries/filemanager-9.12.1/img/ico/sql.jpg | Bin 1695 -> 0 bytes libraries/filemanager-9.12.1/img/ico/stp.jpg | Bin 5539 -> 0 bytes libraries/filemanager-9.12.1/img/ico/svg.jpg | Bin 1979 -> 0 bytes libraries/filemanager-9.12.1/img/ico/tar.jpg | Bin 1747 -> 0 bytes libraries/filemanager-9.12.1/img/ico/tiff.jpg | Bin 1953 -> 0 bytes libraries/filemanager-9.12.1/img/ico/txt.jpg | Bin 1765 -> 0 bytes libraries/filemanager-9.12.1/img/ico/vwx.jpg | Bin 5463 -> 0 bytes libraries/filemanager-9.12.1/img/ico/wav.jpg | Bin 1557 -> 0 bytes libraries/filemanager-9.12.1/img/ico/webm.jpg | Bin 1548 -> 0 bytes libraries/filemanager-9.12.1/img/ico/wma.jpg | Bin 1548 -> 0 bytes .../filemanager-9.12.1/img/ico/xhtml.jpg | Bin 1920 -> 0 bytes libraries/filemanager-9.12.1/img/ico/xls.jpg | Bin 2691 -> 0 bytes libraries/filemanager-9.12.1/img/ico/xlsx.jpg | Bin 2539 -> 0 bytes libraries/filemanager-9.12.1/img/ico/xml.jpg | Bin 1714 -> 0 bytes libraries/filemanager-9.12.1/img/ico/zip.jpg | Bin 1718 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/ac3.jpg | Bin 3462 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/accdb.jpg | Bin 4130 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/ade.jpg | Bin 4126 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/adp.jpg | Bin 4126 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/ai.jpg | Bin 3416 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/aiff.jpg | Bin 3454 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/avi.jpg | Bin 3461 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/bmp.jpg | Bin 3754 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/css.jpg | Bin 3444 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/csv.jpg | Bin 4189 -> 0 bytes .../img/ico_dark/default.jpg | Bin 3783 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/dmg.jpg | Bin 3619 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/doc.jpg | Bin 4081 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/docx.jpg | Bin 4075 -> 0 bytes .../img/ico_dark/favicon.ico | Bin 1150 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/fla.jpg | Bin 3608 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/flv.jpg | Bin 3572 -> 0 bytes .../img/ico_dark/folder.png | Bin 535 -> 0 bytes .../img/ico_dark/folder_back.png | Bin 1128 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/gif.jpg | Bin 3754 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/gz.jpg | Bin 3372 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/html.jpg | Bin 3719 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/iso.jpg | Bin 3576 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/jpeg.jpg | Bin 3700 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/jpg.jpg | Bin 3754 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/log.jpg | Bin 3804 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/m4a.jpg | Bin 3379 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/mdb.jpg | Bin 4130 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/mid.jpg | Bin 3383 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/mov.jpg | Bin 3439 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/mp3.jpg | Bin 3335 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/mp4.jpg | Bin 3415 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/mpeg.jpg | Bin 3470 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/mpg.jpg | Bin 3459 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/odb.jpg | Bin 3581 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/odf.jpg | Bin 3590 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/odg.jpg | Bin 3581 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/odp.jpg | Bin 3590 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/ods.jpg | Bin 3581 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/odt.jpg | Bin 3581 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/ogg.jpg | Bin 3440 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/otg.jpg | Bin 3561 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/otp.jpg | Bin 3559 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/ots.jpg | Bin 3581 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/ott.jpg | Bin 3581 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/pdf.jpg | Bin 3705 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/png.jpg | Bin 3754 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/ppt.jpg | Bin 4035 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/pptx.jpg | Bin 4089 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/psd.jpg | Bin 3859 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/rar.jpg | Bin 3387 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/rtf.jpg | Bin 4081 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/sql.jpg | Bin 3766 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/svg.jpg | Bin 3754 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/tar.jpg | Bin 3346 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/tiff.jpg | Bin 3798 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/txt.jpg | Bin 3804 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/wav.jpg | Bin 3440 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/webm.jpg | Bin 3476 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/wma.jpg | Bin 3461 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/xhtml.jpg | Bin 3653 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/xls.jpg | Bin 4183 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/xlsx.jpg | Bin 4250 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/xml.jpg | Bin 3774 -> 0 bytes .../filemanager-9.12.1/img/ico_dark/zip.jpg | Bin 3372 -> 0 bytes libraries/filemanager-9.12.1/img/info.png | Bin 345 -> 0 bytes libraries/filemanager-9.12.1/img/key.png | Bin 185 -> 0 bytes libraries/filemanager-9.12.1/img/label.png | Bin 479 -> 0 bytes libraries/filemanager-9.12.1/img/loading.gif | Bin 1688 -> 0 bytes libraries/filemanager-9.12.1/img/logo.png | Bin 24774 -> 0 bytes libraries/filemanager-9.12.1/img/preview.png | Bin 376 -> 0 bytes .../filemanager-9.12.1/img/processing.gif | Bin 3209 -> 0 bytes libraries/filemanager-9.12.1/img/rename.png | Bin 262 -> 0 bytes libraries/filemanager-9.12.1/img/size.png | Bin 660 -> 0 bytes libraries/filemanager-9.12.1/img/sort.png | Bin 584 -> 0 bytes .../img/storing_animation.gif | Bin 3887 -> 0 bytes libraries/filemanager-9.12.1/img/trans.jpg | Bin 4024 -> 0 bytes libraries/filemanager-9.12.1/img/up.png | Bin 163 -> 0 bytes libraries/filemanager-9.12.1/img/upload.png | Bin 324 -> 0 bytes libraries/filemanager-9.12.1/img/url.png | Bin 593 -> 0 bytes libraries/filemanager-9.12.1/img/zip.png | Bin 819 -> 0 bytes .../filemanager-9.12.1/include/FtpClient.php | 884 -- .../include/FtpException.php | 20 - .../filemanager-9.12.1/include/FtpWrapper.php | 115 - .../filemanager-9.12.1/include/Response.php | 365 - .../filemanager-9.12.1/include/ftp_class.php | 82 - .../include/mime_type_lib.php | 265 - .../include/php_image_magician.php | 3963 -------- .../filemanager-9.12.1/include/utils.php | 1164 --- .../js/cors/jquery.postmessage-transport.js | 126 - .../js/cors/jquery.xdr-transport.js | 89 - libraries/filemanager-9.12.1/js/include.js | 2 - .../js/jPlayer/MIT-LICENSE.txt | 21 - .../filemanager-9.12.1/js/jPlayer/README.md | 32 - .../js/jPlayer/actionscript/Jplayer.as | 638 -- .../js/jPlayer/actionscript/Jplayer.fla | Bin 61952 -> 0 bytes .../happyworm/jPlayer/ConnectManager.as | 295 - .../happyworm/jPlayer/JplayerEvent.as | 68 - .../happyworm/jPlayer/JplayerMp3.as | 367 - .../happyworm/jPlayer/JplayerMp4.as | 412 - .../happyworm/jPlayer/JplayerRtmp.as | 983 -- .../happyworm/jPlayer/JplayerStatus.as | 110 - .../happyworm/jPlayer/TraceOut.as | 62 - .../js/jPlayer/add-on/jplayer.playlist.js | 496 - .../js/jPlayer/add-on/jplayer.playlist.min.js | 2 - .../add-on/jquery.jplayer.inspector.js | 338 - .../add-on/jquery.jplayer.inspector.min.js | 2 - .../js/jPlayer/jplayer.jquery.json | 33 - .../js/jPlayer/jplayer/jquery.jplayer.js | 3506 ------- .../js/jPlayer/jplayer/jquery.jplayer.min.js | 3 - .../js/jPlayer/jplayer/jquery.jplayer.swf | Bin 13714 -> 0 bytes .../js/jPlayer/jquery.jplayer/Jplayer.swf | Bin 14085 -> 0 bytes .../jPlayer/jquery.jplayer/jquery.jplayer.js | 2840 ------ .../js/jPlayer/package.json | 27 - .../js/jPlayer/popcorn/popcorn.jplayer.js | 579 -- .../js/jPlayer/popcorn/popcorn.jplayer.min.js | 2 - .../blue.monday/css/jplayer.blue.monday.css | 551 - .../css/jplayer.blue.monday.min.css | 1 - .../blue.monday/image/jplayer.blue.monday.jpg | Bin 23189 -> 0 bytes .../image/jplayer.blue.monday.seeking.gif | Bin 3284 -> 0 bytes .../image/jplayer.blue.monday.video.play.png | Bin 17692 -> 0 bytes .../skin/blue.monday/jplayer.blue.monday.css | 640 -- .../skin/blue.monday/jplayer.blue.monday.jpg | Bin 23189 -> 0 bytes .../jplayer.blue.monday.seeking.gif | Bin 3284 -> 0 bytes .../jplayer.blue.monday.video.play.png | Bin 17692 -> 0 bytes .../jplayer.blue.monday.audio.playlist.html | 42 - .../jplayer.blue.monday.audio.single.html | 37 - .../jplayer.blue.monday.audio.stream.html | 24 - .../jplayer.blue.monday.video.playlist.html | 52 - .../jplayer.blue.monday.video.single.html | 43 - .../jPlayer/skin/blue.monday/skin.handlebars | 40 - .../skin/pink.flag/css/jplayer.pink.flag.css | 572 -- .../pink.flag/css/jplayer.pink.flag.min.css | 1 - .../pink.flag/image/jplayer.pink.flag.jpg | Bin 18426 -> 0 bytes .../image/jplayer.pink.flag.seeking.gif | Bin 3284 -> 0 bytes .../image/jplayer.pink.flag.video.play.png | Bin 17692 -> 0 bytes .../jplayer.pink.flag.audio.playlist.html | 42 - .../jplayer.pink.flag.audio.single.html | 37 - .../jplayer.pink.flag.audio.stream.html | 24 - .../jplayer.pink.flag.video.playlist.html | 52 - .../jplayer.pink.flag.video.single.html | 43 - .../blue.monday/jplayer.blue.monday.css | 640 -- .../blue.monday/jplayer.blue.monday.jpg | Bin 23189 -> 0 bytes .../jplayer.blue.monday.seeking.gif | Bin 3284 -> 0 bytes .../jplayer.blue.monday.video.play.png | Bin 17692 -> 0 bytes .../skin_ol/blue.monday/skin.handlebars | 40 - .../skin_ol/pink.flag/jplayer.pink.flag.css | 670 -- .../skin_ol/pink.flag/jplayer.pink.flag.jpg | Bin 18426 -> 0 bytes .../pink.flag/jplayer.pink.flag.seeking.gif | Bin 3284 -> 0 bytes .../jplayer.pink.flag.video.play.png | Bin 17692 -> 0 bytes .../js/jquery.fileupload-angular.js | 437 - .../js/jquery.fileupload-audio.js | 113 - .../js/jquery.fileupload-image.js | 326 - .../js/jquery.fileupload-jquery-ui.js | 161 - .../js/jquery.fileupload-process.js | 178 - .../js/jquery.fileupload-ui.js | 714 -- .../js/jquery.fileupload-validate.js | 125 - .../js/jquery.fileupload-video.js | 113 - .../js/jquery.fileupload.js | 1482 --- .../js/jquery.iframe-transport.js | 224 - .../filemanager-9.12.1/js/modernizr.custom.js | 4 - libraries/filemanager-9.12.1/js/plugins.js | 8823 ----------------- .../js/vendor/jquery.ui.widget.js | 572 -- libraries/filemanager-9.12.1/lang/az_AZ.php | 143 - libraries/filemanager-9.12.1/lang/bg_BG.php | 143 - libraries/filemanager-9.12.1/lang/ca.php | 142 - libraries/filemanager-9.12.1/lang/cs.php | 143 - libraries/filemanager-9.12.1/lang/da.php | 143 - libraries/filemanager-9.12.1/lang/de.php | 143 - libraries/filemanager-9.12.1/lang/el_GR.php | 143 - libraries/filemanager-9.12.1/lang/en_EN.php | 142 - libraries/filemanager-9.12.1/lang/es.php | 143 - libraries/filemanager-9.12.1/lang/fa.php | 143 - libraries/filemanager-9.12.1/lang/fr_FR.php | 143 - libraries/filemanager-9.12.1/lang/he_IL.php | 144 - libraries/filemanager-9.12.1/lang/hr.php | 143 - libraries/filemanager-9.12.1/lang/hu_HU.php | 143 - libraries/filemanager-9.12.1/lang/id.php | 143 - libraries/filemanager-9.12.1/lang/it.php | 143 - libraries/filemanager-9.12.1/lang/ja.php | 143 - .../filemanager-9.12.1/lang/languages.php | 40 - libraries/filemanager-9.12.1/lang/lt.php | 143 - libraries/filemanager-9.12.1/lang/mn_MN.php | 143 - libraries/filemanager-9.12.1/lang/nb_NO.php | 143 - libraries/filemanager-9.12.1/lang/nl.php | 143 - libraries/filemanager-9.12.1/lang/pl.php | 143 - libraries/filemanager-9.12.1/lang/pt_BR.php | 143 - libraries/filemanager-9.12.1/lang/pt_PT.php | 143 - libraries/filemanager-9.12.1/lang/ro.php | 143 - libraries/filemanager-9.12.1/lang/ru.php | 142 - libraries/filemanager-9.12.1/lang/sk.php | 143 - libraries/filemanager-9.12.1/lang/sl.php | 143 - libraries/filemanager-9.12.1/lang/sv_SE.php | 143 - libraries/filemanager-9.12.1/lang/th_TH.php | 151 - libraries/filemanager-9.12.1/lang/tr_TR.php | 143 - libraries/filemanager-9.12.1/lang/uk_UA.php | 143 - libraries/filemanager-9.12.1/lang/vi.php | 143 - libraries/filemanager-9.12.1/lang/zh_CN.php | 143 - libraries/filemanager-9.12.1/plugin.min.js | 1 - libraries/filemanager-9.12.1/upload.php | 138 - libraries/filemanager-9.14.0/config/.htaccess | 1 - libraries/filemanager/config/.htaccess | 1 - libraries/grid/js/grid.js | 425 +- 321 files changed, 251 insertions(+), 44985 deletions(-) delete mode 100644 libraries/filemanager-9.12.1/UploadHandler.php delete mode 100644 libraries/filemanager-9.12.1/ajax_calls.php delete mode 100644 libraries/filemanager-9.12.1/config/.htaccess delete mode 100644 libraries/filemanager-9.12.1/config/config.php delete mode 100644 libraries/filemanager-9.12.1/css/jquery.fileupload-noscript.css delete mode 100644 libraries/filemanager-9.12.1/css/jquery.fileupload-ui-noscript.css delete mode 100644 libraries/filemanager-9.12.1/css/jquery.fileupload-ui.css delete mode 100644 libraries/filemanager-9.12.1/css/jquery.fileupload.css delete mode 100644 libraries/filemanager-9.12.1/css/rtl-style.css delete mode 100644 libraries/filemanager-9.12.1/css/style.css delete mode 100644 libraries/filemanager-9.12.1/dialog.php delete mode 100644 libraries/filemanager-9.12.1/execute.php delete mode 100644 libraries/filemanager-9.12.1/force_download.php delete mode 100644 libraries/filemanager-9.12.1/img/clipboard_apply.png delete mode 100644 libraries/filemanager-9.12.1/img/clipboard_clear.png delete mode 100644 libraries/filemanager-9.12.1/img/copy.png delete mode 100644 libraries/filemanager-9.12.1/img/cut.png delete mode 100644 libraries/filemanager-9.12.1/img/date.png delete mode 100644 libraries/filemanager-9.12.1/img/dimension.png delete mode 100644 libraries/filemanager-9.12.1/img/down.png delete mode 100644 libraries/filemanager-9.12.1/img/download.png delete mode 100644 libraries/filemanager-9.12.1/img/duplicate.png delete mode 100644 libraries/filemanager-9.12.1/img/edit_img.png delete mode 100644 libraries/filemanager-9.12.1/img/file_edit.png delete mode 100644 libraries/filemanager-9.12.1/img/glyphicons-halflings-white.png delete mode 100644 libraries/filemanager-9.12.1/img/glyphicons-halflings.png delete mode 100644 libraries/filemanager-9.12.1/img/ico/ac3.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/accdb.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/ade.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/adp.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/ai.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/aiff.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/avi.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/bmp.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/c4d.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/css.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/csv.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/default.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/dmg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/doc.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/docx.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/dwg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/dxf.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/favicon.ico delete mode 100644 libraries/filemanager-9.12.1/img/ico/fla.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/flv.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/folder.png delete mode 100644 libraries/filemanager-9.12.1/img/ico/folder_back.png delete mode 100644 libraries/filemanager-9.12.1/img/ico/gif.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/gz.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/html.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/iso.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/jpeg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/jpg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/log.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/m4a.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/mdb.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/mid.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/mov.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/mp3.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/mp4.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/mpeg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/mpg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/odb.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/odf.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/odg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/odp.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/ods.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/odt.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/ogg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/otg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/otp.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/ots.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/ott.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/pdf.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/png.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/ppt.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/pptx.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/psd.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/rar.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/rtf.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/skp.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/sql.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/stp.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/svg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/tar.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/tiff.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/txt.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/vwx.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/wav.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/webm.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/wma.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/xhtml.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/xls.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/xlsx.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/xml.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico/zip.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/ac3.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/accdb.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/ade.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/adp.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/ai.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/aiff.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/avi.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/bmp.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/css.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/csv.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/default.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/dmg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/doc.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/docx.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/favicon.ico delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/fla.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/flv.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/folder.png delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/folder_back.png delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/gif.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/gz.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/html.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/iso.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/jpeg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/jpg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/log.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/m4a.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/mdb.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/mid.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/mov.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/mp3.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/mp4.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/mpeg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/mpg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/odb.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/odf.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/odg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/odp.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/ods.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/odt.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/ogg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/otg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/otp.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/ots.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/ott.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/pdf.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/png.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/ppt.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/pptx.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/psd.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/rar.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/rtf.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/sql.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/svg.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/tar.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/tiff.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/txt.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/wav.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/webm.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/wma.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/xhtml.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/xls.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/xlsx.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/xml.jpg delete mode 100644 libraries/filemanager-9.12.1/img/ico_dark/zip.jpg delete mode 100644 libraries/filemanager-9.12.1/img/info.png delete mode 100644 libraries/filemanager-9.12.1/img/key.png delete mode 100644 libraries/filemanager-9.12.1/img/label.png delete mode 100644 libraries/filemanager-9.12.1/img/loading.gif delete mode 100644 libraries/filemanager-9.12.1/img/logo.png delete mode 100644 libraries/filemanager-9.12.1/img/preview.png delete mode 100644 libraries/filemanager-9.12.1/img/processing.gif delete mode 100644 libraries/filemanager-9.12.1/img/rename.png delete mode 100644 libraries/filemanager-9.12.1/img/size.png delete mode 100644 libraries/filemanager-9.12.1/img/sort.png delete mode 100644 libraries/filemanager-9.12.1/img/storing_animation.gif delete mode 100644 libraries/filemanager-9.12.1/img/trans.jpg delete mode 100644 libraries/filemanager-9.12.1/img/up.png delete mode 100644 libraries/filemanager-9.12.1/img/upload.png delete mode 100644 libraries/filemanager-9.12.1/img/url.png delete mode 100644 libraries/filemanager-9.12.1/img/zip.png delete mode 100644 libraries/filemanager-9.12.1/include/FtpClient.php delete mode 100644 libraries/filemanager-9.12.1/include/FtpException.php delete mode 100644 libraries/filemanager-9.12.1/include/FtpWrapper.php delete mode 100644 libraries/filemanager-9.12.1/include/Response.php delete mode 100644 libraries/filemanager-9.12.1/include/ftp_class.php delete mode 100644 libraries/filemanager-9.12.1/include/mime_type_lib.php delete mode 100644 libraries/filemanager-9.12.1/include/php_image_magician.php delete mode 100644 libraries/filemanager-9.12.1/include/utils.php delete mode 100644 libraries/filemanager-9.12.1/js/cors/jquery.postmessage-transport.js delete mode 100644 libraries/filemanager-9.12.1/js/cors/jquery.xdr-transport.js delete mode 100644 libraries/filemanager-9.12.1/js/include.js delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/MIT-LICENSE.txt delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/README.md delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/actionscript/Jplayer.as delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/actionscript/Jplayer.fla delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/ConnectManager.as delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerEvent.as delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerMp3.as delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerMp4.as delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerRtmp.as delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerStatus.as delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/TraceOut.as delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/add-on/jplayer.playlist.js delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/add-on/jplayer.playlist.min.js delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/add-on/jquery.jplayer.inspector.js delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/add-on/jquery.jplayer.inspector.min.js delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/jplayer.jquery.json delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.js delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.min.js delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.swf delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/jquery.jplayer/Jplayer.swf delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/jquery.jplayer/jquery.jplayer.js delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/package.json delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/popcorn/popcorn.jplayer.js delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/popcorn/popcorn.jplayer.min.js delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/css/jplayer.blue.monday.css delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/css/jplayer.blue.monday.min.css delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/image/jplayer.blue.monday.jpg delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/image/jplayer.blue.monday.seeking.gif delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/image/jplayer.blue.monday.video.play.png delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.css delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.jpg delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.seeking.gif delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.video.play.png delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.playlist.html delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.single.html delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.stream.html delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.video.playlist.html delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.video.single.html delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/skin.handlebars delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/css/jplayer.pink.flag.css delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/css/jplayer.pink.flag.min.css delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/image/jplayer.pink.flag.jpg delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/image/jplayer.pink.flag.seeking.gif delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/image/jplayer.pink.flag.video.play.png delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.playlist.html delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.single.html delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.stream.html delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.video.playlist.html delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.video.single.html delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.css delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.jpg delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.seeking.gif delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.video.play.png delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/skin.handlebars delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.css delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.jpg delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.seeking.gif delete mode 100644 libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.video.play.png delete mode 100644 libraries/filemanager-9.12.1/js/jquery.fileupload-angular.js delete mode 100644 libraries/filemanager-9.12.1/js/jquery.fileupload-audio.js delete mode 100644 libraries/filemanager-9.12.1/js/jquery.fileupload-image.js delete mode 100644 libraries/filemanager-9.12.1/js/jquery.fileupload-jquery-ui.js delete mode 100644 libraries/filemanager-9.12.1/js/jquery.fileupload-process.js delete mode 100644 libraries/filemanager-9.12.1/js/jquery.fileupload-ui.js delete mode 100644 libraries/filemanager-9.12.1/js/jquery.fileupload-validate.js delete mode 100644 libraries/filemanager-9.12.1/js/jquery.fileupload-video.js delete mode 100644 libraries/filemanager-9.12.1/js/jquery.fileupload.js delete mode 100644 libraries/filemanager-9.12.1/js/jquery.iframe-transport.js delete mode 100644 libraries/filemanager-9.12.1/js/modernizr.custom.js delete mode 100644 libraries/filemanager-9.12.1/js/plugins.js delete mode 100644 libraries/filemanager-9.12.1/js/vendor/jquery.ui.widget.js delete mode 100644 libraries/filemanager-9.12.1/lang/az_AZ.php delete mode 100644 libraries/filemanager-9.12.1/lang/bg_BG.php delete mode 100644 libraries/filemanager-9.12.1/lang/ca.php delete mode 100644 libraries/filemanager-9.12.1/lang/cs.php delete mode 100644 libraries/filemanager-9.12.1/lang/da.php delete mode 100644 libraries/filemanager-9.12.1/lang/de.php delete mode 100644 libraries/filemanager-9.12.1/lang/el_GR.php delete mode 100644 libraries/filemanager-9.12.1/lang/en_EN.php delete mode 100644 libraries/filemanager-9.12.1/lang/es.php delete mode 100644 libraries/filemanager-9.12.1/lang/fa.php delete mode 100644 libraries/filemanager-9.12.1/lang/fr_FR.php delete mode 100644 libraries/filemanager-9.12.1/lang/he_IL.php delete mode 100644 libraries/filemanager-9.12.1/lang/hr.php delete mode 100644 libraries/filemanager-9.12.1/lang/hu_HU.php delete mode 100644 libraries/filemanager-9.12.1/lang/id.php delete mode 100644 libraries/filemanager-9.12.1/lang/it.php delete mode 100644 libraries/filemanager-9.12.1/lang/ja.php delete mode 100644 libraries/filemanager-9.12.1/lang/languages.php delete mode 100644 libraries/filemanager-9.12.1/lang/lt.php delete mode 100644 libraries/filemanager-9.12.1/lang/mn_MN.php delete mode 100644 libraries/filemanager-9.12.1/lang/nb_NO.php delete mode 100644 libraries/filemanager-9.12.1/lang/nl.php delete mode 100644 libraries/filemanager-9.12.1/lang/pl.php delete mode 100644 libraries/filemanager-9.12.1/lang/pt_BR.php delete mode 100644 libraries/filemanager-9.12.1/lang/pt_PT.php delete mode 100644 libraries/filemanager-9.12.1/lang/ro.php delete mode 100644 libraries/filemanager-9.12.1/lang/ru.php delete mode 100644 libraries/filemanager-9.12.1/lang/sk.php delete mode 100644 libraries/filemanager-9.12.1/lang/sl.php delete mode 100644 libraries/filemanager-9.12.1/lang/sv_SE.php delete mode 100644 libraries/filemanager-9.12.1/lang/th_TH.php delete mode 100644 libraries/filemanager-9.12.1/lang/tr_TR.php delete mode 100644 libraries/filemanager-9.12.1/lang/uk_UA.php delete mode 100644 libraries/filemanager-9.12.1/lang/vi.php delete mode 100644 libraries/filemanager-9.12.1/lang/zh_CN.php delete mode 100644 libraries/filemanager-9.12.1/plugin.min.js delete mode 100644 libraries/filemanager-9.12.1/upload.php delete mode 100644 libraries/filemanager-9.14.0/config/.htaccess delete mode 100644 libraries/filemanager/config/.htaccess diff --git a/autoload/admin/controls/class.Articles.php b/autoload/admin/controls/class.Articles.php index b5d8380..376df2d 100644 --- a/autoload/admin/controls/class.Articles.php +++ b/autoload/admin/controls/class.Articles.php @@ -27,17 +27,7 @@ class Articles public static function article_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania artykułu wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\Articles::article_save( $values['id'], $values['title'], $values['main_image'], $values['entry'], $values['text'], $values['table_of_contents'], $values['status'], $values['show_title'], $values['show_table_of_contents'], $values['show_date_add'], $values['date_add'], $values['show_date_modify'], $values['date_modify'], $values['seo_link'], $values['meta_title'], diff --git a/autoload/admin/controls/class.Banners.php b/autoload/admin/controls/class.Banners.php index 54ec06d..4914355 100644 --- a/autoload/admin/controls/class.Banners.php +++ b/autoload/admin/controls/class.Banners.php @@ -15,17 +15,7 @@ class Banners public static function banner_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania baneru wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $banner_id = \admin\factory\Banners::banner_save( $values['id'], $values['name'], $values['status'], $values['date_start'], $values['date_end'], $values['home_page'], $values['src'], $values['url'], $values['html'], $values['text'] ) ) diff --git a/autoload/admin/controls/class.Dictionaries.php b/autoload/admin/controls/class.Dictionaries.php index 7f47ae9..365795f 100644 --- a/autoload/admin/controls/class.Dictionaries.php +++ b/autoload/admin/controls/class.Dictionaries.php @@ -18,17 +18,7 @@ class Dictionaries { static public function unit_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania jednostki miary wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\Dictionaries::unit_save( $values['id'], $values['text']) ) $response = [ 'status' => 'ok', 'msg' => 'Jednostka miary została zapisana.', 'id' => $id ]; diff --git a/autoload/admin/controls/class.Languages.php b/autoload/admin/controls/class.Languages.php index ef3c8e3..e282212 100644 --- a/autoload/admin/controls/class.Languages.php +++ b/autoload/admin/controls/class.Languages.php @@ -14,17 +14,7 @@ class Languages public static function language_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania języka wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( \admin\factory\Languages::language_save( $values['id'], $values['name'], $values['status'], @@ -60,17 +50,7 @@ class Languages public static function translation_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania tłumaczenia wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); $languages_list = \admin\factory\Languages::languages_list(); if ( is_array( $languages_list ) and !empty( $languages_list ) ) foreach ( $languages_list as $language ) diff --git a/autoload/admin/controls/class.Layouts.php b/autoload/admin/controls/class.Layouts.php index a8ed88a..9325906 100644 --- a/autoload/admin/controls/class.Layouts.php +++ b/autoload/admin/controls/class.Layouts.php @@ -14,17 +14,7 @@ class Layouts public static function layout_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania szablonu wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\Layouts::layout_save( $values['id'], $values['name'], $values['status'], $values['pages'], $values['html'], $values['css'], $values['js'], $values['m_html'], $values['m_css'], $values['m_js'], $values['categories'], $values['categories_default'] ) diff --git a/autoload/admin/controls/class.Newsletter.php b/autoload/admin/controls/class.Newsletter.php index 242a80c..17ebe58 100644 --- a/autoload/admin/controls/class.Newsletter.php +++ b/autoload/admin/controls/class.Newsletter.php @@ -27,17 +27,7 @@ class Newsletter public static function settings_save() { $settings = \admin\factory\Settings::settings_details(); - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); \admin\factory\Settings::settings_update( 'newsletter_footer', $values['newsletter_footer'] ); \admin\factory\Settings::settings_update( 'newsletter_header', $values['newsletter_header'] ); @@ -91,17 +81,7 @@ class Newsletter public static function template_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\Newsletter::template_save( $values['id'], $values['name'], $values['text'] ) ) $response = [ 'status' => 'ok', 'msg' => 'Zmiany zostały zapisane.', 'id' => $id ]; diff --git a/autoload/admin/controls/class.Pages.php b/autoload/admin/controls/class.Pages.php index 9ed6105..4ec7b89 100644 --- a/autoload/admin/controls/class.Pages.php +++ b/autoload/admin/controls/class.Pages.php @@ -46,17 +46,7 @@ class Pages public static function page_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania strony wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\Pages::page_save( $values['id'], $values['title'], $values['seo_link'], $values['meta_title'], $values['meta_description'], $values['meta_keywords'], $values['menu_id'], $values['parent_id'], $values['page_type'], @@ -84,17 +74,7 @@ class Pages public static function menu_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania menu wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( \admin\factory\Pages::menu_save( $values['id'], $values['name'], $values['status'] ) ) $response = [ 'status' => 'ok', 'msg' => 'Menu zostało zapisane.' ]; diff --git a/autoload/admin/controls/class.Scontainers.php b/autoload/admin/controls/class.Scontainers.php index 7163f53..3fa2279 100644 --- a/autoload/admin/controls/class.Scontainers.php +++ b/autoload/admin/controls/class.Scontainers.php @@ -14,17 +14,7 @@ class Scontainers public static function container_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania kontenera wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\Scontainers::container_save( $values['id'], $values['title'], $values['text'], $values['status'], $values['show_title'] ) ) $response = [ 'status' => 'ok', 'msg' => 'Kontener został zapisany.', 'id' => $id ]; diff --git a/autoload/admin/controls/class.Settings.php b/autoload/admin/controls/class.Settings.php index 4e35bd0..23fbdbc 100644 --- a/autoload/admin/controls/class.Settings.php +++ b/autoload/admin/controls/class.Settings.php @@ -5,17 +5,7 @@ class Settings { public static function settings_save() { - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); $settings = \admin\factory\Settings::settings_details( true ); diff --git a/autoload/admin/controls/class.ShopAttribute.php b/autoload/admin/controls/class.ShopAttribute.php index db14345..ec7e043 100644 --- a/autoload/admin/controls/class.ShopAttribute.php +++ b/autoload/admin/controls/class.ShopAttribute.php @@ -17,18 +17,8 @@ class ShopAttribute static public function values_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania wartości atrybutu wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); + $values = json_decode( \S::get( 'values' ), true ); - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } -; if ( $id = \admin\factory\ShopAttribute::values_save( (int) \S::get( 'attribute_id' ), $values['name'], $values['value'], $values['ids'], $values['default_value'], $values['impact_on_the_price'] ) ) $response = [ 'status' => 'ok', 'msg' => 'Wartości atrybutu zostały zapisane.', 'id' => $id ]; @@ -57,17 +47,7 @@ class ShopAttribute public static function attribute_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania atrybutu wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\ShopAttribute::attribute_save( (int) $values['id'], $values['name'], $values['status'] == 'on' ? 1 : 0, (int) $values['type'], (int) $values['o'] ) ) $response = [ 'status' => 'ok', 'msg' => 'Atrybut został zapisany.', 'id' => $id ]; diff --git a/autoload/admin/controls/class.ShopCategory.php b/autoload/admin/controls/class.ShopCategory.php index 61c0fcf..f3dd42f 100644 --- a/autoload/admin/controls/class.ShopCategory.php +++ b/autoload/admin/controls/class.ShopCategory.php @@ -32,17 +32,7 @@ class ShopCategory static public function save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania kategorii wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\ShopCategory::save( $values['id'], $values['title'], $values['text'], $values['text_hidden'], $values['seo_link'], $values['meta_title'], $values['meta_description'], $values['meta_keywords'], $values['parent_id'], $values['status'], diff --git a/autoload/admin/controls/class.ShopCoupon.php b/autoload/admin/controls/class.ShopCoupon.php index 19f8cc5..2ce1ea2 100644 --- a/autoload/admin/controls/class.ShopCoupon.php +++ b/autoload/admin/controls/class.ShopCoupon.php @@ -15,17 +15,7 @@ class ShopCoupon public static function coupon_save() { $response = ['status' => 'error', 'msg' => 'Podczas zapisywania kuponu wystąpił błąd. Proszę spróbować ponownie.']; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $values['categories'] != null ) $categories = is_array( $values['categories'] ) ? json_encode( $values['categories'] ) : json_encode( [ $values['categories'] ] ); diff --git a/autoload/admin/controls/class.ShopProducer.php b/autoload/admin/controls/class.ShopProducer.php index 31182ce..932cbc1 100644 --- a/autoload/admin/controls/class.ShopProducer.php +++ b/autoload/admin/controls/class.ShopProducer.php @@ -13,17 +13,7 @@ class ShopProducer static public function save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania producenta wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $producer_id = \admin\factory\ShopProducer::save( $values['id'], $values['name'], $values['status'] == 'on' ? 1 : 0, $values['img'], $values['description'], $values['meta_title'] ) ) $response = [ 'status' => 'ok', 'msg' => 'Producent został zapisany.', 'id' => $producer_id ]; diff --git a/autoload/admin/controls/class.ShopProduct.php b/autoload/admin/controls/class.ShopProduct.php index 7373090..71e2ba4 100644 --- a/autoload/admin/controls/class.ShopProduct.php +++ b/autoload/admin/controls/class.ShopProduct.php @@ -180,17 +180,7 @@ class ShopProduct public static function save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania produktu wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\ShopProduct::save( $values['id'], $values['name'], $values['short_description'], $values['description'], $values['status'], $values['meta_description'], $values['meta_keywords'], $values['seo_link'], diff --git a/autoload/admin/controls/class.ShopProductSets.php b/autoload/admin/controls/class.ShopProductSets.php index 4514bc4..757a2d5 100644 --- a/autoload/admin/controls/class.ShopProductSets.php +++ b/autoload/admin/controls/class.ShopProductSets.php @@ -16,17 +16,7 @@ class ShopProductSets static public function save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania kompletu produktów wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\ShopProductSet::save( (int)$values['id'], $values['name'], (string) $values['status'], $values['set_products_id'] diff --git a/autoload/admin/controls/class.ShopPromotion.php b/autoload/admin/controls/class.ShopPromotion.php index 3ce3e67..ae27a20 100644 --- a/autoload/admin/controls/class.ShopPromotion.php +++ b/autoload/admin/controls/class.ShopPromotion.php @@ -17,17 +17,7 @@ class ShopPromotion static public function save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania promocji wystąpił błąd. Proszę spróbować ponownie' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\ShopPromotion::save( $values['id'], diff --git a/autoload/admin/controls/class.ShopStatuses.php b/autoload/admin/controls/class.ShopStatuses.php index 23331b4..fa14645 100644 --- a/autoload/admin/controls/class.ShopStatuses.php +++ b/autoload/admin/controls/class.ShopStatuses.php @@ -7,17 +7,7 @@ class ShopStatuses { public static function status_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania statusu wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\ShopStatuses::status_save( $values['id'], $values['color'], $values['apilo_status_id'], $values['sellasist_status_id'], $values['baselinker_status_id'] ) ) $response = [ 'status' => 'ok', 'msg' => 'Status został zapisany.', 'id' => $id ]; diff --git a/autoload/admin/controls/class.ShopTransport.php b/autoload/admin/controls/class.ShopTransport.php index 443dcf5..cbe05fb 100644 --- a/autoload/admin/controls/class.ShopTransport.php +++ b/autoload/admin/controls/class.ShopTransport.php @@ -5,17 +5,7 @@ class ShopTransport public static function transport_save() { $response = [ 'status' => 'error', 'msg' => 'Podczas zapisywania rodzaju transportu wystąpił błąd. Proszę spróbować ponownie.' ]; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); if ( $id = \admin\factory\ShopTransport::transport_save( $values['id'], $values['name'], $values['name_visible'], $values['description'], $values['status'], $values['cost'], $values['payment_methods'], $values['max_wp'], $values['default'], $values['apilo_carrier_account_id'], $values['sellasist_shipment_method_id'], $values['delivery_free'] diff --git a/autoload/admin/controls/class.Users.php b/autoload/admin/controls/class.Users.php index 25a1af0..45e6994 100644 --- a/autoload/admin/controls/class.Users.php +++ b/autoload/admin/controls/class.Users.php @@ -13,17 +13,7 @@ class Users public static function user_save() { - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); $response = \admin\factory\Users::user_save( $values['id'], $values['login'], $values['status'], $values['password'], $values['password_re'], $values['admin'] ); echo json_encode( $response ); diff --git a/autoload/admin/factory/class.ShopProduct.php b/autoload/admin/factory/class.ShopProduct.php index c372c3f..0c57f4a 100644 --- a/autoload/admin/factory/class.ShopProduct.php +++ b/autoload/admin/factory/class.ShopProduct.php @@ -1108,11 +1108,12 @@ class ShopProduct { $order = self::max_order() + 1; - $mdb -> insert('pp_shop_products_categories', [ - 'product_id' => (int) $product_id, - 'category_id' => (int) $category, - 'o' => (int) $order, - ]); + if ( $product_id and $category ) + $mdb -> insert( 'pp_shop_products_categories', [ + 'product_id' => (int)$product_id, + 'category_id' => (int)$category, + 'o' => (int) $order, + ] ); } } diff --git a/autoload/front/controls/class.ShopProduct.php b/autoload/front/controls/class.ShopProduct.php index ffe7e2a..26e55bb 100644 --- a/autoload/front/controls/class.ShopProduct.php +++ b/autoload/front/controls/class.ShopProduct.php @@ -26,17 +26,7 @@ class ShopProduct { global $lang_id; - $values_tmp = json_decode( \S::get( 'values' ), true ); - - $values = []; - - foreach ( $values_tmp as $item ) - { - $name = $item['name']; - $value = $item['value']; - $keys = \S::parse_name( $name ); - \S::set_array_value( $values, $keys, $value ); - } + $values = json_decode( \S::get( 'values' ), true ); foreach( $values as $key => $val ) { diff --git a/libraries/filemanager-9.12.1/UploadHandler.php b/libraries/filemanager-9.12.1/UploadHandler.php deleted file mode 100644 index b9424ea..0000000 --- a/libraries/filemanager-9.12.1/UploadHandler.php +++ /dev/null @@ -1,1543 +0,0 @@ - 'The uploaded file exceeds the upload_max_filesize directive in php.ini', - 2 => 'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form', - 3 => 'The uploaded file was only partially uploaded', - 4 => 'No file was uploaded', - 6 => 'Missing a temporary folder', - 7 => 'Failed to write file to disk', - 8 => 'A PHP extension stopped the file upload', - 'post_max_size' => 'The uploaded file exceeds the post_max_size directive in php.ini', - 'max_file_size' => 'File is too big', - 'min_file_size' => 'File is too small', - 'accept_file_types' => 'Filetype not allowed', - 'max_number_of_files' => 'Maximum number of files exceeded', - 'max_width' => 'Image exceeds maximum width', - 'min_width' => 'Image requires a minimum width', - 'max_height' => 'Image exceeds maximum height', - 'min_height' => 'Image requires a minimum height', - 'abort' => 'File upload aborted', - 'image_resize' => 'Failed to resize image' - ); - - protected $image_objects = array(); - - public function __construct($options = null, $initialize = true, $error_messages = null) { - $this->response = array(); - $this->options = array( - 'script_url' => $this->get_full_url().'/'.$this->basename($this->get_server_var('SCRIPT_NAME')), - 'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/files/', - 'upload_url' => $this->get_full_url().'/files/', - 'input_stream' => 'php://input', - 'user_dirs' => false, - 'mkdir_mode' => 0777, - 'param_name' => 'files', - // Set the following option to 'POST', if your server does not support - // DELETE requests. This is a parameter sent to the client: - 'delete_type' => 'DELETE', - 'access_control_allow_origin' => '*', - 'access_control_allow_credentials' => false, - 'access_control_allow_methods' => array( - 'OPTIONS', - 'HEAD', - 'GET', - 'POST', - 'PUT', - 'PATCH', - 'DELETE' - ), - 'access_control_allow_headers' => array( - 'Content-Type', - 'Content-Range', - 'Content-Disposition' - ), - // By default, allow redirects to the referer protocol+host: - 'redirect_allow_target' => '/^'.preg_quote( - parse_url($this->get_server_var('HTTP_REFERER'), PHP_URL_SCHEME) - .'://' - .parse_url($this->get_server_var('HTTP_REFERER'), PHP_URL_HOST) - .'/', // Trailing slash to not match subdomains by mistake - '/' // preg_quote delimiter param - ).'/', - // Enable to provide file downloads via GET requests to the PHP script: - // 1. Set to 1 to download files via readfile method through PHP - // 2. Set to 2 to send a X-Sendfile header for lighttpd/Apache - // 3. Set to 3 to send a X-Accel-Redirect header for nginx - // If set to 2 or 3, adjust the upload_url option to the base path of - // the redirect parameter, e.g. '/files/'. - 'download_via_php' => false, - // Read files in chunks to avoid memory limits when download_via_php - // is enabled, set to 0 to disable chunked reading of files: - 'readfile_chunk_size' => 2 * 1024 * 1024, // 10 MiB - // Defines which files can be displayed inline when downloaded: - 'inline_file_types' => '/\.(gif|jpe?g|png)$/i', - // Defines which files (based on their names) are accepted for upload: - 'accept_file_types' => '/.+$/i', - // The php.ini settings upload_max_filesize and post_max_size - // take precedence over the following max_file_size setting: - 'max_file_size' => null, - 'min_file_size' => 1, - // The maximum number of files for the upload directory: - 'max_number_of_files' => null, - // Defines which files are handled as image files: - 'image_file_types' => '/\.(gif|jpe?g|png)$/i', - // Use exif_imagetype on all files to correct file extensions: - 'correct_image_extensions' => true, - // Image resolution restrictions: - 'max_width' => null, - 'max_height' => null, - 'min_width' => 1, - 'min_height' => 1, - // Set the following option to false to enable resumable uploads: - 'discard_aborted_uploads' => true, - // Set to 0 to use the GD library to scale and orient images, - // set to 1 to use imagick (if installed, falls back to GD), - // set to 2 to use the ImageMagick convert binary directly: - 'image_library' => 1, - // Uncomment the following to define an array of resource limits - // for imagick: - /* - 'imagick_resource_limits' => array( - imagick::RESOURCETYPE_MAP => 32, - imagick::RESOURCETYPE_MEMORY => 32 - ), - */ - // Command or path for to the ImageMagick convert binary: - 'convert_bin' => 'convert', - // Uncomment the following to add parameters in front of each - // ImageMagick convert call (the limit constraints seem only - // to have an effect if put in front): - /* - 'convert_params' => '-limit memory 32MiB -limit map 32MiB', - */ - // Command or path for to the ImageMagick identify binary: - 'identify_bin' => 'identify', - 'image_versions' => array( - // The empty image version key defines options for the original image: - // Keep in mind that these options are inherited by all other image versions! - '' => array( - // Automatically rotate images based on EXIF meta data: - 'auto_orient' => true - ), - // Uncomment the following to create medium sized images: - /* - 'medium' => array( - 'max_width' => 800, - 'max_height' => 600 - ), - 'thumbnail' => array( - // Uncomment the following to use a defined directory for the thumbnails - // instead of a subdirectory based on the version identifier. - // Make sure that this directory doesn't allow execution of files if you - // don't pose any restrictions on the type of uploaded files, e.g. by - // copying the .htaccess file from the files directory for Apache: - //'upload_dir' => dirname($this->get_server_var('SCRIPT_FILENAME')).'/thumb/', - 'upload_url' => $this->get_full_url().'/thumb/', - // Uncomment the following to force the max - // dimensions and e.g. create square thumbnails: - 'crop' => true, - 'max_width' => 80, - 'max_height' => 80 - ) - */ - ), - 'print_response' => true - ); - if ($options) { - $this->options = $options + $this->options; - } - if ($error_messages) { - $this->error_messages = $error_messages + $this->error_messages; - } - if ($initialize) { - $this->initialize(); - } - } - - protected function initialize() { - switch ($this->get_server_var('REQUEST_METHOD')) { - case 'OPTIONS': - case 'HEAD': - $this->head(); - break; - case 'GET': - $this->get($this->options['print_response']); - break; - case 'PATCH': - case 'PUT': - case 'POST': - $this->post($this->options['print_response']); - break; - case 'DELETE': - $this->delete($this->options['print_response']); - break; - default: - $this->header('HTTP/1.1 405 Method Not Allowed'); - } - } - - protected function get_full_url() { - $https = !empty($_SERVER['HTTPS']) && strcasecmp($_SERVER['HTTPS'], 'on') === 0 || - !empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && - strcasecmp($_SERVER['HTTP_X_FORWARDED_PROTO'], 'https') === 0; - return - ($https ? 'https://' : 'http://'). - (!empty($_SERVER['REMOTE_USER']) ? $_SERVER['REMOTE_USER'].'@' : ''). - (isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : ($_SERVER['SERVER_NAME']. - ($https && $_SERVER['SERVER_PORT'] === 443 || - $_SERVER['SERVER_PORT'] === 80 ? '' : ':'.$_SERVER['SERVER_PORT']))). - substr($_SERVER['SCRIPT_NAME'],0, strrpos($_SERVER['SCRIPT_NAME'], '/')); - } - - protected function get_user_id() { - @session_start(); - return session_id(); - } - - protected function get_user_path() { - if ($this->options['user_dirs']) { - return $this->get_user_id().'/'; - } - return ''; - } - - protected function get_upload_path($file_name = null, $version = null) { - $file_name = $file_name ? $file_name : ''; - if (empty($version)) { - $version_path = ''; - } else { - $version_dir = @$this->options['image_versions'][$version]['upload_dir']; - if ($version_dir) { - return $version_dir.$this->get_user_path().$file_name; - } - $version_path = $version.'/'; - } - return $this->options['upload_dir'].$this->get_user_path() - .$version_path.$file_name; - } - - protected function get_query_separator($url) { - return strpos($url, '?') === false ? '?' : '&'; - } - - protected function get_download_url($file_name, $version = null, $direct = false) { - if (!$direct && $this->options['download_via_php']) { - $url = $this->options['script_url'] - .$this->get_query_separator($this->options['script_url']) - .$this->get_singular_param_name() - .'='.rawurlencode($file_name); - if ($version) { - $url .= '&version='.rawurlencode($version); - } - return $url.'&download=1'; - } - if (empty($version)) { - $version_path = ''; - } else { - $version_url = @$this->options['image_versions'][$version]['upload_url']; - if ($version_url) { - return $version_url.$this->get_user_path().rawurlencode($file_name); - } - $version_path = rawurlencode($version).'/'; - } - return $this->options['upload_url'].$this->get_user_path() - .$version_path.rawurlencode($file_name); - } - - protected function set_additional_file_properties($file) { - $file->deleteUrl = $this->options['script_url'] - .$this->get_query_separator($this->options['script_url']) - .$this->get_singular_param_name() - .'='.rawurlencode($file->name); - $file->deleteType = $this->options['delete_type']; - if ($file->deleteType !== 'DELETE') { - $file->deleteUrl .= '&_method=DELETE'; - } - if ($this->options['access_control_allow_credentials']) { - $file->deleteWithCredentials = true; - } - } - - // Fix for overflowing signed 32 bit integers, - // works for sizes up to 2^32-1 bytes (4 GiB - 1): - protected function fix_integer_overflow($size) { - if ($size < 0) { - $size += 2.0 * (PHP_INT_MAX + 1); - } - return $size; - } - - protected function get_file_size($file_path, $clear_stat_cache = false) { - if ($clear_stat_cache) { - if (version_compare(PHP_VERSION, '5.3.0') >= 0) { - clearstatcache(true, $file_path); - } else { - clearstatcache(); - } - } - return $this->fix_integer_overflow(filesize($file_path)); - } - - protected function is_valid_file_object($file_name) { - $file_path = $this->get_upload_path($file_name); - if (is_file($file_path) && $file_name[0] !== '.') { - return true; - } - return false; - } - - protected function get_file_object($file_name) { - if ($this->is_valid_file_object($file_name)) { - $file = new \stdClass(); - $file->name = $file_name; - $file->size = $this->get_file_size( - $this->get_upload_path($file_name) - ); - $file->url = $this->get_download_url($file->name); - foreach ($this->options['image_versions'] as $version => $options) { - if (!empty($version)) { - if (is_file($this->get_upload_path($file_name, $version))) { - $file->{$version.'Url'} = $this->get_download_url( - $file->name, - $version - ); - } - } - } - $this->set_additional_file_properties($file); - return $file; - } - return null; - } - - protected function get_file_objects($iteration_method = 'get_file_object') { - $upload_dir = $this->get_upload_path(); - if (!is_dir($upload_dir)) { - return array(); - } - return array_values(array_filter(array_map( - array($this, $iteration_method), - scandir($upload_dir) - ))); - } - - protected function count_file_objects() { - return count($this->get_file_objects('is_valid_file_object')); - } - - protected function get_error_message($error) { - return isset($this->error_messages[$error]) ? - $this->error_messages[$error] : $error; - } - - public function get_config_bytes($val) { - $val = trim($val); - $last = strtolower($val[strlen($val)-1]); - $val = (int)$val; - switch ($last) { - case 'g': - $val *= 1024; - case 'm': - $val *= 1024; - case 'k': - $val *= 1024; - } - return $this->fix_integer_overflow($val); - } - - protected function validate($uploaded_file, $file, $error, $index) { - if ($error) { - $file->error = $this->get_error_message($error); - return false; - } - $content_length = $this->fix_integer_overflow( - (int)$this->get_server_var('CONTENT_LENGTH') - ); - $post_max_size = $this->get_config_bytes(ini_get('post_max_size')); - if ($post_max_size && ($content_length > $post_max_size)) { - $file->error = $this->get_error_message('post_max_size'); - return false; - } - if (!preg_match($this->options['accept_file_types'], $file->name)) { - $file->error = $this->get_error_message('accept_file_types'); - return false; - } - if ($uploaded_file && is_uploaded_file($uploaded_file)) { - $file_size = $this->get_file_size($uploaded_file); - } else { - $file_size = $content_length; - } - if ($this->options['max_file_size'] && ( - $file_size > $this->options['max_file_size'] || - $file->size > $this->options['max_file_size']) - ) { - $file->error = $this->get_error_message('max_file_size'); - return false; - } - if ($this->options['min_file_size'] && - $file_size < $this->options['min_file_size']) { - $file->error = $this->get_error_message('min_file_size'); - return false; - } - if (is_int($this->options['max_number_of_files']) && - ($this->count_file_objects() >= $this->options['max_number_of_files']) && - // Ignore additional chunks of existing files: - !is_file($this->get_upload_path($file->name))) { - $file->error = $this->get_error_message('max_number_of_files'); - return false; - } - $max_width = @$this->options['max_width']; - $max_height = @$this->options['max_height']; - $min_width = @$this->options['min_width']; - $min_height = @$this->options['min_height']; - if (($max_width || $max_height || $min_width || $min_height) - && preg_match($this->options['image_file_types'], $file->name)) { - list($img_width, $img_height) = $this->get_image_size($uploaded_file); - - // If we are auto rotating the image by default, do the checks on - // the correct orientation - if ( - @$this->options['image_versions']['']['auto_orient'] && - function_exists('exif_read_data') && - ($exif = @exif_read_data($uploaded_file)) && - (((int) @$exif['Orientation']) >= 5) - ) { - $tmp = $img_width; - $img_width = $img_height; - $img_height = $tmp; - unset($tmp); - } - - } - if (!empty($img_width)) { - if ($max_width && $img_width > $max_width) { - $file->error = $this->get_error_message('max_width'); - return false; - } - if ($max_height && $img_height > $max_height) { - $file->error = $this->get_error_message('max_height'); - return false; - } - if ($min_width && $img_width < $min_width) { - $file->error = $this->get_error_message('min_width'); - return false; - } - if ($min_height && $img_height < $min_height) { - $file->error = $this->get_error_message('min_height'); - return false; - } - } - return true; - } - - protected function upcount_name_callback($matches) { - $index = isset($matches[1]) ? ((int)$matches[1]) + 1 : 1; - $ext = isset($matches[2]) ? $matches[2] : ''; - return ' ('.$index.')'.$ext; - } - - protected function upcount_name($name) { - return preg_replace_callback( - '/(?:(?: \(([\d]+)\))?(\.[^.]+))?$/', - array($this, 'upcount_name_callback'), - $name, - 1 - ); - } - - protected function get_unique_filename($file_path, $name, $size, $type, $error, - $index, $content_range) { - while(is_dir($this->get_upload_path($name))) { - $name = $this->upcount_name($name); - } - // Keep an existing filename if this is part of a chunked upload: - $uploaded_bytes = $this->fix_integer_overflow((int)$content_range[1]); - while (is_file($this->get_upload_path($name))) { - if ($uploaded_bytes === $this->get_file_size( - $this->get_upload_path($name))) { - break; - } - $name = $this->upcount_name($name); - } - return $name; - } - - protected function fix_file_extension($file_path, $name, $size, $type, $error, - $index, $content_range) { - // Add missing file extension for known image types: - if (strpos($name, '.') === false && - preg_match('/^image\/(gif|jpe?g|png)/', $type, $matches)) { - $name .= '.'.$matches[1]; - } - if ($this->options['correct_image_extensions'] && - function_exists('exif_imagetype')) { - switch (@exif_imagetype($file_path)){ - case IMAGETYPE_JPEG: - $extensions = array('jpg', 'jpeg'); - break; - case IMAGETYPE_PNG: - $extensions = array('png'); - break; - case IMAGETYPE_GIF: - $extensions = array('gif'); - break; - } - // Adjust incorrect image file extensions: - if (!empty($extensions)) { - $parts = explode('.', $name); - $extIndex = count($parts) - 1; - $ext = strtolower(@$parts[$extIndex]); - if (!in_array($ext, $extensions)) { - $parts[$extIndex] = $extensions[0]; - $name = implode('.', $parts); - } - } - } - return $name; - } - - protected function trim_file_name($file_path, $name, $size, $type, $error, - $index, $content_range) { - // Remove path information and dots around the filename, to prevent uploading - // into different directories or replacing hidden system files. - // Also remove control characters and spaces (\x00..\x20) around the filename: - $name = trim($this->basename(stripslashes($name)), ".\x00..\x20"); - // Use a timestamp for empty filenames: - if (!$name) { - $name = str_replace('.', '-', microtime(true)); - } - return $name; - } - - protected function get_file_name($file_path, $name, $size, $type, $error, - $index, $content_range) { - $name = $this->trim_file_name($file_path, $name, $size, $type, $error, - $index, $content_range); - return $this->get_unique_filename( - $file_path, - $this->fix_file_extension($file_path, $name, $size, $type, $error, - $index, $content_range), - $size, - $type, - $error, - $index, - $content_range - ); - } - - protected function get_scaled_image_file_paths($file_name, $version) { - $file_path = $this->get_upload_path($file_name); - if (!empty($version)) { - $version_dir = $this->get_upload_path(null, $version); - if (!is_dir($version_dir)) { - mkdir($version_dir, $this->options['mkdir_mode'], true); - } - $new_file_path = $version_dir.'/'.$file_name; - } else { - $new_file_path = $file_path; - } - return array($file_path, $new_file_path); - } - - protected function gd_get_image_object($file_path, $func, $no_cache = false) { - if (empty($this->image_objects[$file_path]) || $no_cache) { - $this->gd_destroy_image_object($file_path); - $this->image_objects[$file_path] = $func($file_path); - } - return $this->image_objects[$file_path]; - } - - protected function gd_set_image_object($file_path, $image) { - $this->gd_destroy_image_object($file_path); - $this->image_objects[$file_path] = $image; - } - - protected function gd_destroy_image_object($file_path) { - $image = (isset($this->image_objects[$file_path])) ? $this->image_objects[$file_path] : null ; - return $image && imagedestroy($image); - } - - protected function gd_imageflip($image, $mode) { - if (function_exists('imageflip')) { - return imageflip($image, $mode); - } - $new_width = $src_width = imagesx($image); - $new_height = $src_height = imagesy($image); - $new_img = imagecreatetruecolor($new_width, $new_height); - $src_x = 0; - $src_y = 0; - switch ($mode) { - case '1': // flip on the horizontal axis - $src_y = $new_height - 1; - $src_height = -$new_height; - break; - case '2': // flip on the vertical axis - $src_x = $new_width - 1; - $src_width = -$new_width; - break; - case '3': // flip on both axes - $src_y = $new_height - 1; - $src_height = -$new_height; - $src_x = $new_width - 1; - $src_width = -$new_width; - break; - default: - return $image; - } - imagecopyresampled( - $new_img, - $image, - 0, - 0, - $src_x, - $src_y, - $new_width, - $new_height, - $src_width, - $src_height - ); - return $new_img; - } - - protected function gd_orient_image($file_path, $src_img) { - if (!function_exists('exif_read_data')) { - return false; - } - $exif = @exif_read_data($file_path); - if ($exif === false) { - return false; - } - $orientation = (int)@$exif['Orientation']; - if ($orientation < 2 || $orientation > 8) { - return false; - } - switch ($orientation) { - case 2: - $new_img = $this->gd_imageflip( - $src_img, - defined('IMG_FLIP_VERTICAL') ? IMG_FLIP_VERTICAL : 2 - ); - break; - case 3: - $new_img = imagerotate($src_img, 180, 0); - break; - case 4: - $new_img = $this->gd_imageflip( - $src_img, - defined('IMG_FLIP_HORIZONTAL') ? IMG_FLIP_HORIZONTAL : 1 - ); - break; - case 5: - $tmp_img = $this->gd_imageflip( - $src_img, - defined('IMG_FLIP_HORIZONTAL') ? IMG_FLIP_HORIZONTAL : 1 - ); - $new_img = imagerotate($tmp_img, 270, 0); - imagedestroy($tmp_img); - break; - case 6: - $new_img = imagerotate($src_img, 270, 0); - break; - case 7: - $tmp_img = $this->gd_imageflip( - $src_img, - defined('IMG_FLIP_VERTICAL') ? IMG_FLIP_VERTICAL : 2 - ); - $new_img = imagerotate($tmp_img, 270, 0); - imagedestroy($tmp_img); - break; - case 8: - $new_img = imagerotate($src_img, 90, 0); - break; - default: - return false; - } - $this->gd_set_image_object($file_path, $new_img); - return true; - } - - protected function gd_create_scaled_image($file_name, $version, $options) { - if (!function_exists('imagecreatetruecolor')) { - error_log('Function not found: imagecreatetruecolor'); - return false; - } - list($file_path, $new_file_path) = - $this->get_scaled_image_file_paths($file_name, $version); - $type = strtolower(substr(strrchr($file_name, '.'), 1)); - switch ($type) { - case 'jpg': - case 'jpeg': - $src_func = 'imagecreatefromjpeg'; - $write_func = 'imagejpeg'; - $image_quality = isset($options['jpeg_quality']) ? - $options['jpeg_quality'] : 75; - break; - case 'gif': - $src_func = 'imagecreatefromgif'; - $write_func = 'imagegif'; - $image_quality = null; - break; - case 'png': - $src_func = 'imagecreatefrompng'; - $write_func = 'imagepng'; - $image_quality = isset($options['png_quality']) ? - $options['png_quality'] : 9; - break; - default: - return false; - } - $src_img = $this->gd_get_image_object( - $file_path, - $src_func, - !empty($options['no_cache']) - ); - $image_oriented = false; - if (!empty($options['auto_orient']) && $this->gd_orient_image( - $file_path, - $src_img - )) { - $image_oriented = true; - $src_img = $this->gd_get_image_object( - $file_path, - $src_func - ); - } - $max_width = $img_width = imagesx($src_img); - $max_height = $img_height = imagesy($src_img); - if (!empty($options['max_width'])) { - $max_width = $options['max_width']; - } - if (!empty($options['max_height'])) { - $max_height = $options['max_height']; - } - $scale = min( - $max_width / $img_width, - $max_height / $img_height - ); - if ($scale >= 1) { - if ($image_oriented) { - return $write_func($src_img, $new_file_path, $image_quality); - } - if ($file_path !== $new_file_path) { - return copy($file_path, $new_file_path); - } - return true; - } - if (empty($options['crop'])) { - $new_width = $img_width * $scale; - $new_height = $img_height * $scale; - $dst_x = 0; - $dst_y = 0; - $new_img = imagecreatetruecolor($new_width, $new_height); - } else { - if (($img_width / $img_height) >= ($max_width / $max_height)) { - $new_width = $img_width / ($img_height / $max_height); - $new_height = $max_height; - } else { - $new_width = $max_width; - $new_height = $img_height / ($img_width / $max_width); - } - $dst_x = 0 - ($new_width - $max_width) / 2; - $dst_y = 0 - ($new_height - $max_height) / 2; - $new_img = imagecreatetruecolor($max_width, $max_height); - } - // Handle transparency in GIF and PNG images: - switch ($type) { - case 'gif': - case 'png': - imagecolortransparent($new_img, imagecolorallocate($new_img, 0, 0, 0)); - case 'png': - imagealphablending($new_img, false); - imagesavealpha($new_img, true); - break; - } - $success = imagecopyresampled( - $new_img, - $src_img, - $dst_x, - $dst_y, - 0, - 0, - $new_width, - $new_height, - $img_width, - $img_height - ) && $write_func($new_img, $new_file_path, $image_quality); - $this->gd_set_image_object($file_path, $new_img); - return $success; - } - - protected function imagick_get_image_object($file_path, $no_cache = false) { - if (empty($this->image_objects[$file_path]) || $no_cache) { - $this->imagick_destroy_image_object($file_path); - $image = new \Imagick(); - if (!empty($this->options['imagick_resource_limits'])) { - foreach ($this->options['imagick_resource_limits'] as $type => $limit) { - $image->setResourceLimit($type, $limit); - } - } - $image->readImage($file_path); - $this->image_objects[$file_path] = $image; - } - return $this->image_objects[$file_path]; - } - - protected function imagick_set_image_object($file_path, $image) { - $this->imagick_destroy_image_object($file_path); - $this->image_objects[$file_path] = $image; - } - - protected function imagick_destroy_image_object($file_path) { - $image = (isset($this->image_objects[$file_path])) ? $this->image_objects[$file_path] : null ; - return $image && $image->destroy(); - } - - protected function imagick_orient_image($image) { - $orientation = $image->getImageOrientation(); - $background = new \ImagickPixel('none'); - switch ($orientation) { - case \imagick::ORIENTATION_TOPRIGHT: // 2 - $image->flopImage(); // horizontal flop around y-axis - break; - case \imagick::ORIENTATION_BOTTOMRIGHT: // 3 - $image->rotateImage($background, 180); - break; - case \imagick::ORIENTATION_BOTTOMLEFT: // 4 - $image->flipImage(); // vertical flip around x-axis - break; - case \imagick::ORIENTATION_LEFTTOP: // 5 - $image->flopImage(); // horizontal flop around y-axis - $image->rotateImage($background, 270); - break; - case \imagick::ORIENTATION_RIGHTTOP: // 6 - $image->rotateImage($background, 90); - break; - case \imagick::ORIENTATION_RIGHTBOTTOM: // 7 - $image->flipImage(); // vertical flip around x-axis - $image->rotateImage($background, 270); - break; - case \imagick::ORIENTATION_LEFTBOTTOM: // 8 - $image->rotateImage($background, 270); - break; - default: - return false; - } - $image->setImageOrientation(\imagick::ORIENTATION_TOPLEFT); // 1 - return true; - } - - protected function imagick_create_scaled_image($file_name, $version, $options) { - list($file_path, $new_file_path) = - $this->get_scaled_image_file_paths($file_name, $version); - $image = $this->imagick_get_image_object( - $file_path, - !empty($options['crop']) || !empty($options['no_cache']) - ); - if ($image->getImageFormat() === 'GIF') { - // Handle animated GIFs: - $images = $image->coalesceImages(); - foreach ($images as $frame) { - $image = $frame; - $this->imagick_set_image_object($file_name, $image); - break; - } - } - $image_oriented = false; - if (!empty($options['auto_orient'])) { - $image_oriented = $this->imagick_orient_image($image); - } - $new_width = $max_width = $img_width = $image->getImageWidth(); - $new_height = $max_height = $img_height = $image->getImageHeight(); - if (!empty($options['max_width'])) { - $new_width = $max_width = $options['max_width']; - } - if (!empty($options['max_height'])) { - $new_height = $max_height = $options['max_height']; - } - $image_strip = false; - if( !empty($options["strip"]) ) { - $image_strip = $options["strip"]; - } - if ( !$image_oriented && ($max_width >= $img_width) && ($max_height >= $img_height) && !$image_strip && empty($options["jpeg_quality"]) ) { - if ($file_path !== $new_file_path) { - return copy($file_path, $new_file_path); - } - return true; - } - $crop = !empty($options['crop']); - if ($crop) { - $x = 0; - $y = 0; - if (($img_width / $img_height) >= ($max_width / $max_height)) { - $new_width = 0; // Enables proportional scaling based on max_height - $x = ($img_width / ($img_height / $max_height) - $max_width) / 2; - } else { - $new_height = 0; // Enables proportional scaling based on max_width - $y = ($img_height / ($img_width / $max_width) - $max_height) / 2; - } - } - $success = $image->resizeImage( - $new_width, - $new_height, - isset($options['filter']) ? $options['filter'] : \imagick::FILTER_LANCZOS, - isset($options['blur']) ? $options['blur'] : 1, - $new_width && $new_height // fit image into constraints if not to be cropped - ); - if ($success && $crop) { - $success = $image->cropImage( - $max_width, - $max_height, - $x, - $y - ); - if ($success) { - $success = $image->setImagePage($max_width, $max_height, 0, 0); - } - } - $type = strtolower(substr(strrchr($file_name, '.'), 1)); - switch ($type) { - case 'jpg': - case 'jpeg': - if (!empty($options['jpeg_quality'])) { - $image->setImageCompression(\imagick::COMPRESSION_JPEG); - $image->setImageCompressionQuality($options['jpeg_quality']); - } - break; - } - if ( $image_strip ) { - $image->stripImage(); - } - return $success && $image->writeImage($new_file_path); - } - - protected function imagemagick_create_scaled_image($file_name, $version, $options) { - list($file_path, $new_file_path) = - $this->get_scaled_image_file_paths($file_name, $version); - $resize = @$options['max_width'] - .(empty($options['max_height']) ? '' : 'X'.$options['max_height']); - if (!$resize && empty($options['auto_orient'])) { - if ($file_path !== $new_file_path) { - return copy($file_path, $new_file_path); - } - return true; - } - $cmd = $this->options['convert_bin']; - if (!empty($this->options['convert_params'])) { - $cmd .= ' '.$this->options['convert_params']; - } - $cmd .= ' '.escapeshellarg($file_path); - if (!empty($options['auto_orient'])) { - $cmd .= ' -auto-orient'; - } - if ($resize) { - // Handle animated GIFs: - $cmd .= ' -coalesce'; - if (empty($options['crop'])) { - $cmd .= ' -resize '.escapeshellarg($resize.'>'); - } else { - $cmd .= ' -resize '.escapeshellarg($resize.'^'); - $cmd .= ' -gravity center'; - $cmd .= ' -crop '.escapeshellarg($resize.'+0+0'); - } - // Make sure the page dimensions are correct (fixes offsets of animated GIFs): - $cmd .= ' +repage'; - } - if (!empty($options['convert_params'])) { - $cmd .= ' '.$options['convert_params']; - } - $cmd .= ' '.escapeshellarg($new_file_path); - exec($cmd, $output, $error); - if ($error) { - error_log(implode('\n', $output)); - return false; - } - return true; - } - - protected function get_image_size($file_path) { - if ($this->options['image_library']) { - if (extension_loaded('imagick')) { - $image = new \Imagick(); - try { - if (@$image->pingImage($file_path)) { - $dimensions = array($image->getImageWidth(), $image->getImageHeight()); - $image->destroy(); - return $dimensions; - } - return false; - } catch (\Exception $e) { - error_log($e->getMessage()); - } - } - if ($this->options['image_library'] === 2) { - $cmd = $this->options['identify_bin']; - $cmd .= ' -ping '.escapeshellarg($file_path); - exec($cmd, $output, $error); - if (!$error && !empty($output)) { - // image.jpg JPEG 1920x1080 1920x1080+0+0 8-bit sRGB 465KB 0.000u 0:00.000 - $infos = preg_split('/\s+/', substr($output[0], strlen($file_path))); - $dimensions = preg_split('/x/', $infos[2]); - return $dimensions; - } - return false; - } - } - if (!function_exists('getimagesize')) { - error_log('Function not found: getimagesize'); - return false; - } - return @getimagesize($file_path); - } - - protected function create_scaled_image($file_name, $version, $options) { - if ($this->options['image_library'] === 2) { - return $this->imagemagick_create_scaled_image($file_name, $version, $options); - } - if ($this->options['image_library'] && extension_loaded('imagick')) { - return $this->imagick_create_scaled_image($file_name, $version, $options); - } - return $this->gd_create_scaled_image($file_name, $version, $options); - } - - protected function destroy_image_object($file_path) { - if ($this->options['image_library'] && extension_loaded('imagick')) { - return $this->imagick_destroy_image_object($file_path); - } - } - - protected function is_valid_image_file($file_path) { - if (!preg_match($this->options['image_file_types'], $file_path)) { - return false; - } - if (function_exists('exif_imagetype')) { - return @exif_imagetype($file_path); - } - $image_info = $this->get_image_size($file_path); - return $image_info && $image_info[0] && $image_info[1]; - } - - protected function handle_image_file($file_path, $file) { - $failed_versions = array(); - foreach ($this->options['image_versions'] as $version => $options) { - if ($this->create_scaled_image($file->name, $version, $options)) { - if (!empty($version)) { - $file->{$version.'Url'} = $this->get_download_url( - $file->name, - $version - ); - } else { - $file->size = $this->get_file_size($file_path, true); - } - } else { - $failed_versions[] = $version ? $version : 'original'; - } - } - if (count($failed_versions)) { - $file->error = $this->get_error_message('image_resize') - .' ('.implode($failed_versions, ', ').')'; - } - // Free memory: - $this->destroy_image_object($file_path); - } - - protected function handle_file_upload($uploaded_file, $name, $size, $type, $error, $index = null, $content_range = null) { - $file = new \stdClass(); - $file->name = $this->get_file_name($uploaded_file, $name, $size, $type, $error, - $index, $content_range); - $file->size = $this->fix_integer_overflow((int)$size); - $file->type = $type; - if ($this->validate($uploaded_file, $file, $error, $index)) { - $this->handle_form_data($file, $index); - $upload_dir = $this->get_upload_path(); - if (!$this->options['ftp'] && !is_dir($upload_dir)) { - mkdir($upload_dir, $this->options['mkdir_mode'], true); - } - $file_path = $this->get_upload_path($file->name); - $append_file = $content_range && is_file($file_path) && - $file->size > $this->get_file_size($file_path); - if ($uploaded_file && is_uploaded_file($uploaded_file)) { - // multipart/formdata uploads (POST method uploads) - if ($append_file) { - file_put_contents( - $file_path, - fopen($uploaded_file, 'r'), - FILE_APPEND - ); - } else { - move_uploaded_file($uploaded_file, $file_path); - } - } else { - if($this->get_file_size($uploaded_file) == $file->size){ - copy($uploaded_file, $file_path); - }else{ - - // Non-multipart uploads (PUT method support) - file_put_contents( - $file_path, - fopen($this->options['input_stream'], 'r'), - $append_file ? FILE_APPEND : 0 - ); - } - } - $file_size = $this->get_file_size($file_path, $append_file); - $file->path = $file_path; - if ($file_size === $file->size) { - $file->url = $this->get_download_url($file->name); - if ($this->is_valid_image_file($file_path)) { - $this->handle_image_file($file_path, $file); - } - } else { - $file->size = $file_size; - if (!$content_range && $this->options['discard_aborted_uploads']) { - unlink($file_path); - $file->error = $this->get_error_message('abort'); - } - } - $this->set_additional_file_properties($file); - } - return $file; - } - - protected function readfile($file_path) { - $file_size = $this->get_file_size($file_path); - $chunk_size = $this->options['readfile_chunk_size']; - if ($chunk_size && $file_size > $chunk_size) { - $handle = fopen($file_path, 'rb'); - while (!feof($handle)) { - echo fread($handle, $chunk_size); - @ob_flush(); - @flush(); - } - fclose($handle); - return $file_size; - } - return readfile($file_path); - } - - protected function body($str) { - echo $str; - } - - protected function header($str) { - header($str); - } - - protected function get_upload_data($id) { - return @$_FILES[$id]; - } - - protected function get_post_param($id) { - return @$_POST[$id]; - } - - protected function get_query_param($id) { - return @$_GET[$id]; - } - - protected function get_server_var($id) { - return @$_SERVER[$id]; - } - - protected function handle_form_data($file, $index) { - // Handle form data, e.g. $_POST['description'][$index] - } - - protected function get_version_param() { - return $this->basename(stripslashes($this->get_query_param('version'))); - } - - protected function get_singular_param_name() { - return substr($this->options['param_name'], 0, -1); - } - - protected function get_file_name_param() { - $name = $this->get_singular_param_name(); - return $this->basename(stripslashes($this->get_query_param($name))); - } - - protected function get_file_names_params() { - $params = $this->get_query_param($this->options['param_name']); - if (!$params) { - return null; - } - foreach ($params as $key => $value) { - $params[$key] = $this->basename(stripslashes($value)); - } - return $params; - } - - protected function get_file_type($file_path) { - switch (strtolower(pathinfo($file_path, PATHINFO_EXTENSION))) { - case 'jpeg': - case 'jpg': - return 'image/jpeg'; - case 'png': - return 'image/png'; - case 'gif': - return 'image/gif'; - default: - return ''; - } - } - - protected function download() { - switch ($this->options['download_via_php']) { - case 1: - $redirect_header = null; - break; - case 2: - $redirect_header = 'X-Sendfile'; - break; - case 3: - $redirect_header = 'X-Accel-Redirect'; - break; - default: - return $this->header('HTTP/1.1 403 Forbidden'); - } - $file_name = $this->get_file_name_param(); - if (!$this->is_valid_file_object($file_name)) { - return $this->header('HTTP/1.1 404 Not Found'); - } - if ($redirect_header) { - return $this->header( - $redirect_header.': '.$this->get_download_url( - $file_name, - $this->get_version_param(), - true - ) - ); - } - $file_path = $this->get_upload_path($file_name, $this->get_version_param()); - // Prevent browsers from MIME-sniffing the content-type: - $this->header('X-Content-Type-Options: nosniff'); - if (!preg_match($this->options['inline_file_types'], $file_name)) { - $this->header('Content-Type: application/octet-stream'); - $this->header('Content-Disposition: attachment; filename="'.$file_name.'"'); - } else { - $this->header('Content-Type: '.$this->get_file_type($file_path)); - $this->header('Content-Disposition: inline; filename="'.$file_name.'"'); - } - $this->header('Content-Length: '.$this->get_file_size($file_path)); - $this->header('Last-Modified: '.gmdate('D, d M Y H:i:s T', filemtime($file_path))); - $this->readfile($file_path); - } - - protected function send_content_type_header() { - $this->header('Vary: Accept'); - if (strpos($this->get_server_var('HTTP_ACCEPT'), 'application/json') !== false) { - $this->header('Content-type: application/json'); - } else { - $this->header('Content-type: text/plain'); - } - } - - protected function send_access_control_headers() { - $this->header('Access-Control-Allow-Origin: '.$this->options['access_control_allow_origin']); - $this->header('Access-Control-Allow-Credentials: ' - .($this->options['access_control_allow_credentials'] ? 'true' : 'false')); - $this->header('Access-Control-Allow-Methods: ' - .implode(', ', $this->options['access_control_allow_methods'])); - $this->header('Access-Control-Allow-Headers: ' - .implode(', ', $this->options['access_control_allow_headers'])); - } - - public function generate_response($content, $print_response = true) { - $this->response = $content; - if ($print_response) { - $json = json_encode($content); - $redirect = stripslashes($this->get_post_param('redirect')); - if ($redirect && preg_match($this->options['redirect_allow_target'], $redirect)) { - $this->header('Location: '.sprintf($redirect, rawurlencode($json))); - return; - } - $this->head(); - if ($this->get_server_var('HTTP_CONTENT_RANGE')) { - $files = isset($content[$this->options['param_name']]) ? - $content[$this->options['param_name']] : null; - if ($files && is_array($files) && is_object($files[0]) && $files[0]->size) { - $this->header('Range: 0-'.( - $this->fix_integer_overflow((int)$files[0]->size) - 1 - )); - } - } - $this->body($json); - } - return $content; - } - - public function get_response () { - return $this->response; - } - - public function head() { - $this->header('Pragma: no-cache'); - $this->header('Cache-Control: no-store, no-cache, must-revalidate'); - $this->header('Content-Disposition: inline; filename="files.json"'); - // Prevent Internet Explorer from MIME-sniffing the content-type: - $this->header('X-Content-Type-Options: nosniff'); - if ($this->options['access_control_allow_origin']) { - $this->send_access_control_headers(); - } - $this->send_content_type_header(); - } - - public function get($print_response = true) { - if ($print_response && $this->get_query_param('download')) { - return $this->download(); - } - $file_name = $this->get_file_name_param(); - if ($file_name) { - $response = array( - $this->get_singular_param_name() => $this->get_file_object($file_name) - ); - } else { - $response = array( - $this->options['param_name'] => $this->get_file_objects() - ); - } - - return $this->generate_response($response, $print_response); - } - - public function post($print_response = true) { - if ($this->get_query_param('_method') === 'DELETE') { - return $this->delete($print_response); - } - $upload = $this->get_upload_data($this->options['param_name']); - // Parse the Content-Disposition header, if available: - $content_disposition_header = $this->get_server_var('HTTP_CONTENT_DISPOSITION'); - $file_name = $content_disposition_header ? - rawurldecode(preg_replace( - '/(^[^"]+")|("$)/', - '', - $content_disposition_header - )) : null; - // Parse the Content-Range header, which has the following form: - // Content-Range: bytes 0-524287/2000000 - $content_range_header = $this->get_server_var('HTTP_CONTENT_RANGE'); - $content_range = $content_range_header ? - preg_split('/[^0-9]+/', $content_range_header) : null; - $size = $content_range ? $content_range[3] : null; - $files = array(); - if ($upload) { - if (is_array($upload['tmp_name'])) { - // param_name is an array identifier like "files[]", - // $upload is a multi-dimensional array: - foreach ($upload['tmp_name'] as $index => $value) { - if(!isset($upload['error'][$index])){ - $upload['error'][$index] = null; - } - $files[] = $this->handle_file_upload( - $upload['tmp_name'][$index], - $file_name ? $file_name : $upload['name'][$index], - $size ? $size : $upload['size'][$index], - $upload['type'][$index], - $upload['error'][$index], - $index, - $content_range - ); - } - } else { - // param_name is a single object identifier like "file", - // $upload is a one-dimensional array: - $files[] = $this->handle_file_upload( - isset($upload['tmp_name']) ? $upload['tmp_name'] : null, - $file_name ? $file_name : (isset($upload['name']) ? - $upload['name'] : null), - $size ? $size : (isset($upload['size']) ? - $upload['size'] : $this->get_server_var('CONTENT_LENGTH')), - isset($upload['type']) ? - $upload['type'] : $this->get_server_var('CONTENT_TYPE'), - isset($upload['error']) ? $upload['error'] : null, - null, - $content_range - ); - } - } - $response = array($this->options['param_name'] => $files); - $name = $file_name ? $file_name : $upload['name'][0]; - $res = $this->generate_response($response, $print_response); - if(is_file($this->get_upload_path($name))){ - $uploaded_bytes = $this->fix_integer_overflow((int)$content_range[1]); - $totalSize = $this->get_file_size($this->get_upload_path($name)); - if ($totalSize - $uploaded_bytes - $this->options['readfile_chunk_size'] < 0) { - $this->onUploadEnd($res); - }else{ - $this->head(); - $this->body(json_encode($res)); - } - }else{ - $this->head(); - $this->body(json_encode($res)); - } - return $res; - } - - public function onUploadEnd ($res){ - $targetPath = $this->options['storeFolder']; - $targetPathThumb = $this->options['storeFolderThumb']; - - if(!$this->options['ftp']){ - $targetFile = $targetPath. $res['files'][0]->name; - $targetFileThumb = $targetPathThumb. $res['files'][0]->name; - if (!is_dir($targetPathThumb)) { - mkdir($targetPathThumb, $this->options['mkdir_mode'], true); - } - if(is_file($targetFile)) { - chmod($targetFile, $this->options['config']['filePermission']); - }else{ - chmod($targetFile, $this->options['config']['folderPermission']); - } - }else{ - $targetFile = $this->options['config']['ftp_temp_folder'].$res['files'][0]->name; - $targetFileThumb = $this->options['config']['ftp_temp_folder']."thumbs/". $res['files'][0]->name; - } - - //check if image (and supported) - $is_img = FALSE; - if ($this->is_valid_image_file($targetFile)){ - $is_img = TRUE; - } - - if ($is_img) - { - if(isset($this->options['config']['image_watermark']) && $this->options['config']['image_watermark']){ - require_once('include/php_image_magician.php'); - - $magicianObj = new imageLib($targetFile); - $magicianObj -> addWatermark($this->options['config']['image_watermark'], $this->options['config']['image_watermark_position'], $this->options['config']['image_watermark_padding']); - - $magicianObj -> saveImage($targetFile); - } - - $thumbResult = create_img($targetFile, $targetFileThumb, 122, 91); - - if ( $thumbResult!==true) - { - if($thumbResult === false){ - $res['files'][0]->error = trans("Not enough Memory"); - }else{ - $res['files'][0]->error = $thumbResult; - } - } - else - { - if( !$this->options['ftp'] && ! new_thumbnails_creation($targetPath,$targetFile,$_FILES['files']['name'][0],$this->options['config']['current_path'],$this->options['config'])) - { - $res['files'][0]->error = trans("Not enough Memory"); - } - else - { - $imginfo = getimagesize($targetFile); - $srcWidth = $imginfo[0]; - $srcHeight = $imginfo[1]; - - // resize images if set - if ($this->options['config']['image_resizing']) - { - if ($this->options['config']['image_resizing_width'] == 0) // if width not set - { - if ($this->options['config']['image_resizing_height'] == 0) - { - $this->options['config']['image_resizing_width'] = $srcWidth; - $this->options['config']['image_resizing_height'] = $srcHeight; - } - else - { - $this->options['config']['image_resizing_width'] = $this->options['config']['image_resizing_height']*$srcWidth/$srcHeight; - } - } - elseif ($this->options['config']['image_resizing_height'] == 0) // if height not set - { - $this->options['config']['image_resizing_height'] = $this->options['config']['image_resizing_width']*$srcHeight/$srcWidth; - } - - // new dims and create - $srcWidth = $this->options['config']['image_resizing_width']; - $srcHeight = $this->options['config']['image_resizing_height']; - create_img($targetFile, $targetFile, $this->options['config']['image_resizing_width'], $this->options['config']['image_resizing_height'], $this->options['config']['image_resizing_mode']); - } - - //max resizing limit control - $resize = FALSE; - if ($this->options['config']['image_max_width'] != 0 && $srcWidth > $this->options['config']['image_max_width'] && $this->options['config']['image_resizing_override'] === FALSE) - { - $resize = TRUE; - $srcWidth = $this->options['config']['image_max_width']; - - if ($this->options['config']['image_max_height'] == 0) $srcHeight = $this->options['config']['image_max_width']*$srcHeight/$srcWidth; - } - - if ($this->options['config']['image_max_height'] != 0 && $srcHeight > $this->options['config']['image_max_height'] && $this->options['config']['image_resizing_override'] === FALSE){ - $resize = TRUE; - $srcHeight = $this->options['config']['image_max_height']; - - if ($this->options['config']['image_max_width'] == 0) $srcWidth = $this->options['config']['image_max_height']*$srcWidth/$srcHeight; - } - - if ($resize){ create_img($targetFile, $targetFile, $srcWidth, $srcHeight, $this->options['config']['image_max_mode']); } - } - } - } - - if($this->options['ftp']){ - - $this->options['ftp']->put($targetPath. $res['files'][0]->name, $targetFile, FTP_BINARY); - unlink($targetFile); - if ($is_img) - { - $this->options['ftp']->put($targetPathThumb. $res['files'][0]->name, $targetFileThumb, FTP_BINARY); - unlink($targetFileThumb); - } - } - $this->head(); - $this->body(json_encode($res)); - } - - public function delete($print_response = true) { - $file_names = $this->get_file_names_params(); - if (empty($file_names)) { - $file_names = array($this->get_file_name_param()); - } - $response = array(); - foreach ($file_names as $file_name) { - $file_path = $this->get_upload_path($file_name); - $success = is_file($file_path) && $file_name[0] !== '.' && unlink($file_path); - if ($success) { - foreach ($this->options['image_versions'] as $version => $options) { - if (!empty($version)) { - $file = $this->get_upload_path($file_name, $version); - if (is_file($file)) { - unlink($file); - } - } - } - } - $response[$file_name] = $success; - } - return $this->generate_response($response, $print_response); - } - - protected function basename($filepath, $suffix = null) { - $splited = preg_split('/\//', rtrim ($filepath, '/ ')); - return substr(basename('X'.$splited[count($splited)-1], $suffix), 1); - } -} diff --git a/libraries/filemanager-9.12.1/ajax_calls.php b/libraries/filemanager-9.12.1/ajax_calls.php deleted file mode 100644 index 025d5cf..0000000 --- a/libraries/filemanager-9.12.1/ajax_calls.php +++ /dev/null @@ -1,703 +0,0 @@ -send(); - exit; -} -$languages = include 'lang/languages.php'; - -if (isset($_SESSION['RF']['language']) && file_exists('lang/' . basename($_SESSION['RF']['language']) . '.php')) -{ - if(array_key_exists($_SESSION['RF']['language'],$languages)){ - include 'lang/' . basename($_SESSION['RF']['language']) . '.php'; - }else{ - response(trans('Lang_Not_Found').AddErrorLocation())->send(); - exit; - } -} else { - response(trans('Lang_Not_Found').AddErrorLocation())->send(); - exit; -} -$ftp = ftp_con($config); - -if(isset($_GET['action'])) -{ - switch($_GET['action']) - { - case 'new_file_form': - echo trans('Filename') . ':

'; - break; - case 'view': - if(isset($_GET['type'])) - { - $_SESSION['RF']["view_type"] = $_GET['type']; - } - else - { - response(trans('view type number missing').AddErrorLocation())->send(); - exit; - } - break; - case 'filter': - if (isset($_GET['type'])) - { - if (isset($remember_text_filter) && $remember_text_filter) - { - $_SESSION['RF']["filter"] = $_GET['type']; - } - } - else { - response(trans('view type number missing').AddErrorLocation())->send(); - exit; - } - break; - case 'sort': - if (isset($_GET['sort_by'])) - { - $_SESSION['RF']["sort_by"] = $_GET['sort_by']; - } - - if (isset($_GET['descending'])) - { - $_SESSION['RF']["descending"] = $_GET['descending']; - } - break; - case 'image_size': // not used - $pos = strpos($_POST['path'], $upload_dir); - if ($pos !== false) - { - $info = getimagesize(substr_replace($_POST['path'], $current_path, $pos, strlen($upload_dir))); - response($info)->send(); - exit; - } - break; - case 'save_img': - $info = pathinfo($_POST['name']); - - if ( - strpos($_POST['path'], '/') === 0 - || strpos($_POST['path'], '../') !== false - || strpos($_POST['path'], '..\\') !== false - || strpos($_POST['path'], './') === 0 - || (strpos($_POST['url'], 'http://s3.amazonaws.com/feather') !== 0 && strpos($_POST['url'], 'https://s3.amazonaws.com/feather') !== 0) - || $_POST['name'] != fix_filename($_POST['name'], $config) - || ! in_array(strtolower($info['extension']), array( 'jpg', 'jpeg', 'png' )) - ) - { - response(trans('wrong data').AddErrorLocation())->send(); - exit; - } - $image_data = get_file_by_url($_POST['url']); - if ($image_data === false) - { - response(trans('Aviary_No_Save').AddErrorLocation())->send(); - exit; - } - - if (!checkresultingsize(strlen($image_data))) { - response(sprintf(trans('max_size_reached'),$MaxSizeTotal).AddErrorLocation())->send(); - exit; - } - if($ftp){ - - $temp = tempnam('/tmp','RF'); - unlink($temp); - $temp .=".".substr(strrchr($_POST['url'],'.'),1); - file_put_contents($temp,$image_data); - - $ftp->put($ftp_base_folder.$upload_dir . $_POST['path'] . $_POST['name'], $temp, FTP_BINARY); - - create_img($temp,$temp,122,91); - $ftp->put($ftp_base_folder.$ftp_thumbs_dir. $_POST['path'] . $_POST['name'], $temp, FTP_BINARY); - - unlink($temp); - }else{ - - file_put_contents($current_path . $_POST['path'] . $_POST['name'],$image_data); - create_img($current_path . $_POST['path'] . $_POST['name'], $thumbs_base_path.$_POST['path'].$_POST['name'], 122, 91); - // TODO something with this function cause its blowing my mind - new_thumbnails_creation( - $current_path.$_POST['path'], - $current_path.$_POST['path'].$_POST['name'], - $_POST['name'], - $current_path, - $config - ); - } - break; - case 'extract': - if ( strpos($_POST['path'], '/') === 0 - || strpos($_POST['path'], '../') !== false - || strpos($_POST['path'], '..\\') !== false - || strpos($_POST['path'], './') === 0) - { - response(trans('wrong path'.AddErrorLocation()))->send(); - exit; - } - - if($ftp){ - $path = $ftp_base_url.$upload_dir . $_POST['path']; - $base_folder = $ftp_base_url.$upload_dir . fix_dirname($_POST['path']) . "/"; - }else{ - $path = $current_path . $_POST['path']; - $base_folder = $current_path . fix_dirname($_POST['path']) . "/"; - } - - $info = pathinfo($path); - - if($ftp){ - $tempDir = tempdir(); - $temp = tempnam($tempDir,'RF'); - unlink($temp); - $temp .=".".$info['extension']; - $handle = fopen($temp, "w"); - fwrite($handle, file_get_contents($path)); - fclose($handle); - $path = $temp; - $base_folder = $tempDir."/"; - } - - $info = pathinfo($path); - - switch ($info['extension']) - { - case "zip": - $zip = new ZipArchive; - if ($zip->open($path) === true) - { - //get total size - $sizeTotalFinal = 0; - for ($i = 0; $i < $zip->numFiles; $i++) - { - $aStat = $zip->statIndex($i); - $sizeTotalFinal += $aStat['size']; - } - if (!checkresultingsize($sizeTotalFinal)) { - response(sprintf(trans('max_size_reached'),$MaxSizeTotal).AddErrorLocation())->send(); - exit; - } - - //make all the folders - for ($i = 0; $i < $zip->numFiles; $i++) - { - $OnlyFileName = $zip->getNameIndex($i); - $FullFileName = $zip->statIndex($i); - if (substr($FullFileName['name'], -1, 1) == "/") - { - create_folder($base_folder . $FullFileName['name']); - } - } - //unzip into the folders - for ($i = 0; $i < $zip->numFiles; $i++) - { - $OnlyFileName = $zip->getNameIndex($i); - $FullFileName = $zip->statIndex($i); - - if ( ! (substr($FullFileName['name'], -1, 1) == "/")) - { - $fileinfo = pathinfo($OnlyFileName); - if (in_array(strtolower($fileinfo['extension']), $ext)) - { - copy('zip://' . $path . '#' . $OnlyFileName, $base_folder . $FullFileName['name']); - } - } - } - $zip->close(); - } else { - response(trans('Zip_No_Extract').AddErrorLocation())->send(); - exit; - } - - break; - - case "gz": - // No resulting size pre-control available - $p = new PharData($path); - $p->decompress(); // creates files.tar - - break; - - case "tar": - // No resulting size pre-control available - // unarchive from the tar - $phar = new PharData($path); - $phar->decompressFiles(); - $files = array(); - check_files_extensions_on_phar($phar, $files, '', $ext); - $phar->extractTo($base_folder, $files, true); - - break; - - default: - response(trans('Zip_Invalid').AddErrorLocation())->send(); - exit; - } - - if($ftp){ - unlink($path); - $ftp->putAll($base_folder, "/".$ftp_base_folder . $upload_dir . fix_dirname($_POST['path']), FTP_BINARY); - deleteDir($base_folder); - } - - - break; - case 'media_preview': - if($ftp){ - $preview_file = $ftp_base_url.$upload_dir . $_GET['file']; - }else{ - $preview_file = $current_path . $_GET["file"]; - } - $info = pathinfo($preview_file); - ob_start(); - ?> -
- -
- - - - - - - - - send(); - exit; - - break; - case 'copy_cut': - if ($_POST['sub_action'] != 'copy' && $_POST['sub_action'] != 'cut') - { - response(trans('wrong sub-action').AddErrorLocation())->send(); - exit; - } - - if (strpos($_POST['path'],'../') !== FALSE - || strpos($_POST['path'],'./') !== FALSE - || strpos($_POST['path'],'..\\') !== FALSE - || strpos($_POST['path'],'.\\') !== FALSE ) - { - response(trans('wrong path'.AddErrorLocation()))->send(); - exit; - } - - if (trim($_POST['path']) == '') - { - response(trans('no path').AddErrorLocation())->send(); - exit; - } - - $msg_sub_action = ($_POST['sub_action'] == 'copy' ? trans('Copy') : trans('Cut')); - $path = $current_path . $_POST['path']; - - if (is_dir($path)) - { - // can't copy/cut dirs - if ($copy_cut_dirs === false) - { - response(sprintf(trans('Copy_Cut_Not_Allowed'), $msg_sub_action, trans('Folders')).AddErrorLocation())->send(); - exit; - } - - list($sizeFolderToCopy,$fileNum,$foldersCount) = folder_info($path,false); - // size over limit - if ($copy_cut_max_size !== false && is_int($copy_cut_max_size)) { - if (($copy_cut_max_size * 1024 * 1024) < $sizeFolderToCopy) { - response(sprintf(trans('Copy_Cut_Size_Limit'), $msg_sub_action, $copy_cut_max_size).AddErrorLocation())->send(); - exit; - } - } - - // file count over limit - if ($copy_cut_max_count !== false && is_int($copy_cut_max_count)) - { - if ($copy_cut_max_count < $fileNum) - { - response(sprintf(trans('Copy_Cut_Count_Limit'), $msg_sub_action, $copy_cut_max_count).AddErrorLocation())->send(); - exit; - } - } - - if (!checkresultingsize($sizeFolderToCopy)) { - response(sprintf(trans('max_size_reached'),$MaxSizeTotal).AddErrorLocation())->send(); - exit; - } - } else { - // can't copy/cut files - if ($copy_cut_files === false) - { - response(sprintf(trans('Copy_Cut_Not_Allowed'), $msg_sub_action, trans('Files')).AddErrorLocation())->send(); - exit; - } - } - - $_SESSION['RF']['clipboard']['path'] = $_POST['path']; - $_SESSION['RF']['clipboard_action'] = $_POST['sub_action']; - break; - case 'clear_clipboard': - $_SESSION['RF']['clipboard'] = null; - $_SESSION['RF']['clipboard_action'] = null; - break; - case 'chmod': - if($ftp){ - $path = $ftp_base_url . $upload_dir . $_POST['path']; - if ( - ($_POST['folder']==1 && $chmod_dirs === false) - || ($_POST['folder']==0 && $chmod_files === false) - || (is_function_callable("chmod") === false) ) - { - response(sprintf(trans('File_Permission_Not_Allowed'), (is_dir($path) ? trans('Folders') : trans('Files')), 403).AddErrorLocation())->send(); - exit; - } - $info = $_POST['permissions']; - }else{ - $path = $current_path . $_POST['path']; - if ( - (is_dir($path) && $chmod_dirs === false) - || (is_file($path) && $chmod_files === false) - || (is_function_callable("chmod") === false) ) - { - response(sprintf(trans('File_Permission_Not_Allowed'), (is_dir($path) ? trans('Folders') : trans('Files')), 403).AddErrorLocation())->send(); - exit; - } - - $perms = fileperms($path) & 0777; - - $info = '-'; - - // Owner - $info .= (($perms & 0x0100) ? 'r' : '-'); - $info .= (($perms & 0x0080) ? 'w' : '-'); - $info .= (($perms & 0x0040) ? - (($perms & 0x0800) ? 's' : 'x' ) : - (($perms & 0x0800) ? 'S' : '-')); - - // Group - $info .= (($perms & 0x0020) ? 'r' : '-'); - $info .= (($perms & 0x0010) ? 'w' : '-'); - $info .= (($perms & 0x0008) ? - (($perms & 0x0400) ? 's' : 'x' ) : - (($perms & 0x0400) ? 'S' : '-')); - - // World - $info .= (($perms & 0x0004) ? 'r' : '-'); - $info .= (($perms & 0x0002) ? 'w' : '-'); - $info .= (($perms & 0x0001) ? - (($perms & 0x0200) ? 't' : 'x' ) : - (($perms & 0x0200) ? 'T' : '-')); - - } - - - $ret = '
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
r  w  x  
'.trans('User').'
'.trans('Group').'
'.trans('All').'
'; - - if ((!$ftp && is_dir($path)) ) - { - $ret .= '
'.trans('File_Permission_Recursive').'

-
    -
  • -
  • -
  • -
  • -
-
'; - } - - $ret .= '
'; - - response($ret)->send(); - exit; - - break; - case 'get_lang': - if ( ! file_exists('lang/languages.php')) - { - response(trans('Lang_Not_Found').AddErrorLocation())->send(); - exit; - } - - $languages = include 'lang/languages.php'; - if ( ! isset($languages) || ! is_array($languages)) - { - response(trans('Lang_Not_Found').AddErrorLocation())->send(); - exit; - } - - $curr = $_SESSION['RF']['language']; - - $ret = ''; - - response($ret)->send(); - exit; - - break; - case 'change_lang': - $choosen_lang = (!empty($_POST['choosen_lang']))? $_POST['choosen_lang']:"en_EN"; - - if(array_key_exists($choosen_lang,$languages)){ - if ( ! file_exists('lang/' . $choosen_lang . '.php')) - { - response(trans('Lang_Not_Found').AddErrorLocation())->send(); - exit; - }else{ - $_SESSION['RF']['language'] = $choosen_lang; - } - } - - break; - case 'cad_preview': - if($ftp){ - $selected_file = $ftp_base_url.$upload_dir . $_GET['file']; - }else{ - $selected_file = $current_path . $_GET['file']; - - if ( ! file_exists($selected_file)) - { - response(trans('File_Not_Found').AddErrorLocation())->send(); - exit; - } - } - if($ftp){ - $url_file = $selected_file; - }else{ - $url_file = $base_url . $upload_dir . str_replace($current_path, '', $_GET["file"]); - } - - $cad_url = urlencode($url_file); - $cad_html = ""; - $ret = $cad_html; - response($ret)->send(); - break; - case 'get_file': // preview or edit - $sub_action = $_GET['sub_action']; - $preview_mode = $_GET["preview_mode"]; - - if ($sub_action != 'preview' && $sub_action != 'edit') - { - response(trans('wrong action').AddErrorLocation())->send(); - exit; - } - - if($ftp){ - $selected_file = ($sub_action == 'preview' ? $ftp_base_url.$upload_dir . $_GET['file'] : $ftp_base_url.$upload_dir . $_POST['path']); - }else{ - $selected_file = ($sub_action == 'preview' ? $current_path . $_GET['file'] : $current_path . $_POST['path']); - - if ( ! file_exists($selected_file)) - { - response(trans('File_Not_Found').AddErrorLocation())->send(); - exit; - } - } - - $info = pathinfo($selected_file); - - if ($preview_mode == 'text') - { - $is_allowed = ($sub_action == 'preview' ? $preview_text_files : $edit_text_files); - $allowed_file_exts = ($sub_action == 'preview' ? $previewable_text_file_exts : $editable_text_file_exts); - }elseif($preview_mode == 'google') { - $is_allowed = $googledoc_enabled; - $allowed_file_exts = $googledoc_file_exts; - } - - if ( ! isset($allowed_file_exts) || ! is_array($allowed_file_exts)) - { - $allowed_file_exts = array(); - } - - if ( ! in_array($info['extension'], $allowed_file_exts) - || ! isset($is_allowed) - || $is_allowed === false - || (!$ftp && ! is_readable($selected_file)) - ) - { - response(sprintf(trans('File_Open_Edit_Not_Allowed'), ($sub_action == 'preview' ? strtolower(trans('Open')) : strtolower(trans('Edit')))).AddErrorLocation())->send(); - exit; - } - if ($sub_action == 'preview') - { - if ($preview_mode == 'text') - { - // get and sanities - $data = file_get_contents($selected_file); - $data = htmlspecialchars(htmlspecialchars_decode($data)); - $ret = ''; - - if ( ! in_array($info['extension'],$previewable_text_file_exts_no_prettify)) - { - $ret .= ''; - $ret .= '
'.$data.'
'; - } else { - $ret .= '
'.$data.'
'; - } - - } - elseif ($preview_mode == 'google') { - if($ftp){ - $url_file = $selected_file; - }else{ - $url_file = $base_url . $upload_dir . str_replace($current_path, '', $_GET["file"]); - } - - $googledoc_url = urlencode($url_file); - $googledoc_html = ""; - $ret = $googledoc_html; - } - } else { - $data = stripslashes(htmlspecialchars(file_get_contents($selected_file))); - $ret = ''; - } - - response($ret)->send(); - exit; - - break; - default: - response(trans('no action passed').AddErrorLocation())->send(); - exit; - } -} else { - response(trans('no action passed').AddErrorLocation())->send(); - exit; -} -?> \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/config/.htaccess b/libraries/filemanager-9.12.1/config/.htaccess deleted file mode 100644 index 14249c5..0000000 --- a/libraries/filemanager-9.12.1/config/.htaccess +++ /dev/null @@ -1 +0,0 @@ -Deny from all \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/config/config.php b/libraries/filemanager-9.12.1/config/config.php deleted file mode 100644 index 5c22119..0000000 --- a/libraries/filemanager-9.12.1/config/config.php +++ /dev/null @@ -1,450 +0,0 @@ - -| in tinymce a new parameter added: filemanager_access_key:"myPrivateKey" -| example tinymce config: -| -| tiny init ... -| external_filemanager_path:"../filemanager/", -| filemanager_title:"Filemanager" , -| filemanager_access_key:"myPrivateKey" , -| ... -| -*/ - -define('USE_ACCESS_KEYS', false); // TRUE or FALSE - -/* -|-------------------------------------------------------------------------- -| DON'T COPY THIS VARIABLES IN FOLDERS config.php FILES -|-------------------------------------------------------------------------- -*/ - -define('DEBUG_ERROR_MESSAGE', true); // TRUE or FALSE - -/* -|-------------------------------------------------------------------------- -| Path configuration -|-------------------------------------------------------------------------- -| In this configuration the folder tree is -| root -| |- source <- upload folder -| |- thumbs <- thumbnail folder [must have write permission (755)] -| |- filemanager -| |- js -| | |- tinymce -| | | |- plugins -| | | | |- responsivefilemanager -| | | | | |- plugin.min.js -*/ - -$config = array( - - /* - |-------------------------------------------------------------------------- - | DON'T TOUCH (base url (only domain) of site). - |-------------------------------------------------------------------------- - | - | without final / (DON'T TOUCH) - | - */ - 'base_url' => '', //((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == "on") ? "https" : "http"). "://". @$_SERVER['HTTP_HOST'], - /* - |-------------------------------------------------------------------------- - | path from base_url to base of upload folder - |-------------------------------------------------------------------------- - | - | with start and final / - | - */ - 'upload_dir' => '/upload/filemanager/', - /* - |-------------------------------------------------------------------------- - | relative path from filemanager folder to upload folder - |-------------------------------------------------------------------------- - | - | with final / - | - */ - 'current_path' => '../../upload/filemanager/', - - /* - |-------------------------------------------------------------------------- - | relative path from filemanager folder to thumbs folder - |-------------------------------------------------------------------------- - | - | with final / - | DO NOT put inside upload folder - | - */ - 'thumbs_base_path' => '../../temp/', - - - /* - |-------------------------------------------------------------------------- - | FTP configuration BETA VERSION - |-------------------------------------------------------------------------- - | - | If you want enable ftp use write these parametres otherwise leave empty - | Remember to set base_url properly to point in the ftp server domain and - | upload dir will be ftp_base_folder + upload_dir so without final / - | - */ - 'ftp_host' => false, //put the FTP host - 'ftp_user' => "user", - 'ftp_pass' => "pass", - 'ftp_base_folder' => "base_folder", - 'ftp_base_url' => "http://site to ftp root", - // Directory where place files before to send to FTP with final / - 'ftp_temp_folder' => "../temp/", - /* - |--------------------------------------------------------------------------- - | path from ftp_base_folder to base of thumbs folder with start and final / - |--------------------------------------------------------------------------- - */ - 'ftp_thumbs_dir' => '/thumbs/', - 'ftp_ssl' => false, - 'ftp_port' => 21, - - /* EXAMPLE - 'ftp_host' => "host.com", - 'ftp_user' => "test@host.com", - 'ftp_pass' => "pass.1", - 'ftp_base_folder' => "", - 'ftp_base_url' => "http://host.com/testFTP", - */ - - - /* - |-------------------------------------------------------------------------- - | Access keys - |-------------------------------------------------------------------------- - | - | add access keys eg: array('myPrivateKey', 'someoneElseKey'); - | keys should only containt (a-z A-Z 0-9 \ . _ -) characters - | if you are integrating lets say to a cms for admins, i recommend making keys randomized something like this: - | $username = 'Admin'; - | $salt = 'dsflFWR9u2xQa' (a hard coded string) - | $akey = md5($username.$salt); - | DO NOT use 'key' as access key! - | Keys are CASE SENSITIVE! - | - */ - - 'access_keys' => array( 'c3cb2537d25c0efc9e573d059d79c3b8' ), - - //-------------------------------------------------------------------------------------------------------- - // YOU CAN COPY AND CHANGE THESE VARIABLES INTO FOLDERS config.php FILES TO CUSTOMIZE EACH FOLDER OPTIONS - //-------------------------------------------------------------------------------------------------------- - - /* - |-------------------------------------------------------------------------- - | Maximum size of all files in source folder - |-------------------------------------------------------------------------- - | - | in Megabytes - | - */ - 'MaxSizeTotal' => true, - - /* - |-------------------------------------------------------------------------- - | Maximum upload size - |-------------------------------------------------------------------------- - | - | in Megabytes - | - */ - 'MaxSizeUpload' => 100, - - /* - |-------------------------------------------------------------------------- - | File and Folder permission - |-------------------------------------------------------------------------- - | - */ - 'filePermission' => 0755, - 'folderPermission' => 0777, - - - /* - |-------------------------------------------------------------------------- - | default language file name - |-------------------------------------------------------------------------- - */ - 'default_language' => "pl", - - /* - |-------------------------------------------------------------------------- - | Icon theme - |-------------------------------------------------------------------------- - | - | Default available: ico and ico_dark - | Can be set to custom icon inside filemanager/img - | - */ - 'icon_theme' => "ico", - - - //Show or not total size in filemanager (is possible to greatly increase the calculations) - 'show_total_size' => false, - //Show or not show folder size in list view feature in filemanager (is possible, if there is a large folder, to greatly increase the calculations) - 'show_folder_size' => false, - //Show or not show sorting feature in filemanager - 'show_sorting_bar' => true, - //Show or not show filters button in filemanager - 'show_filter_buttons' => true, - //Show or not language selection feature in filemanager - 'show_language_selection' => true, - //active or deactive the transliteration (mean convert all strange characters in A..Za..z0..9 characters) - 'transliteration' => true, - //convert all spaces on files name and folders name with $replace_with variable - 'convert_spaces' => true, - //convert all spaces on files name and folders name this value - 'replace_with' => "-", - //convert to lowercase the files and folders name - 'lower_case' => true, - - //Add ?484899493349 (time value) to returned images to prevent cache - 'add_time_to_img' => false, - - - //******************************************* - //Images limit and resizing configuration - //******************************************* - - // set maximum pixel width and/or maximum pixel height for all images - // If you set a maximum width or height, oversized images are converted to those limits. Images smaller than the limit(s) are unaffected - // if you don't need a limit set both to 0 - 'image_max_width' => 1920, - 'image_max_height' => 1080, - 'image_max_mode' => 'auto', - /* - # $option: 0 / exact = defined size; - # 1 / portrait = keep aspect set height; - # 2 / landscape = keep aspect set width; - # 3 / auto = auto; - # 4 / crop= resize and crop; - */ - - //Automatic resizing // - // If you set $image_resizing to TRUE the script converts all uploaded images exactly to image_resizing_width x image_resizing_height dimension - // If you set width or height to 0 the script automatically calculates the other dimension - // Is possible that if you upload very big images the script not work to overcome this increase the php configuration of memory and time limit - 'image_resizing' => true, - 'image_resizing_width' => 0, - 'image_resizing_height' => 0, - 'image_resizing_mode' => 'auto', // same as $image_max_mode - 'image_resizing_override' => false, - // If set to TRUE then you can specify bigger images than $image_max_width & height otherwise if image_resizing is - // bigger than $image_max_width or height then it will be converted to those values - - - //****************** - // - // WATERMARK IMAGE - // - //Watermark url or false - 'image_watermark' => false, - # Could be a pre-determined position such as: - # tl = top left, - # t = top (middle), - # tr = top right, - # l = left, - # m = middle, - # r = right, - # bl = bottom left, - # b = bottom (middle), - # br = bottom right - # Or, it could be a co-ordinate position such as: 50x100 - 'image_watermark_position' => 'br', - # padding: If using a pre-determined position you can - # adjust the padding from the edges by passing an amount - # in pixels. If using co-ordinates, this value is ignored. - 'image_watermark_padding' => 0, - - //****************** - // Default layout setting - // - // 0 => boxes - // 1 => detailed list (1 column) - // 2 => columns list (multiple columns depending on the width of the page) - // YOU CAN ALSO PASS THIS PARAMETERS USING SESSION VAR => $_SESSION['RF']["VIEW"]= - // - //****************** - 'default_view' => 0, - - //set if the filename is truncated when overflow first row - 'ellipsis_title_after_first_row' => true, - - //************************* - //Permissions configuration - //****************** - 'delete_files' => true, - 'create_folders' => true, - 'delete_folders' => true, - 'upload_files' => true, - 'rename_files' => true, - 'rename_folders' => true, - 'duplicate_files' => true, - 'copy_cut_files' => true, // for copy/cut files - 'copy_cut_dirs' => true, // for copy/cut directories - 'chmod_files' => true, // change file permissions - 'chmod_dirs' => true, // change folder permissions - 'preview_text_files' => true, // eg.: txt, log etc. - 'edit_text_files' => true, // eg.: txt, log etc. - 'create_text_files' => true, // only create files with exts. defined in $editable_text_file_exts - - // you can preview these type of files if $preview_text_files is true - 'previewable_text_file_exts' => array( "bsh", "c","css", "cc", "cpp", "cs", "csh", "cyc", "cv", "htm", "html", "java", "js", "m", "mxml", "perl", "pl", "pm", "py", "rb", "sh", "xhtml", "xml","xsl" ), - 'previewable_text_file_exts_no_prettify' => array( 'txt', 'log' ), - - // you can edit these type of files if $edit_text_files is true (only text based files) - // you can create these type of files if $create_text_files is true (only text based files) - // if you want you can add html,css etc. - // but for security reasons it's NOT RECOMMENDED! - 'editable_text_file_exts' => array( 'txt', 'log', 'xml', 'html', 'css', 'htm', 'js' ), - - // Preview with Google Documents - 'googledoc_enabled' => true, - 'googledoc_file_exts' => array( 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx' , 'pdf', 'odt', 'odp', 'ods'), - - // defines size limit for paste in MB / operation - // set 'FALSE' for no limit - 'copy_cut_max_size' => 100, - // defines file count limit for paste / operation - // set 'FALSE' for no limit - 'copy_cut_max_count' => 200, - //IF any of these limits reached, operation won't start and generate warning - - //********************** - //Allowed extensions (lowercase insert) - //********************** - 'ext_img' => array( 'jpg', 'jpeg', 'png', 'gif', 'bmp', 'tiff', 'svg' ), //Images - 'ext_file' => array( 'doc', 'docx', 'rtf', 'pdf', 'xls', 'xlsx', 'txt', 'csv', 'html', 'xhtml', 'psd', 'sql', 'log', 'fla', 'xml', 'ade', 'adp', 'mdb', 'accdb', 'ppt', 'pptx', 'odt', 'ots', 'ott', 'odb', 'odg', 'otp', 'otg', 'odf', 'ods', 'odp', 'css', 'ai', 'kmz','dwg', 'dxf', 'hpgl', 'plt', 'spl', 'step', 'stp', 'iges', 'igs', 'sat', 'cgm'), //Files - 'ext_video' => array( 'mov', 'mpeg', 'm4v', 'mp4', 'avi', 'mpg', 'wma', "flv", "webm" ), //Video - 'ext_music' => array( 'mp3', 'mpga', 'm4a', 'ac3', 'aiff', 'mid', 'ogg', 'wav' ), //Audio - 'ext_misc' => array( 'zip', 'rar', 'gz', 'tar', 'iso', 'dmg' ), //Archives - - /****************** - * AVIARY config - *******************/ - 'aviary_active' => true, - 'aviary_apiKey' => "2444282ef4344e3dacdedc7a78f8877d", - 'aviary_language' => "en", - 'aviary_theme' => "light", - 'aviary_tools' => "all", - 'aviary_maxSize' => "1400", - // Add or modify the Aviary options below as needed - they will be json encoded when added to the configuration so arrays can be utilized as needed - - //The filter and sorter are managed through both javascript and php scripts because if you have a lot of - //file in a folder the javascript script can't sort all or filter all, so the filemanager switch to php script. - //The plugin automatic swich javascript to php when the current folder exceeds the below limit of files number - 'file_number_limit_js' => 500, - - //********************** - // Hidden files and folders - //********************** - // set the names of any folders you want hidden (eg "hidden_folder1", "hidden_folder2" ) Remember all folders with these names will be hidden (you can set any exceptions in config.php files on folders) - 'hidden_folders' => array(), - // set the names of any files you want hidden. Remember these names will be hidden in all folders (eg "this_document.pdf", "that_image.jpg" ) - 'hidden_files' => array( 'config.php' ), - - /******************* - * URL upload - *******************/ - 'url_upload' => true, - - - //************************************ - //Thumbnail for external use creation - //************************************ - - - // New image resized creation with fixed path from filemanager folder after uploading (thumbnails in fixed mode) - // If you want create images resized out of upload folder for use with external script you can choose this method, - // You can create also more than one image at a time just simply add a value in the array - // Remember than the image creation respect the folder hierarchy so if you are inside source/test/test1/ the new image will create at - // path_from_filemanager/test/test1/ - // PS if there isn't write permission in your destination folder you must set it - // - 'fixed_image_creation' => false, //activate or not the creation of one or more image resized with fixed path from filemanager folder - 'fixed_path_from_filemanager' => array( '../test/', '../test1/' ), //fixed path of the image folder from the current position on upload folder - 'fixed_image_creation_name_to_prepend' => array( '', 'test_' ), //name to prepend on filename - 'fixed_image_creation_to_append' => array( '_test', '' ), //name to appendon filename - 'fixed_image_creation_width' => array( 300, 400 ), //width of image (you can leave empty if you set height) - 'fixed_image_creation_height' => array( 200, '' ), //height of image (you can leave empty if you set width) - /* - # $option: 0 / exact = defined size; - # 1 / portrait = keep aspect set height; - # 2 / landscape = keep aspect set width; - # 3 / auto = auto; - # 4 / crop= resize and crop; - */ - 'fixed_image_creation_option' => array( 'crop', 'auto' ), //set the type of the crop - - - // New image resized creation with relative path inside to upload folder after uploading (thumbnails in relative mode) - // With Responsive filemanager you can create automatically resized image inside the upload folder, also more than one at a time - // just simply add a value in the array - // The image creation path is always relative so if i'm inside source/test/test1 and I upload an image, the path start from here - // - 'relative_image_creation' => false, //activate or not the creation of one or more image resized with relative path from upload folder - 'relative_path_from_current_pos' => array( './', './' ), //relative path of the image folder from the current position on upload folder - 'relative_image_creation_name_to_prepend' => array( '', '' ), //name to prepend on filename - 'relative_image_creation_name_to_append' => array( '_thumb', '_thumb1' ), //name to append on filename - 'relative_image_creation_width' => array( 300, 400 ), //width of image (you can leave empty if you set height) - 'relative_image_creation_height' => array( 200, '' ), //height of image (you can leave empty if you set width) - /* - # $option: 0 / exact = defined size; - # 1 / portrait = keep aspect set height; - # 2 / landscape = keep aspect set width; - # 3 / auto = auto; - # 4 / crop= resize and crop; - */ - 'relative_image_creation_option' => array( 'crop', 'crop' ), //set the type of the crop - - - // Remember text filter after close filemanager for future session - 'remember_text_filter' => false, - -); - -return array_merge( - $config, - array( - 'ext'=> array_merge( - $config['ext_img'], - $config['ext_file'], - $config['ext_misc'], - $config['ext_video'], - $config['ext_music'] - ), - // For a list of options see: https://developers.aviary.com/docs/web/setup-guide#constructor-config - 'aviary_defaults_config' => array( - 'apiKey' => $config['aviary_apiKey'], - 'language' => $config['aviary_language'], - 'theme' => $config['aviary_theme'], - 'tools' => $config['aviary_tools'], - 'maxSize' => $config['aviary_maxSize'] - ), - ) -); -?> diff --git a/libraries/filemanager-9.12.1/css/jquery.fileupload-noscript.css b/libraries/filemanager-9.12.1/css/jquery.fileupload-noscript.css deleted file mode 100644 index 2409bfb..0000000 --- a/libraries/filemanager-9.12.1/css/jquery.fileupload-noscript.css +++ /dev/null @@ -1,22 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload Plugin NoScript CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -.fileinput-button input { - position: static; - opacity: 1; - filter: none; - font-size: inherit !important; - direction: inherit; -} -.fileinput-button span { - display: none; -} diff --git a/libraries/filemanager-9.12.1/css/jquery.fileupload-ui-noscript.css b/libraries/filemanager-9.12.1/css/jquery.fileupload-ui-noscript.css deleted file mode 100644 index 30651ac..0000000 --- a/libraries/filemanager-9.12.1/css/jquery.fileupload-ui-noscript.css +++ /dev/null @@ -1,17 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload UI Plugin NoScript CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -.fileinput-button i, -.fileupload-buttonbar .delete, -.fileupload-buttonbar .toggle { - display: none; -} diff --git a/libraries/filemanager-9.12.1/css/jquery.fileupload-ui.css b/libraries/filemanager-9.12.1/css/jquery.fileupload-ui.css deleted file mode 100644 index 5bb9e42..0000000 --- a/libraries/filemanager-9.12.1/css/jquery.fileupload-ui.css +++ /dev/null @@ -1,53 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload UI Plugin CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -.fileupload-buttonbar .btn, -.fileupload-buttonbar .toggle { - margin-bottom: 5px; -} - -.fileupload-process { - float: right; - display: none; -} -.fileupload-processing .fileupload-process, -.files .processing .preview { - display: block; - width: 32px; - height: 32px; - background: url("../img/loading.gif") center no-repeat; - background-size: contain; -} -.files audio, -.files video { - max-width: 300px; -} - -@media (max-width: 767px) { - .fileupload-buttonbar .toggle, - .files .toggle, - .files .btn span { - display: none; - } - .files .name { - width: 80px; - word-wrap: break-word; - } - .files audio, - .files video { - max-width: 80px; - } - .files img, - .files canvas { - max-width: 100%; - } -} diff --git a/libraries/filemanager-9.12.1/css/jquery.fileupload.css b/libraries/filemanager-9.12.1/css/jquery.fileupload.css deleted file mode 100644 index 8ae3b09..0000000 --- a/libraries/filemanager-9.12.1/css/jquery.fileupload.css +++ /dev/null @@ -1,37 +0,0 @@ -@charset "UTF-8"; -/* - * jQuery File Upload Plugin CSS - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -.fileinput-button { - position: relative; - overflow: hidden; - display: inline-block; -} -.fileinput-button input { - position: absolute; - top: 0; - right: 0; - margin: 0; - opacity: 0; - -ms-filter: 'alpha(opacity=0)'; - font-size: 200px !important; - direction: ltr; - cursor: pointer; -} - -/* Fixes for IE < 8 */ -@media screen\9 { - .fileinput-button input { - filter: alpha(opacity=0); - font-size: 100%; - height: 100%; - } -} diff --git a/libraries/filemanager-9.12.1/css/rtl-style.css b/libraries/filemanager-9.12.1/css/rtl-style.css deleted file mode 100644 index eb67f80674165af297fad515355294cf31e30b56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6224 zcmd5=U2oGc6ur+#{D(5$wk2Kn0b>YW5J*S}B-jf=JhW@pR!h^WNnvc_uLI{e^|OH!&?jlntPc}OTJ)F3~ni&U3r1uDc%zKs_0UaT2C41Un@Ozv125I z1(z7#FY(=!^bGt1V2+@_E3Bn<3&eqvu?x5ict-MzF5B>}M zo9q7+lHaEX^;G;aGvyhjh!AF*6u!dPVodX0#~(dEg0J0Y9=n7u#|qI5I9teD8FD7G zA>Zu$s&NOvY~~Hd?*LKG4E6})G4@X&TZVPa$7VhWF*nEV7#1`4*_@b3nK?6+{d{@J zq@(9uyf&4Bn~f)3U}cUDU?VrLQzyBWBFy&{st9&uMh&5*T+;P+=XsZvCWW4IZ`p)S z0u;=ro1vH}`!WaX8k25FiBjCu#6kZUC{1!?>cX|(YJc0tl3Ir@*YA+256ujf@14j2 zv~|7kVO^WF$FVkdRqRik6@|BP&50ZuRCE=u=R4Z-s_{Pc;+c%yxg1iIYI5IS_nXb#3rCRI9jrhqC&OX~?_vNE% z^d0c^#bsTuIdEzdt6GZK59Aw05zf6GX}PPD4Jq4=t@%QE>f)H? z?KyVV*Acl&QooEYLf*>yc!-d7(B|x-bXS`a9WALVt8iB9b127+*oAaf$<7n=RMpvz zkpZ=ZiW{KzcG}U-IC^ca0|ifvY(^>NcTXrlms?7&o=er@E<)$47M>sYMz zkmgQxWe<4_>*swp_M)i8F*NGCx!tN+U$3i(z@n>GjuT&GyEV+!LsiD+xy6)6XD@e8 zfzGU4+Rxaj;%$I;=oE6ZyT%)J7d<+9my4*nr^x%Kk216GMCoq^iXmucs91Y>e5$7maYkbktR~nzf z2JGhYoRQyS=kgNVM))oFbe8idbMRpf!HssV=E_y<+^`>;VCli,ul.inline>li{display:inline-block;padding-left:5px;padding-right:5px}dl{margin-bottom:20px}dd,dt{line-height:20px}dt{font-weight:700}dd{margin-left:10px}.dl-horizontal:after,.dl-horizontal:before{display:table;content:"";line-height:0}.dl-horizontal:after{clear:both}.dl-horizontal dt{float:left;width:160px;clear:left;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dl-horizontal dd{margin-left:180px}hr{margin:20px 0;border:0;border-top:1px solid #eee;border-bottom:1px solid #fff}abbr[data-original-title],abbr[title]{cursor:help;border-bottom:1px dotted #999}abbr.initialism{font-size:90%;text-transform:uppercase}blockquote{padding:0 0 0 15px;margin:0 0 20px;border-left:5px solid #eee}blockquote p{margin-bottom:0;font-size:17.5px;font-weight:300;line-height:1.25}blockquote small{display:block;line-height:20px;color:#999}blockquote small:before{content:"\2014 \00A0"}blockquote.pull-right{float:right;padding-right:15px;padding-left:0;border-right:5px solid #eee;border-left:0}blockquote.pull-right p,blockquote.pull-right small{text-align:right}blockquote.pull-right small:before{content:""}blockquote.pull-right small:after{content:"\00A0 \2014"}blockquote:after,blockquote:before,q:after,q:before{content:""}address{display:block;margin-bottom:20px;font-style:normal;line-height:20px}code,pre{padding:0 3px 2px;font-family:Monaco,Menlo,Consolas,Courier New,monospace;font-size:12px;color:#333;border-radius:3px}code{padding:2px 4px;color:#d14;background-color:#f7f7f9;border:1px solid #e1e1e8;white-space:nowrap}pre{display:block;padding:9.5px;margin:0 0 10px;font-size:13px;line-height:20px;word-break:break-all;word-wrap:break-word;white-space:pre;white-space:pre-wrap;background-color:#f5f5f5;border:1px solid #ccc;border:1px solid rgba(0,0,0,.15);border-radius:4px}pre.prettyprint{margin-bottom:20px}pre code{padding:0;color:inherit;white-space:pre;white-space:pre-wrap;background-color:transparent;border:0}.pre-scrollable{max-height:340px;overflow-y:scroll}form{margin:0 0 20px}fieldset{margin:0}fieldset,legend{padding:0;border:0}legend{display:block;width:100%;margin-bottom:20px;font-size:21px;line-height:40px;color:#333;border-bottom:1px solid #e5e5e5}legend small{font-size:15px;color:#999}button,input,label,select,textarea{font-size:14px;font-weight:400;line-height:20px}button,input,select,textarea{font-family:Helvetica Neue,Helvetica,Arial,sans-serif}label{display:block;margin-bottom:5px}.uneditable-input,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],select,textarea{display:inline-block;height:20px;padding:4px 6px;margin-bottom:10px;font-size:14px;line-height:20px;color:#555;border-radius:4px;vertical-align:middle}.uneditable-input,input,textarea{width:206px}textarea{height:auto}.uneditable-input,input[type=color],input[type=date],input[type=datetime-local],input[type=datetime],input[type=email],input[type=month],input[type=number],input[type=password],input[type=search],input[type=tel],input[type=text],input[type=time],input[type=url],input[type=week],textarea{background-color:#fff;border:1px solid #ccc;box-shadow:inset 0 1px 1px rgba(0,0,0,.075);transition:border .2s linear,box-shadow .2s linear}.uneditable-input:focus,input[type=color]:focus,input[type=date]:focus,input[type=datetime-local]:focus,input[type=datetime]:focus,input[type=email]:focus,input[type=month]:focus,input[type=number]:focus,input[type=password]:focus,input[type=search]:focus,input[type=tel]:focus,input[type=text]:focus,input[type=time]:focus,input[type=url]:focus,input[type=week]:focus,textarea:focus{border-color:rgba(82,168,236,.8);outline:0;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(82,168,236,.6)}input[type=checkbox],input[type=radio]{margin:4px 0 0;line-height:normal}input[type=button],input[type=checkbox],input[type=file],input[type=image],input[type=radio],input[type=reset],input[type=submit]{width:auto}input[type=file],select{height:30px;line-height:30px}select{width:220px;border:1px solid #ccc;background-color:#fff}select[multiple],select[size]{height:auto}input[type=checkbox]:focus,input[type=file]:focus,input[type=radio]:focus,select:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.uneditable-input,.uneditable-textarea{color:#999;background-color:#fcfcfc;border-color:#ccc;box-shadow:inset 0 1px 2px rgba(0,0,0,.025);cursor:not-allowed}.uneditable-input{overflow:hidden;white-space:nowrap}.uneditable-textarea{width:auto;height:auto}input:-moz-placeholder,textarea:-moz-placeholder{color:#999}input:-ms-input-placeholder,textarea:-ms-input-placeholder{color:#999}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#999}.checkbox,.radio{min-height:20px;padding-left:20px}.checkbox input[type=checkbox],.radio input[type=radio]{float:left;margin-left:-20px}.controls>.checkbox:first-child,.controls>.radio:first-child{padding-top:5px}.checkbox.inline,.radio.inline{display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle}.checkbox.inline+.checkbox.inline,.radio.inline+.radio.inline{margin-left:10px}.input-mini{width:60px}.input-small{width:90px}.input-medium{width:150px}.input-large{width:210px}.input-xlarge{width:270px}.input-xxlarge{width:530px}.row-fluid .uneditable-input[class*=span],.row-fluid input[class*=span],.row-fluid select[class*=span],.row-fluid textarea[class*=span],.uneditable-input[class*=span],input[class*=span],select[class*=span],textarea[class*=span]{float:none;margin-left:0}.input-append .uneditable-input[class*=span],.input-append input[class*=span],.input-prepend .uneditable-input[class*=span],.input-prepend input[class*=span],.row-fluid .input-append [class*=span],.row-fluid .input-prepend [class*=span],.row-fluid .uneditable-input[class*=span],.row-fluid input[class*=span],.row-fluid select[class*=span],.row-fluid textarea[class*=span]{display:inline-block}.uneditable-input,input,textarea{margin-left:0}.controls-row [class*=span]+[class*=span]{margin-left:20px}.uneditable-input.span12,input.span12,textarea.span12{width:926px}.uneditable-input.span11,input.span11,textarea.span11{width:846px}.uneditable-input.span10,input.span10,textarea.span10{width:766px}.uneditable-input.span9,input.span9,textarea.span9{width:686px}.uneditable-input.span8,input.span8,textarea.span8{width:606px}.uneditable-input.span7,input.span7,textarea.span7{width:526px}.uneditable-input.span6,input.span6,textarea.span6{width:446px}.uneditable-input.span5,input.span5,textarea.span5{width:366px}.uneditable-input.span4,input.span4,textarea.span4{width:286px}.uneditable-input.span3,input.span3,textarea.span3{width:206px}.uneditable-input.span2,input.span2,textarea.span2{width:126px}.uneditable-input.span1,input.span1,textarea.span1{width:46px}.controls-row:after,.controls-row:before{display:table;content:"";line-height:0}.controls-row:after{clear:both}.controls-row [class*=span],.row-fluid .controls-row [class*=span]{float:left}.controls-row .checkbox[class*=span],.controls-row .radio[class*=span]{padding-top:5px}input[disabled],input[readonly],select[disabled],select[readonly],textarea[disabled],textarea[readonly]{cursor:not-allowed;background-color:#eee}input[type=checkbox][disabled],input[type=checkbox][readonly],input[type=radio][disabled],input[type=radio][readonly]{background-color:transparent}.control-group.warning .checkbox,.control-group.warning .control-label,.control-group.warning .help-block,.control-group.warning .help-inline,.control-group.warning .radio,.control-group.warning input,.control-group.warning select,.control-group.warning textarea{color:#c09853}.control-group.warning input,.control-group.warning select,.control-group.warning textarea{border-color:#c09853;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.warning input:focus,.control-group.warning select:focus,.control-group.warning textarea:focus{border-color:#a47e3c;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #dbc59e}.control-group.warning .input-append .add-on,.control-group.warning .input-prepend .add-on{color:#c09853;background-color:#fcf8e3;border-color:#c09853}.control-group.error .checkbox,.control-group.error .control-label,.control-group.error .help-block,.control-group.error .help-inline,.control-group.error .radio,.control-group.error input,.control-group.error select,.control-group.error textarea{color:#b94a48}.control-group.error input,.control-group.error select,.control-group.error textarea{border-color:#b94a48;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.error input:focus,.control-group.error select:focus,.control-group.error textarea:focus{border-color:#953b39;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #d59392}.control-group.error .input-append .add-on,.control-group.error .input-prepend .add-on{color:#b94a48;background-color:#f2dede;border-color:#b94a48}.control-group.success .checkbox,.control-group.success .control-label,.control-group.success .help-block,.control-group.success .help-inline,.control-group.success .radio,.control-group.success input,.control-group.success select,.control-group.success textarea{color:#468847}.control-group.success input,.control-group.success select,.control-group.success textarea{border-color:#468847;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.success input:focus,.control-group.success select:focus,.control-group.success textarea:focus{border-color:#356635;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7aba7b}.control-group.success .input-append .add-on,.control-group.success .input-prepend .add-on{color:#468847;background-color:#dff0d8;border-color:#468847}.control-group.info .checkbox,.control-group.info .control-label,.control-group.info .help-block,.control-group.info .help-inline,.control-group.info .radio,.control-group.info input,.control-group.info select,.control-group.info textarea{color:#3a87ad}.control-group.info input,.control-group.info select,.control-group.info textarea{border-color:#3a87ad;box-shadow:inset 0 1px 1px rgba(0,0,0,.075)}.control-group.info input:focus,.control-group.info select:focus,.control-group.info textarea:focus{border-color:#2d6987;box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 6px #7ab5d3}.control-group.info .input-append .add-on,.control-group.info .input-prepend .add-on{color:#3a87ad;background-color:#d9edf7;border-color:#3a87ad}input:focus:invalid,select:focus:invalid,textarea:focus:invalid{color:#b94a48;border-color:#ee5f5b}input:focus:invalid:focus,select:focus:invalid:focus,textarea:focus:invalid:focus{border-color:#e9322d;box-shadow:0 0 6px #f8b9b7}.form-actions{padding:19px 20px 20px;margin-top:20px;margin-bottom:20px;background-color:#f5f5f5;border-top:1px solid #e5e5e5}.form-actions:after,.form-actions:before{display:table;content:"";line-height:0}.form-actions:after{clear:both}.help-block,.help-inline{color:#595959}.help-block{display:block;margin-bottom:10px}.help-inline{padding-left:5px}.help-inline,.input-append,.input-prepend{display:inline-block;vertical-align:middle}.input-append,.input-prepend{margin-bottom:10px;font-size:0;white-space:nowrap}.input-append .dropdown-menu,.input-append .popover,.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .dropdown-menu,.input-prepend .popover,.input-prepend .uneditable-input,.input-prepend input,.input-prepend select{font-size:14px}.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .uneditable-input,.input-prepend input,.input-prepend select{position:relative;margin-bottom:0;vertical-align:top;border-radius:0 4px 4px 0}.input-append .uneditable-input:focus,.input-append input:focus,.input-append select:focus,.input-prepend .uneditable-input:focus,.input-prepend input:focus,.input-prepend select:focus{z-index:2}.input-append .add-on,.input-prepend .add-on{display:inline-block;width:auto;height:20px;min-width:16px;padding:4px 5px;font-size:14px;font-weight:400;line-height:20px;text-align:center;text-shadow:0 1px 0 #fff;background-color:#eee;border:1px solid #ccc}.input-append .add-on,.input-append .btn,.input-append .btn-group>.dropdown-toggle,.input-prepend .add-on,.input-prepend .btn,.input-prepend .btn-group>.dropdown-toggle{vertical-align:top;border-radius:0}.input-append .active,.input-prepend .active{background-color:#a9dba9;border-color:#46a546}.input-prepend .add-on,.input-prepend .btn{margin-right:-1px}.input-append .uneditable-input,.input-append input,.input-append select,.input-prepend .add-on:first-child,.input-prepend .btn:first-child{border-radius:4px 0 0 4px}.input-append .uneditable-input+.btn-group .btn:last-child,.input-append input+.btn-group .btn:last-child,.input-append select+.btn-group .btn:last-child{border-radius:0 4px 4px 0}.input-append .add-on,.input-append .btn,.input-append .btn-group{margin-left:-1px}.input-append .add-on:last-child,.input-append .btn-group:last-child>.dropdown-toggle,.input-append .btn:last-child{border-radius:0 4px 4px 0}.input-prepend.input-append .uneditable-input,.input-prepend.input-append input,.input-prepend.input-append select{border-radius:0}.input-prepend.input-append .uneditable-input+.btn-group .btn,.input-prepend.input-append input+.btn-group .btn,.input-prepend.input-append select+.btn-group .btn{border-radius:0 4px 4px 0}.input-prepend.input-append .add-on:first-child,.input-prepend.input-append .btn:first-child{margin-right:-1px;border-radius:4px 0 0 4px}.input-prepend.input-append .add-on:last-child,.input-prepend.input-append .btn:last-child{margin-left:-1px;border-radius:0 4px 4px 0}.input-prepend.input-append .btn-group:first-child{margin-left:0}input.search-query{padding-right:14px;padding-left:14px;margin-bottom:0;border-radius:15px}.form-search .input-append .search-query{border-radius:14px 0 0 14px}.form-search .input-append .btn,.form-search .input-prepend .search-query{border-radius:0 14px 14px 0}.form-search .input-prepend .btn{border-radius:14px 0 0 14px}.form-horizontal .help-inline,.form-horizontal .input-append,.form-horizontal .input-prepend,.form-horizontal .uneditable-input,.form-horizontal input,.form-horizontal select,.form-horizontal textarea,.form-inline .help-inline,.form-inline .input-append,.form-inline .input-prepend,.form-inline .uneditable-input,.form-inline input,.form-inline select,.form-inline textarea,.form-search .help-inline,.form-search .input-append,.form-search .input-prepend,.form-search .uneditable-input,.form-search input,.form-search select,.form-search textarea{display:inline-block;margin-bottom:0;vertical-align:middle}.form-horizontal .hide,.form-inline .hide,.form-search .hide{display:none}.form-inline .btn-group,.form-inline label,.form-search .btn-group,.form-search label{display:inline-block}.form-inline .input-append,.form-inline .input-prepend,.form-search .input-append,.form-search .input-prepend{margin-bottom:0}.form-inline .checkbox,.form-inline .radio,.form-search .checkbox,.form-search .radio{padding-left:0;margin-bottom:0;vertical-align:middle}.form-inline .checkbox input[type=checkbox],.form-inline .radio input[type=radio],.form-search .checkbox input[type=checkbox],.form-search .radio input[type=radio]{float:left;margin-right:3px;margin-left:0}.control-group{margin-bottom:10px}legend+.control-group{margin-top:20px;-webkit-margin-top-collapse:separate}.form-horizontal .control-group{margin-bottom:20px}.form-horizontal .control-group:after,.form-horizontal .control-group:before{display:table;content:"";line-height:0}.form-horizontal .control-group:after{clear:both}.form-horizontal .control-label{float:left;width:160px;padding-top:5px;text-align:right}.form-horizontal .controls{margin-left:180px}.form-horizontal .help-block{margin-bottom:0}.form-horizontal .input-append+.help-block,.form-horizontal .input-prepend+.help-block,.form-horizontal .uneditable-input+.help-block,.form-horizontal input+.help-block,.form-horizontal select+.help-block,.form-horizontal textarea+.help-block{margin-top:10px}.form-horizontal .form-actions{padding-left:180px}table{max-width:100%;background-color:transparent;border-collapse:collapse;border-spacing:0}.table{width:100%;margin-bottom:20px}.table td,.table th{padding:8px;line-height:20px;text-align:left;vertical-align:top;border-top:1px solid #ddd}.table th{font-weight:700}.table thead th{vertical-align:bottom}.table caption+thead tr:first-child td,.table caption+thead tr:first-child th,.table colgroup+thead tr:first-child td,.table colgroup+thead tr:first-child th,.table thead:first-child tr:first-child td,.table thead:first-child tr:first-child th{border-top:0}.table tbody+tbody{border-top:2px solid #ddd}.table .table{background-color:#fff}.table-condensed td,.table-condensed th{padding:4px 5px}.table-bordered{border:1px solid #ddd;border-collapse:separate;border-left:0;border-radius:4px}.table-bordered td,.table-bordered th{border-left:1px solid #ddd}.table-bordered caption+tbody tr:first-child td,.table-bordered caption+tbody tr:first-child th,.table-bordered caption+thead tr:first-child th,.table-bordered colgroup+tbody tr:first-child td,.table-bordered colgroup+tbody tr:first-child th,.table-bordered colgroup+thead tr:first-child th,.table-bordered tbody:first-child tr:first-child td,.table-bordered tbody:first-child tr:first-child th,.table-bordered thead:first-child tr:first-child th{border-top:0}.table-bordered tbody:first-child tr:first-child>td:first-child,.table-bordered tbody:first-child tr:first-child>th:first-child,.table-bordered thead:first-child tr:first-child>th:first-child{border-top-left-radius:4px}.table-bordered tbody:first-child tr:first-child>td:last-child,.table-bordered tbody:first-child tr:first-child>th:last-child,.table-bordered thead:first-child tr:first-child>th:last-child{border-top-right-radius:4px}.table-bordered tbody:last-child tr:last-child>td:first-child,.table-bordered tbody:last-child tr:last-child>th:first-child,.table-bordered tfoot:last-child tr:last-child>td:first-child,.table-bordered tfoot:last-child tr:last-child>th:first-child,.table-bordered thead:last-child tr:last-child>th:first-child{border-bottom-left-radius:4px}.table-bordered tbody:last-child tr:last-child>td:last-child,.table-bordered tbody:last-child tr:last-child>th:last-child,.table-bordered tfoot:last-child tr:last-child>td:last-child,.table-bordered tfoot:last-child tr:last-child>th:last-child,.table-bordered thead:last-child tr:last-child>th:last-child{border-bottom-right-radius:4px}.table-bordered tfoot+tbody:last-child tr:last-child td:first-child{border-bottom-left-radius:0}.table-bordered tfoot+tbody:last-child tr:last-child td:last-child{border-bottom-right-radius:0}.table-bordered caption+tbody tr:first-child td:first-child,.table-bordered caption+thead tr:first-child th:first-child,.table-bordered colgroup+tbody tr:first-child td:first-child,.table-bordered colgroup+thead tr:first-child th:first-child{border-top-left-radius:4px}.table-bordered caption+tbody tr:first-child td:last-child,.table-bordered caption+thead tr:first-child th:last-child,.table-bordered colgroup+tbody tr:first-child td:last-child,.table-bordered colgroup+thead tr:first-child th:last-child{border-top-right-radius:4px}.table-striped tbody>tr:nth-child(odd)>td,.table-striped tbody>tr:nth-child(odd)>th{background-color:#f9f9f9}.table-hover tbody tr:hover>td,.table-hover tbody tr:hover>th{background-color:#f5f5f5}.row-fluid table td[class*=span],.row-fluid table th[class*=span],table td[class*=span],table th[class*=span]{display:table-cell;float:none;margin-left:0}.table td.span1,.table th.span1{float:none;width:44px;margin-left:0}.table td.span2,.table th.span2{float:none;width:124px;margin-left:0}.table td.span3,.table th.span3{float:none;width:204px;margin-left:0}.table td.span4,.table th.span4{float:none;width:284px;margin-left:0}.table td.span5,.table th.span5{float:none;width:364px;margin-left:0}.table td.span6,.table th.span6{float:none;width:444px;margin-left:0}.table td.span7,.table th.span7{float:none;width:524px;margin-left:0}.table td.span8,.table th.span8{float:none;width:604px;margin-left:0}.table td.span9,.table th.span9{float:none;width:684px;margin-left:0}.table td.span10,.table th.span10{float:none;width:764px;margin-left:0}.table td.span11,.table th.span11{float:none;width:844px;margin-left:0}.table td.span12,.table th.span12{float:none;width:924px;margin-left:0}.table tbody tr.success>td{background-color:#dff0d8}.table tbody tr.error>td{background-color:#f2dede}.table tbody tr.warning>td{background-color:#fcf8e3}.table tbody tr.info>td{background-color:#d9edf7}.table-hover tbody tr.success:hover>td{background-color:#d0e9c6}.table-hover tbody tr.error:hover>td{background-color:#ebcccc}.table-hover tbody tr.warning:hover>td{background-color:#faf2cc}.table-hover tbody tr.info:hover>td{background-color:#c4e3f3}[class*=" icon-"],[class^=icon-]{display:inline-block;width:14px;height:14px;line-height:14px;vertical-align:text-top;background-image:url(../img/glyphicons-halflings.png);background-position:14px 14px;background-repeat:no-repeat;margin-top:1px}.dropdown-menu>.active>a>[class*=" icon-"],.dropdown-menu>.active>a>[class^=icon-],.dropdown-menu>li>a:focus>[class*=" icon-"],.dropdown-menu>li>a:focus>[class^=icon-],.dropdown-menu>li>a:hover>[class*=" icon-"],.dropdown-menu>li>a:hover>[class^=icon-],.dropdown-submenu:focus>a>[class*=" icon-"],.dropdown-submenu:focus>a>[class^=icon-],.dropdown-submenu:hover>a>[class*=" icon-"],.dropdown-submenu:hover>a>[class^=icon-],.icon-white,.nav-list>.active>a>[class*=" icon-"],.nav-list>.active>a>[class^=icon-],.nav-pills>.active>a>[class*=" icon-"],.nav-pills>.active>a>[class^=icon-],.navbar-inverse .nav>.active>a>[class*=" icon-"],.navbar-inverse .nav>.active>a>[class^=icon-]{background-image:url(../img/glyphicons-halflings-white.png)}.icon-glass{background-position:0 0}.icon-music{background-position:-24px 0}.icon-search{background-position:-48px 0}.icon-envelope{background-position:-72px 0}.icon-heart{background-position:-96px 0}.icon-star{background-position:-120px 0}.icon-star-empty{background-position:-144px 0}.icon-user{background-position:-168px 0}.icon-film{background-position:-192px 0}.icon-th-large{background-position:-216px 0}.icon-th{background-position:-240px 0}.icon-th-list{background-position:-264px 0}.icon-ok{background-position:-288px 0}.icon-remove{background-position:-312px 0}.icon-zoom-in{background-position:-336px 0}.icon-zoom-out{background-position:-360px 0}.icon-off{background-position:-384px 0}.icon-signal{background-position:-408px 0}.icon-cog{background-position:-432px 0}.icon-trash{background-position:-456px 0}.icon-home{background-position:0 -24px}.icon-file{background-position:-24px -24px}.icon-time{background-position:-48px -24px}.icon-road{background-position:-72px -24px}.icon-download-alt{background-position:-96px -24px}.icon-download{background-position:-120px -24px}.icon-upload{background-position:-144px -24px}.icon-inbox{background-position:-168px -24px}.icon-play-circle{background-position:-192px -24px}.icon-repeat{background-position:-216px -24px}.icon-refresh{background-position:-240px -24px}.icon-list-alt{background-position:-264px -24px}.icon-lock{background-position:-287px -24px}.icon-flag{background-position:-312px -24px}.icon-headphones{background-position:-336px -24px}.icon-volume-off{background-position:-360px -24px}.icon-volume-down{background-position:-384px -24px}.icon-volume-up{background-position:-408px -24px}.icon-qrcode{background-position:-432px -24px}.icon-barcode{background-position:-456px -24px}.icon-tag{background-position:0 -48px}.icon-tags{background-position:-25px -48px}.icon-book{background-position:-48px -48px}.icon-bookmark{background-position:-72px -48px}.icon-print{background-position:-96px -48px}.icon-camera{background-position:-120px -48px}.icon-font{background-position:-144px -48px}.icon-bold{background-position:-167px -48px}.icon-italic{background-position:-192px -48px}.icon-text-height{background-position:-216px -48px}.icon-text-width{background-position:-240px -48px}.icon-align-left{background-position:-264px -48px}.icon-align-center{background-position:-288px -48px}.icon-align-right{background-position:-312px -48px}.icon-align-justify{background-position:-336px -48px}.icon-list{background-position:-360px -48px}.icon-indent-left{background-position:-384px -48px}.icon-indent-right{background-position:-408px -48px}.icon-facetime-video{background-position:-432px -48px}.icon-picture{background-position:-456px -48px}.icon-pencil{background-position:0 -72px}.icon-map-marker{background-position:-24px -72px}.icon-adjust{background-position:-48px -72px}.icon-tint{background-position:-72px -72px}.icon-edit{background-position:-96px -72px}.icon-share{background-position:-120px -72px}.icon-check{background-position:-144px -72px}.icon-move{background-position:-168px -72px}.icon-step-backward{background-position:-192px -72px}.icon-fast-backward{background-position:-216px -72px}.icon-backward{background-position:-240px -72px}.icon-play{background-position:-264px -72px}.icon-pause{background-position:-288px -72px}.icon-stop{background-position:-312px -72px}.icon-forward{background-position:-336px -72px}.icon-fast-forward{background-position:-360px -72px}.icon-step-forward{background-position:-384px -72px}.icon-eject{background-position:-408px -72px}.icon-chevron-left{background-position:-432px -72px}.icon-chevron-right{background-position:-456px -72px}.icon-plus-sign{background-position:0 -96px}.icon-minus-sign{background-position:-24px -96px}.icon-remove-sign{background-position:-48px -96px}.icon-ok-sign{background-position:-72px -96px}.icon-question-sign{background-position:-96px -96px}.icon-info-sign{background-position:-120px -96px}.icon-screenshot{background-position:-144px -96px}.icon-remove-circle{background-position:-168px -96px}.icon-ok-circle{background-position:-192px -96px}.icon-ban-circle{background-position:-216px -96px}.icon-arrow-left{background-position:-240px -96px}.icon-arrow-right{background-position:-264px -96px}.icon-arrow-up{background-position:-289px -96px}.icon-arrow-down{background-position:-312px -96px}.icon-share-alt{background-position:-336px -96px}.icon-resize-full{background-position:-360px -96px}.icon-resize-small{background-position:-384px -96px}.icon-plus{background-position:-408px -96px}.icon-minus{background-position:-433px -96px}.icon-asterisk{background-position:-456px -96px}.icon-exclamation-sign{background-position:0 -120px}.icon-gift{background-position:-24px -120px}.icon-leaf{background-position:-48px -120px}.icon-fire{background-position:-72px -120px}.icon-eye-open{background-position:-96px -120px}.icon-eye-close{background-position:-120px -120px}.icon-warning-sign{background-position:-144px -120px}.icon-plane{background-position:-168px -120px}.icon-calendar{background-position:-192px -120px}.icon-random{background-position:-216px -120px;width:16px}.icon-comment{background-position:-240px -120px}.icon-magnet{background-position:-264px -120px}.icon-chevron-up{background-position:-288px -120px}.icon-chevron-down{background-position:-313px -119px}.icon-retweet{background-position:-336px -120px}.icon-shopping-cart{background-position:-360px -120px}.icon-folder-close{background-position:-384px -120px;width:16px}.icon-folder-open{background-position:-408px -120px;width:16px}.icon-resize-vertical{background-position:-432px -119px}.icon-resize-horizontal{background-position:-456px -118px}.icon-hdd{background-position:0 -144px}.icon-bullhorn{background-position:-24px -144px}.icon-bell{background-position:-48px -144px}.icon-certificate{background-position:-72px -144px}.icon-thumbs-up{background-position:-96px -144px}.icon-thumbs-down{background-position:-120px -144px}.icon-hand-right{background-position:-144px -144px}.icon-hand-left{background-position:-168px -144px}.icon-hand-up{background-position:-192px -144px}.icon-hand-down{background-position:-216px -144px}.icon-circle-arrow-right{background-position:-240px -144px}.icon-circle-arrow-left{background-position:-264px -144px}.icon-circle-arrow-up{background-position:-288px -144px}.icon-circle-arrow-down{background-position:-312px -144px}.icon-globe{background-position:-336px -144px}.icon-wrench{background-position:-360px -144px}.icon-tasks{background-position:-384px -144px}.icon-filter{background-position:-408px -144px}.icon-briefcase{background-position:-432px -144px}.icon-fullscreen{background-position:-456px -144px}.dropdown,.dropup{position:relative}.dropdown-toggle:active,.open .dropdown-toggle{outline:0}.caret{display:inline-block;width:0;height:0;vertical-align:top;border-top:4px solid #000;border-right:4px solid transparent;border-left:4px solid transparent;content:""}.dropdown .caret{margin-top:8px;margin-left:2px}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:160px;padding:5px 0;margin:2px 0 0;list-style:none;background-color:#fff;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2);background-clip:padding-box}.dropdown-menu.pull-right{right:0;left:auto}.dropdown-menu .divider{height:1px;margin:9px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.dropdown-menu>li>a{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:20px;color:#333;white-space:nowrap}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover,.dropdown-menu>li>a:focus,.dropdown-menu>li>a:hover,.dropdown-submenu:focus>a,.dropdown-submenu:hover>a{text-decoration:none;color:#fff;background-color:#0081c2;background-image:linear-gradient(180deg,#08c,#0077b3);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff0088cc",endColorstr="#ff0077b3",GradientType=0)}.dropdown-menu>.active>a,.dropdown-menu>.active>a:focus,.dropdown-menu>.active>a:hover{outline:0}.dropdown-menu>.disabled>a,.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{color:#999}.dropdown-menu>.disabled>a:focus,.dropdown-menu>.disabled>a:hover{text-decoration:none;background-color:transparent;background-image:none;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);cursor:default}.open>.dropdown-menu{display:block}.pull-right>.dropdown-menu{right:0;left:auto}.dropup .caret,.navbar-fixed-bottom .dropdown .caret{border-top:0;border-bottom:4px solid #000;content:""}.dropup .dropdown-menu,.navbar-fixed-bottom .dropdown .dropdown-menu{top:auto;bottom:100%;margin-bottom:1px}.dropdown-submenu{position:relative}.dropdown-submenu>.dropdown-menu{top:0;left:100%;margin-top:-6px;margin-left:-1px;border-radius:0 6px 6px}.dropdown-submenu:hover>.dropdown-menu{display:block}.dropup .dropdown-submenu>.dropdown-menu{top:auto;bottom:0;margin-top:0;margin-bottom:-2px;border-radius:5px 5px 5px 0}.dropdown-submenu>a:after{display:block;content:" ";float:right;width:0;height:0;border-color:transparent;border-style:solid;border-width:5px 0 5px 5px;border-left-color:#ccc;margin-top:5px;margin-right:-10px}.dropdown-submenu:hover>a:after{border-left-color:#fff}.dropdown-submenu.pull-left{float:none}.dropdown-submenu.pull-left>.dropdown-menu{left:-100%;margin-left:10px;border-radius:6px 0 6px 6px}.dropdown .dropdown-menu .nav-header{padding-left:20px;padding-right:20px}.typeahead{z-index:1051;margin-top:2px;border-radius:4px}.well{min-height:20px;padding:19px;margin-bottom:20px;background-color:#f5f5f5;border:1px solid #e3e3e3;border-radius:4px;box-shadow:inset 0 1px 1px rgba(0,0,0,.05)}.well blockquote{border-color:#ddd;border-color:rgba(0,0,0,.15)}.well-large{padding:24px;border-radius:6px}.well-small{padding:9px;border-radius:3px}.fade{opacity:0;transition:opacity .15s linear}.fade.in{opacity:1}.collapse{position:relative;height:0;overflow:hidden;transition:height .35s ease}.collapse.in{height:auto}.close{float:right;font-size:20px;font-weight:700;line-height:20px;color:#000;text-shadow:0 1px 0 #fff;opacity:.2;filter:alpha(opacity=20)}.close:focus,.close:hover{color:#000;text-decoration:none;cursor:pointer;opacity:.4;filter:alpha(opacity=40)}button.close{padding:0;cursor:pointer;background:0 0;border:0;-webkit-appearance:none}.btn{display:inline-block;padding:4px 12px;margin-bottom:0;font-size:14px;line-height:20px;text-align:center;vertical-align:middle;cursor:pointer;color:#333;text-shadow:0 1px 1px hsla(0,0%,100%,.75);background-color:#f5f5f5;background-image:linear-gradient(180deg,#fff,#e6e6e6);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);border:1px solid #ccc;border-bottom-color:#b3b3b3;border-radius:4px;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.2),0 1px 2px rgba(0,0,0,.05)}.btn.active,.btn.disabled,.btn:active,.btn:focus,.btn:hover,.btn[disabled]{color:#333;background-color:#e6e6e6}.btn:focus,.btn:hover{color:#333;text-decoration:none;background-position:0 -15px;transition:background-position .1s linear}.btn:focus{outline:thin dotted #333;outline:5px auto -webkit-focus-ring-color;outline-offset:-2px}.btn.active,.btn:active{background-image:none;outline:0;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.btn.disabled,.btn[disabled]{cursor:default;background-image:none;opacity:.65;filter:alpha(opacity=65);box-shadow:none}.btn-large{padding:11px 19px;font-size:17.5px;border-radius:6px}.btn-large [class*=" icon-"],.btn-large [class^=icon-]{margin-top:4px}.btn-small{padding:2px 10px;font-size:11.9px;border-radius:3px}.btn-small [class*=" icon-"],.btn-small [class^=icon-]{margin-top:0}.btn-mini [class*=" icon-"],.btn-mini [class^=icon-]{margin-top:-1px}.btn-mini{padding:0 6px;font-size:10.5px;border-radius:3px}.btn-block{display:block;width:100%;padding-left:0;padding-right:0;box-sizing:border-box}.btn-block+.btn-block{margin-top:5px}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.btn-primary{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#006dcc;background-image:linear-gradient(180deg,#08c,#04c);background-repeat:repeat-x;border-color:#04c #04c #002a80;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-primary.active,.btn-primary.disabled,.btn-primary:active,.btn-primary:focus,.btn-primary:hover,.btn-primary[disabled]{color:#fff;background-color:#04c}.btn-warning{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#faa732;background-image:linear-gradient(180deg,#fbb450,#f89406);background-repeat:repeat-x;border-color:#f89406 #f89406 #ad6704;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-warning.active,.btn-warning.disabled,.btn-warning:active,.btn-warning:focus,.btn-warning:hover,.btn-warning[disabled]{color:#fff;background-color:#f89406}.btn-danger{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#da4f49;background-image:linear-gradient(180deg,#ee5f5b,#bd362f);background-repeat:repeat-x;border-color:#bd362f #bd362f #802420;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-danger.active,.btn-danger.disabled,.btn-danger:active,.btn-danger:focus,.btn-danger:hover,.btn-danger[disabled]{color:#fff;background-color:#bd362f}.btn-success{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#5bb75b;background-image:linear-gradient(180deg,#62c462,#51a351);background-repeat:repeat-x;border-color:#51a351 #51a351 #387038;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-success.active,.btn-success.disabled,.btn-success:active,.btn-success:focus,.btn-success:hover,.btn-success[disabled]{color:#fff;background-color:#51a351}.btn-info{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#49afcd;background-image:linear-gradient(180deg,#5bc0de,#2f96b4);background-repeat:repeat-x;border-color:#2f96b4 #2f96b4 #1f6377;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-info.active,.btn-info.disabled,.btn-info:active,.btn-info:focus,.btn-info:hover,.btn-info[disabled]{color:#fff;background-color:#2f96b4}.btn-inverse{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#363636;background-image:linear-gradient(180deg,#444,#222);background-repeat:repeat-x;border-color:#222 #222 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.btn-inverse.active,.btn-inverse.disabled,.btn-inverse:active,.btn-inverse:focus,.btn-inverse:hover,.btn-inverse[disabled]{color:#fff;background-color:#222}button.btn::-moz-focus-inner,input[type=submit].btn::-moz-focus-inner{padding:0;border:0}.btn-link,.btn-link:active,.btn-link[disabled]{background-color:transparent;background-image:none;box-shadow:none}.btn-link{border-color:transparent;cursor:pointer;color:#08c;border-radius:0}.btn-link:focus,.btn-link:hover{color:#005580;text-decoration:underline;background-color:transparent}.btn-link[disabled]:focus,.btn-link[disabled]:hover{color:#333;text-decoration:none}.btn-group{position:relative;display:inline-block;font-size:0;vertical-align:middle;white-space:nowrap}.btn-group+.btn-group{margin-left:5px}.btn-toolbar{font-size:0;margin-top:10px;margin-bottom:10px}.btn-toolbar>.btn+.btn,.btn-toolbar>.btn+.btn-group,.btn-toolbar>.btn-group+.btn{margin-left:5px}.btn-group>.btn{position:relative;border-radius:0}.btn-group>.btn+.btn{margin-left:-1px}.btn-group>.btn,.btn-group>.dropdown-menu,.btn-group>.popover{font-size:14px}.btn-group>.btn-mini{font-size:10.5px}.btn-group>.btn-small{font-size:11.9px}.btn-group>.btn-large{font-size:17.5px}.btn-group>.btn:first-child{margin-left:0;border-top-left-radius:4px;border-bottom-left-radius:4px}.btn-group>.btn:last-child,.btn-group>.dropdown-toggle{border-top-right-radius:4px;border-bottom-right-radius:4px}.btn-group>.btn.large:first-child{margin-left:0;border-top-left-radius:6px;border-bottom-left-radius:6px}.btn-group>.btn.large:last-child,.btn-group>.large.dropdown-toggle{border-top-right-radius:6px;border-bottom-right-radius:6px}.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus,.btn-group>.btn:hover{z-index:2}.btn-group .dropdown-toggle:active,.btn-group.open .dropdown-toggle{outline:0}.btn-group>.btn+.dropdown-toggle{padding-left:8px;padding-right:8px;box-shadow:inset 1px 0 0 hsla(0,0%,100%,.125),inset 0 1px 0 hsla(0,0%,100%,.2),0 1px 2px rgba(0,0,0,.05)}.btn-group>.btn-mini+.dropdown-toggle{padding-left:5px;padding-right:5px}.btn-group>.btn-large+.dropdown-toggle{padding-left:12px;padding-right:12px}.btn-group.open .dropdown-toggle{background-image:none;box-shadow:inset 0 2px 4px rgba(0,0,0,.15),0 1px 2px rgba(0,0,0,.05)}.btn-group.open .btn.dropdown-toggle{background-color:#e6e6e6}.btn-group.open .btn-primary.dropdown-toggle{background-color:#04c}.btn-group.open .btn-warning.dropdown-toggle{background-color:#f89406}.btn-group.open .btn-danger.dropdown-toggle{background-color:#bd362f}.btn-group.open .btn-success.dropdown-toggle{background-color:#51a351}.btn-group.open .btn-info.dropdown-toggle{background-color:#2f96b4}.btn-group.open .btn-inverse.dropdown-toggle{background-color:#222}.btn .caret{margin-top:8px;margin-left:0}.btn-large .caret{margin-top:6px;border-left-width:5px;border-right-width:5px;border-top-width:5px}.btn-mini .caret,.btn-small .caret{margin-top:8px}.dropup .btn-large .caret{border-bottom-width:5px}.btn-danger .caret,.btn-info .caret,.btn-inverse .caret,.btn-primary .caret,.btn-success .caret,.btn-warning .caret{border-top-color:#fff;border-bottom-color:#fff}.btn-group-vertical{display:inline-block}.btn-group-vertical>.btn{display:block;float:none;max-width:100%;border-radius:0}.btn-group-vertical>.btn+.btn{margin-left:0;margin-top:-1px}.btn-group-vertical>.btn:first-child{border-radius:4px 4px 0 0}.btn-group-vertical>.btn:last-child{border-radius:0 0 4px 4px}.btn-group-vertical>.btn-large:first-child{border-radius:6px 6px 0 0}.btn-group-vertical>.btn-large:last-child{border-radius:0 0 6px 6px}.alert{padding:8px 35px 8px 14px;margin-bottom:20px;text-shadow:0 1px 0 hsla(0,0%,100%,.5);background-color:#fcf8e3;border:1px solid #fbeed5;border-radius:4px}.alert,.alert h4{color:#c09853}.alert h4{margin:0}.alert .close{position:relative;top:-2px;right:-21px;line-height:20px}.alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#468847}.alert-success h4{color:#468847}.alert-danger,.alert-error{background-color:#f2dede;border-color:#eed3d7;color:#b94a48}.alert-danger h4,.alert-error h4{color:#b94a48}.alert-info{background-color:#d9edf7;border-color:#bce8f1}.alert-info,.alert-info h4{color:#3a87ad}.alert-block{padding-top:14px;padding-bottom:14px}.alert-block>p,.alert-block>ul{margin-bottom:0}.alert-block p+p{margin-top:5px}.nav{margin-left:0;margin-bottom:20px;list-style:none}.nav>li>a{display:block}.nav>li>a:focus,.nav>li>a:hover{text-decoration:none;background-color:#eee}.nav>li>a>img{max-width:none}.nav>.pull-right{float:right}.nav-header{display:block;padding:3px 15px;font-size:11px;font-weight:700;line-height:20px;color:#999;text-shadow:0 1px 0 hsla(0,0%,100%,.5);text-transform:uppercase}.nav li+.nav-header{margin-top:9px}.nav-list{padding-left:15px;padding-right:15px;margin-bottom:0}.nav-list .nav-header,.nav-list>li>a{margin-left:-15px;margin-right:-15px;text-shadow:0 1px 0 hsla(0,0%,100%,.5)}.nav-list>li>a{padding:3px 15px}.nav-list>.active>a,.nav-list>.active>a:focus,.nav-list>.active>a:hover{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.2);background-color:#08c}.nav-list [class*=" icon-"],.nav-list [class^=icon-]{margin-right:2px}.nav-list .divider{height:1px;margin:9px 1px;overflow:hidden;background-color:#e5e5e5;border-bottom:1px solid #fff}.nav-pills:after,.nav-pills:before,.nav-tabs:after,.nav-tabs:before{display:table;content:"";line-height:0}.nav-pills:after,.nav-tabs:after{clear:both}.nav-pills>li,.nav-tabs>li{float:left}.nav-pills>li>a,.nav-tabs>li>a{padding-right:12px;padding-left:12px;margin-right:2px;line-height:14px}.nav-tabs{border-bottom:1px solid #ddd}.nav-tabs>li{margin-bottom:-1px}.nav-tabs>li>a{padding-top:8px;padding-bottom:8px;line-height:20px;border:1px solid transparent;border-radius:4px 4px 0 0}.nav-tabs>li>a:focus,.nav-tabs>li>a:hover{border-color:#eee #eee #ddd}.nav-tabs>.active>a,.nav-tabs>.active>a:focus,.nav-tabs>.active>a:hover{color:#555;background-color:#fff;border:1px solid #ddd;border-bottom-color:transparent;cursor:default}.nav-pills>li>a{padding-top:8px;padding-bottom:8px;margin-top:2px;margin-bottom:2px;border-radius:5px}.nav-pills>.active>a,.nav-pills>.active>a:focus,.nav-pills>.active>a:hover{color:#fff;background-color:#08c}.nav-stacked>li{float:none}.nav-stacked>li>a{margin-right:0}.nav-tabs.nav-stacked{border-bottom:0}.nav-tabs.nav-stacked>li>a{border:1px solid #ddd;border-radius:0}.nav-tabs.nav-stacked>li:first-child>a{border-top-right-radius:4px;border-top-left-radius:4px}.nav-tabs.nav-stacked>li:last-child>a{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.nav-tabs.nav-stacked>li>a:focus,.nav-tabs.nav-stacked>li>a:hover{border-color:#ddd;z-index:2}.nav-pills.nav-stacked>li>a{margin-bottom:3px}.nav-pills.nav-stacked>li:last-child>a{margin-bottom:1px}.nav-tabs .dropdown-menu{border-radius:0 0 6px 6px}.nav-pills .dropdown-menu{border-radius:6px}.nav .dropdown-toggle .caret{border-top-color:#08c;border-bottom-color:#08c;margin-top:6px}.nav .dropdown-toggle:focus .caret,.nav .dropdown-toggle:hover .caret{border-top-color:#005580;border-bottom-color:#005580}.nav-tabs .dropdown-toggle .caret{margin-top:8px}.nav .active .dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.nav-tabs .active .dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.nav>.dropdown.active>a:focus,.nav>.dropdown.active>a:hover{cursor:pointer}.nav-pills .open .dropdown-toggle,.nav-tabs .open .dropdown-toggle,.nav>li.dropdown.open.active>a:focus,.nav>li.dropdown.open.active>a:hover{color:#fff;background-color:#999;border-color:#999}.nav li.dropdown.open.active .caret,.nav li.dropdown.open .caret,.nav li.dropdown.open a:focus .caret,.nav li.dropdown.open a:hover .caret{border-top-color:#fff;border-bottom-color:#fff;opacity:1;filter:alpha(opacity=100)}.tabs-stacked .open>a:focus,.tabs-stacked .open>a:hover{border-color:#999}.tabbable:after,.tabbable:before{display:table;content:"";line-height:0}.tabbable:after{clear:both}.tab-content{overflow:auto}.tabs-below>.nav-tabs,.tabs-left>.nav-tabs,.tabs-right>.nav-tabs{border-bottom:0}.pill-content>.pill-pane,.tab-content>.tab-pane{display:none}.pill-content>.active,.tab-content>.active{display:block}.tabs-below>.nav-tabs{border-top:1px solid #ddd}.tabs-below>.nav-tabs>li{margin-top:-1px;margin-bottom:0}.tabs-below>.nav-tabs>li>a{border-radius:0 0 4px 4px}.tabs-below>.nav-tabs>li>a:focus,.tabs-below>.nav-tabs>li>a:hover{border-bottom-color:transparent;border-top-color:#ddd}.tabs-below>.nav-tabs>.active>a,.tabs-below>.nav-tabs>.active>a:focus,.tabs-below>.nav-tabs>.active>a:hover{border-color:transparent #ddd #ddd}.tabs-left>.nav-tabs>li,.tabs-right>.nav-tabs>li{float:none}.tabs-left>.nav-tabs>li>a,.tabs-right>.nav-tabs>li>a{min-width:74px;margin-right:0;margin-bottom:3px}.tabs-left>.nav-tabs{float:left;margin-right:19px;border-right:1px solid #ddd}.tabs-left>.nav-tabs>li>a{margin-right:-1px;border-radius:4px 0 0 4px}.tabs-left>.nav-tabs>li>a:focus,.tabs-left>.nav-tabs>li>a:hover{border-color:#eee #ddd #eee #eee}.tabs-left>.nav-tabs .active>a,.tabs-left>.nav-tabs .active>a:focus,.tabs-left>.nav-tabs .active>a:hover{border-color:#ddd transparent #ddd #ddd}.tabs-right>.nav-tabs{float:right;margin-left:19px;border-left:1px solid #ddd}.tabs-right>.nav-tabs>li>a{margin-left:-1px;border-radius:0 4px 4px 0}.tabs-right>.nav-tabs>li>a:focus,.tabs-right>.nav-tabs>li>a:hover{border-color:#eee #eee #eee #ddd}.tabs-right>.nav-tabs .active>a,.tabs-right>.nav-tabs .active>a:focus,.tabs-right>.nav-tabs .active>a:hover{border-color:#ddd #ddd #ddd transparent}.nav>.disabled>a{color:#999}.nav>.disabled>a:focus,.nav>.disabled>a:hover{text-decoration:none;background-color:transparent;cursor:default}.navbar{overflow:visible;margin-bottom:20px}.navbar-inner{min-height:40px;padding-left:20px;padding-right:20px;background-color:#fafafa;background-image:linear-gradient(180deg,#fff,#f2f2f2);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffffffff",endColorstr="#fff2f2f2",GradientType=0);border:1px solid #d4d4d4;border-radius:4px;box-shadow:0 1px 4px rgba(0,0,0,.065)}.navbar-inner:after,.navbar-inner:before{display:table;content:"";line-height:0}.navbar-inner:after{clear:both}.navbar .container{width:auto}.nav-collapse.collapse{height:auto;overflow:visible}.navbar .brand{float:left;display:block;padding:10px 20px;margin-left:-20px;font-size:20px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.navbar .brand:focus,.navbar .brand:hover{text-decoration:none}.navbar-text{margin-bottom:0;line-height:40px;color:#777}.navbar-link{color:#777}.navbar-link:focus,.navbar-link:hover{color:#333}.navbar .divider-vertical{height:40px;margin:0 9px;border-left:1px solid #f2f2f2;border-right:1px solid #fff}.navbar .btn,.navbar .btn-group{margin-top:5px}.navbar .btn-group .btn,.navbar .input-append .btn,.navbar .input-append .btn-group,.navbar .input-prepend .btn,.navbar .input-prepend .btn-group{margin-top:0}.navbar-form{margin-bottom:0}.navbar-form:after,.navbar-form:before{display:table;content:"";line-height:0}.navbar-form:after{clear:both}.navbar-form .checkbox,.navbar-form .radio,.navbar-form input,.navbar-form select{margin-top:5px}.navbar-form .btn,.navbar-form input,.navbar-form select{display:inline-block;margin-bottom:0}.navbar-form input[type=checkbox],.navbar-form input[type=image],.navbar-form input[type=radio]{margin-top:3px}.navbar-form .input-append,.navbar-form .input-prepend{margin-top:5px;white-space:nowrap}.navbar-form .input-append input,.navbar-form .input-prepend input{margin-top:0}.navbar-search{position:relative;float:left;margin-top:5px;margin-bottom:0}.navbar-search .search-query{margin-bottom:0;padding:4px 14px;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;font-size:13px;font-weight:400;line-height:1;border-radius:15px}.navbar-static-top{position:static;margin-bottom:0}.navbar-static-top .navbar-inner{border-radius:0}.navbar-fixed-bottom,.navbar-fixed-top{position:fixed;right:0;left:0;z-index:1030;margin-bottom:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{border-width:0 0 1px}.navbar-fixed-bottom .navbar-inner{border-width:1px 0 0}.navbar-fixed-bottom .navbar-inner,.navbar-fixed-top .navbar-inner{padding-left:0;padding-right:0;border-radius:0}.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container{width:940px}.navbar-fixed-top{top:0}.navbar-fixed-top .navbar-inner,.navbar-static-top .navbar-inner{box-shadow:0 1px 10px rgba(0,0,0,.1)}.navbar-fixed-bottom{bottom:0}.navbar-fixed-bottom .navbar-inner{box-shadow:0 -1px 10px rgba(0,0,0,.1)}.navbar .nav{position:relative;left:0;display:block;float:left;margin:0 10px 0 0}.navbar .nav.pull-right{float:right;margin-right:0}.navbar .nav>li{float:left}.navbar .nav>li>a{float:none;padding:10px 15px;color:#777;text-decoration:none;text-shadow:0 1px 0 #fff}.navbar .nav .dropdown-toggle .caret{margin-top:8px}.navbar .nav>li>a:focus,.navbar .nav>li>a:hover{background-color:transparent;color:#333;text-decoration:none}.navbar .nav>.active>a,.navbar .nav>.active>a:focus,.navbar .nav>.active>a:hover{color:#555;text-decoration:none;background-color:#e5e5e5;box-shadow:inset 0 3px 8px rgba(0,0,0,.125)}.navbar .btn-navbar{display:none;float:right;padding:7px 10px;margin-left:5px;margin-right:5px;color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#ededed;background-image:linear-gradient(180deg,#f2f2f2,#e5e5e5);background-repeat:repeat-x;border-color:#e5e5e5 #e5e5e5 #bfbfbf;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false);box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 1px 0 hsla(0,0%,100%,.075)}.navbar .btn-navbar.active,.navbar .btn-navbar.disabled,.navbar .btn-navbar:active,.navbar .btn-navbar:focus,.navbar .btn-navbar:hover,.navbar .btn-navbar[disabled]{color:#fff;background-color:#e5e5e5}.navbar .btn-navbar .icon-bar{display:block;width:18px;height:2px;background-color:#f5f5f5;border-radius:1px;box-shadow:0 1px 0 rgba(0,0,0,.25)}.btn-navbar .icon-bar+.icon-bar{margin-top:3px}.navbar .nav>li>.dropdown-menu:before{content:"";display:inline-block;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:7px solid #ccc;border-bottom-color:rgba(0,0,0,.2);position:absolute;top:-7px;left:9px}.navbar .nav>li>.dropdown-menu:after{content:"";display:inline-block;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #fff;position:absolute;top:-6px;left:10px}.navbar-fixed-bottom .nav>li>.dropdown-menu:before{border-top:7px solid #ccc;border-top-color:rgba(0,0,0,.2);border-bottom:0;bottom:-7px;top:auto}.navbar-fixed-bottom .nav>li>.dropdown-menu:after{border-top:6px solid #fff;border-bottom:0;bottom:-6px;top:auto}.navbar .nav li.dropdown>a:focus .caret,.navbar .nav li.dropdown>a:hover .caret{border-top-color:#333;border-bottom-color:#333}.navbar .nav li.dropdown.active>.dropdown-toggle,.navbar .nav li.dropdown.open.active>.dropdown-toggle,.navbar .nav li.dropdown.open>.dropdown-toggle{background-color:#e5e5e5;color:#555}.navbar .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#777;border-bottom-color:#777}.navbar .nav li.dropdown.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open.active>.dropdown-toggle .caret,.navbar .nav li.dropdown.open>.dropdown-toggle .caret{border-top-color:#555;border-bottom-color:#555}.navbar .nav>li>.dropdown-menu.pull-right,.navbar .pull-right>li>.dropdown-menu{left:auto;right:0}.navbar .nav>li>.dropdown-menu.pull-right:before,.navbar .pull-right>li>.dropdown-menu:before{left:auto;right:12px}.navbar .nav>li>.dropdown-menu.pull-right:after,.navbar .pull-right>li>.dropdown-menu:after{left:auto;right:13px}.navbar .nav>li>.dropdown-menu.pull-right .dropdown-menu,.navbar .pull-right>li>.dropdown-menu .dropdown-menu{left:auto;right:100%;margin-left:0;margin-right:-1px;border-radius:6px 0 6px 6px}.navbar-inverse .navbar-inner{background-color:#1b1b1b;background-image:linear-gradient(180deg,#222,#111);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff222222",endColorstr="#ff111111",GradientType=0);border-color:#252525}.navbar-inverse .brand,.navbar-inverse .nav>li>a{color:#999;text-shadow:0 -1px 0 rgba(0,0,0,.25)}.navbar-inverse .brand:focus,.navbar-inverse .brand:hover,.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{color:#fff}.navbar-inverse .brand,.navbar-inverse .navbar-text{color:#999}.navbar-inverse .nav>li>a:focus,.navbar-inverse .nav>li>a:hover{background-color:transparent;color:#fff}.navbar-inverse .nav .active>a,.navbar-inverse .nav .active>a:focus,.navbar-inverse .nav .active>a:hover{color:#fff;background-color:#111}.navbar-inverse .navbar-link{color:#999}.navbar-inverse .navbar-link:focus,.navbar-inverse .navbar-link:hover{color:#fff}.navbar-inverse .divider-vertical{border-left-color:#111;border-right-color:#222}.navbar-inverse .nav li.dropdown.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle,.navbar-inverse .nav li.dropdown.open>.dropdown-toggle{background-color:#111;color:#fff}.navbar-inverse .nav li.dropdown>a:focus .caret,.navbar-inverse .nav li.dropdown>a:hover .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .nav li.dropdown>.dropdown-toggle .caret{border-top-color:#999;border-bottom-color:#999}.navbar-inverse .nav li.dropdown.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open.active>.dropdown-toggle .caret,.navbar-inverse .nav li.dropdown.open>.dropdown-toggle .caret{border-top-color:#fff;border-bottom-color:#fff}.navbar-inverse .navbar-search .search-query{color:#fff;background-color:#515151;border-color:#111;box-shadow:inset 0 1px 2px rgba(0,0,0,.1),0 1px 0 hsla(0,0%,100%,.15);transition:none}.navbar-inverse .navbar-search .search-query:-moz-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query:-ms-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query::-webkit-input-placeholder{color:#ccc}.navbar-inverse .navbar-search .search-query.focused,.navbar-inverse .navbar-search .search-query:focus{padding:5px 15px;color:#333;text-shadow:0 1px 0 #fff;background-color:#fff;border:0;box-shadow:0 0 3px rgba(0,0,0,.15);outline:0}.navbar-inverse .btn-navbar{color:#fff;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e0e0e;background-image:linear-gradient(180deg,#151515,#040404);background-repeat:repeat-x;border-color:#040404 #040404 #000;border-color:rgba(0,0,0,.1) rgba(0,0,0,.1) rgba(0,0,0,.25);filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.navbar-inverse .btn-navbar.active,.navbar-inverse .btn-navbar.disabled,.navbar-inverse .btn-navbar:active,.navbar-inverse .btn-navbar:focus,.navbar-inverse .btn-navbar:hover,.navbar-inverse .btn-navbar[disabled]{color:#fff;background-color:#040404}.breadcrumb{padding:8px 15px;margin:0 0 20px;list-style:none;background-color:#f5f5f5;border-radius:4px}.breadcrumb>li{display:inline-block;text-shadow:0 1px 0 #fff}.breadcrumb>li>.divider{padding:0 5px;color:#ccc}.breadcrumb>.active{color:#999}.pagination{margin:20px 0}.pagination ul{display:inline-block;margin-left:0;margin-bottom:0;border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.05)}.pagination ul>li{display:inline}.pagination ul>li>a,.pagination ul>li>span{float:left;padding:4px 12px;line-height:20px;text-decoration:none;background-color:#fff;border:1px solid #ddd;border-left-width:0}.pagination ul>.active>a,.pagination ul>.active>span,.pagination ul>li>a:focus,.pagination ul>li>a:hover{background-color:#f5f5f5}.pagination ul>.active>a,.pagination ul>.active>span{color:#999;cursor:default}.pagination ul>.disabled>a,.pagination ul>.disabled>a:focus,.pagination ul>.disabled>a:hover,.pagination ul>.disabled>span{color:#999;background-color:transparent;cursor:default}.pagination ul>li:first-child>a,.pagination ul>li:first-child>span{border-left-width:1px;border-top-left-radius:4px;border-bottom-left-radius:4px}.pagination ul>li:last-child>a,.pagination ul>li:last-child>span{border-top-right-radius:4px;border-bottom-right-radius:4px}.pagination-centered{text-align:center}.pagination-right{text-align:right}.pagination-large ul>li>a,.pagination-large ul>li>span{padding:11px 19px;font-size:17.5px}.pagination-large ul>li:first-child>a,.pagination-large ul>li:first-child>span{border-top-left-radius:6px;border-bottom-left-radius:6px}.pagination-large ul>li:last-child>a,.pagination-large ul>li:last-child>span{border-top-right-radius:6px;border-bottom-right-radius:6px}.pagination-mini ul>li:first-child>a,.pagination-mini ul>li:first-child>span,.pagination-small ul>li:first-child>a,.pagination-small ul>li:first-child>span{border-top-left-radius:3px;border-bottom-left-radius:3px}.pagination-mini ul>li:last-child>a,.pagination-mini ul>li:last-child>span,.pagination-small ul>li:last-child>a,.pagination-small ul>li:last-child>span{border-top-right-radius:3px;border-bottom-right-radius:3px}.pagination-small ul>li>a,.pagination-small ul>li>span{padding:2px 10px;font-size:11.9px}.pagination-mini ul>li>a,.pagination-mini ul>li>span{padding:0 6px;font-size:10.5px}.pager{margin:20px 0;list-style:none;text-align:center}.pager:after,.pager:before{display:table;content:"";line-height:0}.pager:after{clear:both}.pager li{display:inline}.pager li>a,.pager li>span{display:inline-block;padding:5px 14px;background-color:#fff;border:1px solid #ddd;border-radius:15px}.pager li>a:focus,.pager li>a:hover{text-decoration:none;background-color:#f5f5f5}.pager .next>a,.pager .next>span{float:right}.pager .previous>a,.pager .previous>span{float:left}.pager .disabled>a,.pager .disabled>a:focus,.pager .disabled>a:hover,.pager .disabled>span{color:#999;background-color:#fff;cursor:default}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop,.modal-backdrop.fade.in{opacity:.8;filter:alpha(opacity=80)}.modal{position:fixed;top:10%;left:50%;z-index:1050;width:560px;margin-left:-280px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);border-radius:6px;box-shadow:0 3px 7px rgba(0,0,0,.3);background-clip:padding-box;outline:0}.modal.fade{transition:opacity .3s linear,top .3s ease-out;top:-25%}.modal.fade.in{top:10%}.modal-header{padding:9px 15px;border-bottom:1px solid #eee}.modal-header .close{margin-top:2px}.modal-header h3{margin:0;line-height:30px}.modal-body{position:relative;overflow-y:auto;max-height:400px;padding:15px}.modal-footer,.modal-form{margin-bottom:0}.modal-footer{padding:14px 15px 15px;text-align:right;background-color:#f5f5f5;border-top:1px solid #ddd;border-radius:0 0 6px 6px;box-shadow:inset 0 1px 0 #fff}.modal-footer:after,.modal-footer:before{display:table;content:"";line-height:0}.modal-footer:after{clear:both}.modal-footer .btn+.btn{margin-left:5px;margin-bottom:0}.modal-footer .btn-group .btn+.btn{margin-left:-1px}.modal-footer .btn-block+.btn-block{margin-left:0}.tooltip{position:absolute;z-index:1030;display:block;visibility:visible;font-size:11px;line-height:1.4;opacity:0;filter:alpha(opacity=0)}.tooltip.in{opacity:.8;filter:alpha(opacity=80)}.tooltip.top{margin-top:-3px;padding:5px 0}.tooltip.right{margin-left:3px;padding:0 5px}.tooltip.bottom{margin-top:3px;padding:5px 0}.tooltip.left{margin-left:-3px;padding:0 5px}.tooltip-inner{max-width:200px;padding:8px;color:#fff;text-align:center;text-decoration:none;background-color:#000;border-radius:4px}.tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid}.tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000}.tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000}.tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000}.tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000}.popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:276px;padding:1px;text-align:left;background-color:#fff;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0,0,0,.2);border-radius:6px;box-shadow:0 5px 10px rgba(0,0,0,.2);white-space:normal}.popover.top{margin-top:-10px}.popover.right{margin-left:10px}.popover.bottom{margin-top:10px}.popover.left{margin-left:-10px}.popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:400;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-radius:5px 5px 0 0}.popover-title:empty{display:none}.popover-content{padding:9px 14px}.popover .arrow,.popover .arrow:after{position:absolute;display:block;width:0;height:0;border-color:transparent;border-style:solid}.popover .arrow{border-width:11px}.popover .arrow:after{border-width:10px;content:""}.popover.top .arrow{left:50%;margin-left:-11px;border-bottom-width:0;border-top-color:#999;border-top-color:rgba(0,0,0,.25);bottom:-11px}.popover.top .arrow:after{bottom:1px;margin-left:-10px;border-bottom-width:0;border-top-color:#fff}.popover.right .arrow{top:50%;left:-11px;margin-top:-11px;border-left-width:0;border-right-color:#999;border-right-color:rgba(0,0,0,.25)}.popover.right .arrow:after{left:1px;bottom:-10px;border-left-width:0;border-right-color:#fff}.popover.bottom .arrow{left:50%;margin-left:-11px;border-top-width:0;border-bottom-color:#999;border-bottom-color:rgba(0,0,0,.25);top:-11px}.popover.bottom .arrow:after{top:1px;margin-left:-10px;border-top-width:0;border-bottom-color:#fff}.popover.left .arrow{top:50%;right:-11px;margin-top:-11px;border-right-width:0;border-left-color:#999;border-left-color:rgba(0,0,0,.25)}.popover.left .arrow:after{right:1px;border-right-width:0;border-left-color:#fff;bottom:-10px}.thumbnails{margin-left:-20px;list-style:none}.thumbnails:after,.thumbnails:before{display:table;content:"";line-height:0}.thumbnails:after{clear:both}.row-fluid .thumbnails{margin-left:0}.thumbnails>li{float:left;margin-bottom:20px;margin-left:20px}.thumbnail{display:block;padding:4px;line-height:20px;border:1px solid #ddd;border-radius:4px;box-shadow:0 1px 3px rgba(0,0,0,.055);transition:all .2s ease-in-out}a.thumbnail:focus,a.thumbnail:hover{border-color:#08c;box-shadow:0 1px 4px rgba(0,105,214,.25)}.thumbnail>img{display:block;max-width:100%;margin-left:auto;margin-right:auto}.thumbnail .caption{padding:9px;color:#555}.media,.media-body{overflow:hidden;zoom:1}.media,.media .media{margin-top:15px}.media:first-child{margin-top:0}.media-object{display:block}.media-heading{margin:0 0 5px}.media>.pull-left{margin-right:10px}.media>.pull-right{margin-left:10px}.media-list{margin-left:0;list-style:none}.badge,.label{display:inline-block;padding:2px 4px;font-size:11.84px;font-weight:700;line-height:14px;color:#fff;vertical-align:baseline;white-space:nowrap;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#999}.label{border-radius:3px}.badge{padding-left:9px;padding-right:9px;border-radius:9px}.badge:empty,.label:empty{display:none}a.badge:focus,a.badge:hover,a.label:focus,a.label:hover{color:#fff;text-decoration:none;cursor:pointer}.badge-important,.label-important{background-color:#b94a48}.badge-important[href],.label-important[href]{background-color:#953b39}.badge-warning,.label-warning{background-color:#f89406}.badge-warning[href],.label-warning[href]{background-color:#c67605}.badge-success,.label-success{background-color:#468847}.badge-success[href],.label-success[href]{background-color:#356635}.badge-info,.label-info{background-color:#3a87ad}.badge-info[href],.label-info[href]{background-color:#2d6987}.badge-inverse,.label-inverse{background-color:#333}.badge-inverse[href],.label-inverse[href]{background-color:#1a1a1a}.btn .badge,.btn .label{position:relative;top:-1px}.btn-mini .badge,.btn-mini .label{top:0}@-webkit-keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}@keyframes progress-bar-stripes{0%{background-position:40px 0}to{background-position:0 0}}.progress{overflow:hidden;height:20px;margin-bottom:20px;background-color:#f7f7f7;background-image:linear-gradient(180deg,#f5f5f5,#f9f9f9);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fff5f5f5",endColorstr="#fff9f9f9",GradientType=0);box-shadow:inset 0 1px 2px rgba(0,0,0,.1);border-radius:4px}.progress,.progress .bar{background-repeat:repeat-x}.progress .bar{width:0;height:100%;color:#fff;float:left;font-size:12px;text-align:center;text-shadow:0 -1px 0 rgba(0,0,0,.25);background-color:#0e90d2;background-image:linear-gradient(180deg,#149bdf,#0480be);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff149bdf",endColorstr="#ff0480be",GradientType=0);box-shadow:inset 0 -1px 0 rgba(0,0,0,.15);box-sizing:border-box;transition:width .6s ease}.progress .bar+.bar{box-shadow:inset 1px 0 0 rgba(0,0,0,.15),inset 0 -1px 0 rgba(0,0,0,.15)}.progress-striped .bar{background-color:#149bdf;background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent);background-size:40px 40px}.progress.active .bar{-webkit-animation:progress-bar-stripes 2s linear infinite;animation:progress-bar-stripes 2s linear infinite}.progress-danger .bar,.progress .bar-danger{background-color:#dd514c;background-image:linear-gradient(180deg,#ee5f5b,#c43c35);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ffee5f5b",endColorstr="#ffc43c35",GradientType=0)}.progress-danger.progress-striped .bar,.progress-striped .bar-danger{background-color:#ee5f5b;background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-success .bar,.progress .bar-success{background-color:#5eb95e;background-image:linear-gradient(180deg,#62c462,#57a957);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff62c462",endColorstr="#ff57a957",GradientType=0)}.progress-striped .bar-success,.progress-success.progress-striped .bar{background-color:#62c462;background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-info .bar,.progress .bar-info{background-color:#4bb1cf;background-image:linear-gradient(180deg,#5bc0de,#339bb9);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#ff5bc0de",endColorstr="#ff339bb9",GradientType=0)}.progress-info.progress-striped .bar,.progress-striped .bar-info{background-color:#5bc0de;background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.progress-warning .bar,.progress .bar-warning{background-color:#faa732;background-image:linear-gradient(180deg,#fbb450,#f89406);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr="#fffbb450",endColorstr="#fff89406",GradientType=0)}.progress-striped .bar-warning,.progress-warning.progress-striped .bar{background-color:#fbb450;background-image:linear-gradient(45deg,hsla(0,0%,100%,.15) 25%,transparent 0,transparent 50%,hsla(0,0%,100%,.15) 0,hsla(0,0%,100%,.15) 75%,transparent 0,transparent)}.accordion{margin-bottom:20px}.accordion-group{margin-bottom:2px;border:1px solid #e5e5e5;border-radius:4px}.accordion-heading{border-bottom:0}.accordion-heading .accordion-toggle{display:block;padding:8px 15px}.accordion-toggle{cursor:pointer}.accordion-inner{padding:9px 15px;border-top:1px solid #e5e5e5}.carousel{position:relative;margin-bottom:20px;line-height:1}.carousel-inner{overflow:hidden;width:100%;position:relative}.carousel-inner>.item{display:none;position:relative;transition:left .6s ease-in-out}.carousel-inner>.item>a>img,.carousel-inner>.item>img{display:block;line-height:1}.carousel-inner>.active,.carousel-inner>.next,.carousel-inner>.prev{display:block}.carousel-inner>.active{left:0}.carousel-inner>.next,.carousel-inner>.prev{position:absolute;top:0;width:100%}.carousel-inner>.next{left:100%}.carousel-inner>.prev{left:-100%}.carousel-inner>.next.left,.carousel-inner>.prev.right{left:0}.carousel-inner>.active.left{left:-100%}.carousel-inner>.active.right{left:100%}.carousel-control{position:absolute;top:40%;left:15px;width:40px;height:40px;margin-top:-20px;font-size:60px;font-weight:100;line-height:30px;color:#fff;text-align:center;background:#222;border:3px solid #fff;border-radius:23px;opacity:.5;filter:alpha(opacity=50)}.carousel-control.right{left:auto;right:15px}.carousel-control:focus,.carousel-control:hover{color:#fff;text-decoration:none;opacity:.9;filter:alpha(opacity=90)}.carousel-indicators{position:absolute;top:15px;right:15px;z-index:5;margin:0;list-style:none}.carousel-indicators li{display:block;float:left;width:10px;height:10px;margin-left:5px;text-indent:-999px;background-color:#ccc;background-color:hsla(0,0%,100%,.25);border-radius:5px}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;left:0;right:0;bottom:0;padding:15px;background:#333;background:rgba(0,0,0,.75)}.carousel-caption h4,.carousel-caption p{color:#fff;line-height:20px}.carousel-caption h4{margin:0 0 5px}.carousel-caption p{margin-bottom:0}.hero-unit{padding:60px;margin-bottom:30px;font-size:18px;font-weight:200;line-height:30px;color:inherit;background-color:#eee;border-radius:6px}.hero-unit h1{margin-bottom:0;font-size:60px;line-height:1;color:inherit;letter-spacing:-1px}.hero-unit li{line-height:30px}.pull-right{float:right}.pull-left{float:left}.hide{display:none}.show{display:block}.invisible{visibility:hidden}.affix{position:fixed} -/*! - * Bootstrap Responsive v2.3.1 - * - * Copyright 2012 Twitter, Inc - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Designed and built with all the love in the world @twitter by @mdo and @fat. - */.clearfix:after,.clearfix:before{display:table;content:"";line-height:0}.clearfix:after{clear:both}.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.input-block-level{display:block;width:100%;min-height:30px;box-sizing:border-box}@-ms-viewport{width:device-width}.hidden{display:none;visibility:hidden}.hidden-desktop,.visible-phone,.visible-tablet{display:none!important}.visible-desktop{display:inherit!important}@media (min-width:768px) and (max-width:839px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-tablet{display:inherit!important}.hidden-tablet{display:none!important}}@media (max-width:767px){.hidden-desktop{display:inherit!important}.visible-desktop{display:none!important}.visible-phone{display:inherit!important}.hidden-phone{display:none!important}}.visible-print{display:none!important}@media print{.visible-print{display:inherit!important}.hidden-print{display:none!important}}@media (min-width:1200px){.row{margin-left:-30px}.row:after,.row:before{display:table;content:"";line-height:0}.row:after{clear:both}[class*=span]{float:left;min-height:1px;margin-left:30px}.container,.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container,.span12{width:1170px}.span11{width:1070px}.span10{width:970px}.span9{width:870px}.span8{width:770px}.span7{width:670px}.span6{width:570px}.span5{width:470px}.span4{width:370px}.span3{width:270px}.span2{width:170px}.span1{width:70px}.offset12{margin-left:1230px}.offset11{margin-left:1130px}.offset10{margin-left:1030px}.offset9{margin-left:930px}.offset8{margin-left:830px}.offset7{margin-left:730px}.offset6{margin-left:630px}.offset5{margin-left:530px}.offset4{margin-left:430px}.offset3{margin-left:330px}.offset2{margin-left:230px}.offset1{margin-left:130px}.row-fluid{width:100%}.row-fluid:after,.row-fluid:before{display:table;content:"";line-height:0}.row-fluid:after{clear:both}.row-fluid [class*=span]{display:block;width:100%;min-height:30px;box-sizing:border-box;float:left;margin-left:2.56410256%}.row-fluid [class*=span]:first-child{margin-left:0}.row-fluid .controls-row [class*=span]+[class*=span]{margin-left:2.56410256%}.row-fluid .span12{width:100%}.row-fluid .span11{width:91.45299145%}.row-fluid .span10{width:82.90598291%}.row-fluid .span9{width:74.35897436%}.row-fluid .span8{width:65.81196581%}.row-fluid .span7{width:57.26495726%}.row-fluid .span6{width:48.71794872%}.row-fluid .span5{width:40.17094017%}.row-fluid .span4{width:31.62393162%}.row-fluid .span3{width:23.07692308%}.row-fluid .span2{width:14.52991453%}.row-fluid .span1{width:5.98290598%}.row-fluid .offset12{margin-left:105.12820513%}.row-fluid .offset12:first-child{margin-left:102.56410256%}.row-fluid .offset11{margin-left:96.58119658%}.row-fluid .offset11:first-child{margin-left:94.01709402%}.row-fluid .offset10{margin-left:88.03418803%}.row-fluid .offset10:first-child{margin-left:85.47008547%}.row-fluid .offset9{margin-left:79.48717949%}.row-fluid .offset9:first-child{margin-left:76.92307692%}.row-fluid .offset8{margin-left:70.94017094%}.row-fluid .offset8:first-child{margin-left:68.37606838%}.row-fluid .offset7{margin-left:62.39316239%}.row-fluid .offset7:first-child{margin-left:59.82905983%}.row-fluid .offset6{margin-left:53.84615385%}.row-fluid .offset6:first-child{margin-left:51.28205128%}.row-fluid .offset5{margin-left:45.2991453%}.row-fluid .offset5:first-child{margin-left:42.73504274%}.row-fluid .offset4{margin-left:36.75213675%}.row-fluid .offset4:first-child{margin-left:34.18803419%}.row-fluid .offset3{margin-left:28.20512821%}.row-fluid .offset3:first-child{margin-left:25.64102564%}.row-fluid .offset2{margin-left:19.65811966%}.row-fluid .offset2:first-child{margin-left:17.09401709%}.row-fluid .offset1{margin-left:11.11111111%}.row-fluid .offset1:first-child{margin-left:8.54700855%}.uneditable-input,input,textarea{margin-left:0}.controls-row [class*=span]+[class*=span]{margin-left:30px}.uneditable-input.span12,input.span12,textarea.span12{width:1156px}.uneditable-input.span11,input.span11,textarea.span11{width:1056px}.uneditable-input.span10,input.span10,textarea.span10{width:956px}.uneditable-input.span9,input.span9,textarea.span9{width:856px}.uneditable-input.span8,input.span8,textarea.span8{width:756px}.uneditable-input.span7,input.span7,textarea.span7{width:656px}.uneditable-input.span6,input.span6,textarea.span6{width:556px}.uneditable-input.span5,input.span5,textarea.span5{width:456px}.uneditable-input.span4,input.span4,textarea.span4{width:356px}.uneditable-input.span3,input.span3,textarea.span3{width:256px}.uneditable-input.span2,input.span2,textarea.span2{width:156px}.uneditable-input.span1,input.span1,textarea.span1{width:56px}.thumbnails{margin-left:-30px}.thumbnails>li{margin-left:30px}.row-fluid .thumbnails{margin-left:0}}@media (min-width:768px) and (max-width:839px){.row{margin-left:-20px}.row:after,.row:before{display:table;content:"";line-height:0}.row:after{clear:both}[class*=span]{float:left;min-height:1px;margin-left:20px}.container,.navbar-fixed-bottom .container,.navbar-fixed-top .container,.navbar-static-top .container,.span12{width:724px}.span11{width:662px}.span10{width:600px}.span9{width:538px}.span8{width:476px}.span7{width:414px}.span6{width:352px}.span5{width:290px}.span4{width:228px}.span3{width:166px}.span2{width:104px}.span1{width:42px}.offset12{margin-left:764px}.offset11{margin-left:702px}.offset10{margin-left:640px}.offset9{margin-left:578px}.offset8{margin-left:516px}.offset7{margin-left:454px}.offset6{margin-left:392px}.offset5{margin-left:330px}.offset4{margin-left:268px}.offset3{margin-left:206px}.offset2{margin-left:144px}.offset1{margin-left:82px}.row-fluid{width:100%}.row-fluid:after,.row-fluid:before{display:table;content:"";line-height:0}.row-fluid:after{clear:both}.row-fluid [class*=span]{display:block;width:100%;min-height:30px;box-sizing:border-box;float:left;margin-left:2.76243094%}.row-fluid [class*=span]:first-child{margin-left:0}.row-fluid .controls-row [class*=span]+[class*=span]{margin-left:2.76243094%}.row-fluid .span12{width:100%}.row-fluid .span11{width:91.43646409%}.row-fluid .span10{width:82.87292818%}.row-fluid .span9{width:74.30939227%}.row-fluid .span8{width:65.74585635%}.row-fluid .span7{width:57.18232044%}.row-fluid .span6{width:48.61878453%}.row-fluid .span5{width:40.05524862%}.row-fluid .span4{width:31.49171271%}.row-fluid .span3{width:22.9281768%}.row-fluid .span2{width:14.36464088%}.row-fluid .span1{width:5.80110497%}.row-fluid .offset12{margin-left:105.52486188%}.row-fluid .offset12:first-child{margin-left:102.76243094%}.row-fluid .offset11{margin-left:96.96132597%}.row-fluid .offset11:first-child{margin-left:94.19889503%}.row-fluid .offset10{margin-left:88.39779006%}.row-fluid .offset10:first-child{margin-left:85.63535912%}.row-fluid .offset9{margin-left:79.83425414%}.row-fluid .offset9:first-child{margin-left:77.0718232%}.row-fluid .offset8{margin-left:71.27071823%}.row-fluid .offset8:first-child{margin-left:68.50828729%}.row-fluid .offset7{margin-left:62.70718232%}.row-fluid .offset7:first-child{margin-left:59.94475138%}.row-fluid .offset6{margin-left:54.14364641%}.row-fluid .offset6:first-child{margin-left:51.38121547%}.row-fluid .offset5{margin-left:45.5801105%}.row-fluid .offset5:first-child{margin-left:42.81767956%}.row-fluid .offset4{margin-left:37.01657459%}.row-fluid .offset4:first-child{margin-left:34.25414365%}.row-fluid .offset3{margin-left:28.45303867%}.row-fluid .offset3:first-child{margin-left:25.69060773%}.row-fluid .offset2{margin-left:19.88950276%}.row-fluid .offset2:first-child{margin-left:17.12707182%}.row-fluid .offset1{margin-left:11.32596685%}.row-fluid .offset1:first-child{margin-left:8.56353591%}.uneditable-input,input,textarea{margin-left:0}.controls-row [class*=span]+[class*=span]{margin-left:20px}.uneditable-input.span12,input.span12,textarea.span12{width:710px}.uneditable-input.span11,input.span11,textarea.span11{width:648px}.uneditable-input.span10,input.span10,textarea.span10{width:586px}.uneditable-input.span9,input.span9,textarea.span9{width:524px}.uneditable-input.span8,input.span8,textarea.span8{width:462px}.uneditable-input.span7,input.span7,textarea.span7{width:400px}.uneditable-input.span6,input.span6,textarea.span6{width:338px}.uneditable-input.span5,input.span5,textarea.span5{width:276px}.uneditable-input.span4,input.span4,textarea.span4{width:214px}.uneditable-input.span3,input.span3,textarea.span3{width:152px}.uneditable-input.span2,input.span2,textarea.span2{width:90px}.uneditable-input.span1,input.span1,textarea.span1{width:28px}}@media (max-width:767px){body{padding-left:20px;padding-right:20px}.navbar-fixed-bottom,.navbar-fixed-top,.navbar-static-top{margin-left:-20px;margin-right:-20px}.container-fluid{padding:0}.dl-horizontal dt{float:none;clear:none;width:auto;text-align:left}.dl-horizontal dd{margin-left:0}.container{width:auto}.row-fluid{width:100%}.row,.thumbnails{margin-left:0}.thumbnails>li{float:none;margin-left:0}.row-fluid [class*=span],.uneditable-input[class*=span],[class*=span]{float:none;display:block;width:100%;margin-left:0;box-sizing:border-box}.row-fluid .span12,.span12{width:100%;box-sizing:border-box}.row-fluid [class*=offset]:first-child{margin-left:0}.input-large,.input-xlarge,.input-xxlarge,.uneditable-input,input[class*=span],select[class*=span],textarea[class*=span]{display:block;width:100%;min-height:30px;box-sizing:border-box}.input-append input,.input-append input[class*=span],.input-prepend input,.input-prepend input[class*=span]{display:inline-block;width:auto}.controls-row [class*=span]+[class*=span]{margin-left:0}.modal{position:fixed;top:20px;left:20px;right:20px;width:auto;margin:0}.modal.fade{top:-100px}.modal.fade.in{top:20px}}@media (max-width:480px){.nav-collapse{-webkit-transform:translateZ(0)}.page-header h1 small{display:block;line-height:20px}input[type=checkbox],input[type=radio]{border:1px solid #ccc}.form-horizontal .control-label{float:none;width:auto;padding-top:0;text-align:left}.form-horizontal .controls{margin-left:0}.form-horizontal .control-list{padding-top:0}.form-horizontal .form-actions{padding-left:10px;padding-right:10px}.media .pull-left,.media .pull-right{float:none;display:block;margin-bottom:10px}.media-object{margin-right:0;margin-left:0}.modal{top:10px;left:10px;right:10px}.modal-header .close{padding:10px;margin:-10px}.carousel-caption{position:static}}@media (max-width:839px){body{padding-top:0}.navbar-fixed-bottom,.navbar-fixed-top{position:static}.navbar-fixed-top{margin-bottom:20px}.navbar-fixed-bottom{margin-top:20px}.navbar-fixed-bottom .navbar-inner,.navbar-fixed-top .navbar-inner{padding:5px}.navbar .container{width:auto;padding:0}.navbar .brand{padding-left:10px;padding-right:10px;margin:0 0 0 -5px}.nav-collapse{clear:both}.nav-collapse .nav{float:none;margin:0 0 10px}.nav-collapse .nav>li{float:none}.nav-collapse .nav>li>a{margin-bottom:2px}.nav-collapse .nav>.divider-vertical{display:none}.nav-collapse .nav .nav-header{color:#777;text-shadow:none}.nav-collapse .dropdown-menu a,.nav-collapse .nav>li>a{padding:9px 15px;font-weight:700;color:#777;border-radius:3px}.nav-collapse .btn{padding:4px 10px;font-weight:400;border-radius:4px}.nav-collapse .dropdown-menu li+li a{margin-bottom:2px}.nav-collapse .dropdown-menu a:focus,.nav-collapse .dropdown-menu a:hover,.nav-collapse .nav>li>a:focus,.nav-collapse .nav>li>a:hover{background-color:#f2f2f2}.navbar-inverse .nav-collapse .dropdown-menu a,.navbar-inverse .nav-collapse .nav>li>a{color:#999}.navbar-inverse .nav-collapse .dropdown-menu a:focus,.navbar-inverse .nav-collapse .dropdown-menu a:hover,.navbar-inverse .nav-collapse .nav>li>a:focus,.navbar-inverse .nav-collapse .nav>li>a:hover{background-color:#111}.nav-collapse.in .btn-group{margin-top:5px;padding:0}.nav-collapse .dropdown-menu{position:static;top:auto;left:auto;float:none;display:none;max-width:none;margin:0 15px;padding:0;background-color:transparent;border:none;border-radius:0;box-shadow:none}.nav-collapse .open>.dropdown-menu{display:block}.nav-collapse .dropdown-menu .divider,.nav-collapse .dropdown-menu:after,.nav-collapse .dropdown-menu:before,.nav-collapse .nav>li>.dropdown-menu:after,.nav-collapse .nav>li>.dropdown-menu:before{display:none}.nav-collapse .navbar-form,.nav-collapse .navbar-search{float:none;padding:10px 15px;margin:10px 0;border-top:1px solid #f2f2f2;border-bottom:1px solid #f2f2f2;box-shadow:inset 0 1px 0 hsla(0,0%,100%,.1),0 1px 0 hsla(0,0%,100%,.1)}.navbar-inverse .nav-collapse .navbar-form,.navbar-inverse .nav-collapse .navbar-search{border-top-color:#111;border-bottom-color:#111}.navbar .nav-collapse .nav.pull-right{float:none;margin-left:0}.nav-collapse,.nav-collapse.collapse{overflow:hidden;height:0}.navbar .btn-navbar{display:block}.navbar-static .navbar-inner{padding-left:10px;padding-right:10px}}@media (min-width:839px + 1){.nav-collapse.collapse{height:auto!important;overflow:visible!important}}.lightbox{background-color:transparent;text-align:center;line-height:0;z-index:1050;position:relative;top:70px;outline:0}.lightbox .hide{display:none}.lightbox .in{display:block}.lightbox-content{display:inline-block;padding:10px;background-color:#fff;border:1px solid #999;border:1px solid rgba(0,0,0,.3);border-radius:6px;box-shadow:0 3px 7px rgba(0,0,0,.3);background-clip:padding-box}.lightbox-content .lightbox-caption{padding:2%;position:absolute;left:11px;right:12px;bottom:11px;background:#000;background:rgba(0,0,0,.6);color:#fff;text-align:center;text-shadow:0 -1px 0 #000;text-shadow:0 -1px 0 rgba(0,0,0,.3);font-size:14px;line-height:18px}.lightbox-header .close{color:#fff;margin-right:-16px;margin-top:-16px;font-size:2em;opacity:.8;filter:alpha(opacity=80)}.lightbox-header .close :hover{opacity:.4;filter:alpha(opacity=40)} -/*! - * Bootstrap Modal - * - * Copyright Jordan Schroter - * Licensed under the Apache License v2.0 - * http://www.apache.org/licenses/LICENSE-2.0 - * - */.modal-open{overflow:hidden}.modal-open.page-overflow .modal-scrollable,.modal-open.page-overflow .page-container,.modal-open.page-overflow .page-container .navbar-fixed-bottom,.modal-open.page-overflow .page-container .navbar-fixed-top{overflow-y:scroll}@media (max-width:979px){.modal-open.page-overflow .page-container .navbar-fixed-bottom,.modal-open.page-overflow .page-container .navbar-fixed-top{overflow-y:visible}}.modal-scrollable{position:fixed;top:0;bottom:0;left:0;right:0;overflow:auto}.modal{outline:none;position:absolute;margin-top:0;top:50%;overflow:visible}.modal.fade{top:-100%;-webkit-transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out;transition:opacity .3s linear,top .3s ease-out,bottom .3s ease-out,margin-top .3s ease-out}.modal.fade.in{top:50%}.modal-body{max-height:none;overflow:visible}.modal.modal-absolute{position:absolute;z-index:950}.modal .loading-mask{position:absolute;top:0;bottom:0;left:0;right:0;background:#fff;border-radius:6px}.modal-backdrop.modal-absolute{position:absolute;z-index:940}.modal-backdrop,.modal-backdrop.fade.in{opacity:.7;filter:alpha(opacity=70);background:#fff}.modal.container{width:940px;margin-left:-470px}.modal-overflow.modal{top:1%}.modal-overflow.modal.fade{top:-100%}.modal-overflow.modal.fade.in{top:1%}.modal-overflow .modal-body{overflow:auto;-webkit-overflow-scrolling:touch}@media (min-width:1200px){.modal.container{width:1170px;margin-left:-585px}}@media (max-width:979px){.modal,.modal.container,.modal.modal-overflow{top:1%;right:1%;left:1%;bottom:auto;width:auto!important;height:auto!important;margin:0!important;padding:0!important}.modal.container.fade.in,.modal.fade.in,.modal.modal-overflow.fade.in{top:1%;bottom:auto}.modal-body,.modal-overflow .modal-body{position:static;margin:0;height:auto!important;max-height:none!important;overflow:visible!important}.modal-footer,.modal-overflow .modal-footer{position:static}}.loading-spinner{position:absolute;top:50%;left:50%;margin:-12px 0 0 -12px}.animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-fill-mode:both;animation-fill-mode:both}@-webkit-keyframes shake{0%,to{-webkit-transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px)}}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-10px)}20%,40%,60%,80%{transform:translateX(10px)}}.shake{-webkit-animation-name:shake;animation-name:shake} - -/*! - * jQuery contextMenu - Plugin for simple contextMenu handling - * - * Version: 1.6.6 - * - * Authors: Rodney Rehm, Addy Osmani (patches for FF) - * Web: http://medialize.github.com/jQuery-contextMenu/ - * - * Licensed under - * MIT License http://www.opensource.org/licenses/mit-license - * GPL v3 http://opensource.org/licenses/GPL-3.0 - * - */.context-menu-list{margin:0;padding:0;min-width:120px;max-width:250px;display:inline-block;position:absolute;list-style-type:none;border:1px solid #ddd;background:#eee;-ms-box-shadow:0 2px 5px rgba(0,0,0,.5);-o-box-shadow:0 2px 5px rgba(0,0,0,.5);box-shadow:0 2px 5px rgba(0,0,0,.5);font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.context-menu-item{padding:2px 2px 2px 24px;background-color:#eee;position:relative;-webkit-user-select:none;-moz-user-select:-moz-none;-ms-user-select:none;user-select:none}.context-menu-item>label>input,.context-menu-item>label>textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text}.context-menu-item.hover{cursor:pointer;background-color:#39f}.context-menu-item.disabled{color:#666}.context-menu-submenu:after{content:">";color:#666;position:absolute;top:0;right:3px;z-index:1}.context-menu-item.icon{min-height:18px;background-repeat:no-repeat;background-position:4px 2px}.context-menu-item.icon-edit{background-image:url(images/page_white_edit.png)}.context-menu-item.icon-cut{background-image:url(images/cut.png)}.context-menu-item.icon-copy{background-image:url(images/page_white_copy.png)}.context-menu-item.icon-paste{background-image:url(images/page_white_paste.png)}.context-menu-item.icon-delete{background-image:url(images/page_white_delete.png)}.context-menu-item.icon-add{background-image:url(images/page_white_add.png)}.context-menu-item.icon-quit{background-image:url(images/door.png)}.context-menu-input>label>*{vertical-align:top}.context-menu-input>label>input[type=checkbox],.context-menu-input>label>input[type=radio]{margin-left:-17px}.context-menu-input>label>span{margin-left:5px}.context-menu-input>label,.context-menu-input>label>input[type=text],.context-menu-input>label>select,.context-menu-input>label>textarea{display:block;width:100%;-ms-box-sizing:border-box;-o-box-sizing:border-box;box-sizing:border-box}.context-menu-input>label>textarea{height:100px}.context-menu-item>.context-menu-list{display:none;right:-5px;top:5px}.context-menu-item.hover>.context-menu-list{display:block}.context-menu-accesskey{text-decoration:underline}*,:after,:before{box-sizing:border-box}body,html{font-family:Open Sans,sans-serif;font-size:100%;padding:0;margin:0;height:100%}body{padding-top:32px;font-weight:200;background:#ececec;overflow:-moz-scrollbars-vertical}.btn{background-image:none!important;text-shadow:none!important;border-color:none!important;box-shadow:none!important}.btn:focus{outline:none}.btn-inverse{background-image:none!important;background:#333}pre.no-prettify,pre.prettyprint{height:300px;margin:0!important;width:100%!important;overflow:scroll;border-radius:0!important;margin-top:4px}.input-append .add-on:last-child,.input-append .btn-group:last-child>.dropdown-toggle,.input-append .btn:last-child{border-radius:0!important}[class*=" rficon-"],[class^=rficon-]{display:inline-block;width:16px;height:16px;margin-top:1px;*margin-right:.3em;line-height:16px;vertical-align:text-top;background-position:0 0;background-repeat:no-repeat}.rficon-clipboard-apply{background-image:url(../img/clipboard_apply.png)}.rficon-clipboard-clear{background-image:url(../img/clipboard_clear.png)}.rficon-upload{background-image:url(../img/upload.png)}.btn{border-radius:0}.container-fluid{padding-right:0!important;margin-top:10px!important}.img-precontainer{width:100%;background:#fff}.img-container,.img-precontainer{margin:auto;text-align:center;border:none}.img-container{height:91px;width:122px;padding:0;overflow:hidden;display:table-cell;vertical-align:middle;background-image:url(../img/trans.jpg);background-size:13px}.img-container img{max-width:122px;max-height:91px}ul.breadcrumb{margin-bottom:5px;border-radius:0;padding-bottom:4px;padding-top:6px;background:#f0f0f0;box-shadow:0 1px 4px rgba(0,0,0,.065);border-bottom:1px solid #bbb}ul.breadcrumb .pull-left i{margin-top:2px}.alert{padding:8px 35px 8px 14px;margin-bottom:2px;border:1px solid #aaa;color:#666;font-weight:200;font-size:13px;border-radius:0;background:#fff}.img-container *,.img-container-mini *{vertical-align:middle}#help{display:none}.text-center{text-align:center}iframe{overflow:auto;-webkit-overflow-scrolling:touch}.uploader{position:fixed;top:6px;left:6px;right:6px;bottom:6px;z-index:9999;background:#eee;border:1px solid #ccc;display:none;box-shadow:0 0 10px 0 rgba(1,1,1,.5)}.uploader .flex{padding:10px;position:relative}.uploader .container1,.uploader .container2,.uploader .flex{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:100%}.uploader .upload-help{font-size:11px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff;text-align:center}.uploader .upload-tabbable{padding:2px;height:100%;overflow:hidden}.uploader .upload-tabbable .nav{margin:0}.uploader .upload-tabbable .nav li a{font-size:13px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}.uploader .upload-tabbable #urlUpload{padding:5px 10px}.uploader .upload-tabbable .tab-content{padding:5px;border-bottom:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #ddd;background:#fff;-ms-flex-positive:2;flex-grow:2;position:relative}.uploader .upload-tabbable .tab-content .tab-pane{position:absolute;top:0;bottom:0;left:0;right:0;padding:5px}.uploader .upload-tabbable .tab-content form{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;height:100%}.uploader .upload-tabbable .tab-content form #filesTable{-ms-flex-positive:2;flex-grow:2;overflow-y:scroll;background:#fff;font-size:.95em}.uploader .upload-tabbable .tab-content form #filesTable .progress{margin-bottom:4px}input#filter-input{margin:0;width:84px;height:26px;vertical-align:bottom;margin-bottom:2px;border-radius:0;font-size:12px;font-weight:200;position:relative;left:1px}.qq-uploader .span9{margin-left:14px!important;width:690px!important}.space10{clear:both;height:10px}h4{font-size:12px;margin:0;text-align:center;padding:0;margin-top:6px;line-height:18px}h3,h4{font-weight:200}h3{font-size:14px}.boxes{border:1px solid #ccc;word-wrap:break-word;background:#fff;box-shadow:1px 1px 2px 0 rgba(0,0,0,.2);min-height:115px;text-align:center}.container-fluid{padding:0 10px!important}body .avpw .avpw_primary_button,body .avpw .avpw_primary_button:active,body .avpw .avpw_primary_button:link,body .avpw .avpw_primary_button:visited{color:#fff;background:#999;border:none}body .avpw .avpw_primary_button:hover{border:none;background:#666}.download-form{margin-bottom:25px}.grid li i{margin-left:2px;margin-right:2px;z-index:0}.box,.boxx{text-align:center;word-wrap:break-word;vertical-align:top;text-align:left;position:relative;z-index:100;padding:4px}.box,.box .btn,.boxx{border:none;box-shadow:none}.box .btn{width:100%;background:none;z-index:200}.navbar{margin-bottom:0;border-bottom:1px solid #bbb}.navbar .navbar-inner{border:none;min-height:35px;border-radius:0;padding-bottom:2px;margin:0;padding-right:8px;padding-left:8px}.navbar .navbar-inner .container-fluid{margin:0;margin-top:0!important;padding:0}.navbar .navbar-inner .container-fluid .brand{display:none}.navbar .navbar-inner .container-fluid .filters span{margin-top:0;font-size:13px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff}ul.sorting{position:absolute;left:-25px;top:20px;min-width:0;background:#eee}ul.sorting li a:hover{background:#aaa}.btn-group .dropdown-toggle.sorting-btn{position:relative;top:-5px;font-size:13px}.btn-group .dropdown-toggle.sorting-btn,.btn-group .dropdown-toggle.sorting-btn:hover{background:none;border:none;box-shadow:none;-webkit-box-shadow:none}ul.sorting.dropdown-menu>li>a{font-size:12px;text-shadow:none}ul.sorting.dropdown-menu>li>a.descending{background-image:url(../img/down.png);background-repeat:no-repeat;background-position:6px 8px}ul.sorting.dropdown-menu>li>a.ascending{background-image:url(../img/up.png);background-repeat:no-repeat;background-position:6px 8px}.sorter-container{margin-top:5px;margin-bottom:0;border-radius:0;padding-bottom:4px;padding-top:6px;box-shadow:0 1px 4px rgba(0,0,0,.065);background-color:#f5f5f5;position:relative;border-bottom:1px solid #bbb;height:24px}.sorter-container a.sorter{color:#000}.sorter-container a.descending{padding-left:9px;background-image:url(../img/down.png);background-repeat:no-repeat;background-position:0 3px}.sorter-container a.ascending{padding-left:9px;background-image:url(../img/up.png);background-repeat:no-repeat;background-position:0 4px}.sorter-container .file-date,.sorter-container .file-extension,.sorter-container .file-name,.sorter-container .file-operations,.sorter-container .file-size,.sorter-container .img-dimension{display:block;position:absolute;top:0;z-index:100;box-shadow:none;text-align:left;font-size:13px;margin-top:1px;color:#999}.sorter-container .file-operations{width:110px;right:0}.sorter-container .img-dimension{width:65px;right:123px}.sorter-container .file-date{width:70px;right:188px}.sorter-container .file-size{width:55px;right:258px}.sorter-container .file-extension{width:40px;right:313px}.sorter-container .file-name{width:50px;left:52px}.file-date,.file-extension,.file-name,.file-operations,.file-size,.img-dimension{font-size:12px;font-weight:200;color:#777;text-shadow:0 1px 0 #fff;display:none}.view-controller{text-align:left}.view-controller .btn-group>.btn:first-child,.view-controller .btn-group>.btn:last-child{border-radius:0}.navbar .filters .btn{margin-bottom:2px;padding:2px 8px;margin-top:5px}.filters .types{text-align:right}.fileupload-buttonbar{margin-bottom:10px}.fileupload-buttonbar .progress{margin:0}@media (max-width:780px){#view2{display:none}}@media (min-width:840px){.mobile-inline-visible{display:none!important}}@media (max-width:839px){body{padding-top:0}.mobile-inline-visible{display:inline!important}.filters .types{text-align:left}.navbar .navbar-inner .container-fluid .brand{display:block}.navbar .navbar-inner{padding-bottom:4px}.filters div.span2.half,.filters div.span3.half,.filters div.span4.half{float:left;width:auto;margin-right:10px}.filters div.entire{float:none;width:100%;clear:both}.container-fluid{margin:0!important;padding:0}#qLbar{height:50px!important}}@media (min-width:400px) and (max-width:839px){.filters .row-fluid .half{width:48.61878453038674%;*width:48.56559304102504%;float:left}}.tooltip.in{opacity:1;filter:alpha(opacity=1)}.tooltip,.tooltip.in{z-index:10000;font-weight:700}.grid{padding:0;margin:0 auto;list-style:none;-webkit-overflow-scrolling:touch}.ui-draggable-helper{z-index:10}.grid li{display:inline-block;width:124px;border:none;margin:4px;margin-bottom:8px;padding:0;vertical-align:top}.grid figure{margin:0;position:relative;display:block;width:122px;margin:auto}.grid figure:hover{background:#e0e0e0!important}.list-view1.grid li,.list-view1.grid li figure{width:100%}.grid figcaption{text-align:center;padding:2px;padding-top:8px;color:#fff;height:30px;width:122px;margin-left:0;margin-right:0;position:absolute;top:auto;bottom:0;box-shadow:inset 0 0 8px 0 rgba(41,41,41,.5)}.grid figcaption a{margin:0;padding:3px}.grid figcaption h3{margin:0;padding:0;color:#fff}.grid h4{text-align:center;color:#000;padding:0;margin-bottom:4px;margin-top:4px}.grid figure .box{box-sizing:content-box;cursor:pointer}.list-view0.grid figure .box,.list-view1.grid figure .box,.list-view2.grid figure .box{max-width:100%;display:block;position:relative;overflow:hidden;z-index:1}.list-view0.grid figure .box h4.ellipsis,.list-view1.grid figure .box h4.ellipsis,.list-view2.grid figure .box h4.ellipsis{height:18px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.list-view0.grid figure .box h4,.list-view0.grid figure .box h4 a,.list-view1.grid figure .box h4,.list-view1.grid figure .box h4 a,.list-view2.grid figure .box h4,.list-view2.grid figure .box h4 a{z-index:1}.no-touch .list-view0 figure .box{z-index:1;transition:transform .3s}.list-view0.grid .ui-state-highlight .img-precontainer{background:grey!important}.list-view0.grid .ui-state-highlight .img-precontainer .img-container{background:repeating-linear-gradient(45deg,transparent,transparent 5px,hsla(0,0%,100%,.4) 0,hsla(0,0%,100%,.3) 10px);border:none;overflow:hidden}.list-view0.grid .ui-state-hover .img-precontainer .img-container{background:#666}.list-view1.grid .ui-state-highlight:nth-child(odd) figure,.list-view2.grid .ui-state-highlight:nth-child(odd) figure{background:#ddd!important;border-bottom-color:#444!important}.list-view1.grid .ui-state-highlight:nth-child(2n) figure,.list-view2.grid .ui-state-highlight:nth-child(2n) figure{background:#ccc!important;border-bottom-color:#aaa!important}.list-view1.grid .ui-state-highlight.ui-state-hover figure,.list-view2.grid .ui-state-highlight.ui-state-hover figure{background-color:#aaa!important}.no-touch .list-view0 figure.cs-hover .box,.no-touch .list-view0 figure:hover .box{box-shadow:0 0 4px 0 rgba(1,1,1,.5);transform:translateY(-26px)}.list-view0 figure.cs-hover .box.no-effect,.list-view0 figure:hover .box.no-effect,.no-effect{box-shadow:none;transform:none}.list-view0 .img-precontainer-mini{display:none;background:none}a,a:hover{color:#000;text-decoration:none}.back-directory .box,.back-directory .img-precontainer,.back-directory .img-precontainer-mini{background:none}form{margin:0;padding:0}.google-iframe,.viewer-iframe{width:100%;height:500px;border:none}.modal{width:60%;margin-left:-30%}.modal-body{padding:6px}.modal-body form,.modal-body input,.modal-body textarea{margin:0;border-radius:0}.modal-body .text-center{padding-bottom:6px}.modal-footer{padding:7px}.modal-header{padding:7px 8px!important}.modal-header h3{font-weight:300;font-size:20px}.list-view1.sorter-container{display:block}.list-view0.sorter-container,.list-view2.sorter-container{display:none}.list-view0.grid .img-precontainer .img-container img{max-width:122px!important;max-height:91px!important}.list-view0.grid .img-precontainer .img-container img.icon{width:122px;margin-top:0}.list-view0.grid .img-precontainer .filetype{position:absolute;top:0;width:122px;text-align:center;color:#fff;font-size:13px;line-height:22px}.list-view0.grid .cover{background:hsla(0,0%,100%,.25);width:122px;position:absolute;top:22px;right:0;height:69px}.list-view0.grid .box{background:#fff}.list-view0.grid .directory{background:#ddd}.list-view0.grid figure.back-directory .directory{background:#bbb}.list-view0.grid figcaption{background:#fff}.list-view0.grid .selected figure{border:none;height:126px}.list-view0.grid .selected figure .box,.list-view0.grid .selected figure>a,.list-view0.grid .selected figure figcaption{display:none}.list-view1.grid li,.list-view2.grid li{margin:0}.list-view1.grid li.back figure.back-directory,.list-view2.grid li.back figure.back-directory{height:34px}.list-view1.grid li:nth-child(odd) figure,.list-view2.grid li:nth-child(odd) figure{background:#f9f9f9}.list-view1.grid li:nth-child(odd) figure.directory,.list-view2.grid li:nth-child(odd) figure.directory{background:#eaeaea}.list-view1.grid li figure,.list-view2.grid li figure{border-bottom:1px solid #aaa;background:#fff}.list-view1.grid li figure.back-directory,.list-view2.grid li figure.back-directory{background:#bbb}.list-view1.grid li figure.back-directory .box,.list-view2.grid li figure.back-directory .box{background:none}.list-view1.grid li figure.directory,.list-view2.grid li figure.directory{background:#efefef}.list-view1.grid li figure.directory box,.list-view2.grid li figure.directory box{padding:0;min-height:10px}.list-view1.grid li figure .box,.list-view2.grid li figure .box{margin-left:50px;transition:none}.list-view1.grid li figure .box h4,.list-view2.grid li figure .box h4{padding-top:1px;font-size:13px;text-align:left}.list-view1.grid .img-precontainer-mini,.list-view2.grid .img-precontainer-mini{display:block;position:absolute;width:45px;height:34px;overflow:hidden;text-align:center}.list-view1.grid .img-precontainer-mini img,.list-view2.grid .img-precontainer-mini img{max-width:45px}.list-view1.grid .img-precontainer-mini .filetype,.list-view2.grid .img-precontainer-mini .filetype{position:absolute;top:1px;text-align:center;left:0;padding:1px 2px;font-size:13px;line-height:32px;width:45px;height:32px;color:#fff;background:#333}.list-view1.grid .cover,.list-view2.grid .cover{display:none}.list-view1.grid .img-container-mini,.list-view2.grid .img-container-mini{width:45px;height:34px;border:none;overflow:hidden;display:table-cell;text-align:center;vertical-align:middle;margin:auto}.list-view1.grid .img-precontainer-mini.original-thumb,.list-view2.grid .img-precontainer-mini.original-thumb{padding:0}.list-view1.grid .img-precontainer-mini.original-thumb img,.list-view2.grid .img-precontainer-mini.original-thumb img{width:auto;max-height:32px}.list-view1.grid .img-precontainer-mini.original-thumb img.original,.list-view2.grid .img-precontainer-mini.original-thumb img.original{width:auto;height:auto}.list-view1.grid .img-precontainer,.list-view2.grid .img-precontainer{display:none}.list-view1.grid figcaption,.list-view2.grid figcaption{background:none;width:120px;position:absolute;right:0;top:0;z-index:1;bottom:0;box-shadow:none;text-align:right}.list-view1.grid .selected figure,.list-view2.grid .selected figure{background:#ccc!important}.list-view1.grid .file-date,.list-view1.grid .file-extension,.list-view1.grid .file-size,.list-view1.grid .img-dimension{overflow:hidden;display:block;position:absolute;top:0;z-index:1;box-shadow:none;text-align:left;margin-top:7px}.list-view1.grid .img-dimension{width:65px;right:120px}.list-view1.grid .file-date{width:70px;right:185px}.list-view1.grid .file-size{width:55px;right:255px}.list-view1.grid .file-extension{width:40px;right:310px}.list-view1.grid figure .box{padding-right:352px}.list-view2.grid figure .box{padding-right:115px}@media (max-width:610px){.list-view1.grid figure .box{padding-right:312px}.list-view1.grid figure .file-extension,.sorter-container .file-extension{display:none}}@media (max-width:565px){.list-view1.grid figure .box{padding-right:257px}.list-view1.grid figure .file-size,.sorter-container .file-size{display:none}}@media (max-width:495px){.list-view1.grid figure .box{padding-right:187px}.list-view1.grid figure .file-date,.sorter-container .file-date{display:none}}@media (max-width:430px){.list-view1.grid figure .box{padding-right:115px}.list-view1.grid figure .img-dimension,.sorter-container .img-dimension{display:none}.breadcrumb{margin-left:0;margin-right:0}}.list-view1.grid .img-precontainer-mini .filetype.pdf,.list-view2.grid .img-precontainer-mini .filetype.pdf{background:#cb0011}.list-view1.grid .img-precontainer-mini .filetype.css,.list-view2.grid .img-precontainer-mini .filetype.css{background:#d10698}.list-view1.grid .img-precontainer-mini .filetype.ai,.list-view2.grid .img-precontainer-mini .filetype.ai{background:#d6772f}.list-view1.grid .img-precontainer-mini .filetype.psd,.list-view2.grid .img-precontainer-mini .filetype.psd{background:#0960a4}.list-view1.grid .img-precontainer-mini .filetype.html,.list-view1.grid .img-precontainer-mini .filetype.xhtml,.list-view2.grid .img-precontainer-mini .filetype.html,.list-view2.grid .img-precontainer-mini .filetype.xhtml{background:#035bc4}.list-view1.grid .img-precontainer-mini .filetype.fla,.list-view1.grid .img-precontainer-mini .filetype.flv,.list-view2.grid .img-precontainer-mini .filetype.fla,.list-view2.grid .img-precontainer-mini .filetype.flv{background:#cf302e}.list-view1.grid .img-precontainer-mini .filetype.ppt,.list-view1.grid .img-precontainer-mini .filetype.pptx,.list-view2.grid .img-precontainer-mini .filetype.ppt,.list-view2.grid .img-precontainer-mini .filetype.pptx{background:#da5b00}.list-view1.grid .img-precontainer-mini .filetype.css,.list-view1.grid .img-precontainer-mini .filetype.xls,.list-view1.grid .img-precontainer-mini .filetype.xlsx,.list-view2.grid .img-precontainer-mini .filetype.css,.list-view2.grid .img-precontainer-mini .filetype.xls,.list-view2.grid .img-precontainer-mini .filetype.xlsx{background:#1a712c}.list-view1.grid .img-precontainer-mini .filetype.doc,.list-view1.grid .img-precontainer-mini .filetype.docx,.list-view1.grid .img-precontainer-mini .filetype.rts,.list-view2.grid .img-precontainer-mini .filetype.doc,.list-view2.grid .img-precontainer-mini .filetype.docx,.list-view2.grid .img-precontainer-mini .filetype.rts{background:#002093}.list-view1.grid .img-precontainer-mini .filetype.gzip,.list-view1.grid .img-precontainer-mini .filetype.rar,.list-view1.grid .img-precontainer-mini .filetype.zip,.list-view2.grid .img-precontainer-mini .filetype.gzip,.list-view2.grid .img-precontainer-mini .filetype.rar,.list-view2.grid .img-precontainer-mini .filetype.zip{background:#fe9221}.list-view1.grid .img-precontainer-mini .filetype.avi,.list-view1.grid .img-precontainer-mini .filetype.mov,.list-view1.grid .img-precontainer-mini .filetype.mp4,.list-view1.grid .img-precontainer-mini .filetype.mpeg,.list-view1.grid .img-precontainer-mini .filetype.mpg,.list-view1.grid .img-precontainer-mini .filetype.webm,.list-view1.grid .img-precontainer-mini .filetype.wma,.list-view2.grid .img-precontainer-mini .filetype.avi,.list-view2.grid .img-precontainer-mini .filetype.mov,.list-view2.grid .img-precontainer-mini .filetype.mp4,.list-view2.grid .img-precontainer-mini .filetype.mpeg,.list-view2.grid .img-precontainer-mini .filetype.mpg,.list-view2.grid .img-precontainer-mini .filetype.webm,.list-view2.grid .img-precontainer-mini .filetype.wma{background:#31231e}.list-view1.grid .img-precontainer-mini .filetype.ac3,.list-view1.grid .img-precontainer-mini .filetype.aiff,.list-view1.grid .img-precontainer-mini .filetype.m4a,.list-view1.grid .img-precontainer-mini .filetype.mid,.list-view1.grid .img-precontainer-mini .filetype.mp3,.list-view1.grid .img-precontainer-mini .filetype.ogg,.list-view1.grid .img-precontainer-mini .filetype.wav,.list-view2.grid .img-precontainer-mini .filetype.ac3,.list-view2.grid .img-precontainer-mini .filetype.aiff,.list-view2.grid .img-precontainer-mini .filetype.m4a,.list-view2.grid .img-precontainer-mini .filetype.mid,.list-view2.grid .img-precontainer-mini .filetype.mp3,.list-view2.grid .img-precontainer-mini .filetype.ogg,.list-view2.grid .img-precontainer-mini .filetype.wav{background:#9f008b}.list-view1.grid .img-precontainer-mini .filetype.odb,.list-view1.grid .img-precontainer-mini .filetype.odf,.list-view1.grid .img-precontainer-mini .filetype.odg,.list-view1.grid .img-precontainer-mini .filetype.odp,.list-view1.grid .img-precontainer-mini .filetype.ods,.list-view1.grid .img-precontainer-mini .filetype.odt,.list-view1.grid .img-precontainer-mini .filetype.otg,.list-view1.grid .img-precontainer-mini .filetype.otp,.list-view1.grid .img-precontainer-mini .filetype.ots,.list-view1.grid .img-precontainer-mini .filetype.ott,.list-view2.grid .img-precontainer-mini .filetype.odb,.list-view2.grid .img-precontainer-mini .filetype.odf,.list-view2.grid .img-precontainer-mini .filetype.odg,.list-view2.grid .img-precontainer-mini .filetype.odp,.list-view2.grid .img-precontainer-mini .filetype.ods,.list-view2.grid .img-precontainer-mini .filetype.odt,.list-view2.grid .img-precontainer-mini .filetype.otg,.list-view2.grid .img-precontainer-mini .filetype.otp,.list-view2.grid .img-precontainer-mini .filetype.ots,.list-view2.grid .img-precontainer-mini .filetype.ott{background:#367bbe}.list-view1.grid .img-precontainer-mini .filetype.bmp,.list-view1.grid .img-precontainer-mini .filetype.gif,.list-view1.grid .img-precontainer-mini .filetype.jpeg,.list-view1.grid .img-precontainer-mini .filetype.jpg,.list-view1.grid .img-precontainer-mini .filetype.png,.list-view1.grid .img-precontainer-mini .filetype.svg,.list-view1.grid .img-precontainer-mini .filetype.tiff,.list-view2.grid .img-precontainer-mini .filetype.bmp,.list-view2.grid .img-precontainer-mini .filetype.gif,.list-view2.grid .img-precontainer-mini .filetype.jpeg,.list-view2.grid .img-precontainer-mini .filetype.jpg,.list-view2.grid .img-precontainer-mini .filetype.png,.list-view2.grid .img-precontainer-mini .filetype.svg,.list-view2.grid .img-precontainer-mini .filetype.tiff{background:#cfa554}.list-view1.grid .img-precontainer-mini .filetype.dmg,.list-view1.grid .img-precontainer-mini .filetype.iso,.list-view1.grid .img-precontainer-mini .filetype.log,.list-view1.grid .img-precontainer-mini .filetype.sql,.list-view1.grid .img-precontainer-mini .filetype.txt,.list-view1.grid .img-precontainer-mini .filetype.xml,.list-view2.grid .img-precontainer-mini .filetype.dmg,.list-view2.grid .img-precontainer-mini .filetype.iso,.list-view2.grid .img-precontainer-mini .filetype.log,.list-view2.grid .img-precontainer-mini .filetype.sql,.list-view2.grid .img-precontainer-mini .filetype.txt,.list-view2.grid .img-precontainer-mini .filetype.xml{background:#cacaca}.list-view1.grid .img-precontainer-mini .filetype.accdb,.list-view1.grid .img-precontainer-mini .filetype.ade,.list-view1.grid .img-precontainer-mini .filetype.adp,.list-view1.grid .img-precontainer-mini .filetype.mdb,.list-view2.grid .img-precontainer-mini .filetype.accdb,.list-view2.grid .img-precontainer-mini .filetype.ade,.list-view2.grid .img-precontainer-mini .filetype.adp,.list-view2.grid .img-precontainer-mini .filetype.mdb{background:#b61c19}.lightbox-content{overflow:hidden;padding:0;background:none;box-shadow:none;border-radius:0;border:0}.context-menu-list{font-family:Open Sans,sans-serif;width:200px;background:#fff;font-size:12px;margin:0;padding:5px}.context-menu-item{background-color:#fff;position:relative;height:auto;word-wrap:break-word;-webkit-user-select:none;-moz-user-select:0;-ms-user-select:none;user-select:none;padding:5px 5px 5px 30px}.context-menu-item:last-child{border:none}.context-menu-separator{padding-bottom:0;border-bottom:1px solid #ddd}.context-menu-item.hover{background-color:#ddd}.context-menu-input.hover,.context-menu-item.disabled.hover{cursor:default;background-color:#eee}.context-menu-item.icon{vertical-align:middle;background-position:4px 5px;width:auto;display:list-item}.context-menu-item.icon-edit{background-image:url(../img/file_edit.png)}.context-menu-item.icon-cut{background-image:url(../img/cut.png)}.context-menu-item.icon-copy{background-image:url(../img/copy.png)}.context-menu-item.icon-rename{background-image:url(../img/rename.png)}.context-menu-item.icon-preview{background-image:url(../img/preview.png)}.context-menu-item.icon-dimension{background-image:url(../img/dimension.png)}.context-menu-item.icon-date{background-image:url(../img/date.png)}.context-menu-item.icon-label{background-image:url(../img/label.png)}.context-menu-item.icon-size{background-image:url(../img/size.png)}.context-menu-item.icon-download{background-image:url(../img/download.png)}.context-menu-item.icon-paste{background-image:url(../img/page_white_paste.png)}.context-menu-item.icon-clipboard-apply{background-image:url(../img/clipboard_apply.png)}.context-menu-item.icon-delete{background-image:url(../img/page_white_delete.png)}.context-menu-item.icon-add{background-image:url(../img/page_white_add.png)}.context-menu-item.icon-quit{background-image:url(../img/door.png)}.context-menu-item.icon-info{background-image:url(../img/info.png)}.context-menu-item.icon-extract{background-image:url(../img/zip.png)}.context-menu-item.icon-url{background-image:url(../img/url.png)}.context-menu-item.icon-edit_img{background-image:url(../img/edit_img.png)}.context-menu-item.icon-duplicate{background-image:url(../img/duplicate.png)}.context-menu-item.icon-key{background-image:url(../img/key.png)}.dropzone{border:1px solid rgba(0,0,0,.03);min-height:360px;border-radius:3px;background:rgba(0,0,0,.03);padding:23px}.dropzone .dz-success *{cursor:pointer!important}.dropzone .dz-default.dz-message{opacity:1;-ms-filter:none;filter:none;transition:opacity .3s ease-in-out;background-repeat:no-repeat;background-position:0 0;position:absolute;width:428px;height:123px;margin-left:-214px;margin-top:-61.5px;top:50%;left:50%}.btn-primary,.btn-primary.disabled,.btn-primary[disabled]{background-color:#333}.btn-primary.active,.btn-primary:active,.btn-primary:focus,.btn-primary:hover{background-color:#222} \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/dialog.php b/libraries/filemanager-9.12.1/dialog.php deleted file mode 100644 index 425af26..0000000 --- a/libraries/filemanager-9.12.1/dialog.php +++ /dev/null @@ -1,1204 +0,0 @@ -isDir($ftp_base_folder.$upload_dir.$rfm_subfolder.$subdir)) || (!$ftp && !file_exists($current_path.$rfm_subfolder.$subdir))) -{ - $subdir = ''; - $rfm_subfolder = ""; -} - - -$cur_dir = $upload_dir.$rfm_subfolder.$subdir; -$cur_path = $current_path.$rfm_subfolder.$subdir; -$thumbs_path = $thumbs_base_path.$rfm_subfolder; -$parent = $rfm_subfolder.$subdir; - -if($ftp){ - $cur_dir = $ftp_base_folder.$cur_dir; - $cur_path = str_replace(array('/..','..'),'',$cur_dir); - $thumbs_path = str_replace(array('/..','..'),'',$ftp_base_folder.$ftp_thumbs_dir.$rfm_subfolder); - $parent = $ftp_base_folder.$parent; -} - -if(!$ftp){ - $cycle = TRUE; - $max_cycles = 50; - $i = 0; - while($cycle && $i < $max_cycles){ - $i++; - if ($parent=="./") $parent=""; - - if (file_exists($current_path.$parent."config.php")) - { - $configTemp = include $current_path.$parent.'config.php'; - $config = $config + $configTemp; - extract($config, EXTR_OVERWRITE); - $cycle = FALSE; - } - - if ($parent == "") $cycle = FALSE; - else $parent = fix_dirname($parent)."/"; - } - - if (!is_dir($thumbs_path.$subdir)) - { - create_folder(FALSE, $thumbs_path.$subdir); - } -} -if (isset($_GET['callback'])) -{ - $callback = strip_tags($_GET['callback']); -} -else $callback=0; -if (isset($_GET['popup'])) -{ - $popup = strip_tags($_GET['popup']); -} else $popup=0; -//Sanitize popup -$popup=!!$popup; - -if (isset($_GET['crossdomain'])) -{ - $crossdomain = strip_tags($_GET['crossdomain']); -} else $crossdomain=0; - -//Sanitize crossdomain -$crossdomain=!!$crossdomain; - -//view type -if(!isset($_SESSION['RF']["view_type"])) -{ - $view = $default_view; - $_SESSION['RF']["view_type"] = $view; -} - -if (isset($_GET['view'])) -{ - $view = fix_get_params($_GET['view']); - $_SESSION['RF']["view_type"] = $view; -} - -$view = $_SESSION['RF']["view_type"]; - -//filter -$filter = ""; -if(isset($_SESSION['RF']["filter"])) -{ - $filter = $_SESSION['RF']["filter"]; -} - -if(isset($_GET["filter"])) -{ - $filter = fix_get_params($_GET["filter"]); -} - -if (!isset($_SESSION['RF']['sort_by'])) -{ - $_SESSION['RF']['sort_by'] = 'name'; -} - -if (isset($_GET["sort_by"])) -{ - $sort_by = $_SESSION['RF']['sort_by'] = fix_get_params($_GET["sort_by"]); -} else $sort_by = $_SESSION['RF']['sort_by']; - - -if (!isset($_SESSION['RF']['descending'])) -{ - $_SESSION['RF']['descending'] = TRUE; -} - -if (isset($_GET["descending"])) -{ - $descending = $_SESSION['RF']['descending'] = fix_get_params($_GET["descending"])==1; -} else { - $descending = $_SESSION['RF']['descending']; -} - -$boolarray = Array(false => 'false', true => 'true'); - -$return_relative_url = isset($_GET['relative_url']) && $_GET['relative_url'] == "1" ? true : false; - -if (!isset($_GET['type'])){ - $_GET['type'] = 0; -} - -$extensions=null; -if (isset($_GET['extensions'])){ - $extensions = json_decode(urldecode($_GET['extensions'])); - if($extensions){ - $ext = $extensions; - $show_filter_buttons = false; - } -} - -if (isset($_GET['editor'])) -{ - $editor = strip_tags($_GET['editor']); -} else { - if($_GET['type']==0){ - $editor=false; - } else { - $editor='tinymce'; - } -} - -if (!isset($_GET['field_id'])) $_GET['field_id'] = ''; - -$field_id = isset($_GET['field_id']) ? fix_get_params($_GET['field_id']) : ''; -$type_param = fix_get_params($_GET['type']); - -if ($type_param==1) $apply = 'apply_img'; -elseif($type_param==2) $apply = 'apply_link'; -elseif($type_param==0 && $_GET['field_id']=='') $apply = 'apply_none'; -elseif($type_param==3) $apply = 'apply_video'; -else $apply = 'apply'; - -$get_params = array( - 'editor' => $editor, - 'type' => $type_param, - 'lang' => $lang, - 'popup' => $popup, - 'crossdomain' => $crossdomain, - 'extensions' => ($extensions) ? urlencode(json_encode($extensions)) : null , - 'field_id' => $field_id, - 'relative_url' => $return_relative_url, - 'akey' => (isset($_GET['akey']) && $_GET['akey'] != '' ? $_GET['akey'] : 'key') -); -if(isset($_GET['CKEditorFuncNum'])){ - $get_params['CKEditorFuncNum'] = $_GET['CKEditorFuncNum']; - $get_params['CKEditor'] = (isset($_GET['CKEditor'])? $_GET['CKEditor'] : ''); -} -$get_params['fldr'] =''; - -$get_params = http_build_query($get_params); -?> - - - - - - - - Responsive FileManager - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - " /> - " /> - " /> - " /> - - - - -
-
-
- -
-
-
-
- -
-
- -
-
-
- -
- -
-
-
- -
-
-
- - - - - - - - - -
-
- -
- -
-
-
-
- - - - -
- -
-
-
-
- -
- -
-
-
-
- -
-
-
-
- -
-
-
-
-
- - - -
- -scanDir($ftp_base_folder.$upload_dir.$rfm_subfolder.$subdir); - if (!$ftp->isDir($ftp_base_folder.$ftp_thumbs_dir.$rfm_subfolder.$subdir)){ - create_folder(false,$ftp_base_folder.$ftp_thumbs_dir.$rfm_subfolder.$subdir,$ftp,$config); - } - }catch(FtpClient\FtpException $e){ - echo "Error: "; - echo $e->getMessage(); - echo "
Please check configurations"; - die(); - } -}else{ - $files = scandir($current_path.$rfm_subfolder.$subdir); -} - -$n_files= count($files); - -//php sorting -$sorted=array(); -//$current_folder=array(); -//$prev_folder=array(); -$current_files_number = 0; -$current_folders_number = 0; - -foreach($files as $k=>$file){ - if($ftp){ - $date = strtotime($file['day']." ".$file['month']." ".date('Y')." ".$file['time']); - $size = $file['size']; - if($file['type']=='file'){ - $current_files_number++; - $file_ext = substr(strrchr($file['name'],'.'),1); - }else{ - $current_folders_number++; - $file_ext=trans('Type_dir'); - } - $sorted[$k]=array( - 'file'=>$file['name'], - 'file_lcase'=>strtolower($file['name']), - 'date'=>$date, - 'size'=>$size, - 'permissions' => $file['permissions'], - 'extension'=>strtolower($file_ext) - ); - }else{ - - - if($file!="." && $file!=".."){ - if(is_dir($current_path.$rfm_subfolder.$subdir.$file)){ - $date=filemtime($current_path.$rfm_subfolder.$subdir. $file); - $current_folders_number++; - if($show_folder_size){ - list($size,$nfiles,$nfolders) = folder_info($current_path.$rfm_subfolder.$subdir.$file,false); - } else { - $size=0; - } - $file_ext=trans('Type_dir'); - $sorted[$k]=array( - 'file'=>$file, - 'file_lcase'=>strtolower($file), - 'date'=>$date, - 'size'=>$size, - 'permissions' =>'', - 'extension'=>strtolower($file_ext) - ); - if($show_folder_size){ - $sorted[$k]['nfiles'] = $nfiles; - $sorted[$k]['nfolders'] = $nfolders; - } - }else{ - $current_files_number++; - $file_path=$current_path.$rfm_subfolder.$subdir.$file; - $date=filemtime($file_path); - $size=filesize($file_path); - $file_ext = substr(strrchr($file,'.'),1); - $sorted[$k]=array( - 'file'=>$file, - 'file_lcase'=>strtolower($file), - 'date'=>$date, - 'size'=>$size, - 'permissions' =>'', - 'extension'=>strtolower($file_ext) - ); - } - } - } -} - - -function filenameSort($x, $y) { - return $x['file_lcase'] < $y['file_lcase']; -} -function dateSort($x, $y) { - return $x['date'] < $y['date']; -} -function sizeSort($x, $y) { - return $x['size'] < $y['size']; -} -function extensionSort($x, $y) { - return $x['extension'] < $y['extension']; -} - -switch($sort_by){ - case 'date': - usort($sorted, 'dateSort'); - break; - case 'size': - usort($sorted, 'sizeSort'); - break; - case 'extension': - usort($sorted, 'extensionSort'); - break; - default: - usort($sorted, 'filenameSort'); - break; -} - -if(!$descending){ - $sorted=array_reverse($sorted); -} - -if($subdir!=""){ - $sorted = array_merge(array(array('file'=>'..')),$sorted); -} -$files=$sorted; - -?> - - - - - - - -
- - -
- -
-
- isDir($ftp_base_folder.$upload_dir.$rfm_subfolder.$subdir)) || (!$ftp && @opendir($current_path.$rfm_subfolder.$subdir)===FALSE)){ ?> -
-
There is an error! The upload folder there isn't. Check your config.php file.
- -

- -
- - - - - - - - -
    " id="main-item-container"> - $file_number_limit_js && $file!=".." && stripos($file,$filter)===false)){ - continue; - } - $new_name=fix_filename($file,$config); - if($ftp && $file!='..' && $file!=$new_name){ - //rename - rename_folder($current_path.$subdir.$file,$new_name,$ftp,$config); - $file=$new_name; - } - //add in thumbs folder if not exist - if($file!='..'){ - if(!$ftp && !file_exists($thumbs_path.$subdir.$file)){ - create_folder(false,$thumbs_path.$subdir.$file,$ftp,$config); - } - } - - $class_ext = 3; - if($file=='..' && trim($subdir) != '' ){ - $src = explode("/",$subdir); - unset($src[count($src)-2]); - $src=implode("/",$src); - if($src=='') $src="/"; - } - elseif ($file!='..') { - $src = $subdir . $file."/"; - } - - ?> - - $file_array) { - $file=$file_array['file']; - - if($file == '.' || $file == '..' || $file_array['extension']==trans('Type_dir') || in_array($file, $hidden_files) || !in_array(fix_strtolower($file_array['extension']), $ext) || ($filter!='' && $n_files>$file_number_limit_js && stripos($file,$filter)===false)) - continue; - - $filename=substr($file, 0, '-' . (strlen($file_array['extension']) + 1)); - if(!$ftp){ - $file_path=$current_path.$rfm_subfolder.$subdir.$file; - //check if file have illegal caracter - - if($file!=fix_filename($file,$config)){ - $file1=fix_filename($file,$config); - $file_path1=($current_path.$rfm_subfolder.$subdir.$file1); - if(file_exists($file_path1)){ - $i = 1; - $info=pathinfo($file1); - while(file_exists($current_path.$rfm_subfolder.$subdir.$info['filename'].".[".$i."].".$info['extension'])) { - $i++; - } - $file1=$info['filename'].".[".$i."].".$info['extension']; - $file_path1=($current_path.$rfm_subfolder.$subdir.$file1); - } - - $filename=substr($file1, 0, '-' . (strlen($file_array['extension']) + 1)); - rename_file($file_path,fix_filename($filename,$config),$ftp,$config); - $file=$file1; - $file_array['extension']=fix_filename($file_array['extension'],$config); - $file_path=$file_path1; - } - }else{ - $file_path = $config['ftp_base_url'].$upload_dir.$rfm_subfolder.$subdir.$file; - } - - $is_img=false; - $is_video=false; - $is_audio=false; - $show_original=false; - $show_original_mini=false; - $mini_src=""; - $src_thumb=""; - if(in_array($file_array['extension'], $ext_img)){ - $src = $file_path; - $is_img=true; - - $img_width = $img_height = ""; - if($ftp){ - $mini_src = $src_thumb = $config['ftp_base_url'].$ftp_thumbs_dir.$subdir. $file; - $creation_thumb_path = "/".$config['ftp_base_folder'].$ftp_thumbs_dir.$subdir. $file; - }else{ - - $creation_thumb_path = $mini_src = $src_thumb = $thumbs_path.$subdir. $file; - - if(!file_exists($src_thumb) ){ - if(!create_img($file_path, $creation_thumb_path, 122, 91,'crop',$config)){ - $src_thumb=$mini_src=""; - }else{ - new_thumbnails_creation($current_path.$rfm_subfolder.$subdir,$file_path,$file,$current_path,$config); - } - } - //check if is smaller than thumb - list($img_width, $img_height, $img_type, $attr)=@getimagesize($file_path); - if($img_width<122 && $img_height<91){ - $src_thumb=$file_path; - $show_original=true; - } - - if($img_width<45 && $img_height<38){ - $mini_src=$current_path.$rfm_subfolder.$subdir.$file; - $show_original_mini=true; - } - } - } - $is_icon_thumb=false; - $is_icon_thumb_mini=false; - $no_thumb=false; - if($src_thumb==""){ - $no_thumb=true; - if(file_exists('img/'.$icon_theme.'/'.$file_array['extension'].".jpg")){ - $src_thumb ='img/'.$icon_theme.'/'.$file_array['extension'].".jpg"; - }else{ - $src_thumb = "img/".$icon_theme."/default.jpg"; - } - $is_icon_thumb=true; - } - if($mini_src==""){ - $is_icon_thumb_mini=false; - } - - $class_ext=0; - if (in_array($file_array['extension'], $ext_video)) { - $class_ext = 4; - $is_video=true; - }elseif (in_array($file_array['extension'], $ext_img)) { - $class_ext = 2; - }elseif (in_array($file_array['extension'], $ext_music)) { - $class_ext = 5; - $is_audio=true; - }elseif (in_array($file_array['extension'], $ext_misc)) { - $class_ext = 3; - }else{ - $class_ext = 1; - } - if((!($_GET['type']==1 && !$is_img) && !(($_GET['type']==3 && !$is_video) && ($_GET['type']==3 && !$is_audio))) && $class_ext>0){ -?> - -
- - -
-
- - - - - - - - - - - - - - - - - - diff --git a/libraries/filemanager-9.12.1/execute.php b/libraries/filemanager-9.12.1/execute.php deleted file mode 100644 index ad284fd..0000000 --- a/libraries/filemanager-9.12.1/execute.php +++ /dev/null @@ -1,528 +0,0 @@ -send(); - exit; -} - -if (strpos($_POST['path'],'/')===0 - || strpos($_POST['path'],'../')!==FALSE - || strpos($_POST['path'],'./')===0 - || strpos($_POST['path'],'..\\')!==FALSE - || strpos($_POST['path'],'.\\')===0) -{ - response(trans('wrong path'.AddErrorLocation()))->send(); - exit; -} - -if (isset($_SESSION['RF']['language']) && file_exists('lang/' . basename($_SESSION['RF']['language']) . '.php')) -{ - $languages = include 'lang/languages.php'; - if(array_key_exists($_SESSION['RF']['language'],$languages)){ - include 'lang/' . basename($_SESSION['RF']['language']) . '.php'; - }else{ - response(trans('Lang_Not_Found').AddErrorLocation())->send(); - exit; - } -} -else -{ - response(trans('Lang_Not_Found').AddErrorLocation())->send(); - exit; -} - -$ftp = ftp_con($config); - -$base = $current_path; -$path = $base.$_POST['path']; -$cycle = TRUE; -$max_cycles = 50; -$i = 0; -while($cycle && $i<$max_cycles) -{ - $i++; - if ($path == $base) $cycle=FALSE; - - if (file_exists($path."config.php")) - { - require_once $path."config.php"; - $cycle = FALSE; - } - $path = fix_dirname($path)."/"; -} - -$path = $current_path.$_POST['path']; -$path_thumb = $thumbs_base_path.$_POST['path']; - -if($ftp){ - $path = $ftp_base_folder.$upload_dir.$_POST['path']; - $path_thumb = $ftp_base_folder.$ftp_thumbs_dir.$_POST['path']; -} - -if (isset($_POST['name'])) -{ - $name = fix_filename($_POST['name'],$config); - if (strpos($name,'../') !== FALSE || strpos($name,'..\\') !== FALSE) - { - response(trans('wrong name').AddErrorLocation())->send(); - exit; - } -} - -$info = pathinfo($path); -if (isset($info['extension']) && !(isset($_GET['action']) && $_GET['action']=='delete_folder') && !in_array(strtolower($info['extension']), $ext) && $_GET['action'] != 'create_file') -{ - response(trans('wrong extension').AddErrorLocation())->send(); - exit; -} - -if (isset($_GET['action'])) -{ - switch($_GET['action']) - { - case 'delete_file': - if ($delete_files){ - if($ftp){ - try{ - $ftp->delete("/".$path); - @$ftp->delete("/".$path_thumb); - }catch(FtpClient\FtpException $e){ - return; - } - }else{ - - unlink($path); - if (file_exists($path_thumb)){ - unlink($path_thumb); - } - } - - $info=pathinfo($path); - if (!$ftp && $relative_image_creation){ - foreach($relative_path_from_current_pos as $k=>$path) - { - if ($path!="" && $path[strlen($path)-1]!="/") $path.="/"; - - if (file_exists($info['dirname']."/".$path.$relative_image_creation_name_to_prepend[$k].$info['filename'].$relative_image_creation_name_to_append[$k].".".$info['extension'])) - { - unlink($info['dirname']."/".$path.$relative_image_creation_name_to_prepend[$k].$info['filename'].$relative_image_creation_name_to_append[$k].".".$info['extension']); - } - } - } - - if (!$ftp && $fixed_image_creation) - { - foreach($fixed_path_from_filemanager as $k=>$path) - { - if ($path!="" && $path[strlen($path)-1] != "/") $path.="/"; - - $base_dir=$path.substr_replace($info['dirname']."/", '', 0, strlen($current_path)); - if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension'])) - { - unlink($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension']); - } - } - } - } - break; - case 'delete_folder': - if ($delete_folders){ - - if($ftp){ - deleteDir($path,$ftp,$config); - deleteDir($path_thumb,$ftp,$config); - }else{ - if (is_dir($path_thumb)) - { - deleteDir($path_thumb); - } - - if (is_dir($path)) - { - deleteDir($path); - if ($fixed_image_creation) - { - foreach($fixed_path_from_filemanager as $k=>$paths){ - if ($paths!="" && $paths[strlen($paths)-1] != "/") $paths.="/"; - - $base_dir=$paths.substr_replace($path, '', 0, strlen($current_path)); - if (is_dir($base_dir)) deleteDir($base_dir); - } - } - } - } - } - break; - case 'create_folder': - if ($create_folders) - { - - $name = fix_filename($_POST['name'],$config); - $path .= $name; - $path_thumb .= $name; - create_folder(fix_path($path,$config),fix_path($path_thumb,$config),$ftp,$config); - } - break; - case 'rename_folder': - if ($rename_folders){ - if(!is_dir($path)) { - response(trans('wrong path'))->send(); - exit; - } - $name=fix_filename($name,$config); - $name=str_replace('.','',$name); - - if (!empty($name)){ - if (!rename_folder($path,$name,$ftp,$config)) - { - response(trans('Rename_existing_folder').AddErrorLocation())->send(); - exit; - } - rename_folder($path_thumb,$name,$ftp,$config); - if (!$ftp && $fixed_image_creation){ - foreach($fixed_path_from_filemanager as $k=>$paths){ - if ($paths!="" && $paths[strlen($paths)-1] != "/") $paths.="/"; - - $base_dir=$paths.substr_replace($path, '', 0, strlen($current_path)); - rename_folder($base_dir,$name,$ftp,$config); - } - } - } else { - response(trans('Empty_name').AddErrorLocation())->send(); - exit; - } - } - break; - case 'create_file': - if ($create_text_files === FALSE) { - response(sprintf(trans('File_Open_Edit_Not_Allowed'), strtolower(trans('Edit'))).AddErrorLocation())->send(); - exit; - } - - if (!isset($editable_text_file_exts) || !is_array($editable_text_file_exts)){ - $editable_text_file_exts = array(); - } - - // check if user supplied extension - if (strpos($name, '.') === FALSE){ - response(trans('No_Extension').' '.sprintf(trans('Valid_Extensions'), implode(', ', $editable_text_file_exts)).AddErrorLocation())->send(); - exit; - } - - // correct name - $old_name = $name; - $name=fix_filename($name,$config); - if (empty($name)) - { - response(trans('Empty_name').AddErrorLocation())->send(); - exit; - } - - // check extension - $parts = explode('.', $name); - if (!in_array(end($parts), $editable_text_file_exts)) { - response(trans('Error_extension').' '.sprintf(trans('Valid_Extensions'), implode(', ', $editable_text_file_exts)), 400)->send(); - exit; - } - - $content = $_POST['new_content']; - - if($ftp){ - $temp = tempnam('/tmp','RF'); - file_put_contents($temp, $content); - $ftp->put("/".$path.$name, $temp, FTP_BINARY); - unlink($temp); - response(trans('File_Save_OK'))->send(); - }else{ - if (!checkresultingsize(strlen($content))) { - response(sprintf(trans('max_size_reached'),$MaxSizeTotal).AddErrorLocation())->send(); - exit; - } - // file already exists - if (file_exists($path.$name)) { - response(trans('Rename_existing_file').AddErrorLocation())->send(); - exit; - } - - if (@file_put_contents($path.$name, $content) === FALSE) { - response(trans('File_Save_Error').AddErrorLocation())->send(); - exit; - } else { - if (is_function_callable('chmod') !== FALSE){ - chmod($path.$name, 0644); - } - response(trans('File_Save_OK'))->send(); - exit; - } - } - - break; - case 'rename_file': - if ($rename_files){ - $name=fix_filename($name,$config); - if (!empty($name)) - { - if (!rename_file($path,$name,$ftp,$config)) - { - response(trans('Rename_existing_file').AddErrorLocation())->send(); - exit; - } - - rename_file($path_thumb,$name,$ftp,$config); - - if ($fixed_image_creation) - { - $info=pathinfo($path); - - foreach($fixed_path_from_filemanager as $k=>$paths) - { - if ($paths!="" && $paths[strlen($paths)-1] != "/") $paths.="/"; - - $base_dir = $paths.substr_replace($info['dirname']."/", '', 0, strlen($current_path)); - if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension'])) - { - rename_file($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension'],$fixed_image_creation_name_to_prepend[$k].$name.$fixed_image_creation_to_append[$k],$ftp,$config); - } - } - } - } else { - response(trans('Empty_name').AddErrorLocation())->send(); - exit; - } - } - break; - case 'duplicate_file': - if ($duplicate_files) - { - $name=fix_filename($name,$config); - if (!empty($name)) - { - if (!$ftp && !checkresultingsize(filesize($path))) { - response(sprintf(trans('max_size_reached'),$MaxSizeTotal).AddErrorLocation())->send(); - exit; - } - if (!duplicate_file($path,$name,$ftp,$config)) - { - response(trans('Rename_existing_file').AddErrorLocation())->send(); - exit; - } - - duplicate_file($path_thumb,$name,$ftp,$config); - - if (!$ftp && $fixed_image_creation) - { - $info=pathinfo($path); - foreach($fixed_path_from_filemanager as $k=>$paths) - { - if ($paths!="" && $paths[strlen($paths)-1] != "/") $paths.= "/"; - - $base_dir=$paths.substr_replace($info['dirname']."/", '', 0, strlen($current_path)); - - if (file_exists($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension'])) - { - duplicate_file($base_dir.$fixed_image_creation_name_to_prepend[$k].$info['filename'].$fixed_image_creation_to_append[$k].".".$info['extension'],$fixed_image_creation_name_to_prepend[$k].$name.$fixed_image_creation_to_append[$k]); - } - } - } - } else { - response(trans('Empty_name').AddErrorLocation())->send(); - exit; - } - } - break; - - case 'paste_clipboard': - if ( ! isset($_SESSION['RF']['clipboard_action'], $_SESSION['RF']['clipboard']['path']) - || $_SESSION['RF']['clipboard_action'] == '' - || $_SESSION['RF']['clipboard']['path'] == '') - { - response()->send(); - exit; - } - - $action = $_SESSION['RF']['clipboard_action']; - $data = $_SESSION['RF']['clipboard']; - - - if($ftp){ - if($_POST['path']!=""){ - $path.=DIRECTORY_SEPARATOR; - $path_thumb.=DIRECTORY_SEPARATOR; - } - $path_thumb .= basename($data['path']); - $path .= basename($data['path']) ; - $data['path_thumb'] = DIRECTORY_SEPARATOR.$config['ftp_base_folder'].$config['ftp_thumbs_dir'].$data['path']; - $data['path'] = DIRECTORY_SEPARATOR.$config['ftp_base_folder'].$config['upload_dir'].$data['path']; - }else{ - $data['path_thumb'] = $thumbs_base_path.$data['path']; - $data['path'] = $current_path.$data['path']; - } - - $pinfo = pathinfo($data['path']); - - // user wants to paste to the same dir. nothing to do here... - if ($pinfo['dirname'] == rtrim($path, DIRECTORY_SEPARATOR)) { - response()->send(); - exit; - } - - // user wants to paste folder to it's own sub folder.. baaaah. - if (is_dir($data['path']) && strpos($path, $data['path']) !== FALSE){ - response()->send(); - exit; - } - - // something terribly gone wrong - if ($action != 'copy' && $action != 'cut'){ - response(trans('wrong action').AddErrorLocation())->send(); - exit; - } - if($ftp){ - if ($action == 'copy') - { - $tmp = time().basename($data['path']); - $ftp->get($tmp, $data['path'], FTP_BINARY); - $ftp->put(DIRECTORY_SEPARATOR.$path, $tmp, FTP_BINARY); - unlink($tmp); - - if(url_exists($data['path_thumb'])){ - $tmp = time().basename($data['path_thumb']); - @$ftp->get($tmp, $data['path_thumb'], FTP_BINARY); - @$ftp->put(DIRECTORY_SEPARATOR.$path_thumb, $tmp, FTP_BINARY); - unlink($tmp); - } - - } elseif ($action == 'cut') { - $ftp->rename($data['path'], DIRECTORY_SEPARATOR.$path); - if(url_exists($data['path_thumb'])){ - @$ftp->rename($data['path_thumb'], DIRECTORY_SEPARATOR.$path_thumb); - } - } - }else{ - // check for writability - if (is_really_writable($path) === FALSE || is_really_writable($path_thumb) === FALSE){ - response(trans('Dir_No_Write').'
'.str_replace('../','',$path).'
'.str_replace('../','',$path_thumb).AddErrorLocation())->send(); - exit; - } - - // check if server disables copy or rename - if (is_function_callable(($action == 'copy' ? 'copy' : 'rename')) === FALSE){ - response(sprintf(trans('Function_Disabled'), ($action == 'copy' ? (trans('Copy')) : (trans('Cut')))).AddErrorLocation())->send(); - exit; - } - if ($action == 'copy') - { - list($sizeFolderToCopy,$fileNum,$foldersCount) = folder_info($path,false); - if (!checkresultingsize($sizeFolderToCopy)) { - response(sprintf(trans('max_size_reached'),$MaxSizeTotal).AddErrorLocation())->send(); - exit; - } - rcopy($data['path'], $path); - rcopy($data['path_thumb'], $path_thumb); - } elseif ($action == 'cut') { - rrename($data['path'], $path); - rrename($data['path_thumb'], $path_thumb); - - // cleanup - if (is_dir($data['path']) === TRUE){ - rrename_after_cleaner($data['path']); - rrename_after_cleaner($data['path_thumb']); - } - } - } - - // cleanup - $_SESSION['RF']['clipboard']['path'] = NULL; - $_SESSION['RF']['clipboard_action'] = NULL; - - break; - case 'chmod': - $mode = $_POST['new_mode']; - $rec_option = $_POST['is_recursive']; - $valid_options = array('none', 'files', 'folders', 'both'); - $chmod_perm = ($_POST['folder'] ? $chmod_dirs : $chmod_files); - - // check perm - if ($chmod_perm === FALSE) { - response(sprintf(trans('File_Permission_Not_Allowed'), (is_dir($path) ? (trans('Folders')) : (trans('Files')) )).AddErrorLocation())->send(); - exit; - } - // check mode - if (!preg_match("/^[0-7]{3}$/", $mode)){ - response(trans('File_Permission_Wrong_Mode').AddErrorLocation())->send(); - exit; - } - // check recursive option - if (!in_array($rec_option, $valid_options)){ - response(trans("wrong option").AddErrorLocation())->send(); - exit; - } - // check if server disabled chmod - if (!$ftp && is_function_callable('chmod') === FALSE){ - response(sprintf(trans('Function_Disabled'), 'chmod').AddErrorLocation())->send(); - exit; - } - - $mode = "0".$mode; - $mode = octdec($mode); - if($ftp){ - $ftp->chmod($mode, "/".$path); - }else{ - rchmod($path, $mode, $rec_option); - } - - break; - case 'save_text_file': - $content = $_POST['new_content']; - // $content = htmlspecialchars($content); not needed - // $content = stripslashes($content); - - if($ftp){ - $tmp = time(); - file_put_contents($tmp, $content); - try{ - $ftp->put("/".$path, $tmp, FTP_BINARY); - }catch(FtpClient\FtpException $e){ - echo $e->getMessage(); - } - unlink($tmp); - response(trans('File_Save_OK'))->send(); - }else{ - // no file - if (!file_exists($path)) { - response(trans('File_Not_Found').AddErrorLocation())->send(); - exit; - } - - // not writable or edit not allowed - if (!is_writable($path) || $edit_text_files === FALSE) { - response(sprintf(trans('File_Open_Edit_Not_Allowed'), strtolower(trans('Edit'))).AddErrorLocation())->send(); - exit; - } - - if (!checkresultingsize(strlen($content))) { - response(sprintf(trans('max_size_reached'),$MaxSizeTotal).AddErrorLocation())->send(); - exit; - } - if (@file_put_contents($path, $content) === FALSE) { - response(trans('File_Save_Error').AddErrorLocation())->send(); - exit; - } else { - response(trans('File_Save_OK'))->send(); - exit; - } - } - - break; - default: - response(trans('wrong action').AddErrorLocation())->send(); - exit; - } -} -?> \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/force_download.php b/libraries/filemanager-9.12.1/force_download.php deleted file mode 100644 index 111c53e..0000000 --- a/libraries/filemanager-9.12.1/force_download.php +++ /dev/null @@ -1,151 +0,0 @@ -send(); - exit; -} - -include 'include/mime_type_lib.php'; - - -if ( - strpos($_POST['path'], '/') === 0 - || strpos($_POST['path'], '../') !== false - || strpos($_POST['path'], './') === 0 - || strpos($_POST['path'], '..\\') !== false - || strpos($_POST['path'], '.\\') === 0 -) -{ - response(trans('wrong path'.AddErrorLocation()), 400)->send(); - exit; -} - - -if (strpos($_POST['name'], '/') !== false) -{ - response(trans('wrong path'.AddErrorLocation()), 400)->send(); - exit; -} -if($ftp){ - $path = $ftp_base_url . $upload_dir . $_POST['path']; -}else{ - $path = $current_path . $_POST['path']; -} - -$name = $_POST['name']; - -$info = pathinfo($name); - -if ( ! in_array(fix_strtolower($info['extension']), $ext)) -{ - response(trans('wrong extension'.AddErrorLocation()), 400)->send(); - exit; -} - - - -$file_name = $info['basename']; -$file_ext = $info['extension']; -$file_path = $path . $name; - -// make sure the file exists -if($ftp){ - $file_url = 'http://www.myremoteserver.com/file.exe'; - header('Content-Type: application/octet-stream'); - header("Content-Transfer-Encoding: Binary"); - header("Content-disposition: attachment; filename=\"" . $file_name . "\""); - readfile($file_path); -}elseif (is_file($file_path) && is_readable($file_path)) -{ - if ( ! file_exists($path . $name)) - { - response(trans('File_Not_Found'.AddErrorLocation()), 404)->send(); - exit; - } - - $size = filesize($file_path); - $file_name = rawurldecode($file_name); - if (function_exists('mime_content_type')){ - $mime_type = mime_content_type($file_path); - }elseif(function_exists('finfo_open')){ - $finfo = finfo_open(FILEINFO_MIME_TYPE); - $mime_type = finfo_file($finfo, $file_path); - }else{ - include 'include/mime_type_lib.php'; - $mime_type = get_file_mime_type($file_path); - } - - @ob_end_clean(); - if(ini_get('zlib.output_compression')){ - ini_set('zlib.output_compression', 'Off'); - } - header('Content-Type: ' . $mime_type); - header('Content-Disposition: attachment; filename="'.$file_name.'"'); - header("Content-Transfer-Encoding: binary"); - header('Accept-Ranges: bytes'); - - if(isset($_SERVER['HTTP_RANGE'])) - { - list($a, $range) = explode("=",$_SERVER['HTTP_RANGE'],2); - list($range) = explode(",",$range,2); - list($range, $range_end) = explode("-", $range); - $range=intval($range); - if(!$range_end) { - $range_end=$size-1; - } else { - $range_end=intval($range_end); - } - - $new_length = $range_end-$range+1; - header("HTTP/1.1 206 Partial Content"); - header("Content-Length: $new_length"); - header("Content-Range: bytes $range-$range_end/$size"); - } else { - $new_length=$size; - header("Content-Length: ".$size); - } - - $chunksize = 1*(1024*1024); - $bytes_send = 0; - if ($file = fopen($file_path, 'r')) - { - if(isset($_SERVER['HTTP_RANGE'])) - fseek($file, $range); - - while(!feof($file) && - (!connection_aborted()) && - ($bytes_send<$new_length) - ) - { - $buffer = fread($file, $chunksize); - echo($buffer); - flush(); - $bytes_send += strlen($buffer); - } - fclose($file); - } else { - die('Error - can not open file.'); - } - - die(); - -} -else -{ - // file does not exist - header("HTTP/1.0 404 Not Found"); - exit; -} - -exit; \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/img/clipboard_apply.png b/libraries/filemanager-9.12.1/img/clipboard_apply.png deleted file mode 100644 index d470c4434ba88711588dbca8762cfc42e1781759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHV5AX?bRZ~;@|NlRbgn;N1pN{~g zSW1HYf*BZQo@qRE6QnfK)5S5QBF^;WL*51jo|cQs77YuyCm1kzS~py}U9T2><-Pmo zB3I3)5_K}{mQ1zE>t_a-{!ZdmfB3P?#r{dNBlDq+2?8m43{nq1Bp#f!Z-GI;)On_F cYz;0mA2Akl@XGwZ31|s}r>mdKI;Vst00Uz{t^fc4 diff --git a/libraries/filemanager-9.12.1/img/clipboard_clear.png b/libraries/filemanager-9.12.1/img/clipboard_clear.png deleted file mode 100644 index e7fb9031bbaae2e99b053798a1a674cac64bf0b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPE^3h)VW6&4m&Q&ao@|38p~fZcD7 zumELQOM?7@f%MEXAFOs(0vXYsE{-7;alU5{avm_?V7;(r!41Z&ORQWwuQz|c^y1&@ zD=r#;*(*CfaT}X=3TC{!?sEUm`^KeOM~|H=vT*ssc}8c(EIkfRRR$rp1)NV>6fT$l ksbBwU;))x;j~o#Hxm@;>+u}8OKx-I0UHx3vIVCg!0Ckf|LI3~& diff --git a/libraries/filemanager-9.12.1/img/copy.png b/libraries/filemanager-9.12.1/img/copy.png deleted file mode 100644 index e1d89116d3fb4a7fb0874d9ab6d5f5b502d44f3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFP2=EDURZ~+lHa7kb0}>Jvl9G}T zQd3h?OH0eh$OxzaC<0O0o?5R3)XQ5EiYG43ltY(aU2^428 z3GxeOn0e-edbJpk>+9*_7*Y|(du$_bgMx_bMQx+R8w2xS*Dn3Pe^z z1Ef+_RTanpiU0wS0n`NnKyg(KRj@FSR0RqG1t3yDE)W2vAc7ECAP>R-3c?v`AVD|+ zYJsqU=0J>sGJxVh7iw#3ZROYc2lTLiNswPK10xd)D;ql}7Z)#|kg$lTgrtmuqLQ+T zimIBrhM|e6rInq%qmyrHc1~_?US57tSwmw}OG{gS|CBlN<}X-!{^G@pmu}v=cmLs| zM=xHz{w*nQ`Uq(B1y2{pkcv3p?(2L_0U|8o(p?2>6}tA8vx>gqU3%mH|Lm6E33E~= zO+G1C(R1A1HcR_)ir(~P?{7wg7T#U`Ebw~&zGb`i9}qNn#b|qBIn}b0!^kX$^H;i)T>p_Li=96;b^Ka$rfhdkWmvn1b8=wf@4peL7Z*4- zeUlTqu6lU8Tl^-EsU905cqRpLMedrh&+5;^1LbkSyCz(`XS(yJ&AmI@6mM^s^g}uG w;XN;HFS~G!C!e||<=x#_X|-McT=8Gl&qtMB9C>mi3zSeiUHx3vIVCg!0Ev;nq5uE@ diff --git a/libraries/filemanager-9.12.1/img/dimension.png b/libraries/filemanager-9.12.1/img/dimension.png deleted file mode 100644 index 43dcc10155703666c47b845df93feebcf8b7d21d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 489 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfx&WUL*Z=?j1DQhw>^s?#0(7fo zNswPK1EUCwa_H~-z48IayIMMa-ae;rEB4m~Pw69uPd=)>z03OLp0WQ2lkmrvF5Wry zprN%b#9TNk@|aoo>K98yfQD@Jba4!+hzsq%I_anZkMq?fo~O=KOiYyg^xuBl<9mD7 z#OutJ?9I6lap3joO$mQaUA*|H3Gcx%1wQ2QuH%bW2&>r(gcV@;M}nonz|r-6DniZAF9D zTEvunv$(bU^ux1P;?8gX{kLpi(A&=&$~WHcmUollww$-bMz%LTh<~m8|9eOC6aL80 XKF#xG&C|*bP;7a+`njxgN@xNAsIHRv diff --git a/libraries/filemanager-9.12.1/img/down.png b/libraries/filemanager-9.12.1/img/down.png deleted file mode 100644 index 76511223d957dd488561ac4eefda6f5ef835ba26..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 163 zcmeAS@N?(olHy`uVBq!ia0vp^93afX3?$7I7w-U4asfUeuK)l42QqPiwjPVMKsnBm zAirP+rY>g1X2!~vUXj&uKtXL!7srr_xa0(55x)cmX7#HIqHGIi8jDIwXe~E3kSH)Q hFg7qU;9w9`W@gA?V!2g*uIVJm9#2<4mvv4FO#u5cAhQ4f diff --git a/libraries/filemanager-9.12.1/img/download.png b/libraries/filemanager-9.12.1/img/download.png deleted file mode 100644 index 76125f22a6e94ecc3c4b53e6b6d009ee4793fb44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 674 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47gs@Y0R@59Nl8foy#SFiGBN_{va+)B z_xHEAw+Gtm=;#P^2GB-i0CXzQVX6<(dw{{0R1)MD%wW!cc_L@c=~rA+_-b1ouddEN z^SE2J_Q{?8rRJJbZ@Bg=?n!3uyW@Z5lQvLu@S#mub?^WrjHws??gV1OwTZ} zE}f;U>FZy*9ljOG>wG<+;qO8DgiiY=-XFWQ8yxiyDr;J|e&~G6qcFW+#JkWsPRs3+ zWy9MI0jnRI#jO`TC*JVSNXmGp`?((1`STc!ZmznOwQjcV)>&s65=8s2hucl9jq_)9 zUXY+sQ(RsCUx1Hw?(&m^S3j3^P6&1*lQb>=It(xb?# zTVA{5J9AqnAHNxz_)cDCQk95(=h2{7KV4Y@%VzH0x083ryJG&9<6nyJRDP_!7gQuw i@&Ci$pTGVcblM-YNUrbm`%77%F!pryb6Mw<&;$T*ORLua diff --git a/libraries/filemanager-9.12.1/img/file_edit.png b/libraries/filemanager-9.12.1/img/file_edit.png deleted file mode 100644 index 4bcd072e9f7e228d3452973b7c0e9e76a9543a96..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 764 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|I14-?iy0WW zg+Z8+Vb&Z8pn}NEkcg59UmvUF{9L`nl>DSry^7odplSvNn+hu+GdHy)QK2F?C$HG5 z!d3~a!V1U+3F|8Y3;nDA{o-C@9zzrKDK}xwt{K19`Se z86_nJR{Hwo<>h+i#(Mch>H3D2mX`VkM*2oZx=P7{9O-#x!EwNQn0$BtH5O0c3d|4@L;p!@;Rg)2@GT#PZ!4!3&E+A z_j?_25NO~0Gx@dXJPt9ju8yXtj*g{ME8ahteWyAmb9vlT;~O__{bXo*oA_|Cz(HTWyN0mrWR^{QFrF_gkVo!0^< zI|{#HT*AGwX7cl&mLELBZ#WpPjAFkNP@!p-xypwBJj1uy3DxsI&VBxH45svE7W|_kWesGo$TRwW@yq=frGs zNiXHr+VXXl0e^Lx^eo~%eJ1(tHrpVj!>G%r%)HX(!N*-{w;D`i?#LWaweR{P^F1}v kZt|xlHID~Ee|Oa}%-oR7{dOvA5hzJ|y85}Sb4q9e0O7eBumAu6 diff --git a/libraries/filemanager-9.12.1/img/glyphicons-halflings-white.png b/libraries/filemanager-9.12.1/img/glyphicons-halflings-white.png deleted file mode 100644 index a92969a174c8ed385127cbdf5f836b539cc88170..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8583 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 diff --git a/libraries/filemanager-9.12.1/img/glyphicons-halflings.png b/libraries/filemanager-9.12.1/img/glyphicons-halflings.png deleted file mode 100644 index f43139a488fa35166c45f8f760fa6842cc82826c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15602 zcmb`uRa6{J_%}!(xLbm|OR(TF!QF;|V8JE0y9Rf64Gx0^4+#!IgC)2V+;$t83=^bU_ph=&5w>5EKGG8G<8fe?WJ&Vp zFtd*QB~hZw_&`7aj*v0S-mg|Ll8+Vah}M4KAk1ew(w2AbOOjL>WJvE&vQaU4Ql+oD zwSID+e5&(X)$3f`TXTaLL9b6dHE*W(3fxXbpfydm4-kF7{GUsMLqp3%7~xVy8t(^( zBp?mX-Unrw31o3RahGnk&*ND!tdBFkNQ6l|9#iSO`qJl%v=rAMJx@sUQ=`R5w~^a8zj=JHo3mr-ze5J!Ma#_iPcFZR&E0l? zljaIK8J&>v(5^t`r<2L0Q;sbUUoGq-?L=N^34}V}Fg;|MDC3c=l2(bI2 z?Ed{cO|&pgflOBQlThd@~E3 zs4MYe#BxD#DO;C3`Oi}tZQ-@^PWs2W0_u1!d-KBTHlmIBxX!oz>_gV$IUa`K@tL+> zz0dS#XQ$Q=KtDb+%djP?ze1TZ=!JI!%ui%sjo%9A8?@$7$O)(oFUmiEEC{ zzq6ZpEcEd9ojGEi4RR( z>gvU`3R^m({T@g+msYf~@YH0#*x1&{v?|23Q!5br=ezN-nD_a{YMw59Z3r=y3H|=Y zQO(7ZCEF-XY>U#b2VITX^M30QH6>uqv=F5$T=Z{+uJJ9W{`IPrTny4)Bo>*MOTGfR zO#C8+u{)QDbK|x-9TROg7Lbvv8NUj{59|k~mo14@D{ij}{EJ@|!mbaz9LG07qlu<>CMgXjN#>J1zc*iIkS z=(ikJ%PJ7>p{_{p>`#{%)9v!V zck!RkJV9nOGwE9xlJKVAl9dp;HyLQ?QPV711o3Tjph-zF9~rkfu3}0oE;va8@_8=j zYxJ(vbuq2ZD!d&ztsc6H|PmfeXQad7$iqUJ0^p}~(LBGd*`%Vn?--Pt3&jfoesCxGBt4~CC z=~=F|4|dS*vGDVsjlZd~V27#{9DiO`nDDjlAm2kHf7G6EgPC(qKzC#5g}q8HDk>^I zWM7sS$){$!Xz6vNQ68ZyZkFoK1)Ymg&6C&h!UbvJqiU|eNs@OL!@Bp37rms(!Jo2a z#vSYNxiYa?xoD-L0^7sm^{TFNTc%I-8d3$H_$X7EK!tlpbqx^_sN#?cId33@xg~(_ zK^z+2QUfpLE*kn@sZ$RJ#-F`DSKqyp-&+Ibc71ogh+JL?n)| z!ZXU<#(UBh>aZVAc^dft$~3sc{q=TD>cu~Dyl2ez8ETevFl2ScD}XORKaxn7{OH#bCFhcs!hp9z zzb7X`cGDh`s8PN~Rjo|~)5>IYJe(FKd)IC3c@6)3hXto@V+#v=gBzRw#I@}7#r310-e7+x~vwx&&Q{>>82QPSt=J4Q>xNFJrd2|#5iZ=*s z-%Dk@|(e<11usYF|bz!xnK(PX*H zl2?ee^zcb3462M@6#qq%(MNzUjry!XaFscqXva?*&0(?CVR=Uu)#6KLkU6TAXyZIL zW{aLZP!2g3!meH**1lG3`IHjv1=TUr?Y~;&E7sxVPOmm+`Wqp0HJB>D={Uy*@w=Rpl8_a>0;BKTS@@h zgDgRL0M}h{H<1nJLp6R8_P?fTz0~XFynOEy`e~DNxybx*Plcney`62CDz?Cp`Zoih zq;)2t!ScU;;FF9E{eZaE99VLSv1!3-u!kob;>p!bq1-w+3uV1hROB#syKhOcxW_dv$irVmN@RJnq%S|FB@P9X1s^E{oo0o$B zyZJw@Vssd^*?4RJyF?cP(zN*n%80K0{%@3sbvSQJ#H$FD%*ihp<4}c;I2xn59KRBP z5P-w!yrS|^OA)}jQ_`o}lw#hX?KwJ=m>zG}A#=$%n7bU9;xx9GpG?smQnqfpu@#L3 zt%#8fuPbtcV#(cIX*2w7Z^Ko(QGYktS?))1PQaEfOvqxXBd^1c$$D?`o}2VT6&*+q z0S+yM-YEOaO}y1r9qdO4804u^qXS)(fMBH=PKUHl0ZoT2JmFK!%7F55b5BIkn2QW0 z31a&UitZF`+o?eC-6kTG5v!i@wB zBZD`1&Cs3WLm>Hcox!KbvoQuxFIf?`qP9{O51CU5VTpZm?Ot@utI&l(2?Ok>lPtR| z-~2O;<@tK!XW8J{OaF>=MgEpR;8?}Ky)9B=I_KYbXU65lft7EpeqT8<0a^k4e*$Wz z5mgp@l&j)fVY910y#OryI0_N0TV7NQ*k5&6#C(sm3!<}UlAbi*KQ1(ww)&4q5a868Bb96etYa()E?8F;XLXdmAJZ zE}e-}kftrgYw4jl7l2Y2*+WOuw!s;fe%GY4W%#UFOj?sbO5l%D#q^_)!?To+q`s8i zop)WeqD$fu4HopRKV7i)1|k|S0@x@{QwqXhE<2&e8>`CrVEL!}cDKE?7_uMb^YD96iwT=w!{2ZlLeizZIn%) zB~nqG)!0*PGXlRqlEA)S@}R}<;hc3!(3o$ho@R0xKPk-#3t36`Br5Eq^4X|Or98My ziBjpsHh+2aM8B8VO53bLA?5rDF*v)*tIQ85X*f~G{~-W-oTLfA81#^57ed_|tRcO` z6TUr1u#d#E%kZZ#cuA>N>+C?gg1Sd+a)HO;{p|`-uhR};ci{06-@9Isp+70MR8r|Q zI)!3YuTcphKTWFZysVPh5*E3a7pK1TFB{eBpuXzjvgi?N`p&nKl$2m5Ew1GqSx@?b(7^5~^^eXHgT~!Fy>G!RKlktguVWE$<;^ao$VkR|y4IU4!T})>%Y2WW8Vbmf3_)(SAWWLOYsADx=&M3zFR0!N#8)=F#LW_k;2<(#nqgc zA}BS7z)h0Z>IszJC@M|LezQ3cO{g8l)2`w__>`pv&vgu{m%^rzheOG@XP<))Y#7{c*m_@w1C&szapm+cx-T z(ywv_t1ux!DfN>)UDBe~q5ZYl$rt#o>DNG6 zO1~{bX*1-6d268NGMu7q;^smhQAM`f9;`V1vdCenUE3&LL;=z2+p0OyS!2-<41HK{{u_a`6#?ItBsiONpl zt}VGv)&0_@so7PGxJpXGJ@H8qzh~;aQ95r;Wdlfx4 za>kj!9vAblYUYQTU$P*x5Y}PY(n7=Xmt0+E9;Zk3)RH}@J65}Jf+Kk!MG)ZJcK=qmYAg-c&u5IY&7TzAW3J9~Fe2#F z<(05rswDWIB44!lCPs%y?kB-Mam3s%@ep$Xzh>aIJnG66ml*l!&Uf04Vt~|?3YQqG zk_KQHc$_e+j&$FG!$G@#yH?C~L0e3HzqI~tItX~H{!w1nK=zM3#=X|6mTJqIJ#$67 zLi$Af2SFoYv+Q%na+loF#}fHO$DLGVoBRI$e!+F0y?kX=l=JXfgSJ5F%XG5D+a&>; z&2?4<@Xd{a5_i!Jz0x|)r`!QtjPED!V-LDZw-yp$_#sxllAlxia%;=sdHgNUk0Ozr z(Fa<}X=q*5wt6K0tjzv|GT7abVPpJ;xr6#$cggE}%8U+nf`GpP>gm=FkOQlGW0j|$-yDso#Qb_xO%w*SfdVmIsA47MOzD=iCdzzRv_R(1=hV~ zlI`L{(Kd^{@^D+dJC@X&C63iV<^aOD#eb+v9%HVeX0+V{z;! zsVms)V(8lh+>VFVnt=ieXz11IV+{& z5&UDb1RkJ_K$K(t478Cm%S$LhGob7V)oqkA&OXT2Z1~5st>XN1C0#YHj>G;BiHVo83 zjCJ9N1LXs=*EZE-KV4)lPuT4#u643N91114tSsP|&0K|(L~|Bvt2(4V%gifJ zF|2uyM0Me8TwC~-tsfrtk7S;z*iK4oHniR-X7bba=;p+stJXYPon%a<8gPBQY!~=x zRb9M)Rg0^T_7$;rv;KXO(p4wtzv@W8_jpIpv~D$D*wj#x>Myv$uQB)H)&K& zEtUYhl;vO7E0)|yHyk7UCWQLX|v|bE1{EFXePiOW}lihbK)W0 zSBEPKjBR@BnKM45sXDO!EkE6(Cg(d#wFuNlSfyO(s#eZ{RoO2F{00(|Q9y_qx_;8FY_ z#Q$r`3dI6urw}lyR0ag(R+Y#9j7(oK(20F$1~|M+L7V@ zvuwL9p7~wCKG9=y|&0a}|M2-bE-%J4~nTeSDAJUJi^nm*T1wAuxtkxQm@@d*_Atg(0ZRGL_96*^m%S=>K+E zcgfY&M~=m-R1NH3%ZJG`psx{#*PvzzEIT8Y5?!XLan@lIYYBitLgf=E7O_mop;qHL zjQ?D6`DZ@u-skfz=i>q%&x5gF#nzy^)svY99&RJjF2(kp+m95Vl&FDOrE@LA)UP5` z0i&D7UAyc11q_Atq7qW6I9K~&X#Ak(yrH>TgIf-KHdi0+SAvjzF^PFaVwsFAT|X_t zBX=5Y1_sOVLuVDUseaMU=O-u>+l7YD3u}4BJf43b>lZc_R)-nNus)yS9nnaEu-mR6 za&)op@j}BgOZM>a6Te8a$^LEN@TXS$#W5vtcz><~Cy9guJFA%JPG7f$and=e-x2zA z`Ak4({lBGF>~QgaVy&e91m=L~A^V>{g^Pe;xP`)1yG#=A-)S_2Z*Msz+o_@gIn9|m zKTj90=e7*n?en!ZsQ;7rP)ZY|lE9X(ggtZMJuDN&B7$X=t+$2wJ)(VX9vS^0Qb$mo zwJPI5MDLGXDMq2%#ko`b26uu;EJ;}XZu)<{IgU{l8QkPX7W+LZz350&lPk$AS*r5JyD zswwt2?#80E>1q}^J{g!z8T;&{>muC|2RlT+3e%$y0}-aIo{{l(9NDbv!Q@$iElrT0 zD$LIa(7KSDSh2qjL?t$-M<=x7~R)3GTz(d&Tl@&_@m)W z0BA3h`+GAt8dDsb6mIDL5i-m~TuP(2pjAcu1}R9;gGSLD_6FD_-#p&D#Ys}Ad?m+x z)ls~4LLwx{-CmIq9m}tOy8za%4*X!ZTh#r{eS|SnY?v^e+u*gShE)@&k)S(a#H0(j zky(Z#oxz1J{inoz+b>@CGo6CorfT~7!(#WJhh!RU^&sl^y8ph`)+m^1{Zsx>X>`xc zRurcH{xu%mx^$((yM{r}7z)4>o`@X<2X`zL*1e+CXbs=3a{(c9tB(~=1dUL zrlIYRO4}_d5wg5!EowD90L!7N#jhvnZ%(~eaag?szE?547;SF_X~CK5eozZ8d0)4L}~6-B`$1ODF< z*Z-o&|JTH&@jtomf9SDnY$_W#X#+K1+lIRDG2&1ejQa9UA|`FH>*@dXB%WG?Bq%H0K+d0K(mldYEZG?0ng%Ld2GNpq| zhgB)t?_=L^K8UkbhUt)Q4&o6De^6o(kLbRmu%mI%hVUgJw`0EHxMN?6bvW+l$)hi7 z&gQdzBAZ3~y?$F}5yEjIVw|K)Kn(nF3)-^f!8=cBv0^<)a8QWu>&dc_t!s z8n(aock`)au?pB8P9A4*YW2SO2N>{92GL=Kn+rNDy;ni5sr`ZlVVPFLW7(z>ao;y; za+<28j&XY}awh?njwx=D6I55iBN$G3+q-jPa6zF{qw8`259Y?bT`=hFWOQ<3PE~o< zoz_#`i)>E%r&s*4 zDsG(ypADau35ADpX|%TSOTy8O5*CG{nD=vLrRJhS-8OvsE1)0T(Um2$Oq9r^jq_C% zLkqxfSPPr~-d&u;+IUgj18+cD!{djADXF-H{swOMvQ-iodUYkct>Rw&cu%V@%GMS> z+Xt(QP6SQ20rwU;usw4TWFK$Ol+6H~DFB*| zR2O!991X`rr-U6xVQjjS1$B867xT~3F9e!)CY6U4csKYSMDDBQCp?$`Nz}vrGNDmPB3_^ODPeSpl5yBvSCVw5_E*E{Ki<$`vF-@cGpZD* zkgq{2Q*BH3CvLt3*M>P5MCb z)EQUvD8s)Kf4Tpi9!Yeew!K&}QquDg3kAIMBFCwiTskqJ_{>{kwaTd=m6T{}jjv4} zQ+qEo>6gf7mIL8S(d0ZCO?0(NG{K<>ESt_nJ*`@$-zq-c>XP7>8Iua5Eqk;oeZ5*J z=HuF#VheG@iAE$&E(`&cZ7-qw^P@g6J^+qgMn9g?V|NdIYA`5F~Ya9iC0vr3&bnwR4M44KO@-F4SVfcm^02O)ss43>^$ibiobB? z?f3u*KV+`=w*jW7d#j@Pizf@QdcoFUPpJJW$)mmrfFr z48Evfu%`|k@*xQD@w2#N-$#5ejBGm^ZN0_I(bU1D|7JhxxIE#R3u;abf6uV}^UUo; zni)SM@#cgo8scWw0(jV{tHMzZ^Ub>W{yCT_joqiV^wKBDy56$4Y5$K*S@fXxAK?*p zV-awQlq1+$<4uDA{ftOePU_l4hrr*0VGqakpI&DImk^WB@^W%0<~u38Cjm2o?lk7D zBn;2d%mv@k9m>7Z43W01sNVL9->zJt`PEt?sw{ZL8Ey6YP|M!Or@UrJ#m|!zHw|XW zVE3#|yF8FcsH-j`n>GNLC)p`k|UVcNWwH>yC22n(DECik#25uvx3 z?4U3^Cqx9 zSj9XElYVuLVm(8j>=jGwUlPPj0@wQap!_P;Y(dc;ukU&|ToQn6l2m(ZlCTB&j(OF~ zrgJh_UP4MR@RO7PTB=X(NTV9Xi8&9yx>M$2-4)w8HnPoJlk`9SCpPYgf6*Af5&~FH zLG)`(u^s?(SZy#$Qc{Zr@RljNg zaZtQwkRw|P*a7Mj{j?r;4qPD|1&=KS~@G~NBa$jtwrj}-GvpuIVD0)E4s zG_bChvTY~Ou%Da&d^s}7d)#m-DOaJEzx3fopg|ScPOG_a9xpw`$u6<@^F&QBxoH2zPUDVH7wRT_<4gC) zQqbywA+f@i?Hqb(B5P(Mn2>Egyb+^Y)WJ0#%YTr&lrKPs8=s0O0 zD$>e4H(|GjY2e>a{Y(bPU1}ov8GZ%r!HEMQf3}nJs~;PwB!2)2n|UHtWILS)DdFm` zJU6<@&Yjonwp&f;3!i8(!{ zXPlAA>^5|fZEf}jOIwkmDCfN2xG_WACAZrL0F7MON*vw4;T~HngRsd3Psqf2w*}VPUl^aZ9)XS>M=d4tJ>o>m z?DCUT3sNHiTVY>kUF6Vwo!MMNP2M~HC?SaWDQ_Q9t_A+J61_BD3E zW$9tu!OVza>S)aUj57s)*+xtMctal6x8uiG0az4*mec;S0Wd#|Q}35H;WK*VxlDLZ1!#!lK1ta}8zk zvnN=fZhBfCt{ke7q+f|0`N#+R%0(&UZ1U6jjbkEFk#A#E`_^A}$%#J!P5U0eb?JQ2 zc)!GnCvPU~;0~_AudyxB6h780D#!Vgu<`~|EXWsF*h6^?%8_j{H5j)E@qnR5E4^%t zfa<2O;i0dh0T0)B2Do*9+``*1oc{RQIubE>K^=$?6<^IK!&PSXlOf@v2ip5d!1E(B z%Su8wQG8NTqDL=>RD3e7^mry3Q!I#4fj(U@dW2iuWVP|LLl@;B%j-Guk<5+2Ij3U1w|I)SC{IX0M zQRV@KNt?4=6eVT255Qmf2M?uYQ|EL!_xv@C~KX zXVjHo*0Shy+w=5@)gSAhNQXn2votP&11421>k`ZOg3z~677%#}b&Au&I4^IAzzP#x zp}X15^hlpi!{suIFfK|SN&soJ5<#h^8SfaDcZ#8agn3Y$p>pMF0ot$bKfXTfR+|~= zvSO43>2Lt=dH>>xe|XqKH(ZD`7qag217}$Z&`G?(z_bNrU#=e4RLwnAu@sVfVjv@V zm$A-O!h?y2s0zyY(-BK+bP~gLs=kEsE8xeVzTtmTp3*H)xDM3YO(T*F=mVSL3}inm%-*(hP8A z0>jhWBl^5qzM2Y?6M(=s2_X%hoHU+fH#cS?DnVhyu|7S|#QDBF`0knC*T>25d}zAJ@0z^F-YNOCnFU3K-}T~S zh)Pvmje*_VYN79kVo#<5_2dStvElfgfzJv*f8RY)6%F&q3Ui15p_bgKy6B;;kqL$KLtnVx{8>MYu_Eg`KUtj&VY(=C#0XQ!5X8ORW?{yDW5)U1ty}7ZbbnZuq>jv9d@H1j@ z%DE0LQuv7C*{*P2CL{z~gkenH^2UeSOd%Hw{h@NpG|m-q=!%th&KtI2)ze<925zm# zQNGQUTT_m+-U^%#oXA^vJ?tc66Y}@le*_3xao}X`2rTHqbMo(y?g z)5=$X9$s6!=khTMSS7?qY#F%m1r>sz!2zFepVvI0_{7JXmRh-*g7`OVaBuRCgvj37 zO?F#{Z$lKKF|2}r5`iDiGtL`f@mU&6mG3@Rz+uVs`WaN|k5lr@e4(PrNAzv-R`DQ# z-7vL5A3@Wh5etoYSpsMXFV13TWkSY(IJ9DM<*2MTt5Lch5_=g#>c#3>Z*T9% zvTNMN-&ck&^;jzCu8(7TQDMqdWYE zEz==|%3}ckyK^x@L@J#0$C4oCZrn6nw3+JM z&y0P`^%M$kLnrl1f}+GF#QM_!UYcn$*};d=F&e3zq5yQWU$^lEL3>w5hLb3Jvc9rJ znui`EETCs3BqaGOvH6>$`5+#TXI!5_3pb#eVbfrkyF&X&pM zApJqs^Ev&r)=LNz33 z>gk0ed$5NGsrum>xIzm_;?T0mLZOeVyVNbD&~FJ*ZpRw{L(o&PY;54<4*3?00kZDB z6%QzNlivP0qL`KZw9O1?&sa)uIL7=W;#}Ck6ILS89}6p5<0c)*3o1dW^ub{lDmsN1 zkXB?ra#~Do{L;ayFJsWAF1q}z#AdeB`UT&1I;^v<?UF_D% z1_gxKcHX?|dPkbek}X@49Hu`UEWh7P2rHZByj(jvAD3zUCNAryX=#?%N?INiS|$;P=N#aV!4XJihbMcC$ff>@3on2vtbRz~n(fk=2S0v7(C{_=cBMOwidH21` znL?jYYn8xr$^m7={PuwT&-lRF+g~+X9qV&WOZlA_x(%tshBhty+P*^>eTiMD?uRo~ z*k6#CeIQ)e?j(#!%yYi`;zs&}gAGx=#;NKfYPv@Q#wE||G?>JfE*vrvaqOLBHv@#~ zD>6`?_E-CS37Zr@GqmqI4a_wX&Bg!NPX_bsP0suJ@HtcLwd7PBrjQv(pY*gQ5@8Yy z(-b0@=M}(<^jJ#PaUxcb3ca^T=~6M zYnYsVngdnDio^ot)4A9ZD=tHn%k)N0G5J03M>!mQYr6iveKUfV+}uJ|Wu}wJ-w#*g zip;S!${8&|OXQBY{tA|`JEW!g$N|(a*WVw6(cyuPjPV0e(z@NwJn-7-$3eL?yH3sb z!BN~l_82*Vl8oqU6k8ylaUHlxHoYWo3Od5b(7ZHD{*Gf5nyX5xGvhr)%8? z&~}^%K#R!A@iBs-554+SGNiXo-V9v=^p)xhd=Y$DaRoe0eHIr&A}(^75hb1c{KNe{ z<Rn|!*yI&ncKCyL+-LvpIF6_{;jqFB}`F5ZQm|qOJlbI~e+FM?MhvsC!j*~Jl@V1%M|g#ToKgF-eyp}$t{9qa{SHC3%#9luC}QB`+0 z9bx{|aj<*g*`(GT@}EdUGoOwA#Aa=O98zY}eU+ai_LI{Tm#n3JEilgjzzxTo-A+0w zsC#IBsV#c+whlQDsk}{amAr~H+S5Kp&~0axk*_|tK~I04 z*>&jpaL{1#(k}ZV*%2n&lE)E;e<^b}$MAVxKz)S-^(^7_hrhf$#y_oL>n6WK2}=x7&sAcjf-%4!$2XF*l;Bp+uB_XU=cGKu@?>iD{9K^@FVct6eE5#$E)3Ob>Q`fQBhtGP@!20Ku@ygOwp0ynBA_pA2F8K9We5m^ig;c$q`@F2f4r=iv`QXO$RQ-07U zrt#fjyx>~Yq|*}mtU`_Bx&0>^Hhe-=$>ji8%3HhgKr#aU^ARsg>>h~#~u zGXim&lv0vdQu@_b82E4yzy1Vio2POmm107+z*Rsw^pbu?X!U8fL9E(k6`=g5R6=-hqi_Cw z2um-Io(@@o^$|si8@}m>ylE-HoX4*6vtLtoUH&hMgbRjEn-YbNML=vZDghs-DD=6Y zdi~6QPxNDv?xQsTy6BW+ec^=GAKALT0u7Y*Hh&THf?tJLJJI1qNyP~l?e@!hsGD4x zcipb}MLKrFAl-bgq48N71Wc)LOGvFy zLVP=-L#N&d)-=Y|{peq5Uy>-uCpFr++~x!rjz-@b9FF7|4zpk9H{U^$TVE%8{-);0 z+*-DC#X~b4cx7luh{Y#~%%ed%iev6x-|MzR7?8&<3AQ4DP&l<^8_o?+F3h^Ux{R3- z#eOIE{BTr{d)_q+B}!1_szQ6$GSk;ZBwkdBB+L96kZ(YJ?n4fGzhWgFM42!ox|{oH zAO)NZZ9y@D%uDTbJzkC}`>?QKzLbf2r%a6x52JY)vN0J2Ko+f^38h+!_-Z+T;rQR- ze?>h%-!D<8@0$^YCMFoe%>6(Y)SZ{DDbflx!MzW$iBW^kL9|<*fhSW>O{V=3)Y+uZ z>d{dO0$5PdvktfR#d+$#g5yGWgne^cPfOjMJa&6lmma-0Jqr)&zf^Ee%b#N1q<5rI zEO=HweoEw$lkn-;B8&xn{2ocj-c4E+F)TQF%F$(qc9O<7@?37W=Un#zWJyA(+;)-` z*U#rT%|E;3{onSYw$%keDow(luYtAy6?XFy4J;wM3OYLk|qAHhK(-o=7MV@q4Mxw==PzZG=>3}MC@msmP-N*TiFmpX@M8z z4Eu78xpcj)rG?zd%2B0z=)teVPY`ZH-WcbRv#mqU(&HaK#QBS=G0TvDi&qFs^C!33 zMrYQh8pTO=607y~eyb@=9ueU6QeNfV(dd>E7Sl@oVo$5+j9)O$^}p5Ay72)cMyGxn z-uwzN&z%cpR7^jWOaTSZ8dG5ud;sf$CY8ZLZ6@XqBe@ES;Qit8zNRA5lEHoPY(cRE zw{USqZ{cd_!vod((1Z0Pdcpxm0LV zMeyT~HXPC<7HmZ(x%s_-qcd)+q9a9tROnceq@qC znDd91AdH$J0gvH-4gBgok8`TD+0NbtgZWPA*ZYBp3>LF(^FEn%!3Uqo>tFrwT4h+o zq}9SmI!V#eO4LM_e?kqvc3}lsL%9g;rTi@(!J^w2w1U`N#~%kqJzgA4q~qB4mm1%o z1&1k!JU5I*xHw7!KZvcEyPR!Vs?1Ej627MwU)Gc&K(>wO)I?htoQWln(*pA1R-3td z-|tT}leLoW$^ z@lR z2uf&jBWYY5ogg@gNkwX9(L|#q=Ig z8DlQgS0zh>kpMwiPix221d_LGzGG@nEcv@y#Bn$?GK4wFmXyaMhcl-%Zc_i>f&4IH z!Q0yGu#`jGpu2uM8q^3@J6ekW%5eiSGl&l9K^U-sFs>*P7EIy+)3{TVumD=>FqWwz z(PTZWvx5oIGefouDh?-rdwi<_Zcsrs+KM%r4OVti!~7SlmyYjJmEu()26Sm;p(j2| zD|{Z;GdL}SWZ$&j#?4<_6AFloN_iDI)ZINW;^sC+8_P;{u^Z@j9lcT>t(ZSXkl0MJ z2W;29>`;@TQ_#RjFU-;yGt}xFwkq|%HLz7p?|%1}1KReqg*y&RVa2C?uZcoJLLzji zmwNK8;3IXd+rr|f&FsWe+9ZF6c2R;p;l- z#5-vf$dzQ>sY7#*Qxgzw-=oG|;vwC%E0;`EpmL#^Il0cKJ{$Om7Zxy!eAfE>4iu;) zHGWk9KF_fYpitUGd#`_Dt*Z3W+zv^lCr_UAWA=@nv`QMb=Ha^(Ox3Wh`nZ*y>go$sKGKO4cdiQDO zr`#qTeoRylU_3=X>YTI2vnq|kmi=rm;1*=@47wNIp}&mq(n>}Oj&miXU8bfllp111 z?&RAqNE*}5m?Xi<(mWj|Q)BNwR^!_M-HAz!OHHITp>X|YsqAldDO9heA{Z(v zI+1wpS(Yp9){$Wg+u0HK8nwME0p(C(s_fRO5&w~)+0k`tPw^#yK+>eW6 zBmoTSF(m+k;n0W)3UYuRQW2CUpo@Wxj>HG5qC>R^1sz{14yitCv=_*4KwrSxl?DVHm>?1k)*A>;AY}rU8kqP}5gjfS@>z)21{bP#;d=>gWlj zRGx`aS0Hg%n_V;^4SH#hybu2&rj%bGZ>A?*dO8c~>*-{Ekh^~38P(emo@T|Xwh|Rr zZ?DVGHPFjba6fXg%ogjGTI_k?KP~lnNy)GMX1R*+Ul>`dWmeG#9%*sHQ!XLD!tY_|u2_8iR}zO9$inCa5t{gl9FU`^w> zxk$?PT2`6g%lw?OYdw+6RC130-;n#SI@*d8v9HyI2`cGW^+u8H#AV22im z7e*hnJIdMrP&S>X7pp20oRnaJ>E`-}11nF{E#x1v#vFEesBa{Nq{lDWmSLQqms+e? zp6u}ePsfa~5-gdI--zVMXy#JVH^&5C;D=trD1D+ z3AFh#yrp!L!|Ql5LN*di$CwK{8Nt6SAFc`D38n55WoYzN}rahqlPnlC+VL(;eZ=Hopk&9Z^ z8j{TfvXO24Zxz7?o8-LF^bJG}R%t(pN%p$4PkX&+`F+~(HBITA4lSLzTC%MfI<(5#%CWWC@ zaw%zAKWdfOunCEVByAR{kV_(dhc3VU_xGH0-p~6v&w1bTJm2U0exHS|g+4&GwX(4S z5Ci~(USQz`U~Luf4gg?h2ebhI1OOf90Sr1ry+9d#0DyDhZ*L-Uk#BRiMd!ji(BF9| zj2Fa<@bgvMe?-mJVXJizFPNvcQO8(EPiNB(HJjitztCXsAJv!weLZ8Qw~wLWLO0+5 z7(!qKf?)(+Gz5z*8V)0a$Kr8#JRV0P$x~#h@&rW!iA0s7Dk>?hT)9$y*(%jlBvo0` zN~Oh3(B+FOi3mbeB9I75|Fdu$oL9)^YH$)4|{)|KnNIm^#~e@xgj7td)MH}%S$^h(}WhtKTYuCcz5VsQ4+ z^9vsS*Fqm!zmqeU3YtF7Er3VvpHh0KNEiFQQ$3C-&YCW58Kl$MH$QM^z(k(=W<$j5 zi|?n+Ch%sh6DcB(`L~zLq^8zMAD6ZS^S@>)JXC2XnjD_B=61QZiwb{JM9O z#>8g*3R6K?nSU#%mYmj^G4p$EO@-65BIi@u2ct8z>;(E{{?#ossd;ck(N)!s3tJ?= zS|WiX_YWFzw{dshFrkWUr=lmr$0`SVG;YQU+Fth%k0`iCMTwM8W*bb|ef}VFki)o4 zPc@>G;k2RPiO6J=XjesRxf++PH%#P3ZkvM}gZ1b52Lmd?`6X|ML=iKs+O7jO;+%Jp zA2OOuLzVZ9E3Vhxkr7jdCcmD7CJ$p_MCNPq5R6~|7DrK_s?qs0hAxY3>FAxFSKGgY z0a||xXllJ*)VaE}I-dfHQ=$7fZjbrFyG7@M5~U7^q_c)|p+ddxD8srbRX53_+ECSk z{OR0%*HzRgxQyhuRAa+n+s8-FPtImgX*2guGYHCOr<%$!4hR zNqJ9LcBsvd#nswk9*4UWHM|)0Mk-zJ^NsNqOp77GrOpCg&|lFUyK9pZhSb2vDx#}rS8Hpf zVEeP((%a6pH^Fi<=FHo z`YZ>Z7hiaWvw#->Q^qz!o?*>X?&(h8Jy4G=oE7TJCKq3s)_Y_}5}Ro)fXa5S!#~Eg zj**sC8p&)3R7NtwHoY(x!JQT9-$sPkNQ zkmD?0wO>72F-9uE+!y_zAjoEHcN>3l-As8RY+Zx6ql)OA)p}N==IODA7yX0pw3V%< zmDYC*c(prQZ#k}BsGG>;*fwnD?DN)APD(#~Ah1xu@@|%vO5$H`+&5Q9e@Ui?(~NyQ zozn;7?}Qv}+!P{Oj=kNXI`cyzFQH|R{j+evhr*wjYs`0LjjVM$o$}s>wyCOtZT9e0 zRnyMvqjSV%lWv&e?S@v*`hEO~zA+^KX^-(p*;m|d$=;Hwpn77-iO!P`lM=PLRS(QA za4QWWxqPpm!?VC!?sU;m=F8v-_d#xN_1LEdlp|}%Xg7c{IQX0JKomgNMakjK7pCW3 z8zr+GYFocbj|F}1{)e0NegjM#E3k_##G8-m7{fgmU$BLUiJ4yr_eGb-cFj5S16G_S zWJRjO-}S5;Ef%7V$y8(IGwge{E>8!;54bovpYnA(M$H`Hmp2!d91~JHz#h!=WhpCM z(m>aH+E4l$nk@yTG^$mF^mW`nhN3;r-OQX4%Wb(Kx6g}>ih62WdkK>9--%c4?{2y6 zPzH#eO)Y_?)btGjr4Ab-@9@ES6A&kh)1e)jVxBg8wz+f+rZ78y zOS70x6}KlQ^wwe7PEjZ81MJ1dgsE2jkth}6i79zfsf?zLq0!Nn-3*qbu}bNORi{n= zX&;F}aaigxXomuT3|^)hy^M7Q7!p1$=wCD!8HLI@_FD&E zVicR{O?Kp`=dpyfFGjC@BNTa(5JK*yS94xALYSNbzN3Lm`M0X@99KCZ<)5gqY_vz3ve#wdsoLZ=k0o&ZdM&8>J&kl$$vuZ z%p4@8;ZJh)+5GQDc}Xr|#f<@V4sneg>k4E)(t}0`!&`MyeKkXR36`}=3d-|{z3>nJ z;dQwr>#V1;vrMQ@tpN1BGI#hh;kf7*(l7n_#8pvJUBan+`Z9wn&7P;9JN;ItaX!CO tbZ_LbX~3NI@X(=tRq#4}*N&R+dPKifSK<>V-deej)I`Q}{EHTz{ulCq_9FlQ diff --git a/libraries/filemanager-9.12.1/img/ico/ade.jpg b/libraries/filemanager-9.12.1/img/ico/ade.jpg deleted file mode 100644 index b653b3d1375113626f327305808833c8cf96fc58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2290 zcmb7Fc|4Ts9)I3>XR*&>X^e&$lMbRgW5!h|Gs!wR8H6mA-H>IZ#W)>_CgpIAx^XHZ zrMW0{>PlH6MQP!b6Cl_y}x(){GR9c{@&;N{VmU<=vRyYg1fVu zGk_ofAmjpyQNVTDCyWHZ!vmND08{{USP0OFhFAdwc>q9_pq6IDCGe6Ss5B}T0cUe! zvM^34jtHlPrqJ9yom}FC@j@DV_1e`|tF1TD+~SiXlHx;l(wO_K!XucRu+T`wAaDd2 z7)HS`1_h%qh~U(5I2guhsi~=`6SRm#f)*Z6(xK>)w8`3dyq=LBnPNbtQi*y-#zxDH zDa)w_%AY_=Pb^Lohto9B#%mk=-=b&*L=_MS#4uzGP(%nOLW(wEfY3+5$}lYn8UtZ* zFbXkJka@(oWI+^Uh{j+Q13&|rM-gBG62BhYcTXkCkFdN08^K*kA^@An=)m>zqDN^D zyoR`S%|-1acP_mUSD!IF^e8NP!*n52<$6Qb%%6+9o>ho)8_nyJ&AP76ADfAra;n~8 zKBSrfvMc36yE&ImcG#)<&nI+b0fr|B9qVM(J6H81)+~H#(SGxV2G@Q7*&sky5C957 zBRBjFD;fg>2!&-@>k^1MdUUQQ0$By217T2$jg4=&pGx|UXBS=icuSb))b$~2a?35} z(tcIDb-N;3e{J2UKRr?O!}|^PG#lSX<_Ttg5jy2z|D29@*P^nk2i+R@+}w#h6uZy_ z)#j+(F%;+LveC!33leXQJ->V8Z)!V(lB}D#W-x0el4-_>ixD3x6RwGD(hIG^wX38? z^xE97$UPgHim|utJfwc-P{juGzB`MDjjDf;Gpa_NtvUDCJfmGp(7JWm(VI`#{;?Th zXhsAO3}Ml@Zv+u`FcF|h+B7;3!(d6RxFMqS(XlTyk$gHp?|cX2O6&u97mm*iC;$AR zJYx=$4!$W&)r*R=lDz!`qumu7-)UH{4=ci>!y zh-zentiVxb6{$BIM)hkABAfx5h#}FLAy|U8F>6-~!-^;H($VF5hKZ8WrQKh%jCDYL zmV>CgD&m46BUt@*&X#}g{psXv-{oeL;lL|hL*r|!9HWnnUosyXv(uV#ZL_PI&lf|DBBAHrSH=MLScSDOS^xhvyReQ+(V6j^^ zJbcf8r!2VN(BX^sh2EZ_&XxP$U(do^zV)fYjt)pnPZm^3EXIK}C z%~d}QxqGO`9Y0DOjory?*mOI2;xnZ#CZgV>sd#d8%ERvVF$W|+D+x%(As9w4)c^#D zbQVv*6qORBwJjm(T+iumedj=59I_lA&MH7p>OEufO@AC;HQ;E~nbeecy#T`dF=@@6 zRvKw#teOJWukVuTd_-BhOOn|WKKr~%8cQ1MeLuUr;w7`s^zrX@QW(C^{`RCYWBmF0 z;%wqmAMDEVYZ;i*Ovcufo-uwTQ^NB* z*dgHKV($>1MxD)?TD>=*m$W>+Tz(>(!YcQHBSl*mOEiERqgAA!;(8r&ghm?-WdT~(Z^1U?Z;p5I$-O>2aB0ik!@tnKE~RD3z|o{zo#t# zn{$GL?8LVQ^XmjJkE`a#d2DO0u~dopBah~PkZe6#+mp;LyBDDSvFuIwDv|y+mj~`Q zO`|(bS^50K@T_aljTqZ?Q7Nl@rlULbCI=<$;JA<#B7w&a-J9g)iQO9gpX^)Vzf7&? z)4!l|CHG#q3&E}MvJXG4G{ZTxtDe@H`si38%Tbvockli_dWJ#wfh~-Kx`Hkf`nO%2 j>&fMIzK~?woIOmQ4-EEX4<32%-F{!n#~xZ}SN!%L0k>Q) diff --git a/libraries/filemanager-9.12.1/img/ico/adp.jpg b/libraries/filemanager-9.12.1/img/ico/adp.jpg deleted file mode 100644 index b653b3d1375113626f327305808833c8cf96fc58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2290 zcmb7Fc|4Ts9)I3>XR*&>X^e&$lMbRgW5!h|Gs!wR8H6mA-H>IZ#W)>_CgpIAx^XHZ zrMW0{>PlH6MQP!b6Cl_y}x(){GR9c{@&;N{VmU<=vRyYg1fVu zGk_ofAmjpyQNVTDCyWHZ!vmND08{{USP0OFhFAdwc>q9_pq6IDCGe6Ss5B}T0cUe! zvM^34jtHlPrqJ9yom}FC@j@DV_1e`|tF1TD+~SiXlHx;l(wO_K!XucRu+T`wAaDd2 z7)HS`1_h%qh~U(5I2guhsi~=`6SRm#f)*Z6(xK>)w8`3dyq=LBnPNbtQi*y-#zxDH zDa)w_%AY_=Pb^Lohto9B#%mk=-=b&*L=_MS#4uzGP(%nOLW(wEfY3+5$}lYn8UtZ* zFbXkJka@(oWI+^Uh{j+Q13&|rM-gBG62BhYcTXkCkFdN08^K*kA^@An=)m>zqDN^D zyoR`S%|-1acP_mUSD!IF^e8NP!*n52<$6Qb%%6+9o>ho)8_nyJ&AP76ADfAra;n~8 zKBSrfvMc36yE&ImcG#)<&nI+b0fr|B9qVM(J6H81)+~H#(SGxV2G@Q7*&sky5C957 zBRBjFD;fg>2!&-@>k^1MdUUQQ0$By217T2$jg4=&pGx|UXBS=icuSb))b$~2a?35} z(tcIDb-N;3e{J2UKRr?O!}|^PG#lSX<_Ttg5jy2z|D29@*P^nk2i+R@+}w#h6uZy_ z)#j+(F%;+LveC!33leXQJ->V8Z)!V(lB}D#W-x0el4-_>ixD3x6RwGD(hIG^wX38? z^xE97$UPgHim|utJfwc-P{juGzB`MDjjDf;Gpa_NtvUDCJfmGp(7JWm(VI`#{;?Th zXhsAO3}Ml@Zv+u`FcF|h+B7;3!(d6RxFMqS(XlTyk$gHp?|cX2O6&u97mm*iC;$AR zJYx=$4!$W&)r*R=lDz!`qumu7-)UH{4=ci>!y zh-zentiVxb6{$BIM)hkABAfx5h#}FLAy|U8F>6-~!-^;H($VF5hKZ8WrQKh%jCDYL zmV>CgD&m46BUt@*&X#}g{psXv-{oeL;lL|hL*r|!9HWnnUosyXv(uV#ZL_PI&lf|DBBAHrSH=MLScSDOS^xhvyReQ+(V6j^^ zJbcf8r!2VN(BX^sh2EZ_&XxP$U(do^zV)fYjt)pnPZm^3EXIK}C z%~d}QxqGO`9Y0DOjory?*mOI2;xnZ#CZgV>sd#d8%ERvVF$W|+D+x%(As9w4)c^#D zbQVv*6qORBwJjm(T+iumedj=59I_lA&MH7p>OEufO@AC;HQ;E~nbeecy#T`dF=@@6 zRvKw#teOJWukVuTd_-BhOOn|WKKr~%8cQ1MeLuUr;w7`s^zrX@QW(C^{`RCYWBmF0 z;%wqmAMDEVYZ;i*Ovcufo-uwTQ^NB* z*dgHKV($>1MxD)?TD>=*m$W>+Tz(>(!YcQHBSl*mOEiERqgAA!;(8r&ghm?-WdT~(Z^1U?Z;p5I$-O>2aB0ik!@tnKE~RD3z|o{zo#t# zn{$GL?8LVQ^XmjJkE`a#d2DO0u~dopBah~PkZe6#+mp;LyBDDSvFuIwDv|y+mj~`Q zO`|(bS^50K@T_aljTqZ?Q7Nl@rlULbCI=<$;JA<#B7w&a-J9g)iQO9gpX^)Vzf7&? z)4!l|CHG#q3&E}MvJXG4G{ZTxtDe@H`si38%Tbvockli_dWJ#wfh~-Kx`Hkf`nO%2 j>&fMIzK~?woIOmQ4-EEX4<32%-F{!n#~xZ}SN!%L0k>Q) diff --git a/libraries/filemanager-9.12.1/img/ico/ai.jpg b/libraries/filemanager-9.12.1/img/ico/ai.jpg deleted file mode 100644 index e469be3df8781b9a24e84ec22c5e6433dfd2feb7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1776 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 diff --git a/libraries/filemanager-9.12.1/img/ico/c4d.jpg b/libraries/filemanager-9.12.1/img/ico/c4d.jpg deleted file mode 100644 index 62994da7a372dd446ff991e89eb2b1f38f863865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6241 zcmbtY2Ut_twhkgn5s)U*N2OP3(qRM%5(K0}LK#3x!a$@%LLWgu`bbrzi1ZRd?+~d< zQ(EXPWRND1ASJZqF>~Mb-uvGBzWcuS_Bm(o^_{iL_ph_o-s}97Y05I-ItZu_1W-`{ z01q!N00js5Sr-X)1po{U0pb7vfEGX%4Fz1jkS@9axGx?6;L^KGKi&ksqy8a7{!~)7 z0m_fv;eK#mclgtv`b)e%!52T11gN>Z@f+RiZzSzd$_D@o zEdT-tq^4p4TwS~_}$iw^bI0hg$#sV`lo zrlI+B8LE&AJ>W764eKr0`&ZaZ9IxK?W|w>ZDv$P#c6BF*=_o-^-pMDNj{XMcO)hRB zVG&U=aRtSDO3Es#IuCS#dJpwMX66=_R@OFP=O-?%ZthT+uOH%>KQbUN;zeXs^vjso zQ(|5*LH zw!X1R-21+NaCk&IKKTGEaj%UA!zMRm#lPv9(Q40 zVZCp1)zO>nw%l`CcI{Vr)tz*AxPX5Gy%)giF7<2|{NZTIdhe|)0l7PvEVBd;ldkhpxC=#~I8+0K*Ewsl4yb{o0>E_`};Lgw$Nc^zG zc$dpWjtq}Qy&jF8twn$YIEOo>w%6+Iv%;wEme-k;4oxgN(>5m8(``#{ZpDw zuYx@A3vczqczzX@8NP=uf-JTOG4p)WLhgw*5K3$y8*Fh)93eIlv6>~Wtq)?0Pl?YL z%mUYfhWX4l&B~29pcl7!yqi&>3eay;8$`?!xq%n$SHO!lWMY;4`pX!8_zY$I?_Zb> zwY?)F{Zn0CxJP+;>HEfphQ@@iO-)VNlcK+b-^3QALknCIMe&yY&nzq?e|D5uuZKU# zc&rtQan7Aq>&9GD7#3NP=^Yjx?-5|D#78_HuanYN-q}y0igvh18(9jKLI|({x$L(d zzY&T6HJe;XEmvSJSy-6x0}ocTdKM^QHEhSR8$5#ZYby(2joT-cdvhVF+@l^6O75Yr z&Dq(h^vuWh7vPU3{Op{%#x2GagLv9yEXEZXkd@yQ`R5vO! zzFNuT;#c8#^%5m!QL2qnoq!po!4z*=#BkiJKLJ zvq6fE^mS!j=9}ZC9Lna!%1xiy;?Z2%-d=KXme9Ig-?I;2wwcSwpDx^LsgDAPrU00C zciJEX&Mpi$S%hS!O^7@!)>uHF-8$h+tY47Oo;Xtq@s;WvSClV+fQQ_)4>K!wNpE!3 zqZrB^_6=g%r25ZHaFQ8vLnUJa$Zob*tFIfgaRfqwTLLO$q!hyVW~}%dx%CCYMYLqN zY}&(t(KO3;!-C9&TVjU^q8r(a<%4>4uWqnn)NVP(%j9aT(Z%%AD$(^L6c9h2) zn#4EfpJwT9zbqE>F)uu|SvKY+d8`<}s59n4>X;;%jVPWfv{g6TN>(R>Y;6{Gnlop~ zeK?`Ij=JBE)2AK}vOTHvAYIk^Ev+NANZ&W&`?BJHF;zqlp5YY?;3>0q))>Y!3 zkkIwP7AhNp*AB^g*{k!qX}{EF6|?XfUFFlY$TxwCVxkJUM_T>1MoJ1n?II}Es#Lq} z00b7FQ}USVXBq%I6=mY@&d5COKoYj<*C@zO5zlQk>21|NS1qlySBBJ=7BDktLv}gWxpB7DpRM#o5!E2o>yX)mj$N% z4^2ohD>5&CUCV4*DXfJ!aAy8Gu<>amU?# z9sB?fEHm;ejLG4*fbLlqa*dYLC!hJpse3JxIflGd9^}9NI+MthpC4D8KJuPGf)TB< z>6TETie?iY;_xrc*M>m_d6pbvAJ=keDS*xqOjQx;Qqqkxk@KQ9fv_{^)yPmj zWQGCtnA(cX?%*ambjz@wX`IJ& za0fpie2iDOD70Ho4t64;1fu;UFf=magJSVCr-SprN1U427S%1bU;2*@|g@rbl0i6T5^3L zyQoE4VCWy->;VN|((nQWMgnXZPIuJ>GVlaao1w~RK&5NdzEDK`c>Jd0-RWQ>iQMb& zcY*b=ssygnok)n!AnDjYfUn@yn}wO|h3VSX>OpyVmp8AIZDRV>v%X@g#`Fc#l1GJV z?9%4~Lq6{1dp68@Ha=V2J__1A5BnUh%YW+SZnTK>hP zMo>+_+QSG(7R6!iN$X-2$)imBjB5rh0gPdH&xJ_0bD-VRq4Hg326u7CW?f&IWRI#< zG^N|1ox|ur(+|!b+J1*7d9l5p!P?>uqYiqNcS|$e>PZG1CT&c}GN-%Z#tV6wIQQmZ z;0aK9UPw$k(B7hI+8X%TRLiTJWKJIb&#hjIg8dO(>-l85H}4=D0<}_=#q2?@MB_wt ztBUzgKQG(?>$~7S{ig9u5X`!5yQ~KKnP$4aAAA?v;oht`^L;=y_rQi`TDzH@YUEj!s=lDNMpZgzv%b}NI_^;h4Y)%<#vH58>X^6l zaoRCWQiGnQ*3j&Q?TuVl^+qeLetX$3vQ3Zpg1h7qvd2;PK*%?R!sSjOmAC5ygqvMV zjpQ5e#rl5rPHSc!F-}^lS?l66#=&C`1elR}It2fh>JqqNEBi4;Px>(_QML7SwoMtA zvX5TQ4IK@b*cp^-bGuEY=cD(VVmc4{Wfs03GeOibEUL;dYuI!khlE)vNIZK%RAp}h zG~k^X7ngdR1s_6r2xLDA*3TRts;VR2ESqk*S)nV=0kzDiYi!6YDmEOo{a&Hct4dzTx`(R!dHdM@aF!U8whpKrF8cu8%eH(X2&v zK$N24vRpi8ZMt0Bt(`#@lZjL@T-EQ{dEy68R>i&pBgMbJzzJZMjhTGOn!T3A>Eg<^ zS6F(TeIL20cAI1!B+z>o(@pd^6*7EQfR^;h)|Ff2b9L#hPi+fO0GD~si?x37U53vZ zcR5^dlOcY`t#xC#kUC&el1SvfhFO=rG{Gyj1xuwPgJ7dzpvf2t#>LP>vNPvzHuRC z08_p17DxNZc8uLEjViVbFSe|324%b1n?o(mwJ{OF`Z%)Z@7_RWf#}Z!6-z{#lke52 zd^5V(E*w7bUAcKWzi(N&ql%E|MM_b=EjE@~W}e3_TWTs`V?`J}Pi6=Fb>M|jCjSwV zzGS+%6%S9hLwJggKIeAmb>h^^{r=@IyEhmOCDreHs@SHiJ~}~7m|&=KCS3rj!j*P$Yye&1^XUcK{HRDrKi4N5p4elpv+SCSvh?4%*be`z#y7w{St}5S_ z9@NyoqR-)$7c}d_=W{#_%zQmylIn7iAJ&WZt10)Z73Bgm4Yl^d{BG6oC3tk`}Y3Q0ND(dUS%iM3J6U1j)l@LPnj_zXbB-UJ70&3Vin67`GJ@ zp`c@0+ctjLQWZT@$+f@4vXOCEZC6xWa6B4T!O!K5)fC1JWyJc-PAm#na6hHhCV6UY-R4%DWE!Ab!=Tz2i>pl{Zm3k*XTYoM& zO>x(vRMaeTRWyIsr=pfC>#H?yu}s01voEg&uP}G!3>KwG+pG~F*0qBW*Ls$%Jm6F3 zG(#>7t9JXAcai7hA9|8JPSt}oqqu%ORW`9$iLn=dx zUQBF2HmLz6-V`GPwe-n2(eF~1e~x1k7~JEfH@XSZUy;}=`NEY@y6aSpP;Is>n+x}{ zABZi~mPt-!HXu&b zj3%d7!)gwLQ62~p2@TaP-(#@~#_+%WPcu`deuU^q7)iw8V=MdxhO>wOe~EUgCHVK6 zSC4vmRk~QC{Lt*v?cGS{$C)-vpFDT|XlozYN!l6dFP&bn9ZEk5;w~v))UdBUaBxEq zWrXKbP3vdmp4F~5?ir&84O(Y_+eG&zI9jp9*3X7Pjw3 zu_8UnRqUaj_~YRH9Awl+$LECGS@5!j;QiA{j0i~}POCxbn;HRr*iVSp^NTu@>fM(3)tex;yx4+*^CB zP6+>2cP>M)8qRg%fbR}&GNGbtgcR3v6qw#vu-@p49CR4}1I|2m-?MP8`yDbg#EVV_ zp??M>t}i7b`|*)X>VxY~cNuZD*O>IT^J0g#@K|o;iar!)@I9`_-IG1qIZTlTPER&1 z(?AFK`z_{{d?56eCL2i&5>CX{exm?b!uwpw1J=PUiFA|Y(SsWnwoUOmDElaWv);)f za%Hm^kX;m1bC{NMtIT1{FibhOBR3U8FvBF>178ilIOCoNavZ~1NPQlB@ZQlm5QZpC zNQmtI;_QgDV&>~>t$;vm^=LyVfSFmlkF(AG8bgCbpQH8N1`C=P;J@-0tr(4R5XDAkt*ko8mG4X zrwsJH=4xOkr5-9IPnVtJklge}J60P#*Fwe zv}=77V9ya-t|d%n`}2Ly#%;A%#Q5WR=B&J((syHwqS?z)_Ro2L%?v?xZ9cVN%U)pI<@1;9kc1HWM9IA>ldyFv3Fe+=Du>=llAov@{Ib zzNLM!qfsSR=SSZEFC5j$YHv!+vwvrhG;zL?+ZKw0df6J9aQkZKH6zr~yV!B)=6fgoJe( zPyjGmsUEq_9ESE(>81L4k~UVFj(lvO7H44iadukd{Xv;otiI}FPlOk0>22NEY4Y*r zsm5h;L|S`BX7VnlJe3dC+Kcr_}+o2OGc4X0a2NXVMpOQ?k` zC`E7YZw-=!O)ahKd0GqnT;n5n*b53KC+&~qF4)D%$(&>ZyXK0cXHdCjv&CHlk6L?g u5@b9GTGR6D@o&lcg30>*BBh$eXpybsiFnWt{*;>XFMQ{Jqg9zHGyefE>d0#V diff --git a/libraries/filemanager-9.12.1/img/ico/css.jpg b/libraries/filemanager-9.12.1/img/ico/css.jpg deleted file mode 100644 index e1673b0743b8c26007a9828f0d61ff3ff8b4e8d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1722 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 T4edi=31f=DPE=aUT^Rf?WJ=VB diff --git a/libraries/filemanager-9.12.1/img/ico/default.jpg b/libraries/filemanager-9.12.1/img/ico/default.jpg deleted file mode 100644 index 94ca6691a6257d6e13d45455484f99d08fb8b88c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1723 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 diff --git a/libraries/filemanager-9.12.1/img/ico/doc.jpg b/libraries/filemanager-9.12.1/img/ico/doc.jpg deleted file mode 100644 index c0e14b3f4b883770eb061827cc9eb8497a75805f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2511 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

~yju=_>uu*lZ*+Of!ulMa&( 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 I;$e>dH<`FnivR!s diff --git a/libraries/filemanager-9.12.1/img/ico/dxf.jpg b/libraries/filemanager-9.12.1/img/ico/dxf.jpg deleted file mode 100644 index 7041cbe6f750106d9461dce3648976613f6cef82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5419 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 R2Z9KsF=E#Y5-ahq@dHtmFyR0I diff --git a/libraries/filemanager-9.12.1/img/ico/fla.jpg b/libraries/filemanager-9.12.1/img/ico/fla.jpg deleted file mode 100644 index 41bd2ec10832000d145e32e4652a41a932b64cc2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1859 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 diff --git a/libraries/filemanager-9.12.1/img/ico/folder_back.png b/libraries/filemanager-9.12.1/img/ico/folder_back.png deleted file mode 100644 index dc0786ec6cea1394a7bd1c394727ce9604c9141b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcmeAS@N?(olHy`uVBq!ia0vp^RX`lg!3-q3%M)E07#M2L^NvAv_Sw|~OKsWav-ShQ@-+I8zUZQinN`;MKvcJJMP;NX#? zr_Y={cj5AtYu9hzx&QFV(`PT2FPYU7|t)Hku3cJ}G-&`8KU6hAq87==kjTKgss` z3im7Prq4Y3|MX{@^I+sJ+563aVM>$D(hVQ4ggNY6+j#l@iR@3gyfG@Wm8?>Wc&ze_ zi%Ql!NxjWz#Gk2bl(bYlYRjHQA^OHCo?nusOZqNuiu<>VF{4JNat;cS?{w6kwl+^nZGMyT_}1@~(|4b`Rj$vmG!~4%eUWdGvtt+AyJJr~xZ4FB zH20p+@m5sjlIUFTd;0W=1(s89X;)4)OUn87^~;sbpPn4~@#Dsg7efA7a(8zd7yUhS zbKxSdm1_(8^fcXbj`o(6N#|@X@p0Lv_D48-ZE>Fs&*W1te)Iec*O7NvzUdc_ZnW@K zi*#)nztpWvUTgIJR+@b+w14~dIW4^Kd-mDcpKMT#?^!cAwpZUXC<(25)zVb5ySm9# zJyAio!Oq^ais@}a14BRtdn!Y-+0W_a7ooAaCw|FmjY&OoIxYiKEQ6=3pUXO@geCwO CHQzk| diff --git a/libraries/filemanager-9.12.1/img/ico/gif.jpg b/libraries/filemanager-9.12.1/img/ico/gif.jpg deleted file mode 100644 index 8c771ca3c3e3c87d3eb8409538ccc6187ddd717c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1979 zcmb7Ed010d7QgSkY%GEI0*Gvx5D=BNOcIcQm4OI?AdG-4Wvc`T$|^x%6qk|@6gTBQ}GN)XB1Fc$jnocHeg?z`tZzq8%nQ4Op9 z18^^QPj`SI03h%Iswv>I?Lb^C06spz8UR28NKPCe!5!2BW4Hi7tI?H{%xY|9AEs8S zmVn*Pl(e{{xJ*$DE9xN2%XgbcQe1Kz%htxxhG(&w1S1gD4VX9rFhpIZ6(LioBpL>F zCh!=>{bwCULQtqzDS$Qxl{kjO`jz~}U^;8X9DvQr4{T#aLx#g;wN>?TQd_yyZ+d~( zq;oV2Tz=4GpHX%CMC;__=9ct@za4(O)}#IK&F_n(^1JfKkxiP$038gvAiF$NKl_z) z!oH8*OzU);k@>vLHV=qzt$Kv8U1bd`{%BPXHBr* zSoX%l6GpSOMoia@hVT3Wj)gvT+(XVwHypA0Fu3jSBNoG~ri!L^w+X53Gbe-Ga|zQK zi-EI8ilSQ&9h)hy4Y5zgvvNyA`i@p~TU0arYbx$!G>fCO{VmNxUdb=K`!X^L;?+Hw1MG%z0^jPK$HfJlB=dzp$?1nS4$PKTwZfq+fYJ;x0J`2AP z#r+{U{Os%@i@}(q-f4Mm@$9%@rZdF+D*+G`!)RK6f`qr4OfVp1K z3ZwRk;&By#0rJ)TLr_f`iTW-?RNYX5LDn3Rhorg;C$+AmP*_r*c^6VX^Uz)7_aAcv;)*I|?w`BmI&rapy8n}+F; zp^?FLTe349Lwf^CdX)i~B*|pFVcEdL?s$g7w6ZeLlVVy^(B$>P;FsX_p|0Ed+P^op z@p<^EJT>|9iPOdDpV@_<|J?K6Jte8>o}q$kUO%XSD1>A1^K?n>?w(h>VcD(JWk)Fp zd4<{tAk4V}j-OC0e~zqq9&q;i?>x=7&)-3!hS^psW*<&>pB|qO zC5K9s`rbgdXR>fXPHd`~}tVwP*?UKj} zBR18Q?o)xKrS!>xMu)^fn{=aQR3<^my$E9OXKF48XfDy8r_egQ4jikEOh)MKM7^BNzO)QszL-nJP3BZvLf zLP;Gaeo1|lr{C{(@O)!LxlYuq%^B0%_nvVA7^NCdmbqey!+{IQfvosLV9$WS4`*?n z`$h`IlCG7O;R||i&r7|xvhSw(ZPRzr!_kTSc;%@=hm((b+J^0dQa6;Y8K&RgE7qLq z+rjChj}v3-hf<%g z8?8S31scpI-8s7*FW`HkPuh$k(0hJoSmI4719}19bt-y4`PDHLJw}+Dz2_8@u}99A q-P?KT$Db74$!(m0MXjF0?PqdN?AKGi%o@JMxpl>DuG@&L8u>4o$F|J? diff --git a/libraries/filemanager-9.12.1/img/ico/gz.jpg b/libraries/filemanager-9.12.1/img/ico/gz.jpg deleted file mode 100644 index 36d159166e47d37b44fd4ed6dd800c2eca16f903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1718 zcmb7EdpuNG96$Hod3lWH65}z}jFeQXnPG}z8A+&Nrc$J0@-Bvv3aQ3!QlgDYeaPlf z5?fw9cGvcx6urIrc&iqxQh9$$W%gV)yZh&U&*z@cx#xGz{eFM1t87+22Mkvy7bk!q z03dJxP$MFPF2;Ip+TRaPNy@8kHG81 zO*ITtW76m}=KqGW3g9&04Pr6G7@#$i3;`$uW558`CqAma(JCAD43`Eeao)5>W%2iS>b!Ts@wZteVlM_ zj9DQZ(mQ{0q!;_M=QIAto^Q))oAvrg=}w*RqGi3S7w)MYP0qZs-7tvNJowO>UpcG< zK3Bb#VzwZyrmf=%y}8!ui(1AQO9>)+vYuI=?U7`*+eFOY@xZG5}fwnuTW zifL1vjuu=hd1WMm8ccBj=@3L^S_6z3Mj}%fI7gGs$2CthC5H1u4O)>=Lu*J`(^dwAg9 zn`=-a7iNhlDeAOD*ermAGc>h0v$#A6Wy=^F^^kKQUFZ??j$B zD?9haWcHZz!f*6r2jZ*!Gq0E5+hEHtlVi@oy+=1UAF8$s7U}+GDPeo$uVk)uF|er` z75vaJ-$?s?a9fkk?FEA2aWB*RKKhlfPW)(A9E9yn$=of9EBa98e*6Y;aH%zRm>a%W z9%ptUE$-aU%jCC0&2{`Qrwnh-|7G8ZL>(IQ|R9vS7&@~R> z8Wq4c`3eN*00x&Qkq(G`D|5cqo*idIoa^j-RCmShF|=6IIr>Ns&$uY(f;AG3-PH~3 z?@R1sFPjiK(0^AA zVBkECu$0Y}#t%s3sX29%;)$ANbSo0b5J83aTTpR!V#TPR&&iz?O?zHqhZ`Q>G;r+< z-SFNcBiF@YJVFufR?}_omZi4o&F!6#$YiQLNQAg4AOL4@ctVMk&6TGP1dt?EX*!=IdZXNJaxP1_c3b6))-Gab04 zf|IJEwrG3Lz$$Knd7`Tkq@2Y7@E=e4Pf`G6WN_^zQn?s%PN#)2AY)lYj8+|@B*}P diff --git a/libraries/filemanager-9.12.1/img/ico/html.jpg b/libraries/filemanager-9.12.1/img/ico/html.jpg deleted file mode 100644 index a1af20d076fc5c79e6db7996e79bfefe2f241a7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2152 zcmb7_dpK0<9>?Fc)?68yam%GN!xlPdh^?_>u;nf@qlC~5%{ikQxr@Ck_XvqI)seJK zbcS3qDzwEGC6}JLuBk}sq)z9-oHbL~XP^JhZ>{yL_g%mDeV@;cILWB_0agis*aZJ;L)5sb)V@YV2G9E=b!sB@jd z2avBG^o?L(EDpjGWRCy|-35~oG8)0W0&%N6sQ+bJfks|TlcoRw^zL!^wypj5f`^^5 zUa{=#vC4XtFLj02lefI|31S!+Rtx~JZf=n8wO*7|ZgqEESa*0I85jEHEEL0#3?K{) zA=uU9aR>&B2N0~TMc1HiWN}d%0?G3*nIL@=Yg7#9hXOT zFL;WMa@|j8rxl&r_i*P8s-&%Dqu`qz0ey+O>XT~le8Uy3`G0!3l(+Z<)Q9?X^N$!1 ztBcz6ZR5v0LfuWFgl=m=lf6lOU@vX*)A}fjt+vLSo=5!lNCr?sGYWtZ7y~PhzZT-=CL|LjsI36oLm}@pdBEx>lY=XZm!09 zD&e0>UE2k=|2UP|6ZK83$;vD5C&dgQsHosd*S5ACGY&cno$5-?;PbL|pcyqe<{dIiO!%kdzD@JBofP@`ehsa8(x=t2zxl+l@! znzrC49#kNr1l z5@(hIhtq}EF9rHzl#DdH*O2V`bZcmjYg`i5eZBj=e&8Ik?qM8xYApHC@IaJ-)g9oE zT8NBWbQu0kn$Oi6QkH%pUbDu|rv=xUiv+jh9A@lyJN=TqO<4PMcVKCIX;m=e^2_;| z-bRxoBV`XUhE)Jn_B_yU?sd`@5S^AfZj97TJu|oHEk3Z)`%~je{G^byLV3ZT&OW#s zX?{1Ckri*l!+XoX8O(BmYC>+#!G~GDX8sh-43U%;-MfA^Oy7U%+oDVQ&K>+@N!Yyf zX5;D1t#AImq2Xwx)^RoMcz^xoi8Cpu?N{#K@*HJ55A7#d8$2qV;}=g6N7!oL$$-|6 zvwYKQV;(ldch{aaCxmR#Nl(^#hGAFC3`@f4wyv-mG%h;AF*R zCG}*c+-kvhozE4Wx4dn4V#D`Q2doMPSazg|l62nB;WZ(do%mY73UnOb#|*2KSle>< z7792)qUK^s*I3%#p+fwA!{YNpSWGo8g?CSfMm`FO}F^dB-tpnq|pp`lUa5`;lz`s;FtVhLz$ zo>Me6mF_5A?R@gGdtFMBd)w&`ZUy=A-6r+Ho%wp{6C08_6VJ}UbNKzU;faHibUILu zdoDK2e}7BI)#2;{t-mYh%9b@A86O0lpt6&%mPJe$@2c@O%2XAN&Yip<4h$K7{4a$Z zDM$dS;;XW*NRktqM~$XC7Jep?H#qs?wl;!%QQ;?XhBfoH)tmPN}=* z*@jyKJL=;=Hz|Gat%Ai+UN9Jd`(G9^oz3N;6(jvDH|QcJ`E_cR!w-ASj=e6|j)Pnr zh1w?rz4k}l-(TMqT5Xm{x}EpeSW9Kmk@CaV-u^bTDF?eQ3Xi||WKIeh;X1JDCHC90 zr%Me^xyyh diff --git a/libraries/filemanager-9.12.1/img/ico/iso.jpg b/libraries/filemanager-9.12.1/img/ico/iso.jpg deleted file mode 100644 index 379f50667f68117eeaa2ced50fcc0ace9c45a143..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1496 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 IMcNzx1#lOing9R* diff --git a/libraries/filemanager-9.12.1/img/ico/jpg.jpg b/libraries/filemanager-9.12.1/img/ico/jpg.jpg deleted file mode 100644 index 8c771ca3c3e3c87d3eb8409538ccc6187ddd717c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1979 zcmb7Ed010d7QgSkY%GEI0*Gvx5D=BNOcIcQm4OI?AdG-4Wvc`T$|^x%6qk|@6gTBQ}GN)XB1Fc$jnocHeg?z`tZzq8%nQ4Op9 z18^^QPj`SI03h%Iswv>I?Lb^C06spz8UR28NKPCe!5!2BW4Hi7tI?H{%xY|9AEs8S zmVn*Pl(e{{xJ*$DE9xN2%XgbcQe1Kz%htxxhG(&w1S1gD4VX9rFhpIZ6(LioBpL>F zCh!=>{bwCULQtqzDS$Qxl{kjO`jz~}U^;8X9DvQr4{T#aLx#g;wN>?TQd_yyZ+d~( zq;oV2Tz=4GpHX%CMC;__=9ct@za4(O)}#IK&F_n(^1JfKkxiP$038gvAiF$NKl_z) z!oH8*OzU);k@>vLHV=qzt$Kv8U1bd`{%BPXHBr* zSoX%l6GpSOMoia@hVT3Wj)gvT+(XVwHypA0Fu3jSBNoG~ri!L^w+X53Gbe-Ga|zQK zi-EI8ilSQ&9h)hy4Y5zgvvNyA`i@p~TU0arYbx$!G>fCO{VmNxUdb=K`!X^L;?+Hw1MG%z0^jPK$HfJlB=dzp$?1nS4$PKTwZfq+fYJ;x0J`2AP z#r+{U{Os%@i@}(q-f4Mm@$9%@rZdF+D*+G`!)RK6f`qr4OfVp1K z3ZwRk;&By#0rJ)TLr_f`iTW-?RNYX5LDn3Rhorg;C$+AmP*_r*c^6VX^Uz)7_aAcv;)*I|?w`BmI&rapy8n}+F; zp^?FLTe349Lwf^CdX)i~B*|pFVcEdL?s$g7w6ZeLlVVy^(B$>P;FsX_p|0Ed+P^op z@p<^EJT>|9iPOdDpV@_<|J?K6Jte8>o}q$kUO%XSD1>A1^K?n>?w(h>VcD(JWk)Fp zd4<{tAk4V}j-OC0e~zqq9&q;i?>x=7&)-3!hS^psW*<&>pB|qO zC5K9s`rbgdXR>fXPHd`~}tVwP*?UKj} zBR18Q?o)xKrS!>xMu)^fn{=aQR3<^my$E9OXKF48XfDy8r_egQ4jikEOh)MKM7^BNzO)QszL-nJP3BZvLf zLP;Gaeo1|lr{C{(@O)!LxlYuq%^B0%_nvVA7^NCdmbqey!+{IQfvosLV9$WS4`*?n z`$h`IlCG7O;R||i&r7|xvhSw(ZPRzr!_kTSc;%@=hm((b+J^0dQa6;Y8K&RgE7qLq z+rjChj}v3-hf<%g z8?8S31scpI-8s7*FW`HkPuh$k(0hJoSmI4719}19bt-y4`PDHLJw}+Dz2_8@u}99A q-P?KT$Db74$!(m0MXjF0?PqdN?AKGi%o@JMxpl>DuG@&L8u>4o$F|J? diff --git a/libraries/filemanager-9.12.1/img/ico/log.jpg b/libraries/filemanager-9.12.1/img/ico/log.jpg deleted file mode 100644 index ec6d3e3f5f5b5ea808a90bb21ba75007d3802a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1765 zcmb7EdpJ~S82`>W=HfEzj7yVC84N|ca+{J%lyNJ=P>B>vshN#RROmu-Yh82MbYX`? zs8FNwL=>XvGL(|gkdlYUsKsNt9|x&p7WjWy?pO^-{1FspZKNt4M5k~JJ|yW z0sz7uAQk`{yD-j90GLdm4*(znD4qkPuo-3rs@Mwv%!R*eBDl!+xwph9o&~0^`$9QE zoQQxORR3`5I+mS75N8jEYGSa;z}SH9Om*558nAzlUm(>mj7~Q(_4D@&5O)Dv07D3j zKroEJ5+FE40=$$o0Y|_S2n0NdBu|!;ktfO$NhHOe6lLWoBo&gpjM}1~Nb+(d5=9aO zTP|5Ciy*QTB8f=(-w@veWFqhe5eTFOU^0Y|A#npx$I3?_2_!Xs1%W7yL!=-)W>xx^ zdd@0-1>_J2z$k)Z)IAxSQ`6dvnf^-5$Qb?UW4~eso>>i#ak*ICe=x%RwrYT!+s}+Q z03hs&L+pf*{DKKA^xtQm_+k;zT`!i}DG zzlsUgSTZ`;52f&s6oSd$Aceyd0E{d!TnV9M1&XE(3(Jm(8eGmIJ>z!3=q+&niBj9~PTHA58?m9z}$Yxt;<@u~F8EN$8fH~+hR zHmu;|d2?*xtzpq~MSs?KK|@ISzysbMX&=)Nwdl>s>i6Gd^*b2d(h1|Yn$;&?DLUhp z$M*8v5zygnUK8UuQdE7A-($fZrKl{t?D>3n=nGjZ^k#7t(#^~hhQ?G0O9o)$b9-<9ET?xD{X+OE$ZZ+!BsDD8Ycti>2;Ihd?Bbaa<)XUb{b z!;XHTDs6?pIU{}dqnk$kw`wb@WLs-m*@oMd9IJM|vv(`?oa|Y)fPPq#d&GL4(h}da z>%om@77dy3S~+Qh+2wEFo;69(9$J02G1=#FnV(|Y^*)A4Vu-cX_+RXf&mxD3lN)1V z-_u(6bq9NRg%1n(%ks{i;})%mUuVB}b3CF!TJq$WwxD2YwBZ+>&1jaME@Rh<-tvgF z%ulsC!s^-HrVnC(ZKp1ZbtsITvG1J>k%610q0yQ#)bBVo@9rmTcji0UT2oXqptO)% zuaM3xpEx-3Qo8*bU)i*SmD995<+klwy)Iw7vixUH)skLlAGs4T;<&|c&mGSz~t+C@%A3y8MOuUXAGQO(0GNoFg5VvC*OLTzw6@8X<-?`t zD^+XUokpK>^-dJY(=~7Dfm(xzqA(4x!7kY! zp9b{5PQzCR3BNGFNdbZ+xC9Vc6QG7hZZ>QD#;B~|yb8YHJHO~uNqox8(WOqqN8nhQ z2(DKhHMJ1G;YRjxl;WX;pb5SznVWvkjt#U8wBEqtTsL=n8O^{Mbvw_BE^{mYSlX9x zF1)E$aEU%dQFc&`*VG&Fs*iW|++anvke=!99ebv#;y%uxT0}7(ExeT5G;s7R>sg0;Tf8-%H+AQ{bIqHKT*OJTGTVly_in$NlplnuaV~1Dof7W5*X6#M Rx=kP#X|PH7&OB1w`8S?lY>xl{ diff --git a/libraries/filemanager-9.12.1/img/ico/m4a.jpg b/libraries/filemanager-9.12.1/img/ico/m4a.jpg deleted file mode 100644 index 5c6417c870d36a1433acfa810ec20ac75026b1d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1529 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 diff --git a/libraries/filemanager-9.12.1/img/ico/mid.jpg b/libraries/filemanager-9.12.1/img/ico/mid.jpg deleted file mode 100644 index 176cd71a923a95c591c6e0c5da3e88377952ed24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1630 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 Hp3V9%0{PkZ diff --git a/libraries/filemanager-9.12.1/img/ico/mpeg.jpg b/libraries/filemanager-9.12.1/img/ico/mpeg.jpg deleted file mode 100644 index 50f99ff0a74487f5478ecf274344071a182ac813..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1589 zcmb7DeK=HU6o2o%Gk3-`!@WMr(?&C95zYGWpqM2xRe)@DQ*8=4l$R?0>n?35C_ z;aRFFNs7VRNs(0Bl2E(JN5xYlTRuu{J=N@c$Flz2bD#IQ=f3Bj-}`%i=NwI&<_REH zt#Drf5Ci}OK0wnAM9ULon*dn78dw1Um;l)?12pKtD3}fx0BAlsv6GmOP541nQ1cns zd2fxCMadGw!?>Y4xT_?~-J)dCGVTIvCu>`4drz)=bZq#xXz3QNAR#ndDzFm@9W))l z6`%-)VhD<2C}kKOqYS6fFggQgFc>(FGni}^gE@tX<1Ag)6gHc~;V@Xbdb%7v=&~sg zm`-KFTsoVHGui*!G*GXQM?S*;qd#PQWxqce}P0tbr=i({+HBQnkRjG;mvvj~7d$!OTb zIdqhUV+>eC0YNTw(3gZjPE1&BgpPhZy^`1CpCf+yq9b8en(Dd#Ih`X5cGsuSF2pJG z8#(mrimSN;yHeCP@llNlqC}@}yQ>`s`kPK0?t5xp)^|NYK2*CXe)vlKdGFiPcMioF zhRLVeYHVWEG{O*<^x zr?*8IZI!0BxCpadC}9wc#v;cNsQQqAt`C!ihFmjSv5$0HYzAS(UtqUX;_DX@D*wJz zRoA*V`Pj9Ve>KBh&{022{lU22xt>J_Tz72_Ru%oVIrshNV=*js(($B}gC3I8BM$r# zW#zo8lKS1p>q?8|ip8_bd0vjHWlA&Uisrt?aJGYepniIA3x2#ymt%By`0C{xkD^!7 zsLGND&!$$qSn8U3Haj@^L`+x{f4gPN4(wIb`fj6?^nOB$-F

eCZ0wrm-f@}a>ynvifXXp@H=;Q@l= z3Pj=p?d_;0CHi%zHaIt@pZIjA)KqvW@>C>R$e0PUO-V|i@&3|cA|zKRCIlj>T$@hy zC(&)O&LoWU<-Ko~HCR>7$~5&5FV3R`=8g&cpT1yBU@@g`#@P9go(u8P!!#o!-^PgV z>VBxYtIuwxVtUwG#yd{?+;lBBjZ92Wb@i}wz5;}9O-KbPgcc` zGP?1zGQ^~1j+etVcIQ*_nGqiMTS%5=_OvHv-Bo|`e^TKfu=}myjf;DDdd0b^7do0Y QFchgdje#Jm3(ETNA2~qyvH$=8 diff --git a/libraries/filemanager-9.12.1/img/ico/mpg.jpg b/libraries/filemanager-9.12.1/img/ico/mpg.jpg deleted file mode 100644 index daa2bc4633d71a8205d00348edea30d4a8ed9345..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1532 zcmb7Dc~BE)6#sTN7a>b_MUG)m7EnQ@Gzm}yWdJEhFqq(xQaniH7{Vn;Vi9Uk6Q1Xuw8-~c2~1sKqSQD6sO08kw|x00>H=KL*m z&}aaj(sZ>dRh1ndNA1`{h0B6NQ&njy%ER5qUF7a1p~PwG_+4qr6iSfgB@)Fem7-YV zeGmjt1Vb?dMKP2%jET|4Vwka+Y!;i%X5l!W!L!1CgA{dDn^}rss4-?ZI%o>ZsHbYP*14eBT zlg&oxFM={KV;|r_2uffCT&Sdk;Pu*KqwMWg`4M57@9wV7wOBek*9jzHjP~AFGP_j-FDPEiSUrs(O!xWIE28jo`>g=ZQ;ye6xdGdwhv>VC_8*iX- z&zua)FL^91TsNGe)F5}C$WtyDbhitBJPT{0NPu7%a~^S!5E5HJ5tag>D8N(@h9LgP z^f~TCW!Ejg6`y5z%CEVRW;KiqBY+tkNGJ@HJ=YU-kOe4((FpA1jBz@kKv8JQYw(}gZ#p_Q}HQ?_BFV#ogW zHzcwA(SKx1LR%cFe2%t`I46Ez)!h7Y`}^D%XTuHM<0l=9?c@%@Q-;Cy!H0fos`Dys z9vF=1ROZEnY0|Cl+smtqt|W4kv)cpw+*Wm0#4G;ndEGPSUbMg6ZjJn?OaInMnZ)<6 z&DOrjV!znOl~z$NPv?Zb+2t+oJ6fB!*eU;!-n^vj=bNkhR}nK@7nU7Tlq$2U(QE^F_79N1k?hCvfk<%A%UYXP$`Ja(3UpI6zyHJit%@xsguQ7 z`W)t}T|GQ%e^{~f;4o8CqFz@$ZLd8xQ=j3?>rP0s6|@E=$E-={FqBs^@J*|uYr;_f zsL7t@2U(*hh9-v&jk+8zu%8l&hhUQTM_`9!&0)R&{W`nS|MI=43^JW1~Fi8ax zLP3Di)D*2cV(ReIz41>uU&Y=ptORY;ZvDsSo%|u%9*XXNV1SSW1t9pX;)oHx8OPV_ z4&zB!X?~{d!)cS`D4J8oe5{F6r67=slqoXi_#|ekMKddT{RcO`&^LrjqB?SwJ>?Pj z!hO%{)XWoA`QJLZ-quIwW}7L-bmalMwd?IyE$$ViT)iyxtk!(d{3$9k+iLZ>OZ_jM zE?SFwk0}Xf$+&`7Qzpz=bHK5;qh=?!@%1*HbA5w;dcX*_?M&20p0$o`YPoKwh%xs5 E3(f1;z5oCK diff --git a/libraries/filemanager-9.12.1/img/ico/odb.jpg b/libraries/filemanager-9.12.1/img/ico/odb.jpg deleted file mode 100644 index 1a4157e4570faf5b2e20efaff272e816ae735290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmb7EYfw{16yAGpZW8h!2>~OBlAuMzS3*Rwib+6-APAz>QHllvlvqXN9mHCSJQWZX zOMDGMsE=4HXrVz-p^Ohi6tpTbMU*O5r3Mg85l#1kqW#ey{qF4S&Ys=xeCOPA)^yL* z0oXoX-d+Gf06^deOb>z7Gf5QzfS(_50sv3}lBohDxPn$-0|x+TF*>@FT#Svbg9xMP z9hl`G9jDr$N)8X>hpPEL0iN;=swfp-JY((*=NT@(eDA2Z@R+EO^?YHHQZy&jRTS!C zY6BhsMKBaYP!vN6U^qsAOd?Tm3YkKokeN&tl|f@s=~O0@X3nKEcuXdfLNjNXGg%BK zlSh!i>%>huhS7OcCYATUVX6ZhDhL9}7-A1l4uWwIQ#}|5!^aQ^BE%8kWC{sEsnBRm z>|>vp03bmT6w`gcfZHe=W5e|6^4Iji`4jAK?lFPv$ky1V;Ju%p&YRaQnWkFf=l)8| zC?7e6L}&hd)$hgyyTYzuh2AHj?_^c;)_ESQrVplf>aQ@XFOD385+5|Lx1uU*>&DYv7yNmv zYmg_e29(*Ah37KGiDhl{#IKBTK5aoZnh3Y-$J3HF9*n1kpB}%5|NT6M`Ic?A$#c*D z{h;gFV%L>b>dsbI-=Klzwl!J3$&pQdmvY9MT|Zm-#JH8v$RPw`B}>XPmY~ z6I#@CI3?KxAp0Z^K}VvDk^=TSIm1MgKw71ClkiB1n6P1!E~{l+hC`to=Ft-6g2a%D$`|R;hqb;*kxwgPb#LE%(KN*|rF3$gUPUkHcX?wwr6_7le*4T2 zs|MeUy9(M`+HcvX{J)-@Yb9VbE*i4h5Ey)5aR2!lEXV{7S!n_^4F{jA!;CGvN-sIR zogK6FxWl9!er20aR*cDe(`Tc!%3kb$bb?;$7C-Q)Az35!T-#EV{;v9XCud93Wwp#Z zBGy}RaCO96pXHIO=gy2f7hmamM{N46M~IXSzz7J)7bs}&7bu3XHdMhkqMaBfhvPnyo{ z$kC$WG`F-cOZJ|7-JaPAofBW(JIPmaNqM#W;<)Xv`+diz@Ix22=Uvra6qdIL3|W>7 ztr?3V$c~1U3!Xm4w+%U3o^9xJaoW+!8|Ntbs_wKpDdR9hF`?y#{;41d6agbr-@Q~?tH zu|J_c$W$N@ic+=G07H+We1sFeA`pwU^Ky3g3 diff --git a/libraries/filemanager-9.12.1/img/ico/odf.jpg b/libraries/filemanager-9.12.1/img/ico/odf.jpg deleted file mode 100644 index da290dc7bb3c8b1bcc85a9d1dc48743d221b9517..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1760 zcmb7Ddo+}37=OR-o0~FY#-%YX?F=d`nn7~utYM~U5r#I}!&=w25sJ*ZER~aJw-l1( zQsYt~vB+iH)RJtZGDo{zs9X|TZ4Fi}soD1{)SmropYOcqd(Zp4&-47=-}8Hvca#Hw z?kaK-0R#a6fgex~0{+@~$z}lD-GM0pfC7+o2_V27^a35Y06=Bv!bzeGTiE;IPUTx* z?YTWx5-CXx3uOlEoDLZvYOw<+5Ig97|OB8C_Ml!0IjMA;5>;qxIjoP&8Ik`Mx!f zfe!3rA0R*wWaT}e3Xf4bMu+sBITSDn{~y`ii@i3>O0J2{ORrW=-e{8j@#S#W262nA zz>NR?mTR)TFlX$AuxqlqvVZ3JsQp;8hqKyz~uRI0QpF4i6wG`F$h+ z1R{!&5C-6?vw3_caUcXkfiMvw`c~WZdE+?4v5r)h?5nc(NFRUXhLQ7~xO$Aq%8mUsBB+-_lyB)$VCFrfvt}|nd6@RZKSQ-~`-FtaJ@N zt#awlQ`6bq_FeVDE^C*!d#>uN+kV{B`NA2S7Z|ywugT);6LFVzK%hnp0J}_BfQjo0 z#Rv=y4wt8{Wyu#rr@TW7xpqXJ4gE5)Tp*gwk58`Pl<8YsY9CmcTgbb7;Z$c~Q;1Zb z2((9TFAAS=FA2^XC`gHPgaww(75LB&1jQJT4i48+T~mv}7ER#j|!$ad}h zbt1pH#jb+!+GV*_Z*%mUs_#!u1q_+=yJ?t?v<3ERM?N1dJe4Wqh+>rh*0H7I4?&2k zi?BJ$p?nE|p-$A`7zAk=a(R}{VlVHI=vpl&fp9}$aLkUBV)@`)8%U1mG)qTvdTDfg zDp@PIf04=qTSH&}!okzuI!jYJt{?W09MoxEn>{4mFKnppJ)1mG+FIUV^7oK`LcQ0S z8E2^y*m;|VF$+De^^N!$UnWS;vIkZl@_gl!0SL*$>3}1e#j={!-2J|`iqzNcyn>0b zBs0-Y*H=M_=Q|_?v+EAOsfk%hu5h_Z8}Qii-N@pb`TWpxCB{Rhw_~=_PqyonTM>30UN$<0(4RNv3Z5M`j4VJAImD*53yl5@lF)@4s@6w~6m z2{RV4m}f5E6@Ya*sYL7TZ%Znd!zJ`=)EJ1=Y*cv@=;QsLH+x zC#vUJdo8uny$yx>2&wL+~|2= z$Uoa<(h;J2H`@U3{=df>*qM9JPhn2E>+ZQdd^#J~CPw@qO(=c_ha0Wndj(~+$`^!B zm*e!>^nH?5-GM4>jTC-=nhoXE-%$WA$DYHv36$hq5iT_QNrQkbxwaVWQ5iW7M zJb%*_k0kdo=BCmJvYzJFy(iOl)^evvucVs0j5B`Fym92E`7J!<3S7|$i8QZgd^BNW zxIC|*lwx{xR;^+jc4nb1^x0KU5ATvWkq?qTXR)Ei3_)BbXr z4X;0cpw@wAl^0GQ9Ij8Vj0vc~^p+6{6nz~I5yeGmDE;80T7tjZsnGZ+!ISGphYhuc Z4$#L_PgjO4k@_VX812q>-|4Bm`w!SQM)d#y diff --git a/libraries/filemanager-9.12.1/img/ico/odg.jpg b/libraries/filemanager-9.12.1/img/ico/odg.jpg deleted file mode 100644 index 1a4157e4570faf5b2e20efaff272e816ae735290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmb7EYfw{16yAGpZW8h!2>~OBlAuMzS3*Rwib+6-APAz>QHllvlvqXN9mHCSJQWZX zOMDGMsE=4HXrVz-p^Ohi6tpTbMU*O5r3Mg85l#1kqW#ey{qF4S&Ys=xeCOPA)^yL* z0oXoX-d+Gf06^deOb>z7Gf5QzfS(_50sv3}lBohDxPn$-0|x+TF*>@FT#Svbg9xMP z9hl`G9jDr$N)8X>hpPEL0iN;=swfp-JY((*=NT@(eDA2Z@R+EO^?YHHQZy&jRTS!C zY6BhsMKBaYP!vN6U^qsAOd?Tm3YkKokeN&tl|f@s=~O0@X3nKEcuXdfLNjNXGg%BK zlSh!i>%>huhS7OcCYATUVX6ZhDhL9}7-A1l4uWwIQ#}|5!^aQ^BE%8kWC{sEsnBRm z>|>vp03bmT6w`gcfZHe=W5e|6^4Iji`4jAK?lFPv$ky1V;Ju%p&YRaQnWkFf=l)8| zC?7e6L}&hd)$hgyyTYzuh2AHj?_^c;)_ESQrVplf>aQ@XFOD385+5|Lx1uU*>&DYv7yNmv zYmg_e29(*Ah37KGiDhl{#IKBTK5aoZnh3Y-$J3HF9*n1kpB}%5|NT6M`Ic?A$#c*D z{h;gFV%L>b>dsbI-=Klzwl!J3$&pQdmvY9MT|Zm-#JH8v$RPw`B}>XPmY~ z6I#@CI3?KxAp0Z^K}VvDk^=TSIm1MgKw71ClkiB1n6P1!E~{l+hC`to=Ft-6g2a%D$`|R;hqb;*kxwgPb#LE%(KN*|rF3$gUPUkHcX?wwr6_7le*4T2 zs|MeUy9(M`+HcvX{J)-@Yb9VbE*i4h5Ey)5aR2!lEXV{7S!n_^4F{jA!;CGvN-sIR zogK6FxWl9!er20aR*cDe(`Tc!%3kb$bb?;$7C-Q)Az35!T-#EV{;v9XCud93Wwp#Z zBGy}RaCO96pXHIO=gy2f7hmamM{N46M~IXSzz7J)7bs}&7bu3XHdMhkqMaBfhvPnyo{ z$kC$WG`F-cOZJ|7-JaPAofBW(JIPmaNqM#W;<)Xv`+diz@Ix22=Uvra6qdIL3|W>7 ztr?3V$c~1U3!Xm4w+%U3o^9xJaoW+!8|Ntbs_wKpDdR9hF`?y#{;41d6agbr-@Q~?tH zu|J_c$W$N@ic+=G07H+We1sFeA`pwU^Ky3g3 diff --git a/libraries/filemanager-9.12.1/img/ico/odp.jpg b/libraries/filemanager-9.12.1/img/ico/odp.jpg deleted file mode 100644 index da290dc7bb3c8b1bcc85a9d1dc48743d221b9517..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1760 zcmb7Ddo+}37=OR-o0~FY#-%YX?F=d`nn7~utYM~U5r#I}!&=w25sJ*ZER~aJw-l1( zQsYt~vB+iH)RJtZGDo{zs9X|TZ4Fi}soD1{)SmropYOcqd(Zp4&-47=-}8Hvca#Hw z?kaK-0R#a6fgex~0{+@~$z}lD-GM0pfC7+o2_V27^a35Y06=Bv!bzeGTiE;IPUTx* z?YTWx5-CXx3uOlEoDLZvYOw<+5Ig97|OB8C_Ml!0IjMA;5>;qxIjoP&8Ik`Mx!f zfe!3rA0R*wWaT}e3Xf4bMu+sBITSDn{~y`ii@i3>O0J2{ORrW=-e{8j@#S#W262nA zz>NR?mTR)TFlX$AuxqlqvVZ3JsQp;8hqKyz~uRI0QpF4i6wG`F$h+ z1R{!&5C-6?vw3_caUcXkfiMvw`c~WZdE+?4v5r)h?5nc(NFRUXhLQ7~xO$Aq%8mUsBB+-_lyB)$VCFrfvt}|nd6@RZKSQ-~`-FtaJ@N zt#awlQ`6bq_FeVDE^C*!d#>uN+kV{B`NA2S7Z|ywugT);6LFVzK%hnp0J}_BfQjo0 z#Rv=y4wt8{Wyu#rr@TW7xpqXJ4gE5)Tp*gwk58`Pl<8YsY9CmcTgbb7;Z$c~Q;1Zb z2((9TFAAS=FA2^XC`gHPgaww(75LB&1jQJT4i48+T~mv}7ER#j|!$ad}h zbt1pH#jb+!+GV*_Z*%mUs_#!u1q_+=yJ?t?v<3ERM?N1dJe4Wqh+>rh*0H7I4?&2k zi?BJ$p?nE|p-$A`7zAk=a(R}{VlVHI=vpl&fp9}$aLkUBV)@`)8%U1mG)qTvdTDfg zDp@PIf04=qTSH&}!okzuI!jYJt{?W09MoxEn>{4mFKnppJ)1mG+FIUV^7oK`LcQ0S z8E2^y*m;|VF$+De^^N!$UnWS;vIkZl@_gl!0SL*$>3}1e#j={!-2J|`iqzNcyn>0b zBs0-Y*H=M_=Q|_?v+EAOsfk%hu5h_Z8}Qii-N@pb`TWpxCB{Rhw_~=_PqyonTM>30UN$<0(4RNv3Z5M`j4VJAImD*53yl5@lF)@4s@6w~6m z2{RV4m}f5E6@Ya*sYL7TZ%Znd!zJ`=)EJ1=Y*cv@=;QsLH+x zC#vUJdo8uny$yx>2&wL+~|2= z$Uoa<(h;J2H`@U3{=df>*qM9JPhn2E>+ZQdd^#J~CPw@qO(=c_ha0Wndj(~+$`^!B zm*e!>^nH?5-GM4>jTC-=nhoXE-%$WA$DYHv36$hq5iT_QNrQkbxwaVWQ5iW7M zJb%*_k0kdo=BCmJvYzJFy(iOl)^evvucVs0j5B`Fym92E`7J!<3S7|$i8QZgd^BNW zxIC|*lwx{xR;^+jc4nb1^x0KU5ATvWkq?qTXR)Ei3_)BbXr z4X;0cpw@wAl^0GQ9Ij8Vj0vc~^p+6{6nz~I5yeGmDE;80T7tjZsnGZ+!ISGphYhuc Z4$#L_PgjO4k@_VX812q>-|4Bm`w!SQM)d#y diff --git a/libraries/filemanager-9.12.1/img/ico/ods.jpg b/libraries/filemanager-9.12.1/img/ico/ods.jpg deleted file mode 100644 index 1a4157e4570faf5b2e20efaff272e816ae735290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmb7EYfw{16yAGpZW8h!2>~OBlAuMzS3*Rwib+6-APAz>QHllvlvqXN9mHCSJQWZX zOMDGMsE=4HXrVz-p^Ohi6tpTbMU*O5r3Mg85l#1kqW#ey{qF4S&Ys=xeCOPA)^yL* z0oXoX-d+Gf06^deOb>z7Gf5QzfS(_50sv3}lBohDxPn$-0|x+TF*>@FT#Svbg9xMP z9hl`G9jDr$N)8X>hpPEL0iN;=swfp-JY((*=NT@(eDA2Z@R+EO^?YHHQZy&jRTS!C zY6BhsMKBaYP!vN6U^qsAOd?Tm3YkKokeN&tl|f@s=~O0@X3nKEcuXdfLNjNXGg%BK zlSh!i>%>huhS7OcCYATUVX6ZhDhL9}7-A1l4uWwIQ#}|5!^aQ^BE%8kWC{sEsnBRm z>|>vp03bmT6w`gcfZHe=W5e|6^4Iji`4jAK?lFPv$ky1V;Ju%p&YRaQnWkFf=l)8| zC?7e6L}&hd)$hgyyTYzuh2AHj?_^c;)_ESQrVplf>aQ@XFOD385+5|Lx1uU*>&DYv7yNmv zYmg_e29(*Ah37KGiDhl{#IKBTK5aoZnh3Y-$J3HF9*n1kpB}%5|NT6M`Ic?A$#c*D z{h;gFV%L>b>dsbI-=Klzwl!J3$&pQdmvY9MT|Zm-#JH8v$RPw`B}>XPmY~ z6I#@CI3?KxAp0Z^K}VvDk^=TSIm1MgKw71ClkiB1n6P1!E~{l+hC`to=Ft-6g2a%D$`|R;hqb;*kxwgPb#LE%(KN*|rF3$gUPUkHcX?wwr6_7le*4T2 zs|MeUy9(M`+HcvX{J)-@Yb9VbE*i4h5Ey)5aR2!lEXV{7S!n_^4F{jA!;CGvN-sIR zogK6FxWl9!er20aR*cDe(`Tc!%3kb$bb?;$7C-Q)Az35!T-#EV{;v9XCud93Wwp#Z zBGy}RaCO96pXHIO=gy2f7hmamM{N46M~IXSzz7J)7bs}&7bu3XHdMhkqMaBfhvPnyo{ z$kC$WG`F-cOZJ|7-JaPAofBW(JIPmaNqM#W;<)Xv`+diz@Ix22=Uvra6qdIL3|W>7 ztr?3V$c~1U3!Xm4w+%U3o^9xJaoW+!8|Ntbs_wKpDdR9hF`?y#{;41d6agbr-@Q~?tH zu|J_c$W$N@ic+=G07H+We1sFeA`pwU^Ky3g3 diff --git a/libraries/filemanager-9.12.1/img/ico/odt.jpg b/libraries/filemanager-9.12.1/img/ico/odt.jpg deleted file mode 100644 index 1a4157e4570faf5b2e20efaff272e816ae735290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmb7EYfw{16yAGpZW8h!2>~OBlAuMzS3*Rwib+6-APAz>QHllvlvqXN9mHCSJQWZX zOMDGMsE=4HXrVz-p^Ohi6tpTbMU*O5r3Mg85l#1kqW#ey{qF4S&Ys=xeCOPA)^yL* z0oXoX-d+Gf06^deOb>z7Gf5QzfS(_50sv3}lBohDxPn$-0|x+TF*>@FT#Svbg9xMP z9hl`G9jDr$N)8X>hpPEL0iN;=swfp-JY((*=NT@(eDA2Z@R+EO^?YHHQZy&jRTS!C zY6BhsMKBaYP!vN6U^qsAOd?Tm3YkKokeN&tl|f@s=~O0@X3nKEcuXdfLNjNXGg%BK zlSh!i>%>huhS7OcCYATUVX6ZhDhL9}7-A1l4uWwIQ#}|5!^aQ^BE%8kWC{sEsnBRm z>|>vp03bmT6w`gcfZHe=W5e|6^4Iji`4jAK?lFPv$ky1V;Ju%p&YRaQnWkFf=l)8| zC?7e6L}&hd)$hgyyTYzuh2AHj?_^c;)_ESQrVplf>aQ@XFOD385+5|Lx1uU*>&DYv7yNmv zYmg_e29(*Ah37KGiDhl{#IKBTK5aoZnh3Y-$J3HF9*n1kpB}%5|NT6M`Ic?A$#c*D z{h;gFV%L>b>dsbI-=Klzwl!J3$&pQdmvY9MT|Zm-#JH8v$RPw`B}>XPmY~ z6I#@CI3?KxAp0Z^K}VvDk^=TSIm1MgKw71ClkiB1n6P1!E~{l+hC`to=Ft-6g2a%D$`|R;hqb;*kxwgPb#LE%(KN*|rF3$gUPUkHcX?wwr6_7le*4T2 zs|MeUy9(M`+HcvX{J)-@Yb9VbE*i4h5Ey)5aR2!lEXV{7S!n_^4F{jA!;CGvN-sIR zogK6FxWl9!er20aR*cDe(`Tc!%3kb$bb?;$7C-Q)Az35!T-#EV{;v9XCud93Wwp#Z zBGy}RaCO96pXHIO=gy2f7hmamM{N46M~IXSzz7J)7bs}&7bu3XHdMhkqMaBfhvPnyo{ z$kC$WG`F-cOZJ|7-JaPAofBW(JIPmaNqM#W;<)Xv`+diz@Ix22=Uvra6qdIL3|W>7 ztr?3V$c~1U3!Xm4w+%U3o^9xJaoW+!8|Ntbs_wKpDdR9hF`?y#{;41d6agbr-@Q~?tH zu|J_c$W$N@ic+=G07H+We1sFeA`pwU^Ky3g3 diff --git a/libraries/filemanager-9.12.1/img/ico/ogg.jpg b/libraries/filemanager-9.12.1/img/ico/ogg.jpg deleted file mode 100644 index e20ab2fcba8688bc85b520c7c8e54c8cb0870f52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1557 zcmb7EYfuwc7`?lj$0EdJNkUK=yP=|tA|{bXd1yc-0)h<#MFhnpfEalUp%f9Vg<{3l zN~N@lDWVh~o$81+GNK?l7%a6Y4l)6;f)BtNCfWQY>9)WU@DWSA zJbWzo!AgK47>Xe%ilJ0sbc_lH&4x*5GMG#zgT-PKb~D(xEzV+bXL4=r1S~i;V-9;J zi*3hZ38*HpoT{|NFk1o6!Ug|3EDeCbK^(}%5NCiA2u2_lJ(vTxj{%I*U^*B~93t6J zNhlvA{%(@SMCl9+w{!wKScGyg4ivEEN5dF7T|V{Yx~A36b=ZF^wz8`9p;;2?(C;R1 zxdWG`o9jLOdlQakIqVoY^nMXHyW*e%pr+%CgSFi!Hk=-NU4K&7OaJq4gG-zJ{Jb|k znUIQ*0}zY`$yj0ND2;(&OcCx42)P0h!XZ(Fj!rC>CVp%G)O^mUI{>)+jWtVjnfm>z zul0$}cHY_xk+WpYf_rt}4bTi1qQ38KKRc|iEPSscFQ}>L(DTT1UJ9jQ)9-hUU%n_d zhMu3_EQ|g;vGUfhCNJ$xef8G($&q>WQb=b$0qH;jn3WES(dYoN=aPYh&{-t*3|OI= z;soWBBBPlLIn^#$O4QEXt?KoiSCqLSfn+mlI4n$}%Umf~&PVzSo|lBJ%3vJU#1AyZ zZ9lGxpM6;6>1253#al8w_!)$pM*wI6Kx0}V5r_%w>C=!N0aJh|1vruY$KEyWA64u5 zJ|?4M(TssBV^!T%H@8gee6i=#phh|4^xd4`lw!f{)w1hec}c-pyJb6e9EB*0IFwrv zI+H#P15p5tfG|Q)1jkt%nDzO2o?M~)<*nijDLOH?C0SSchCO%CyZPT|!N5q~PjLhl%fj2H0PiBbARksh|i@O^_)@pTEQ%4yUF%(zJm&0ZRb)Au zhkGrar2Cq)heAG4=Mi?0xHJ{;cfxF4M4{l|^2Uv58JuX7Z2qzasr=H@+1l zytL_W-}6PP|j1@i(f0xGP=;=Fvhvw%%Edp!}hrY`L%8+9Bx;^zK%uP&c{F@&qC$+EAPi6!= z9#s6)A?_m_Ug%52TpkwddURN~k>7jS^}wvTH?&)lTo&|%^kog^@vrf2G$nKuE)Ez^ lY%te7Rb@%$qsyo0)s(es`YYfuavE z)~s?}1rP)P1U^8~5BSczq#*#fxd9^p00kfkQb2$sm<0=90|3oK=f1?`VRK`VGO3sX z%iJTjOSed4B%9blyV+|zoL#m^!=-F<6B`pV6N`0h*YNFj6hoDP5iw%F+YIVgFgYuDdr`_;d7;yq6grgrY}>O>TJQL# zib0D{SoP&ec~C>|vU--A-P>A`?FT;->7aFoC~53&h;bJGc2SD|8F_O0<_etx`^|jg zQ`-A<>RWdkw_C@Lsc8n}_Bei9@>R7od}BJKw+IJ-1PCN-mK^L56eHjqF3*gp&eY%w z93y4ZETM`kk&$j|1z5yUbqwf;noM9NihTCPz3dbjSNV>{M?a)DvPUM0&lOawxhEH_ zrW>Zbs%(ZB1~VAs&#EwuK~(3O&DY@Q@%Xb4s1jo0(GsifeCiP!?e^1slJ~`R79Z5V z^WQ#TqdQh9*xMub2+%up*3Xuibz`q($Y2gF@3#_{n0*k&k^!Je5h88gCmCAX;Lkp#xH9Yhe~|*w_a$udve$E_HFvry^@P6VR+VJ>|KZB52X%!Op_I$ zCO4aEWsz~IO7ls-i_89I*X|cdlSUm{67q>)qEAy|YS~cD$rrJ&=}u`A#XeyncJ@0H z-qujUhSfai4H@NqDntc%Y9Mz{44eqn)LHY8m3FG=55ofzFMQ9k_|ikE$Aa!G%sgNj zYmJV#ro3Yg_jvy4{;XWe$hXYZztCxscKU-bpo1qV&Yr(Pa4OOu_t5oU``4zjmK*?G4%Z?a5?C*8ro3ZPggiCk1>`lD# zD9%$Hf*dc9FaKie8DB=(~6BVgEp9^N_SL=86XiWB_u>{ho> zc(Faf3iaXYMVVw}HZ8>e_Q+=EJYFidFl5uFct> z(G|yD!I~c|X=F4t4*9jMEfgU#JHbmQ+Y|3wN`7osy70etBfCjH_fb3Vdxu!n_;>; z3|J8x?$_n*uRB1l9q999vYM_uDR-I3AIUMUO)z0;^{Bt{?)0N-pZB!(Z1}(~w3!?z YzC{g4`O>ny8r+H diff --git a/libraries/filemanager-9.12.1/img/ico/otp.jpg b/libraries/filemanager-9.12.1/img/ico/otp.jpg deleted file mode 100644 index 802e78ccdd971db4d8429b0bd900befb86351b75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1870 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 diff --git a/libraries/filemanager-9.12.1/img/ico/ott.jpg b/libraries/filemanager-9.12.1/img/ico/ott.jpg deleted file mode 100644 index 1a4157e4570faf5b2e20efaff272e816ae735290..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1748 zcmb7EYfw{16yAGpZW8h!2>~OBlAuMzS3*Rwib+6-APAz>QHllvlvqXN9mHCSJQWZX zOMDGMsE=4HXrVz-p^Ohi6tpTbMU*O5r3Mg85l#1kqW#ey{qF4S&Ys=xeCOPA)^yL* z0oXoX-d+Gf06^deOb>z7Gf5QzfS(_50sv3}lBohDxPn$-0|x+TF*>@FT#Svbg9xMP z9hl`G9jDr$N)8X>hpPEL0iN;=swfp-JY((*=NT@(eDA2Z@R+EO^?YHHQZy&jRTS!C zY6BhsMKBaYP!vN6U^qsAOd?Tm3YkKokeN&tl|f@s=~O0@X3nKEcuXdfLNjNXGg%BK zlSh!i>%>huhS7OcCYATUVX6ZhDhL9}7-A1l4uWwIQ#}|5!^aQ^BE%8kWC{sEsnBRm z>|>vp03bmT6w`gcfZHe=W5e|6^4Iji`4jAK?lFPv$ky1V;Ju%p&YRaQnWkFf=l)8| zC?7e6L}&hd)$hgyyTYzuh2AHj?_^c;)_ESQrVplf>aQ@XFOD385+5|Lx1uU*>&DYv7yNmv zYmg_e29(*Ah37KGiDhl{#IKBTK5aoZnh3Y-$J3HF9*n1kpB}%5|NT6M`Ic?A$#c*D z{h;gFV%L>b>dsbI-=Klzwl!J3$&pQdmvY9MT|Zm-#JH8v$RPw`B}>XPmY~ z6I#@CI3?KxAp0Z^K}VvDk^=TSIm1MgKw71ClkiB1n6P1!E~{l+hC`to=Ft-6g2a%D$`|R;hqb;*kxwgPb#LE%(KN*|rF3$gUPUkHcX?wwr6_7le*4T2 zs|MeUy9(M`+HcvX{J)-@Yb9VbE*i4h5Ey)5aR2!lEXV{7S!n_^4F{jA!;CGvN-sIR zogK6FxWl9!er20aR*cDe(`Tc!%3kb$bb?;$7C-Q)Az35!T-#EV{;v9XCud93Wwp#Z zBGy}RaCO96pXHIO=gy2f7hmamM{N46M~IXSzz7J)7bs}&7bu3XHdMhkqMaBfhvPnyo{ z$kC$WG`F-cOZJ|7-JaPAofBW(JIPmaNqM#W;<)Xv`+diz@Ix22=Uvra6qdIL3|W>7 ztr?3V$c~1U3!Xm4w+%U3o^9xJaoW+!8|Ntbs_wKpDdR9hF`?y#{;41d6agbr-@Q~?tH zu|J_c$W$N@ic+=G07H+We1sFeA`pwU^Ky3g3 diff --git a/libraries/filemanager-9.12.1/img/ico/pdf.jpg b/libraries/filemanager-9.12.1/img/ico/pdf.jpg deleted file mode 100644 index 2080921c1ddef54ff2d192666250b86b47707fa4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2050 zcmb7FdpJ~U7k~HObHmUKMsi9sZXu=_m*VSU-0zo(N)bkeCPTnwV%D8wcquu{r-Nxwbr}E{o-LjaLW9>Aa;8U-ro4FFsWudW;~Mpk_X&E9>R#p}-Ew@Hab`9zhB_Bc4 zC7Eb0mPo)6i2t{Vn*o^syufh;QUfpu~zdX&dGfqo1VqF9O{@(HB8AEr@ih*7dOZzPuQ!* zGva*Gj?`H0HjGvsR4RP{@HMk9tvY`*PG}SxGb;&vtN`B3?$79SIkb8^jH6xJ3pkkl88m0H0C!3Y_H1vr|# zB2|rvH@Dz~D^Ltr>{D4K)ypVR!Ofum?CJ@n@TVrYeY71za+jO826c20DN4Qjo*R#K zjSsHBai_L8cin#W%;_Y|!WAa}>743A|N5}mNGe=xH*N2fW^#8>N4JpPOJ{X|#B8*D zc-he6--RK>GH>suotQ+|ZvS5|)?HkD{6%`u_w+k3bwORUaCr|m*u63(&*cK%?zQ^V zrALBJdxwG0EQVChO^vJW&7~Tx-J>WcH3=sS+HotCfP@pk$WyU2HKsZ%e3=F;p|Nlx z_^_#6!M=vNYLRs8lKcJme8)qAsNB-#*4pTwvt3JE2M>w7=CE4h-2u8+;(`t8gN~v* zn2;o@!8kl3`)v<&N-$V5kXN8Fmg`R*`-UQKSTLtYKfYW!h&BY9f0 zL-(_7!Gf>i8H!Fm=FcsgKb_Nc7&!2t$Uf2A_S0!s?(+jKHz)MUU)|q4kTF}{)*F4z zPHMtBRS+iNu>Bct!}xiR3;QTa9k+X|&y}gSjvonWq_h;Y{9Ldvx%|8QPdynatI_zfHoAekG@{evGS`1S%4pI2)4bNu zkCE*MDLcDzBNAQ?d7)*{BB3*mU?6mkzLfzY0~(WIjy5YNyqe`#($q7vGFfJ{MHP+o z7!tk{(yJ|2-@NJeqO;u{Wse5q3vKoz8uJzXMS9m?8`d^{myQzA(NE*`!>u4DYr#r z%H-XA%9eYpB5%PrOi5PjKi$SBLuOfHcW%AUXy41##=WR$9$~6k{?6<4D}FV3roXYo z_C?&Jnot=dpx-$x%BxfL>`mIZDRn3Y1+qgq&^&s`2PBEty_?-MTND|?`Cepj+OrNInQEV#+=<&QO*PV zNo$SHx)bnxd7shz(UFpE*DOsPmpq)L+BLI%nC8iTGkiv9&H2rKCMF(o^%;6|-d3vA c@aHkR&OiOwlJa4%n;AAy)jzAKAVNIwUy^9o$^ZZW diff --git a/libraries/filemanager-9.12.1/img/ico/png.jpg b/libraries/filemanager-9.12.1/img/ico/png.jpg deleted file mode 100644 index 8c771ca3c3e3c87d3eb8409538ccc6187ddd717c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1979 zcmb7Ed010d7QgSkY%GEI0*Gvx5D=BNOcIcQm4OI?AdG-4Wvc`T$|^x%6qk|@6gTBQ}GN)XB1Fc$jnocHeg?z`tZzq8%nQ4Op9 z18^^QPj`SI03h%Iswv>I?Lb^C06spz8UR28NKPCe!5!2BW4Hi7tI?H{%xY|9AEs8S zmVn*Pl(e{{xJ*$DE9xN2%XgbcQe1Kz%htxxhG(&w1S1gD4VX9rFhpIZ6(LioBpL>F zCh!=>{bwCULQtqzDS$Qxl{kjO`jz~}U^;8X9DvQr4{T#aLx#g;wN>?TQd_yyZ+d~( zq;oV2Tz=4GpHX%CMC;__=9ct@za4(O)}#IK&F_n(^1JfKkxiP$038gvAiF$NKl_z) z!oH8*OzU);k@>vLHV=qzt$Kv8U1bd`{%BPXHBr* zSoX%l6GpSOMoia@hVT3Wj)gvT+(XVwHypA0Fu3jSBNoG~ri!L^w+X53Gbe-Ga|zQK zi-EI8ilSQ&9h)hy4Y5zgvvNyA`i@p~TU0arYbx$!G>fCO{VmNxUdb=K`!X^L;?+Hw1MG%z0^jPK$HfJlB=dzp$?1nS4$PKTwZfq+fYJ;x0J`2AP z#r+{U{Os%@i@}(q-f4Mm@$9%@rZdF+D*+G`!)RK6f`qr4OfVp1K z3ZwRk;&By#0rJ)TLr_f`iTW-?RNYX5LDn3Rhorg;C$+AmP*_r*c^6VX^Uz)7_aAcv;)*I|?w`BmI&rapy8n}+F; zp^?FLTe349Lwf^CdX)i~B*|pFVcEdL?s$g7w6ZeLlVVy^(B$>P;FsX_p|0Ed+P^op z@p<^EJT>|9iPOdDpV@_<|J?K6Jte8>o}q$kUO%XSD1>A1^K?n>?w(h>VcD(JWk)Fp zd4<{tAk4V}j-OC0e~zqq9&q;i?>x=7&)-3!hS^psW*<&>pB|qO zC5K9s`rbgdXR>fXPHd`~}tVwP*?UKj} zBR18Q?o)xKrS!>xMu)^fn{=aQR3<^my$E9OXKF48XfDy8r_egQ4jikEOh)MKM7^BNzO)QszL-nJP3BZvLf zLP;Gaeo1|lr{C{(@O)!LxlYuq%^B0%_nvVA7^NCdmbqey!+{IQfvosLV9$WS4`*?n z`$h`IlCG7O;R||i&r7|xvhSw(ZPRzr!_kTSc;%@=hm((b+J^0dQa6;Y8K&RgE7qLq z+rjChj}v3-hf<%g z8?8S31scpI-8s7*FW`HkPuh$k(0hJoSmI4719}19bt-y4`PDHLJw}+Dz2_8@u}99A q-P?KT$Db74$!(m0MXjF0?PqdN?AKGi%o@JMxpl>DuG@&L8u>4o$F|J? diff --git a/libraries/filemanager-9.12.1/img/ico/ppt.jpg b/libraries/filemanager-9.12.1/img/ico/ppt.jpg deleted file mode 100644 index aa13f733428128a02fb020ae18a70c8511142c39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2386 zcmb7FdpK0<8voW>Gh+ooD}f-nG{Ae9wBn_j`Z8_x4GiNCp7vXwS9> z5Ci~(JwP%DZ0wE&_yVwP8!!d{5CIeu0C3m}(*jNG0|3s2fBcEeMSiS3q)N#GFxwsy z77!c|>2rX}i=aAk?6w34915VWGg)t9YQl7)vJZv%gdXw^qSBA;_x9zn=nMAgtb~0{7kgTJ`4dfPKKz{( zVp}&pg`vOuH4eNNkF;i;Y8q0H5Uh-f&CI|E>7vqP;1GZ;vBlvLm>>fnItx`+U1r0< zh!HWu5FTEr>fF9+N3eVMR9|c%gYNzz(u_3B8A-U-pF#1k-q(F_B*e8jBSs~R)o7yW z?V+E1f^#ML@YX`O*0gbSuf=bo;pTvn*=FM?virJZc2Gh1d8^r!-CHcTYTpQXl^BzG z;&PVr)gg;~PQB%jBS}3}V|L}|Z-y`9&*@K04wxOU3^mQ{eKH>yqglR-d|gAQWw@?m z`oZ=Ec2*v>fPoXL?2+D#^R8>ch zzRrwk>n%(wdo{U87R#?S^eL#8>^yhX&+swVD*dO85v~smwJm$ad0O&ymd`CE;Gf0I z_wGGza;)mO_|=I832^h%FNp8at>M=8+6QUJY72^MmwzDvcZsZ&LpylcapA@8%Pyqu z(IYgrkGZ-e|E}p?)=)?8yS7cY+684BDD$;3%;qS-x*5jFBeLH^jA6zB3Lb+@XAn>o zny#&jcbKrO+>{@x%4FGac>7aC->ZsX4bOYEmX8*Erd~9n=CfJUagB?2&IFsh%#1#w zwadaGY5LB=cLVn9@utX9NVhs)wY`4FAK`my152i75)I~=EGMJ#OQEDq@mpJ;x;Lv` ze&NrW6KC$x5V}Sdva)T@Hil30ozJ|wqnVcDD63JD{k4!aiC_I?x%1Fo+T?FtW1@)p zH>Gd7C#$0M=FYUP)3@;OarW;LUVrW;8@S35Pkr{+>zLzeeO#O34{TLfPjz`-Qp@;{I*?Fx4ffe{7uzv-N?9-MAxGyGoYc=Tj#uQq*dqbh^&~nS#ROVYnpY} z>-96!+^EqX_K$q?=U13FKEKp{^rXOxMT+q8eJ%l+Sk4TkT@T~%Sl=(@i~@8RbXymZ zH(!uchIUR)*>D~#wZ65^e3{U`g{XJZ=8@2Zq42Vcpmo$CGe;Zdbm&}&n(+;J93{HK zKSi~Q-_w5MxNT^m(5d8$N7DqY%GBaff?03Rc`ikrDpoQc9+{jS?0VsB8mBERw3nkf z)C%oJh5~Z3*79T(4xtJcjyN9z%?B*DI(~ z3Jnm$9 zZ7q!mdsIBL(_ApHR5cKRfQ_X8RSiQ2s~T?sYQs+wm32;1zeB(-3~O{)#l?<-!PwAe z+&;Le6TSKALNc{D{9e!a!FX-l@Fi2Ou8QrZBl@;amRNu&3wdj4Tp9G}n zltou^Ns&S#N-Yy8;{@Z5goXjX3x+msK6z7bvz!t{WB#Jo1lKSXm3sLN^0LM0owxil zUi5}G7i$YDV+S+hBO+hHJ+i( z)$t0#t_l8g!}H#sU&CWB*IxE4?;gX6<7V2Q**?3y%iJ@Y{Yk^2YTws@w{VX~4MWoR EU*kK4SO5S3 diff --git a/libraries/filemanager-9.12.1/img/ico/pptx.jpg b/libraries/filemanager-9.12.1/img/ico/pptx.jpg deleted file mode 100644 index 85049696aed2ab58dda7b0adccd5fd70624528f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2479 zcmb7FdpuNI8(uSeW{k^Zk4wT-gK<5{U|i>5hQyEuF^C!8dJgOW z8U>*t6dDbo#Rg#^vEeY15?BeGgoFf+K#(QM$jjmt@dSeWDtSdEC1qu0St-@Es)V&N z1Z5?05@fn~rZfaeE8z)vrT^QO?gJtoc!4+wr4GnrGJ17gaT+7f{_Z=o%!pP)6ZK=(^$S8;2UNiHNPF} zKF-+YVRSAvQT3a3*W%m;ug8lSe)YWg;*i+~5#BLW;d49B{+%biZ=EmC>D~f9+=(0a zi5AwxnY~GWs~j93mM|02)>Scgs;Y;_xK{f!)!P1&nANVeqNF3Nu7;z6zKnPE-g}#P zVf^`%_JW^z<~q3&^`}H#jeM?4!oT$=f~%@Ve_cddA_)*;6d0f|C#bh*k2aeyXm?|5D_wN!Us2-&C?eCtu8n*^- zbWT(jU--tMdMbh#dbjxDYL}tjbpe={RooW0FV5c_kLZn-6~1a~tFm0QZnyLGqc0S& zJ(@f|mA<8O~U&$abQ9T5W+gW*DJ_a_!XT~^w!{MTk@r zF(5ZrZmr>2R#tZZDmCN!`?dErLDIHJ0XSUTe{Qf(gVn(XKV9sk@b2 zN}g@r{AG-OEOu9`)2}ya&O>i&NH<{DAe$Ex(4&GD)3b}_K4~2@(FU%s5VSAWK{FGgdTy%XiHxeT}wB z_HFB719#_pN?mqq6Qb!HjsfN1;}C<^{10{WM=O$F9iDB^xR_$ns<$V$liobmrKmBI z)j!RN;f=PR`dvQFSMajj*}8o13%$sV>gw=#8(q3qO&H7LZkaYM%5Zw5J1;pHQ1;g$ zMFg@L(oYZsa5&sD<{yxWa#%I0Au~!|U4zZ3fhk5NzGoE3G={C4`~HY*{(oBxXMtwubP+^oDb`adX3ygLPbGBYEk?!w;d z_s?xgc|&)(II$VTJ|z<0Q47Mp_fisZGl3<$+_));vu%nh7dk9zdYdYavDp+YRQMI3jA_6r-DhFm~O_3SQLVm9s zH)(oV6>QWNP@}SIWN6po^DSXN;W}zbqT7XDN}lmcJt_ThhwFGiI<8x$YauC0b4fV! z^|In{W;efdU=mcRJt%Jo0h*$t_e}Wf`^bA{LW~zHmq6Vmzv$}ldn)cK3Mr21<=|{i zchXzOu#Vu4iU4=3w!WA}-Zz)cV~OzOjw^AKzeT!N<`{VPUro8vsV)rOlY4D| z^`_!$bLpzK?8bNJiQC%Z2E>W8SUYj?sK{GGE~Ng$3xWoXJl}u3Dr$>jA2W{#0~_V% ziupav*&_4_9b1y}mZUT5ybzW@)cuD%!aC&Rcyb~h;AH?Bj~h4zqw#t)2I9-y8$o

Pt^fOKD(e?!4mursha)Xj-HjME6lG= zhx;#0Mbm$*Z^&kHv&fvn8%g}1`X&|&n48k-Yq%!OVbx5&ITO2{@e#Ga zTnO)SA{hw1iZc56@{L?&){>7^jP17XDYJq6)oyuptaE?GX^l|CK z3{~m(xBun5CS(K#irPG@;4tL|25P=lJhV^LdpG=gTB9kJ_I{nSuQ}m!Z{gcD&FyCe p+N)06^2|@9do&N!oa8e_@A8e}wUV3|JzC%Lx-9 diff --git a/libraries/filemanager-9.12.1/img/ico/psd.jpg b/libraries/filemanager-9.12.1/img/ico/psd.jpg deleted file mode 100644 index 53028c560d07ba15c963e5136a5ca6d4246ff4e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2110 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 diff --git a/libraries/filemanager-9.12.1/img/ico/rtf.jpg b/libraries/filemanager-9.12.1/img/ico/rtf.jpg deleted file mode 100644 index c0e14b3f4b883770eb061827cc9eb8497a75805f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2511 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 diff --git a/libraries/filemanager-9.12.1/img/ico/stp.jpg b/libraries/filemanager-9.12.1/img/ico/stp.jpg deleted file mode 100644 index cab6077ed3a0644c1e190818b2de3a45a662dd23..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5539 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 GBK;R3t(Um~ diff --git a/libraries/filemanager-9.12.1/img/ico/svg.jpg b/libraries/filemanager-9.12.1/img/ico/svg.jpg deleted file mode 100644 index 8c771ca3c3e3c87d3eb8409538ccc6187ddd717c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1979 zcmb7Ed010d7QgSkY%GEI0*Gvx5D=BNOcIcQm4OI?AdG-4Wvc`T$|^x%6qk|@6gTBQ}GN)XB1Fc$jnocHeg?z`tZzq8%nQ4Op9 z18^^QPj`SI03h%Iswv>I?Lb^C06spz8UR28NKPCe!5!2BW4Hi7tI?H{%xY|9AEs8S zmVn*Pl(e{{xJ*$DE9xN2%XgbcQe1Kz%htxxhG(&w1S1gD4VX9rFhpIZ6(LioBpL>F zCh!=>{bwCULQtqzDS$Qxl{kjO`jz~}U^;8X9DvQr4{T#aLx#g;wN>?TQd_yyZ+d~( zq;oV2Tz=4GpHX%CMC;__=9ct@za4(O)}#IK&F_n(^1JfKkxiP$038gvAiF$NKl_z) z!oH8*OzU);k@>vLHV=qzt$Kv8U1bd`{%BPXHBr* zSoX%l6GpSOMoia@hVT3Wj)gvT+(XVwHypA0Fu3jSBNoG~ri!L^w+X53Gbe-Ga|zQK zi-EI8ilSQ&9h)hy4Y5zgvvNyA`i@p~TU0arYbx$!G>fCO{VmNxUdb=K`!X^L;?+Hw1MG%z0^jPK$HfJlB=dzp$?1nS4$PKTwZfq+fYJ;x0J`2AP z#r+{U{Os%@i@}(q-f4Mm@$9%@rZdF+D*+G`!)RK6f`qr4OfVp1K z3ZwRk;&By#0rJ)TLr_f`iTW-?RNYX5LDn3Rhorg;C$+AmP*_r*c^6VX^Uz)7_aAcv;)*I|?w`BmI&rapy8n}+F; zp^?FLTe349Lwf^CdX)i~B*|pFVcEdL?s$g7w6ZeLlVVy^(B$>P;FsX_p|0Ed+P^op z@p<^EJT>|9iPOdDpV@_<|J?K6Jte8>o}q$kUO%XSD1>A1^K?n>?w(h>VcD(JWk)Fp zd4<{tAk4V}j-OC0e~zqq9&q;i?>x=7&)-3!hS^psW*<&>pB|qO zC5K9s`rbgdXR>fXPHd`~}tVwP*?UKj} zBR18Q?o)xKrS!>xMu)^fn{=aQR3<^my$E9OXKF48XfDy8r_egQ4jikEOh)MKM7^BNzO)QszL-nJP3BZvLf zLP;Gaeo1|lr{C{(@O)!LxlYuq%^B0%_nvVA7^NCdmbqey!+{IQfvosLV9$WS4`*?n z`$h`IlCG7O;R||i&r7|xvhSw(ZPRzr!_kTSc;%@=hm((b+J^0dQa6;Y8K&RgE7qLq z+rjChj}v3-hf<%g z8?8S31scpI-8s7*FW`HkPuh$k(0hJoSmI4719}19bt-y4`PDHLJw}+Dz2_8@u}99A q-P?KT$Db74$!(m0MXjF0?PqdN?AKGi%o@JMxpl>DuG@&L8u>4o$F|J? diff --git a/libraries/filemanager-9.12.1/img/ico/tar.jpg b/libraries/filemanager-9.12.1/img/ico/tar.jpg deleted file mode 100644 index 665cd0364930df93b3fd32d88df6b235796d26ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1747 zcmb7EdpJ~S82`>Wb8{JHObDqNvM!++W|WnTT#7DhkSi}v@U`W&Y^yEtqO;f3<3=BAdWW~QtiRHx8L|L{<5FqM9c#WH7deYpP8L0|`9 z2!Rm@h7nk12o{kU4kL%h;&FI99!Df9lNIHa2?_)vk)lLVP*f*s5S8V%w3Ud;ibSHi z>?i1U*-ixnQBWrk3F`mbq^*EV0G=Qkfph>&h7d9&y@@6cEtxFEC4=w;EDnRlv{3aB zS@cr`RS1j2BM?D402C1jz$Ao(>enM2{dr;W8%QrBO_>g$;JUMN@#i{Ao6<&SzweAo zpK8>#e*7Xl$Gq^kgjTSiYnWT-8Arb$XIz$bxZNT)G|av`a?@nllgKw=<4R%qwezAs zqGM|Y=M!%@`MVEpW)zK=SX}NNltkAd_M`vCsonE>=PR1t?q4rigb|*<58(cgh1M{X zwJr%jFb)-KnKcH%0vLyszPUyX$+Pve~|{NuMO01@}uf_7ejG4 z=t)w<4o`XhA*_7EMT4G7y<~;@-V4QiHRDvDW(F;y>e=|H;ABZM&Uvp}s71gLwHOVP zPS&Pu>uO^uKv7LlR15~j%Pr>)P*4aWup0x;EPHsPbz_-ImOn6X>^X4JhspIZdf4KS)=%Tz~7Q`H}ZC|4j4N zpFcl5!Q9nZaja#R>#ifa)l=_o5K1f#hhHi+-pjuJ-3=Zbc+W#mH-bGlmYuQxLuZs5 zN|Y`u5`rOM@Sm8XuKon%lYhMtE{m$DR5umGTuczpOF%mKhQlm6+sZ zH!obd+r)ww)e}@=CahYOzmF&B&s$CFGI}V?Oup_VSX@84D(|HCZ%nP>N@RBw$=iXFZq>|-Tq933`O)U23JND(M#Ej;>ne!-x4h%nT+J0}qx*^A6UAv;;0mFE!#L$(44_iZ;KcXQRfcru) zKxU9=wp1xlnYFFC7BV3y4 cl~nYexN1^UKBZm$LwC;87hgqY#!37C1NakCm;e9( diff --git a/libraries/filemanager-9.12.1/img/ico/tiff.jpg b/libraries/filemanager-9.12.1/img/ico/tiff.jpg deleted file mode 100644 index afe2cde90e7aeed960ce94fc279d0e22919144ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1953 zcmb7EdpMN&9{;`XJGYo&h7l(^`;HAANi&1kRAypEg*A-m(1nr9=pwR+k|;GwE{9d& zK@B_7<}9{2rHsdAg>6N0iA-)?WVKE9Ji?rJEO!4rpZ9s6_xF3h&-eTNe6Olr)i9v$ z=I`PI2m%1Y9-vYH4lh<541k*(Fb4pT0CYhNaM%fxf;HF+09*vG{D~_1vYoDHIA(LrYtWqD`hy z^wmZ%b+x7@f@tcKC?x&=8>$9CBLP1Uhd{;vra=e|QZ)iYb&3#3ou_3G5j=qe!D``> z>@PwXherqyQPmH~2n1j%Ld6o;uiX^MSysoshHm>cy3>c!`SIDGzP4Vc6nr=M#K519 z0uB1i`GnZ&7h}SEeLg2DK5cu`82E7Px1*Af5&P{{+E<_*02I5&yHtLDM~Z&g>vuaO z!)De;X*H_b_kM_?D0^ivm-vStjGY-3KroH~;aBM45IlehM2N13T5o1hbyl+k{uomd z76yce7byAPwA%Aer2Xw@>kzxn{E@{YGbl>(!0lmQ^!1H*0;T0i`TE`trzq zH*{QPw})VH__Cl#bU3H!up3U)|2wnuFTuu0766Bn{j{O_l94uC;%ym$BnU(B25gC(Q{~9||we8P|M) z9(=3<5-cDF4L~>uhvjt{ScVar4$3fQ>oPez7DK^m7fs^`$qar4TDFw{!;m3_knM( z=6a31sn2_CEa3~&`)3ZdT$CxQ&Q)D)P%>stiiBRcr@L=lsf}Lq?+N>sy`Q2TXgx+{ zZDree?}oNCaixrme)ibbx# zlot*NpIdCcb$oS}X!!P)^QBVDHs)t`Lb&+CR%f)}={%!nDtWRdtaO0#LqhdAT&m!# z?3?KCb#A{>r~uQT)HPsbw*Ub%eX~kaQ+Lz4o%%(b`3%pELxvl4i z))m`Uclr2^n4D|2#?hp; zIioc)LdxEEEsc>i+U}xE9<(xlJ9c)hM3ls(R>=zG>J~8lV^FXawA=#_pfNlGrm0L8 zH=;AM7!~--m*>QRF=vq1`Abn*xtniTm-qGRXX~o-|Gr~q%9lphhHE6r6~ku)foSNJ za0ioLyIKo<9;H=3oT0~5S=ww>AbH8jZJA2l4fUR(Uk@1hJaRWZo!}+>lo2`QJrqzg zOXH*(-do#k=A?C;+s*KQ8+C7di#%TW@w=~XN@b#)G-t6vNBK}iR|m-;Mg>&hOx?j> zooqj60X}&9)9gWv;^NW)2o?vncm4vX9vKEe+qJ450NaiBoFx$!{1-HAh#+h+tN;t1 zi?RZ!3?|28F>3WlQI)&yv!??u<8upTT)Pdc3rW?sZI}}is(M$!_&@nVGzMT%xmdNBSfMxq|FbKVqR#(g zD&Yf3eGI zOa-HeBXUvDUdVcCI{Iw9TOm()HwpZ^b5EBzOAPo1#a_$qEe1;}N&@gbKh b9hK$e}}|o`bza diff --git a/libraries/filemanager-9.12.1/img/ico/txt.jpg b/libraries/filemanager-9.12.1/img/ico/txt.jpg deleted file mode 100644 index ec6d3e3f5f5b5ea808a90bb21ba75007d3802a95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1765 zcmb7EdpJ~S82`>W=HfEzj7yVC84N|ca+{J%lyNJ=P>B>vshN#RROmu-Yh82MbYX`? zs8FNwL=>XvGL(|gkdlYUsKsNt9|x&p7WjWy?pO^-{1FspZKNt4M5k~JJ|yW z0sz7uAQk`{yD-j90GLdm4*(znD4qkPuo-3rs@Mwv%!R*eBDl!+xwph9o&~0^`$9QE zoQQxORR3`5I+mS75N8jEYGSa;z}SH9Om*558nAzlUm(>mj7~Q(_4D@&5O)Dv07D3j zKroEJ5+FE40=$$o0Y|_S2n0NdBu|!;ktfO$NhHOe6lLWoBo&gpjM}1~Nb+(d5=9aO zTP|5Ciy*QTB8f=(-w@veWFqhe5eTFOU^0Y|A#npx$I3?_2_!Xs1%W7yL!=-)W>xx^ zdd@0-1>_J2z$k)Z)IAxSQ`6dvnf^-5$Qb?UW4~eso>>i#ak*ICe=x%RwrYT!+s}+Q z03hs&L+pf*{DKKA^xtQm_+k;zT`!i}DG zzlsUgSTZ`;52f&s6oSd$Aceyd0E{d!TnV9M1&XE(3(Jm(8eGmIJ>z!3=q+&niBj9~PTHA58?m9z}$Yxt;<@u~F8EN$8fH~+hR zHmu;|d2?*xtzpq~MSs?KK|@ISzysbMX&=)Nwdl>s>i6Gd^*b2d(h1|Yn$;&?DLUhp z$M*8v5zygnUK8UuQdE7A-($fZrKl{t?D>3n=nGjZ^k#7t(#^~hhQ?G0O9o)$b9-<9ET?xD{X+OE$ZZ+!BsDD8Ycti>2;Ihd?Bbaa<)XUb{b z!;XHTDs6?pIU{}dqnk$kw`wb@WLs-m*@oMd9IJM|vv(`?oa|Y)fPPq#d&GL4(h}da z>%om@77dy3S~+Qh+2wEFo;69(9$J02G1=#FnV(|Y^*)A4Vu-cX_+RXf&mxD3lN)1V z-_u(6bq9NRg%1n(%ks{i;})%mUuVB}b3CF!TJq$WwxD2YwBZ+>&1jaME@Rh<-tvgF z%ulsC!s^-HrVnC(ZKp1ZbtsITvG1J>k%610q0yQ#)bBVo@9rmTcji0UT2oXqptO)% zuaM3xpEx-3Qo8*bU)i*SmD995<+klwy)Iw7vixUH)skLlAGs4T;<&|c&mGSz~t+C@%A3y8MOuUXAGQO(0GNoFg5VvC*OLTzw6@8X<-?`t zD^+XUokpK>^-dJY(=~7Dfm(xzqA(4x!7kY! zp9b{5PQzCR3BNGFNdbZ+xC9Vc6QG7hZZ>QD#;B~|yb8YHJHO~uNqox8(WOqqN8nhQ z2(DKhHMJ1G;YRjxl;WX;pb5SznVWvkjt#U8wBEqtTsL=n8O^{Mbvw_BE^{mYSlX9x zF1)E$aEU%dQFc&`*VG&Fs*iW|++anvke=!99ebv#;y%uxT0}7(ExeT5G;s7R>sg0;Tf8-%H+AQ{bIqHKT*OJTGTVly_in$NlplnuaV~1Dof7W5*X6#M Rx=kP#X|PH7&OB1w`8S?lY>xl{ diff --git a/libraries/filemanager-9.12.1/img/ico/vwx.jpg b/libraries/filemanager-9.12.1/img/ico/vwx.jpg deleted file mode 100644 index c56cad7ec6b5fc5ef19911d191292e0b99afe5ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5463 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 diff --git a/libraries/filemanager-9.12.1/img/ico/xls.jpg b/libraries/filemanager-9.12.1/img/ico/xls.jpg deleted file mode 100644 index 4f656f73dc2dc53e6ee67b95bf8ef0b08365f3da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2691 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 diff --git a/libraries/filemanager-9.12.1/img/ico/zip.jpg b/libraries/filemanager-9.12.1/img/ico/zip.jpg deleted file mode 100644 index 36d159166e47d37b44fd4ed6dd800c2eca16f903..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1718 zcmb7EdpuNG96$Hod3lWH65}z}jFeQXnPG}z8A+&Nrc$J0@-Bvv3aQ3!QlgDYeaPlf z5?fw9cGvcx6urIrc&iqxQh9$$W%gV)yZh&U&*z@cx#xGz{eFM1t87+22Mkvy7bk!q z03dJxP$MFPF2;Ip+TRaPNy@8kHG81 zO*ITtW76m}=KqGW3g9&04Pr6G7@#$i3;`$uW558`CqAma(JCAD43`Eeao)5>W%2iS>b!Ts@wZteVlM_ zj9DQZ(mQ{0q!;_M=QIAto^Q))oAvrg=}w*RqGi3S7w)MYP0qZs-7tvNJowO>UpcG< zK3Bb#VzwZyrmf=%y}8!ui(1AQO9>)+vYuI=?U7`*+eFOY@xZG5}fwnuTW zifL1vjuu=hd1WMm8ccBj=@3L^S_6z3Mj}%fI7gGs$2CthC5H1u4O)>=Lu*J`(^dwAg9 zn`=-a7iNhlDeAOD*ermAGc>h0v$#A6Wy=^F^^kKQUFZ??j$B zD?9haWcHZz!f*6r2jZ*!Gq0E5+hEHtlVi@oy+=1UAF8$s7U}+GDPeo$uVk)uF|er` z75vaJ-$?s?a9fkk?FEA2aWB*RKKhlfPW)(A9E9yn$=of9EBa98e*6Y;aH%zRm>a%W z9%ptUE$-aU%jCC0&2{`Qrwnh-|7G8ZL>(IQ|R9vS7&@~R> z8Wq4c`3eN*00x&Qkq(G`D|5cqo*idIoa^j-RCmShF|=6IIr>Ns&$uY(f;AG3-PH~3 z?@R1sFPjiK(0^AA zVBkECu$0Y}#t%s3sX29%;)$ANbSo0b5J83aTTpR!V#TPR&&iz?O?zHqhZ`Q>G;r+< z-SFNcBiF@YJVFufR?}_omZi4o&F!6#$YiQLNQAg4AOL4@ctVMk&6TGP1dt?EX*!=IdZXNJaxP1_c3b6))-Gab04 zf|IJEwrG3Lz$$Knd7`Tkq@2Y7@E=e4Pf`G6WN_^zQn?s%PN#)2AY)lYj8+|@B*}P diff --git a/libraries/filemanager-9.12.1/img/ico_dark/ac3.jpg b/libraries/filemanager-9.12.1/img/ico_dark/ac3.jpg deleted file mode 100644 index 0530f2800a2882ca5aebdb09e9bbda8031849ff4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3462 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/accdb.jpg b/libraries/filemanager-9.12.1/img/ico_dark/accdb.jpg deleted file mode 100644 index 13607b106309e9ef258633eb883fe7ce779fa780..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4130 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/adp.jpg b/libraries/filemanager-9.12.1/img/ico_dark/adp.jpg deleted file mode 100644 index 92d67d93e94f02deda3cce2f8c27016af09a6799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4126 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/ai.jpg b/libraries/filemanager-9.12.1/img/ico_dark/ai.jpg deleted file mode 100644 index b7c353b410632b2c9226647d236ad3b8ef887e40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3416 zcmb7G3s6&M7Ctxk<{^X_5Jkbq6P%_7_1X2++U)t0kbvXp?4QYhznt^^ z=l{<6A2;qx?jDe9Gc*}MQ54L@54is=Zq=w%@91)KGBjCgbO4B3^me;NzyefQoqTR) z8e6!qh!uB(07gJCL_)CM;IJ!ox-7s(xa2voJ^ThR62RA!U+f>qe(qPWk#iUTC<)qa zMu(vSaW#O@VzBd00MRY9CsjG^h{Yojhw~^9v4Y?-FHR@8#ET0(ocvrBa)?%$!K61L zUXD1fq@TU4ANFcM2FA(ctQ>DPu%s3`-d1Y1a2|)Zdxg6n^JTEY;=-IgZ8Y{$M|s{n ze8!U8P5j(kA8s<})p>|tL;G2~GmY5CBmR%8yg-R~B7h*Ql+P&e@&ze1ru?@M4@0}r z?9}A@>^0Vs>>R{6R?u8-n@8dh&RK&)g|&oe#MexmhO9B_p~1+ds}aW`9&K{X^~I;P zj>0|z!J!QKE?cm^!wLMEi)(+)g(O2G^kv~cL<&|;=S zpd4*4=IJ~f@0b9i%rm-|jK*1B%<<0fosVNt6wIUKi#0j z6|i^|RiG-fXC)kd-sAx}oIs`%^w{4(o(;A3DIKt)rPeKx0S~DJw=Vl(Hmr#YSQQr) zKPtKu+Z8(%KMa^75OF}2==bTv^v84?eT+T_EZsq$pg*Bc)BEVZ`(wU%?Y&X_YwyXI z*hscy75e7uUuzC5vNTzgY@94zHb(ZkEX&VgWf8Ij*<4u+dZPU6W(oKQ`{H>5Ydk-Y)u71c&XVzM#GV02#r6$nV9Nhic7En;YFVxf=`NyMQN ziC7{D3YJNOhJ*x5BvQFFL^c>(kTf)G%-}GBNf1gP6ym55h6x!QBncvn|F5}ELZ}25 zK@CksgCLZmLn-$uh$8=iXitqulB7`rk(g$L=nN$*ZZ+O3-K$Lre;7IF-I&v~iCQLEKJLzcj~`M#*tDvC z^n}KVRYwk7ZZ16f^m@^eqZ77W%-S&R;K|lJKI`OD8_7EK`K)!G32BO&L#bXu5cCnI z%7LPB!Gj0&MWO_BC=&+4u|pK{@aTjo$~67b+55A8EKk?O#yS|J>a|BNo{#kQ4 zsLSZ0)_!l^mbd$O*Y!yI_`^dTe<~bQz9jkEx04^WZL&U64>~-%sPXjFi81rLC~frb zo~Z8B%^W#n>+kniTW*~_x-06ktLQ++yL(G^gUULp zImHbJ*RT4`;`{XtuTyXB>(GB*6tO1K%ud=O-81C0@^*L3h?SOan%T#b7W{grb4<>@ z>YL{h|2XW>l}Xz~qgHfITFPmA9%{GF``}*0h}QC??A%2;5jo|H+P>{^1J-CfE+IuT z0uc8tAr(3n5^5F71$y~*UGdWT{U^TaTgN$LpG3PhS}wJ{ccHg*BR^3+mSJZE&mI}G z>{jil&H2GO2|aVRhTpDii(0XEg1lqHrr5_0+0E@&KF)Dfv}?-Sw*Oet*C6e9B)9<1VgVFsQhG|LR@$c6~bi z)cFs8`J#GjY7_h3vBo%=>2i7F;#0=Q4GkN9a4G)s=^qYRRwjr4vm>JC=adaS@26Ir z-F+!YrWt?p?u|k>II^$r2(fIOwzCm>JIiKoo>0=1sz_+sTvt#vde`7dDs|Ah40`9G L{Np2x?(Y8q`&$$H diff --git a/libraries/filemanager-9.12.1/img/ico_dark/aiff.jpg b/libraries/filemanager-9.12.1/img/ico_dark/aiff.jpg deleted file mode 100644 index f0422da52b1777393733719c441478a6a9209db7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3454 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/bmp.jpg b/libraries/filemanager-9.12.1/img/ico_dark/bmp.jpg deleted file mode 100644 index f479380fb0db7d03a6580c674582f7f2fa9acc84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3754 zcmb7G3s_WT8vf3lb7m$kb3p`UL=T9~{v3fgYcF_8<7qJKz8Q-~aya ze>vm$%yAhc8L8>1KoA6^;RhU71c%a-lb5RVRH^A%3Tyxn?A4gfdL9E{Fxo76$|R;} zaWNz41s+TWPY3`{jn-;TRI9T93&-W2 z_zdIbUTI0o8^MiQjbb6<5R7-4ZAn~wCgQK{RRxKNX94hh$}On{!+hSub(Q&x5c^@g zOlM2aABoo)OLJ6+u`h3Tl_`_U!*M#b)@1Y&f)QV=WYf7dMm;2yu_+3~vk_0Nw5N^a zCo`-y3%R&6PhDkl4r0thT9#=t)QAHRueX@;xUo<(xtrB1xv?-m*LQFMtu%9 z7S5Lvu~z3CF()}-tIWrJ%JrpUZI=9zzEp9!E;W6Gzsjt4?nTr_?XlSNIBl4p>e5&g zO2n9ly2Tm`INuP{lgczHoVO8(AAv$b11y-J6l*OQ;Vv+c2TDl7rx`5RQVu%MV}!+4 z79%>s8>%pNf1cXO8Sdj|R5*JNaJ_Mq`*VgzxIV%$QT~*iipKx>R2CIa&7d>!@@%Pc_(aWKKsRBy9??hq?MNYb{H4+K)HhL^bYNn%wP} z$2DWrY#QqTSkZye*@chw>4Q~AC%IafZtBpZpLl(+3RJ)6FWpZM(A`+~(ihzQ=|1`b zetIDhS3vJnWI$Cq=So;zyzp^zXh)_EG+2LuJQHdiRXT1(%Z-}?+%23F>@zt( zqgSJ@-hV9a1n8gumFQqOaxLg8=dclKG3(fKGNP24N<~uXzuL9)xV=28g0JAG@DqXI z&*I1NBl#H|9zA*dP;86CTH#VZd~#fjaWi1Yu+SA(o^a=`7v8&9o|=h%>Z{B9F9A?9ge$AnEwL6alPXUSgly0D+kEV=5Bou0!{efMU5{5P8$&b zv=akl5Hc6eBf>^FJb-6(K#g#?JD)4uU5mX(p1ek$i&57|y6_T?>bM6nDzi;z(ABYJ zOld8Xp;jmjI-`z>j);qhig+jsy|l3wqejojS43)}*oPwL#X0&Q8F*YFxr(NFq<~Ke zNKzo6X^JltNTou7Q0U<)^75GA?I{#`P4oAbi30-zJ-nno)5Ja^aiEw>LeMlVAO+qO zhZ}t}8Xka?8&h^Yc08H%&a_hP4p{s#CYAUml&Czi5Zw`Ev?G%H6(O zL!B#E+?g@}WMD$%!&!G#nHhf9x}zeB{?k%$Hg-oE{&0bgL#wZ1I(Y^Dot}W1fqaUHhr|BkhYD z{9d=0?tWkPhpqKRp`D)$eYtqsrMYJ!mS3K@Wmfn5>XlE&-+A}-!invM#)6iL_Y;WZ-yrZt3G*aC z;2siq(A-|<3W26XQnb{^5+sk!-Mre z*B(3g;khE!hi&&JzBbDNky8g+BKMzVgPrRJH&21?MiUWfbA01REhYWA-F&H;a zIv4wn@_C(XNmEBm{p)A12Bh{33_UCR^vLaIn_WQnJgd6WSGw)H)SjMZiG5=)w`QTZ z_Xv{5Cq@kiLJC2VxrrJHBVW_dUacwRXu$@D;xYOf%;;b`)eOP?L|w#EAOeEZ(joSoTW;(^w{ z?<1a5nW`JJp6^uTp8Lz9)qn30{&@78!o>rk4YGxhd#mtpcC2{Q(A6{lJiq_IB;Tq- z3m^a2-pVJQL-EcN?Yt-PP`eAy(}~wkVel4yfk{4&w=RR#Z){a=FH3%JFFOh7EE-Ew z?o&;G6rGhPYS!G8FxBk~N*Z>(>2g-`v+stm%=(}O4IYw{UIkO%p7+bN&oAHWVx(au zr8(=TzM%J%0@HcwXx!|*zMkzj3%ddieJ1(3{Z6rBk4o*=06k5mD-BP*t&@=-9_!zi z@xo1U$K|*DTkS=J_~lEXf4*UWq4iU;!~xf4bS+qW=#;#*_pSG;jCS7qn zN*&zKK3O(7yJFM7L%h$QnV8vMFrhI-)}JuB-0!71GsE}YI?~^68Bizs&}V7$t6|L( s93WA~MXQ$!D&}N$h9zznl*EKBIp+Cd1JAd-bB$CxC3kX^sov51KS1K1&;S4c diff --git a/libraries/filemanager-9.12.1/img/ico_dark/css.jpg b/libraries/filemanager-9.12.1/img/ico_dark/css.jpg deleted file mode 100644 index 8c80e1571791a5144ae7af5c824fe8e3b7bb5153..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3444 zcmb7G3sh5A7CkTTB}51zLDY&Co+y<%h~XnbQISu8AYu&Q54DEm0g;fzmjs2TVWn{dq*38aQM9Yh1P~f^7TyLR`UdSuD{L0TexnhG@F)tCce%fM7C-yfGKd@I6r6HaGAP6qyvx;1N!PJ`a!g+{? zqg`*XsS4fp8dFLBY{WQL&{$!fN#YRBX`M9#YY7pEd&)T#S!2{ggPzM&B92BJR&LL6 z$ES0xRRzTEj8jvdk&hVT(EKuOt{QPD;Jx{)(xlUx{|K4r0~-5TgVlQEy< z!uc{%&gz^a#-#gf<%PIU$yg@Q#uvKBG7C!$St>Wb)?#$-MbySL@pcW-hVhy6T3(rr z7~?PxIa3j-8)D&WdTl1DZ4Bb+FqhH-2WBY2UI!+44lHOO8`AM<0UkZ2U;rapIP`L8 zF;Ia}fwmX()J~3TjF(a79NkAoW0n_lTp8}VIc8=AqhR9ko5JKV)0iYC8CWKjnZZnF zGSQmMq<9pleRQ%=26s`ZE6#GTV`idbE~M9o+M_&U*gF1ggYMjKzDG6QS(?3mjN_Rx zYBu{;0IXPnf!R&;ty5?1vDZ8v_A=A9=%S>v7G}SyzQS*WeZtGwcL{HJ#|y6uZ{Vj3 z(r^WgPDPcd%HUiHtA{sn&>T)6(*|1XZzIo)S_hO4TG3KdeW=$%D#5ME@6U(2Xs=aq zRq?IjvZ6uJq_{sQhd1J&D$!f$Pw960DE%k;46t+ueS$ttpP~=YpLt@wct^)&2hGI*3$RuL zRefL*PG*E44MJw!@{a~;!JezIN;|C-|@$i+|$ zH8d3g0y#y?DaYq{Vc~xu0V$)W`3Xc6BSc>a`Fk|DIl4hY;{X{g!@_M{ zp$HVit?pJ?JsXxy*Fv;2cy)t!F;8>{Qr zZ%9<=5*MZq@k=;s-4;0M%1*9+mlf7rsrrzFrqC~9Cc_P1fKkLGV+Tw(g zcaP-!HpKzqfs*mRpboe1T-M$Hm&d!<&RKb3ms3Nl^vWE5BfG%jlYJ-6xcHi>7DH*yMk;R z*{imVlMo>zFC2wc8`yw8RU<|7)J*o{$dI_U_`g5xpaOb~BX54#eBnkwUBDJWL&?=+ z?<+nY-t%~IQPPwp$^IWFeibLHmd{8mfcE4)f4kN(NxtyxHBr-|iL1L~U%&f($L>G; z`=7Ajlj4G>?>xSvi>6yA)%Z2tT^qUlZ0Zxc_3_BI4J8s@+btX-YO0i)9>f=qC=)?z zp*i5$3e_#^>9PCwt$~zXQT7Fj%=?jT(SL5P5Z}Ie>r~{7C~D6S;~xHNXh`z79pR3y F{{feV5BLB8 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/csv.jpg b/libraries/filemanager-9.12.1/img/ico_dark/csv.jpg deleted file mode 100644 index b81a32b0fd8e7127b883b7a59e63532e41f6720b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4189 zcmb7G30PCd7M`1Xvxp%iln4cpD*^=+8pH)eWM9G>7Ew@;KyD-uAS7X}Z4tF1tq4*T zpIQ*>`l_f^3#e5V733zE3EVNhvr0$tg;CsE<3oI5G;Sw*dfH0suRiubdhBylV zsx)3ER{}umf^vsUr3_;FWQg_T&_RfKBwjv*JxLrlgcqwh;h`RoL;A{!PY{YAUIFop zxH0nOWAKme@6m@G|)F{{TEI5QPVVgB%G zNyeTa_YED!9p_oXK-bc5I$0E(_y?!9n`Pnn;S5WWcFNl-45 zDEZ;T@|={opkRpMT1rJysy}ImOuyHb*HBA6|<^i6!3rVg3r4RDBkqZ`k+p^ia|_Xdk;S zlzaI=4DDdQ6DbSHyg^Jg5D7iW+}c9C07M`{K!8*b2j_T@0tNvNLV*u(hff)hLyZ_n zfD}pys3o98f@p&zDElx^pymv%8D%V2ukImN!(Bei8QS5=Feeq$$9R}M{CC0vFlWpG za|Af%g1KS~Fi$9T#GEu92*&t{gXQ1}^mNEh8c2sblYT@1_aeh|OU)WQPrghNe{DlQ z^ky{5)KNXOqlp;$oH{lGKmju_5}nQ1JY86E%0Q#RTd}I8&CClcK=8lim)b?`p|--g zjoLA~p4v|BfS)$t1}h*{dz1{llBg@8(C}==#ZU{GN+5*u1ISB-zK(c0uA<_UBEwM) znF(TT(CZ+OH)B-FyTyCTYvt|aeb4J1x5uc(aalr3(BtT7v>L5JF9RGsi`JrN(DP^| zdQxNa!?ho>qN%+)UQ$LzOIBfIzp=R{fRyFVGGa|*d9qAc=Bxk>3uo!G>{!06PoTy~ zQ#a|Teq1aP5D9ZNlGP9IMZN(Nun>A80hy31hgl^voC30;)v@o%u&3A*%nsxK?bJGu zXL-a6nitKJ<_2(@HO-M`NAn}`$eTy|1nL~&?4|L3=*`hE#zjDkVZp3u?AWMJ9eGyC z)fv!lDfF9A5?S!>0Kg+vmMxboPf+4BdAzx}8@$R0oSzbJI|CO=rMOz9z~zL3kY^Ag zTR`4}n{b zRD+k0RMmShD_EwKBujD#5gwO~`w6^!k|ik;+}_sFcBbv@0GLZ9Ax{xXabA|4a3(R^ z&cRXD4m<#b94I+asT7n>!{{hVr&FmIjX~#d7<2|hYa)xO^^x{O27_s$uWh7bY;3H> zHObARR=f>umt3wh$*0O5R`+c8h{b`8we$T zAZZ3dqcf-&3YB_e#Y1}49l%5pKw+b7n7J0$eb!oe<#76TvjA{58vHu&9su(R1n7w# zSTD85U-Opkd-%?2*DI_1-&mE8*ueZ-^ry5_B@Mi*7as;)p8egf_IX9GvU-m=^aHr+ zX~!imWk~1pvM+lQZ34R=obTvzZrz;=HVd#_eOJ>jJEz)e!Adj$b2dOw48bVm0Z0ak( z8#8luZ^O~hJ6Vrg?|L?`+aRCxdb0PjYW~IZGmAqWGwyd5_(ujCLhbKp+`6SP`~TZ& z@Y|cb8;d?!nfI*FrZ;%tlKvh^;nU@4%vH)@^6W!?H!IqfgQ&FqiVR zX$7lHKU?6*`B+lzw#T?GyO~*X>=b-b6|6*j_tyhVjdGxBL zHuf>e*Wdj-kU$oKGp0W3aEGFUg>ykX{((RlA$vv(-;-O54i5JJvbUfn>V{3h_MKaE?`)i`zqs4a z_{GeQZpQ8_X5IJW297>#r=Id)*t+Cgd9Xvgurb0QhHHKxf!A+k*&5!r8y5O(n&vda zOa-)}{R(p5)H+DJYKZ4C!RDSfs~di5dOmCK=^ej)EDN=Id^Gdivhr1hRzcPoyQ8Nb zaNCZKoomE8B3}K5O$QHubTGn8FmNx*B=LD;a;!N!+R%4k@~ib>{u7M; zY^Y&bcb#i`Zgg+1-n%*e#bs%H*+KuB)qB>~%wvXBWO1Xu@U~tPo;JC3Ranm4A4>UG zo(cos$~Gv^92fLfMHJHZhHuP$Av6SXz;P|CN5P&ehA!G0(&u zYwxVNsMzjb^b|os!>L`BG0fmFi7VJUPpz=+ske@h!|kZV&Dl zd2wB(o%KY4{pb5=t!}Y(Yq z#psMi{JdA)z`W1cmrgTo{pIYwn)`$qnZ#~Mk=-O(rV;*MwCm`eaPs{0hGXDh$t_;d z#f6?_rJ_F^x68i29kKMS-Lm}kr@;Rro z9CK%@Ky0aDY|jFPm0(S0{)JM*Ys9RWO~?{sgY^%W^wDtn)A$O(n=_M|_11b&beV^Z z4*%R{5sRZ|9t5~Ot?!q;DXyiiNk}sObB0(2mW}jI^^L?Xs%P@*8RbClEWpc|mae&= z9L!Gxpd2-`gEN?aSl#LV>D6cd+pDi8SirI(D2ig5UI`EmEGsWWh_BpPe5C&c+jX?4 z>_OT*iaR+R%*>lEgoOz5QZ7r(4xLh7Gq1GVj0?|Jh+^-VZS$h@tF{G2B~I~Mf$OP& zwe(w?=(a_jLOnBsw=P=e}M`(PO4_ zNpLS>u)wKX@}$H!$GU0jm6Q{asaD+VO6?Pt#g>b86K8e(^0^Aw=k~s7IgNAX-Y~8% zTz>phuk35o!3GMiEH^0e=ycx>ESJ43=|w<>k@=T5pSc$t-@z3G7Dn6sjIZMEW<;70 zENaIko0gMruWu<41@vD{7I7Ap3VwawR5vU4a4eUxyXf2zlW&@GzCLk~o;fw3&x&uk p(Z?XJbb+sAPu|}8(8YNiU2(yifwj-I0xYgZ9Cp&Z=jozq`yWf4iar1U diff --git a/libraries/filemanager-9.12.1/img/ico_dark/default.jpg b/libraries/filemanager-9.12.1/img/ico_dark/default.jpg deleted file mode 100644 index 433adcfbaa07a89b1a9decbccabd571d48dd70d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3783 zcmb7G3s_S}7Ctxk<^h2aC`_m(+&QiIJrDcku)tjExw%@76d+q?)F;J6NN1)h zrTk040S^#@1cWNJAvav1hzD$hOP>AP3GnK?4oD*t;9CHbth_7a`ab%BC4-FY?WEA2th=*k5#aiRj zQw$4d5W6`}L6$rbF~*_wZ>gpz5K9ohqt8hqbD?Isg4M>5xiCI`JlCkOYM^iHw25Rc zTrVSH4dyjsO!~GlD;duz8OuyG>XWTw8D*v>I?l>3%+;FDB5GrH>hqF_HjK}lRq3N* z5MvzXcUG4|@`jk}o}r2)xgCo*1YW09z(NkBW3L7sbb}OB3m^|?COTe+h;@=YZ`&B@a($Xc-MY35)%311r`L~h zY%501Iejw#2FyUu>U{d<>FdJ7?lzCKojEl7oWs|JFzxU1%e~3H&27j261SswJogH> z1OF~TIPQSftSB2*Y0NueuCfL%%$BD3f zOs`dTL3U5pF54m7DZATmj^2p@csTZ_6`BfA*i z9RTv2+Z$GsXgW50Y^J50cF9 zH)>#Oug#bMF!@)kS!a7~$~=HQ1^~C$dTriV69;SqI5bh6r(bA^hcDh107ItVc=LD4 zAp&dDRg>uf)+_!7fbR7s)3XYbsk;*6cK|eMP1m6)YOy90AR&QNeGmYba=}84F9V{D zk^t9?0j5xcY&ePXwsJTCr5a$Y98&X1BefPsTc4cm92=uxJ8i?W2-S223C{+GX_)=Y%G3-0;8Pc^I17J1W}SS_*4AQuCHhnija(1j=8wYSAHS_&`~|)Zgv0 zVb_+xKlC2u1NNOf--wZF>Y{3PRz0l>D_m~xF)L_D0FsrG!{aV57e1O6Pz10P^$ZsS zMKdH7=ruPUaQQUj=FgE);+F=7g)2~>098|5&hr|@(Py32!G1HlTGU4;taWJb{P2ol zQ?h(l@ORgLY&{iM`1z(av-3x(^BzS`$}M&e>^LfkIVFiX5s+P6aCPSQZ%-F}G}L3w z{nH^^T=rHU`y}wAlHUt{#gj55?8}v7bpQUOG%@WT?@bCy zEfMl#>4ifzv|>!mVIvN@&mUt!W|q2V7@gmzRcm$|f3&>-T-@I^J)>^bH?;*mi>_ z4qqT07N$_`Y_evH7s~1W?(R2Lx;Yi{*=08!l#f;K{gD6pVYUC&>~Zcb|JgG2xZm5i z+I}lZ4bj!S5$7l>Ul#6AuDrbMrXo@C%3)*i{g~Lqhv{XGkKLEKKS z^~%o3gWoOtIit#+np>h3objKNzP8$L^@Xy^JEfiL;|DBBIX$auYm;kTm8Qk%rs{c# zPvgm|e}3vT_{^=Q}o} z_hXVwph-&(7{0m8Z*((f?=ANW$@{)7ed>CU996#_loE2 z-|$6vTXcOw#QCbhNBpgG-^_Gn?nKUx|uZKh?I*zSpcjT}(BuDLvp@DSmHk znAf7)ryrf^7*Q`CJYmc?@wLv-Ltxy)ai8Jg0pc zR~lA?CEOu`^kNS7q|(A)oOp62#D8}s%!J`$QUoxmwn{-c4+YxZ`H|2p6zb@YicF?M(SNM-wu&F;RQseT)dU1>Pbuvy6|&kkBOa_pYXblHs6 zqecz%b4vX6@`J;}uHA4M!S(DsTQulF3H7e<-nS7Uqm|OnnPVP{7GCiASJAy|GQ%L= zyYFvo94@X~{Cm*+Lm!t%Wji_A`PSy#5U-r*yTV`YHuBXY+TE8M?EPf!t0Zx4-B0ai U)s)3AZ5UPi%|T&En(5O20Ih7m)c^nh diff --git a/libraries/filemanager-9.12.1/img/ico_dark/dmg.jpg b/libraries/filemanager-9.12.1/img/ico_dark/dmg.jpg deleted file mode 100644 index 509039ef7c0c6ed1a1c0fa5a661330d0eef53204..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3619 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/docx.jpg b/libraries/filemanager-9.12.1/img/ico_dark/docx.jpg deleted file mode 100644 index 9b0bc4b3940e66cdc5ebce60cbc4008af13c41c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4075 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 S&G)qb@Qz#3g}fEI*8c$n9ZWy~ diff --git a/libraries/filemanager-9.12.1/img/ico_dark/favicon.ico b/libraries/filemanager-9.12.1/img/ico_dark/favicon.ico deleted file mode 100644 index 73837074b18ff48735fcf5a33cc8c6a09498853c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1150 zcmbu-O(;ZB6u|NO=J|@vNGT~7>yF5rQH494Viy&5I&Gh8V}RNt4k7#Ky=XkK>*W2- zO72CiAJ>p`7qO02Ea1U$oT%-W-*A8$w4oi%*u;)^PtB=^>5tj|M&_4z#U9qM4cW8L z)8jBtJa=M*{xi?KoBRnCcF$b$Ki`|I)f!Rz^<8&TyGM!b*K;zdWh2W*egE?*&X@1c zulJiSvMxlwe5-m+5BW1%QG^PVB`LS{eBuT!p!eTE{(=Ww;Rf>Vyrd@NS$|>+dVUUh R2Z9KsF=E#Y5-ahq@dHtmFyR0I diff --git a/libraries/filemanager-9.12.1/img/ico_dark/fla.jpg b/libraries/filemanager-9.12.1/img/ico_dark/fla.jpg deleted file mode 100644 index e8757e637d54d25ea9463e59e533792973abb335..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3608 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/flv.jpg b/libraries/filemanager-9.12.1/img/ico_dark/flv.jpg deleted file mode 100644 index c53f1357d26860de8075242a2f0abe6e14754d10..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3572 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 Uj$G~U_K%LB)Y~C%Y_zrfADhWeZ2$lO diff --git a/libraries/filemanager-9.12.1/img/ico_dark/folder.png b/libraries/filemanager-9.12.1/img/ico_dark/folder.png deleted file mode 100644 index a5fac96d05b3ba566375d81fa94f660acf7bcb5a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535 zcmeAS@N?(olHy`uVBq!ia0vp^RX`lg!3-q3%M)FJ)an4A5D*On4h{~+#>RSjdfM9B z*4EbM=H@`Ifq{Xpt}al-$jC@vU*E*U1jsNnGz5wR0gw&h0!4rTs2)Nhi^CPb1>p>^ zCPPdGKykPrL=9BL$gt+g^AkX~T9gF&1v4;maB=hS^6?7@3TbK^8k<;I2Zm?l=H(Zc zl$KT0O`W!M?fQ*-_w7G&?D(nEXV0C#`RMVhcRzmqS~IV32GESho-U3d6>&)l+&xW! z23&3jH6&OUCx{e${xq4VV&{qk!)~31SgTu#5*O23ZhQWB{+X@2 zFVD3tH2%+Bb26nyvsb&jRC?-ecg{B#7+)@BF+ct!PR!3b=To7qU$}F}J+2FE6Qjdh z${ObQ*mL}yw{(B6&{~_5*_}~Sms?eSnDSz8$@SZvj@6>In-_44zSVuv-nB3K!aS4A zOG~6(W`QWr$!fkZ#@qky@j5Rycg00q&=$RGe{}l(;D;#+TpK*HBmzV;JT@BesKY$N Zz`zmUek&^CzCO^q44$rjF6*2UngHF~w6g#J diff --git a/libraries/filemanager-9.12.1/img/ico_dark/folder_back.png b/libraries/filemanager-9.12.1/img/ico_dark/folder_back.png deleted file mode 100644 index dc0786ec6cea1394a7bd1c394727ce9604c9141b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1128 zcmeAS@N?(olHy`uVBq!ia0vp^RX`lg!3-q3%M)E07#M2L^NvAv_Sw|~OKsWav-ShQ@-+I8zUZQinN`;MKvcJJMP;NX#? zr_Y={cj5AtYu9hzx&QFV(`PT2FPYU7|t)Hku3cJ}G-&`8KU6hAq87==kjTKgss` z3im7Prq4Y3|MX{@^I+sJ+563aVM>$D(hVQ4ggNY6+j#l@iR@3gyfG@Wm8?>Wc&ze_ zi%Ql!NxjWz#Gk2bl(bYlYRjHQA^OHCo?nusOZqNuiu<>VF{4JNat;cS?{w6kwl+^nZGMyT_}1@~(|4b`Rj$vmG!~4%eUWdGvtt+AyJJr~xZ4FB zH20p+@m5sjlIUFTd;0W=1(s89X;)4)OUn87^~;sbpPn4~@#Dsg7efA7a(8zd7yUhS zbKxSdm1_(8^fcXbj`o(6N#|@X@p0Lv_D48-ZE>Fs&*W1te)Iec*O7NvzUdc_ZnW@K zi*#)nztpWvUTgIJR+@b+w14~dIW4^Kd-mDcpKMT#?^!cAwpZUXC<(25)zVb5ySm9# zJyAio!Oq^ais@}a14BRtdn!Y-+0W_a7ooAaCw|FmjY&OoIxYiKEQ6=3pUXO@geCwO CHQzk| diff --git a/libraries/filemanager-9.12.1/img/ico_dark/gif.jpg b/libraries/filemanager-9.12.1/img/ico_dark/gif.jpg deleted file mode 100644 index f479380fb0db7d03a6580c674582f7f2fa9acc84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3754 zcmb7G3s_WT8vf3lb7m$kb3p`UL=T9~{v3fgYcF_8<7qJKz8Q-~aya ze>vm$%yAhc8L8>1KoA6^;RhU71c%a-lb5RVRH^A%3Tyxn?A4gfdL9E{Fxo76$|R;} zaWNz41s+TWPY3`{jn-;TRI9T93&-W2 z_zdIbUTI0o8^MiQjbb6<5R7-4ZAn~wCgQK{RRxKNX94hh$}On{!+hSub(Q&x5c^@g zOlM2aABoo)OLJ6+u`h3Tl_`_U!*M#b)@1Y&f)QV=WYf7dMm;2yu_+3~vk_0Nw5N^a zCo`-y3%R&6PhDkl4r0thT9#=t)QAHRueX@;xUo<(xtrB1xv?-m*LQFMtu%9 z7S5Lvu~z3CF()}-tIWrJ%JrpUZI=9zzEp9!E;W6Gzsjt4?nTr_?XlSNIBl4p>e5&g zO2n9ly2Tm`INuP{lgczHoVO8(AAv$b11y-J6l*OQ;Vv+c2TDl7rx`5RQVu%MV}!+4 z79%>s8>%pNf1cXO8Sdj|R5*JNaJ_Mq`*VgzxIV%$QT~*iipKx>R2CIa&7d>!@@%Pc_(aWKKsRBy9??hq?MNYb{H4+K)HhL^bYNn%wP} z$2DWrY#QqTSkZye*@chw>4Q~AC%IafZtBpZpLl(+3RJ)6FWpZM(A`+~(ihzQ=|1`b zetIDhS3vJnWI$Cq=So;zyzp^zXh)_EG+2LuJQHdiRXT1(%Z-}?+%23F>@zt( zqgSJ@-hV9a1n8gumFQqOaxLg8=dclKG3(fKGNP24N<~uXzuL9)xV=28g0JAG@DqXI z&*I1NBl#H|9zA*dP;86CTH#VZd~#fjaWi1Yu+SA(o^a=`7v8&9o|=h%>Z{B9F9A?9ge$AnEwL6alPXUSgly0D+kEV=5Bou0!{efMU5{5P8$&b zv=akl5Hc6eBf>^FJb-6(K#g#?JD)4uU5mX(p1ek$i&57|y6_T?>bM6nDzi;z(ABYJ zOld8Xp;jmjI-`z>j);qhig+jsy|l3wqejojS43)}*oPwL#X0&Q8F*YFxr(NFq<~Ke zNKzo6X^JltNTou7Q0U<)^75GA?I{#`P4oAbi30-zJ-nno)5Ja^aiEw>LeMlVAO+qO zhZ}t}8Xka?8&h^Yc08H%&a_hP4p{s#CYAUml&Czi5Zw`Ev?G%H6(O zL!B#E+?g@}WMD$%!&!G#nHhf9x}zeB{?k%$Hg-oE{&0bgL#wZ1I(Y^Dot}W1fqaUHhr|BkhYD z{9d=0?tWkPhpqKRp`D)$eYtqsrMYJ!mS3K@Wmfn5>XlE&-+A}-!invM#)6iL_Y;WZ-yrZt3G*aC z;2siq(A-|<3W26XQnb{^5+sk!-Mre z*B(3g;khE!hi&&JzBbDNky8g+BKMzVgPrRJH&21?MiUWfbA01REhYWA-F&H;a zIv4wn@_C(XNmEBm{p)A12Bh{33_UCR^vLaIn_WQnJgd6WSGw)H)SjMZiG5=)w`QTZ z_Xv{5Cq@kiLJC2VxrrJHBVW_dUacwRXu$@D;xYOf%;;b`)eOP?L|w#EAOeEZ(joSoTW;(^w{ z?<1a5nW`JJp6^uTp8Lz9)qn30{&@78!o>rk4YGxhd#mtpcC2{Q(A6{lJiq_IB;Tq- z3m^a2-pVJQL-EcN?Yt-PP`eAy(}~wkVel4yfk{4&w=RR#Z){a=FH3%JFFOh7EE-Ew z?o&;G6rGhPYS!G8FxBk~N*Z>(>2g-`v+stm%=(}O4IYw{UIkO%p7+bN&oAHWVx(au zr8(=TzM%J%0@HcwXx!|*zMkzj3%ddieJ1(3{Z6rBk4o*=06k5mD-BP*t&@=-9_!zi z@xo1U$K|*DTkS=J_~lEXf4*UWq4iU;!~xf4bS+qW=#;#*_pSG;jCS7qn zN*&zKK3O(7yJFM7L%h$QnV8vMFrhI-)}JuB-0!71GsE}YI?~^68Bizs&}V7$t6|L( s93WA~MXQ$!D&}N$h9zznl*EKBIp+Cd1JAd-bB$CxC3kX^sov51KS1K1&;S4c diff --git a/libraries/filemanager-9.12.1/img/ico_dark/gz.jpg b/libraries/filemanager-9.12.1/img/ico_dark/gz.jpg deleted file mode 100644 index 414d5da6fc4e3c926d0d2c3fad61ded968eef4a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3372 zcmb7G3se(V8vZ9UlSBw1AiluLfEtli41ywyRzi5oBZfzPZ8eVpQj!oR!3WD$+Ox-& zszRVppvmZELNH?yC5}t*-92wxznh+EU%tF1xz+tX<9icM_7&aOa!< z|L%Xk|G#(cjOPo_4Nw*47UTj&QIL;6@Z6FeD$wZ`>J6p21w}dN0Fdo8I-NEN2Vi%& z1w&pIH)rlVPSyhw7y+RW4WUM}%c<4tivSzplIy_s;4{ET0G~{JvVS1^XLq3%-em@$ zw1^V{B#~7@ZiSaGnci4a{sQ8m zXt!A11?4__qr+5EiWtXA+H31(kvN3YZFcFfmJpBlS`A-7))@8BVBxcK5Kllns-_{| z7oRS4EiNN=F-~KRt^_g0p@o->g?hx%h+h}#3}i0UOtCJ z=E8g#CGQe*#F+GLcTG9&Q!K4j87J{>3{gNZk;#!!5>aQrjfN&qF0;1RmQ6s=x|1wD9QV z(PE{-pcZXU=IKR_cT9j$EsnlTM&m3`=6GkgjhK z8KdU9;0k~XE6|_a#NaxeZ8|#K@8K>phZcOIINJoJ&#Eu`HG7-AjC~J#H87sN!d}H+ z4`^`(Y@#ANs%O-`Cpgtc_@g2QOzG)q&aO-(lO$rjHQ(1CMVK-?{JHQDMMPw5cqHO*5`-VqayPAtWZKf(xsTH{+0O4{JGgbu@ zsT)~lZ)4CPRcY8Esgn4VC@wBjkLu*8nPMf6)TbWz9;MHhR-W6vD_hNE<_v1tS8}i1 z11YVOcG)vWQ0wUz+j`r7>aAFasI_-{MwJh>cgJ*mQ}G|ol>6h`M;`mU*kDU3J#uIF z_Ax?ZU)m+xbyAp!pn8d7yi;Q#XHvSS5G4JCi7NcQq?tj1bSS)!U{sNV<3?+eC#MRo zby4xN^@c^JdS6!3nUenwOU$a|)AH0!zg6^PSM-Jd`>nb}B?z&RD_wb9~UifUn z4^gq>2feE}kl0}``>m`$HP4x*GE4{oBPX{nzn;S>Nh(_mv(&g z*6GwodmGkoJJ@oic6HmOhb!79Q6srunQzqqV&h^IG_th@w(?;Ko9^F=& zJhZHO^Kf>`$=ds5VaBL%KLAU!{+dt_5vNJk&Q{g;W$KNuym_;KU1r8Th<{=KnnPjV zuif_hWnVNcS^3=J!Ldgw(ps{Yk2^DeRBP{olPj0o)d{~iaN}jw2KRgQ>sM^(nsR>1 zTcP#MW507u*IBvg#?o1%ZWX~b`suD|a1ljiMD73!Xlj*Z2gJGYE~`}p>aO+~GXR{z~z IzQxn?KLAko>;M1& diff --git a/libraries/filemanager-9.12.1/img/ico_dark/html.jpg b/libraries/filemanager-9.12.1/img/ico_dark/html.jpg deleted file mode 100644 index 6bb674362029da0c86910b8b32cc3a6b1ce55c32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3719 zcmb7G2~<;vF!92 zGg)yn2;gaO2Y+zaXf5U#m1+`TBV6+A-R@lij0A8Y_>jN>o|)RfRdoSNN3R& zA}$3G8ntHL3Lv_H_R$NhX2jwFh<$hzh*&{zz5~Y-oa?~T?VQYvIOGtmQmtO2LtKG) zL~ajzeh=)>fDDY2$eB3apk+xdRD4mM!N}Pij_wKW9?ZXkg~npc+1>_X?_rrYH5H%1 zBzHZZl;Om+T8(ll;%Cu*%504#_92LG7thOzK|BmV;GM@OWI6bPapn5VX^4H%t}|GZ zGoAKwQ*QcX#5h(^H?Js_#37thT1y<(5&{vo>bYdH#;At|9T%@eJOc4ReQ}aAKAmDI znM&;TIOY1dbi^2k<_k0_D#ZSXm+?gzWG>W9*Kx)~G8e|DPnfMLrw00#$(T;&!h9Ji zXR+sqG3i@YeJ1WxGM0(7@|n)D%*;GPLb8)zVK& z9@-wyQ`tF=G2M)O`{-L_G|uvPj$?-Jotz@3AERI*@EgTUV#YJ0nK8gJ(ac0<0uztc zF-(+8fvSg27V_bHRO*N`ABu5iq9Yq(SNj(SyT-7K`MCz|*;ju-HQiYjb^9@nD`V7L z)UyI$!3uO`7t*s%Co2y4xjgI_O#Q429w#ec@{{T-ydk_L`~v%CVN3UT;a9>I{4_%h zu7J_5s1Q{d>?>h$@j`m#(11)UXs~ZXUJ+{TQrc@p^GvJ#yFH{5+|u-W>9BZ2w^i|_ z;wQxyiYiW6erb!4xS(Iu$ch`Ko|SBmcrfVd)a z8E?qfTiI}hViX&LuQHBJHfcjguo|P0wYw}V&sjLWgwurrc@L6t0Ka9}-*1%f*>0OP z4Pg8oytB@A+h!I6Y_|aP8`*6O#yhd^W`O!gZ82Zsh=(uU{{dL?BEs#zDUVpZn_6wQ z-|)T?R|9mevDrH6Y_`s~F@6ic5u>dQDwU;%Jb<(`a_fTxgp@a4)c7(W+9-bz+A%;1 z)!&6Ps9+~Y0I<{mjFUs|eA38Wi=&-SL9M{WD6gemIEPSe4`JkFv(->&DCcx+ZW)`R zQYID}Oa?Y0bWCV?=nIpumR628X^gC*G-7mQSS}Z)vwa0|ARvt1)C5J!13jHj2I#0{O}^8BmOXqRA>c8kUL?0VVI#SHT7hR;h7j3F<*{4~|c)nD%CI<3|r-3-VIG^SN?w zc*W1|6@J0qKg0)}-6rSyU%GI3cIn!f2zSK?)%l*ALdvH1{rXh%@&$`WeDwRvOLwlJ zHw0Z@wfAcJ#gz^FWQKzsx5w;RqC9o!K3$ho6PUAk9?4z)XznVz0-B*qdUI6_F>-i);{$M=UmtS@_cE+xIImklV7dw$oe(% z(w%pwhEjj+NO)n|$A@1wW^7T?v69bg3v`#uvonTPRj%E9W_a%Yn$zQQhMD$?6Vq@1 zdFhJ#(ZG#!ZfkQ7CI)?0Js`_#V$IftAHdzuSH6>){5v&sNc7?g%XRgclFU!Ds{5x0 z8aFn!A8PlFP8;r)^X6;(gpP!ZLH-}l;@4NMi#oSWpXKWr^Yn^>1s@OH05@B-*d~)-DlG(J zdw0_6hJK#!H>PWTt;(sjP;GUi@V^!)!ZCe_;>n-aD zfPLmg>pR+YWq(fCx7if_@ce5+|Bw*@m7--$P3kFC+k(VtbU^>u$fO^RUhVsgRlUsm z`jQ1AU-z~=(ZnSM>h`ykma=D`x#%XJZG&C2mKaU%Zn)TU>pda%b(#fmEw>w%6%n$C{sh*wQ4oL1@E(2LAT= z?B81dD+x(?6+Soj-XsEs1o=@BxQHUPzykgvD3I_MREQA;QLG^e5)BC?L6J#SoO5%i zAk%GX6%d)77IjwV{3|F!v{?V9MWD7g+XvK6tyQ~O$j%KRfRB$p`+)Dh_nh}T-+RvY zbFs8oz5!ukoGcCqf`A140n0t!Ntsmofn1RsCz}FMgq7Q^k)BH_G@pBYK=(+K=9FSP@7aa zhzkH{ohsL82H@UD`_z@@T*SOlh+T~+5V4rWOM7t)i!*z1nw68HkRpfGDo|xB)reOk z4$K^2UpfHyYCs0YiPz{gMy-lrYaurpva~vl)zRC%!##lcHkhN!$DFOr8+#|y^0_nd z8NlYAZA?(uaD_@4I~Va7v^V9NC9K^a@uU3Z^P&-t2jIA58RO>l@;MQO*(s@r-O;Yr znq?_Ad!arvDH$=2Bq(xll7%rP0N+b76e4G1n}&X&^iGx+Hck z%$E{qOx7GRCfRAuPQiW3j-@7>jVZRVRC<;+PG;k;&ed7>B5I?mjrj^z8^))uDUGr5 zh%pZJgGN7(ts7!`xLO&*);1XN446+SK?4TJ#9jq@=mrK95DyZ3=7JGDS)c_SS~Td@ zphZgzh2>~_Gf!^i^p5FgEVYjAWJlvHZ|3yQ&}HKoC=W_ZO~Ai!Y8Ew}no5NMLq$?i z)C?*HtzlHSU4eXnP6n1j7b@+IlLz@YGpl1hNJ>ZM2iV6j#l{b`s;gU{pqlEh}$!|fjC7IkvbO{a^iA^BbPrSH?7^eyb~(Cz)>={C9@ zf9^muu7J*}C)PAD6#KAo&mM?DIK(;S^CnE{T{XwnvF>>lAt)S z-zxr6{Jr>=xKdm#emH23{)mIBM3$4s$+P6&$x~!AFk~HBPku%=l84FD_Ly&8``#$_ zwYTQW+SqK_Rp^^zfs9h8W2`O{W7L>5#uXZMFtFc2b{xPnh4uSJ zxL@tJnP&q`|2N)Q*ZOVg`2dGZ03H+jZ2@>Ey6puxIa!r&T+tg3KfG4}Oj#2`t?z`B z1n;K17RxiduXx)4y2~t_c8;1k1Q45rf!`}I9WA9oVZF_PmICe&11!>0%S*oQ6CMM^awK>{C zjhe|^#U#pO<8!onEi)lFEI2fH(k!f{S!2{Ib&R+mL>a1?6f!l;(gsrCu#IFpn&yx^ zF2y5B9*?FeE}th7@p*i{gQLL7Vc1YdKHtg5W2mRImzS4=lgP!#*+t;&<;(^lXqx7c zyrC2|)Y*aW;QW6#%Xtv-VIdTf#Ax7%2vS5?8o(3NC-Ilf(AKy-K21_X(CNzle>AvR zTEPkV93d&h%6+?bpqE#Eu{NS-nZSzrJ2 zcgnL7>-1;0Of}^{Jn~X`w&C=LtL|=XVJjngy)tsEB$6N^3F%u1oIXOR5D458j(n_U zZ^KtghHZ%Y3z=}g=q!++G%T5DP#xJESc8?Q}pHEbyyQ}Ml`x~Qu-)a}@w zdkH?1Fa6c+U(YkPS9C0jEIaD=Y@N(=%zmH3&dPhco_;Dh)I8T=S5oScALl+OpMCqf zD5>D9vFYKPJSw(-a`x`My7LXiwPdUy&7rC)Di!{+_5DQ&r>UL4e);O7$>V}d!|Dq@ z|MMdYVCBXMu^=>u;`P-9cc{oWBw9R2sLVUcM6D~UtbbzP0Fk~uZm;AAYwCyZc>3f( ze73%IO~~fQ-k0||-Iqb`m9lx|tM zx46hud`@z0M?u0#N!^H-8KeEHf<3!`N=UrlrtbK9-ql~m-0P53mYR2;6y-1Y>a#Cr zj*7XPIz2JwL{xD5o*hqQOWYqfJ!VOsOuuEliY(ifNOv;Jm$ zJ}0r{!`Pp1Y)JoP^~Ju^V?A$pfCe-YglqA2Y6W%#xL^;=TD*1MzSo5B+G|z< z*|kx+zd^sLtVk@U)1$v2kI9`!X8dtk&-P~F4AGE-f=8}Jn?(uZ72XqTHmy%{NiMrw z^8C9aTchiIKU`m!yimEoBUHUUZ&X$5I+@UM*om_Bx~`jTm&!KOICRweep|Qy!KPOp zZM$cucKD{4#;DjOrIVKvRC?jZY8|yUuxG@O`g1Pk8#7YN_M9kC-O%lfkiPG& U==pE^vdV2`T8G0Y*I4fS5AsT9EdT%j diff --git a/libraries/filemanager-9.12.1/img/ico_dark/jpeg.jpg b/libraries/filemanager-9.12.1/img/ico_dark/jpeg.jpg deleted file mode 100644 index b4f258a742e86858281211ae7605b69cae66e2f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3700 zcmb7G2~<;O7QQd9KmyR;yK+3RtynWja*5=(Ig>Mmt(tJ5p%ozLyZ7$79d@f%m@L`~CO- z?)|s8{^|M#B-t5R89)#OEW;1Dt_wfNQYxQNYw|L(a#ZL55dKwbwHkRefXVEzX)@F3 z;*wRgupf9Z4g4Sk{Ioi|RiRer05+D(z9+W3{{V~xaCyP~{S(>0`{t)->^cBKgm#PG zt}`L71K=BVR+|Gr@GaVt*Ep<*g<*&TZ72}2oW+%HoX+BMH!kKlg&HMtSgm4Rl~#|q z0daKsID6$d?ACw`jFZWj8Jj^zv$as$EENVL!#UiKKX8v@J_wqOPRyBW5%~1CR~IbD zcNCj@m2H{EgWGgkRRQ8zXz#T;(pdW(#5bJPMGD080Co_Ih)9ZXROn%iB|JSc9*mK!XM{Ar0SFu%V{{3}8eHgI)$L z24WIaqwW4YHOF!H8Dms(y$9IdILiGw?hyt(919gp$*Fk!e}u}R7E{So3eZ$4wUk;y zrK2^4dc>dXI@Kfv$9XFvbySbzQ%{#E?+ zg92y3$SE?RDg!qYb}w(igd9#H(*at1UPGP*wT>#CFryXb=8!QDTM4Eq_iipUMvqzL zpUZE``{eENH|77HFveKK2~{Fn$b;lD@-TUXJPR~=f;>qcC%egg5mEOrMNpa_*1U=4C@SXH*dW>||+$L|x5QYwOqrLumvYLnTuJgP#V5~K?hKnvyx zQUtMrY!;91Ji%P_rQlQLRqx(8UdDtBm~kwuiZ{*zZq>1CmF-=Nx{autaWHjwcK|3Y z*0nZ6WtD@DlgpE61zu$gon_X=MAKTMk>*@>+Q!%!TP>rH0rnnb`vKh1aQ7P#bbid{ zSOKv32RySbjM-K>0Xpme!3krwC_EEoy8%8()H!Xn?s$0do&&H~#K&>p3I8-ao4#_n z?%;VP+yyYQ)8+bgkIOak2FAY%aKh-i2J2OIh6;ccE7(&XM8GE|<3Wv=0jrG&0X~NT zvWZYH)(}x14iBKo0F;Nrp80HJ&syy5dGp$MUPgTz>BWz+RM&5ikY{xmOon6hlfi7D<6}}{;$jx&U@aYt&8#)j^18&t*ra6r!g$vePy&x_B>Uj=d8AN42}x2Y zd1Ff1nh(P}d*3;g+A<hp!AS6C{zF&#u zuHT#*eoJ!W>AxuSpV9{^B_;7&=3XxJn{9dF;VnstPPus{4H z{gupeZ{WGC885$d_*&exn7u7?!)~rBY3g3S`*y_RJ)MJBe)#fEXWjG!S;qH{&lE@J zZL113?prWj6`oK!?ZZ2PU(O_sSk{#akKOLQQhYlDQxwgPTAwfr4@DQCSSwg?)sUI(&1pN z@*K8^6#lX22iFLY=10aVZk?3KwRBDUes$T-(Iu4{IpUvoc)d^5vm43fpC?{19Xb(n zwz(`+7BRAO$9u1DyrfI=*%4i|eesP~eA@7@(XT++}~mvrG- z_u!Q(`J(rJW{A(ws>xn^inz~1!Zt?6eJy9W-=xoA==tl7?A{5SUx6bVm$man+^ zv!*oT`5?y&=Q<=$J0(B9d^-AE>m(mqBTCp>@l996*#JS>z)!`iV-+nw%}zTr_dmzq zd1LFpUb}FhX%V!yg%HudHrKA3S{iWvy}u{=S=qT@Nq7{ig nfrouJ%HD=b{lS=9v(h$%o^4A?m28|9)t_Ge=a-YZUH$(916_s= diff --git a/libraries/filemanager-9.12.1/img/ico_dark/jpg.jpg b/libraries/filemanager-9.12.1/img/ico_dark/jpg.jpg deleted file mode 100644 index f479380fb0db7d03a6580c674582f7f2fa9acc84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3754 zcmb7G3s_WT8vf3lb7m$kb3p`UL=T9~{v3fgYcF_8<7qJKz8Q-~aya ze>vm$%yAhc8L8>1KoA6^;RhU71c%a-lb5RVRH^A%3Tyxn?A4gfdL9E{Fxo76$|R;} zaWNz41s+TWPY3`{jn-;TRI9T93&-W2 z_zdIbUTI0o8^MiQjbb6<5R7-4ZAn~wCgQK{RRxKNX94hh$}On{!+hSub(Q&x5c^@g zOlM2aABoo)OLJ6+u`h3Tl_`_U!*M#b)@1Y&f)QV=WYf7dMm;2yu_+3~vk_0Nw5N^a zCo`-y3%R&6PhDkl4r0thT9#=t)QAHRueX@;xUo<(xtrB1xv?-m*LQFMtu%9 z7S5Lvu~z3CF()}-tIWrJ%JrpUZI=9zzEp9!E;W6Gzsjt4?nTr_?XlSNIBl4p>e5&g zO2n9ly2Tm`INuP{lgczHoVO8(AAv$b11y-J6l*OQ;Vv+c2TDl7rx`5RQVu%MV}!+4 z79%>s8>%pNf1cXO8Sdj|R5*JNaJ_Mq`*VgzxIV%$QT~*iipKx>R2CIa&7d>!@@%Pc_(aWKKsRBy9??hq?MNYb{H4+K)HhL^bYNn%wP} z$2DWrY#QqTSkZye*@chw>4Q~AC%IafZtBpZpLl(+3RJ)6FWpZM(A`+~(ihzQ=|1`b zetIDhS3vJnWI$Cq=So;zyzp^zXh)_EG+2LuJQHdiRXT1(%Z-}?+%23F>@zt( zqgSJ@-hV9a1n8gumFQqOaxLg8=dclKG3(fKGNP24N<~uXzuL9)xV=28g0JAG@DqXI z&*I1NBl#H|9zA*dP;86CTH#VZd~#fjaWi1Yu+SA(o^a=`7v8&9o|=h%>Z{B9F9A?9ge$AnEwL6alPXUSgly0D+kEV=5Bou0!{efMU5{5P8$&b zv=akl5Hc6eBf>^FJb-6(K#g#?JD)4uU5mX(p1ek$i&57|y6_T?>bM6nDzi;z(ABYJ zOld8Xp;jmjI-`z>j);qhig+jsy|l3wqejojS43)}*oPwL#X0&Q8F*YFxr(NFq<~Ke zNKzo6X^JltNTou7Q0U<)^75GA?I{#`P4oAbi30-zJ-nno)5Ja^aiEw>LeMlVAO+qO zhZ}t}8Xka?8&h^Yc08H%&a_hP4p{s#CYAUml&Czi5Zw`Ev?G%H6(O zL!B#E+?g@}WMD$%!&!G#nHhf9x}zeB{?k%$Hg-oE{&0bgL#wZ1I(Y^Dot}W1fqaUHhr|BkhYD z{9d=0?tWkPhpqKRp`D)$eYtqsrMYJ!mS3K@Wmfn5>XlE&-+A}-!invM#)6iL_Y;WZ-yrZt3G*aC z;2siq(A-|<3W26XQnb{^5+sk!-Mre z*B(3g;khE!hi&&JzBbDNky8g+BKMzVgPrRJH&21?MiUWfbA01REhYWA-F&H;a zIv4wn@_C(XNmEBm{p)A12Bh{33_UCR^vLaIn_WQnJgd6WSGw)H)SjMZiG5=)w`QTZ z_Xv{5Cq@kiLJC2VxrrJHBVW_dUacwRXu$@D;xYOf%;;b`)eOP?L|w#EAOeEZ(joSoTW;(^w{ z?<1a5nW`JJp6^uTp8Lz9)qn30{&@78!o>rk4YGxhd#mtpcC2{Q(A6{lJiq_IB;Tq- z3m^a2-pVJQL-EcN?Yt-PP`eAy(}~wkVel4yfk{4&w=RR#Z){a=FH3%JFFOh7EE-Ew z?o&;G6rGhPYS!G8FxBk~N*Z>(>2g-`v+stm%=(}O4IYw{UIkO%p7+bN&oAHWVx(au zr8(=TzM%J%0@HcwXx!|*zMkzj3%ddieJ1(3{Z6rBk4o*=06k5mD-BP*t&@=-9_!zi z@xo1U$K|*DTkS=J_~lEXf4*UWq4iU;!~xf4bS+qW=#;#*_pSG;jCS7qn zN*&zKK3O(7yJFM7L%h$QnV8vMFrhI-)}JuB-0!71GsE}YI?~^68Bizs&}V7$t6|L( s93WA~MXQ$!D&}N$h9zznl*EKBIp+Cd1JAd-bB$CxC3kX^sov51KS1K1&;S4c diff --git a/libraries/filemanager-9.12.1/img/ico_dark/log.jpg b/libraries/filemanager-9.12.1/img/ico_dark/log.jpg deleted file mode 100644 index c2fe0e7c6934d35614774e055b9079361c736c03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3804 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 Nx-%|O*PHC@`X45_7oGqB diff --git a/libraries/filemanager-9.12.1/img/ico_dark/mp3.jpg b/libraries/filemanager-9.12.1/img/ico_dark/mp3.jpg deleted file mode 100644 index fd66149082a8a8484c4ccf579445183f5810140d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3335 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/mpg.jpg b/libraries/filemanager-9.12.1/img/ico_dark/mpg.jpg deleted file mode 100644 index 0da2aadb1a51c1bbbd4d392a0f697be2b4a5848e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3459 zcmb7G3s6&M7CtxkCWKcYh+?tDtJp%V(tu!L6_ocIVgN<0N=Pn}8X(*RL`16AT~X0h z*}ALlC?Zz7wRRPkVr$1owYZM2^?^kwJ_ZM>*ln@PSRc)v|K>sHI6D0^`R|u=zW@B+ zIsfCv{H^&Gc%~#ICjdoJkc1yF-*IY5j*VTQRAnY4r^TZKz-gb_V9<+LfTCg(uS$$z zb7#+Co!UVJuYfD~f~#6%G(;N=20MG1;Gm~IF8_a3(gfd*{WFN5Unyzp<0W$ z3h{(|2m3+?Y|(%WjFZR}bG%N&l3FPFk^-Hc6C9TAC2j}ii(rwy409HmANFp>MOmr% z3?#W1@<}QyuGgsJvk;F%`x%2NhS=Xg+*h_JCmQj10FhS#pO9nWi>6iV#Uq}8*sriG$r_(d zF_vc$yAY?cFg61*#-aK5)G12DzKCo15*3*XHPa28K9S6Y@#$|2CZ$ya-CL~BAah~9 zjEpl1Ibuw@*HoB|`;?4jCY$(d>sV$^fi5B0%C9o$g}sQ{m`1)#MYLgj=8~F^PehDy zn0~G}htv(Rc%)VxM`{~{I0|M`YT%#*^0C)IF+2knRFDWU_%r~Io&wN;9xWVtIke~~ zcUXkB=kt^T$1-M+u}~P@OGe`?&*xZX_} ztr5%=y8@+yP8Jrz_o&norxeO?W};&z#BB5}3$%}6SMm#Vnu~w_5!DQ4Su*IyIQEQD zbBSXGz=##FWjE2WPOVi(N7_B?HKyg=D{ie-komIuio3RiLRsnMSn#fp}(Nd0ZSjJPteEcZ|KkHFYPg(zxI|W_O%!C zB{q^RSq0mCjy8*62& z>htF!CqM@|s6+>gk;`LMNrj7H2}X51Csw759}~Qlf7(HA&Hm7Nuq(3jF&`6 zf+Z;g+fJS&0DTeI$J^CgPL7>1Bm>TYg;lY~nJDZ!vRBFIa@4Iy-JFT5z;_2gY>8nB zuUlAXVnY;)ci3orm2qrxu_kB&tJdpT!DVE5&dBlQoHhu^dytF+c&HNIZ`6p3gEmt- zK;#d2XI&b!%_#%eZv^lO9kd1Foj80aK+9xJ8DDORhcDjq0LFqzA;NFUEe7wVF0=U| z-d9eW0iJC#o1Zk8&ChmY{7!)5dh=~q9$%p=07y?Kw?0TgOnKo&jV}YDjq(MtfB{md zQFg4N0<9boz-k>ZRt~xINh5bHjLiuAxXRpIhPk^+rEZ>X?lKRL*F0R@DJPL^i{$PO?BMHp|ryT1E6wP3@tTz1rLo;HaL{6TH&@j0&4+Th379|!vZB(kqU2wj~ z*WPViugzG0R(7*dbLC-FVDG-hs`=xJB3rvnwUyQR-kDx& zJF63uHs$vJr{xd&Pv>QSno+Q;{oAv;fVzebRdYx4fwud<9J}^D$zSeJ7D13wm>vr@ zjf#B%L1ZIDkaQ?oBK5FE5@C9B5RZ{~4O0Z4VEsd)jb#U$JiUi2RatrJ{8E0!=DI_d ztyxN@i3XI~m@i#VuiJdTars;Q2RgDhgg?tX(B15%slIH6$*Pgd??$Grx|td=Lc@5) zZt3_SKJ^`6e};E2bZ-vJIjlI^5f|a!v(~vMtMiNfJMOhjIecsWxsZOQe6Dt<>0m>k zF(C5r;;QP1tlEtgE$=UDYkBN5B`c@yyE(1pe|I}jlpgv=zmS^i!|OF2w=6DGT>mGU z@lz+?DBXK8;mFC*o{slEXNN}(i*F7JxXaC+wR=ov#`HaVx~_+wK9_cW*n_Jx8$wT> zKY2F0HSYrT>y^qmcft=br!`y0HZS>i{JUY>tFB=o{XKC{Q8X>Kl?f>M7zmEuq?n;r z=9RA4bz2QEZ{zIh$l!FpkY%%?K13zL5fCmG+upTp zSMpm5q$k&rwY^}ckgeqTvaKW#NQtmQ44yt~qvS9qSP?zLQ(gL_GH=Budx<=KF z?au29o&9&XaU*cP{$yRLb!ghF@m6 z)+BAsjp+)@^#9-AN+&9U^HTr0YU<9BU>{+IqS%_3p>*H))npD lu*Q4q@cM diff --git a/libraries/filemanager-9.12.1/img/ico_dark/odb.jpg b/libraries/filemanager-9.12.1/img/ico_dark/odb.jpg deleted file mode 100644 index eb6522c84b5ddfc8dfb785525b64adea20581b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3581 zcmb7G2~bm67QKHSPPk&Kfl=o-E9nfwxInwi7 z_Hv6pI|nh2rPmf)hmbggbJAc>#9BgU#Mg_2bh5^%hXJFIl#DnWai^lvG*^5k!(KLw z*rhn-MTyynF%Bb6&}C>5cSQV+Xw4;ap=M^SU`{1-VSMJe&7pN^VD4GW*<>!vmsJXO zDMyUS+;bG=;XWl}*=UED=NilA7noAgUHqvwv$Pjc8@paC%_Z6}KKqkSOio3Nao8t< zWjLuDVlKd_OCq(6Ks*RWP&yF63VQ4fV1akQLoTF30zPdZqNe~%U`C68UI8s8$_t9o z_FG7Q za4XQZ(8)s~)T7eII1`~1XC^vEK*EBKrD5(d{0woN$#Cx522|6WrM20QaoicBW^2m| zfE_E)lwGfubviNiV1V1h*RlJ?T=YCK6>>gRU+xZfkE_G}GIzCkJa>h=il566k1Jr7 z6qTSVle7|cH?LQ#9BPs203G%>k!MA%O-fs>Xn|!x$7Tv0sUNEA z)RpS>>IbdnXpY#bO3Y$r5AzRZKXZUN4LnoB)G~*eB$Z6PHr96RTm<|FCOg$X;$zAxoAe$>M>R^^nENG_nkW zn@*mrJNja=Pj;(sJUMPgs|J}WrWPEo3BwB4#L{njr zgYTnO_v7R7RVMK17DGfhuQQu@$z|t7!7hkpf-wTfdytF+c$zD{->44fnr)6OfPs(j z&ibj@mR}06%?{un)ocsHJF)$0fPK-1Qn9Qt9=>?b0N4v6`$)ej&jh@it~;Gi@xGET z0(iI3>3p-+>3p{i<6i}+F*|RyE+F6TH_rjV;t z3b{hj)_EmZZd6OU%$8mB-?!~fR-fb0az5nm# zJOU~OjD~WC>I}4sVpNp#CHXS-H*iQxP{%1G;Wf-*1~3E0zbIY*^~W-0y#}zO;Wo zrtm@CtN+xTR(corK34nVq`i@khIFY{&yp>Bc7wN_>-_jZ_O7o6^z>Z+g?~m-;Nn%o zdnPnk4pwvsK34pFT(bE2;w!=D{_eOvdEly-S8^)mk3Cd#X~` z3&!*i4sGqd(r1y4EEA zGGYF-`bX+r6Q}%YZ3ul3RCpmWbM2UQ&(G?op6;`=^6Oi72Whi|hHAH;Sy{R4?EBlZ zqqb;{R}T6$@8RC?(N|9Oj!tXiAG7<76Uydp>~`02J?8Pug>z3Sa!xFL^<`>k-v~d` z;@9>K{#(tqrF$~(8YTp-I5ZS1+|37f1IJRFdnG7PVeJ-H#_J|d*YfJ|wGHQ+w#nd- zmm1C0GvWv~z;}C^nm<@Ko({QWEU?(ZnAz!ij`ogPP%VZW&FsH%;AU0TsOVan4(m|X zBOq>h%3q(I+T?vU?nuP(=M2oQs#t1xX|l~~*FN%b(3Vzp%<(Q=hjT=XCO$F{B}j-JBgfH_-Z9 zvia#o>V<{&e3sNTcgLhP%fCCLT;#iNdj1+V&tvztx2heFerKqlCzZA}-B*+_<&WEW z=qqNl?=VvH!`x6-Ngdvnecn{(w@F>69a&L6R}(dXy7=Jzu&8%ypTxvb`nYvhr#;iW zYF~Y};z)jI^%9k3Ov3M-^aGENf7114(AtKsQOV`J6D(5`A@BCxuq8*jZ`$bu=jHza DNg__S diff --git a/libraries/filemanager-9.12.1/img/ico_dark/odf.jpg b/libraries/filemanager-9.12.1/img/ico_dark/odf.jpg deleted file mode 100644 index 8f40c746036378c31397e2a0cc49a743daebd865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3590 zcmb7G2~bm67QH|J|0Kl{0w~ZR^3hfq6$~HG-F6v8 zQCoYe1VpiIm%`H4aT&K(anJ#^U2y4c8B1|m9m{p5)Xv=Z69RNuTJutQ|K#5D?mO?k z``(Z3rtKGyrzNK*14U6V20vhHl^jk@Oq`)qjZaQZPeKQPWT)C_)QdQPqGF3lm6E_s znmmP*w15ac16S||SGC4$j8`ht0UP0xXV>=nI$$J#tDztEcV++Xmuntx)&Njav>Wow znj*w=09d`oXtDr^@1s5DON$Y)qzB?|CKQNRL2!W`k0vj#yGTTmO4#|*dOt7lR-u1Ld|pyuTLR!VSM_W(V}!{pxcV|8DuV8 zFC*j4!WuCq-Dc5dW1W(*Oti(6?HJ2U$=4;PI{0Nqy-FbagxZDcgg@?nmBhDQ#Lf$?P&OeB7XG3m?*CWeUxj)`MNF(aAL zXpLotITa{7>ExgQ9-&fuoD#6&%tXfoNLcG{4RMa)7Mf=0G)-%sp_-0W8an(K$GKwE zZ0MW;Fk=SVR~OnjPv^^y`8hq@HRkXaSKZE+!T3+*m%Y!nvDdI~VefQ|XK%B2@Y4eE zxC44YQ4y-r2|HnS@WbMJ-q z5*t}9*@gD`I_H`Py(~c%AnPp~Een$Mk)=CXoXl4iE*m53hn@iEzUe#sUDl$5$(XD5 ztbTYdasqUagGzMpC2~!eRg&Rin2S+6pA&~trY955r2ejIV@NHxs}LuNM~mZu6ZaR# zio?Ze1h=0&aX<9MVxQzxZ$CLsMwb=vomiL^XPi)>>PW4U(X&yv9(D5;eh$7n01^$x zxh7qK*1|<76hpXpe3kKBYOyA4Ag9*rIl*P-OuU&l&F1sMfV>CEIDi)_;r&MWGAhVkzJoYdRyL3z>~T|U6LapcwqDX^3mUex$9AlfK@U-(@MIez$+9TmlU_4oGuU-kNit76A!MzoU%1pJU z#I)e@z3_CED8BCo6Vc$_(7#yWiCit*T#l zEUWvh%(Jq}?a46{D!2OeUa8`DTrb~uAg!=wz>z@{&+TM=*8MoN=Xw9ujrW%yH(8SkavEo*$#W5C{>uXcUI$Y1T4GGpq(BW~WohVLJ? zwPvs1QQ11EAHQ;WkL5AJ(;mbSKV`>r=fnBO$- zi<^{vwAb@_in5*mRu~>iwa?RA`~AEn4wD=r#}W`REKSb3&?xW>4v$wa$SkR-ex|6u z%#Bjcyw_eVal!8cq<^oT%^e!@++7)3I&J&p)s0KsH*c$cs9ce`rf==}xUoTWz;}a_ zSF2x~TpCmKbkSS)=EKJhm`0qs@cPJU$QyQf#mLmfL1&t^C6E5Igqj}sh}v1`|7Mjw zyr%5wj%U`}-`3@~WldbrCih-CKEQRLPyUczo3yv;4&7MuV8gsU8LAs=LRUZOcCwja ztS(2dD(-si+AE&E{FQ%G-I7h(`ioDz7man|P0}djicQy=Z=DV{f0j7iJd`E3G+D-lt!}m7((T z!4V?=a_`+^j*N%{uj++Ex1#5p{yA;_OY!N@Wy#>bnl zHZ5)#(DHRuQlV$aP|6VCJt83ci(jV{)KOGa;qd)0Q%Vg_znLtG7+mtVioQN~pnH|P Sck`w#)b@*CMP58%Yxy7chgaAD diff --git a/libraries/filemanager-9.12.1/img/ico_dark/odg.jpg b/libraries/filemanager-9.12.1/img/ico_dark/odg.jpg deleted file mode 100644 index eb6522c84b5ddfc8dfb785525b64adea20581b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3581 zcmb7G2~bm67QKHSPPk&Kfl=o-E9nfwxInwi7 z_Hv6pI|nh2rPmf)hmbggbJAc>#9BgU#Mg_2bh5^%hXJFIl#DnWai^lvG*^5k!(KLw z*rhn-MTyynF%Bb6&}C>5cSQV+Xw4;ap=M^SU`{1-VSMJe&7pN^VD4GW*<>!vmsJXO zDMyUS+;bG=;XWl}*=UED=NilA7noAgUHqvwv$Pjc8@paC%_Z6}KKqkSOio3Nao8t< zWjLuDVlKd_OCq(6Ks*RWP&yF63VQ4fV1akQLoTF30zPdZqNe~%U`C68UI8s8$_t9o z_FG7Q za4XQZ(8)s~)T7eII1`~1XC^vEK*EBKrD5(d{0woN$#Cx522|6WrM20QaoicBW^2m| zfE_E)lwGfubviNiV1V1h*RlJ?T=YCK6>>gRU+xZfkE_G}GIzCkJa>h=il566k1Jr7 z6qTSVle7|cH?LQ#9BPs203G%>k!MA%O-fs>Xn|!x$7Tv0sUNEA z)RpS>>IbdnXpY#bO3Y$r5AzRZKXZUN4LnoB)G~*eB$Z6PHr96RTm<|FCOg$X;$zAxoAe$>M>R^^nENG_nkW zn@*mrJNja=Pj;(sJUMPgs|J}WrWPEo3BwB4#L{njr zgYTnO_v7R7RVMK17DGfhuQQu@$z|t7!7hkpf-wTfdytF+c$zD{->44fnr)6OfPs(j z&ibj@mR}06%?{un)ocsHJF)$0fPK-1Qn9Qt9=>?b0N4v6`$)ej&jh@it~;Gi@xGET z0(iI3>3p-+>3p{i<6i}+F*|RyE+F6TH_rjV;t z3b{hj)_EmZZd6OU%$8mB-?!~fR-fb0az5nm# zJOU~OjD~WC>I}4sVpNp#CHXS-H*iQxP{%1G;Wf-*1~3E0zbIY*^~W-0y#}zO;Wo zrtm@CtN+xTR(corK34nVq`i@khIFY{&yp>Bc7wN_>-_jZ_O7o6^z>Z+g?~m-;Nn%o zdnPnk4pwvsK34pFT(bE2;w!=D{_eOvdEly-S8^)mk3Cd#X~` z3&!*i4sGqd(r1y4EEA zGGYF-`bX+r6Q}%YZ3ul3RCpmWbM2UQ&(G?op6;`=^6Oi72Whi|hHAH;Sy{R4?EBlZ zqqb;{R}T6$@8RC?(N|9Oj!tXiAG7<76Uydp>~`02J?8Pug>z3Sa!xFL^<`>k-v~d` z;@9>K{#(tqrF$~(8YTp-I5ZS1+|37f1IJRFdnG7PVeJ-H#_J|d*YfJ|wGHQ+w#nd- zmm1C0GvWv~z;}C^nm<@Ko({QWEU?(ZnAz!ij`ogPP%VZW&FsH%;AU0TsOVan4(m|X zBOq>h%3q(I+T?vU?nuP(=M2oQs#t1xX|l~~*FN%b(3Vzp%<(Q=hjT=XCO$F{B}j-JBgfH_-Z9 zvia#o>V<{&e3sNTcgLhP%fCCLT;#iNdj1+V&tvztx2heFerKqlCzZA}-B*+_<&WEW z=qqNl?=VvH!`x6-Ngdvnecn{(w@F>69a&L6R}(dXy7=Jzu&8%ypTxvb`nYvhr#;iW zYF~Y};z)jI^%9k3Ov3M-^aGENf7114(AtKsQOV`J6D(5`A@BCxuq8*jZ`$bu=jHza DNg__S diff --git a/libraries/filemanager-9.12.1/img/ico_dark/odp.jpg b/libraries/filemanager-9.12.1/img/ico_dark/odp.jpg deleted file mode 100644 index 8f40c746036378c31397e2a0cc49a743daebd865..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3590 zcmb7G2~bm67QH|J|0Kl{0w~ZR^3hfq6$~HG-F6v8 zQCoYe1VpiIm%`H4aT&K(anJ#^U2y4c8B1|m9m{p5)Xv=Z69RNuTJutQ|K#5D?mO?k z``(Z3rtKGyrzNK*14U6V20vhHl^jk@Oq`)qjZaQZPeKQPWT)C_)QdQPqGF3lm6E_s znmmP*w15ac16S||SGC4$j8`ht0UP0xXV>=nI$$J#tDztEcV++Xmuntx)&Njav>Wow znj*w=09d`oXtDr^@1s5DON$Y)qzB?|CKQNRL2!W`k0vj#yGTTmO4#|*dOt7lR-u1Ld|pyuTLR!VSM_W(V}!{pxcV|8DuV8 zFC*j4!WuCq-Dc5dW1W(*Oti(6?HJ2U$=4;PI{0Nqy-FbagxZDcgg@?nmBhDQ#Lf$?P&OeB7XG3m?*CWeUxj)`MNF(aAL zXpLotITa{7>ExgQ9-&fuoD#6&%tXfoNLcG{4RMa)7Mf=0G)-%sp_-0W8an(K$GKwE zZ0MW;Fk=SVR~OnjPv^^y`8hq@HRkXaSKZE+!T3+*m%Y!nvDdI~VefQ|XK%B2@Y4eE zxC44YQ4y-r2|HnS@WbMJ-q z5*t}9*@gD`I_H`Py(~c%AnPp~Een$Mk)=CXoXl4iE*m53hn@iEzUe#sUDl$5$(XD5 ztbTYdasqUagGzMpC2~!eRg&Rin2S+6pA&~trY955r2ejIV@NHxs}LuNM~mZu6ZaR# zio?Ze1h=0&aX<9MVxQzxZ$CLsMwb=vomiL^XPi)>>PW4U(X&yv9(D5;eh$7n01^$x zxh7qK*1|<76hpXpe3kKBYOyA4Ag9*rIl*P-OuU&l&F1sMfV>CEIDi)_;r&MWGAhVkzJoYdRyL3z>~T|U6LapcwqDX^3mUex$9AlfK@U-(@MIez$+9TmlU_4oGuU-kNit76A!MzoU%1pJU z#I)e@z3_CED8BCo6Vc$_(7#yWiCit*T#l zEUWvh%(Jq}?a46{D!2OeUa8`DTrb~uAg!=wz>z@{&+TM=*8MoN=Xw9ujrW%yH(8SkavEo*$#W5C{>uXcUI$Y1T4GGpq(BW~WohVLJ? zwPvs1QQ11EAHQ;WkL5AJ(;mbSKV`>r=fnBO$- zi<^{vwAb@_in5*mRu~>iwa?RA`~AEn4wD=r#}W`REKSb3&?xW>4v$wa$SkR-ex|6u z%#Bjcyw_eVal!8cq<^oT%^e!@++7)3I&J&p)s0KsH*c$cs9ce`rf==}xUoTWz;}a_ zSF2x~TpCmKbkSS)=EKJhm`0qs@cPJU$QyQf#mLmfL1&t^C6E5Igqj}sh}v1`|7Mjw zyr%5wj%U`}-`3@~WldbrCih-CKEQRLPyUczo3yv;4&7MuV8gsU8LAs=LRUZOcCwja ztS(2dD(-si+AE&E{FQ%G-I7h(`ioDz7man|P0}djicQy=Z=DV{f0j7iJd`E3G+D-lt!}m7((T z!4V?=a_`+^j*N%{uj++Ex1#5p{yA;_OY!N@Wy#>bnl zHZ5)#(DHRuQlV$aP|6VCJt83ci(jV{)KOGa;qd)0Q%Vg_znLtG7+mtVioQN~pnH|P Sck`w#)b@*CMP58%Yxy7chgaAD diff --git a/libraries/filemanager-9.12.1/img/ico_dark/ods.jpg b/libraries/filemanager-9.12.1/img/ico_dark/ods.jpg deleted file mode 100644 index eb6522c84b5ddfc8dfb785525b64adea20581b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3581 zcmb7G2~bm67QKHSPPk&Kfl=o-E9nfwxInwi7 z_Hv6pI|nh2rPmf)hmbggbJAc>#9BgU#Mg_2bh5^%hXJFIl#DnWai^lvG*^5k!(KLw z*rhn-MTyynF%Bb6&}C>5cSQV+Xw4;ap=M^SU`{1-VSMJe&7pN^VD4GW*<>!vmsJXO zDMyUS+;bG=;XWl}*=UED=NilA7noAgUHqvwv$Pjc8@paC%_Z6}KKqkSOio3Nao8t< zWjLuDVlKd_OCq(6Ks*RWP&yF63VQ4fV1akQLoTF30zPdZqNe~%U`C68UI8s8$_t9o z_FG7Q za4XQZ(8)s~)T7eII1`~1XC^vEK*EBKrD5(d{0woN$#Cx522|6WrM20QaoicBW^2m| zfE_E)lwGfubviNiV1V1h*RlJ?T=YCK6>>gRU+xZfkE_G}GIzCkJa>h=il566k1Jr7 z6qTSVle7|cH?LQ#9BPs203G%>k!MA%O-fs>Xn|!x$7Tv0sUNEA z)RpS>>IbdnXpY#bO3Y$r5AzRZKXZUN4LnoB)G~*eB$Z6PHr96RTm<|FCOg$X;$zAxoAe$>M>R^^nENG_nkW zn@*mrJNja=Pj;(sJUMPgs|J}WrWPEo3BwB4#L{njr zgYTnO_v7R7RVMK17DGfhuQQu@$z|t7!7hkpf-wTfdytF+c$zD{->44fnr)6OfPs(j z&ibj@mR}06%?{un)ocsHJF)$0fPK-1Qn9Qt9=>?b0N4v6`$)ej&jh@it~;Gi@xGET z0(iI3>3p-+>3p{i<6i}+F*|RyE+F6TH_rjV;t z3b{hj)_EmZZd6OU%$8mB-?!~fR-fb0az5nm# zJOU~OjD~WC>I}4sVpNp#CHXS-H*iQxP{%1G;Wf-*1~3E0zbIY*^~W-0y#}zO;Wo zrtm@CtN+xTR(corK34nVq`i@khIFY{&yp>Bc7wN_>-_jZ_O7o6^z>Z+g?~m-;Nn%o zdnPnk4pwvsK34pFT(bE2;w!=D{_eOvdEly-S8^)mk3Cd#X~` z3&!*i4sGqd(r1y4EEA zGGYF-`bX+r6Q}%YZ3ul3RCpmWbM2UQ&(G?op6;`=^6Oi72Whi|hHAH;Sy{R4?EBlZ zqqb;{R}T6$@8RC?(N|9Oj!tXiAG7<76Uydp>~`02J?8Pug>z3Sa!xFL^<`>k-v~d` z;@9>K{#(tqrF$~(8YTp-I5ZS1+|37f1IJRFdnG7PVeJ-H#_J|d*YfJ|wGHQ+w#nd- zmm1C0GvWv~z;}C^nm<@Ko({QWEU?(ZnAz!ij`ogPP%VZW&FsH%;AU0TsOVan4(m|X zBOq>h%3q(I+T?vU?nuP(=M2oQs#t1xX|l~~*FN%b(3Vzp%<(Q=hjT=XCO$F{B}j-JBgfH_-Z9 zvia#o>V<{&e3sNTcgLhP%fCCLT;#iNdj1+V&tvztx2heFerKqlCzZA}-B*+_<&WEW z=qqNl?=VvH!`x6-Ngdvnecn{(w@F>69a&L6R}(dXy7=Jzu&8%ypTxvb`nYvhr#;iW zYF~Y};z)jI^%9k3Ov3M-^aGENf7114(AtKsQOV`J6D(5`A@BCxuq8*jZ`$bu=jHza DNg__S diff --git a/libraries/filemanager-9.12.1/img/ico_dark/odt.jpg b/libraries/filemanager-9.12.1/img/ico_dark/odt.jpg deleted file mode 100644 index eb6522c84b5ddfc8dfb785525b64adea20581b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3581 zcmb7G2~bm67QKHSPPk&Kfl=o-E9nfwxInwi7 z_Hv6pI|nh2rPmf)hmbggbJAc>#9BgU#Mg_2bh5^%hXJFIl#DnWai^lvG*^5k!(KLw z*rhn-MTyynF%Bb6&}C>5cSQV+Xw4;ap=M^SU`{1-VSMJe&7pN^VD4GW*<>!vmsJXO zDMyUS+;bG=;XWl}*=UED=NilA7noAgUHqvwv$Pjc8@paC%_Z6}KKqkSOio3Nao8t< zWjLuDVlKd_OCq(6Ks*RWP&yF63VQ4fV1akQLoTF30zPdZqNe~%U`C68UI8s8$_t9o z_FG7Q za4XQZ(8)s~)T7eII1`~1XC^vEK*EBKrD5(d{0woN$#Cx522|6WrM20QaoicBW^2m| zfE_E)lwGfubviNiV1V1h*RlJ?T=YCK6>>gRU+xZfkE_G}GIzCkJa>h=il566k1Jr7 z6qTSVle7|cH?LQ#9BPs203G%>k!MA%O-fs>Xn|!x$7Tv0sUNEA z)RpS>>IbdnXpY#bO3Y$r5AzRZKXZUN4LnoB)G~*eB$Z6PHr96RTm<|FCOg$X;$zAxoAe$>M>R^^nENG_nkW zn@*mrJNja=Pj;(sJUMPgs|J}WrWPEo3BwB4#L{njr zgYTnO_v7R7RVMK17DGfhuQQu@$z|t7!7hkpf-wTfdytF+c$zD{->44fnr)6OfPs(j z&ibj@mR}06%?{un)ocsHJF)$0fPK-1Qn9Qt9=>?b0N4v6`$)ej&jh@it~;Gi@xGET z0(iI3>3p-+>3p{i<6i}+F*|RyE+F6TH_rjV;t z3b{hj)_EmZZd6OU%$8mB-?!~fR-fb0az5nm# zJOU~OjD~WC>I}4sVpNp#CHXS-H*iQxP{%1G;Wf-*1~3E0zbIY*^~W-0y#}zO;Wo zrtm@CtN+xTR(corK34nVq`i@khIFY{&yp>Bc7wN_>-_jZ_O7o6^z>Z+g?~m-;Nn%o zdnPnk4pwvsK34pFT(bE2;w!=D{_eOvdEly-S8^)mk3Cd#X~` z3&!*i4sGqd(r1y4EEA zGGYF-`bX+r6Q}%YZ3ul3RCpmWbM2UQ&(G?op6;`=^6Oi72Whi|hHAH;Sy{R4?EBlZ zqqb;{R}T6$@8RC?(N|9Oj!tXiAG7<76Uydp>~`02J?8Pug>z3Sa!xFL^<`>k-v~d` z;@9>K{#(tqrF$~(8YTp-I5ZS1+|37f1IJRFdnG7PVeJ-H#_J|d*YfJ|wGHQ+w#nd- zmm1C0GvWv~z;}C^nm<@Ko({QWEU?(ZnAz!ij`ogPP%VZW&FsH%;AU0TsOVan4(m|X zBOq>h%3q(I+T?vU?nuP(=M2oQs#t1xX|l~~*FN%b(3Vzp%<(Q=hjT=XCO$F{B}j-JBgfH_-Z9 zvia#o>V<{&e3sNTcgLhP%fCCLT;#iNdj1+V&tvztx2heFerKqlCzZA}-B*+_<&WEW z=qqNl?=VvH!`x6-Ngdvnecn{(w@F>69a&L6R}(dXy7=Jzu&8%ypTxvb`nYvhr#;iW zYF~Y};z)jI^%9k3Ov3M-^aGENf7114(AtKsQOV`J6D(5`A@BCxuq8*jZ`$bu=jHza DNg__S diff --git a/libraries/filemanager-9.12.1/img/ico_dark/ogg.jpg b/libraries/filemanager-9.12.1/img/ico_dark/ogg.jpg deleted file mode 100644 index 23ed22b8925ceff4621392d15a022715ca9dc0ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3440 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 ADF6Tf diff --git a/libraries/filemanager-9.12.1/img/ico_dark/ots.jpg b/libraries/filemanager-9.12.1/img/ico_dark/ots.jpg deleted file mode 100644 index eb6522c84b5ddfc8dfb785525b64adea20581b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3581 zcmb7G2~bm67QKHSPPk&Kfl=o-E9nfwxInwi7 z_Hv6pI|nh2rPmf)hmbggbJAc>#9BgU#Mg_2bh5^%hXJFIl#DnWai^lvG*^5k!(KLw z*rhn-MTyynF%Bb6&}C>5cSQV+Xw4;ap=M^SU`{1-VSMJe&7pN^VD4GW*<>!vmsJXO zDMyUS+;bG=;XWl}*=UED=NilA7noAgUHqvwv$Pjc8@paC%_Z6}KKqkSOio3Nao8t< zWjLuDVlKd_OCq(6Ks*RWP&yF63VQ4fV1akQLoTF30zPdZqNe~%U`C68UI8s8$_t9o z_FG7Q za4XQZ(8)s~)T7eII1`~1XC^vEK*EBKrD5(d{0woN$#Cx522|6WrM20QaoicBW^2m| zfE_E)lwGfubviNiV1V1h*RlJ?T=YCK6>>gRU+xZfkE_G}GIzCkJa>h=il566k1Jr7 z6qTSVle7|cH?LQ#9BPs203G%>k!MA%O-fs>Xn|!x$7Tv0sUNEA z)RpS>>IbdnXpY#bO3Y$r5AzRZKXZUN4LnoB)G~*eB$Z6PHr96RTm<|FCOg$X;$zAxoAe$>M>R^^nENG_nkW zn@*mrJNja=Pj;(sJUMPgs|J}WrWPEo3BwB4#L{njr zgYTnO_v7R7RVMK17DGfhuQQu@$z|t7!7hkpf-wTfdytF+c$zD{->44fnr)6OfPs(j z&ibj@mR}06%?{un)ocsHJF)$0fPK-1Qn9Qt9=>?b0N4v6`$)ej&jh@it~;Gi@xGET z0(iI3>3p-+>3p{i<6i}+F*|RyE+F6TH_rjV;t z3b{hj)_EmZZd6OU%$8mB-?!~fR-fb0az5nm# zJOU~OjD~WC>I}4sVpNp#CHXS-H*iQxP{%1G;Wf-*1~3E0zbIY*^~W-0y#}zO;Wo zrtm@CtN+xTR(corK34nVq`i@khIFY{&yp>Bc7wN_>-_jZ_O7o6^z>Z+g?~m-;Nn%o zdnPnk4pwvsK34pFT(bE2;w!=D{_eOvdEly-S8^)mk3Cd#X~` z3&!*i4sGqd(r1y4EEA zGGYF-`bX+r6Q}%YZ3ul3RCpmWbM2UQ&(G?op6;`=^6Oi72Whi|hHAH;Sy{R4?EBlZ zqqb;{R}T6$@8RC?(N|9Oj!tXiAG7<76Uydp>~`02J?8Pug>z3Sa!xFL^<`>k-v~d` z;@9>K{#(tqrF$~(8YTp-I5ZS1+|37f1IJRFdnG7PVeJ-H#_J|d*YfJ|wGHQ+w#nd- zmm1C0GvWv~z;}C^nm<@Ko({QWEU?(ZnAz!ij`ogPP%VZW&FsH%;AU0TsOVan4(m|X zBOq>h%3q(I+T?vU?nuP(=M2oQs#t1xX|l~~*FN%b(3Vzp%<(Q=hjT=XCO$F{B}j-JBgfH_-Z9 zvia#o>V<{&e3sNTcgLhP%fCCLT;#iNdj1+V&tvztx2heFerKqlCzZA}-B*+_<&WEW z=qqNl?=VvH!`x6-Ngdvnecn{(w@F>69a&L6R}(dXy7=Jzu&8%ypTxvb`nYvhr#;iW zYF~Y};z)jI^%9k3Ov3M-^aGENf7114(AtKsQOV`J6D(5`A@BCxuq8*jZ`$bu=jHza DNg__S diff --git a/libraries/filemanager-9.12.1/img/ico_dark/ott.jpg b/libraries/filemanager-9.12.1/img/ico_dark/ott.jpg deleted file mode 100644 index eb6522c84b5ddfc8dfb785525b64adea20581b95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3581 zcmb7G2~bm67QKHSPPk&Kfl=o-E9nfwxInwi7 z_Hv6pI|nh2rPmf)hmbggbJAc>#9BgU#Mg_2bh5^%hXJFIl#DnWai^lvG*^5k!(KLw z*rhn-MTyynF%Bb6&}C>5cSQV+Xw4;ap=M^SU`{1-VSMJe&7pN^VD4GW*<>!vmsJXO zDMyUS+;bG=;XWl}*=UED=NilA7noAgUHqvwv$Pjc8@paC%_Z6}KKqkSOio3Nao8t< zWjLuDVlKd_OCq(6Ks*RWP&yF63VQ4fV1akQLoTF30zPdZqNe~%U`C68UI8s8$_t9o z_FG7Q za4XQZ(8)s~)T7eII1`~1XC^vEK*EBKrD5(d{0woN$#Cx522|6WrM20QaoicBW^2m| zfE_E)lwGfubviNiV1V1h*RlJ?T=YCK6>>gRU+xZfkE_G}GIzCkJa>h=il566k1Jr7 z6qTSVle7|cH?LQ#9BPs203G%>k!MA%O-fs>Xn|!x$7Tv0sUNEA z)RpS>>IbdnXpY#bO3Y$r5AzRZKXZUN4LnoB)G~*eB$Z6PHr96RTm<|FCOg$X;$zAxoAe$>M>R^^nENG_nkW zn@*mrJNja=Pj;(sJUMPgs|J}WrWPEo3BwB4#L{njr zgYTnO_v7R7RVMK17DGfhuQQu@$z|t7!7hkpf-wTfdytF+c$zD{->44fnr)6OfPs(j z&ibj@mR}06%?{un)ocsHJF)$0fPK-1Qn9Qt9=>?b0N4v6`$)ej&jh@it~;Gi@xGET z0(iI3>3p-+>3p{i<6i}+F*|RyE+F6TH_rjV;t z3b{hj)_EmZZd6OU%$8mB-?!~fR-fb0az5nm# zJOU~OjD~WC>I}4sVpNp#CHXS-H*iQxP{%1G;Wf-*1~3E0zbIY*^~W-0y#}zO;Wo zrtm@CtN+xTR(corK34nVq`i@khIFY{&yp>Bc7wN_>-_jZ_O7o6^z>Z+g?~m-;Nn%o zdnPnk4pwvsK34pFT(bE2;w!=D{_eOvdEly-S8^)mk3Cd#X~` z3&!*i4sGqd(r1y4EEA zGGYF-`bX+r6Q}%YZ3ul3RCpmWbM2UQ&(G?op6;`=^6Oi72Whi|hHAH;Sy{R4?EBlZ zqqb;{R}T6$@8RC?(N|9Oj!tXiAG7<76Uydp>~`02J?8Pug>z3Sa!xFL^<`>k-v~d` z;@9>K{#(tqrF$~(8YTp-I5ZS1+|37f1IJRFdnG7PVeJ-H#_J|d*YfJ|wGHQ+w#nd- zmm1C0GvWv~z;}C^nm<@Ko({QWEU?(ZnAz!ij`ogPP%VZW&FsH%;AU0TsOVan4(m|X zBOq>h%3q(I+T?vU?nuP(=M2oQs#t1xX|l~~*FN%b(3Vzp%<(Q=hjT=XCO$F{B}j-JBgfH_-Z9 zvia#o>V<{&e3sNTcgLhP%fCCLT;#iNdj1+V&tvztx2heFerKqlCzZA}-B*+_<&WEW z=qqNl?=VvH!`x6-Ngdvnecn{(w@F>69a&L6R}(dXy7=Jzu&8%ypTxvb`nYvhr#;iW zYF~Y};z)jI^%9k3Ov3M-^aGENf7114(AtKsQOV`J6D(5`A@BCxuq8*jZ`$bu=jHza DNg__S diff --git a/libraries/filemanager-9.12.1/img/ico_dark/pdf.jpg b/libraries/filemanager-9.12.1/img/ico_dark/pdf.jpg deleted file mode 100644 index 809b5e605e76730d02b0e17dbafebe7db8bc1a87..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3705 zcmb7G3se(l7QU02Nm3qxAXG(^L8Vd)Y(zm(6vF!@VgMCwDIxoN#kEoptM!f6_oJt+V)jk~3G{f{vwsf%d~@&j-~YS! ze+-r`%TM5*9G?^q1VKO|{=jlkv_B~(W^uY=PJB{o96A6*JCz25R=@xh=}ep=A(~l` zy^s-gg8)W?GkAluQe`yA)6-J{8_(sRL)$N%fRO-B1wGq8l>LV{=RDS^0wBa_*XJ2k zMTnOI&{~y&GXV%MqkYMGSIytrC@5nTL28 z;=tTN_JTp!rU4lkCxO+moJPg)wMggm`5G;2b=bPUa1Ubs87$J8F=uNVgT0HfFe3$@ z0etRiE>Y2sYgNj)48-Hn-exdG^Y#}I-!vCy$q`Qk5P0Ns@mV&$Afim2IUn)!XwTD_ zk}~`4WxCw7If!wrpuSL_!pGq`Z7O37))K}dKBs1r_%%j7B;>KNafkyEk5QWw`{R?z z#*z%)ZjDo>j!8p|aY$~7GC3WwH{y3Vy@H<$HIwzMHi4fD!X*jOA+^jCdBzBb2~`9&)i)fe!kB0R<#LG(HW$p(h_SphXLdUKTAH z!W9b9_H16dm17&@U=&zK_wu80mS=NpGhFZI=&9k9jGBypGpJN*CN+%;2ZoBIqNrI^ zELy{<8FmHfgLE=b0M}8eElx3*ab{k}JcwTBZ4R)HVODaBHL4S9@1hz=S)FW~?B^kKI3fBV=Xpi~qwYNpFue~*2 z-o|Ikufo85gKN!#RuU~4B^f7)mH0~hC8>56BN;B4BuSJ^K+h=qx@jH$A-QNE8*4RC z)o0Jep8ySHp%M+ehFlJ-%2!wir5JVaIq6qQjiDw{Nq^Y2)A+qSph6fYj1|g(5l$3_ z3nvMac|36PgcHygj(wb6z3t@K8ACE)2eGg!_BcV-UB~ZLesl@y)}n6K#4g2e2SAM8 zP|9fv)FviGCY#F0@l(b!Njg<-UX#{)EG3 znhh}XHr`ns4%y*coNDq#ZBfsg|cOWsbq5Dbkd&c}#98 zlbjxxP^8gmn90H6!6Ct+saQ)B%juL_Mz%C$a_E#WHhi+B2Vy|LHfnU0fw@*qmIX9=>iKJm!NC0-DBAt`z0!<|KCF8UJ6i z90aKt7C{+Fj0J&|Af<%mFpS3ZQ4{}<&_EN3388>`j-=7;IoM$%Sk8b8iG$opcdXsp zQ3J!QPoLXC;SWs@wp{qJcO!2Y(Nx{pvfcuB?@ZCo8-GPO5^dd~cj6PT#hYANa!`O6Wf8RCNr-eq)_ZK> zjzt;4MF*?jU)9y%55DXAPFeL$n3r~q`0q_;K7cKShn>0)oBA;97=~cWpL%E_(IMzQ(k#n*? zM`5Jk>H9s2mlm!}=%ju2yrENSD?l)uRR_xfSQ9%hY#Fn_;!A_Hru)FF*lP5Pyft+)uZkUqmNch zG~L*=gxll1AKE3QZ#H(Fx^isarR<~PN3y;ppHBUh|z234rVd^KL zk@Ba_i%!pXm+yCd2}W-{)T!y+HSRY<)r}za8yi!%eX{A;!Q&GzrIiu~qUY@vPi$D< z5nJWix~OvdzRmg>yQ*jY>#8z@E9?t>t9V(K`QiCr|L*>s+ueN?BK?mRz}k;@$Nh`@ z1^4hkX{F#dNhY7GEM8H$H|ONtdjlIL((lPAPWan+Cg)z-#e0!Q?st3DeDQnd^rRCl z^t&C^iq42iH^T_R0$)uo*!B8~ke{}DlGofeHeC63#Yx}i!>Y5-WtZ%5df0p=*DbPc z?M~9IW{p>u&i7~W(XMgrowM3gJXap~n^o(woTCH{yJ{Ckm?f)IoN~k~Zevkm-+o#(fAq>q-**b$9yWGeRNIaS^?Ol1HQkTA&epCv{_cIR zk3$Z%MUbsGdX7e<-pLsGwPL#}&ivfrcHtVgO+S=v!Mv;|(R#z-VI16K*7qqn&3Lhj z<>+x{u=|s}%5P@(zuL@J!gzN)d=zQ@!dzZd1yn%O*oj3~?vE->ExX7`UH1%6*NFNl-Hgnjzr zw6zVZz2(Pp)TxQ9=WSR_)9v-|9~y0Ln-u6K&#QW?rmB2rN`M7C&NXG0cUC^A2rOFo zLC)1s-$O1nL2(b(?<|sjUQUs9@{%(i*%d!XzAyI{9ekpQ2#oaWeBqtYi>q3$n)k%i n8M8)ApFw*R95~VH;-A|1>8qMErLlq*{a5Ekz7~CLt)=^a5oDRk diff --git a/libraries/filemanager-9.12.1/img/ico_dark/png.jpg b/libraries/filemanager-9.12.1/img/ico_dark/png.jpg deleted file mode 100644 index f479380fb0db7d03a6580c674582f7f2fa9acc84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3754 zcmb7G3s_WT8vf3lb7m$kb3p`UL=T9~{v3fgYcF_8<7qJKz8Q-~aya ze>vm$%yAhc8L8>1KoA6^;RhU71c%a-lb5RVRH^A%3Tyxn?A4gfdL9E{Fxo76$|R;} zaWNz41s+TWPY3`{jn-;TRI9T93&-W2 z_zdIbUTI0o8^MiQjbb6<5R7-4ZAn~wCgQK{RRxKNX94hh$}On{!+hSub(Q&x5c^@g zOlM2aABoo)OLJ6+u`h3Tl_`_U!*M#b)@1Y&f)QV=WYf7dMm;2yu_+3~vk_0Nw5N^a zCo`-y3%R&6PhDkl4r0thT9#=t)QAHRueX@;xUo<(xtrB1xv?-m*LQFMtu%9 z7S5Lvu~z3CF()}-tIWrJ%JrpUZI=9zzEp9!E;W6Gzsjt4?nTr_?XlSNIBl4p>e5&g zO2n9ly2Tm`INuP{lgczHoVO8(AAv$b11y-J6l*OQ;Vv+c2TDl7rx`5RQVu%MV}!+4 z79%>s8>%pNf1cXO8Sdj|R5*JNaJ_Mq`*VgzxIV%$QT~*iipKx>R2CIa&7d>!@@%Pc_(aWKKsRBy9??hq?MNYb{H4+K)HhL^bYNn%wP} z$2DWrY#QqTSkZye*@chw>4Q~AC%IafZtBpZpLl(+3RJ)6FWpZM(A`+~(ihzQ=|1`b zetIDhS3vJnWI$Cq=So;zyzp^zXh)_EG+2LuJQHdiRXT1(%Z-}?+%23F>@zt( zqgSJ@-hV9a1n8gumFQqOaxLg8=dclKG3(fKGNP24N<~uXzuL9)xV=28g0JAG@DqXI z&*I1NBl#H|9zA*dP;86CTH#VZd~#fjaWi1Yu+SA(o^a=`7v8&9o|=h%>Z{B9F9A?9ge$AnEwL6alPXUSgly0D+kEV=5Bou0!{efMU5{5P8$&b zv=akl5Hc6eBf>^FJb-6(K#g#?JD)4uU5mX(p1ek$i&57|y6_T?>bM6nDzi;z(ABYJ zOld8Xp;jmjI-`z>j);qhig+jsy|l3wqejojS43)}*oPwL#X0&Q8F*YFxr(NFq<~Ke zNKzo6X^JltNTou7Q0U<)^75GA?I{#`P4oAbi30-zJ-nno)5Ja^aiEw>LeMlVAO+qO zhZ}t}8Xka?8&h^Yc08H%&a_hP4p{s#CYAUml&Czi5Zw`Ev?G%H6(O zL!B#E+?g@}WMD$%!&!G#nHhf9x}zeB{?k%$Hg-oE{&0bgL#wZ1I(Y^Dot}W1fqaUHhr|BkhYD z{9d=0?tWkPhpqKRp`D)$eYtqsrMYJ!mS3K@Wmfn5>XlE&-+A}-!invM#)6iL_Y;WZ-yrZt3G*aC z;2siq(A-|<3W26XQnb{^5+sk!-Mre z*B(3g;khE!hi&&JzBbDNky8g+BKMzVgPrRJH&21?MiUWfbA01REhYWA-F&H;a zIv4wn@_C(XNmEBm{p)A12Bh{33_UCR^vLaIn_WQnJgd6WSGw)H)SjMZiG5=)w`QTZ z_Xv{5Cq@kiLJC2VxrrJHBVW_dUacwRXu$@D;xYOf%;;b`)eOP?L|w#EAOeEZ(joSoTW;(^w{ z?<1a5nW`JJp6^uTp8Lz9)qn30{&@78!o>rk4YGxhd#mtpcC2{Q(A6{lJiq_IB;Tq- z3m^a2-pVJQL-EcN?Yt-PP`eAy(}~wkVel4yfk{4&w=RR#Z){a=FH3%JFFOh7EE-Ew z?o&;G6rGhPYS!G8FxBk~N*Z>(>2g-`v+stm%=(}O4IYw{UIkO%p7+bN&oAHWVx(au zr8(=TzM%J%0@HcwXx!|*zMkzj3%ddieJ1(3{Z6rBk4o*=06k5mD-BP*t&@=-9_!zi z@xo1U$K|*DTkS=J_~lEXf4*UWq4iU;!~xf4bS+qW=#;#*_pSG;jCS7qn zN*&zKK3O(7yJFM7L%h$QnV8vMFrhI-)}JuB-0!71GsE}YI?~^68Bizs&}V7$t6|L( s93WA~MXQ$!D&}N$h9zznl*EKBIp+Cd1JAd-bB$CxC3kX^sov51KS1K1&;S4c diff --git a/libraries/filemanager-9.12.1/img/ico_dark/ppt.jpg b/libraries/filemanager-9.12.1/img/ico_dark/ppt.jpg deleted file mode 100644 index b87590a2b8d7796fff1aec41d704d499337364ee..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4035 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/pptx.jpg b/libraries/filemanager-9.12.1/img/ico_dark/pptx.jpg deleted file mode 100644 index 62cbe2faf4eb2ad4ea9d5ae0fdfa114d31048ef9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4089 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/psd.jpg b/libraries/filemanager-9.12.1/img/ico_dark/psd.jpg deleted file mode 100644 index 312af5c8b938e172c7c61b6c461e6999bf027619..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3859 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 KZjXZWSN;#Qw(cPS diff --git a/libraries/filemanager-9.12.1/img/ico_dark/rar.jpg b/libraries/filemanager-9.12.1/img/ico_dark/rar.jpg deleted file mode 100644 index 6057cbc5447e64c29d3c4017f7464d7229973ca7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3387 zcmb7G2~+^_;jw zt!Tocsi)P%Eiv(g*4EQl>vEKcL~E@Jbs;WQYjdzt>vBTVMl=2In_++)PjYhS%zfYd z_q+f7{{O%CzHwc1-3C=&wmusuih^AHfa|X8kY1}@WH1(G>+^Lu03iF=R9|nSIe=Qb zQ!wUaa%J=8bFx05VLbRk2>6;Tj`|FPAs?_2E_se_gI54O0rbYbcziVbJHLD@c!vdm zlB2z@!eOaJ+yo%8S?UERfb<^PQyQK1h-E)P94Meb#2SLD+&GJ1vm2L*oD!oJIYg_{ zQf;b0yaI8od4#=c1a@mc2Kve2?Yv;Ma3mK7p{~+u6~qG#HKiGdV*u!YN+G+{&8KHHSC`C1 zJQnR0R;RwiV{f*b3yTorTzYp+-7MmVa86qsTFfOxAih=2>q(7K4+9l^mJV?&;?U}b zT#tVy&#`Pav5S71tF?uQ(GMdmG36N$hampBP-i4-p=M?`Z_6QTp?{{Q-f8e?VEXO0 zLb4Xd%PM(?7$f>*`kmD!xKGJkcA8Tt@yuoCS6Z|69{!4Yo46NI8~cIKU?kemKYPI> z=yDLFANC1vFC}?HEE!i}$|AXqNBla>p-jL-9hkAVfE}I#2S&(&OnlaZfFqS)1shs; z9OcnsrTm}sTFr!MG-A`uYDlg`^SGe!t)Um;=hE2lnYivF{lTBe$fn(Fy zboO;N3$3Z_YhDG05jr`jg8Qh{?Pn=8;L1eD9LQ`7X^8gD;Z_Tatd{ewk5J8Uly$@7 z=*Jr|YOWiZ0dQajhN6obnWxWJ93AH!;V!d>7W67UUjaowlwZj`Nx$SW_I;8Y!}BHA zB{%TX2N_rao2aN3RawPKIJ~^LQ89EO(+MW*?;x)ZwGJsARnba&TgdPT$ppW?aIg?o z#|~RHS2h3AT-NN;e4u$SYK>u!qq4+oW$C(~xKXb(E^ToAy zd-2v@jF;F*w4@3{>y6Ac4>o0{a)L5anWYRgmz5C>N8KWZLN3bv}UO#c-t|NPu%wC4NZK#`f@=f^e z0MOReFBhy;)lM!^qj{Cfz*ia1>Ft*ISk7d#apI7J6L<$NEaNNUfxHLFJbjG~S6pI{*$%vor|H-2U*zdk(-+nUpC0rWBcY zH{Ei%p5lEa>i~G(?s9#z+vR$`2mRjwIAL?$ft9)@Yb8KI0lD=-4iYK=FKT=l5N%Wl zNJI>fM@{fzBNgr8&;aYLzlSpVrCS_#| zBa=xatW+*jtK~Ae+{ag`@EPOhE0-%&3O}X)#EBDq6zYI5{{Y1P#0e#lNMwx6k7fP* zedIp=Kf1X-1GOC9fM$k@09s8kYRc6O6UcuchWtVDHky*kk6D{VMGJ)^%ge_ds!D z-rEm!w_39vmtXDfJ-9UfdiN(=HdHQ2hjXVkAM4+?;eKJk(VCxL{JOQ^-ue{ZBqK=e zv5aCV5B8?5f|t7qsZW*^ct8r`oND&zid1j%GiIYuVI(<|=#CPRBc@n3I6Pi~LDjr!JZe_BOz4^jxNFAP_$xxXdr57*u=1TP}mU_PGYna)^ zc8*ic=(tvyyUJO5l6!Rc_NCKZjoWnx-a1&eSsH!m({k19sQg@+-{PL%g_OU#pnYX) z^>-ieNE2fl%DbC<|DZa Mf3yBi@TRNp|7IcnbpQYW diff --git a/libraries/filemanager-9.12.1/img/ico_dark/rtf.jpg b/libraries/filemanager-9.12.1/img/ico_dark/rtf.jpg deleted file mode 100644 index 122d3825b90e6a38dc8f628296c3a45ffe78941e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4081 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/sql.jpg b/libraries/filemanager-9.12.1/img/ico_dark/sql.jpg deleted file mode 100644 index 73485f1521ba06efc0e66d441cb1b9994c245580..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3766 zcmb7G30M=?7Cw`iEG!M62#6vhs4M~viXejQ0oh~3Em|dnfkXm{lR$-H>-MzR`YLMs zs#c4LU6Izh6t`DV6t&_;tp%5-wED!YwN|WE%sUf8fPQ}M_bzbfpL70u?z#Ux_YS5X zOxM6MB{4Y>2!en~_yeYPVSRFZ{9KtlGch?$iVgtbCrZ6u%cB7bi;S#1DUO~oQ$Y(` zfd_-Z4&1>`sWRweWwJED#&Nl4|JM0EU?hN+z!&@bv;XvFm&+Jb0E7tbx?F>*5b**4 zzE-7YjR1n5&_4cEqaLwvC}L+86GSZGaDF#V;BZbio?+%>$>Wj3nzk-F@VqCMi4a45vP%tGGpT6AM z)$Am>1y`w*(kX~Xp#8Ys7{}R1A--E&Ff|sjKLBq)9-BC|o6n0ZQ)f*_?1J`OjWIdP zVlOMo$;d>EV|mpDx>PO>$2qPt#G{trh4`wPN#^z#^C2OZNsuBAKs-!cJjoKDOfi&9 z;q2x(W$O40#2ANU=P6TUh}{vt$?D|XT$nRi&1jRjxiCI?OmCD~av*ONX*0OFaJ`h6 zF__ngG09s-br#ksH$T=u#N4PFwph;PhViMhN>-YL7~@dC zGDTB4-4OHLa+L|3wn2!aU>czW26T{vy$Xt;3uur-62#$C4=j4}Km%H|Fz98_q9I;_ z0<^uDCo^-p$MiDt&7*H|qj8oObGm2fuyAygDuGf!otSiQx zb$t~811iw7y1>3VHI*N5vwG+YRQ>E0`=)Zp{5yU5Kk;wzFJRxwzuY^Xe~Et?e_A0H zcR*{-s1UQ#n0LZp!>wBk7N5V5y7LF_3WDNeJpXtAp}SUgGWgPtMQebe^(`>jO-Gf}G^ zRbM<8cLFpp6*JMmtH@HA_=2o@l(do$wjK509vWl(q@-|W*Gy+mN2T=K%L!i#hX=4i1C)is-T7SO?phpedGe}wRz_JBX~nZRs_8j|Wa^EYLQNTyOXrl* zDKcqNp{7Vfj|~bB8WS`w4Yf2fY>`q+OBRHN28WH$9XHl=3F3jrHInQ2d>$zjP(qRv z3i*6W;N;-sBytdmYzK+$Z3hmv6Ny|sT?Y?w@bK`kwRiHSJqCz9JRGLrJPqJa+ocQYLZClSnoGLrBDo)bYj5vE2MipwX>zuX$ljV}<22$HfvuQT@#QvYUZ z1A836b0i&6y0`i{ZQSm!r|(_zJ@VE4!=9V&jLSu@(KYI4LB)?3BjcVt%{g86ahv}& z+|z=iVFuMx<-D5}vL}H)Bc^|(T!dVo!qWPK=MT~-b|ZK@0>K9!L2-L*ZWQoHzJQQ8 zI}IGTm6H)ef%Xq2g>{BvW_mS8o$Kb=JO^)_OXmpYXiRZyl|@UV`IYQ{rOV2 zta}p%iA@3 z-@W?&_N=s9A>)C8)`U4t&iYc6kA zbfu-8c5d-6NN+oH_;jG(AF)SHhW`-dmnJ*2I$~XBo9z|-r}?$DnKw*a^^M}B=VR?* zt#>y9oQ4O-Dz```FRq-wqXFyhK~Dij4}b2ub@bzqB!O?lP6xHY<;sU|CjU6AeG~Do zSqGj!vRRrxp|I`^s&f7N?M%tS@GBd(&@t*ICWxsON4*ylw|QCuE1mOuKxoa<3jtLS zrD>~MyXsnF=Ti9c<&6#NW7eOUDbl|3)Mt;KDrD7CAK#5ON51w>SbO8Q6UXAS&oy`q zS9N+S-5#y3cssICx9&fpI)zR?Pt@QQ+j^p9NQ$yqVzZh-&j}D6Dcz<5ZUf$4*wxUtH<9rQsL)K}_}ztL~0nE~gJT zjIPrvsvXMSHx70^mH9*EK61%2idZ=7_geR9XVcn#e&%eu%ei@<-Fzl&TSDzush>TO zX&T@ADZTXE!cTX3PWE>5`9v1*?7L;QBR>yQ#Ee{?TitQqarL>p=GhMl6hoW*SFNZL zjY_Ldok3UZtvFRloVi(3FaJZjvfy_8nr-{1XS;T&ls<3I`SkUBO7TLS$;b!&|k2jxF|@tsNO|aaXRr J9x=t#`ai+~z0Uvu diff --git a/libraries/filemanager-9.12.1/img/ico_dark/svg.jpg b/libraries/filemanager-9.12.1/img/ico_dark/svg.jpg deleted file mode 100644 index f479380fb0db7d03a6580c674582f7f2fa9acc84..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3754 zcmb7G3s_WT8vf3lb7m$kb3p`UL=T9~{v3fgYcF_8<7qJKz8Q-~aya ze>vm$%yAhc8L8>1KoA6^;RhU71c%a-lb5RVRH^A%3Tyxn?A4gfdL9E{Fxo76$|R;} zaWNz41s+TWPY3`{jn-;TRI9T93&-W2 z_zdIbUTI0o8^MiQjbb6<5R7-4ZAn~wCgQK{RRxKNX94hh$}On{!+hSub(Q&x5c^@g zOlM2aABoo)OLJ6+u`h3Tl_`_U!*M#b)@1Y&f)QV=WYf7dMm;2yu_+3~vk_0Nw5N^a zCo`-y3%R&6PhDkl4r0thT9#=t)QAHRueX@;xUo<(xtrB1xv?-m*LQFMtu%9 z7S5Lvu~z3CF()}-tIWrJ%JrpUZI=9zzEp9!E;W6Gzsjt4?nTr_?XlSNIBl4p>e5&g zO2n9ly2Tm`INuP{lgczHoVO8(AAv$b11y-J6l*OQ;Vv+c2TDl7rx`5RQVu%MV}!+4 z79%>s8>%pNf1cXO8Sdj|R5*JNaJ_Mq`*VgzxIV%$QT~*iipKx>R2CIa&7d>!@@%Pc_(aWKKsRBy9??hq?MNYb{H4+K)HhL^bYNn%wP} z$2DWrY#QqTSkZye*@chw>4Q~AC%IafZtBpZpLl(+3RJ)6FWpZM(A`+~(ihzQ=|1`b zetIDhS3vJnWI$Cq=So;zyzp^zXh)_EG+2LuJQHdiRXT1(%Z-}?+%23F>@zt( zqgSJ@-hV9a1n8gumFQqOaxLg8=dclKG3(fKGNP24N<~uXzuL9)xV=28g0JAG@DqXI z&*I1NBl#H|9zA*dP;86CTH#VZd~#fjaWi1Yu+SA(o^a=`7v8&9o|=h%>Z{B9F9A?9ge$AnEwL6alPXUSgly0D+kEV=5Bou0!{efMU5{5P8$&b zv=akl5Hc6eBf>^FJb-6(K#g#?JD)4uU5mX(p1ek$i&57|y6_T?>bM6nDzi;z(ABYJ zOld8Xp;jmjI-`z>j);qhig+jsy|l3wqejojS43)}*oPwL#X0&Q8F*YFxr(NFq<~Ke zNKzo6X^JltNTou7Q0U<)^75GA?I{#`P4oAbi30-zJ-nno)5Ja^aiEw>LeMlVAO+qO zhZ}t}8Xka?8&h^Yc08H%&a_hP4p{s#CYAUml&Czi5Zw`Ev?G%H6(O zL!B#E+?g@}WMD$%!&!G#nHhf9x}zeB{?k%$Hg-oE{&0bgL#wZ1I(Y^Dot}W1fqaUHhr|BkhYD z{9d=0?tWkPhpqKRp`D)$eYtqsrMYJ!mS3K@Wmfn5>XlE&-+A}-!invM#)6iL_Y;WZ-yrZt3G*aC z;2siq(A-|<3W26XQnb{^5+sk!-Mre z*B(3g;khE!hi&&JzBbDNky8g+BKMzVgPrRJH&21?MiUWfbA01REhYWA-F&H;a zIv4wn@_C(XNmEBm{p)A12Bh{33_UCR^vLaIn_WQnJgd6WSGw)H)SjMZiG5=)w`QTZ z_Xv{5Cq@kiLJC2VxrrJHBVW_dUacwRXu$@D;xYOf%;;b`)eOP?L|w#EAOeEZ(joSoTW;(^w{ z?<1a5nW`JJp6^uTp8Lz9)qn30{&@78!o>rk4YGxhd#mtpcC2{Q(A6{lJiq_IB;Tq- z3m^a2-pVJQL-EcN?Yt-PP`eAy(}~wkVel4yfk{4&w=RR#Z){a=FH3%JFFOh7EE-Ew z?o&;G6rGhPYS!G8FxBk~N*Z>(>2g-`v+stm%=(}O4IYw{UIkO%p7+bN&oAHWVx(au zr8(=TzM%J%0@HcwXx!|*zMkzj3%ddieJ1(3{Z6rBk4o*=06k5mD-BP*t&@=-9_!zi z@xo1U$K|*DTkS=J_~lEXf4*UWq4iU;!~xf4bS+qW=#;#*_pSG;jCS7qn zN*&zKK3O(7yJFM7L%h$QnV8vMFrhI-)}JuB-0!71GsE}YI?~^68Bizs&}V7$t6|L( s93WA~MXQ$!D&}N$h9zznl*EKBIp+Cd1JAd-bB$CxC3kX^sov51KS1K1&;S4c diff --git a/libraries/filemanager-9.12.1/img/ico_dark/tar.jpg b/libraries/filemanager-9.12.1/img/ico_dark/tar.jpg deleted file mode 100644 index bb5adaf98c1aa16496d445a1fd43cb78bf126f33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3346 zcmb7G4OElY8GgUNB!dtWv_etj6RDyi3;tA)3Wo3(Kn(%^e?#&?J_$+q5)c`++A*zL zJAZmSdfZtR=3MLAu5R;8r}d|x;_9l^(aKM4-EmHW$^G}aQPjATmp1kjK z-}}7pz2CifFMGcLbxEP25Gaa*V*G&j@A5+iy?%w!G`G-DR)7uw`I}~!%TDtEbq)9VU(QJqFwMg{M}RB5zHsSI(q}=>}#X2SGsE} zO7WRWa<@svrU2e!F&9)IPC#>%QjQEO8FpxDyJq%cd`~t*jh)3BPiUaYP z5_e+-vHRjQ+w^k~V;n|WWiBxyPC)#MUlJ95NT? z%c=yoFGq~Y-0;{cai5a0?DHO}GBB21TrCzF0{j-2-M1G}8@pF(FcEDSpS@s~3W^Y8 z9QNOWV;-p+VlLil&L_1^N1OxmDKiM*gevSU;DATKg9(Zt51%fO&{GW}*wG@OS3rwM z#Xv3E9?vuSIQ}tVMvZUu4Kf;Mc|6BI!_5H4$;Po-b_#y8*)nz}o5^MY&*rkT*c>(= ztyye#NP#gzCl57n6P5bo)I$T#OmxhLye$b0si86a%hC$ba(?q&R1?n98TMnGP{yd) z8Cd~vV+DfQO^U43nUe-(L7)EZPeXho|XTN1(^QVC(>oCkB@<+QL>`>FPh zwp-h#-K)JdXpV5iK~-X2XAUy&Gl!W!Gv|P3PB15#ius{h%qPwA%cZf3B{S@+jV5GlF^N*+m5;gkI;m72Y}w`S|f=y zHV;2ptDVm4@G28{gTs=Z#+&VS-sf`jlHeAkM!}j6fHG8ODeZewevgcn)ZDnu36i* zBf$$hUz~Y;=sWcGg9aFW&|diIPsI&)wmry6xpef@AIxW>qULv}z~b)raGsLhy+1}h z$!ee&7Hb*Q3M|cVAk$8vrVdXYW?YHt6sVcv=xe0$RAkScNT{=z4&VBt-|qd&$KRz7dwL1jJHbTD=*HTcmMPJ>&R<8_wG*$k4{W< zKipaIs&ZnEdF+gT-mMZIG}q?JG3yjH&=f<#uID)@5zGd~vCTImInqwrhanVSBSO>Erp`Qr~CghtifQq$?tw8@>MLhx1O4w@-Wb z!Nb#b*{s(F6w8#ZJ2?sa$|mmI(9OrEeAc?WJ+pCl%!0J`Uobzo@zH_Jt=i;{FE@QT ztM}Po-Z_!AaMM{Y;MBf7>pKc?+xpr$ZHEfzpS|FU0(!IZF7~gbUci1GKomS-A<0Us zpSIFILb4j)6KYUVK$D@?jnunY7+x zRld&M`>;r^Dk!qf&|mX^=WN&U%3|c-_w-;zSDMD`ufs&U3X?l+Zd=nS8(i& inxcWS&h0HJs_fC~bsMr@5^nwJ!hvy*v)6p+6|9xo(m~28im2FX4`{37Qd@0>%za4+(Bo;({5kpGmwWGj|L=bP z@?tn|xB`wT3CRgS5CkOQ2Mpg^9ZrsoeL*74NJvhLM+bn_E}2H7;?Mx)YQ0vPD5e+X z<g7CgaLCf8|VB$711#>TSGsqL43z)S#r0gv}jjsC+gTLq(&0}y<)S15Gy za>UgDT$Nm-)dTRZp*?)LUW3?b8e$hM5=1Owaj^-pauvu+WD3M} zi2VyE*^4J(69zv56{&0 z5n~?eE~Cz2bwkYcP{`s~Z37X{hg?Di3{*fN_Ht0eD9|8C08QLBnCo#sD#!N&M8%K|@qj8qU$CzfgZjPy-+$j+ig5O9gjf$eesR*E{Xlem9 zpNd0k1QlsvAeqFIhGMvmOig)~K_$-2^2i18I?qa9%NV*r`+`#5v-UQ!nW(a2!jE|@ z6(i@0$qIlD6&SBBV6skKb)R}zJoLBJ;phA8y6Pa~uk__!TI@Dv;|q( zdt<$Na7RAm1-p&5*QH}92k~{TIw0CTBf2!)gj^Yf(n@+g<%k4fx|YE?YLYHN%ANX zn-!N!@%UCkKHrMZx3Lx2**M$V^7(d-cJ=}XhbJ9u?1WA;9Gnn4ut^9mmy4t9Dazi# zhHrz`|FaoRf{+i3p_U|kfFmSGAz?TLUhID$lKq2ZX;uW6NAf9jx=c2k{Duo)M-sqs zBpp$?^Oivfhy(qSw5xxM)xWpesn$1ZYU){Xpn(Ezh& zw5|E+!ND&8wq+a*y1#p-=DFx>MPAMI^IJ3atb4l~*Zc{P(*Q3c2VX}ZNRq=N*yS}g zE|3(#;kmjAY470BFh?h6k)!~5@sTaT<%|htB@Rb^oDy&#vwZ!Vstt=3t%I}O&Ijb= zYaV%YZFb?NO7EJ;D(vij|2nRwBh zQQoGoEg|}$nhga_`_>3Q7Bz#rsyddb{pJNGv>chAf|!LR%wDwQAFZM|Mj z@66sfXGh?o(LwhYzY17ug)mSym{mBz0{BF2l6@!YrEce zxzHEtoAgQ#m%Oz3*v7inuFH2%{+=jml0Ncjh_<_QtNjP-a_jX@v(`nl1uXcoZ=v@1 zl451`jAZ6fmYLwfw4EQi_>HxBGrui38#lb7vD*Oqca*CW*C@Rf zH(&Kk=)YEdy7|zN=|M(g-m#gbKlha`rq@cp%o4@ys1@-$o$M;^e_o!Vb7aFZs+_irHUFFIxuO)5%{JqtGf0%M=_`w_V zOU``f;vJ+*%U10g$UM--IJ=Jhc4yPi+2Ku}_i9CV?ns(M!A1W$(zA1YQjD4y{%yxg z9yYiCal*d%Q1zo9PgnG2x$3<+smJxZa#MsuW0|#N`OwpQcI~9~^=HK5?n{SO9B=O$ zUK;Y!>Ux*Z75|DF8wulQLub~T{*kX<8tMxxV>*vqsaZYnvwp~WDD3-ZMr^N_xw&;q zl>HmpKm7fjz0;#=`B9r1Uwg+nW}|1_m^)TwJn6>!6A$}DBND?u!{aXYzuN)CNxE<) z{^11d{$%g6o7<7y+^)hu-YE-WjQX*=+c7QLB07gl;XPw&CecxFk*qUwS$*?@g6+K) z(H%!^IzPJ>++f=tRekBiF_i(r4nFGdxwkm_Yk~J`)0cie;(B~-t7!AB!q-a=rhoJ6 z6)ps)zmo6t>%0Bp1aXtT^54oOA60G5xiFg37`6J=((2p1heIyZTkb^7NuRsfPKzQ7 z_iPNWBP1zjcel7~UH5v6ZOewjtF4Qq1^aAUH2W)y-|y*IlAr6+$mw=F-T%faNE#HE zESp))wQ$}ecu<%}zCejZ&^P8TIp*Ev5CV_VPLg6EZg|3(jz?(t5sL8>XAPA~!QL^TCi|;D5d5&A|Ww diff --git a/libraries/filemanager-9.12.1/img/ico_dark/txt.jpg b/libraries/filemanager-9.12.1/img/ico_dark/txt.jpg deleted file mode 100644 index c2fe0e7c6934d35614774e055b9079361c736c03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3804 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/wma.jpg b/libraries/filemanager-9.12.1/img/ico_dark/wma.jpg deleted file mode 100644 index 9dfa9fee6dd23939e537b615a6c28e09734df3e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3461 zcmb7G3se(l7QU02JP?S9pdwftMSQTphUdajOCbad0)}UWq7ae+0wIJXC{R4Us?@r^ zYt^bf&DNae8VdbY6D7PVS;mCfEiFTmr`vv&?NU+(?>`+xWT z|NMjXy7eYVQj(NOKv5J-#|x~tg@=`Ld7&zEW|A^hfdK$vv)X9X^H_jNgT<7YoWRb? z%V&ihz=KiX4!+>7)|id)Dpe|=5iWTSw#U~1GXY!;d2xI&`?+84TF$HiphW1e(wa4u zh-(4(dX3R!0TA3lf6P3K5wUPIVs8@)L@Xn?)Q%GgF1F)YHcob?963a*SW~9fB5pt& zTs**EIsn@>AOrIxa|X_&)3Br$DpOU7PS4o__S-AM1DG#^mHHa2*=GKD_b^vv&A{g* zQhS+cdZq(!*Qga)h{vP6}3r`j2QDU z4>&^(=^J9ck5-*XdK-%Pb;zaEz(Exh<6Q#==mQoqAsG_zX#^8SNrt@t%TXd3mH_yNn~0;jrUu~t3s_#rGr+q#IVMO;GAz@uQ||*6U2Vv0CA#tj5tu7>SD3tk>W7%bn!%t__@|i-ya`Tiw^RzSI(}! zcrNk==pYA`=wKdlP1se^VFT1*)`9PdLn-6WgfYtJc5MvV%T5&ng&ei!f&cfB=w*x?4Wvnyl zO3N&4xJ>p3HXc7^9IG^FLW5bgUeDS>X4b@+In!KD8w%t*NX7v?%(Q*qs1cX@eU>zU zX+Ptcb*0~zUjy)&8DL~&zi$$riNpT{a5!31W14HvhacW=0n8;4;kMtDM*^NrT~_Nu zJg8Tqa9D)cAkq-znymBw+PkxUx=J(wCE~z^_-S1u47YF zisVY2LB~df#)gK6Mx|meEu6`q*0Zu&tt>KD8>7)$Z-5+l#AtHk98?FhY?JYP&_^#M|m=g=g=XdA%yY&ne}Us zir_7%r>SwklTx&lvYvv`SUzeZJ#d=HO(4YCXpDN3e~<>7^#|}kI!{7Nuyu{>py;J} zl;66I7Xsc6I=#y8_oT@qB7$!3`V`*nID2Eh^uhjny!|Ht+)jq~sAm7NIi*ke_Nt_e z;wW5Vn-N6;5}+8o$a30^541qYP!d@bPwF*NRfG~mD2(Fso^9Xs@AV(HQEW4o{Zk+-DN7w-F9a8zUxK$#;&@_7b1N;9w%-*(=lgBd(20V4nA1j z6}|al)c37vKL$S1b(Rk|1V?XM^JLG;FvF7k(%|+PiqN}XPW;$=cWUU)qodz%_FlBg zf90N2*Sh>4cL};w^Y7((eONRiP-8?IFxKKRL`c3!9aw=!w?=&dOw%yPHolZS7G4FwCY{aJf|+U~?dq1VH< z_!S(SkR?c1d~O6ggU^dumS0d8@RNQ?`pM7z3cgz%c-=iu&>Xe9z5K49@yO1}S!=H> k&Y-7EOUd6U?tV|?Kff$##R5f0{m`YS=~3GnCR#iG2ah8hu>b%7 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/xhtml.jpg b/libraries/filemanager-9.12.1/img/ico_dark/xhtml.jpg deleted file mode 100644 index 3420b3359ce45ce5defb7c0ebccaf9eee669ce9b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3653 zcmb7G2~bn#7CtxkCZrHTK&uEY*9D=B&;YSQwIWM^AWPWXXsaQ)KqLvtO+et`dy3Yj zIx5;eowh3A?%4W7u`aEORrI~Oj$0A6ZgjL&Yt?7#Li5g_ga93yUR;jjFqeEPc zctk-rdr>#+)PM|(lgyboUaw_IE!2Ezq29nb9M0}9+})Ue291U?%-PWfVlT0l z2+6&ePsw)SI;}>TgLoL)kDG1r#6BGHy|R+LIK-g<0>45&DbL9ljHxQlort&(+I4!H zD%WMNG8JTGBF3?ThLY0pBo5&m*IE;>mM{eIwPH?1))@8BpyLvih({nESX`FkichCn z%X5g`5vQs+AptCu&S-dLGGdIw zJmO4wq;80X{yI$}scksou`q$s00*T|fV~z>&;cxDLo&qU(+oU%3PBGBv~cL<(4wcj zp#*KO=BXVV=a?==kz@27G8$)jHOD!_T^Fa6>C4EODEy9Q(wKLcXeI_&CYBk;jAath z8pDisD^PdS$wCp_MWxO-7AV7+iH->nzbv3E#65oR zSIf9lt3_Jl;*$?Dofa zUwJGC=%}^ZUo_b59qTau6@Wtq`wf_-tk4$%q^FZxAH*P}{P3d2mjTg61%S|j0aB?z zH_oO)TpR(wd_6EO4!QG5BX=#1c0C1k0ym?oj&|dGLbd-6icGUjZ`4bM9Pl>PJARj-1Nf1gP6yhjvhVl0C6nhfJ|JUq?!B-6V zP(@QiK;TQ!zLfn4^e6v;P!!3~)jTL#C>Agx^!6ryka{-zWsuM~L`KW7bPH$o^cI}! zgG)*a)!(1!D9S$-TlB%)_VQz2^Yh=huUPyka=*`CvN&r~LZ9M`-p^^)Ihe+o2FgG{ z!gdLv8G%p)l)R668qO(3C6rL`vZZq5#O?pRc+0qE(ePvEyw>&0Jhd5S>Hbi&)zrIk6U7RCkC@3Zzuj3rulCFl<85J3#-RG&5B{uQ z_>u4|cy4+2x3|AKsMz^ST_a!fFrV{Z`FFq9ZjS9}T|PHhHC>U?-)PnC5ABGWsn}{U zzZlzavMFfAiWy6mEKR%AJaMg0(+)}9`^z$R9qd&yapgY>_V&7Q({KH(`F>Q+)GRK2 zZ{wUVJ_(!@oEw-^-Q=Slp*^u=^LC%wBj+Nwzc!`*y^}WwWIfn?_2r{o`Y?6W%$F<{$!VuZ7ln%ZR{Wn#Tp9)6hn3HVyy9Ch=`NP zvuauOG>v7pyS}m)?E2N$m#n$Hrs~2jI_aMOtjs&NWC!*=DcKqRFHc2SCI52Blk%-8 zx~y70`bO>w^VyK|9u*;Ni&|37)gSKjpIMdG>_;J!*681UviO=YPY#J~n&pd*)_t`n z??AdaVPk#k``5&hek4`Y7~+{ku`YSCld(+#W%xf2$ z>O@atn)BKOFJB(2_~7j2$-8CBpi^o6UT*oPW!dS_lBgqT+cvzxi<8-e{4G&JTu_=oA%cK0giBoivR!s diff --git a/libraries/filemanager-9.12.1/img/ico_dark/xls.jpg b/libraries/filemanager-9.12.1/img/ico_dark/xls.jpg deleted file mode 100644 index 62e21ddf236050f1c0d9ae46b96d2bda00c2b735..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4183 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/xml.jpg b/libraries/filemanager-9.12.1/img/ico_dark/xml.jpg deleted file mode 100644 index 7b2d75b9ece1ca16ca87b4be2b2ce76566ffd7af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3774 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 diff --git a/libraries/filemanager-9.12.1/img/ico_dark/zip.jpg b/libraries/filemanager-9.12.1/img/ico_dark/zip.jpg deleted file mode 100644 index 414d5da6fc4e3c926d0d2c3fad61ded968eef4a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3372 zcmb7G3se(V8vZ9UlSBw1AiluLfEtli41ywyRzi5oBZfzPZ8eVpQj!oR!3WD$+Ox-& zszRVppvmZELNH?yC5}t*-92wxznh+EU%tF1xz+tX<9icM_7&aOa!< z|L%Xk|G#(cjOPo_4Nw*47UTj&QIL;6@Z6FeD$wZ`>J6p21w}dN0Fdo8I-NEN2Vi%& z1w&pIH)rlVPSyhw7y+RW4WUM}%c<4tivSzplIy_s;4{ET0G~{JvVS1^XLq3%-em@$ zw1^V{B#~7@ZiSaGnci4a{sQ8m zXt!A11?4__qr+5EiWtXA+H31(kvN3YZFcFfmJpBlS`A-7))@8BVBxcK5Kllns-_{| z7oRS4EiNN=F-~KRt^_g0p@o->g?hx%h+h}#3}i0UOtCJ z=E8g#CGQe*#F+GLcTG9&Q!K4j87J{>3{gNZk;#!!5>aQrjfN&qF0;1RmQ6s=x|1wD9QV z(PE{-pcZXU=IKR_cT9j$EsnlTM&m3`=6GkgjhK z8KdU9;0k~XE6|_a#NaxeZ8|#K@8K>phZcOIINJoJ&#Eu`HG7-AjC~J#H87sN!d}H+ z4`^`(Y@#ANs%O-`Cpgtc_@g2QOzG)q&aO-(lO$rjHQ(1CMVK-?{JHQDMMPw5cqHO*5`-VqayPAtWZKf(xsTH{+0O4{JGgbu@ zsT)~lZ)4CPRcY8Esgn4VC@wBjkLu*8nPMf6)TbWz9;MHhR-W6vD_hNE<_v1tS8}i1 z11YVOcG)vWQ0wUz+j`r7>aAFasI_-{MwJh>cgJ*mQ}G|ol>6h`M;`mU*kDU3J#uIF z_Ax?ZU)m+xbyAp!pn8d7yi;Q#XHvSS5G4JCi7NcQq?tj1bSS)!U{sNV<3?+eC#MRo zby4xN^@c^JdS6!3nUenwOU$a|)AH0!zg6^PSM-Jd`>nb}B?z&RD_wb9~UifUn z4^gq>2feE}kl0}``>m`$HP4x*GE4{oBPX{nzn;S>Nh(_mv(&g z*6GwodmGkoJJ@oic6HmOhb!79Q6srunQzqqV&h^IG_th@w(?;Ko9^F=& zJhZHO^Kf>`$=ds5VaBL%KLAU!{+dt_5vNJk&Q{g;W$KNuym_;KU1r8Th<{=KnnPjV zuif_hWnVNcS^3=J!Ldgw(ps{Yk2^DeRBP{olPj0o)d{~iaN}jw2KRgQ>sM^(nsR>1 zTcP#MW507u*IBvg#?o1%ZWX~b`suD|a1ljiMD73!Xlj*Z2gJGYE~`}p>aO+~GXR{z~z IzQxn?KLAko>;M1& diff --git a/libraries/filemanager-9.12.1/img/info.png b/libraries/filemanager-9.12.1/img/info.png deleted file mode 100644 index 6baffc3307de0704eb7a515da29edaeb2285a9aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbK}W`IwK>;M1%flNApZDpIffYvCL z1o;IsFbc9U3w(b6*6+pN=feL!+-2uya=-t^$CZ`k9p6I{4xz{VNA|e^Ro8mDIEGZj z<@Ry%H9K&)9*mqLS-M5(SCp4pC=vRg^dro%TLIC+vyZ=a0{oyPt94M=4aF?JzVB} smLt)m%=R{;CG%Y6IG2Zkj#)pSaF&L#uQ=J&=>-ZMPgg&ebxsLQ0GQ@qmH+?% diff --git a/libraries/filemanager-9.12.1/img/key.png b/libraries/filemanager-9.12.1/img/key.png deleted file mode 100644 index 463d08262dc74d741461f60e6643339e03b5f6f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 185 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPGa4)6(aH8wW>|NlRb#00EYOb-B+ zag+r41v4-(GO;&oKBK<4X)jRB)zif>q#`a^poM8q&xQ~;HUWXxFFY8!T}n!}w6?Xe z8KiKOG&oq#xOguxkYO4ZM`~(90#HF}Vp3W{0*5ziW}3<|J%)flF=6i3f;6Ck44$rj JF6*2UngD%zHDUk& diff --git a/libraries/filemanager-9.12.1/img/label.png b/libraries/filemanager-9.12.1/img/label.png deleted file mode 100644 index fa65317110b69e3e174d9c885e191cf79aaec208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 479 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMf_5hy{*Z=?j1DUu0BO@bF3P>`+ z00T3~1PFkLL(~98fJ$I8=n5bz5wc)o5nKk4`9Ln%C?+Ihnc*6N3gB!Ya?h;_9n8TUUSFl76n~m#G+k?^3-Tg3S*nO|5kDQc0T?tjVI=A*b~E z>@?x0R!cubn9lJQKeAW2&pY1LC6bjoZDt zkXep>N0_=eva4($!i&&_A= zW;rjn{OxjfHIq1=2=5CoTwNF*91gVyGpm_kvp>8yy0hlS_a|Ji)@kL>dI%ZU?-^tFX>XV|yhM;_kA{Hbj4_?z5yjh^aFnC>zj^ z_o#~Hj9!_H_*k7~=KW86b?g7){QF<}*1#h#Mg;I?KfvJ(Qn0`|`BAdFr+c0K))KhV z*VBp7xc^E2^r^{p+tmzG058~M{V~WRzNN315Fgk94t9hH^W?`#Bm#eA1pn#xrXL)h zI^;Ui`0^Wt{g;NKDbM;@HlU>SeVzx$S zD(zKa4PR~x=t+@VO553Pr?otfml2s$r5>svWlh@%v+uePKj_d>&Sdse`V8u3A-efVY*!3yWCkn;jGN z4p{|BeYkjFBuDAmvz64yq>ELiQR#^<2l$(TJ_(cKNgIz_Nhh1{G-^uptX@&fDfK2t z(V)gap5e@`c^bWergglzjkZ2b7t|ZiD2PIur&VL64kt(#wk%s zfpfc0(7HF(kPybcEeIz;ajkaEet4sf;8~k<7z?FDCO6U`$2I{oVnGgoggOchLhOqN zujBo1p!U0lG3Lc@doPaP9*MBWqJ6csgq&1;(|E<#M=8iVshFbW=dNn!XfpbUcOt5= zE9QQ%mv7-6?w%-TGfT~7?vfl`ue3$U8Hk1(Ar{J5VlbKLUbFb5$<}64dvvPYQY$gZ z-{o1=x%2J~N7H{eLJ-9RB~A-UI6@GPsO9tr(~w0oVGU3e5=_{g(8NjrC^SKdatd>N zZ_ojXLLvZ|&VD*8OgVP*-7I$V!nFk~4-nrk^8fCs{i$`wIdNfSjQ?CDCdQYDd}#4E zzO35eJ}t3O)RgwDxNBFV=}K*%X_Sk;Fy$B%yR;^qxMio+)^yVLwqM{;#h!VPRARxv< z7ZpXYpn_rpL0TYX%lp4KGjDgY>?WI#S4Aa{d;|lp3S1sD8C)%HWDnCM-$r zYo<(j=9WpbCfzk@(xkiQ&wui^`EK{MdN7RkT{X2k`i(;5a;p0cmG5rS zy!z@bvu4e@Yu>!+|6DSA_KlJxT~l9UhWhkU`lNP@7+lei(ptR&1{{k3Kt%bB8@R7* zQViD}x`KvTLk+PI@1`g!m4turN?gtao5;ZHBlS6HY*|Hp)6*Rem&+wOolZ-%a6E z?7QO(!yaQ8<^-f)Asu6A>ag7^%(q)PYQt>q#$Y+&`<5sMSJ^XjjPTvIsN0d@w7@PF zIF4p*7WVN-b*%|-@Mr6Y*|&3&jpZ%!Qi`U3RNA4o2@-uAwNv1kk_@|$m20EgMDs4p zNC(i?e_QQ#Yeq<44{@3vj0QyTSUcTIZ%a>4mv9+qj%B%+{*mUbzHWq=-dT{-hrlu0 zNz?SPi^q&SYLkS;4w>hkbqjYy18}yCyd-B}?qyhDeNf$QLcb-u*If(8)C{XAqu(8l zbSV>Fm%5qT>axz@O9Ew~cjaa|geONC?^D)*d&7-(R|b#!=F%ubxynWI4fVng(DRWb z+kwPCDv}JXDwC;Bo@Am|Wuob^(!|uZr}`N0JCu;{x3Cgo2?X|f29kP3TR6ESxLAJS zI1Y%S2n0d6tO>Odwzm?}Gs(%x*Ivq`!OxMr>s{F@0gmHqS07%z^04oDj{QdD>Geah z^vtoUdO*2mO)*%lR>1Q-q`LP5dR~$w*cawsL)(Ly2$4OkEzMijGAsw{$^({V0c1V^ z&Y1wA?}*U+LHAgA`b(FEc7|g}n86Y|z~3px@~dPKm3l;9XLbBohW7Cs^RdmsOj|!C z^;4hTLHjd_mqo_<&Z`_8^cA@s7dsv3LAPMy1p*d;Im3BmU7gmW4(}6 zsc$1Jry`MPTb5vQlqZ_kS0tKt!s{0mNv0FV@Rdu9q#rHhWN; zEfx!apXXwA)};Z6b1la)s1M6^??NC|Q4Lk<$cGj*n$VCr0-I?1KdisT@4#b5WlT-b z#;a2IE>B2#(NLMnSWKVm+k@Ye!tidPssb@|r<9hb zzqdL@N(_0SBSkT=uSxWLImf}iWs_HiwiUN8nd1hSY4*IJj2UbPO;_SELvswb53K=` zqyl3`GYmjX+96VFz#&x~iObgm2+i4cuq>^c=Vress!Sb`(V97pQ|BfcuW~d-7J=9j zNve+2e@4MF837RNKlGjoG^eb5+J-=TN59dOVz{$tUh4X{E^DAdeU7M<<)mhH29RPM za10QxE9-Bxmkl&-DUUY-kVF8GOaqVtDVYL3_}!Ce1`tp{d4dUC7-#@z2Bv~@?GwPh zYy&Wy5y7LU62K$h$AR|W$8GNLeOy+{FS_3lWd4_Ka;P^wADl=VRR*ChN_Anfmn|XS zzzhO?hV4HOKewul8YBXMtmkfFd0+=JEnZYPafk=E+h{7lILvD|IDF z%ya_4t$;VnoP$j7l)5ulckh%6mI|QIGy@R8k4&d%wLMkm3}%4w7Do!n@_;5ub$npk zX!tJlJkJuxCJsrwuR3Oh|4-*X_b5%X0RV@XjsRqh{vLcy%o_24iDoXa3=R#WBqWSaMTnKDt zYP|+DDU)I0nzN|VWvu~32Oj4i8R)psKjjdJHvy1f1{eCLfeQoD{AB|T9tai{3MHB< zDiX~VWeMiW^8<~QX9uKJ9P6K4`SX4KDpyZ8dODq?y^kL4?{EKoZ}9NRe&FHX`avM+ z^HqoM`dakT$p0Kb;9y=2JN*Ynop8z`hW`Wc@$r`>4IDTSq@|@*0TFd4s_rPG@yLl5 zKvb!Y`2;ehO>m*U4X;~6=q-lhc0tDf4b5<8G^Q3{G$cg>o*_JAvJ=||J!--Ni1G|% z^cNsA{*Gpt@0sZ7h^h}K-oI#W@YeT`T20%fDvSVuhQq?X=Ctu?0>kvm%*<>hiehKc zYENYZc{Ng*Xn=$3F+t`(Y=?30uPS*;|ki?tl#OTZ&;WXn=*E zt3)al3r~CyStT;11;Gl(5L422tbPR42oND498I?iqXdB+2yIdwva+&T(;U}Vv}M?7 zUfP8KN@Y~E3XZUisGQLmL`vwqsSZH!oI^WnhiF<>o$9n!0HPVp3DLev2(uZKMRuLb zE}B`E?49FsJ!G-iJBp%p5G&dilQiSiuYWY&f+zr|C2dGJCyJT?B+gxYJ;BQ#>6pJ4 z0ds-FDAfcYfz1n4o05!fLqa2|i}=Nz(XSc4*EBo`AY>4rJrF#PLXeJn4ZwAZu16V$ z`rc+U-d8&S(LAcq=MRQITs9+PyMGV?Jna&|xlZxE(msQ{=li94FZ4_EA|L_rW&n~% zO&VcT8U#Nl5}+(T4gA`409deq0PTOHeVvXB@U}bB7eLVPD)dW#2qptS`|tX$X!py2 zJFso!e+nSbaP(J_B#&x3QlG(K00jjF;N5rM1@FE0o^rih=$&`o0Xui@1hZ$)1}P~i zKwC7*kD&c{s4le%MgfY zi`v7&a%2HoJU~_3N+^J!ojFCB&pMsSx7F0wQs&SO1kHWOsvv?HpP%PwkRc&`!Nnd$ zW?tT^03rqt_zdd9Oe-~K>M-J_>e^+JT!Tr5t6*sLJ*ZtY!vdBzpBa@^Rg#DTKolTC zOgPJ$oEmA~MGGK!%;M$D9!O%ORh5ok17l#bn8sDtHfr$jPH@alvOy4mfWiTZC%^b< zUB_!f=WlfYf;Oaz`iYn3@rq=tNO?Zg&lb*5Qj@I_x5a47Eef6A0&9E|{noLg^RJ-* zqRulk9^{t*9Jm_I=aQ0=YihF&N=g=9Q#&Pb*I_PAiQ!%sACAb@s6VgI+y) zZ@)wHR&bz0IR`rZk_b8+=?_7qzpve4D1pGw9gg(#J`7b`?GE=p`0)4r|8*&nNWB9H zBwtce5|})BGPs=owr<@D`uFc2u=zABfTVPYoB7kWz%+t?r!w}qU;#a zVx^6*U#bU5TwD{Se8QSB4yg=O{W;}jIUcwq(?VQ6nm5>`HQ=k?M19s|FW_0VZkkFC z_617-o=?K+rN2Z2Ad%XE|KB5H$}J{VIE2(mn5lCRaMMNeJZzu9{bjIbSXp&v?$z}F ze$;!-2GkR&}wl5kl}^YyB^8UO?XvQJ^socZ&$(^}r3 z_Dhp1>jEJ7eP&yZOBpjwwTCt%&|tq2mxsm-$9sgf&y+rLAdOUmnktK=XfMxEaLf|Y z@UzhX2)-{hXM9hJVSF@J6+>X-8S}UhP`)z>dy>=eY&N$%ROMCr0GXQuaADqu%zd6@_!02-W zO|6f|5!Y8&?$1qn-u{2<Qz~}Q_HstYm6ad+{aU&QoU_he)h$tF*=*z`M zL_O(uZYh#09qEs;&Rwme@i3mS)d2{@s45W@rxETwHIY(}CaTe%vJD-Fyoa!XSri3e zu^4Tk%p@Gc>ppGm4FqpHsHrd%LiHQ&AWgV_)d7e#C*gKnUZi>^Xzq?i(P>wAx=KBL zNY#{XF>e6#n*{3EWd7d2nmEgcT+m6xi_~2X(Y!1gw^gK<4*-!U4@Y1cRMF9ZWr)fN zgH;BqXXqgSqJW1^b*j`^Q5A`))0Ovx%)RI(5OvIG*O+u|%wQYoN>sMU8{PW(71`zh zt}+V_sIp{(V+=g>z8 zRw!ix>MI&>jQLDacFMo>&xQjKnl>HOt;ssAfv89Wd(S(q$AS;qfQqdTBJx$f-3nB0 zZRG*mTZ78?9=qWCgogcJQWZ4NxS}@bDNImoi$e*2Yj-#?x9ztHKehjP5NQ8xg16l_ z34TbR-PZ}84!*rOelbm8hCIlcLcVxOl8ufRu{5t zXjbwgp<@@l1foiQlyj^r2q1`|^1x*!UsC6&DtUyB8_~v`w&hJm(ws78411hm8Q<`9 zQmzevC{n352h4Kjc%4M#VR->$SnTvzhB)2lBdQDraFa7@e#@lh)n69k|f=4x7(W{ zvf20+aZ=nhdUxsi0FWd(w>QD?7;qI2Cyq6okmc_G!uO_GGG63$`gFvQB*DBUk{fP~ z`gu7whYLy}UZk$Ga^#1)u?#1Hc#x!&=M=|qwv2H)sY!X>#+%;?jSZ59nB$@F_ji& ztGfHDaVB^d4X!W>wzshXUa@PjG{}@y^_4#5N_|Tp(aeG3Vl6GqTdg1RY1J_)L|V1MsXwba>ME?%#d>B6lZOvHO#mMxrW|vM!|SGZ#jV_%JOXkJL}bJ zRRM(baDoViT8$G98~|4vS<6o>LkHD60y5?sUHUPotqml_VoRa|?z5W9u;QvsRb*J1 zv6DvH?+i5(M>}Tv?==BPl?@5Ye~P6wQt=35z^E)k>O}ye)hl_}{Cf$SzM!f4lz1YR zA%5JpK#PGuX+Ej}5Q;K2pai0`d%W4Y1iarCRKEF;r*hLnpmI}d5Bd)OzcEx&x#V~~ zon+DWtF#5}e=s(#~OrBGW zt>kIh!mqZ=g41T<`f6oe#N-ihVxw&haUcNzvD;NcE8cDDNy+J?v%#1J+e%)iPD1vh zY^!-`06b>BcNfW7j%v(Wald70vUJTv`rkEyR3v*r$6@ntg74j{0{~^5Y?6^x>aFFM z3Y9>R3a3D(W~o7jS#~a{R#Q}OB1il*t*HCI^o%_k0Kxr<>StnvgX$clD=EDVfm32< z&Pf9Irqgc8kVP)x(1zK63qNM=h+`HFfatGA(KTBqttsAA7T!=C3f_3#4HBJ0gE1u7 zR+Y9iT!w^;y|9oww)qRKOgy)vT?aL(j}gJoA5}}d z@BzH<8$lpvR!NVLaomX+l@ZoF|IG|AAnEfn6y_w^*y3%d7HdBW=Z;F&av$g;d zQ1|5&bzwLz;1ohL9E#QXa?#|@w_?w;Doz}tZLPjvkz|%*GbV+T%&NqJkbyXma)Iaf z@q+MCRBHgP7f}>H7X<2!sH6`F3>E)vvk$!84gy9SZ~4a7eh46-;=iqZo=xrgGz56) z^I<8ftbvED0mO?l6hki=1d!2A%2gWxNzNbNnq>HM*nWeUAOvBM=SWV_tLdTv5WW41 z%o?3Y(#!=U6=|v<&qZTKssV<)EqpcTgZ4WBmXsb%S#Z9gP4QRl}(nafo?4IpYN6IM-SQXQd5Oa@bBD8K_3&c5M@+1WGQ`&5aNa`@#aqs&2AA;FGUL=dJrKp z^II^2v;bu|sAzxLWS}NOSoE9o+nOwse zp69Bl1qI&lS|snZ2ms>O(%VF}29z{7O2m6W^>y)_(0wmk)8=&qAZ2UXdf{h)2!aQw z+|aH|V*p4%mGuQ5-}V~;v_8Q2T7L$?V?P4}4n=t721Vj8@+BSnzx&%!Z-DRbD9yaMbzR&(j4N}oCxQIb&sSozc$n90{x0?~g? z&KT26@0zY`su&Y;O}|P%#|*5nRh!eQ!5!9bgex^MQn}#(M3KVP{8rJffl6NK3-ecz zB@p#{>3>`QvwU^C)1I{uKvuW)m#uE^1)ClQ<*VDTj3&EsJ!Q~U%Ky({>6$kC`8{n9 zSwNdld2j2_cwgJEtq?%?CDF!&!~ojWw$;Re1c5LL)dOlfR==uM~8YA zDa8p8Hr$01_NC5E!#?b2+nULMxi(3k9qFX_gZX1+zahRmKddxCD*{MVZFl z`Z22wfZ)FEhypno{_Eg76qoSIk(o)o@xA?vUi%lpir6zvaj3Ac#vk2zaW{ubzRb|%x#H=>KkMp+^`C`@uQ3a* zi!#N!WV05l5Z()`Du8I`l4xo|lVDrO>j4S&mt8QgQ>2~2&v&Ak>b$V3kC%xwW}=vN zt21lpBdlnhLDAd~$Wu#~qTh>hm{|qmme4s8Er96TXO^?a>w_Fof62UQYA{yEZes-@ z7zBxq0C9+q`oMn=Xhk|f=XPMU*2 zcB|W6H5CTl@oLPe%Jbr=XYZzXd6zDYg{nHDi66kah?N zLx=trN&xKrD+qH8a8<9NU|68aJjyuS* z%&}=jWbf+A#%;m2hm^sS+L1I9h!96<-bI!?IcJ!v#;Pt3#2|LQHJUz;1c0IAlEz!# zs2VdP00~QWwHWW9d-HHk=RWLJ4Bs5}891y)ALBlV20%hnc<{kpxMEPZaHfO#L*4Nt z%~oPYsRt1JE`k%r!a5z(#_RyYvM1a*v>8-$a$@M14V?7KT?EaZ)Y9=QswROU%V*@J z#p$Jq+5m_yM&&99ke}#N@S|~`>`ZwjJIopM2OkZOgNvQPHxT#FEcSEO! z3$H)&9$4K8TzKsf@A=mr@qyKkqR;O&255w}OK$6U@19*fOXEKlz`Y;2{B1sTdfFVy z0S|uYnh{M@dJI4=qf{o&j%xBhvmh@*;=LBU=R@8-V>2lZRFlp=+VodI-Nf?ma=~oF%KVYI)Ym~Zxv;7O5WRug#LMpnBDYD^ zH5>NJZ#ui0R}Ua~^I@Rr=Pi^NaZyufN0G6+^TMOoPV|BA#ZUf0I$CD zOFH_%%Ff{Y(nnvattzy>0Hkz(-#gFm=zMPR-b8To2Tp(64>F)JJqJAWVa8gl=BmyP z5(ALS2tWeqC|F?vt4n2q7Tlx^h6l9(kh*5$4IJhpI%cq{=aOwMxl>I55=|JW6!ik&yS9586t zz+^F_HaYT1Ca6wQ52Rv9Fd{4UF;IOr-iQFApC8GYLpqT(TOLdqe^CZsZ#W4g+2Sgs zSstgJ@u+EMOkWolx4s%gaX=DgN@j-rR1Y8=Lwd$#rzKnpfCTJO`R>j%%jyo*;sD1| z+h|T)8w3{G$MXyrY7a>6SJeeT>Ma|u)-PqRcDwJwl1|4eUxNU$;)?x1Lt3P z)ZLi&5B<9MvLx=dvK?K{9^KOw(7QSRJ$rKeZ9mKft@dP}XuT)%pEYeB>IFbh-kxv( zf|)G>l7^xffLy#Nj5%YID2DTC3`(in#7vTj20&=qfKRxq+W|9JpFVhE4_aaT8k5vq zDhr)zs*b=p8zGBNuZ~M|3`?Mbo8;Z`z=r3v~eyeGEsMV1H7V6fqEG9S%USca&+w zoChJYm8qxmA(v;$&#?>`ESrZ^X&<HH+Uq0Dff|hH^(uiBYdiV!SGu++Tip3f z#Veh`g~grx7Z!K+g5_O6+2Y5>{;vS!r@b9-I|Biva!+TlXlJ7T&OO=w)*s}7hxX(` zdq{qZnhfdnVu(SL2zLJWdH|U;X;Pyx^~MB}KSVa(ta1HGnhj**MGPv>uAPgn3%Ux; zg@qUn$C&Z?7MC=cJs>SSR$NrD=lH>4M~F)`ftEE_xvf>Q$I zj9Wnzxv=UJK=8W~+)HjWF~VWZbIKD;>rPcVCDYIv)nRs5e+VAuf=9oS_$-is^nu5w zt^m?Rcb*FD|F2lKifb*1pu!52W8$Q3x-(A{Be+0Q<@t8PSz}t5tWo!wVd6twfTrU3 zAo8Y9=Fji=*SdOPfsljBOrktp7dQz*NSVi0Ef_S?T8x+rs{vJ57hdZ0?+XjN{^VKQ z6OnD0C!@LD%e_Hx(x|0@;N`Mo{wIq{{imH2p6~KWT@{`;wEBf!pl{r%s&$XU?1fr%#`5Fw#poF#yrx7P7}CkPPS5 z14ypTFrx+lQPdnfL;q}*q&1=_{ukOX)<;R}1i`Y=VHH=+9A;`A009Tmhy>5jpfy7{ zVjNbUT$}BXP0!A7-yswhUPlmd*Sp>GuXRC}WZGhzOflRUod=d*O<%!*T)XBB;J)

j18u&F);XYTzQ4ESARIc40xcFMNx;gYyfz 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 diff --git a/libraries/filemanager-9.12.1/img/processing.gif b/libraries/filemanager-9.12.1/img/processing.gif deleted file mode 100644 index 7c99504e10b085b4d083e7473df26e4e1f4ecf18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3209 zcmcK6eN4z}Q2rbDSRQTqiegkVMdcOh*)yl$90>MUHO; z$`puTM1;T!MiGo+m3fqAYLQvxXtjzut!L|YXxFvO(^-ylmi4qdoVq8Ac4uw>ME>Hx zocsO!zR&Zxvt0|GTSFoe9Yl!B<~B4nTzL0_!{wN~HyJw=vs$d>FO`q~c|5u=8u&$E z`rp$d!y^Wr0TW~4*6`T%v8gYo7Cpac;**Ks+TexJ3tT?e=kZNFn2Ha@)1OMOsjC_P zXgt;*3#<-Ie=|LDb|lgsxqa*Q!-o&i6ZkVfl;k+`^X!>Ro%83;zjs-6o^)Wvce| zZqW)6eWXI%a||6<_iJLECXwi6I=XNFG6NgG=#Yq4NL#MZ@>*%3MR=0z)YW;K6q>plt6OP!bKnhyus2S=!ILt)->zn-N}q+ zGe8?u0Syen(?A(O@=4I~f4jK7GAmuT%f$-Oix-9rsQwGX^R^x=-(%crz4R;MJ}y>l zKeUvUQop1B#KpJUwuV`6zW6EkX(G#{saf9Gt9M%9;sk*8foPYtGYPQrszc3jFH3UMy z10i6WSr7in#T`kBoH?VJ3qz?W<$=Ls>$@?}akN)(zrWgu+foz7K zr7WgvqXtKoTvk)m*p#MLhg=lWtlPn;D^W`$o82DiDtf~%)*$h2M{{gIrKa7a*sRZy zDG)|DRo2SmF4bF=0*57HW@x?OXh($aAp86WNS>d^rEmD#3i}jf8Y{vot`u=ya!Z*m zqGR-Y;?8o;4Gm{NIg72#eN18d4#n06$She3h!$c74M;9o4H!i*z<>zC1{Me#Vopr8 zD`Nl%sRKoF96}=i6B<P!NEHc7Pi&&J+lLcyZ*v6z(Og_pC1| zn_pPJf?R%h>EGjRsB$~+=_8|?4Q^CF@aBn{ofE9myQg#h@zwPG;5)qMZmrK8MrO6PEVU!6Gi5$LgB2Rt3I@0tB_!$zU!vV!e75p*n_mf zA-hbeyynY%Ja&JW19r>Z$;6oIkHKyM3xI%rz*Y+|VeIen~i2W>60 z+|K$D;&i}^PqD0R9ekZ)o=aI23sNg7k%8u=)n$td8nex$#mtBmip^fLFd%GI1Qd$QM2i&~%O*oUNC zMoth~rXLBn+r^l2_O5lvR3v^)D6cbK3K;FGL60CHIORyetslF$KK4lcPCc3$AYypU zurMHH7)nqE2r)6EWEg~-NE~)RX%I#hJa$D+BOuwEbifLD8Nee#mi~TETclLyNabIlb4}{ZBp$rtyd_QztL)1 zX-XAp#QmX||IonEkbV!^+vaPJoH`TY;be}~${`AP#%0(N(K1ef&Tm}Oi>!8)Ojbqu z)j1SS+v8e0W>i;&))tO1IHH5PmRzT$; zN^!BzRE-24V+F$N@=Pq@O0S92Qq;TOOOg&{PoG()Qpp%4n?2A=u0^Vt@%T_tJogl1 zJkv`YB@X8uxOC+TFXmGa`|_lSzpgEZRm2NOy-Lc^$#DK?Ch^>Ny~bN+eXiclkrJc6 z5c>QoL#Cu$|7wne{r&SWaZAC$1gXN>fSC@XD!DcwcHl^?U^t;Z8i#nH3s4*&fbd~= z0}3F5AoK!?1Eol;7FZ9%BcK4RfC5(mutI}ich7huk}mvs;=G+Ie^%6AmF+7=^_lG} zGq~ialo;-l{WQ1!;L#5^xcQj-Kt?&Md$;N-P^o&s0cyFiqhWpNO-T z@72qM0(>=PT9NU@zwl49tL`UDj%F~VXY=uL%^JyFY2%dra0(CRokd8j$Y92u+< zNF;*1^H;~Njp6JVn^X?lrRe7BHNWx7rR7DGLy3gyt2(Xrue6Hz>?*dl`?_8H%P+5I HqM!T+FLlTe diff --git a/libraries/filemanager-9.12.1/img/rename.png b/libraries/filemanager-9.12.1/img/rename.png deleted file mode 100644 index a425ee7529301df781a5c3f21f23263a7c3e3c81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 262 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!Uw}`D>wg#!6cmh%j0Exo1O!x6 zRK&!@fb7GE56_u1XZiBw;^N}&?(U+ZqCkecyu6l{mY$xTfq?-~8Bjz?Nl8sjO;uHu zwVY`O&}8wFAirP+77l)K8F^)W69?b$!k!BkuiU(K`@@HKla&jBN&-Ax978JNde2&m zH7E!;UtGY!RVQ%q;NSd^Q$4N6OTI6u_!0F!?%uh;o6mm-)ptEj=w2dmV{2OW6z?DT v^QUgyA}3w_dgI(FS0^Pt&rCR6qGJH{an^LB{Ts5hht&W diff --git a/libraries/filemanager-9.12.1/img/size.png b/libraries/filemanager-9.12.1/img/size.png deleted file mode 100644 index fcc302f200c97c361acf473d0d8f9bd4a868b47d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 660 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47?lHjLR|m<{|^+w1dNOfEKH2- zEX+WX4Tu>T7#SE?7#TTPnORss%2}8hK~iiWh7cQ@AU8-A511>%z`)GJC=N4}nTZJ~ z#m>yk%ESaT1Y`~i0}lfO&`_Wj|)hH#DP`= zHM6q-9RqTe2p3R-5h%#c4l)O5CO;P|&;>v?Py|Sef-Mr@W(67oGyh@;U?|+T2e^oB#d1s(qc>II>)t^TVX1@8O*HCw~<+mizmSdhSjv*CsvAtLG zjsyre&wZ9QS;u(#Odz;vzWeR}de^mYqWhm6Jif_9fHS1%=hC2H#bb`U>yryIDweF! zxWN8CK}chY?9qFR=51NK%J-Vc+|9_weCnqN(BO{PO z5EvO5A*=EA^#yX7nL)+^0S5;MgaIMBxIhj-1FWp95D_LY0BQl+&d$yb5roJB4dmnF zgNp#w0M)XvumDB4xw(NPgbh&ulmaRM0tgpK0u6+i1F-@q0`VP?1S*63)ZE-0s1l+J zXd_S@Xl(fNxr=~8;Uz(S!3=uR-<^&sOlzB<@|BIrL3!%;!>%!0dk@M=?ft_YH}%A% zDc@QIf9(D8sklg9X21TS6txr~>vbm4SrhycGwr%NOEakt5hr>oc-j#M28WB`hPSrm7H3FLJ@Zfe((?cM6N~a@$Q^(8 zB}8W0rM0eCm(9*sS6KOFJ&*EaUVrWYotslvfKc0EN_xm)p|5Q}6Rt2a6_5c7p z9>1}%k&%&s!C>0j+DIhQ;^HEWMx#(DtE;PIGWpl9U;F#}$H&K1Dir_#h@5cfX&64e zucogdFC)vuaQf=E;HCR7?XA7-?Sv6mGgNZqWd?~HQJ7}eL_Ul0D;6=BEi z5N5&qI*88)84ZZ_kLP*I9O?Ex)gz7jL#9o3m|`BFAQ%ZME&-OIlQ3BKlIpjGu#XMW z5E=P)w(EYCWo=MViGDGu-eD4Xm_Wkhp@yNk0PIf3q1xW^mZa7v7wL7u5$+<>7w(Rr(N{|Csw`}U8&onDt z*^8=DSBtq6oOB*Qw$cGhng7Q58Z5Vb z0-g9N@Afa~r)V8Kk+wFNeOGP=n6X_liZxMi4)l|^1J%HFohzL7=FJ;Sm#|&KV@npz zhP3=|$|$H+nKR4ytE0n8WakTryK5kSwPmmO(Cr{;#pik4-QYv;T$3-E^>0BF?BH_Rq{Axgjmg5A8ww9*-synW4P{uG_%rL{P{2%|o}*e_-c%2b5OWw8Oi8od^oa4Fkc znU_{f178`sz0eHcd9CQ}g5dSDd&3>29~=@23y;u!9b*~ClVFkvc$fJ!n>*L^!^@&4 zC4e$_v=hea+VzH;=25k3AFn{gr90SU@I8cHVqgEj;LtFMz{z?F+D#T@1wDApYq4(P&e+L{8LeMz*6LKv@Cx5DtSIk5H8t z)zq2q-}wgl$5^NBIpW%@IHN088t%}0j2yi(_G-yu%BczvrVE5*@p?BaC4EO`=ZR3W zk!4&dsX$AG)r446Hd3rDdME2I?{*~G1n1lm6IVW71gnqf(n%=h%mB3dpHYTwYN+si zd15~e+nCn$T!N+Ok8d@hc=xwK!-$PpeLs*wk-0D4+9-tY+VXVTre$2TsDjK-6PR5u z}Hh}e7Y57O*zWCphi6jVS2*?WOw;gXl;C*E2FJIBi&9t zfXu%8p-A5gw!J6V8R%*4gs3*k7^?I3x(Xknc=#o8RZ@2y{q-P0VNX3C+S-KM*=za5 zyoj?4jEYW<1xFYlEd}J{rLKc>^JKCN#mdnY80^Q&s%l(KZC!nXASYXMOKS_KY;iu8 z4MgW9uq7cd-9!?oKkZ$`FuC{3hxowD6O%pDX0u%jQv<<6D}8Hk(DMt6ycu`rpu3ZM zu1g!6Bio9{w)G$N+FVWmFt0Z|mTG_^_4rWKjo+0Fc(x56FwV=9Dm3wx8r zAICiEm0t>HkhLXdvL%Ny0TsR0XV#GFeL13*ofHD`V#`?VqwBz?^~*UO7cbH;x7 zUv(J92^iOHB3@08Jr|pq(Z1t2G+nGIY57}{@jr4Mpu3VzT}$scYUWY{J*+-Gry|(c z5uIO?P!;?rUE&^picAt7jg?Gi|73x=h6V*hDpr~5wuUk|I-I**QrtivLC?FPR< zgob!W_`EiW^p6dU4+49}B)Q7ol)es@L&>COW{KtH7Zes1mz0*3i!h$Leng+Es;$Ba z)-_@p1ezKPnA)g)J_lbSN0r{xyul}D+KXuJ}un=aSEzT#Z;;MNak!PXhf~r;dU9r3pimLdk zf}XcrO@CUShbPg^#GjTwi_T>X1JYgNdhv|C8CQ(g4JY5Jhcc>$v7h;XUmi$OLTqm; zEvyWefMQ^ZG2ZRkMYq#+JlKs&4cQIlu5=M`jN@3b_*en2piQMJhoXWX zsmy`?Ws8Gp9d(22FN@vMZj^k;uG}r4CWwf#U(|bM1pHr5;J@{1;(zz5%hkq{`TBS} zaJF?B)@d5EvsyR$a>h4EIt{bYOyo5BpD~P-lT3NEAgkedH_0HD)>!kXEP3mO`8S&u zOM}tC%O59SsGD7IKwSIk7`QFbk>L{%$Qb0{$?d1_6d3U=5*V!=8t4878T{n^t2DEa zSg&|nRBC!I@7;TfYT(i`jfQer%(>&caj$6`|X3-cY^g;&1#%O3czX3y6e2okIT4A%|v5r z+hG`smi7u^pNipX-a&a?^q81=y7D@S_}1p6JVQV81GMPu#C7M<=cbFV;stIRPKK-X)&4SC9-v(J z`imQ0t*HH8B3a6EF!26AVgLVysp`l|{LO`1nNH=|BdZBZb%XF9bLthO=J=+RZfh-R zAwh`Hz#)$jS4gS1pyK5eDF>eYLVpa{6;>T#kUJ;Qa0v$Qo2~KIg^v^L$)G?=6FT((h#$rl!5~%X7|h%TZMO6RTw%iN1AP zpb!xAthPzuQ*1LGwxg2{E5OBi+OJ%MW>(#&mH{-W=)_V3+4i0yZ0}Z5GHpJZ1?&^V==cL3pbH#&xmCA80pEYWaqWosyjWWpZ z_JNR;^?F1V@qG3GGWbw7=aV)E4QIofiVj7N-pK_R7ri*1HHdXzP8vN7eB27jg1-L52Xr90On9iHu@$cZh%| zMkQOMSfP;VPcvXyh#ajvW1qs%u#$%bZbh0H>)SeBMoSUC7+=C?p!hglf*_Gt_(8{1p-v3ziFBvUy8k@?UT zyw7OHueFn<7Ea@ZS!pHa;KI&|KFKW|vQda*?YN;gzd8t2NIZF+$uvnU@qLVN(ky}$8rep__OhNzoQqs`%7 zj57Z58(guwNTA0zTjZZL3;MUQT=}naXMRQ44xY_*qr!Cq3r_C$)}>!On}JklIV#a! zTReeqSw3k`DFEN=VPp1@I%G=L?yfm3I95G&NH5#J9ASa^WWyb3NNkAfSI?p zsoN9lYnwX<%-{FE(GID{e^HKTE{A_u-3npi5adNx=BS6Ap{fA+NplZg^DS6pqDYk5 zh=pcJ&V8pd-_(+zY(dw1&)O5?*9Tu)O+Hz^nR-)sxW5-yGL%D4@6xAvBt5-5D_Ea#1D diff --git a/libraries/filemanager-9.12.1/img/trans.jpg b/libraries/filemanager-9.12.1/img/trans.jpg deleted file mode 100644 index 147175ee8e65cf8d678b66368995de1b70123c06..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4024 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 aK4MRt&fO?7DRw&0ZU#?RKbLh*2~7aatZW|u diff --git a/libraries/filemanager-9.12.1/img/url.png b/libraries/filemanager-9.12.1/img/url.png deleted file mode 100644 index f18499afb62d9ce8961936ccd9a358d2da20362b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 593 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbMfw*a3I*Z=?j1DW&zy1Kgbu?Wo; zV`F19kuwuz4+Dh)OM?7@8JJlcz|j;hs_CjCY1%U^9+?9iMqY4gVR;b%?h zUT#6H2O4MYU6vCNeZN`l&Lid7&!Y~e@APzW45^6oJ)7Eh*g>G>;-UDf^!NQfYXX&i{{Fe-RU4DBeu=b} z-%d79UEZf0eXj4<%%3nJj6ZhnO|c*$mf`~?*U~sAPT^Udc6`P3?{*5|j?IS;&RG2H z$bS9P@vWBPr$w*N)-9hJ5pv~RW#H;hpI*%}XH}SXdw0_3g9&{7IV{J$k8W7>@#W9f z^&Q@>8Xw>OeJpIny5xcO=`-eabwAl>Hf=ffYrp$xM<R#a>3ve0!aO@p;+@f! RR|cR!^K|udS?83{1OP*>n)?6% diff --git a/libraries/filemanager-9.12.1/img/zip.png b/libraries/filemanager-9.12.1/img/zip.png deleted file mode 100644 index 9ef55c7b72fd530e37881c36f0bfd697250e297a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 819 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GXl47<&SILR|m<{|^*F2BD#$wzl>_ z5eSJa1z|flIM~>L6aWDm8yk?cu&}kYwPR&v<>26e=<@aTwXv}SN*NoQ0!g42paMNT zJzHA`AlJ?gXo4LN4-b&d!omX7%*n~gzy!3>PFh+p8)7w3pP896kd%^=1_}b*1|)55?7_C% z0PO;DK_XzIfTX>hqk(}DPz0h9$glw#WCwD&jI1m(Gbreg0mK$pcfz_ z5H&zo0rfgLxwyKz0}Xd{bOxH>;NT1lFpDBTy%fED z3#hrMB*-tAp_1`;MHTZ-rr&in5#Rp&tY-<8ydOBtddsEOPiwfo1%7Yhc_?<|(vL%z zA}6FoP2Bk7QV+L_vn+?*=aX)exBiF~`F1w%pIOM?qG;iUuZ9kP=Y~(M+M?dZRzK7-e%HH|>t5YnpvX}Za!6iO#MbeqG;^}k^F=%Yp0__-wUu-` zl6mX%Pu|dvX*@HcUAa#&yj?ga?!R#DX)}{W9YQL>?`N91e|;YAn=8vHdu27VgNbO= znf@4?r*mcJ#@;+CxCZ3|_WMQ88~L - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * @copyright Nicolas Tallefourtane http://nicolab.net - */ -namespace FtpClient; - -use \Countable; - -/** - * The FTP and SSL-FTP client for PHP. - * - * @method bool alloc() alloc(int $filesize, string &$result = null) Allocates space for a file to be uploaded - * @method bool cdup() cdup() Changes to the parent directory - * @method bool chdir() chdir(string $directory) Changes the current directory on a FTP server - * @method int chmod() chmod(int $mode, string $filename) Set permissions on a file via FTP - * @method bool delete() delete(string $path) Deletes a file on the FTP server - * @method bool exec() exec(string $command) Requests execution of a command on the FTP server - * @method bool fget() fget(resource $handle, string $remote_file, int $mode, int $resumepos = 0) Downloads a file from the FTP server and saves to an open file - * @method bool fput() fput(string $remote_file, resource $handle, int $mode, int $startpos = 0) Uploads from an open file to the FTP server - * @method mixed get_option() get_option(int $option) Retrieves various runtime behaviours of the current FTP stream - * @method bool get() get(string $local_file, string $remote_file, int $mode, int $resumepos = 0) Downloads a file from the FTP server - * @method int mdtm() mdtm(string $remote_file) Returns the last modified time of the given file - * @method int nb_continue() nb_continue() Continues retrieving/sending a file (non-blocking) - * @method int nb_fget() nb_fget(resource $handle, string $remote_file, int $mode, int $resumepos = 0) Retrieves a file from the FTP server and writes it to an open file (non-blocking) - * @method int nb_fput() nb_fput(string $remote_file, resource $handle, int $mode, int $startpos = 0) Stores a file from an open file to the FTP server (non-blocking) - * @method int nb_get() nb_get(string $local_file, string $remote_file, int $mode, int $resumepos = 0) Retrieves a file from the FTP server and writes it to a local file (non-blocking) - * @method int nb_put() nb_put(string $remote_file, string $local_file, int $mode, int $startpos = 0) Stores a file on the FTP server (non-blocking) - * @method bool pasv() pasv(bool $pasv) Turns passive mode on or off - * @method bool put() put(string $remote_file, string $local_file, int $mode, int $startpos = 0) Uploads a file to the FTP server - * @method string pwd() pwd() Returns the current directory name - * @method bool quit() quit() Closes an FTP connection - * @method array raw() raw(string $command) Sends an arbitrary command to an FTP server - * @method bool rename() rename(string $oldname, string $newname) Renames a file or a directory on the FTP server - * @method bool set_option() set_option(int $option, mixed $value) Set miscellaneous runtime FTP options - * @method bool site() site(string $command) Sends a SITE command to the server - * @method int size() size(string $remote_file) Returns the size of the given file - * @method string systype() systype() Returns the system type identifier of the remote FTP server - * - * @author Nicolas Tallefourtane - */ -class FtpClient implements Countable -{ - /** - * The connection with the server. - * - * @var resource - */ - protected $conn; - - /** - * PHP FTP functions wrapper. - * - * @var FtpWrapper - */ - private $ftp; - - /** - * Constructor. - * - * @param resource|null $connection - * @throws FtpException If FTP extension is not loaded. - */ - public function __construct($connection = null) - { - if (!extension_loaded('ftp')) { - throw new FtpException('FTP extension is not loaded!'); - } - - if ($connection) { - $this->conn = $connection; - } - - $this->setWrapper(new FtpWrapper($this->conn)); - } - - /** - * Close the connection when the object is destroyed. - */ - public function __destruct() - { - if ($this->conn) { - $this->ftp->close(); - } - } - - /** - * Call an internal method or a FTP method handled by the wrapper. - * - * Wrap the FTP PHP functions to call as method of FtpClient object. - * The connection is automaticaly passed to the FTP PHP functions. - * - * @param string $method - * @param array $arguments - * @return mixed - * @throws FtpException When the function is not valid - */ - public function __call($method, array $arguments) - { - return $this->ftp->__call($method, $arguments); - } - - /** - * Overwrites the PHP limit - * - * @param string|null $memory The memory limit, if null is not modified - * @param int $time_limit The max execution time, unlimited by default - * @param bool $ignore_user_abort Ignore user abort, true by default - * @return FtpClient - */ - public function setPhpLimit($memory = null, $time_limit = 0, $ignore_user_abort = true) - { - if (null !== $memory) { - ini_set('memory_limit', $memory); - } - - ignore_user_abort(true); - set_time_limit($time_limit); - - return $this; - } - - /** - * Get the help information of the remote FTP server. - * - * @return array - */ - public function help() - { - return $this->ftp->raw('help'); - } - - /** - * Open a FTP connection. - * - * @param string $host - * @param bool $ssl - * @param int $port - * @param int $timeout - * - * @return FTPClient - * @throws FtpException If unable to connect - */ - public function connect($host, $ssl = false, $port = 21, $timeout = 90) - { - if ($ssl) { - $this->conn = @$this->ftp->ssl_connect($host, $port, $timeout); - } else { - $this->conn = @$this->ftp->connect($host, $port, $timeout); - } - - if (!$this->conn) { - throw new FtpException('Unable to connect'); - } - - return $this; - } - - /** - * Closes the current FTP connection. - * - * @return bool - */ - public function close() - { - if ($this->conn) { - $this->ftp->close(); - $this->conn = null; - } - } - - /** - * Get the connection with the server. - * - * @return resource - */ - public function getConnection() - { - return $this->conn; - } - - /** - * Get the wrapper. - * - * @return FtpWrapper - */ - public function getWrapper() - { - return $this->ftp; - } - - /** - * Logs in to an FTP connection. - * - * @param string $username - * @param string $password - * - * @return FtpClient - * @throws FtpException If the login is incorrect - */ - public function login($username = 'anonymous', $password = '') - { - $result = $this->ftp->login($username, $password); - - if ($result === false) { - throw new FtpException('Login incorrect'); - } - - return $this; - } - - /** - * Returns the last modified time of the given file. - * Return -1 on error - * - * @param string $remoteFile - * @param string|null $format - * - * @return int - */ - public function modifiedTime($remoteFile, $format = null) - { - $time = $this->ftp->mdtm($remoteFile); - - if ($time !== -1 && $format !== null) { - return date($format, $time); - } - - return $time; - } - - /** - * Changes to the parent directory. - * - * @throws FtpException - * @return FtpClient - */ - public function up() - { - $result = @$this->ftp->cdup(); - - if ($result === false) { - throw new FtpException('Unable to get parent folder'); - } - - return $this; - } - - /** - * Returns a list of files in the given directory. - * - * @param string $directory The directory, by default is "." the current directory - * @param bool $recursive - * @param callable $filter A callable to filter the result, by default is asort() PHP function. - * The result is passed in array argument, - * must take the argument by reference ! - * The callable should proceed with the reference array - * because is the behavior of several PHP sorting - * functions (by reference ensure directly the compatibility - * with all PHP sorting functions). - * - * @return array - * @throws FtpException If unable to list the directory - */ - public function nlist($directory = '.', $recursive = false, $filter = 'sort') - { - if (!$this->isDir($directory)) { - throw new FtpException('"'.$directory.'" is not a directory'); - } - - $files = $this->ftp->nlist($directory); - - if ($files === false) { - throw new FtpException('Unable to list directory'); - } - - $result = array(); - $dir_len = strlen($directory); - - // if it's the current - if (false !== ($kdot = array_search('.', $files))) { - unset($files[$kdot]); - } - - // if it's the parent - if(false !== ($kdot = array_search('..', $files))) { - unset($files[$kdot]); - } - - if (!$recursive) { - foreach ($files as $file) { - $result[] = $directory.'/'.$file; - } - - // working with the reference (behavior of several PHP sorting functions) - $filter($result); - - return $result; - } - - // utils for recursion - $flatten = function (array $arr) use (&$flatten) { - - $flat = []; - - foreach ($arr as $k => $v) { - if (is_array($v)) { - $flat = array_merge($flat, $flatten($v)); - } else { - $flat[] = $v; - } - } - - return $flat; - }; - - foreach ($files as $file) { - $file = $directory.'/'.$file; - - // if contains the root path (behavior of the recursivity) - if (0 === strpos($file, $directory, $dir_len)) { - $file = substr($file, $dir_len); - } - - if ($this->isDir($file)) { - $result[] = $file; - $items = $flatten($this->nlist($file, true, $filter)); - - foreach ($items as $item) { - $result[] = $item; - } - - } else { - $result[] = $file; - } - } - - $result = array_unique($result); - - $filter($result); - - return $result; - } - - /** - * Creates a directory. - * - * @see FtpClient::rmdir() - * @see FtpClient::remove() - * @see FtpClient::put() - * @see FtpClient::putAll() - * - * @param string $directory The directory - * @param bool $recursive - * @return array - */ - public function mkdir($directory, $recursive = false) - { - if (!$recursive or $this->isDir($directory)) { - return $this->ftp->mkdir($directory); - } - - $result = false; - $pwd = $this->ftp->pwd(); - $parts = explode('/', $directory); - - foreach ($parts as $part) { - - if (!@$this->ftp->chdir($part)) { - $result = $this->ftp->mkdir($part); - $this->ftp->chdir($part); - } - } - - $this->ftp->chdir($pwd); - - return $result; - } - - /** - * Remove a directory. - * - * @see FtpClient::mkdir() - * @see FtpClient::cleanDir() - * @see FtpClient::remove() - * @see FtpClient::delete() - * @param string $directory - * @param bool $recursive Forces deletion if the directory is not empty - * @return bool - * @throws FtpException If unable to list the directory to remove - */ - public function rmdir($directory, $recursive = true) - { - if ($recursive) { - $files = $this->nlist($directory, false, 'rsort'); - - // remove children - foreach ($files as $file) { - $this->remove($file, true); - } - } - - // remove the directory - return $this->ftp->rmdir($directory); - } - - /** - * Empty directory. - * - * @see FtpClient::remove() - * @see FtpClient::delete() - * @see FtpClient::rmdir() - * - * @param string $directory - * @return bool - */ - public function cleanDir($directory) - { - if(!$files = $this->nlist($directory)) { - return $this->isEmpty($directory); - } - - // remove children - foreach ($files as $file) { - $this->remove($file, true); - } - - return $this->isEmpty($directory); - } - - /** - * Remove a file or a directory. - * - * @see FtpClient::rmdir() - * @see FtpClient::cleanDir() - * @see FtpClient::delete() - * @param string $path The path of the file or directory to remove - * @param bool $recursive Is effective only if $path is a directory, {@see FtpClient::rmdir()} - * @return bool - */ - public function remove($path, $recursive = false) - { - try { - if (@$this->ftp->delete($path) - or ($this->isDir($path) and @$this->rmdir($path, $recursive))) { - return true; - } - - return false; - } catch (\Exception $e) { - return false; - } - } - - /** - * Check if a directory exist. - * - * @param string $directory - * @return bool - * @throws FtpException - */ - public function isDir($directory) - { - $pwd = $this->ftp->pwd(); - - if ($pwd === false) { - throw new FtpException('Unable to resolve the current directory'); - } - - if (@$this->ftp->chdir($directory)) { - $this->ftp->chdir($pwd); - return true; - } - - $this->ftp->chdir($pwd); - - return false; - } - - /** - * Check if a directory is empty. - * - * @param string $directory - * @return bool - */ - public function isEmpty($directory) - { - return $this->count($directory, null, false) === 0 ? true : false; - } - - /** - * Scan a directory and returns the details of each item. - * - * @see FtpClient::nlist() - * @see FtpClient::rawlist() - * @see FtpClient::parseRawList() - * @see FtpClient::dirSize() - * @param string $directory - * @param bool $recursive - * @return array - */ - public function scanDir($directory = '.', $recursive = false) - { - return $this->parseRawList($this->rawlist($directory, $recursive)); - } - - /** - * Returns the total size of the given directory in bytes. - * - * @param string $directory The directory, by default is the current directory. - * @param bool $recursive true by default - * @return int The size in bytes. - */ - public function dirSize($directory = '.', $recursive = true) - { - $items = $this->scanDir($directory, $recursive); - $size = 0; - - foreach ($items as $item) { - $size += (int) $item['size']; - } - - return $size; - } - - /** - * Count the items (file, directory, link, unknown). - * - * @param string $directory The directory, by default is the current directory. - * @param string|null $type The type of item to count (file, directory, link, unknown) - * @param bool $recursive true by default - * @return int - */ - public function count($directory = '.', $type = null, $recursive = true) - { - $items = (null === $type ? $this->nlist($directory, $recursive) - : $this->scanDir($directory, $recursive)); - - $count = 0; - foreach ($items as $item) { - if (null === $type or $item['type'] == $type) { - $count++; - } - } - - return $count; - } - - /** - * Uploads a file to the server from a string. - * - * @param string $remote_file - * @param string $content - * @return FtpClient - * @throws FtpException When the transfer fails - */ - public function putFromString($remote_file, $content) - { - $handle = fopen('php://temp', 'w'); - - fwrite($handle, $content); - rewind($handle); - - if ($this->ftp->fput($remote_file, $handle, FTP_BINARY)) { - return $this; - } - - throw new FtpException('Unable to put the file "'.$remote_file.'"'); - } - - /** - * Uploads a file to the server. - * - * @param string $local_file - * @return FtpClient - * @throws FtpException When the transfer fails - */ - public function putFromPath($local_file) - { - $remote_file = basename($local_file); - $handle = fopen($local_file, 'r'); - - if ($this->ftp->fput($remote_file, $handle, FTP_BINARY)) { - rewind($handle); - return $this; - } - - throw new FtpException( - 'Unable to put the remote file from the local file "'.$local_file.'"' - ); - } - - /** - * Upload files. - * - * @param string $source_directory - * @param string $target_directory - * @param int $mode - * @return FtpClient - */ - public function putAll($source_directory, $target_directory, $mode = FTP_BINARY) - { - $d = dir($source_directory); - - // do this for each file in the directory - while ($file = $d->read()) { - - // to prevent an infinite loop - if ($file != "." && $file != "..") { - - // do the following if it is a directory - if (is_dir($source_directory.'/'.$file)) { - - if (!$this->isDir($target_directory.'/'.$file)) { - - // create directories that do not yet exist - $this->ftp->mkdir($target_directory.'/'.$file); - } - - // recursive part - $this->putAll( - $source_directory.'/'.$file, $target_directory.'/'.$file, - $mode - ); - } else { - - // put the files - $this->ftp->put( - $target_directory.'/'.$file, $source_directory.'/'.$file, - $mode - ); - } - } - } - - return $this; - } - - /** - * Returns a detailed list of files in the given directory. - * - * @see FtpClient::nlist() - * @see FtpClient::scanDir() - * @see FtpClient::dirSize() - * @param string $directory The directory, by default is the current directory - * @param bool $recursive - * @return array - * @throws FtpException - */ - public function rawlist($directory = '.', $recursive = false) - { - if (!$this->isDir($directory)) { - throw new FtpException('"'.$directory.'" is not a directory.'); - } - - $list = $this->ftp->rawlist($directory); - $items = array(); - - if (!$list) { - return $items; - } - - if (false == $recursive) { - - foreach ($list as $path => $item) { - $chunks = preg_split("/\s+/", $item); - - // if not "name" - if (empty($chunks[8]) || $chunks[8] == '.' || $chunks[8] == '..') { - continue; - } - - $path = $directory.'/'.$chunks[8]; - - if (isset($chunks[9])) { - $nbChunks = count($chunks); - - for ($i = 9; $i < $nbChunks; $i++) { - $path .= ' '.$chunks[$i]; - } - } - - - if (substr($path, 0, 2) == './') { - $path = substr($path, 2); - } - - $items[ $this->rawToType($item).'#'.$path ] = $item; - } - - return $items; - } - - $path = ''; - - foreach ($list as $item) { - $len = strlen($item); - - if (!$len - - // "." - || ($item[$len-1] == '.' && $item[$len-2] == ' ' - - // ".." - or $item[$len-1] == '.' && $item[$len-2] == '.' && $item[$len-3] == ' ') - ){ - - continue; - } - - $chunks = preg_split("/\s+/", $item); - - // if not "name" - if (empty($chunks[8]) || $chunks[8] == '.' || $chunks[8] == '..') { - continue; - } - - $path = $directory.'/'.$chunks[8]; - - if (isset($chunks[9])) { - $nbChunks = count($chunks); - - for ($i = 9; $i < $nbChunks; $i++) { - $path .= ' '.$chunks[$i]; - } - } - - if (substr($path, 0, 2) == './') { - $path = substr($path, 2); - } - - $items[$this->rawToType($item).'#'.$path] = $item; - - if ($item[0] == 'd') { - $sublist = $this->rawlist($path, true); - - foreach ($sublist as $subpath => $subitem) { - $items[$subpath] = $subitem; - } - } - } - - return $items; - } - - /** - * Parse raw list. - * - * @see FtpClient::rawlist() - * @see FtpClient::scanDir() - * @see FtpClient::dirSize() - * @param array $rawlist - * @return array - */ - public function parseRawList(array $rawlist) - { - $items = array(); - $path = ''; - - foreach ($rawlist as $key => $child) { - $chunks = preg_split("/\s+/", $child); - - if (isset($chunks[8]) && ($chunks[8] == '.' or $chunks[8] == '..')) { - continue; - } - - if (count($chunks) === 1) { - $len = strlen($chunks[0]); - - if ($len && $chunks[0][$len-1] == ':') { - $path = substr($chunks[0], 0, -1); - } - - continue; - } - - $item = [ - 'permissions' => $chunks[0], - 'number' => $chunks[1], - 'owner' => $chunks[2], - 'group' => $chunks[3], - 'size' => $chunks[4], - 'month' => $chunks[5], - 'day' => $chunks[6], - 'time' => $chunks[7], - 'name' => $chunks[8], - 'type' => $this->rawToType($chunks[0]), - ]; - - unset($chunks[0]); - unset($chunks[1]); - unset($chunks[2]); - unset($chunks[3]); - unset($chunks[4]); - unset($chunks[5]); - unset($chunks[6]); - unset($chunks[7]); - $item['name'] = implode(' ', $chunks); - - if ($item['type'] == 'link') { - $item['target'] = $chunks[10]; // 9 is "->" - } - - // if the key is not the path, behavior of ftp_rawlist() PHP function - if (is_int($key) || false === strpos($key, $item['name'])) { - array_splice($chunks, 0, 8); - - $key = $item['type'].'#' - .($path ? $path.'/' : '') - .implode(" ", $chunks); - - if ($item['type'] == 'link') { - - // get the first part of 'link#the-link.ext -> /path/of/the/source.ext' - $exp = explode(' ->', $key); - $key = rtrim($exp[0]); - } - - $items[$key] = $item; - - } else { - - // the key is the path, behavior of FtpClient::rawlist() method() - $items[$key] = $item; - } - } - - return $items; - } - - /** - * Convert raw info (drwx---r-x ...) to type (file, directory, link, unknown). - * Only the first char is used for resolving. - * - * @param string $permission Example : drwx---r-x - * - * @return string The file type (file, directory, link, unknown) - * @throws FtpException - */ - public function rawToType($permission) - { - if (!is_string($permission)) { - throw new FtpException('The "$permission" argument must be a string, "' - .gettype($permission).'" given.'); - } - - if (empty($permission[0])) { - return 'unknown'; - } - - switch ($permission[0]) { - case '-': - return 'file'; - - case 'd': - return 'directory'; - - case 'l': - return 'link'; - - default: - return 'unknown'; - } - } - - /** - * Set the wrapper which forward the PHP FTP functions to use in FtpClient instance. - * - * @param FtpWrapper $wrapper - * @return FtpClient - */ - protected function setWrapper(FtpWrapper $wrapper) - { - $this->ftp = $wrapper; - - return $this; - } -} diff --git a/libraries/filemanager-9.12.1/include/FtpException.php b/libraries/filemanager-9.12.1/include/FtpException.php deleted file mode 100644 index f17ed7f..0000000 --- a/libraries/filemanager-9.12.1/include/FtpException.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * @copyright Nicolas Tallefourtane http://nicolab.net - */ -namespace FtpClient; - -/** - * The FtpException class. - * Exception thrown if an error on runtime of the FTP client occurs. - * @inheritDoc - * @author Nicolas Tallefourtane - */ -class FtpException extends \Exception {} diff --git a/libraries/filemanager-9.12.1/include/FtpWrapper.php b/libraries/filemanager-9.12.1/include/FtpWrapper.php deleted file mode 100644 index cd12de0..0000000 --- a/libraries/filemanager-9.12.1/include/FtpWrapper.php +++ /dev/null @@ -1,115 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - * - * @copyright Nicolas Tallefourtane http://nicolab.net - */ -namespace FtpClient; - -/** - * Wrap the PHP FTP functions - * - * @method bool alloc() alloc(int $filesize, string &$result = null) Allocates space for a file to be uploaded - * @method bool cdup() cdup() Changes to the parent directory - * @method bool chdir() chdir(string $directory) Changes the current directory on a FTP server - * @method int chmod() chmod(int $mode, string $filename) Set permissions on a file via FTP - * @method bool close() close() Closes an FTP connection - * @method bool delete() delete(string $path) Deletes a file on the FTP server - * @method bool exec() exec(string $command) Requests execution of a command on the FTP server - * @method bool fget() fget(resource $handle, string $remote_file, int $mode, int $resumepos = 0) Downloads a file from the FTP server and saves to an open file - * @method bool fput() fput(string $remote_file, resource $handle, int $mode, int $startpos = 0) Uploads from an open file to the FTP server - * @method mixed get_option() get_option(int $option) Retrieves various runtime behaviours of the current FTP stream - * @method bool get() get(string $local_file, string $remote_file, int $mode, int $resumepos = 0) Downloads a file from the FTP server - * @method bool login() login(string $username, string $password) Logs in to an FTP connection - * @method int mdtm() mdtm(string $remote_file) Returns the last modified time of the given file - * @method string mkdir() mkdir(string $directory) Creates a directory - * @method int nb_continue() nb_continue() Continues retrieving/sending a file (non-blocking) - * @method int nb_fget() nb_fget(resource $handle, string $remote_file, int $mode, int $resumepos = 0) Retrieves a file from the FTP server and writes it to an open file (non-blocking) - * @method int nb_fput() nb_fput(string $remote_file, resource $handle, int $mode, int $startpos = 0) Stores a file from an open file to the FTP server (non-blocking) - * @method int nb_get() nb_get(string $local_file, string $remote_file, int $mode, int $resumepos = 0) Retrieves a file from the FTP server and writes it to a local file (non-blocking) - * @method int nb_put() nb_put(string $remote_file, string $local_file, int $mode, int $startpos = 0) Stores a file on the FTP server (non-blocking) - * @method array nlist() nlist(string $directory) Returns a list of files in the given directory - * @method bool pasv() pasv(bool $pasv) Turns passive mode on or off - * @method bool put() put(string $remote_file, string $local_file, int $mode, int $startpos = 0) Uploads a file to the FTP server - * @method string pwd() pwd() Returns the current directory name - * @method bool quit() quit() Closes an FTP connection - * @method array raw() raw(string $command) Sends an arbitrary command to an FTP server - * @method array rawlist() rawlist(string $directory, bool $recursive = false) Returns a detailed list of files in the given directory - * @method bool rename() rename(string $oldname, string $newname) Renames a file or a directory on the FTP server - * @method bool rmdir() rmdir(string $directory) Removes a directory - * @method bool set_option() set_option(int $option, mixed $value) Set miscellaneous runtime FTP options - * @method bool site() site(string $command) Sends a SITE command to the server - * @method int size() size(string $remote_file) Returns the size of the given file - * @method string systype() systype() Returns the system type identifier of the remote FTP server - * - * @author Nicolas Tallefourtane - */ -class FtpWrapper -{ - /** - * The connection with the server - * - * @var resource - */ - protected $conn; - - /** - * Constructor. - * - * @param resource &$connection The FTP (or SSL-FTP) connection (takes by reference). - */ - public function __construct(&$connection) - { - $this->conn = &$connection; - } - - /** - * Forward the method call to FTP functions - * - * @param string $function - * @param array $arguments - * @return mixed - * @throws FtpException When the function is not valid - */ - public function __call($function, array $arguments) - { - $function = 'ftp_' . $function; - - if (function_exists($function)) { - array_unshift($arguments, $this->conn); - return call_user_func_array($function, $arguments); - } - - throw new FtpException("{$function} is not a valid FTP function"); - } - - /** - * Opens a FTP connection - * - * @param string $host - * @param int $port - * @param int $timeout - * @return resource - */ - public function connect($host, $port = 21, $timeout = 90) - { - return ftp_connect($host, $port, $timeout); - } - - /** - * Opens a Secure SSL-FTP connection - * @param string $host - * @param int $port - * @param int $timeout - * @return resource - */ - public function ssl_connect($host, $port = 21, $timeout = 90) - { - return ftp_ssl_connect($host, $port, $timeout); - } -} diff --git a/libraries/filemanager-9.12.1/include/Response.php b/libraries/filemanager-9.12.1/include/Response.php deleted file mode 100644 index ae9f10c..0000000 --- a/libraries/filemanager-9.12.1/include/Response.php +++ /dev/null @@ -1,365 +0,0 @@ - 'Continue', - 101 => 'Switching Protocols', - 102 => 'Processing', // RFC2518 - 200 => 'OK', - 201 => 'Created', - 202 => 'Accepted', - 203 => 'Non-Authoritative Information', - 204 => 'No Content', - 205 => 'Reset Content', - 206 => 'Partial Content', - 207 => 'Multi-Status', // RFC4918 - 208 => 'Already Reported', // RFC5842 - 226 => 'IM Used', // RFC3229 - 300 => 'Multiple Choices', - 301 => 'Moved Permanently', - 302 => 'Found', - 303 => 'See Other', - 304 => 'Not Modified', - 305 => 'Use Proxy', - 306 => 'Reserved', - 307 => 'Temporary Redirect', - 308 => 'Permanent Redirect', // RFC7238 - 400 => 'Bad Request', - 401 => 'Unauthorized', - 402 => 'Payment Required', - 403 => 'Forbidden', - 404 => 'Not Found', - 405 => 'Method Not Allowed', - 406 => 'Not Acceptable', - 407 => 'Proxy Authentication Required', - 408 => 'Request Timeout', - 409 => 'Conflict', - 410 => 'Gone', - 411 => 'Length Required', - 412 => 'Precondition Failed', - 413 => 'Request Entity Too Large', - 414 => 'Request-URI Too Long', - 415 => 'Unsupported Media Type', - 416 => 'Requested Range Not Satisfiable', - 417 => 'Expectation Failed', - 418 => 'I\'m a teapot', // RFC2324 - 422 => 'Unprocessable Entity', // RFC4918 - 423 => 'Locked', // RFC4918 - 424 => 'Failed Dependency', // RFC4918 - 425 => 'Reserved for WebDAV advanced collections expired proposal', // RFC2817 - 426 => 'Upgrade Required', // RFC2817 - 428 => 'Precondition Required', // RFC6585 - 429 => 'Too Many Requests', // RFC6585 - 431 => 'Request Header Fields Too Large', // RFC6585 - 500 => 'Internal Server Error', - 501 => 'Not Implemented', - 502 => 'Bad Gateway', - 503 => 'Service Unavailable', - 504 => 'Gateway Timeout', - 505 => 'HTTP Version Not Supported', - 506 => 'Variant Also Negotiates (Experimental)', // RFC2295 - 507 => 'Insufficient Storage', // RFC4918 - 508 => 'Loop Detected', // RFC5842 - 510 => 'Not Extended', // RFC2774 - 511 => 'Network Authentication Required', // RFC6585 - ); - - /** - * @var string - */ - protected $content; - - /** - * @var int - */ - protected $statusCode; - - /** - * @var string - */ - protected $statusText; - - /** - * @var array - */ - public $headers; - - /** - * @var string - */ - protected $version; - - /** - * Construct the response - * - * @param mixed $content - * @param int $statusCode - * @param array $headers - */ - public function __construct($content = '', $statusCode = 200, $headers = array()) - { - $this->setContent($content); - $this->setStatusCode($statusCode); - $this->headers = $headers; - $this->version = '1.1'; - } - - /** - * Set the content on the response. - * - * @param mixed $content - * @return $this - */ - public function setContent($content) - { - if ($content instanceof ArrayObject || is_array($content)) - { - $this->headers['Content-Type'] = array('application/json'); - - $content = json_encode($content); - } - - $this->content = $content; - } - - /** - * Returns the Response as an HTTP string. - * - * The string representation of the Response is the same as the - * one that will be sent to the client only if the prepare() method - * has been called before. - * - * @return string The Response as an HTTP string - * - * @see prepare() - */ - public function __toString() - { - return - sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText)."\r\n". - $this->headers."\r\n". - $this->getContent(); - } - - /** - * Sets the response status code. - * - * @param int $code HTTP status code - * @param mixed $text HTTP status text - * - * If the status text is null it will be automatically populated for the known - * status codes and left empty otherwise. - * - * @return Response - * - * @throws \InvalidArgumentException When the HTTP status code is not valid - * - * @api - */ - public function setStatusCode($code, $text = null) - { - $this->statusCode = $code = (int) $code; - if ($this->isInvalid()) { - throw new InvalidArgumentException(sprintf('The HTTP status code "%s" is not valid.', $code)); - } - - if (null === $text) { - $this->statusText = isset(self::$statusTexts[$code]) ? self::$statusTexts[$code] : ''; - - return $this; - } - - if (false === $text) { - $this->statusText = ''; - - return $this; - } - - $this->statusText = $text; - - return $this; - } - - // http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html - /** - * Is response invalid? - * - * @return bool - * - * @api - */ - public function isInvalid() - { - return $this->statusCode < 100 || $this->statusCode >= 600; - } - - /** - * Set a header on the Response. - * - * @param string $key - * @param string $value - * @param bool $replace - * @return $this - */ - public function header($key, $value, $replace = true) - { - if (empty($this->headers[$key])) - { - $this->headers[$key] = array(); - } - if ($replace) - { - $this->headers[$key] = array($value); - } - else - { - $this->headers[$key][] = $value; - } - - return $this; - } - - /** - * Sends HTTP headers and content. - * - * @return Response - * - * @api - */ - public function send() - { - $this->sendHeaders(); - $this->sendContent(); - - if (function_exists('fastcgi_finish_request')) { - fastcgi_finish_request(); - } - - return $this; - } - - /** - * Sends content for the current web response. - * - * @return Response - */ - public function sendContent() - { - echo $this->content; - - return $this; - } - - /** - * Sends HTTP headers. - * - * @return Response - */ - public function sendHeaders() - { - // headers have already been sent by the developer - if (headers_sent()) { - return $this; - } - - // status - header(sprintf('HTTP/%s %s %s', $this->version, $this->statusCode, $this->statusText), true, $this->statusCode); - - // headers - foreach ($this->headers as $name => $values) { - if (is_array($values)) - { - foreach ($values as $value) - { - header($name . ': ' . $value, false, $this->statusCode); - } - } - else - { - header($name . ': ' . $values, false, $this->statusCode); - } - } - - return $this; - } -} \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/include/ftp_class.php b/libraries/filemanager-9.12.1/include/ftp_class.php deleted file mode 100644 index 9c2ae22..0000000 --- a/libraries/filemanager-9.12.1/include/ftp_class.php +++ /dev/null @@ -1,82 +0,0 @@ -messageArray[] = $message; - } - - public function getMessages() - { - return $this->messageArray; - } - - public function connect ($server, $ftpUser, $ftpPassword, $isPassive = false) - { - - // *** Set up basic connection - $this->connectionId = ftp_connect($server); - - // *** Login with username and password - $loginResult = ftp_login($this->connectionId, $ftpUser, $ftpPassword); - - // *** Sets passive mode on/off (default off) - ftp_pasv($this->connectionId, $isPassive); - - // *** Check connection - if ((!$this->connectionId) || (!$loginResult)) { - $this->logMessage('FTP connection has failed!'); - $this->logMessage('Attempted to connect to ' . $server . ' for user ' . $ftpUser, true); - return false; - } else { - $this->logMessage('Connected to ' . $server . ', for user ' . $ftpUser); - $this->loginOk = true; - return true; - } - } - public function makeDir($directory) - { - // *** If creating a directory is successful... - if (ftp_mkdir($this->connectionId, $directory)) { - - $this->logMessage('Directory "' . $directory . '" created successfully'); - return true; - - } else { - - // *** ...Else, FAIL. - $this->logMessage('Failed creating directory "' . $directory . '"'); - return false; - } - } - - public function changeDir($directory) - { - if (ftp_chdir($this->connectionId, $directory)) { - $this->logMessage('Current directory is now: ' . ftp_pwd($this->connectionId)); - return true; - } else { - $this->logMessage('Couldn\'t change directory'); - return false; - } - } - - public function getDirListing($directory = '.', $parameters = '-la') - { - echo shell_exec('whoami')." is who i am
"; - echo "Current directory is now: " . ftp_pwd($this->connectionId) . "
"; - - // get contents of the current directory - $contentsArray = ftp_rawlist($this->connectionId, $parameters . ' ' . $directory); - echo error_get_last(); - return $contentsArray; - } -} \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/include/mime_type_lib.php b/libraries/filemanager-9.12.1/include/mime_type_lib.php deleted file mode 100644 index 86f192e..0000000 --- a/libraries/filemanager-9.12.1/include/mime_type_lib.php +++ /dev/null @@ -1,265 +0,0 @@ - "ps", - "audio/x-aiff" => "aiff", - "text/plain" => "txt", - "video/x-ms-asf" => "asx", - "audio/basic" => "snd", - "video/x-msvideo" => "avi", - "application/x-bcpio" => "bcpio", - "application/octet-stream" => "so", - "image/bmp" => "bmp", - "application/x-bzip2" => "bz2", - "application/x-netcdf" => "nc", - "application/x-kchart" => "chrt", - "application/x-cpio" => "cpio", - "application/mac-compactpro" => "cpt", - "application/x-csh" => "csh", - "text/css" => "css", - "application/x-director" => "dxr", - "image/vnd.djvu" => "djvu", - "application/x-dvi" => "dvi", - "image/vnd.dwg" => "dwg", - "application/epub" => "epub", - "application/epub+zip" => "epub", - "text/x-setext" => "etx", - "application/andrew-inset" => "ez", - "video/x-flv" => "flv", - "image/gif" => "gif", - "application/x-gtar" => "gtar", - "application/x-gzip" => "tgz", - "application/x-hdf" => "hdf", - "application/mac-binhex40" => "hqx", - "text/html" => "html", - "text/htm" => "htm", - "x-conference/x-cooltalk" => "ice", - "image/ief" => "ief", - "model/iges" => "igs", - "text/vnd.sun.j2me.app-descriptor" => "jad", - "application/x-java-archive" => "jar", - "application/x-java-jnlp-file" => "jnlp", - "image/jpeg" => "jpg", - "application/x-javascript" => "js", - "audio/midi" => "midi", - "application/x-killustrator" => "kil", - "application/x-kpresenter" => "kpt", - "application/x-kspread" => "ksp", - "application/x-kword" => "kwt", - "application/vnd.google-earth.kml+xml" => "kml", - "application/vnd.google-earth.kmz" => "kmz", - "application/x-latex" => "latex", - "audio/x-mpegurl" => "m3u", - "application/x-troff-man" => "man", - "application/x-troff-me" => "me", - "model/mesh" => "silo", - "application/vnd.mif" => "mif", - "video/quicktime" => "qt", - "video/x-sgi-movie" => "movie", - "audio/mpeg" => "mp3", - "video/mp4" => "mp4", - "video/mpeg" => "mpeg", - "application/x-troff-ms" => "ms", - "video/vnd.mpegurl" => "mxu", - "application/vnd.oasis.opendocument.database" => "odb", - "application/vnd.oasis.opendocument.chart" => "odc", - "application/vnd.oasis.opendocument.formula" => "odf", - "application/vnd.oasis.opendocument.graphics" => "odg", - "application/vnd.oasis.opendocument.image" => "odi", - "application/vnd.oasis.opendocument.text-master" => "odm", - "application/vnd.oasis.opendocument.presentation" => "odp", - "application/vnd.oasis.opendocument.spreadsheet" => "ods", - "application/vnd.oasis.opendocument.text" => "odt", - "application/ogg" => "ogg", - "video/ogg" => "ogv", - "application/vnd.oasis.opendocument.graphics-template" => "otg", - "application/vnd.oasis.opendocument.text-web" => "oth", - "application/vnd.oasis.opendocument.presentation-template" => "otp", - "application/vnd.oasis.opendocument.spreadsheet-template" => "ots", - "application/vnd.oasis.opendocument.text-template" => "ott", - "image/x-portable-bitmap" => "pbm", - "chemical/x-pdb" => "pdb", - "application/pdf" => "pdf", - "image/x-portable-graymap" => "pgm", - "application/x-chess-pgn" => "pgn", - "text/x-php" => "php", - "image/png" => "png", - "image/x-portable-anymap" => "pnm", - "image/x-portable-pixmap" => "ppm", - "application/vnd.ms-powerpoint" => "ppt", - "audio/x-realaudio" => "ra", - "audio/x-pn-realaudio" => "rm", - "image/x-cmu-raster" => "ras", - "image/x-rgb" => "rgb", - "application/x-troff" => "tr", - "application/x-rpm" => "rpm", - "text/rtf" => "rtf", - "text/richtext" => "rtx", - "text/sgml" => "sgml", - "application/x-sh" => "sh", - "application/x-shar" => "shar", - "application/vnd.symbian.install" => "sis", - "application/x-stuffit" => "sit", - "application/x-koan" => "skt", - "application/smil" => "smil", - "image/svg+xml" => "svg", - "application/x-futuresplash" => "spl", - "application/x-wais-source" => "src", - "application/vnd.sun.xml.calc.template" => "stc", - "application/vnd.sun.xml.draw.template" => "std", - "application/vnd.sun.xml.impress.template" => "sti", - "application/vnd.sun.xml.writer.template" => "stw", - "application/x-sv4cpio" => "sv4cpio", - "application/x-sv4crc" => "sv4crc", - "application/x-shockwave-flash" => "swf", - "application/vnd.sun.xml.calc" => "sxc", - "application/vnd.sun.xml.draw" => "sxd", - "application/vnd.sun.xml.writer.global" => "sxg", - "application/vnd.sun.xml.impress" => "sxi", - "application/vnd.sun.xml.math" => "sxm", - "application/vnd.sun.xml.writer" => "sxw", - "application/x-tar" => "tar", - "application/x-tcl" => "tcl", - "application/x-tex" => "tex", - "application/x-texinfo" => "texinfo", - "image/tiff" => "tiff", - "application/x-bittorrent" => "torrent", - "text/tab-separated-values" => "tsv", - "application/x-ustar" => "ustar", - "application/x-cdlink" => "vcd", - "model/vrml" => "wrl", - "audio/x-wav" => "wav", - "audio/x-ms-wax" => "wax", - "image/vnd.wap.wbmp" => "wbmp", - "application/vnd.wap.wbxml" => "wbxml", - "video/x-ms-wm" => "wm", - "audio/x-ms-wma" => "wma", - "text/vnd.wap.wml" => "wml", - "application/vnd.wap.wmlc" => "wmlc", - "text/vnd.wap.wmlscript" => "wmls", - "application/vnd.wap.wmlscriptc" => "wmlsc", - "video/x-ms-wmv" => "wmv", - "video/x-ms-wmx" => "wmx", - "video/x-ms-wvx" => "wvx", - "image/x-xbitmap" => "xbm", - "application/xhtml+xml" => "xhtml", - "application/xml" => "xml", - "image/x-xpixmap" => "xpm", - "text/xsl" => "xsl", - "image/x-xwindowdump" => "xwd", - "chemical/x-xyz" => "xyz", - "application/zip" => "zip", - "application/msword" => "doc", - "application/vnd.openxmlformats-officedocument.wordprocessingml.document" => "docx", - "application/vnd.openxmlformats-officedocument.wordprocessingml.template" => "dotx", - "application/vnd.ms-word.document.macroEnabled.12" => "docm", - "application/vnd.ms-excel" => "xls", - "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" => "xlsx", - "application/vnd.openxmlformats-officedocument.spreadsheetml.template" => "xltx", - "application/vnd.ms-excel.sheet.macroEnabled.12" => "xlsm", - "application/vnd.ms-excel.template.macroEnabled.12" => "xltm", - "application/vnd.ms-excel.addin.macroEnabled.12" => "xlam", - "application/vnd.ms-excel.sheet.binary.macroEnabled.12" => "xlsb", - "application/vnd.openxmlformats-officedocument.presentationml.presentation" => "pptx", - "application/vnd.openxmlformats-officedocument.presentationml.template" => "potx", - "application/vnd.openxmlformats-officedocument.presentationml.slideshow" => "ppsx", - "application/vnd.ms-powerpoint.addin.macroEnabled.12" => "ppam", - "application/vnd.ms-powerpoint.presentation.macroEnabled.12" => "pptm", - "application/vnd.ms-powerpoint.template.macroEnabled.12" => "potm", - "application/vnd.ms-powerpoint.slideshow.macroEnabled.12" => "ppsm", -); - - -if ( ! function_exists('get_extension_from_mime')) -{ - function get_extension_from_mime($mime){ - global $mime_types; - if(strpos($mime, ';')!==FALSE){ - $mime = substr($mime, 0,strpos($mime, ';')); - } - if(isset($mime_types[$mime])){ - return $mime_types[$mime]; - } - return ''; - } -} - -if ( ! function_exists('get_file_mime_type')) -{ - function get_file_mime_type($filename, $debug = false) - { - if (function_exists('finfo_open') && function_exists('finfo_file') && function_exists('finfo_close')) - { - $fileinfo = finfo_open(FILEINFO_MIME_TYPE); - $mime_type = finfo_file($fileinfo, $filename); - finfo_close($fileinfo); - - if ( ! empty($mime_type)) - { - if (true === $debug) - { - return array( 'mime_type' => $mime_type, 'method' => 'fileinfo' ); - } - - return $mime_type; - } - } - - if (function_exists('mime_content_type')) - { - $mime_type = mime_content_type($filename); - - if ( ! empty($mime_type)) - { - if (true === $debug) - { - return array( 'mime_type' => $mime_type, 'method' => 'mime_content_type' ); - } - - return $mime_type; - } - } - - global $mime_types; - $mime_types = array_flip($mime_types); - - $tmp_array = explode('.', $filename); - $ext = strtolower(array_pop($tmp_array)); - - if ( ! empty($mime_types[ $ext ])) - { - if (true === $debug) - { - return array( 'mime_type' => $mime_types[ $ext ], 'method' => 'from_array' ); - } - - return $mime_types[ $ext ]; - } - - if (true === $debug) - { - return array( 'mime_type' => 'application/octet-stream', 'method' => 'last_resort' ); - } - - return 'application/octet-stream'; - } -} - - -/******************** - * The following code can be used to test the function. - * First put a plain text file named "test.txt" and a - * JPEG image file named "image.jpg" in the same folder - * as this file. - * - * Simply remove the "REMOVE ME TO TEST" lines below to have - * the code run when this file runs. - * - * Run the code with this command: - * php mime_type_lib.php - ********************/ - - -/* REMOVE ME TO TEST -echo get_file_mime_type( 'test.txt' ) . "\n"; -echo print_r( get_file_mime_type( 'image.jpg', true ), true ) . "\n"; -REMOVE ME TO TEST */ diff --git a/libraries/filemanager-9.12.1/include/php_image_magician.php b/libraries/filemanager-9.12.1/include/php_image_magician.php deleted file mode 100644 index 2dcf402..0000000 --- a/libraries/filemanager-9.12.1/include/php_image_magician.php +++ /dev/null @@ -1,3963 +0,0 @@ - resizeImage(150, 100, 0); -# $magicianObj -> saveImage('images/car_small.jpg', 100); -# -# - See end of doc for more examples - -# -# Supported file types include: jpg, png, gif, bmp, psd (read) -# -# -# -# The following functions are taken from phpThumb() [available from -# http://phpthumb.sourceforge.net], and are used with written permission -# from James Heinrich. -# - GD2BMPstring -# - GetPixelColor -# - LittleEndian2String -# -# The following functions are from Marc Hibbins and are used with written -# permission (are also under the Attribution-ShareAlike -# [http://creativecommons.org/licenses/by-sa/3.0/] license. -# - -# -# PhpPsdReader is used with written permission from Tim de Koning. -# [http://www.kingsquare.nl/phppsdreader] -# -# -# -# Modificatoin history -# Date Initials Ver Description -# 10-05-11 J.C.O 0.0 Initial build -# 01-06-11 J.C.O 0.1.1 * Added reflections -# * Added Rounded corners -# * You can now use PNG interlacing -# * Added shadow -# * Added caption box -# * Added vintage filter -# * Added dynamic image resizing (resize on the fly) -# * minor bug fixes -# 05-06-11 J.C.O 0.1.1.1 * Fixed undefined variables -# 17-06-11 J.C.O 0.1.2 * Added image_batch_class.php class -# * Minor bug fixes -# 26-07-11 J.C.O 0.1.4 * Added support for external images -# * Can now set the crop poisition -# 03-08-11 J.C.O 0.1.5 * Added reset() method to reset resource to -# original input file. -# * Added method addTextToCaptionBox() to -# simplify adding text to a caption box. -# * Added experimental writeIPTC. (not finished) -# * Added experimental readIPTC. (not finished) -# 11-08-11 J.C.O * Added initial border presets. -# 30-08-11 J.C.O * Added 'auto' crop option to crop portrait -# images near the top. -# 08-09-11 J.C.O * Added cropImage() method to allow standalone -# cropping. -# 17-09-11 J.C.O * Added setCropFromTop() set method - set the -# percentage to crop from the top when using -# crop 'auto' option. -# * Added setTransparency() set method - allows you -# to turn transparency off (like when saving -# as a jpg). -# * Added setFillColor() set method - set the -# background color to use instead of transparency. -# 05-11-11 J.C.O 0.1.5.1 * Fixed interlacing option -# 0-07-12 J.C.O 1.0 -# -# Known issues & Limitations: -# ------------------------------- -# Not so much an issue, the image is destroyed on the deconstruct rather than -# when we have finished with it. The reason for this is that we don't know -# when we're finished with it as you can both save the image and display -# it directly to the screen (imagedestroy($this->imageResized)) -# -# Opening BMP files is slow. A test with 884 bmp files processed in a loop -# takes forever - over 5 min. This test inlcuded opening the file, then -# getting and displaying its width and height. -# -# $forceStretch: -# ------------------------------- -# On by default. -# $forceStretch can be disabled by calling method setForceStretch with false -# parameter. If disabled, if an images original size is smaller than the size -# specified by the user, the original size will be used. This is useful when -# dealing with small images. -# -# If enabled, images smaller than the size specified will be stretched to -# that size. -# -# Tips: -# ------------------------------- -# * If you're resizing a transparent png and saving it as a jpg, set -# $keepTransparency to false with: $magicianObj->setTransparency(false); -# -# FEATURES: -# * EASY TO USE -# * BMP SUPPORT (read & write) -# * PSD (photoshop) support (read) -# * RESIZE IMAGES -# - Preserve transparency (png, gif) -# - Apply sharpening (jpg) (requires PHP >= 5.1.0) -# - Set image quality (jpg, png) -# - Resize modes: -# - exact size -# - resize by width (auto height) -# - resize by height (auto width) -# - auto (automatically determine the best of the above modes to use) -# - crop - resize as best as it can then crop the rest -# - Force stretching of smaller images (upscale) -# * APPLY FILTERS -# - Convert to grey scale -# - Convert to black and white -# - Convert to sepia -# - Convert to negative -# * ROTATE IMAGES -# - Rotate using predefined "left", "right", or "180"; or any custom degree amount -# * EXTRACT EXIF DATA (requires exif module) -# - make -# - model -# - date -# - exposure -# - aperture -# - f-stop -# - iso -# - focal length -# - exposure program -# - metering mode -# - flash status -# - creator -# - copyright -# * ADD WATERMARK -# - Specify exact x, y placement -# - Or, specify using one of the 9 pre-defined placements such as "tl" -# (for top left), "m" (for middle), "br" (for bottom right) -# - also specify padding from edge amount (optional). -# - Set opacity of watermark (png). -# * ADD BORDER -# * USE HEX WHEN SPECIFYING COLORS (eg: #ffffff) -# * SAVE IMAGE OR OUTPUT TO SCREEN -# -# -# ========================================================================# - - -class imageLib { - - private $fileName; - private $image; - protected $imageResized; - private $widthOriginal; # Always be the original width - private $heightOriginal; - private $width; # Current width (width after resize) - private $height; - private $imageSize; - private $fileExtension; - - private $debug = true; - private $errorArray = array(); - - private $forceStretch = true; - private $aggresiveSharpening = false; - - private $transparentArray = array( '.png', '.gif' ); - private $keepTransparency = true; - private $fillColorArray = array( 'r' => 255, 'g' => 255, 'b' => 255 ); - - private $sharpenArray = array( 'jpg' ); - - private $psdReaderPath; - private $filterOverlayPath; - - private $isInterlace; - - private $captionBoxPositionArray = array(); - - private $fontDir = 'fonts'; - - private $cropFromTopPercent = 10; - - -## -------------------------------------------------------- - - function __construct($fileName) - # Author: Jarrod Oberto - # Date: 27-02-08 - # Purpose: Constructor - # Param in: $fileName: File name and path. - # Param out: n/a - # Reference: - # Notes: - # - { - if ( ! $this->testGDInstalled()) - { - if ($this->debug) - { - throw new Exception('The GD Library is not installed.'); - } - else - { - throw new Exception(); - } - }; - - $this->initialise(); - - // *** Save the image file name. Only store this incase you want to display it - $this->fileName = $fileName; - $this->fileExtension = fix_strtolower(strrchr($fileName, '.')); - - // *** Open up the file - $this->image = $this->openImage($fileName); - - - // *** Assign here so we don't modify the original - $this->imageResized = $this->image; - - // *** If file is an image - if ($this->testIsImage($this->image)) - { - // *** Get width and height - $this->width = imagesx($this->image); - $this->widthOriginal = imagesx($this->image); - $this->height = imagesy($this->image); - $this->heightOriginal = imagesy($this->image); - - - /* Added 15-09-08 - * Get the filesize using this build in method. - * Stores an array of size - * - * $this->imageSize[1] = width - * $this->imageSize[2] = height - * $this->imageSize[3] = width x height - * - */ - $this->imageSize = getimagesize($this->fileName); - - } - else - { - $this->errorArray[] = 'File is not an image'; - } - } - -## -------------------------------------------------------- - - private function initialise() - { - - $this->psdReaderPath = dirname(__FILE__) . '/classPhpPsdReader.php'; - $this->filterOverlayPath = dirname(__FILE__) . '/filters'; - - // *** Set if image should be interlaced or not. - $this->isInterlace = false; - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Resize -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - - public function resizeImage($newWidth, $newHeight, $option = 0, $sharpen = false, $autoRotate = false) - # Author: Jarrod Oberto - # Date: 27-02-08 - # Purpose: Resizes the image - # Param in: $newWidth: - # $newHeight: - # $option: 0 / exact = defined size; - # 1 / portrait = keep aspect set height; - # 2 / landscape = keep aspect set width; - # 3 / auto = auto; - # 4 / crop= resize and crop; - # - # $option can also be an array containing options for - # cropping. E.G., array('crop', 'r') - # - # This array only applies to 'crop' and the 'r' refers to - # "crop right". Other value include; tl, t, tr, l, m (default), - # r, bl, b, br, or you can specify your own co-ords (which - # isn't recommended. - # - # $sharpen: true: sharpen (jpg only); - # false: don't sharpen - # Param out: n/a - # Reference: - # Notes: To clarify the $option input: - # 0 = The exact height and width dimensions you set. - # 1 = Whatever height is passed in will be the height that - # is set. The width will be calculated and set automatically - # to a the value that keeps the original aspect ratio. - # 2 = The same but based on the width. We try make the image the - # biggest size we can while stil fitting inside the box size - # 3 = Depending whether the image is landscape or portrait, this - # will automatically determine whether to resize via - # dimension 1,2 or 0 - # 4 = Will resize and then crop the image for best fit - # - # forceStretch can be applied to options 1,2,3 and 4 - # - { - - // *** We can pass in an array of options to change the crop position - $cropPos = 'm'; - if (is_array($option) && fix_strtolower($option[0]) == 'crop') - { - $cropPos = $option[1]; # get the crop option - } - else - { - if (strpos($option, '-') !== false) - { - // *** Or pass in a hyphen seperated option - $optionPiecesArray = explode('-', $option); - $cropPos = end($optionPiecesArray); - } - } - - // *** Check the option is valid - $option = $this->prepOption($option); - - // *** Make sure the file passed in is valid - if ( ! $this->image) - { - if ($this->debug) - { - throw new Exception('file ' . $this->getFileName() . ' is missing or invalid'); - } - else - { - throw new Exception(); - } - }; - - // *** Get optimal width and height - based on $option - $dimensionsArray = $this->getDimensions($newWidth, $newHeight, $option); - - $optimalWidth = $dimensionsArray['optimalWidth']; - $optimalHeight = $dimensionsArray['optimalHeight']; - - // *** Resample - create image canvas of x, y size - $this->imageResized = imagecreatetruecolor($optimalWidth, $optimalHeight); - $this->keepTransparancy($optimalWidth, $optimalHeight, $this->imageResized); - imagecopyresampled($this->imageResized, $this->image, 0, 0, 0, 0, $optimalWidth, $optimalHeight, $this->width, $this->height); - - - // *** If '4', then crop too - if ($option == 4 || $option == 'crop') - { - - if (($optimalWidth >= $newWidth && $optimalHeight >= $newHeight)) - { - $this->crop($optimalWidth, $optimalHeight, $newWidth, $newHeight, $cropPos); - } - } - - // *** If Rotate. - if ($autoRotate) - { - - $exifData = $this->getExif(false); - if (count($exifData) > 0) - { - - switch ($exifData['orientation']) - { - case 8: - $this->imageResized = imagerotate($this->imageResized, 90, 0); - break; - case 3: - $this->imageResized = imagerotate($this->imageResized, 180, 0); - break; - case 6: - $this->imageResized = imagerotate($this->imageResized, -90, 0); - break; - } - } - } - - // *** Sharpen image (if jpg and the user wishes to do so) - if ($sharpen && in_array($this->fileExtension, $this->sharpenArray)) - { - - // *** Sharpen - $this->sharpen(); - } - } - -## -------------------------------------------------------- - - public function cropImage($newWidth, $newHeight, $cropPos = 'm') - # Author: Jarrod Oberto - # Date: 08-09-11 - # Purpose: Crops the image - # Param in: $newWidth: crop with - # $newHeight: crop height - # $cropPos: Can be any of the following: - # tl, t, tr, l, m, r, bl, b, br, auto - # Or: - # a custom position such as '30x50' - # Param out: n/a - # Reference: - # Notes: - # - { - - // *** Make sure the file passed in is valid - if ( ! $this->image) - { - if ($this->debug) - { - throw new Exception('file ' . $this->getFileName() . ' is missing or invalid'); - } - else - { - throw new Exception(); - } - }; - - $this->imageResized = $this->image; - $this->crop($this->width, $this->height, $newWidth, $newHeight, $cropPos); - - } - -## -------------------------------------------------------- - - private function keepTransparancy($width, $height, $im) - # Author: Jarrod Oberto - # Date: 08-04-11 - # Purpose: Keep transparency for png and gif image - # Param in: - # Param out: n/a - # Reference: - # Notes: - # - { - // *** If PNG, perform some transparency retention actions (gif untested) - if (in_array($this->fileExtension, $this->transparentArray) && $this->keepTransparency) - { - imagealphablending($im, false); - imagesavealpha($im, true); - $transparent = imagecolorallocatealpha($im, 255, 255, 255, 127); - imagefilledrectangle($im, 0, 0, $width, $height, $transparent); - } - else - { - $color = imagecolorallocate($im, $this->fillColorArray['r'], $this->fillColorArray['g'], $this->fillColorArray['b']); - imagefilledrectangle($im, 0, 0, $width, $height, $color); - } - } - -## -------------------------------------------------------- - - private function crop($optimalWidth, $optimalHeight, $newWidth, $newHeight, $cropPos) - # Author: Jarrod Oberto - # Date: 15-09-08 - # Purpose: Crops the image - # Param in: $newWidth: - # $newHeight: - # Param out: n/a - # Reference: - # Notes: - # - { - - // *** Get cropping co-ordinates - $cropArray = $this->getCropPlacing($optimalWidth, $optimalHeight, $newWidth, $newHeight, $cropPos); - $cropStartX = $cropArray['x']; - $cropStartY = $cropArray['y']; - - // *** Crop this bad boy - $crop = imagecreatetruecolor($newWidth, $newHeight); - $this->keepTransparancy($optimalWidth, $optimalHeight, $crop); - imagecopyresampled($crop, $this->imageResized, 0, 0, $cropStartX, $cropStartY, $newWidth, $newHeight, $newWidth, $newHeight); - - $this->imageResized = $crop; - - // *** Set new width and height to our variables - $this->width = $newWidth; - $this->height = $newHeight; - - } - -## -------------------------------------------------------- - - private function getCropPlacing($optimalWidth, $optimalHeight, $newWidth, $newHeight, $pos = 'm') - # - # Author: Jarrod Oberto - # Date: July 11 - # Purpose: Set the cropping area. - # Params in: - # Params out: (array) the crop x and y co-ordinates. - # Notes: When specifying the exact pixel crop position (eg 10x15), be - # very careful as it's easy to crop out of the image leaving - # black borders. - # - { - $pos = fix_strtolower($pos); - - // *** If co-ords have been entered - if (strstr($pos, 'x')) - { - $pos = str_replace(' ', '', $pos); - - $xyArray = explode('x', $pos); - list($cropStartX, $cropStartY) = $xyArray; - - } - else - { - - switch ($pos) - { - case 'tl': - $cropStartX = 0; - $cropStartY = 0; - break; - - case 't': - $cropStartX = ($optimalWidth / 2) - ($newWidth / 2); - $cropStartY = 0; - break; - - case 'tr': - $cropStartX = $optimalWidth - $newWidth; - $cropStartY = 0; - break; - - case 'l': - $cropStartX = 0; - $cropStartY = ($optimalHeight / 2) - ($newHeight / 2); - break; - - case 'm': - $cropStartX = ($optimalWidth / 2) - ($newWidth / 2); - $cropStartY = ($optimalHeight / 2) - ($newHeight / 2); - break; - - case 'r': - $cropStartX = $optimalWidth - $newWidth; - $cropStartY = ($optimalHeight / 2) - ($newHeight / 2); - break; - - case 'bl': - $cropStartX = 0; - $cropStartY = $optimalHeight - $newHeight; - break; - - case 'b': - $cropStartX = ($optimalWidth / 2) - ($newWidth / 2); - $cropStartY = $optimalHeight - $newHeight; - break; - - case 'br': - $cropStartX = $optimalWidth - $newWidth; - $cropStartY = $optimalHeight - $newHeight; - break; - - case 'auto': - // *** If image is a portrait crop from top, not center. v1.5 - if ($optimalHeight > $optimalWidth) - { - $cropStartX = ($optimalWidth / 2) - ($newWidth / 2); - $cropStartY = ($this->cropFromTopPercent / 100) * $optimalHeight; - } - else - { - - // *** Else crop from the center - $cropStartX = ($optimalWidth / 2) - ($newWidth / 2); - $cropStartY = ($optimalHeight / 2) - ($newHeight / 2); - } - break; - - default: - // *** Default to center - $cropStartX = ($optimalWidth / 2) - ($newWidth / 2); - $cropStartY = ($optimalHeight / 2) - ($newHeight / 2); - break; - } - } - - return array( 'x' => $cropStartX, 'y' => $cropStartY ); - } - -## -------------------------------------------------------- - - private function getDimensions($newWidth, $newHeight, $option) - # Author: Jarrod Oberto - # Date: 17-11-09 - # Purpose: Get new image dimensions based on user specificaions - # Param in: $newWidth: - # $newHeight: - # Param out: Array of new width and height values - # Reference: - # Notes: If $option = 3 then this function is call recursivly - # - # To clarify the $option input: - # 0 = The exact height and width dimensions you set. - # 1 = Whatever height is passed in will be the height that - # is set. The width will be calculated and set automatically - # to a the value that keeps the original aspect ratio. - # 2 = The same but based on the width. - # 3 = Depending whether the image is landscape or portrait, this - # will automatically determine whether to resize via - # dimension 1,2 or 0. - # 4 = Resize the image as much as possible, then crop the - # remainder. - { - - switch (strval($option)) - { - case '0': - case 'exact': - $optimalWidth = $newWidth; - $optimalHeight = $newHeight; - break; - case '1': - case 'portrait': - $dimensionsArray = $this->getSizeByFixedHeight($newWidth, $newHeight); - $optimalWidth = $dimensionsArray['optimalWidth']; - $optimalHeight = $dimensionsArray['optimalHeight']; - break; - case '2': - case 'landscape': - $dimensionsArray = $this->getSizeByFixedWidth($newWidth, $newHeight); - $optimalWidth = $dimensionsArray['optimalWidth']; - $optimalHeight = $dimensionsArray['optimalHeight']; - break; - case '3': - case 'auto': - $dimensionsArray = $this->getSizeByAuto($newWidth, $newHeight); - $optimalWidth = $dimensionsArray['optimalWidth']; - $optimalHeight = $dimensionsArray['optimalHeight']; - break; - case '4': - case 'crop': - $dimensionsArray = $this->getOptimalCrop($newWidth, $newHeight); - $optimalWidth = $dimensionsArray['optimalWidth']; - $optimalHeight = $dimensionsArray['optimalHeight']; - break; - } - - return array( 'optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight ); - } - -## -------------------------------------------------------- - - private function getSizeByFixedHeight($newWidth, $newHeight) - { - // *** If forcing is off... - if ( ! $this->forceStretch) - { - - // *** ...check if actual height is less than target height - if ($this->height < $newHeight) - { - return array( 'optimalWidth' => $this->width, 'optimalHeight' => $this->height ); - } - } - - $ratio = $this->width / $this->height; - - $newWidth = $newHeight * $ratio; - - //return $newWidth; - return array( 'optimalWidth' => $newWidth, 'optimalHeight' => $newHeight ); - } - -## -------------------------------------------------------- - - private function getSizeByFixedWidth($newWidth, $newHeight) - { - // *** If forcing is off... - if ( ! $this->forceStretch) - { - - // *** ...check if actual width is less than target width - if ($this->width < $newWidth) - { - return array( 'optimalWidth' => $this->width, 'optimalHeight' => $this->height ); - } - } - - $ratio = $this->height / $this->width; - - $newHeight = $newWidth * $ratio; - - //return $newHeight; - return array( 'optimalWidth' => $newWidth, 'optimalHeight' => $newHeight ); - } - -## -------------------------------------------------------- - - private function getSizeByAuto($newWidth, $newHeight) - # Author: Jarrod Oberto - # Date: 19-08-08 - # Purpose: Depending on the height, choose to resize by 0, 1, or 2 - # Param in: The new height and new width - # Notes: - # - { - // *** If forcing is off... - if ( ! $this->forceStretch) - { - - // *** ...check if actual size is less than target size - if ($this->width < $newWidth && $this->height < $newHeight) - { - return array( 'optimalWidth' => $this->width, 'optimalHeight' => $this->height ); - } - } - - if ($this->height < $this->width) - // *** Image to be resized is wider (landscape) - { - //$optimalWidth = $newWidth; - //$optimalHeight= $this->getSizeByFixedWidth($newWidth); - - $dimensionsArray = $this->getSizeByFixedWidth($newWidth, $newHeight); - $optimalWidth = $dimensionsArray['optimalWidth']; - $optimalHeight = $dimensionsArray['optimalHeight']; - } - elseif ($this->height > $this->width) - // *** Image to be resized is taller (portrait) - { - //$optimalWidth = $this->getSizeByFixedHeight($newHeight); - //$optimalHeight= $newHeight; - - $dimensionsArray = $this->getSizeByFixedHeight($newWidth, $newHeight); - $optimalWidth = $dimensionsArray['optimalWidth']; - $optimalHeight = $dimensionsArray['optimalHeight']; - } - else - // *** Image to be resizerd is a square - { - - if ($newHeight < $newWidth) - { - //$optimalWidth = $newWidth; - //$optimalHeight= $this->getSizeByFixedWidth($newWidth); - $dimensionsArray = $this->getSizeByFixedWidth($newWidth, $newHeight); - $optimalWidth = $dimensionsArray['optimalWidth']; - $optimalHeight = $dimensionsArray['optimalHeight']; - } - else - { - if ($newHeight > $newWidth) - { - //$optimalWidth = $this->getSizeByFixedHeight($newHeight); - //$optimalHeight= $newHeight; - $dimensionsArray = $this->getSizeByFixedHeight($newWidth, $newHeight); - $optimalWidth = $dimensionsArray['optimalWidth']; - $optimalHeight = $dimensionsArray['optimalHeight']; - } - else - { - // *** Sqaure being resized to a square - $optimalWidth = $newWidth; - $optimalHeight = $newHeight; - } - } - } - - return array( 'optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight ); - } - -## -------------------------------------------------------- - - private function getOptimalCrop($newWidth, $newHeight) - # Author: Jarrod Oberto - # Date: 17-11-09 - # Purpose: Get optimal crop dimensions - # Param in: width and height as requested by user (fig 3) - # Param out: Array of optimal width and height (fig 2) - # Reference: - # Notes: The optimal width and height return are not the same as the - # same as the width and height passed in. For example: - # - # - # |-----------------| |------------| |-------| - # | | => |**| |**| => | | - # | | |**| |**| | | - # | | |------------| |-------| - # |-----------------| - # original optimal crop - # size size size - # Fig 1 2 3 - # - # 300 x 250 150 x 125 150 x 100 - # - # The optimal size is the smallest size (that is closest to the crop size) - # while retaining proportion/ratio. - # - # The crop size is the optimal size that has been cropped on one axis to - # make the image the exact size specified by the user. - # - # * represent cropped area - # - { - - // *** If forcing is off... - if ( ! $this->forceStretch) - { - - // *** ...check if actual size is less than target size - if ($this->width < $newWidth && $this->height < $newHeight) - { - return array( 'optimalWidth' => $this->width, 'optimalHeight' => $this->height ); - } - } - - $heightRatio = $this->height / $newHeight; - $widthRatio = $this->width / $newWidth; - - if ($heightRatio < $widthRatio) - { - $optimalRatio = $heightRatio; - } - else - { - $optimalRatio = $widthRatio; - } - - $optimalHeight = round($this->height / $optimalRatio); - $optimalWidth = round($this->width / $optimalRatio); - - return array( 'optimalWidth' => $optimalWidth, 'optimalHeight' => $optimalHeight ); - } - -## -------------------------------------------------------- - - private function sharpen() - # Author: Jarrod Oberto - # Date: 08 04 2011 - # Purpose: Sharpen image - # Param in: n/a - # Param out: n/a - # Reference: - # Notes: - # Credit: Incorporates Joe Lencioni (August 6, 2008) code - { - - if (version_compare(PHP_VERSION, '5.1.0') >= 0) - { - - // *** - if ($this->aggresiveSharpening) - { # A more aggressive sharpening solution - - $sharpenMatrix = array( array( -1, -1, -1 ), - array( -1, 16, -1 ), - array( -1, -1, -1 ) ); - $divisor = 8; - $offset = 0; - - imageconvolution($this->imageResized, $sharpenMatrix, $divisor, $offset); - } - else # More subtle and personally more desirable - { - $sharpness = $this->findSharp($this->widthOriginal, $this->width); - - $sharpenMatrix = array( - array( -1, -2, -1 ), - array( -2, $sharpness + 12, -2 ), //Lessen the effect of a filter by increasing the value in the center cell - array( -1, -2, -1 ) - ); - $divisor = $sharpness; // adjusts brightness - $offset = 0; - imageconvolution($this->imageResized, $sharpenMatrix, $divisor, $offset); - } - } - else - { - if ($this->debug) - { - throw new Exception('Sharpening required PHP 5.1.0 or greater.'); - } - } - } - - ## -------------------------------------------------------- - - private function sharpen2($level) - { - $sharpenMatrix = array( - array( $level, $level, $level ), - array( $level, (8 * $level) + 1, $level ), //Lessen the effect of a filter by increasing the value in the center cell - array( $level, $level, $level ) - ); - - } - -## -------------------------------------------------------- - - private function findSharp($orig, $final) - # Author: Ryan Rud (http://adryrun.com) - # Purpose: Find optimal sharpness - # Param in: n/a - # Param out: n/a - # Reference: - # Notes: - # - { - $final = $final * (750.0 / $orig); - $a = 52; - $b = -0.27810650887573124; - $c = .00047337278106508946; - - $result = $a + $b * $final + $c * $final * $final; - - return max(round($result), 0); - } - -## -------------------------------------------------------- - - private function prepOption($option) - # Author: Jarrod Oberto - # Purpose: Prep option like change the passed in option to lowercase - # Param in: (str/int) $option: eg. 'exact', 'crop'. 0, 4 - # Param out: lowercase string - # Reference: - # Notes: - # - { - if (is_array($option)) - { - if (fix_strtolower($option[0]) == 'crop' && count($option) == 2) - { - return 'crop'; - } - else - { - throw new Exception('Crop resize option array is badly formatted.'); - } - } - else - { - if (strpos($option, 'crop') !== false) - { - return 'crop'; - } - } - - if (is_string($option)) - { - return fix_strtolower($option); - } - - return $option; - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Presets -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - -# -# Preset are pre-defined templates you can apply to your image. -# -# These are inteded to be applied to thumbnail images. -# - - - public function borderPreset($preset) - { - switch ($preset) - { - - case 'simple': - $this->addBorder(7, '#fff'); - $this->addBorder(6, '#f2f1f0'); - $this->addBorder(2, '#fff'); - $this->addBorder(1, '#ccc'); - break; - default: - break; - } - - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Draw border -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function addBorder($thickness = 1, $rgbArray = array( 255, 255, 255 )) - # Author: Jarrod Oberto - # Date: 05-05-11 - # Purpose: Add a border to the image - # Param in: - # Param out: - # Reference: - # Notes: This border is added to the INSIDE of the image - # - { - if ($this->imageResized) - { - - $rgbArray = $this->formatColor($rgbArray); - $r = $rgbArray['r']; - $g = $rgbArray['g']; - $b = $rgbArray['b']; - - - $x1 = 0; - $y1 = 0; - $x2 = ImageSX($this->imageResized) - 1; - $y2 = ImageSY($this->imageResized) - 1; - - $rgbArray = ImageColorAllocate($this->imageResized, $r, $g, $b); - - - for ($i = 0; $i < $thickness; $i++) - { - ImageRectangle($this->imageResized, $x1++, $y1++, $x2--, $y2--, $rgbArray); - } - } - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Gray Scale -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function greyScale() - # Author: Jarrod Oberto - # Date: 07-05-2011 - # Purpose: Make image greyscale - # Param in: n/a - # Param out: - # Reference: - # Notes: - # - { - if ($this->imageResized) - { - imagefilter($this->imageResized, IMG_FILTER_GRAYSCALE); - } - - } - - ## -------------------------------------------------------- - - public function greyScaleEnhanced() - # Author: Jarrod Oberto - # Date: 07-05-2011 - # Purpose: Make image greyscale - # Param in: n/a - # Param out: - # Reference: - # Notes: - # - { - if ($this->imageResized) - { - imagefilter($this->imageResized, IMG_FILTER_GRAYSCALE); - imagefilter($this->imageResized, IMG_FILTER_CONTRAST, -15); - imagefilter($this->imageResized, IMG_FILTER_BRIGHTNESS, 2); - $this->sharpen($this->width); - } - } - - ## -------------------------------------------------------- - - public function greyScaleDramatic() - # Alias of gd_filter_monopin - { - $this->gd_filter_monopin(); - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Black 'n White -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function blackAndWhite() - # Author: Jarrod Oberto - # Date: 07-05-2011 - # Purpose: Make image black and white - # Param in: n/a - # Param out: - # Reference: - # Notes: - # - { - if ($this->imageResized) - { - - imagefilter($this->imageResized, IMG_FILTER_GRAYSCALE); - imagefilter($this->imageResized, IMG_FILTER_CONTRAST, -1000); - } - - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Negative -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function negative() - # Author: Jarrod Oberto - # Date: 07-05-2011 - # Purpose: Make image negative - # Param in: n/a - # Param out: - # Reference: - # Notes: - # - { - if ($this->imageResized) - { - - imagefilter($this->imageResized, IMG_FILTER_NEGATE); - } - - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Sepia -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function sepia() - # Author: Jarrod Oberto - # Date: 07-05-2011 - # Purpose: Make image sepia - # Param in: n/a - # Param out: - # Reference: - # Notes: - # - { - if ($this->imageResized) - { - imagefilter($this->imageResized, IMG_FILTER_GRAYSCALE); - imagefilter($this->imageResized, IMG_FILTER_BRIGHTNESS, -10); - imagefilter($this->imageResized, IMG_FILTER_CONTRAST, -20); - imagefilter($this->imageResized, IMG_FILTER_COLORIZE, 60, 30, -15); - } - } - - ## -------------------------------------------------------- - - public function sepia2() - - { - if ($this->imageResized) - { - - $total = imagecolorstotal($this->imageResized); - for ($i = 0; $i < $total; $i++) - { - $index = imagecolorsforindex($this->imageResized, $i); - $red = ($index["red"] * 0.393 + $index["green"] * 0.769 + $index["blue"] * 0.189) / 1.351; - $green = ($index["red"] * 0.349 + $index["green"] * 0.686 + $index["blue"] * 0.168) / 1.203; - $blue = ($index["red"] * 0.272 + $index["green"] * 0.534 + $index["blue"] * 0.131) / 2.140; - imagecolorset($this->imageResized, $i, $red, $green, $blue); - } - - - } - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Vintage -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function vintage() - # Alias of gd_filter_monopin - { - $this->gd_filter_vintage(); - } - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Presets By Marc Hibbins -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - - /** Apply 'Monopin' preset */ - public function gd_filter_monopin() - { - - if ($this->imageResized) - { - imagefilter($this->imageResized, IMG_FILTER_GRAYSCALE); - imagefilter($this->imageResized, IMG_FILTER_BRIGHTNESS, -15); - imagefilter($this->imageResized, IMG_FILTER_CONTRAST, -15); - $this->imageResized = $this->gd_apply_overlay($this->imageResized, 'vignette', 100); - } - } - - ## -------------------------------------------------------- - - public function gd_filter_vintage() - { - if ($this->imageResized) - { - $this->imageResized = $this->gd_apply_overlay($this->imageResized, 'vignette', 45); - imagefilter($this->imageResized, IMG_FILTER_BRIGHTNESS, 20); - imagefilter($this->imageResized, IMG_FILTER_CONTRAST, -35); - imagefilter($this->imageResized, IMG_FILTER_COLORIZE, 60, -10, 35); - imagefilter($this->imageResized, IMG_FILTER_SMOOTH, 7); - $this->imageResized = $this->gd_apply_overlay($this->imageResized, 'scratch', 10); - } - } - - ## -------------------------------------------------------- - - /** Apply a PNG overlay */ - private function gd_apply_overlay($im, $type, $amount) - # - # Original Author: Marc Hibbins - # License: Attribution-ShareAlike 3.0 - # Purpose: - # Params in: - # Params out: - # Notes: - # - { - $width = imagesx($im); - $height = imagesy($im); - $filter = imagecreatetruecolor($width, $height); - - imagealphablending($filter, false); - imagesavealpha($filter, true); - - $transparent = imagecolorallocatealpha($filter, 255, 255, 255, 127); - imagefilledrectangle($filter, 0, 0, $width, $height, $transparent); - - // *** Resize overlay - $overlay = $this->filterOverlayPath . '/' . $type . '.png'; - $png = imagecreatefrompng($overlay); - imagecopyresampled($filter, $png, 0, 0, 0, 0, $width, $height, imagesx($png), imagesy($png)); - - $comp = imagecreatetruecolor($width, $height); - imagecopy($comp, $im, 0, 0, 0, 0, $width, $height); - imagecopy($comp, $filter, 0, 0, 0, 0, $width, $height); - imagecopymerge($im, $comp, 0, 0, 0, 0, $width, $height, $amount); - - imagedestroy($comp); - - return $im; - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Colorise -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function image_colorize($rgb) - { - imageTrueColorToPalette($this->imageResized, true, 256); - $numColors = imageColorsTotal($this->imageResized); - - for ($x = 0; $x < $numColors; $x++) - { - list($r, $g, $b) = array_values(imageColorsForIndex($this->imageResized, $x)); - - // calculate grayscale in percent - $grayscale = ($r + $g + $b) / 3 / 0xff; - - imageColorSet($this->imageResized, $x, - $grayscale * $rgb[0], - $grayscale * $rgb[1], - $grayscale * $rgb[2] - ); - - } - - return true; - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Reflection -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function addReflection($reflectionHeight = 50, $startingTransparency = 30, $inside = false, $bgColor = '#fff', $stretch = false, $divider = 0) - { - - // *** Convert color - $rgbArray = $this->formatColor($bgColor); - $r = $rgbArray['r']; - $g = $rgbArray['g']; - $b = $rgbArray['b']; - - $im = $this->imageResized; - $li = imagecreatetruecolor($this->width, 1); - - $bgc = imagecolorallocate($li, $r, $g, $b); - imagefilledrectangle($li, 0, 0, $this->width, 1, $bgc); - - $bg = imagecreatetruecolor($this->width, $reflectionHeight); - $wh = imagecolorallocate($im, 255, 255, 255); - - $im = imagerotate($im, -180, $wh); - imagecopyresampled($bg, $im, 0, 0, 0, 0, $this->width, $this->height, $this->width, $this->height); - - $im = $bg; - - $bg = imagecreatetruecolor($this->width, $reflectionHeight); - - for ($x = 0; $x < $this->width; $x++) - { - imagecopy($bg, $im, $x, 0, $this->width - $x - 1, 0, 1, $reflectionHeight); - } - $im = $bg; - - $transaprencyAmount = $this->invertTransparency($startingTransparency, 100); - - - // *** Fade - if ($stretch) - { - $step = 100 / ($reflectionHeight + $startingTransparency); - } - else - { - $step = 100 / $reflectionHeight; - } - for ($i = 0; $i <= $reflectionHeight; $i++) - { - - if ($startingTransparency > 100) - { - $startingTransparency = 100; - } - if ($startingTransparency < 1) - { - $startingTransparency = 1; - } - imagecopymerge($bg, $li, 0, $i, 0, 0, $this->width, 1, $startingTransparency); - $startingTransparency += $step; - } - - // *** Apply fade - imagecopymerge($im, $li, 0, 0, 0, 0, $this->width, $divider, 100); // Divider - - - // *** width, height of reflection. - $x = imagesx($im); - $y = imagesy($im); - - - // *** Determines if the reflection should be displayed inside or outside the image - if ($inside) - { - - // Create new blank image with sizes. - $final = imagecreatetruecolor($this->width, $this->height); - - imagecopymerge($final, $this->imageResized, 0, 0, 0, $reflectionHeight, $this->width, $this->height - $reflectionHeight, 100); - imagecopymerge($final, $im, 0, $this->height - $reflectionHeight, 0, 0, $x, $y, 100); - - } - else - { - - // Create new blank image with sizes. - $final = imagecreatetruecolor($this->width, $this->height + $y); - - imagecopymerge($final, $this->imageResized, 0, 0, 0, 0, $this->width, $this->height, 100); - imagecopymerge($final, $im, 0, $this->height, 0, 0, $x, $y, 100); - } - - $this->imageResized = $final; - - imagedestroy($li); - imagedestroy($im); - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Rotate -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function rotate($value = 90, $bgColor = 'transparent') - # Author: Jarrod Oberto - # Date: 07-05-2011 - # Purpose: Rotate image - # Param in: (mixed) $degrees: (int) number of degress to rotate image - # (str) param "left": rotate left - # (str) param "right": rotate right - # (str) param "upside": upside-down image - # Param out: - # Reference: - # Notes: The default direction of imageRotate() is counter clockwise. - # - { - if ($this->imageResized) - { - - if (is_integer($value)) - { - $degrees = $value; - } - - // *** Convert color - $rgbArray = $this->formatColor($bgColor); - $r = $rgbArray['r']; - $g = $rgbArray['g']; - $b = $rgbArray['b']; - if (isset($rgbArray['a'])) - { - $a = $rgbArray['a']; - } - - if (is_string($value)) - { - - $value = fix_strtolower($value); - - switch ($value) - { - case 'left': - $degrees = 90; - break; - case 'right': - $degrees = 270; - break; - case 'upside': - $degrees = 180; - break; - default: - break; - } - - } - - // *** The default direction of imageRotate() is counter clockwise - // * This makes it clockwise - $degrees = 360 - $degrees; - - // *** Create background color - $bg = ImageColorAllocateAlpha($this->imageResized, $r, $g, $b, $a); - - // *** Fill with background - ImageFill($this->imageResized, 0, 0, $bg); - - // *** Rotate - $this->imageResized = imagerotate($this->imageResized, $degrees, $bg); // Rotate 45 degrees and allocated the transparent colour as the one to make transparent (obviously) - - // Ensure alpha transparency - ImageSaveAlpha($this->imageResized, true); - - } - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Round corners -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function roundCorners($radius = 5, $bgColor = 'transparent') - # Author: Jarrod Oberto - # Date: 19-05-2011 - # Purpose: Create rounded corners on your image - # Param in: (int) radius = the amount of curvature - # (mixed) $bgColor = the corner background color - # Param out: n/a - # Reference: - # Notes: - # - { - - // *** Check if the user wants transparency - $isTransparent = false; - if ( ! is_array($bgColor)) - { - if (fix_strtolower($bgColor) == 'transparent') - { - $isTransparent = true; - } - } - - - // *** If we use transparency, we need to color our curved mask with a unique color - if ($isTransparent) - { - $bgColor = $this->findUnusedGreen(); - } - - // *** Convert color - $rgbArray = $this->formatColor($bgColor); - $r = $rgbArray['r']; - $g = $rgbArray['g']; - $b = $rgbArray['b']; - if (isset($rgbArray['a'])) - { - $a = $rgbArray['a']; - } - - - // *** Create top-left corner mask (square) - $cornerImg = imagecreatetruecolor($radius, $radius); - //$cornerImg = imagecreate($radius, $radius); - - //imagealphablending($cornerImg, true); - //imagesavealpha($cornerImg, true); - - //imagealphablending($this->imageResized, false); - //imagesavealpha($this->imageResized, true); - - // *** Give it a color - $maskColor = imagecolorallocate($cornerImg, 0, 0, 0); - - - // *** Replace the mask color (black) to transparent - imagecolortransparent($cornerImg, $maskColor); - - - // *** Create the image background color - $imagebgColor = imagecolorallocate($cornerImg, $r, $g, $b); - - - // *** Fill the corner area to the user defined color - imagefill($cornerImg, 0, 0, $imagebgColor); - - - imagefilledellipse($cornerImg, $radius, $radius, $radius * 2, $radius * 2, $maskColor); - - - // *** Map to top left corner - imagecopymerge($this->imageResized, $cornerImg, 0, 0, 0, 0, $radius, $radius, 100); #tl - - // *** Map rounded corner to other corners by rotating and applying the mask - $cornerImg = imagerotate($cornerImg, 90, 0); - imagecopymerge($this->imageResized, $cornerImg, 0, $this->height - $radius, 0, 0, $radius, $radius, 100); #bl - - $cornerImg = imagerotate($cornerImg, 90, 0); - imagecopymerge($this->imageResized, $cornerImg, $this->width - $radius, $this->height - $radius, 0, 0, $radius, $radius, 100); #br - - $cornerImg = imagerotate($cornerImg, 90, 0); - imagecopymerge($this->imageResized, $cornerImg, $this->width - $radius, 0, 0, 0, $radius, $radius, 100); #tr - - - // *** If corners are to be transparent, we fill our chromakey color as transparent. - if ($isTransparent) - { - //imagecolortransparent($this->imageResized, $imagebgColor); - $this->imageResized = $this->transparentImage($this->imageResized); - imagesavealpha($this->imageResized, true); - } - - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Shadow -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function addShadow($shadowAngle = 45, $blur = 15, $bgColor = 'transparent') - # - # Author: Jarrod Oberto (Adapted from Pascal Naidon) - # Ref: http://www.les-stooges.org/pascal/webdesign/vignettes/index.php?la=en - # Purpose: Add a drop shadow to your image - # Params in: (int) $angle: the angle of the shadow - # (int) $blur: the blur distance - # (mixed) $bgColor: the color of the background - # Params out: - # Notes: - # - { - // *** A higher number results in a smoother shadow - define('STEPS', $blur * 2); - - // *** Set the shadow distance - $shadowDistance = $blur * 0.25; - - // *** Set blur width and height - $blurWidth = $blurHeight = $blur; - - - if ($shadowAngle == 0) - { - $distWidth = 0; - $distHeight = 0; - } - else - { - $distWidth = $shadowDistance * cos(deg2rad($shadowAngle)); - $distHeight = $shadowDistance * sin(deg2rad($shadowAngle)); - } - - - // *** Convert color - if (fix_strtolower($bgColor) != 'transparent') - { - $rgbArray = $this->formatColor($bgColor); - $r0 = $rgbArray['r']; - $g0 = $rgbArray['g']; - $b0 = $rgbArray['b']; - } - - - $image = $this->imageResized; - $width = $this->width; - $height = $this->height; - - - $newImage = imagecreatetruecolor($width, $height); - imagecopyresampled($newImage, $image, 0, 0, 0, 0, $width, $height, $width, $height); - - - // *** RGB - $rgb = imagecreatetruecolor($width + $blurWidth, $height + $blurHeight); - $colour = imagecolorallocate($rgb, 0, 0, 0); - imagefilledrectangle($rgb, 0, 0, $width + $blurWidth, $height + $blurHeight, $colour); - $colour = imagecolorallocate($rgb, 255, 255, 255); - //imagefilledrectangle($rgb, $blurWidth*0.5-$distWidth, $blurHeight*0.5-$distHeight, $width+$blurWidth*0.5-$distWidth, $height+$blurWidth*0.5-$distHeight, $colour); - imagefilledrectangle($rgb, $blurWidth * 0.5 - $distWidth, $blurHeight * 0.5 - $distHeight, $width + $blurWidth * 0.5 - $distWidth, $height + $blurWidth * 0.5 - $distHeight, $colour); - //imagecopymerge($rgb, $newImage, 1+$blurWidth*0.5-$distWidth, 1+$blurHeight*0.5-$distHeight, 0,0, $width, $height, 100); - imagecopymerge($rgb, $newImage, $blurWidth * 0.5 - $distWidth, $blurHeight * 0.5 - $distHeight, 0, 0, $width + $blurWidth, $height + $blurHeight, 100); - - - // *** Shadow (alpha) - $shadow = imagecreatetruecolor($width + $blurWidth, $height + $blurHeight); - imagealphablending($shadow, false); - $colour = imagecolorallocate($shadow, 0, 0, 0); - imagefilledrectangle($shadow, 0, 0, $width + $blurWidth, $height + $blurHeight, $colour); - - - for ($i = 0; $i <= STEPS; $i++) - { - - $t = ((1.0 * $i) / STEPS); - $intensity = 255 * $t * $t; - - $colour = imagecolorallocate($shadow, $intensity, $intensity, $intensity); - $points = array( - $blurWidth * $t, $blurHeight, // Point 1 (x, y) - $blurWidth, $blurHeight * $t, // Point 2 (x, y) - $width, $blurHeight * $t, // Point 3 (x, y) - $width + $blurWidth * (1 - $t), $blurHeight, // Point 4 (x, y) - $width + $blurWidth * (1 - $t), $height, // Point 5 (x, y) - $width, $height + $blurHeight * (1 - $t), // Point 6 (x, y) - $blurWidth, $height + $blurHeight * (1 - $t), // Point 7 (x, y) - $blurWidth * $t, $height // Point 8 (x, y) - ); - imagepolygon($shadow, $points, 8, $colour); - } - - for ($i = 0; $i <= STEPS; $i++) - { - - $t = ((1.0 * $i) / STEPS); - $intensity = 255 * $t * $t; - - $colour = imagecolorallocate($shadow, $intensity, $intensity, $intensity); - imagefilledarc($shadow, $blurWidth - 1, $blurHeight - 1, 2 * (1 - $t) * $blurWidth, 2 * (1 - $t) * $blurHeight, 180, 268, $colour, IMG_ARC_PIE); - imagefilledarc($shadow, $width, $blurHeight - 1, 2 * (1 - $t) * $blurWidth, 2 * (1 - $t) * $blurHeight, 270, 358, $colour, IMG_ARC_PIE); - imagefilledarc($shadow, $width, $height, 2 * (1 - $t) * $blurWidth, 2 * (1 - $t) * $blurHeight, 0, 90, $colour, IMG_ARC_PIE); - imagefilledarc($shadow, $blurWidth - 1, $height, 2 * (1 - $t) * $blurWidth, 2 * (1 - $t) * $blurHeight, 90, 180, $colour, IMG_ARC_PIE); - } - - - $colour = imagecolorallocate($shadow, 255, 255, 255); - imagefilledrectangle($shadow, $blurWidth, $blurHeight, $width, $height, $colour); - imagefilledrectangle($shadow, $blurWidth * 0.5 - $distWidth, $blurHeight * 0.5 - $distHeight, $width + $blurWidth * 0.5 - 1 - $distWidth, $height + $blurHeight * 0.5 - 1 - $distHeight, $colour); - - - // *** The magic - imagealphablending($rgb, false); - - for ($theX = 0; $theX < imagesx($rgb); $theX++) - { - for ($theY = 0; $theY < imagesy($rgb); $theY++) - { - - // *** Get the RGB values for every pixel of the RGB image - $colArray = imagecolorat($rgb, $theX, $theY); - $r = ($colArray >> 16) & 0xFF; - $g = ($colArray >> 8) & 0xFF; - $b = $colArray & 0xFF; - - // *** Get the alpha value for every pixel of the shadow image - $colArray = imagecolorat($shadow, $theX, $theY); - $a = $colArray & 0xFF; - $a = 127 - floor($a / 2); - $t = $a / 128.0; - - // *** Create color - if (fix_strtolower($bgColor) == 'transparent') - { - $myColour = imagecolorallocatealpha($rgb, $r, $g, $b, $a); - } - else - { - $myColour = imagecolorallocate($rgb, $r * (1.0 - $t) + $r0 * $t, $g * (1.0 - $t) + $g0 * $t, $b * (1.0 - $t) + $b0 * $t); - } - - // *** Add color to new rgb image - imagesetpixel($rgb, $theX, $theY, $myColour); - } - } - - imagealphablending($rgb, true); - imagesavealpha($rgb, true); - - $this->imageResized = $rgb; - - imagedestroy($image); - imagedestroy($newImage); - imagedestroy($shadow); - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Add Caption Box -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function addCaptionBox($side = 'b', $thickness = 50, $padding = 0, $bgColor = '#000', $transaprencyAmount = 30) - # - # Author: Jarrod Oberto - # Date: 26 May 2011 - # Purpose: Add a caption box - # Params in: (str) $side: the side to add the caption box (t, r, b, or l). - # (int) $thickness: how thick you want the caption box to be. - # (mixed) $bgColor: The color of the caption box. - # (int) $transaprencyAmount: The amount of transparency to be - # applied. - # Params out: n/a - # Notes: - # - { - $side = fix_strtolower($side); - - // *** Convert color - $rgbArray = $this->formatColor($bgColor); - $r = $rgbArray['r']; - $g = $rgbArray['g']; - $b = $rgbArray['b']; - - $positionArray = $this->calculateCaptionBoxPosition($side, $thickness, $padding); - - // *** Store incase we want to use method addTextToCaptionBox() - $this->captionBoxPositionArray = $positionArray; - - - $transaprencyAmount = $this->invertTransparency($transaprencyAmount, 127, false); - $transparent = imagecolorallocatealpha($this->imageResized, $r, $g, $b, $transaprencyAmount); - imagefilledrectangle($this->imageResized, $positionArray['x1'], $positionArray['y1'], $positionArray['x2'], $positionArray['y2'], $transparent); - } - - ## -------------------------------------------------------- - - public function addTextToCaptionBox($text, $fontColor = '#fff', $fontSize = 12, $angle = 0, $font = null) - # - # Author: Jarrod Oberto - # Date: 03 Aug 11 - # Purpose: Simplify adding text to a caption box by automatically - # locating the center of the caption box - # Params in: The usually text paams (less a couple) - # Params out: n/a - # Notes: - # - { - - // *** Get the caption box measurements - if (count($this->captionBoxPositionArray) == 4) - { - $x1 = $this->captionBoxPositionArray['x1']; - $x2 = $this->captionBoxPositionArray['x2']; - $y1 = $this->captionBoxPositionArray['y1']; - $y2 = $this->captionBoxPositionArray['y2']; - } - else - { - if ($this->debug) - { - throw new Exception('No caption box found.'); - } - else - { - return false; - } - } - - - // *** Get text font - $font = $this->getTextFont($font); - - // *** Get text size - $textSizeArray = $this->getTextSize($fontSize, $angle, $font, $text); - $textWidth = $textSizeArray['width']; - $textHeight = $textSizeArray['height']; - - // *** Find the width/height middle points - $boxXMiddle = (($x2 - $x1) / 2); - $boxYMiddle = (($y2 - $y1) / 2); - - // *** Box middle - half the text width/height - $xPos = ($x1 + $boxXMiddle) - ($textWidth / 2); - $yPos = ($y1 + $boxYMiddle) - ($textHeight / 2); - - $pos = $xPos . 'x' . $yPos; - - $this->addText($text, $pos, $padding = 0, $fontColor, $fontSize, $angle, $font); - - } - - ## -------------------------------------------------------- - - private function calculateCaptionBoxPosition($side, $thickness, $padding) - { - $positionArray = array(); - - switch ($side) - { - case 't': - $positionArray['x1'] = 0; - $positionArray['y1'] = $padding; - $positionArray['x2'] = $this->width; - $positionArray['y2'] = $thickness + $padding; - break; - case 'r': - $positionArray['x1'] = $this->width - $thickness - $padding; - $positionArray['y1'] = 0; - $positionArray['x2'] = $this->width - $padding; - $positionArray['y2'] = $this->height; - break; - case 'b': - $positionArray['x1'] = 0; - $positionArray['y1'] = $this->height - $thickness - $padding; - $positionArray['x2'] = $this->width; - $positionArray['y2'] = $this->height - $padding; - break; - case 'l': - $positionArray['x1'] = $padding; - $positionArray['y1'] = 0; - $positionArray['x2'] = $thickness + $padding; - $positionArray['y2'] = $this->height; - break; - - default: - break; - } - - return $positionArray; - - } - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Get EXIF Data -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function getExif($debug = false) - # Author: Jarrod Oberto - # Date: 07-05-2011 - # Purpose: Get image EXIF data - # Param in: n/a - # Param out: An associate array of EXIF data - # Reference: - # Notes: - # 23 May 13 : added orientation flag -jco - # - { - - if ( ! $this->debug || ! $debug) - { - $debug = false; - } - - // *** Check all is good - check the EXIF library exists and the file exists, too. - if ( ! $this->testEXIFInstalled()) - { - if ($debug) - { - throw new Exception('The EXIF Library is not installed.'); - } - else - { - return array(); - } - }; - if ( ! file_exists($this->fileName)) - { - if ($debug) - { - throw new Exception('Image not found.'); - } - else - { - return array(); - } - }; - if ($this->fileExtension != '.jpg') - { - if ($debug) - { - throw new Exception('Metadata not supported for this image type.'); - } - else - { - return array(); - } - }; - $exifData = exif_read_data($this->fileName, 'IFD0'); - - // *** Format the apperture value - $ev = $exifData['ApertureValue']; - $apPeicesArray = explode('/', $ev); - if (count($apPeicesArray) == 2) - { - $apertureValue = round($apPeicesArray[0] / $apPeicesArray[1], 2, PHP_ROUND_HALF_DOWN) . ' EV'; - } - else - { - $apertureValue = ''; - } - - // *** Format the focal length - $focalLength = $exifData['FocalLength']; - $flPeicesArray = explode('/', $focalLength); - if (count($flPeicesArray) == 2) - { - $focalLength = $flPeicesArray[0] / $flPeicesArray[1] . '.0 mm'; - } - else - { - $focalLength = ''; - } - - // *** Format fNumber - $fNumber = $exifData['FNumber']; - $fnPeicesArray = explode('/', $fNumber); - if (count($fnPeicesArray) == 2) - { - $fNumber = $fnPeicesArray[0] / $fnPeicesArray[1]; - } - else - { - $fNumber = ''; - } - - // *** Resolve ExposureProgram - if (isset($exifData['ExposureProgram'])) - { - $ep = $exifData['ExposureProgram']; - } - if (isset($ep)) - { - $ep = $this->resolveExposureProgram($ep); - } - - - // *** Resolve MeteringMode - $mm = $exifData['MeteringMode']; - $mm = $this->resolveMeteringMode($mm); - - // *** Resolve Flash - $flash = $exifData['Flash']; - $flash = $this->resolveFlash($flash); - - - if (isset($exifData['Make'])) - { - $exifDataArray['make'] = $exifData['Make']; - } - else - { - $exifDataArray['make'] = ''; - } - - if (isset($exifData['Model'])) - { - $exifDataArray['model'] = $exifData['Model']; - } - else - { - $exifDataArray['model'] = ''; - } - - if (isset($exifData['DateTime'])) - { - $exifDataArray['date'] = $exifData['DateTime']; - } - else - { - $exifDataArray['date'] = ''; - } - - if (isset($exifData['ExposureTime'])) - { - $exifDataArray['exposure time'] = $exifData['ExposureTime'] . ' sec.'; - } - else - { - $exifDataArray['exposure time'] = ''; - } - - if ($apertureValue != '') - { - $exifDataArray['aperture value'] = $apertureValue; - } - else - { - $exifDataArray['aperture value'] = ''; - } - - if (isset($exifData['COMPUTED']['ApertureFNumber'])) - { - $exifDataArray['f-stop'] = $exifData['COMPUTED']['ApertureFNumber']; - } - else - { - $exifDataArray['f-stop'] = ''; - } - - if (isset($exifData['FNumber'])) - { - $exifDataArray['fnumber'] = $exifData['FNumber']; - } - else - { - $exifDataArray['fnumber'] = ''; - } - - if ($fNumber != '') - { - $exifDataArray['fnumber value'] = $fNumber; - } - else - { - $exifDataArray['fnumber value'] = ''; - } - - if (isset($exifData['ISOSpeedRatings'])) - { - $exifDataArray['iso'] = $exifData['ISOSpeedRatings']; - } - else - { - $exifDataArray['iso'] = ''; - } - - if ($focalLength != '') - { - $exifDataArray['focal length'] = $focalLength; - } - else - { - $exifDataArray['focal length'] = ''; - } - - if (isset($ep)) - { - $exifDataArray['exposure program'] = $ep; - } - else - { - $exifDataArray['exposure program'] = ''; - } - - if ($mm != '') - { - $exifDataArray['metering mode'] = $mm; - } - else - { - $exifDataArray['metering mode'] = ''; - } - - if ($flash != '') - { - $exifDataArray['flash status'] = $flash; - } - else - { - $exifDataArray['flash status'] = ''; - } - - if (isset($exifData['Artist'])) - { - $exifDataArray['creator'] = $exifData['Artist']; - } - else - { - $exifDataArray['creator'] = ''; - } - - if (isset($exifData['Copyright'])) - { - $exifDataArray['copyright'] = $exifData['Copyright']; - } - else - { - $exifDataArray['copyright'] = ''; - } - - // *** Orientation - if (isset($exifData['Orientation'])) - { - $exifDataArray['orientation'] = $exifData['Orientation']; - } - else - { - $exifDataArray['orientation'] = ''; - } - - return $exifDataArray; - } - - ## -------------------------------------------------------- - - private function resolveExposureProgram($ep) - { - switch ($ep) - { - case 0: - $ep = ''; - break; - case 1: - $ep = 'manual'; - break; - case 2: - $ep = 'normal program'; - break; - case 3: - $ep = 'aperture priority'; - break; - case 4: - $ep = 'shutter priority'; - break; - case 5: - $ep = 'creative program'; - break; - case 6: - $ep = 'action program'; - break; - case 7: - $ep = 'portrait mode'; - break; - case 8: - $ep = 'landscape mode'; - break; - - default: - break; - } - - return $ep; - } - - ## -------------------------------------------------------- - - private function resolveMeteringMode($mm) - { - switch ($mm) - { - case 0: - $mm = 'unknown'; - break; - case 1: - $mm = 'average'; - break; - case 2: - $mm = 'center weighted average'; - break; - case 3: - $mm = 'spot'; - break; - case 4: - $mm = 'multi spot'; - break; - case 5: - $mm = 'pattern'; - break; - case 6: - $mm = 'partial'; - break; - case 255: - $mm = 'other'; - break; - - default: - break; - } - - return $mm; - } - - ## -------------------------------------------------------- - - private function resolveFlash($flash) - { - switch ($flash) - { - case 0: - $flash = 'flash did not fire'; - break; - case 1: - $flash = 'flash fired'; - break; - case 5: - $flash = 'strobe return light not detected'; - break; - case 7: - $flash = 'strobe return light detected'; - break; - case 9: - $flash = 'flash fired, compulsory flash mode'; - break; - case 13: - $flash = 'flash fired, compulsory flash mode, return light not detected'; - break; - case 15: - $flash = 'flash fired, compulsory flash mode, return light detected'; - break; - case 16: - $flash = 'flash did not fire, compulsory flash mode'; - break; - case 24: - $flash = 'flash did not fire, auto mode'; - break; - case 25: - $flash = 'flash fired, auto mode'; - break; - case 29: - $flash = 'flash fired, auto mode, return light not detected'; - break; - case 31: - $flash = 'flash fired, auto mode, return light detected'; - break; - case 32: - $flash = 'no flash function'; - break; - case 65: - $flash = 'flash fired, red-eye reduction mode'; - break; - case 69: - $flash = 'flash fired, red-eye reduction mode, return light not detected'; - break; - case 71: - $flash = 'flash fired, red-eye reduction mode, return light detected'; - break; - case 73: - $flash = 'flash fired, compulsory flash mode, red-eye reduction mode'; - break; - case 77: - $flash = 'flash fired, compulsory flash mode, red-eye reduction mode, return light not detected'; - break; - case 79: - $flash = 'flash fired, compulsory flash mode, red-eye reduction mode, return light detected'; - break; - case 89: - $flash = 'flash fired, auto mode, red-eye reduction mode'; - break; - case 93: - $flash = 'flash fired, auto mode, return light not detected, red-eye reduction mode'; - break; - case 95: - $flash = 'flash fired, auto mode, return light detected, red-eye reduction mode'; - break; - - default: - break; - } - - return $flash; - - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Get IPTC Data -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Write IPTC Data -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function writeIPTCcaption($value) - # Caption - { - $this->writeIPTC(120, $value); - } - - ## -------------------------------------------------------- - - public function writeIPTCwriter($value) - { - //$this->writeIPTC(65, $value); - } - - ## -------------------------------------------------------- - - private function writeIPTC($dat, $value) - { - - # LIMIT TO JPG - - $caption_block = $this->iptc_maketag(2, $dat, $value); - $image_string = iptcembed($caption_block, $this->fileName); - file_put_contents('iptc.jpg', $image_string); - } - -## -------------------------------------------------------- - - private function iptc_maketag($rec, $dat, $val) - # Author: Thies C. Arntzen - # Purpose: Function to format the new IPTC text - # Param in: $rec: Application record. (We’re working with #2) - # $dat: Index. (120 for caption, 118 for contact. See the IPTC IIM - # specification: - # http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf - # $val: Value/data/text. Make sure this is within the length - # constraints of the IPTC IIM specification - # Ref: http://blog.peterhaza.no/working-with-image-meta-data-in-exif-and-iptc-headers-from-php/ - # http://php.net/manual/en/function.iptcembed.php - # - { - $len = strlen($val); - if ($len < 0x8000) - { - return chr(0x1c) . chr($rec) . chr($dat) . - chr($len >> 8) . - chr($len & 0xff) . - $val; - } - else - { - return chr(0x1c) . chr($rec) . chr($dat) . - chr(0x80) . chr(0x04) . - chr(($len >> 24) & 0xff) . - chr(($len >> 16) & 0xff) . - chr(($len >> 8) & 0xff) . - chr(($len) & 0xff) . - $val; - } - } - - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Write XMP Data -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - //http://xmpphptoolkit.sourceforge.net/ - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Add Text -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function addText($text, $pos = '20x20', $padding = 0, $fontColor = '#fff', $fontSize = 12, $angle = 0, $font = null) - # Author: Jarrod Oberto - # Date: 18-11-09 - # Purpose: Add text to an image - # Param in: - # Param out: - # Reference: http://php.net/manual/en/function.imagettftext.php - # Notes: Make sure you supply the font. - # - { - - // *** Convert color - $rgbArray = $this->formatColor($fontColor); - $r = $rgbArray['r']; - $g = $rgbArray['g']; - $b = $rgbArray['b']; - - // *** Get text font - $font = $this->getTextFont($font); - - // *** Get text size - $textSizeArray = $this->getTextSize($fontSize, $angle, $font, $text); - $textWidth = $textSizeArray['width']; - $textHeight = $textSizeArray['height']; - - // *** Find co-ords to place text - $posArray = $this->calculatePosition($pos, $padding, $textWidth, $textHeight, false); - $x = $posArray['width']; - $y = $posArray['height']; - - $fontColor = imagecolorallocate($this->imageResized, $r, $g, $b); - - // *** Add text - imagettftext($this->imageResized, $fontSize, $angle, $x, $y, $fontColor, $font, $text); - } - - ## -------------------------------------------------------- - - private function getTextFont($font) - { - // *** Font path (shou - $fontPath = dirname(__FILE__) . '/' . $this->fontDir; - - - // *** The below is/may be needed depending on your version (see ref) - putenv('GDFONTPATH=' . realpath('.')); - - // *** Check if the passed in font exsits... - if ($font == null || ! file_exists($font)) - { - - // *** ...If not, default to this font. - $font = $fontPath . '/arimo.ttf'; - - // *** Check our default font exists... - if ( ! file_exists($font)) - { - - // *** If not, return false - if ($this->debug) - { - throw new Exception('Font not found'); - } - else - { - return false; - } - } - } - - return $font; - - } - - ## -------------------------------------------------------- - - private function getTextSize($fontSize, $angle, $font, $text) - { - - // *** Define box (so we can get the width) - $box = @imageTTFBbox($fontSize, $angle, $font, $text); - - // *** Get width of text from dimensions - $textWidth = abs($box[4] - $box[0]); - - // *** Get height of text from dimensions (should also be same as $fontSize) - $textHeight = abs($box[5] - $box[1]); - - return array( 'height' => $textHeight, 'width' => $textWidth ); - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - Add Watermark -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - public function addWatermark($watermarkImage, $pos, $padding = 0, $opacity = 0) - # Author: Jarrod Oberto - # Date: 18-11-09 - # Purpose: Add watermark image - # Param in: (str) $watermark: The watermark image - # (str) $pos: Could be a pre-determined position such as: - # tl = top left, - # t = top (middle), - # tr = top right, - # l = left, - # m = middle, - # r = right, - # bl = bottom left, - # b = bottom (middle), - # br = bottom right - # Or, it could be a co-ordinate position such as: 50x100 - # - # (int) $padding: If using a pre-determined position you can - # adjust the padding from the edges by passing an amount - # in pixels. If using co-ordinates, this value is ignored. - # Param out: - # Reference: http://www.php.net/manual/en/image.examples-watermark.php - # Notes: Based on example in reference. - # - # - { - - // Load the stamp and the photo to apply the watermark to - $stamp = $this->openImage($watermarkImage); # stamp - $im = $this->imageResized; # photo - - // *** Get stamps width and height - $sx = imagesx($stamp); - $sy = imagesy($stamp); - - // *** Find co-ords to place image - $posArray = $this->calculatePosition($pos, $padding, $sx, $sy); - $x = $posArray['width']; - $y = $posArray['height']; - - // *** Set watermark opacity - if (fix_strtolower(strrchr($watermarkImage, '.')) == '.png') - { - - $opacity = $this->invertTransparency($opacity, 100); - $this->filterOpacity($stamp, $opacity); - } - - // Copy the watermark image onto our photo - imagecopy($im, $stamp, $x, $y, 0, 0, imagesx($stamp), imagesy($stamp)); - - } - - ## -------------------------------------------------------- - - private function calculatePosition($pos, $padding, $assetWidth, $assetHeight, $upperLeft = true) - # - # Author: Jarrod Oberto - # Date: 08-05-11 - # Purpose: Calculate the x, y pixel cordinates of the asset to place - # Params in: (str) $pos: Either something like: "tl", "l", "br" or an - # exact position like: "100x50" - # (int) $padding: The amount of padding from the edge. Only - # used for the predefined $pos. - # (int) $assetWidth: The width of the asset to add to the image - # (int) $assetHeight: The height of the asset to add to the image - # (bol) $upperLeft: if true, the asset will be positioned based - # on the upper left x, y coords. If false, it means you're - # using the lower left as the basepoint and this will - # convert it to the upper left position - # Params out: - # NOTE: this is done from the UPPER left corner!! But will convert lower - # left basepoints to upper left if $upperleft is set to false - # - # - { - $pos = fix_strtolower($pos); - - // *** If co-ords have been entered - if (strstr($pos, 'x')) - { - $pos = str_replace(' ', '', $pos); - - $xyArray = explode('x', $pos); - list($width, $height) = $xyArray; - - } - else - { - - switch ($pos) - { - case 'tl': - $width = 0 + $padding; - $height = 0 + $padding; - break; - - case 't': - $width = ($this->width / 2) - ($assetWidth / 2); - $height = 0 + $padding; - break; - - case 'tr': - $width = $this->width - $assetWidth - $padding; - $height = 0 + $padding;; - break; - - case 'l': - $width = 0 + $padding; - $height = ($this->height / 2) - ($assetHeight / 2); - break; - - case 'm': - $width = ($this->width / 2) - ($assetWidth / 2); - $height = ($this->height / 2) - ($assetHeight / 2); - break; - - case 'r': - $width = $this->width - $assetWidth - $padding; - $height = ($this->height / 2) - ($assetHeight / 2); - break; - - case 'bl': - $width = 0 + $padding; - $height = $this->height - $assetHeight - $padding; - break; - - case 'b': - $width = ($this->width / 2) - ($assetWidth / 2); - $height = $this->height - $assetHeight - $padding; - break; - - case 'br': - $width = $this->width - $assetWidth - $padding; - $height = $this->height - $assetHeight - $padding; - break; - - default: - $width = 0; - $height = 0; - break; - } - } - - if ( ! $upperLeft) - { - $height = $height + $assetHeight; - } - - return array( 'width' => $width, 'height' => $height ); - } - - - ## -------------------------------------------------------- - - private function filterOpacity(&$img, $opacity = 75) - # - # Author: aiden dot mail at freemail dot hu - # Author date: 29-03-08 08:16 - # Date added: 08-05-11 - # Purpose: Change opacity of image - # Params in: $img: Image resource id - # (int) $opacity: the opacity amount: 0-100, 100 being not opaque. - # Params out: (bool) true on success, else false - # Ref: http://www.php.net/manual/en/function.imagefilter.php#82162 - # Notes: png only - # - { - - if ( ! isset($opacity)) - { - return false; - } - - if ($opacity == 100) - { - return true; - } - - $opacity /= 100; - - //get image width and height - $w = imagesx($img); - $h = imagesy($img); - - //turn alpha blending off - imagealphablending($img, false); - - //find the most opaque pixel in the image (the one with the smallest alpha value) - $minalpha = 127; - for ($x = 0; $x < $w; $x++) - { - for ($y = 0; $y < $h; $y++) - { - $alpha = (imagecolorat($img, $x, $y) >> 24) & 0xFF; - if ($alpha < $minalpha) - { - $minalpha = $alpha; - } - } - } - - //loop through image pixels and modify alpha for each - for ($x = 0; $x < $w; $x++) - { - for ($y = 0; $y < $h; $y++) - { - //get current alpha value (represents the TANSPARENCY!) - $colorxy = imagecolorat($img, $x, $y); - $alpha = ($colorxy >> 24) & 0xFF; - //calculate new alpha - if ($minalpha !== 127) - { - $alpha = 127 + 127 * $opacity * ($alpha - 127) / (127 - $minalpha); - } - else - { - $alpha += 127 * $opacity; - } - //get the color index with new alpha - $alphacolorxy = imagecolorallocatealpha($img, ($colorxy >> 16) & 0xFF, ($colorxy >> 8) & 0xFF, $colorxy & 0xFF, $alpha); - //set pixel with the new color + opacity - if ( ! imagesetpixel($img, $x, $y, $alphacolorxy)) - { - - return false; - } - } - } - - return true; - } - -## -------------------------------------------------------- - - private function openImage($file) - # Author: Jarrod Oberto - # Date: 27-02-08 - # Purpose: - # Param in: - # Param out: n/a - # Reference: - # Notes: - # - { - - if ( ! file_exists($file) && ! $this->checkStringStartsWith('http://', $file) && ! $this->checkStringStartsWith('https://', $file) ) - { - if ($this->debug) - { - throw new Exception('Image not found.'); - } - else - { - throw new Exception(); - } - }; - - - // *** Get extension / image type - if ( !function_exists( 'mime_content_type' ) ) - { - - function mime_content_type( $filename ) - { - $idx = explode( '.', $filename ); - $count_explode = count( $idx ); - $idx = strtolower( $idx[$count_explode - 1] ); - - $mimet = array( - 'ai' => 'application/postscript', - 'aif' => 'audio/x-aiff', - 'aifc' => 'audio/x-aiff', - 'aiff' => 'audio/x-aiff', - 'asc' => 'text/plain', - 'atom' => 'application/atom+xml', - 'avi' => 'video/x-msvideo', - 'bcpio' => 'application/x-bcpio', - 'bmp' => 'image/bmp', - 'cdf' => 'application/x-netcdf', - 'cgm' => 'image/cgm', - 'cpio' => 'application/x-cpio', - 'cpt' => 'application/mac-compactpro', - 'crl' => 'application/x-pkcs7-crl', - 'crt' => 'application/x-x509-ca-cert', - 'csh' => 'application/x-csh', - 'css' => 'text/css', - 'dcr' => 'application/x-director', - 'dir' => 'application/x-director', - 'djv' => 'image/vnd.djvu', - 'djvu' => 'image/vnd.djvu', - 'doc' => 'application/msword', - 'dtd' => 'application/xml-dtd', - 'dvi' => 'application/x-dvi', - 'dxr' => 'application/x-director', - 'eps' => 'application/postscript', - 'etx' => 'text/x-setext', - 'ez' => 'application/andrew-inset', - 'gif' => 'image/gif', - 'gram' => 'application/srgs', - 'grxml' => 'application/srgs+xml', - 'gtar' => 'application/x-gtar', - 'hdf' => 'application/x-hdf', - 'hqx' => 'application/mac-binhex40', - 'html' => 'text/html', - 'html' => 'text/html', - 'ice' => 'x-conference/x-cooltalk', - 'ico' => 'image/x-icon', - 'ics' => 'text/calendar', - 'ief' => 'image/ief', - 'ifb' => 'text/calendar', - 'iges' => 'model/iges', - 'igs' => 'model/iges', - 'jpe' => 'image/jpeg', - 'jpeg' => 'image/jpeg', - 'jpg' => 'image/jpeg', - 'js' => 'application/x-javascript', - 'kar' => 'audio/midi', - 'latex' => 'application/x-latex', - 'm3u' => 'audio/x-mpegurl', - 'man' => 'application/x-troff-man', - 'mathml' => 'application/mathml+xml', - 'me' => 'application/x-troff-me', - 'mesh' => 'model/mesh', - 'mid' => 'audio/midi', - 'midi' => 'audio/midi', - 'mif' => 'application/vnd.mif', - 'mov' => 'video/quicktime', - 'movie' => 'video/x-sgi-movie', - 'mp2' => 'audio/mpeg', - 'mp3' => 'audio/mpeg', - 'mpe' => 'video/mpeg', - 'mpeg' => 'video/mpeg', - 'mpg' => 'video/mpeg', - 'mpga' => 'audio/mpeg', - 'ms' => 'application/x-troff-ms', - 'msh' => 'model/mesh', - 'mxu m4u' => 'video/vnd.mpegurl', - 'nc' => 'application/x-netcdf', - 'oda' => 'application/oda', - 'ogg' => 'application/ogg', - 'pbm' => 'image/x-portable-bitmap', - 'pdb' => 'chemical/x-pdb', - 'pdf' => 'application/pdf', - 'pgm' => 'image/x-portable-graymap', - 'pgn' => 'application/x-chess-pgn', - 'php' => 'application/x-httpd-php', - 'php4' => 'application/x-httpd-php', - 'php3' => 'application/x-httpd-php', - 'phtml' => 'application/x-httpd-php', - 'phps' => 'application/x-httpd-php-source', - 'png' => 'image/png', - 'pnm' => 'image/x-portable-anymap', - 'ppm' => 'image/x-portable-pixmap', - 'ppt' => 'application/vnd.ms-powerpoint', - 'ps' => 'application/postscript', - 'qt' => 'video/quicktime', - 'ra' => 'audio/x-pn-realaudio', - 'ram' => 'audio/x-pn-realaudio', - 'ras' => 'image/x-cmu-raster', - 'rdf' => 'application/rdf+xml', - 'rgb' => 'image/x-rgb', - 'rm' => 'application/vnd.rn-realmedia', - 'roff' => 'application/x-troff', - 'rtf' => 'text/rtf', - 'rtx' => 'text/richtext', - 'sgm' => 'text/sgml', - 'sgml' => 'text/sgml', - 'sh' => 'application/x-sh', - 'shar' => 'application/x-shar', - 'shtml' => 'text/html', - 'silo' => 'model/mesh', - 'sit' => 'application/x-stuffit', - 'skd' => 'application/x-koan', - 'skm' => 'application/x-koan', - 'skp' => 'application/x-koan', - 'skt' => 'application/x-koan', - 'smi' => 'application/smil', - 'smil' => 'application/smil', - 'snd' => 'audio/basic', - 'spl' => 'application/x-futuresplash', - 'src' => 'application/x-wais-source', - 'sv4cpio' => 'application/x-sv4cpio', - 'sv4crc' => 'application/x-sv4crc', - 'svg' => 'image/svg+xml', - 'swf' => 'application/x-shockwave-flash', - 't' => 'application/x-troff', - 'tar' => 'application/x-tar', - 'tcl' => 'application/x-tcl', - 'tex' => 'application/x-tex', - 'texi' => 'application/x-texinfo', - 'texinfo' => 'application/x-texinfo', - 'tgz' => 'application/x-tar', - 'tif' => 'image/tiff', - 'tiff' => 'image/tiff', - 'tr' => 'application/x-troff', - 'tsv' => 'text/tab-separated-values', - 'txt' => 'text/plain', - 'ustar' => 'application/x-ustar', - 'vcd' => 'application/x-cdlink', - 'vrml' => 'model/vrml', - 'vxml' => 'application/voicexml+xml', - 'wav' => 'audio/x-wav', - 'wbmp' => 'image/vnd.wap.wbmp', - 'wbxml' => 'application/vnd.wap.wbxml', - 'wml' => 'text/vnd.wap.wml', - 'wmlc' => 'application/vnd.wap.wmlc', - 'wmlc' => 'application/vnd.wap.wmlc', - 'wmls' => 'text/vnd.wap.wmlscript', - 'wmlsc' => 'application/vnd.wap.wmlscriptc', - 'wmlsc' => 'application/vnd.wap.wmlscriptc', - 'wrl' => 'model/vrml', - 'xbm' => 'image/x-xbitmap', - 'xht' => 'application/xhtml+xml', - 'xhtml' => 'application/xhtml+xml', - 'xls' => 'application/vnd.ms-excel', - 'xml xsl' => 'application/xml', - 'xpm' => 'image/x-xpixmap', - 'xslt' => 'application/xslt+xml', - 'xul' => 'application/vnd.mozilla.xul+xml', - 'xwd' => 'image/x-xwindowdump', - 'xyz' => 'chemical/x-xyz', - 'zip' => 'application/zip' - ); - - if ( isset( $mimet[$idx] ) ) - { - return $mimet[$idx]; - } - else - { - return 'application/octet-stream'; - } - } - - } - - $extension = mime_content_type($file); - $extension = fix_strtolower($extension); - $extension = str_replace('image/', '', $extension); - switch ($extension) - { - case 'jpg': - case 'jpeg': - $img = @imagecreatefromjpeg($file); - break; - case 'gif': - $img = @imagecreatefromgif($file); - break; - case 'png': - $img = @imagecreatefrompng($file); - break; - case 'bmp': - $img = @$this->imagecreatefrombmp($file); - break; - case 'psd': - case 'vnd.adobe.photoshop': - $img = @$this->imagecreatefrompsd($file); - break; - - - // ... etc - - default: - $img = false; - break; - } - - return $img; - } - -## -------------------------------------------------------- - - public function reset() - # - # Author: Jarrod Oberto - # Date: 30-08-11 - # Purpose: Reset the resource (allow further editing) - # Params in: - # Params out: - # Notes: - # - { - $this->__construct($this->fileName); - } - -## -------------------------------------------------------- - - public function saveImage($savePath, $imageQuality = "100") - # Author: Jarrod Oberto - # Date: 27-02-08 - # Purpose: Saves the image - # Param in: $savePath: Where to save the image including filename: - # $imageQuality: image quality you want the image saved at 0-100 - # Param out: n/a - # Reference: - # Notes: * gif doesn't have a quality parameter - # * jpg has a quality setting 0-100 (100 being the best) - # * png has a quality setting 0-9 (0 being the best) - # - # * bmp files have no native support for bmp files. We use a - # third party class to save as bmp. - { - - // *** Perform a check or two. - if ( ! is_resource($this->imageResized)) - { - if ($this->debug) - { - throw new Exception('saveImage: This is not a resource.'); - } - else - { - throw new Exception(); - } - } - $fileInfoArray = pathInfo($savePath); - clearstatcache(); - if ( ! is_writable($fileInfoArray['dirname'])) - { - if ($this->debug) - { - throw new Exception('The path is not writable. Please check your permissions.'); - } - else - { - throw new Exception(); - } - } - - // *** Get extension - $extension = strrchr($savePath, '.'); - $extension = fix_strtolower($extension); - - $error = ''; - - switch ($extension) - { - case '.jpg': - case '.jpeg': - $this->checkInterlaceImage($this->isInterlace); - if (imagetypes() & IMG_JPG) - { - imagejpeg($this->imageResized, $savePath, $imageQuality); - } - else - { - $error = 'jpg'; - } - break; - - case '.gif': - $this->checkInterlaceImage($this->isInterlace); - if (imagetypes() & IMG_GIF) - { - imagegif($this->imageResized, $savePath); - } - else - { - $error = 'gif'; - } - break; - - case '.png': - // *** Scale quality from 0-100 to 0-9 - $scaleQuality = round(($imageQuality / 100) * 9); - - // *** Invert qualit setting as 0 is best, not 9 - $invertScaleQuality = 9 - $scaleQuality; - - $this->checkInterlaceImage($this->isInterlace); - if (imagetypes() & IMG_PNG) - { - imagepng($this->imageResized, $savePath, $invertScaleQuality); - } - else - { - $error = 'png'; - } - break; - - case '.bmp': - file_put_contents($savePath, $this->GD2BMPstring($this->imageResized)); - break; - - - // ... etc - - default: - // *** No extension - No save. - $this->errorArray[] = 'This file type (' . $extension . ') is not supported. File not saved.'; - break; - } - - //imagedestroy($this->imageResized); - - // *** Display error if a file type is not supported. - if ($error != '') - { - $this->errorArray[] = $error . ' support is NOT enabled. File not saved.'; - } - } - -## -------------------------------------------------------- - - public function displayImage($fileType = 'jpg', $imageQuality = "100") - # Author: Jarrod Oberto - # Date: 18-11-09 - # Purpose: Display images directly to the browser - # Param in: The image type you want to display - # Param out: - # Reference: - # Notes: - # - { - - if ( ! is_resource($this->imageResized)) - { - if ($this->debug) - { - throw new Exception('saveImage: This is not a resource.'); - } - else - { - throw new Exception(); - } - } - - switch ($fileType) - { - case 'jpg': - case 'jpeg': - header('Content-type: image/jpeg'); - imagejpeg($this->imageResized, '', $imageQuality); - break; - case 'gif': - header('Content-type: image/gif'); - imagegif($this->imageResized); - break; - case 'png': - header('Content-type: image/png'); - - // *** Scale quality from 0-100 to 0-9 - $scaleQuality = round(($imageQuality / 100) * 9); - - // *** Invert qualit setting as 0 is best, not 9 - $invertScaleQuality = 9 - $scaleQuality; - - imagepng($this->imageResized, '', $invertScaleQuality); - break; - case 'bmp': - echo 'bmp file format is not supported.'; - break; - - // ... etc - - default: - // *** No extension - No save. - break; - } - - - //imagedestroy($this->imageResized); - } - -## -------------------------------------------------------- - - public function setTransparency($bool) - # Sep 2011 - { - $this->keepTransparency = $bool; - } - -## -------------------------------------------------------- - - public function setFillColor($value) - # Sep 2011 - # Param in: (mixed) $value: (array) Could be an array of RGB - # (str) Could be hex #ffffff or #fff, fff, ffffff - # - # If the keepTransparency is set to false, then no transparency is to be used. - # This is ideal when you want to save as jpg. - # - # this method allows you to set the background color to use instead of - # transparency. - # - { - $colorArray = $this->formatColor($value); - $this->fillColorArray = $colorArray; - } - -## -------------------------------------------------------- - - public function setCropFromTop($value) - # Sep 2011 - { - $this->cropFromTopPercent = $value; - } - -## -------------------------------------------------------- - - public function testGDInstalled() - # Author: Jarrod Oberto - # Date: 27-02-08 - # Purpose: Test to see if GD is installed - # Param in: n/a - # Param out: (bool) True is gd extension loaded otherwise false - # Reference: - # Notes: - # - { - if (extension_loaded('gd') && function_exists('gd_info')) - { - $gdInstalled = true; - } - else - { - $gdInstalled = false; - } - - return $gdInstalled; - } - -## -------------------------------------------------------- - - public function testEXIFInstalled() - # Author: Jarrod Oberto - # Date: 08-05-11 - # Purpose: Test to see if EXIF is installed - # Param in: n/a - # Param out: (bool) True is exif extension loaded otherwise false - # Reference: - # Notes: - # - { - if (extension_loaded('exif')) - { - $exifInstalled = true; - } - else - { - $exifInstalled = false; - } - - return $exifInstalled; - } - -## -------------------------------------------------------- - - public function testIsImage($image) - # Author: Jarrod Oberto - # Date: 27-02-08 - # Purpose: Test if file is an image - # Param in: n/a - # Param out: n/a - # Reference: - # Notes: - # - { - if ($image) - { - $fileIsImage = true; - } - else - { - $fileIsImage = false; - } - - return $fileIsImage; - } - -## -------------------------------------------------------- - - public function testFunct() - # Author: Jarrod Oberto - # Date: 27-02-08 - # Purpose: Test Function - # Param in: n/a - # Param out: n/a - # Reference: - # Notes: - # - { - echo $this->height; - } - -## -------------------------------------------------------- - - public function setForceStretch($value) - # Author: Jarrod Oberto - # Date: 23-12-10 - # Purpose: - # Param in: (bool) $value - # Param out: n/a - # Reference: - # Notes: - # - { - $this->forceStretch = $value; - } - -## -------------------------------------------------------- - - public function setFile($fileName) - # Author: Jarrod Oberto - # Date: 28-02-08 - # Purpose: - # Param in: n/a - # Param out: n/a - # Reference: - # Notes: - # - { - self::__construct($fileName); - } - -## -------------------------------------------------------- - - public function getFileName() - # Author: Jarrod Oberto - # Date: 10-09-08 - # Purpose: - # Param in: n/a - # Param out: n/a - # Reference: - # Notes: - # - { - return $this->fileName; - } - -## -------------------------------------------------------- - - public function getHeight() - { - return $this->height; - } - -## -------------------------------------------------------- - - public function getWidth() - { - return $this->width; - } - -## -------------------------------------------------------- - - public function getOriginalHeight() - { - return $this->heightOriginal; - } - -## -------------------------------------------------------- - - public function getOriginalWidth() - { - return $this->widthOriginal; - } - -## -------------------------------------------------------- - - public function getErrors() - # Author: Jarrod Oberto - # Date: 19-11-09 - # Purpose: Returns the error array - # Param in: n/a - # Param out: Array of errors - # Reference: - # Notes: - # - { - return $this->errorArray; - } - -## -------------------------------------------------------- - - private function checkInterlaceImage($isEnabled) - # jpg will use progressive (they don't use interace) - { - if ($isEnabled) - { - imageinterlace($this->imageResized, $isEnabled); - } - } - -## -------------------------------------------------------- - - protected function formatColor($value) - # Author: Jarrod Oberto - # Date: 09-05-11 - # Purpose: Determine color method passed in and return color as RGB - # Param in: (mixed) $value: (array) Could be an array of RGB - # (str) Could be hex #ffffff or #fff, fff, ffffff - # Param out: - # Reference: - # Notes: - # - { - $rgbArray = array(); - - // *** If it's an array it should be R, G, B - if (is_array($value)) - { - - if (key($value) == 0 && count($value) == 3) - { - - $rgbArray['r'] = $value[0]; - $rgbArray['g'] = $value[1]; - $rgbArray['b'] = $value[2]; - - } - else - { - $rgbArray = $value; - } - } - else - { - if (fix_strtolower($value) == 'transparent') - { - - $rgbArray = array( - 'r' => 255, - 'g' => 255, - 'b' => 255, - 'a' => 127 - ); - - } - else - { - - // *** ...Else it should be hex. Let's make it RGB - $rgbArray = $this->hex2dec($value); - } - } - - return $rgbArray; - } - - ## -------------------------------------------------------- - - function hex2dec($hex) - # Purpose: Convert #hex color to RGB - { - $color = str_replace('#', '', $hex); - - if (strlen($color) == 3) - { - $color = $color . $color; - } - - $rgb = array( - 'r' => hexdec(substr($color, 0, 2)), - 'g' => hexdec(substr($color, 2, 2)), - 'b' => hexdec(substr($color, 4, 2)), - 'a' => 0 - ); - - return $rgb; - } - - ## -------------------------------------------------------- - - private function createImageColor($colorArray) - { - $r = $colorArray['r']; - $g = $colorArray['g']; - $b = $colorArray['b']; - - return imagecolorallocate($this->imageResized, $r, $g, $b); - } - - ## -------------------------------------------------------- - - private function testColorExists($colorArray) - { - $r = $colorArray['r']; - $g = $colorArray['g']; - $b = $colorArray['b']; - - if (imagecolorexact($this->imageResized, $r, $g, $b) == -1) - { - return false; - } - else - { - return true; - } - } - - ## -------------------------------------------------------- - - private function findUnusedGreen() - # Purpose: We find a green color suitable to use like green-screen effect. - # Therefore, the color must not exist in the image. - { - $green = 255; - - do - { - - $greenChroma = array( 0, $green, 0 ); - $colorArray = $this->formatColor($greenChroma); - $match = $this->testColorExists($colorArray); - $green--; - - } while ($match == false && $green > 0); - - // *** If no match, just bite the bullet and use green value of 255 - if ( ! $match) - { - $greenChroma = array( 0, $green, 0 ); - } - - return $greenChroma; - } - - ## -------------------------------------------------------- - - private function findUnusedBlue() - # Purpose: We find a green color suitable to use like green-screen effect. - # Therefore, the color must not exist in the image. - { - $blue = 255; - - do - { - - $blueChroma = array( 0, 0, $blue ); - $colorArray = $this->formatColor($blueChroma); - $match = $this->testColorExists($colorArray); - $blue--; - - } while ($match == false && $blue > 0); - - // *** If no match, just bite the bullet and use blue value of 255 - if ( ! $match) - { - $blueChroma = array( 0, 0, $blue ); - } - - return $blueChroma; - } - - ## -------------------------------------------------------- - - private function invertTransparency($value, $originalMax, $invert = true) - # Purpose: This does two things: - # 1) Convert the range from 0-127 to 0-100 - # 2) Inverts value to 100 is not transparent while 0 is fully - # transparent (like Photoshop) - { - // *** Test max range - if ($value > $originalMax) - { - $value = $originalMax; - } - - // *** Test min range - if ($value < 0) - { - $value = 0; - } - - if ($invert) - { - return $originalMax - (($value / 100) * $originalMax); - } - else - { - return ($value / 100) * $originalMax; - } - } - - ## -------------------------------------------------------- - - private function transparentImage($src) - { - // *** making images with white bg transparent - $r1 = 0; - $g1 = 255; - $b1 = 0; - for ($x = 0; $x < imagesx($src); ++$x) - { - for ($y = 0; $y < imagesy($src); ++$y) - { - $color = imagecolorat($src, $x, $y); - $r = ($color >> 16) & 0xFF; - $g = ($color >> 8) & 0xFF; - $b = $color & 0xFF; - for ($i = 0; $i < 270; $i++) - { - //if ($r . $g . $b == ($r1 + $i) . ($g1 + $i) . ($b1 + $i)) { - if ($r == 0 && $g == 255 && $b == 0) - { - //if ($g == 255) { - $trans_colour = imagecolorallocatealpha($src, 0, 0, 0, 127); - imagefill($src, $x, $y, $trans_colour); - } - } - } - } - - return $src; - } - - ## -------------------------------------------------------- - - function checkStringStartsWith($needle, $haystack) - # Check if a string starts with a specific pattern - { - return (substr($haystack, 0, strlen($needle)) == $needle); - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - BMP SUPPORT (SAVING) - James Heinrich -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - private function GD2BMPstring(&$gd_image) - # Author: James Heinrich - # Purpose: Save file as type bmp - # Param in: The image canvas (passed as ref) - # Param out: - # Reference: - # Notes: This code was stripped out of two external files - # (phpthumb.bmp.php,phpthumb.functions.php) and added below to - # avoid dependancies. - # - { - $imageX = ImageSX($gd_image); - $imageY = ImageSY($gd_image); - - $BMP = ''; - for ($y = ($imageY - 1); $y >= 0; $y--) - { - $thisline = ''; - for ($x = 0; $x < $imageX; $x++) - { - $argb = $this->GetPixelColor($gd_image, $x, $y); - $thisline .= chr($argb['blue']) . chr($argb['green']) . chr($argb['red']); - } - while (strlen($thisline) % 4) - { - $thisline .= "\x00"; - } - $BMP .= $thisline; - } - - $bmpSize = strlen($BMP) + 14 + 40; - // BITMAPFILEHEADER [14 bytes] - http://msdn.microsoft.com/library/en-us/gdi/bitmaps_62uq.asp - $BITMAPFILEHEADER = 'BM'; // WORD bfType; - $BITMAPFILEHEADER .= $this->LittleEndian2String($bmpSize, 4); // DWORD bfSize; - $BITMAPFILEHEADER .= $this->LittleEndian2String(0, 2); // WORD bfReserved1; - $BITMAPFILEHEADER .= $this->LittleEndian2String(0, 2); // WORD bfReserved2; - $BITMAPFILEHEADER .= $this->LittleEndian2String(54, 4); // DWORD bfOffBits; - - // BITMAPINFOHEADER - [40 bytes] http://msdn.microsoft.com/library/en-us/gdi/bitmaps_1rw2.asp - $BITMAPINFOHEADER = $this->LittleEndian2String(40, 4); // DWORD biSize; - $BITMAPINFOHEADER .= $this->LittleEndian2String($imageX, 4); // LONG biWidth; - $BITMAPINFOHEADER .= $this->LittleEndian2String($imageY, 4); // LONG biHeight; - $BITMAPINFOHEADER .= $this->LittleEndian2String(1, 2); // WORD biPlanes; - $BITMAPINFOHEADER .= $this->LittleEndian2String(24, 2); // WORD biBitCount; - $BITMAPINFOHEADER .= $this->LittleEndian2String(0, 4); // DWORD biCompression; - $BITMAPINFOHEADER .= $this->LittleEndian2String(0, 4); // DWORD biSizeImage; - $BITMAPINFOHEADER .= $this->LittleEndian2String(2835, 4); // LONG biXPelsPerMeter; - $BITMAPINFOHEADER .= $this->LittleEndian2String(2835, 4); // LONG biYPelsPerMeter; - $BITMAPINFOHEADER .= $this->LittleEndian2String(0, 4); // DWORD biClrUsed; - $BITMAPINFOHEADER .= $this->LittleEndian2String(0, 4); // DWORD biClrImportant; - - return $BITMAPFILEHEADER . $BITMAPINFOHEADER . $BMP; - } - -## -------------------------------------------------------- - - private function GetPixelColor(&$img, $x, $y) - # Author: James Heinrich - # Purpose: - # Param in: - # Param out: - # Reference: - # Notes: - # - { - if ( ! is_resource($img)) - { - return false; - } - - return @ImageColorsForIndex($img, @ImageColorAt($img, $x, $y)); - } - -## -------------------------------------------------------- - - private function LittleEndian2String($number, $minbytes = 1) - # Author: James Heinrich - # Purpose: BMP SUPPORT (SAVING) - # Param in: - # Param out: - # Reference: - # Notes: - # - { - $intstring = ''; - while ($number > 0) - { - $intstring = $intstring . chr($number & 255); - $number >>= 8; - } - - return str_pad($intstring, $minbytes, "\x00", STR_PAD_RIGHT); - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - BMP SUPPORT (READING) -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - private function ImageCreateFromBMP($filename) - # Author: DHKold - # Date: The 15th of June 2005 - # Version: 2.0B - # Purpose: To create an image from a BMP file. - # Param in: BMP file to open. - # Param out: Return a resource like the other ImageCreateFrom functions - # Reference: http://us3.php.net/manual/en/function.imagecreate.php#53879 - # Bug fix: Author: domelca at terra dot es - # Date: 06 March 2008 - # Fix: Correct 16bit BMP support - # Notes: - # - { - - //Ouverture du fichier en mode binaire - if ( ! $f1 = fopen($filename, "rb")) - { - return false; - } - - //1 : Chargement des ent�tes FICHIER - $FILE = unpack("vfile_type/Vfile_size/Vreserved/Vbitmap_offset", fread($f1, 14)); - if ($FILE['file_type'] != 19778) - { - return false; - } - - //2 : Chargement des ent�tes BMP - $BMP = unpack('Vheader_size/Vwidth/Vheight/vplanes/vbits_per_pixel' . - '/Vcompression/Vsize_bitmap/Vhoriz_resolution' . - '/Vvert_resolution/Vcolors_used/Vcolors_important', fread($f1, 40)); - $BMP['colors'] = pow(2, $BMP['bits_per_pixel']); - - if ($BMP['size_bitmap'] == 0) - { - $BMP['size_bitmap'] = $FILE['file_size'] - $FILE['bitmap_offset']; - } - - $BMP['bytes_per_pixel'] = $BMP['bits_per_pixel'] / 8; - $BMP['bytes_per_pixel2'] = ceil($BMP['bytes_per_pixel']); - $BMP['decal'] = ($BMP['width'] * $BMP['bytes_per_pixel'] / 4); - $BMP['decal'] -= floor($BMP['width'] * $BMP['bytes_per_pixel'] / 4); - $BMP['decal'] = 4 - (4 * $BMP['decal']); - - if ($BMP['decal'] == 4) - { - $BMP['decal'] = 0; - } - - //3 : Chargement des couleurs de la palette - $PALETTE = array(); - if ($BMP['colors'] < 16777216) - { - $PALETTE = unpack('V' . $BMP['colors'], fread($f1, $BMP['colors'] * 4)); - } - - //4 : Cr�ation de l'image - $IMG = fread($f1, $BMP['size_bitmap']); - $VIDE = chr(0); - - $res = imagecreatetruecolor($BMP['width'], $BMP['height']); - $P = 0; - $Y = $BMP['height'] - 1; - while ($Y >= 0) - { - $X = 0; - while ($X < $BMP['width']) - { - if ($BMP['bits_per_pixel'] == 24) - { - $COLOR = unpack("V", substr($IMG, $P, 3) . $VIDE); - } - elseif ($BMP['bits_per_pixel'] == 16) - { - - /* - * BMP 16bit fix - * ================= - * - * Ref: http://us3.php.net/manual/en/function.imagecreate.php#81604 - * - * Notes: - * "don't work with bmp 16 bits_per_pixel. change pixel - * generator for this." - * - */ - - // *** Original code (don't work) - //$COLOR = unpack("n",substr($IMG,$P,2)); - //$COLOR[1] = $PALETTE[$COLOR[1]+1]; - - $COLOR = unpack("v", substr($IMG, $P, 2)); - $blue = ($COLOR[1] & 0x001f) << 3; - $green = ($COLOR[1] & 0x07e0) >> 3; - $red = ($COLOR[1] & 0xf800) >> 8; - $COLOR[1] = $red * 65536 + $green * 256 + $blue; - - } - elseif ($BMP['bits_per_pixel'] == 8) - { - $COLOR = unpack("n", $VIDE . substr($IMG, $P, 1)); - $COLOR[1] = $PALETTE[ $COLOR[1] + 1 ]; - } - elseif ($BMP['bits_per_pixel'] == 4) - { - $COLOR = unpack("n", $VIDE . substr($IMG, floor($P), 1)); - if (($P * 2) % 2 == 0) - { - $COLOR[1] = ($COLOR[1] >> 4); - } - else - { - $COLOR[1] = ($COLOR[1] & 0x0F); - } - $COLOR[1] = $PALETTE[ $COLOR[1] + 1 ]; - } - elseif ($BMP['bits_per_pixel'] == 1) - { - $COLOR = unpack("n", $VIDE . substr($IMG, floor($P), 1)); - if (($P * 8) % 8 == 0) - { - $COLOR[1] = $COLOR[1] >> 7; - } - elseif (($P * 8) % 8 == 1) - { - $COLOR[1] = ($COLOR[1] & 0x40) >> 6; - } - elseif (($P * 8) % 8 == 2) - { - $COLOR[1] = ($COLOR[1] & 0x20) >> 5; - } - elseif (($P * 8) % 8 == 3) - { - $COLOR[1] = ($COLOR[1] & 0x10) >> 4; - } - elseif (($P * 8) % 8 == 4) - { - $COLOR[1] = ($COLOR[1] & 0x8) >> 3; - } - elseif (($P * 8) % 8 == 5) - { - $COLOR[1] = ($COLOR[1] & 0x4) >> 2; - } - elseif (($P * 8) % 8 == 6) - { - $COLOR[1] = ($COLOR[1] & 0x2) >> 1; - } - elseif (($P * 8) % 8 == 7) - { - $COLOR[1] = ($COLOR[1] & 0x1); - } - $COLOR[1] = $PALETTE[ $COLOR[1] + 1 ]; - } - else - { - return false; - } - - imagesetpixel($res, $X, $Y, $COLOR[1]); - $X++; - $P += $BMP['bytes_per_pixel']; - } - - $Y--; - $P += $BMP['decal']; - } - //Fermeture du fichier - fclose($f1); - - return $res; - } - - - /*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*- - PSD SUPPORT (READING) -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-**-*-*-*-*-*-*-*-*-*-*-*-*-*/ - - private function imagecreatefrompsd($fileName) - # Author: Tim de Koning - # Version: 1.3 - # Purpose: To create an image from a PSD file. - # Param in: PSD file to open. - # Param out: Return a resource like the other ImageCreateFrom functions - # Reference: http://www.kingsquare.nl/phppsdreader - # Notes: - # - { - if (file_exists($this->psdReaderPath)) - { - - - include_once($this->psdReaderPath); - - $psdReader = new PhpPsdReader($fileName); - - if (isset($psdReader->infoArray['error'])) - { - return ''; - } - else - { - return $psdReader->getImage(); - } - } - else - { - return false; - } - } - -## -------------------------------------------------------- - - public function __destruct() - { - if (is_resource($this->imageResized)) - { - imagedestroy($this->imageResized); - } - } - -## -------------------------------------------------------- - -} - - -/* - * Example with some API calls (outdated): - * - * - * =============================== - * Compulsary - * =============================== - * - * include("classes/resize_class.php"); - * - * // *** Initialise object - * $magicianObj = new resize('images/cars/large/a.jpg'); - * - * // *** Turn off stretching (optional) - * $magicianObj -> setForceStretch(false); - * - * // *** Resize object - * $magicianObj -> resizeImage(150, 100, 0); - * - * =============================== - * Image options - can run none, one, or all. - * =============================== - * - * // *** Add watermark - * $magicianObj -> addWatermark('stamp.png'); - * - * // *** Add text - * $magicianObj -> addText('testing...'); - * - * =============================== - * Output options - can run one, or the other, or both. - * =============================== - * - * // *** Save image to disk - * $magicianObj -> saveImage('images/cars/large/b.jpg', 100); - * - * // *** Or output to screen (params in can be jpg, gif, png) - * $magicianObj -> displayImage('png'); - * - * =============================== - * Return options - return errors. nice for debuggin. - * =============================== - * - * // *** Return error array - * $errorArray = $magicianObj -> getErrors(); - * - * - * =============================== - * Cleanup options - not really neccessary, but good practice - * =============================== - * - * // *** Free used memory - * $magicianObj -> __destruct(); - */ diff --git a/libraries/filemanager-9.12.1/include/utils.php b/libraries/filemanager-9.12.1/include/utils.php deleted file mode 100644 index ec78342..0000000 --- a/libraries/filemanager-9.12.1/include/utils.php +++ /dev/null @@ -1,1164 +0,0 @@ -send(); - exit; - } - - } - if(file_exists('lang/' . $lang . '.php')){ - $lang_vars = include 'lang/' . $lang . '.php'; - }else{ - $lang_vars = include '../lang/' . $lang . '.php'; - } - - if ( ! is_array($lang_vars)) - { - $lang_vars = array(); - } -} - -/** -* Delete directory -* -* @param string $dir -* -* @return bool -*/ -function deleteDir($dir,$ftp = null, $config = null) -{ - if($ftp){ - - try{ - $ftp->rmdir($dir); - return true; - - }catch(FtpClient\FtpException $e){ - return null; - } - - }else{ - if ( ! file_exists($dir)) - { - return false; - } - if ( ! is_dir($dir)) - { - return unlink($dir); - } - foreach (scandir($dir) as $item) - { - if ($item == '.' || $item == '..') - { - continue; - } - if ( ! deleteDir($dir . DIRECTORY_SEPARATOR . $item)) - { - return false; - } - } - } - - return rmdir($dir); -} - -/** -* Make a file copy -* -* @param string $old_path -* @param string $name New file name without extension -* -* @return bool -*/ -function duplicate_file( $old_path, $name, $ftp = null, $config = null ) -{ - $info = pathinfo($old_path); - $new_path = $info['dirname'] . "/" . $name . "." . $info['extension']; - if($ftp){ - try{ - $tmp = time().$name . "." . $info['extension']; - $ftp->get($tmp, "/".$old_path, FTP_BINARY); - $ftp->put("/".$new_path, $tmp, FTP_BINARY); - unlink($tmp); - return true; - - }catch(FtpClient\FtpException $e){ - return null; - } - }else{ - if (file_exists($old_path)) - { - if (file_exists($new_path) && $old_path == $new_path) - { - return false; - } - - return copy($old_path, $new_path); - } - } -} - - -/** -* Rename file -* -* @param string $old_path File to rename -* @param string $name New file name without extension -* @param bool $transliteration -* -* @return bool -*/ -function rename_file($old_path, $name, $ftp = null, $config = null) -{ - $name = fix_filename($name, $config); - $info = pathinfo($old_path); - $new_path = $info['dirname'] . "/" . $name . "." . $info['extension']; - if($ftp){ - try{ - return $ftp->rename("/".$old_path, "/".$new_path); - }catch(FtpClient\FtpException $e){ - return false; - } - }else{ - if (file_exists($old_path)) - { - $new_path = $info['dirname'] . "/" . $name . "." . $info['extension']; - if (file_exists($new_path) && $old_path == $new_path) - { - return false; - } - - return rename($old_path, $new_path); - } - } -} - - -function url_exists($url){ - if (!$fp = curl_init($url)) return false; - return true; -} - - -function tempdir() { - $tempfile=tempnam(sys_get_temp_dir(),''); - if (file_exists($tempfile)) { unlink($tempfile); } - mkdir($tempfile); - if (is_dir($tempfile)) { return $tempfile; } -} - - -/** -* Rename directory -* -* @param string $old_path Directory to rename -* @param string $name New directory name -* @param bool $transliteration -* -* @return bool -*/ -function rename_folder($old_path, $name, $ftp = null, $config = null) -{ - $name = fix_filename($name, $config, true); - $new_path = fix_dirname($old_path) . "/" . $name; - if($ftp){ - if($ftp->chdir("/".$old_path)){ - if(@$ftp->chdir($new_path)){ - return false; - } - return $ftp->rename("/".$old_path, "/".$new_path); - } - }else{ - if (file_exists($old_path)) - { - if (file_exists($new_path) && $old_path == $new_path) - { - return false; - } - - return rename($old_path, $new_path); - } - } -} - -function ftp_con($config){ - if(isset($config['ftp_host']) && $config['ftp_host']){ - // *** Include the class - include('include/FtpClient.php'); - include('include/FtpException.php'); - include('include/FtpWrapper.php'); - - $ftp = new \FtpClient\FtpClient(); - try{ - $ftp->connect($config['ftp_host'],$config['ftp_ssl'],$config['ftp_port']); - $ftp->login($config['ftp_user'], $config['ftp_pass']); - $ftp->pasv(true); - return $ftp; - }catch(FtpClient\FtpException $e){ - echo "Error: "; - echo $e->getMessage(); - echo " to server "; - $tmp = $e->getTrace(); - echo $tmp[0]['args'][0]; - echo "
Please check configurations"; - die(); - } - }else{ - return false; - } -} - -/** -* Create new image from existing file -* -* @param string $imgfile Source image file name -* @param string $imgthumb Thumbnail file name -* @param int $newwidth Thumbnail width -* @param int $newheight Optional thumbnail height -* @param string $option Type of resize -* -* @return bool -* @throws \Exception -*/ -function create_img($imgfile, $imgthumb, $newwidth, $newheight = null, $option = "crop",$config = array()) -{ - $result = false; - if(isset($config['ftp_host']) && $config['ftp_host']){ - if(url_exists($imgfile)){ - $temp = tempnam('/tmp','RF'); - unlink($temp); - $temp .=".".substr(strrchr($imgfile,'.'),1); - $handle = fopen($temp, "w"); - fwrite($handle, file_get_contents($imgfile)); - fclose($handle); - $imgfile= $temp; - $save_ftp = $imgthumb; - $imgthumb = $temp; - } - } - if(file_exists($imgfile) || strpos($imgfile,'http')===0){ - if (strpos($imgfile,'http')===0 || image_check_memory_usage($imgfile, $newwidth, $newheight)) - { - require_once('php_image_magician.php'); - try{ - $magicianObj = new imageLib($imgfile); - $magicianObj->resizeImage($newwidth, $newheight, $option); - $magicianObj->saveImage($imgthumb, 80); - }catch (Exception $e){ - return $e->getMessage(); - } - $result = true; - } - } - if($result && isset($config['ftp_host']) && $config['ftp_host'] ){ - $ftp->put($save_ftp, $imgthumb, FTP_BINARY); - unlink($imgthumb); - } - - return $result; -} - -/** -* Convert convert size in bytes to human readable -* -* @param int $size -* -* @return string -*/ -function makeSize($size) -{ - $units = array( 'B', 'KB', 'MB', 'GB', 'TB' ); - $u = 0; - while ((round($size / 1024) > 0) && ($u < 4)) - { - $size = $size / 1024; - $u++; - } - - return (number_format($size, 0) . " " . trans($units[ $u ])); -} - -/** -* Determine directory size -* -* @param string $path -* -* @return int -*/ -function folder_info($path,$count_hidden=true) -{ - global $hidden_folders,$hidden_files; - $total_size = 0; - $files = scandir($path); - $cleanPath = rtrim($path, '/') . '/'; - $files_count = 0; - $folders_count = 0; - foreach ($files as $t) - { - if ($t != "." && $t != "..") - { - if ($count_hidden or !(in_array($t,$hidden_folders) or in_array($t,$hidden_files))) - { - $currentFile = $cleanPath . $t; - if (is_dir($currentFile)) - { - list($size,$tmp,$tmp1) = folder_info($currentFile); - $total_size += $size; - $folders_count ++; - } - else - { - $size = filesize($currentFile); - $total_size += $size; - $files_count++; - } - } - } - } - - return array($total_size,$files_count,$folders_count); -} -/** -* Get number of files in a directory -* -* @param string $path -* -* @return int -*/ -function filescount($path,$count_hidden=true) -{ - global $hidden_folders,$hidden_files; - $total_count = 0; - $files = scandir($path); - $cleanPath = rtrim($path, '/') . '/'; - - foreach ($files as $t) - { - if ($t != "." && $t != "..") - { - if ($count_hidden or !(in_array($t,$hidden_folders) or in_array($t,$hidden_files))) - { - $currentFile = $cleanPath . $t; - if (is_dir($currentFile)) - { - $size = filescount($currentFile); - $total_count += $size; - } - else - { - $total_count += 1; - } - } - } - } - - return $total_count; -} -/** -* check if the current folder size plus the added size is over the overall size limite -* -* @param int $sizeAdded -* -* @return bool -*/ -function checkresultingsize($sizeAdded) -{ - global $MaxSizeTotal,$current_path; - if ($MaxSizeTotal !== false && is_int($MaxSizeTotal)) { - list($sizeCurrentFolder,$fileCurrentNum,$foldersCurrentCount) = folder_info($current_path,false); - // overall size over limit - if (($MaxSizeTotal * 1024 * 1024) < ($sizeCurrentFolder + $sizeAdded)) { - return false; - } - } - return true; -} - -/** -* Create directory for images and/or thumbnails -* -* @param string $path -* @param string $path_thumbs -*/ -function create_folder($path = null, $path_thumbs = null,$ftp = null,$config = null) -{ - if($ftp){ - $ftp->mkdir($path); - $ftp->mkdir($path_thumbs); - }else{ - $oldumask = umask(0); - if ($path && ! file_exists($path)) - { - mkdir($path, 0755, true); - } // or even 01777 so you get the sticky bit set - if ($path_thumbs && ! file_exists($path_thumbs)) - { - mkdir($path_thumbs, 0755, true) or die("$path_thumbs cannot be found"); - } // or even 01777 so you get the sticky bit set - umask($oldumask); - } -} - -/** -* Get file extension present in directory -* -* @param string $path -* @param string $ext -*/ -function check_files_extensions_on_path($path, $ext) -{ - if ( ! is_dir($path)) - { - $fileinfo = pathinfo($path); - if ( ! in_array(mb_strtolower($fileinfo['extension']), $ext)) - { - unlink($path); - } - } - else - { - $files = scandir($path); - foreach ($files as $file) - { - check_files_extensions_on_path(trim($path, '/') . "/" . $file, $ext); - } - } -} - -/** -* Get file extension present in PHAR file -* -* @param string $phar -* @param array $files -* @param string $basepath -* @param string $ext -*/ -function check_files_extensions_on_phar($phar, &$files, $basepath, $ext) -{ - foreach ($phar as $file) - { - if ($file->isFile()) - { - if (in_array(mb_strtolower($file->getExtension()), $ext)) - { - $files[] = $basepath . $file->getFileName(); - } - } - else - { - if ($file->isDir()) - { - $iterator = new DirectoryIterator($file); - check_files_extensions_on_phar($iterator, $files, $basepath . $file->getFileName() . '/', $ext); - } - } - } -} - -/** -* Cleanup input -* -* @param string $str -* -* @return string -*/ -function fix_get_params($str) -{ - return strip_tags(preg_replace("/[^a-zA-Z0-9\.\[\]_| -]/", '', $str)); -} - -/** -* Cleanup filename -* -* @param string $str -* @param bool $transliteration -* @param bool $convert_spaces -* @param string $replace_with -* @param bool $is_folder -* -* @return string -*/ -function fix_filename($str, $config, $is_folder = false) -{ - if ($config['convert_spaces']) - { - $str = str_replace(' ', $config['replace_with'], $str); - } - - if ($config['transliteration']) - { - if (!mb_detect_encoding($str, 'UTF-8', true)) - { - $str = utf8_encode($str); - } - if (function_exists('transliterator_transliterate')) - { - $str = transliterator_transliterate('Any-Latin; Latin-ASCII', $str); - } - else - { - $str = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $str); - } - - $str = preg_replace("/[^a-zA-Z0-9\.\[\]_| -]/", '', $str); - } - - $str = str_replace(array( '"', "'", "/", "\\" ), "", $str); - $str = strip_tags($str); - - // Empty or incorrectly transliterated filename. - // Here is a point: a good file UNKNOWN_LANGUAGE.jpg could become .jpg in previous code. - // So we add that default 'file' name to fix that issue. - if (strpos($str, '.') === 0 && $is_folder === false) - { - $str = 'file' . $str; - } - - return trim($str); -} - -/** -* Cleanup directory name -* -* @param string $str -* -* @return string -*/ -function fix_dirname($str) -{ - return str_replace('~', ' ', dirname(str_replace(' ', '~', $str))); -} - -/** -* Correct strtoupper handling -* -* @param string $str -* -* @return string -*/ -function fix_strtoupper($str) -{ - if (function_exists('mb_strtoupper')) - { - return mb_strtoupper($str); - } - else - { - return strtoupper($str); - } -} - -/** -* Correct strtolower handling -* -* @param string $str -* -* @return string -*/ -function fix_strtolower($str) -{ - if (function_exists('mb_strtoupper')) - { - return mb_strtolower($str); - } - else - { - return strtolower($str); - } -} - -function fix_path($path, $config) -{ - $info = pathinfo($path); - $tmp_path = $info['dirname']; - $str = fix_filename($info['filename'], $config); - if ($tmp_path != "") - { - return $tmp_path . DIRECTORY_SEPARATOR . $str; - } - else - { - return $str; - } -} - -/** -* @param $current_path -* @param $fld -* -* @return bool -*/ -function config_loading($current_path, $fld) -{ - if (file_exists($current_path . $fld . ".config")) - { - require_once($current_path . $fld . ".config"); - - return true; - } - echo "!!!!" . $parent = fix_dirname($fld); - if ($parent != "." && ! empty($parent)) - { - config_loading($current_path, $parent); - } - - return false; -} - -/** -* Check if memory is enough to process image -* -* @param string $img -* @param int $max_breedte -* @param int $max_hoogte -* -* @return bool -*/ -function image_check_memory_usage($img, $max_breedte, $max_hoogte) -{ - if (file_exists($img)) - { - $K64 = 65536; // number of bytes in 64K - $memory_usage = memory_get_usage(); - if(ini_get('memory_limit') > 0 ){ - $memory_limit = abs(intval(str_replace('M', '', ini_get('memory_limit')) * 1024 * 1024)); - $image_properties = getimagesize($img); - $image_width = $image_properties[0]; - $image_height = $image_properties[1]; - if (isset($image_properties['bits'])) - $image_bits = $image_properties['bits']; - else - $image_bits = 0; - $image_memory_usage = $K64 + ($image_width * $image_height * ($image_bits >> 3) * 2); - $thumb_memory_usage = $K64 + ($max_breedte * $max_hoogte * ($image_bits >> 3) * 2); - $memory_needed = abs(intval($memory_usage + $image_memory_usage + $thumb_memory_usage)); - - if ($memory_needed > $memory_limit) - { - return false; - } - } - return true; - } - return false; -} - -/** -* Check is string is ended with needle -* -* @param string $haystack -* @param string $needle -* -* @return bool -*/ -function endsWith($haystack, $needle) -{ - return $needle === "" || substr($haystack, -strlen($needle)) === $needle; -} - -/** -* TODO REFACTOR THIS! -* -* @param $targetPath -* @param $targetFile -* @param $name -* @param $current_path -* @param $config -* relative_image_creation -* relative_path_from_current_pos -* relative_image_creation_name_to_prepend -* relative_image_creation_name_to_append -* relative_image_creation_width -* relative_image_creation_height -* relative_image_creation_option -* fixed_image_creation -* fixed_path_from_filemanager -* fixed_image_creation_name_to_prepend -* fixed_image_creation_to_append -* fixed_image_creation_width -* fixed_image_creation_height -* fixed_image_creation_option -* -* @return bool -*/ -function new_thumbnails_creation($targetPath, $targetFile, $name, $current_path, $config) -{ - //create relative thumbs - $all_ok = true; - - $info = pathinfo($name); - $info['filename'] = fix_filename($info['filename'],$config); - if ($config['relative_image_creation']) - { - foreach ($config['relative_path_from_current_pos'] as $k => $path) - { - if ($path != "" && $path[ strlen($path) - 1 ] != "/") - { - $path .= "/"; - } - if ( ! file_exists($targetPath . $path)) - { - create_folder($targetPath . $path, false); - } - if ( ! endsWith($targetPath, $path)) - { - if ( ! create_img($targetFile, $targetPath . $path . $config['relative_image_creation_name_to_prepend'][ $k ] . $info['filename'] . $config['relative_image_creation_name_to_append'][ $k ] . "." . $info['extension'], $config['relative_image_creation_width'][ $k ], $config['relative_image_creation_height'][ $k ], $config['relative_image_creation_option'][ $k ])) - { - $all_ok = false; - } - } - } - } - - //create fixed thumbs - if ($config['fixed_image_creation']) - { - foreach ($config['fixed_path_from_filemanager'] as $k => $path) - { - if ($path != "" && $path[ strlen($path) - 1 ] != "/") - { - $path .= "/"; - } - $base_dir = $path . substr_replace($targetPath, '', 0, strlen($current_path)); - if ( ! file_exists($base_dir)) - { - create_folder($base_dir, false); - } - if ( ! create_img($targetFile, $base_dir . $config['fixed_image_creation_name_to_prepend'][ $k ] . $info['filename'] . $config['fixed_image_creation_to_append'][ $k ] . "." . $info['extension'], $config['fixed_image_creation_width'][ $k ], $config['fixed_image_creation_height'][ $k ], $config['fixed_image_creation_option'][ $k ])) - { - $all_ok = false; - } - } - } - - return $all_ok; -} - - -/** -* Get a remote file, using whichever mechanism is enabled -* -* @param string $url -* -* @return bool|mixed|string -*/ -function get_file_by_url($url) -{ - if (ini_get('allow_url_fopen')) - { - $arrContextOptions=array( - "ssl"=>array( - "verify_peer"=>false, - "verify_peer_name"=>false, - ), - ); - return file_get_contents($url, false, stream_context_create($arrContextOptions)); - } - if ( ! function_exists('curl_version')) - { - return false; - } - - $ch = curl_init(); - - curl_setopt($ch, CURLOPT_HEADER, 0); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_URL, $url); - - $data = curl_exec($ch); - curl_close($ch); - - return $data; -} - -/** -* test for dir/file writability properly -* -* @param string $dir -* -* @return bool -*/ -function is_really_writable($dir) -{ - $dir = rtrim($dir, '/'); - // linux, safe off - if (DIRECTORY_SEPARATOR == '/' && @ini_get("safe_mode") == false) - { - return is_writable($dir); - } - - // Windows, safe ON. (have to write a file :S) - if (is_dir($dir)) - { - $dir = $dir . '/' . md5(mt_rand(1, 1000) . mt_rand(1, 1000)); - - if (($fp = @fopen($dir, 'ab')) === false) - { - return false; - } - - fclose($fp); - @chmod($dir, 0755); - @unlink($dir); - - return true; - } - elseif ( ! is_file($dir) || ($fp = @fopen($dir, 'ab')) === false) - { - return false; - } - - fclose($fp); - - return true; -} - -/** -* Check if a function is callable. -* Some servers disable copy,rename etc. -* -* @parm string $name -* -* @return bool -*/ -function is_function_callable($name) -{ - if (function_exists($name) === false) - { - return false; - } - $disabled = explode(',', ini_get('disable_functions')); - - return ! in_array($name, $disabled); -} - -/** -* recursivly copies everything -* -* @param string $source -* @param string $destination -* @param bool $is_rec -*/ -function rcopy($source, $destination, $is_rec = false) -{ - if (is_dir($source)) - { - if ($is_rec === false) - { - $pinfo = pathinfo($source); - $destination = rtrim($destination, '/') . DIRECTORY_SEPARATOR . $pinfo['basename']; - } - if (is_dir($destination) === false) - { - mkdir($destination, 0755, true); - } - - $files = scandir($source); - foreach ($files as $file) - { - if ($file != "." && $file != "..") - { - rcopy($source . DIRECTORY_SEPARATOR . $file, rtrim($destination, '/') . DIRECTORY_SEPARATOR . $file, true); - } - } - } - else - { - if (file_exists($source)) - { - if (is_dir($destination) === true) - { - $pinfo = pathinfo($source); - $dest2 = rtrim($destination, '/') . DIRECTORY_SEPARATOR . $pinfo['basename']; - } - else - { - $dest2 = $destination; - } - - copy($source, $dest2); - } - } -} - - - - -/** -* recursivly renames everything -* -* I know copy and rename could be done with just one function -* but i split the 2 because sometimes rename fails on windows -* Need more feedback from users and refactor if needed -* -* @param string $source -* @param string $destination -* @param bool $is_rec -*/ -function rrename($source, $destination, $is_rec = false) -{ - if (is_dir($source)) - { - if ($is_rec === false) - { - $pinfo = pathinfo($source); - $destination = rtrim($destination, '/') . DIRECTORY_SEPARATOR . $pinfo['basename']; - } - if (is_dir($destination) === false) - { - mkdir($destination, 0755, true); - } - - $files = scandir($source); - foreach ($files as $file) - { - if ($file != "." && $file != "..") - { - rrename($source . DIRECTORY_SEPARATOR . $file, rtrim($destination, '/') . DIRECTORY_SEPARATOR . $file, true); - } - } - } - else - { - if (file_exists($source)) - { - if (is_dir($destination) === true) - { - $pinfo = pathinfo($source); - $dest2 = rtrim($destination, '/') . DIRECTORY_SEPARATOR . $pinfo['basename']; - } - else - { - $dest2 = $destination; - } - - rename($source, $dest2); - } - } -} - -// On windows rename leaves folders sometime -// This will clear leftover folders -// After more feedback will merge it with rrename -function rrename_after_cleaner($source) -{ - $files = scandir($source); - - foreach ($files as $file) - { - if ($file != "." && $file != "..") - { - if (is_dir($source . DIRECTORY_SEPARATOR . $file)) - { - rrename_after_cleaner($source . DIRECTORY_SEPARATOR . $file); - } - else - { - unlink($source . DIRECTORY_SEPARATOR . $file); - } - } - } - - return rmdir($source); -} - -/** -* Recursive chmod -* @param string $source -* @param int $mode -* @param string $rec_option -* @param bool $is_rec -*/ -function rchmod($source, $mode, $rec_option = "none", $is_rec = false) -{ - if ($rec_option == "none") - { - chmod($source, $mode); - } - else - { - if ($is_rec === false) - { - chmod($source, $mode); - } - - $files = scandir($source); - - foreach ($files as $file) - { - if ($file != "." && $file != "..") - { - if (is_dir($source . DIRECTORY_SEPARATOR . $file)) - { - if ($rec_option == "folders" || $rec_option == "both") - { - chmod($source . DIRECTORY_SEPARATOR . $file, $mode); - } - rchmod($source . DIRECTORY_SEPARATOR . $file, $mode, $rec_option, true); - } - else - { - if ($rec_option == "files" || $rec_option == "both") - { - chmod($source . DIRECTORY_SEPARATOR . $file, $mode); - } - } - } - } - } -} - -/** -* @param string $input -* @param bool $trace -* @param bool $halt -*/ -function debugger($input, $trace = false, $halt = false) -{ - ob_start(); - - echo "
----- DEBUG DUMP -----"; - echo "

";
-	var_dump($input);
-	echo "
"; - - if ($trace) - { - if (is_php('5.3.6')) - { - $debug = debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS); - } - else - { - $debug = debug_backtrace(false); - } - - echo "
-----STACK TRACE-----"; - echo "
";
-		var_dump($debug);
-		echo "
"; - } - - echo ""; - echo "---------------------------
"; - - $ret = ob_get_contents(); - ob_end_clean(); - - echo $ret; - - if ($halt == true) - { - exit(); - } -} - -/** -* @param string $version -* -* @return bool -*/ -function is_php($version = '5.0.0') -{ - static $phpVer; - $version = (string) $version; - - if ( ! isset($phpVer[ $version ])) - { - $phpVer[ $version ] = (version_compare(PHP_VERSION, $version) < 0) ? false : true; - } - - return $phpVer[ $version ]; -} - -/** -* Return the caller location if set in config.php -* @param string $version -* -* @return bool -*/ -function AddErrorLocation() -{ - if (defined('DEBUG_ERROR_MESSAGE') and DEBUG_ERROR_MESSAGE) { - $pile=debug_backtrace(); - return " (@".$pile[0]["file"]."#".$pile[0]["line"].")"; - } - return ""; -} -?> diff --git a/libraries/filemanager-9.12.1/js/cors/jquery.postmessage-transport.js b/libraries/filemanager-9.12.1/js/cors/jquery.postmessage-transport.js deleted file mode 100644 index 2a0c38c..0000000 --- a/libraries/filemanager-9.12.1/js/cors/jquery.postmessage-transport.js +++ /dev/null @@ -1,126 +0,0 @@ -/* - * jQuery postMessage Transport Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require, window, document */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery')); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - - var counter = 0, - names = [ - 'accepts', - 'cache', - 'contents', - 'contentType', - 'crossDomain', - 'data', - 'dataType', - 'headers', - 'ifModified', - 'mimeType', - 'password', - 'processData', - 'timeout', - 'traditional', - 'type', - 'url', - 'username' - ], - convert = function (p) { - return p; - }; - - $.ajaxSetup({ - converters: { - 'postmessage text': convert, - 'postmessage json': convert, - 'postmessage html': convert - } - }); - - $.ajaxTransport('postmessage', function (options) { - if (options.postMessage && window.postMessage) { - var iframe, - loc = $('').prop('href', options.postMessage)[0], - target = loc.protocol + '//' + loc.host, - xhrUpload = options.xhr().upload; - // IE always includes the port for the host property of a link - // element, but not in the location.host or origin property for the - // default http port 80 and https port 443, so we strip it: - if (/^(http:\/\/.+:80)|(https:\/\/.+:443)$/.test(target)) { - target = target.replace(/:(80|443)$/, ''); - } - return { - send: function (_, completeCallback) { - counter += 1; - var message = { - id: 'postmessage-transport-' + counter - }, - eventName = 'message.' + message.id; - iframe = $( - '' - ).bind('load', function () { - $.each(names, function (i, name) { - message[name] = options[name]; - }); - message.dataType = message.dataType.replace('postmessage ', ''); - $(window).bind(eventName, function (e) { - e = e.originalEvent; - var data = e.data, - ev; - if (e.origin === target && data.id === message.id) { - if (data.type === 'progress') { - ev = document.createEvent('Event'); - ev.initEvent(data.type, false, true); - $.extend(ev, data); - xhrUpload.dispatchEvent(ev); - } else { - completeCallback( - data.status, - data.statusText, - {postmessage: data.result}, - data.headers - ); - iframe.remove(); - $(window).unbind(eventName); - } - } - }); - iframe[0].contentWindow.postMessage( - message, - target - ); - }).appendTo(document.body); - }, - abort: function () { - if (iframe) { - iframe.remove(); - } - } - }; - } - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/cors/jquery.xdr-transport.js b/libraries/filemanager-9.12.1/js/cors/jquery.xdr-transport.js deleted file mode 100644 index a4e2699..0000000 --- a/libraries/filemanager-9.12.1/js/cors/jquery.xdr-transport.js +++ /dev/null @@ -1,89 +0,0 @@ -/* - * jQuery XDomainRequest Transport Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - * - * Based on Julian Aubourg's ajaxHooks xdr.js: - * https://github.com/jaubourg/ajaxHooks/ - */ - -/* global define, require, window, XDomainRequest */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery')); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - if (window.XDomainRequest && !$.support.cors) { - $.ajaxTransport(function (s) { - if (s.crossDomain && s.async) { - if (s.timeout) { - s.xdrTimeout = s.timeout; - delete s.timeout; - } - var xdr; - return { - send: function (headers, completeCallback) { - var addParamChar = /\?/.test(s.url) ? '&' : '?'; - function callback(status, statusText, responses, responseHeaders) { - xdr.onload = xdr.onerror = xdr.ontimeout = $.noop; - xdr = null; - completeCallback(status, statusText, responses, responseHeaders); - } - xdr = new XDomainRequest(); - // XDomainRequest only supports GET and POST: - if (s.type === 'DELETE') { - s.url = s.url + addParamChar + '_method=DELETE'; - s.type = 'POST'; - } else if (s.type === 'PUT') { - s.url = s.url + addParamChar + '_method=PUT'; - s.type = 'POST'; - } else if (s.type === 'PATCH') { - s.url = s.url + addParamChar + '_method=PATCH'; - s.type = 'POST'; - } - xdr.open(s.type, s.url); - xdr.onload = function () { - callback( - 200, - 'OK', - {text: xdr.responseText}, - 'Content-Type: ' + xdr.contentType - ); - }; - xdr.onerror = function () { - callback(404, 'Not Found'); - }; - if (s.xdrTimeout) { - xdr.ontimeout = function () { - callback(0, 'timeout'); - }; - xdr.timeout = s.xdrTimeout; - } - xdr.send((s.hasContent && s.data) || null); - }, - abort: function () { - if (xdr) { - xdr.onerror = $.noop(); - xdr.abort(); - } - } - }; - } - }); - } -})); diff --git a/libraries/filemanager-9.12.1/js/include.js b/libraries/filemanager-9.12.1/js/include.js deleted file mode 100644 index 7919d56..0000000 --- a/libraries/filemanager-9.12.1/js/include.js +++ /dev/null @@ -1,2 +0,0 @@ -var encodeURL,show_animation,hide_animation,apply,apply_none,apply_img,apply_any,apply_video,apply_link,apply_file_rename,apply_file_duplicate,apply_folder_rename;!function(e,a,r){"use strict";function t(e){show_animation();var a=new Image;a.src=e,jQuery(a).on("load",function(){hide_animation()})}function n(){jQuery("#textfile_create_area").parent().parent().remove(),e.ajax({type:"GET",url:"ajax_calls.php?action=new_file_form"}).done(function(a){bootbox.dialog(a,[{label:jQuery("#cancel").val(),"class":"btn"},{label:jQuery("#ok").val(),"class":"btn-inverse",callback:function(){var a=jQuery("#create_text_file_name").val()+jQuery("#create_text_file_extension").val(),r=jQuery("#textfile_create_area").val();if(null!==a){a=_(a);var t=jQuery("#sub_folder").val()+jQuery("#fldr_value").val();e.ajax({type:"POST",url:"execute.php?action=create_file",data:{path:t,name:a,new_content:r}}).done(function(e){""!=e&&bootbox.alert(e,function(){setTimeout(function(){window.location.href=jQuery("#refresh").attr("href")+"&"+(new Date).getTime()},500)})})}}}],{header:jQuery("#lang_new_file").val()})})}function i(a){jQuery("#textfile_edit_area").parent().parent().remove();var r=a.find(".rename-file-paths").attr("data-path");e.ajax({type:"POST",url:"ajax_calls.php?action=get_file&sub_action=edit&preview_mode=text",data:{path:r}}).done(function(t){bootbox.dialog(t,[{label:jQuery("#cancel").val(),"class":"btn"},{label:jQuery("#ok").val(),"class":"btn-inverse",callback:function(){var a=jQuery("#textfile_edit_area").val();e.ajax({type:"POST",url:"execute.php?action=save_text_file",data:{path:r,new_content:a}}).done(function(e){""!=e&&bootbox.alert(e)})}}],{header:a.find(".name_download").val()})})}function l(){e.ajax({type:"POST",url:"ajax_calls.php?action=get_lang",data:{}}).done(function(a){bootbox.dialog(a,[{label:jQuery("#cancel").val(),"class":"btn"},{label:jQuery("#ok").val(),"class":"btn-inverse",callback:function(){var a=jQuery("#new_lang_select").val();e.ajax({type:"POST",url:"ajax_calls.php?action=change_lang",data:{choosen_lang:a}}).done(function(e){""!=e?bootbox.alert(e):setTimeout(function(){window.location.href=jQuery("#refresh").attr("href").replace(/lang=[\w]*&/i,"lang="+a+"&")+"&"+(new Date).getTime()},100)})}}],{header:jQuery("#lang_lang_change").val()})})}function o(a){jQuery("#files_permission_start").parent().parent().remove();var r=a.find(".rename-file-paths"),t=r.attr("data-path"),n=r.attr("data-permissions"),i=r.attr("data-folder");e.ajax({type:"POST",url:"ajax_calls.php?action=chmod",data:{path:t,permissions:n,folder:i}}).done(function(a){bootbox.dialog(a,[{label:jQuery("#cancel").val(),"class":"btn"},{label:jQuery("#ok").val(),"class":"btn-inverse",callback:function(){var a="-";a+=jQuery("#u_4").is(":checked")?"r":"-",a+=jQuery("#u_2").is(":checked")?"w":"-",a+=jQuery("#u_1").is(":checked")?"x":"-",a+=jQuery("#g_4").is(":checked")?"r":"-",a+=jQuery("#g_2").is(":checked")?"w":"-",a+=jQuery("#g_1").is(":checked")?"x":"-",a+=jQuery("#a_4").is(":checked")?"r":"-",a+=jQuery("#a_2").is(":checked")?"w":"-",a+=jQuery("#a_1").is(":checked")?"x":"-";var n=jQuery("#chmod_form #chmod_value").val();if(""!=n&&"undefined"!=typeof n){var l=jQuery("#chmod_form input[name=apply_recursive]:checked").val();""!=l&&"undefined"!=typeof l||(l="none"),e.ajax({type:"POST",url:"execute.php?action=chmod",data:{path:t,new_mode:n,is_recursive:l,folder:i}}).done(function(e){""!=e?bootbox.alert(e):r.attr("data-permissions",a)})}}}],{header:jQuery("#lang_file_permission").val()}),setTimeout(function(){u(!1)},100)})}function u(a){var r=[];if(r.user=0,r.group=0,r.all=0,"undefined"!=typeof a&&1==a){var t=jQuery("#chmod_form #chmod_value").val();r.user=t.substr(0,1),r.group=t.substr(1,1),r.all=t.substr(2,1),e.each(r,function(a){(""==r[a]||0==e.isNumeric(r[a])||parseInt(r[a])<0||parseInt(r[a])>7)&&(r[a]="0")}),jQuery("#chmod_form input:checkbox").each(function(){var e=jQuery(this).attr("data-group"),a=jQuery(this).attr("data-value");c(r[e],a)?jQuery(this).prop("checked",!0):jQuery(this).prop("checked",!1)})}else jQuery("#chmod_form input:checkbox:checked").each(function(){var e=jQuery(this).attr("data-group"),a=jQuery(this).attr("data-value");r[e]=parseInt(r[e])+parseInt(a)}),jQuery("#chmod_form #chmod_value").val(r.user.toString()+r.group.toString()+r.all.toString())}function c(a,r){var t=[];return t[1]=[1,3,5,7],t[2]=[2,3,6,7],t[4]=[4,5,6,7],a=parseInt(a),r=parseInt(r),e.inArray(a,t[r])!=-1}function s(){bootbox.confirm(jQuery("#lang_clear_clipboard_confirm").val(),jQuery("#cancel").val(),jQuery("#ok").val(),function(a){1==a&&e.ajax({type:"POST",url:"ajax_calls.php?action=clear_clipboard",data:{}}).done(function(e){""!=e?bootbox.alert(e):jQuery("#clipboard").val("0"),y(!1)})})}function d(a,r){if("copy"==r||"cut"==r){var t;t=a.hasClass("directory")?a.find(".rename-file-paths").attr("data-path"):a.find(".rename-file-paths").attr("data-path"),e.ajax({type:"POST",url:"ajax_calls.php?action=copy_cut",data:{path:t,sub_action:r}}).done(function(e){""!=e?bootbox.alert(e):(jQuery("#clipboard").val("1"),y(!0))})}}function f(a){bootbox.confirm(jQuery("#lang_paste_confirm").val(),jQuery("#cancel").val(),jQuery("#ok").val(),function(r){if(1==r){var t;t="undefined"!=typeof a?a.find(".rename-folder").attr("data-path"):jQuery("#sub_folder").val()+jQuery("#fldr_value").val(),e.ajax({type:"POST",url:"execute.php?action=paste_clipboard",data:{path:t}}).done(function(e){""!=e?bootbox.alert(e):(jQuery("#clipboard").val("0"),y(!1),setTimeout(function(){window.location.href=jQuery("#refresh").attr("href")+"&"+(new Date).getTime()},300))})}})}function p(a,r){var t;t=a.hasClass("directory")?a.find(".rename-folder"):a.find(".rename-file");var n=t.attr("data-path");a.parent().hide(100),e.ajax({type:"POST",url:"ajax_calls.php?action=copy_cut",data:{path:n,sub_action:"cut"}}).done(function(t){if(""!=t)bootbox.alert(t);else{var n;n="undefined"!=typeof r?r.hasClass("back-directory")?r.find(".path").val():r.find(".rename-folder").attr("data-path"):jQuery("#sub_folder").val()+jQuery("#fldr_value").val(),e.ajax({type:"POST",url:"execute.php?action=paste_clipboard",data:{path:n}}).done(function(e){""!=e?(bootbox.alert(e),a.parent().show(100)):(jQuery("#clipboard").val("0"),y(!1),a.parent().remove())})}}).error(function(){a.parent().show(100)})}function y(e){1==e?jQuery(".paste-here-btn, .clear-clipboard-btn").removeClass("disabled"):jQuery(".paste-here-btn, .clear-clipboard-btn").addClass("disabled")}function v(e){var r=jQuery(".breadcrumb").width()+e,t=jQuery("#view"),n=jQuery("#help");if(t.val()>0){if(1==t.val())jQuery("ul.grid li, ul.grid figure").css("width","100%");else{var i=Math.floor(r/380);0==i&&(i=1,jQuery("h4").css("font-size",12)),r=Math.floor(r/i-3),jQuery("ul.grid li, ul.grid figure").css("width",r)}n.hide()}else a.touch&&n.show()}function m(){var e=jQuery(this);0==jQuery("#view").val()&&(1==e.attr("toggle")?(e.attr("toggle",0),e.animate({top:"0px"},{queue:!1,duration:300})):(e.attr("toggle",1),e.animate({top:"-30px"},{queue:!1,duration:300})))}function j(e){var a=new RegExp("(?:[?&]|&)"+e+"=([^&]+)","i"),r=window.location.search.match(a);return r&&r.length>1?r[1]:null}function Q(){1==jQuery("#popup").val()?window.close():("function"==typeof parent.jQuery(".modal:has(iframe)").modal&&parent.jQuery(".modal:has(iframe)").modal("hide"),"undefined"!=typeof parent.jQuery&&parent.jQuery?"object"==typeof parent.jQuery.fancybox?parent.jQuery.fancybox.getInstance().close():"function"==typeof parent.jQuery.fancybox&&parent.jQuery.fancybox.close():"function"==typeof parent.$.fancybox&&parent.$.fancybox.close())}function h(e){for(var e,a=[/[\300-\306]/g,/[\340-\346]/g,/[\310-\313]/g,/[\350-\353]/g,/[\314-\317]/g,/[\354-\357]/g,/[\322-\330]/g,/[\362-\370]/g,/[\331-\334]/g,/[\371-\374]/g,/[\321]/g,/[\361]/g,/[\307]/g,/[\347]/g],r=["A","a","E","e","I","i","O","o","U","u","N","n","C","c"],t=0;t]+(>|$)/g,""),e.trim(a)):null}function g(a,r,t,n,i){null!==t&&(t=_(t),e.ajax({type:"POST",url:"execute.php?action="+a,data:{path:r,name:t.replace("/","")}}).done(function(e){return""!=e?(bootbox.alert(e),!1):(""!=i&&window[i](n,t),!0)}))}function b(a,r){var t=jQuery("li.dir","ul.grid").filter(":visible"),n=jQuery("li.file","ul.grid").filter(":visible"),i=[],l=[],o=[],u=[];t.each(function(){var a=jQuery(this),t=a.find(r).val();if(e.isNumeric(t))for(t=parseFloat(t);"undefined"!=typeof i[t]&&i[t];)t=parseFloat(parseFloat(t)+parseFloat(.001));else t=t+"a"+a.find("h4 a").attr("data-file");i[t]=a.html(),l.push(t)}),n.each(function(){var a=jQuery(this),t=a.find(r).val();if(e.isNumeric(t))for(t=parseFloat(t);"undefined"!=typeof o[t]&&o[t];)t=parseFloat(parseFloat(t)+parseFloat(.001));else t=t+"a"+a.find("h4 a").attr("data-file");o[t]=a.html(),u.push(t)}),e.isNumeric(l[0])?l.sort(function(e,a){return parseFloat(e)-parseFloat(a)}):l.sort(),e.isNumeric(u[0])?u.sort(function(e,a){return parseFloat(e)-parseFloat(a)}):u.sort(),a&&(l.reverse(),u.reverse()),t.each(function(e){var a=jQuery(this);a.html(i[l[e]])}),n.each(function(e){var a=jQuery(this);a.html(o[u[e]])})}function w(e,a){return featherEditor.launch({image:e,url:a}),!1}function x(){T.update()}var k="9.12.1",C=!0,T=null,I=null,S=function(){var e=0;return function(a,r){clearTimeout(e),e=setTimeout(a,r)}}(),U=function(e){if(1==jQuery("#ftp").val())var a=jQuery("#ftp_base_url").val()+jQuery("#upload_dir").val()+jQuery("#fldr_value").val();else var a=jQuery("#base_url").val()+jQuery("#cur_dir").val();var r=e.find("a.link").attr("data-file");return""!=r&&null!=r&&(a+=r),r=e.find("h4 a.folder-link").attr("data-file"),""!=r&&null!=r&&(a+=r),a},R={contextActions:{copy_url:function(e){var a=U(e);bootbox.alert('URL:
")},unzip:function(a){var r=jQuery("#sub_folder").val()+jQuery("#fldr_value").val()+a.find("a.link").attr("data-file");show_animation(),e.ajax({type:"POST",url:"ajax_calls.php?action=extract",data:{path:r}}).done(function(e){hide_animation(),""!=e?bootbox.alert(e):window.location.href=jQuery("#refresh").attr("href")+"&"+(new Date).getTime()})},edit_img:function(e){var a=e.attr("data-name");if(1==jQuery("#ftp").val())var r=jQuery("#ftp_base_url").val()+jQuery("#upload_dir").val()+jQuery("#fldr_value").val()+a;else var r=jQuery("#base_url").val()+jQuery("#cur_dir").val()+a;var t=jQuery("#aviary_img");t.attr("data-name",a),show_animation(),t.attr("src",r).load(w(t.attr("id"),r))},duplicate:function(e){var a=e.find("h4").text().trim();bootbox.prompt(jQuery("#lang_duplicate").val(),jQuery("#cancel").val(),jQuery("#ok").val(),function(r){if(null!==r&&(r=_(r),r!=a)){var t=e.find(".rename-file");g("duplicate_file",t.attr("data-path"),r,t,"apply_file_duplicate")}},a)},select:function(e){var a,r=U(e),t=jQuery("#field_id").val(),n=jQuery("#return_relative_url").val();if(1==n&&(r=r.replace(jQuery("#base_url").val(),""),r=r.replace(jQuery("#cur_dir").val(),"")),a=1==jQuery("#popup").val()?window.opener:window.parent,""!=t)if(1==jQuery("#crossdomain").val())a.postMessage({sender:"responsivefilemanager",url:r,field_id:t},"*");else{var i=jQuery("#"+t,a.document);i.val(r).trigger("change"),"function"==typeof a.responsive_filemanager_callback&&a.responsive_filemanager_callback(t),Q()}else apply_any(r)},copy:function(e){d(e,"copy")},cut:function(e){d(e,"cut")},paste:function(){f()},chmod:function(e){o(e)},edit_text_file:function(e){i(e)}},makeContextMenu:function(){var a=this;e.contextMenu({selector:"figure:not(.back-directory), .list-view2 figure:not(.back-directory)",autoHide:!0,build:function(e){e.addClass("selected");var t={callback:function(r,t){a.contextActions[r](e)},items:{}};return(e.find(".img-precontainer-mini .filetype").hasClass("png")||e.find(".img-precontainer-mini .filetype").hasClass("jpg")||e.find(".img-precontainer-mini .filetype").hasClass("jpeg"))&&r&&(t.items.edit_img={name:jQuery("#lang_edit_image").val(),icon:"edit_img",disabled:!1}),e.hasClass("directory")&&0!=jQuery("#type_param").val()&&(t.items.select={name:jQuery("#lang_select").val(),icon:"",disabled:!1}),t.items.copy_url={name:jQuery("#lang_show_url").val(),icon:"url",disabled:!1},(e.find(".img-precontainer-mini .filetype").hasClass("zip")||e.find(".img-precontainer-mini .filetype").hasClass("tar")||e.find(".img-precontainer-mini .filetype").hasClass("gz"))&&(t.items.unzip={name:jQuery("#lang_extract").val(),icon:"extract",disabled:!1}),e.find(".img-precontainer-mini .filetype").hasClass("edit-text-file-allowed")&&(t.items.edit_text_file={name:jQuery("#lang_edit_file").val(),icon:"edit",disabled:!1}),e.hasClass("directory")||1!=jQuery("#duplicate").val()||(t.items.duplicate={name:jQuery("#lang_duplicate").val(),icon:"duplicate",disabled:!1}),e.hasClass("directory")||1!=jQuery("#copy_cut_files_allowed").val()?e.hasClass("directory")&&1==jQuery("#copy_cut_dirs_allowed").val()&&(t.items.copy={name:jQuery("#lang_copy").val(),icon:"copy",disabled:!1},t.items.cut={name:jQuery("#lang_cut").val(),icon:"cut",disabled:!1}):(t.items.copy={name:jQuery("#lang_copy").val(),icon:"copy",disabled:!1},t.items.cut={name:jQuery("#lang_cut").val(),icon:"cut",disabled:!1}),0==jQuery("#clipboard").val()||e.hasClass("directory")||(t.items.paste={name:jQuery("#lang_paste_here").val(),icon:"clipboard-apply",disabled:!1}),e.hasClass("directory")||1!=jQuery("#chmod_files_allowed").val()?e.hasClass("directory")&&1==jQuery("#chmod_dirs_allowed").val()&&(t.items.chmod={name:jQuery("#lang_file_permission").val(),icon:"key",disabled:!1}):t.items.chmod={name:jQuery("#lang_file_permission").val(),icon:"key",disabled:!1},t.items.sep="----",t.items.info={name:""+jQuery("#lang_file_info").val()+"",disabled:!0},t.items.name={name:e.attr("data-name"),icon:"label",disabled:!0},"img"==e.attr("data-type")&&(t.items.dimension={name:e.find(".img-dimension").html(),icon:"dimension",disabled:!0}),"true"!==jQuery("#show_folder_size").val()&&"true"!==jQuery("#show_folder_size").val()||(e.hasClass("directory")?t.items.size={name:e.find(".file-size").html()+" - "+e.find(".nfiles").val()+" "+jQuery("#lang_files").val()+" - "+e.find(".nfolders").val()+" "+jQuery("#lang_folders").val(),icon:"size",disabled:!0}:t.items.size={name:e.find(".file-size").html(),icon:"size",disabled:!0}),t.items.date={name:e.find(".file-date").html(),icon:"date",disabled:!0},t},events:{hide:function(){jQuery("figure").removeClass("selected")}}}),jQuery(document).on("contextmenu",function(e){if(!jQuery(e.target).is("figure"))return!1})},bindGridEvents:function(){function a(e){window[e.attr("data-function")](e.attr("data-file"),jQuery("#field_id").val())}var r=jQuery("ul.grid");r.on("click",".modalAV",function(a){var r=jQuery(this);a.preventDefault();var t=jQuery("#previewAV"),n=jQuery(".body-preview");t.removeData("modal"),t.modal({backdrop:"static",keyboard:!1}),r.hasClass("audio")?n.css("height","80px"):n.css("height","345px"),e.ajax({url:r.attr("data-url"),success:function(e){n.html(e)}})}),r.on("click",".file-preview-btn",function(a){var r=jQuery(this);a.preventDefault(),e.ajax({url:r.attr("data-url"),success:function(e){bootbox.modal(e," "+r.parent().parent().parent().find(".name").val())}})}),r.on("click",".preview",function(){var e=jQuery(this);return 0==e.hasClass("disabled")&&jQuery("#full-img").attr("src",decodeURIComponent(e.attr("data-url"))),!0}),r.on("click",".rename-file",function(){var a=jQuery(this),r=a.parent().parent().parent(),t=r.find("h4"),n=e.trim(t.text());bootbox.prompt(jQuery("#rename").val(),jQuery("#cancel").val(),jQuery("#ok").val(),function(e){null!==e&&(e=_(e),e!=n&&g("rename_file",a.attr("data-path"),e,r,"apply_file_rename"))},n)}),r.on("click",".rename-folder",function(){var a=jQuery(this),r=a.parent().parent().parent(),t=r.find("h4"),n=e.trim(t.text());bootbox.prompt(jQuery("#rename").val(),jQuery("#cancel").val(),jQuery("#ok").val(),function(e){null!==e&&(e=_(e).replace(".",""),e!=n&&g("rename_folder",a.attr("data-path"),e,r,"apply_folder_rename"))},n)}),r.on("click",".delete-file",function(){var e=jQuery(this);bootbox.confirm(e.attr("data-confirm"),jQuery("#cancel").val(),jQuery("#ok").val(),function(a){if(1==a){g("delete_file",e.attr("data-path"),"","","");var r=jQuery("#files_number");r.text(parseInt(r.text())-1),e.parent().parent().parent().parent().remove()}})}),r.on("click",".delete-folder",function(){var e=jQuery(this);bootbox.confirm(e.attr("data-confirm"),jQuery("#cancel").val(),jQuery("#ok").val(),function(a){if(1==a){g("delete_folder",e.attr("data-path"),"","","");var r=jQuery("#folders_number");r.text(parseInt(r.text())-1),e.parent().parent().parent().remove()}})}),jQuery("ul.grid").on("click",".link",function(){a(jQuery(this))}),jQuery("ul.grid").on("click","div.box",function(e){var r=jQuery(this).find(".link");if(0!==r.length)a(r);else{var t=jQuery(this).find(".folder-link");0!==t.length&&(document.location=jQuery(t).prop("href"))}})},makeFilters:function(a){jQuery("#filter-input").on("keyup",function(){jQuery(".filters label").removeClass("btn-inverse"),jQuery(".filters label").find("i").removeClass("icon-white"),jQuery("#ff-item-type-all").addClass("btn-inverse"),jQuery("#ff-item-type-all").find("i").addClass("icon-white");var r=_(jQuery(this).val()).toLowerCase();jQuery(this).val(r),a&&S(function(){jQuery("li","ul.grid ").each(function(){var e=jQuery(this);""!=r&&e.attr("data-name").toLowerCase().indexOf(r)==-1?e.hide(100):e.show(100)}),e.ajax({url:"ajax_calls.php?action=filter&type="+r}).done(function(e){""!=e&&bootbox.alert(e)}),S(function(){var e=0!=jQuery("#descending").val();b(e,"."+jQuery("#sort_by").val()),x()},500)},300)}).keypress(function(e){13==e.which&&jQuery("#filter").trigger("click")}),jQuery("#filter").on("click",function(){var e=_(jQuery("#filter-input").val()),a=jQuery("#current_url").val();a+=a.indexOf("?")>=0?"&":"?",window.location.href=a+"filter="+e})},makeUploader:function(){jQuery("#fileupload").fileupload({url:"upload.php",maxChunkSize:2097152}),jQuery("#fileupload").bind("fileuploaddrop",function(e,a){jQuery(".uploader").show(200)}),jQuery("#fileupload").bind("fileuploadsubmit",function(e,a){a.formData={fldr:jQuery("#sub_folder").val()+jQuery("#fldr_value").val()+a.files[0].relativePath}}),jQuery("#fileupload").addClass("fileupload-processing"),e.ajax({url:jQuery("#fileupload").fileupload("option","url"),dataType:"json",context:jQuery("#fileupload")[0]}).always(function(){jQuery(this).removeClass("fileupload-processing")}),jQuery(".upload-btn").on("click",function(){jQuery(".uploader").show(200)}),jQuery(".close-uploader").on("click",function(){jQuery(".uploader").hide(200),setTimeout(function(){window.location.href=jQuery("#refresh").attr("href")+"&"+(new Date).getTime()},420)})},uploadURL:function(){jQuery("#uploadURL").on("click",function(a){a.preventDefault();var r=jQuery("#url").val(),t=jQuery("#fldr_value").val();show_animation(),e.ajax({type:"POST",url:"upload.php",data:{fldr:t,url:r}}).done(function(e){hide_animation(),jQuery("#url").val("")}).fail(function(e){bootbox.alert(jQuery("#lang_error_upload").val()),hide_animation(),jQuery("#url").val("")})})},makeSort:function(a){jQuery("input[name=radio-sort]").on("click",function(){var e=jQuery(this).attr("data-item"),t=jQuery("#"+e),n=jQuery(".filters label");n.removeClass("btn-inverse"),n.find("i").removeClass("icon-white"),jQuery("#filter-input").val(""),t.addClass("btn-inverse"),t.find("i").addClass("icon-white"),"ff-item-type-all"==e?(a?jQuery(".grid li").show(300):window.location.href=jQuery("#current_url").val()+"&sort_by="+jQuery("#sort_by").val()+"&descending="+(r?1:0),"undefined"!=typeof Storage&&localStorage.setItem("sort","")):jQuery(this).is(":checked")&&(jQuery(".grid li").not("."+e).hide(300),jQuery(".grid li."+e).show(300),"undefined"!=typeof Storage&&localStorage.setItem("sort",e)),x()});var r=jQuery("#descending").val();jQuery(".sorter").on("click",function(){var t=jQuery(this);r=jQuery("#sort_by").val()!==t.attr("data-sort")||0==r,a?(e.ajax({url:"ajax_calls.php?action=sort&sort_by="+t.attr("data-sort")+"&descending="+(r?1:0)}),b(r,"."+t.attr("data-sort")),jQuery(" a.sorter").removeClass("descending").removeClass("ascending"),r?jQuery(".sort-"+t.attr("data-sort")).addClass("descending"):jQuery(".sort-"+t.attr("data-sort")).addClass("ascending"),jQuery("#sort_by").val(t.attr("data-sort")),jQuery("#descending").val(r?1:0),x()):window.location.href=jQuery("#current_url").val()+"&sort_by="+t.attr("data-sort")+"&descending="+(r?1:0)})}};jQuery(document).ready(function(){if(C&&R.makeContextMenu(),"undefined"!=typeof Storage&&1!=jQuery("#type_param").val()&&3!=jQuery("#type_param").val()){var r=localStorage.getItem("sort");if(r){var i=jQuery("#"+r);i.addClass("btn-inverse"),i.find("i").addClass("icon-white"),jQuery(".grid li").not("."+r).hide(300),jQuery(".grid li."+r).show(300)}}if(jQuery("#full-img").on("click",function(){jQuery("#previewLightbox").lightbox("hide")}),jQuery("body").on("click",function(){jQuery(".tip-right").tooltip("hide")}),R.bindGridEvents(),parseInt(jQuery("#file_number").val())>parseInt(jQuery("#file_number_limit_js").val()))var o=!1;else var o=!0;if(R.makeSort(o),R.makeFilters(o),R.uploadURL(),jQuery("#info").on("click",function(){bootbox.alert('

responsive filemanager

RESPONSIVE filemanager v.'+k+'
responsivefilemanager.com


Copyright © Tecrail - Alberto Peripolli. All rights reserved.


License
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial 3.0 Unported License.

')}),jQuery("#change_lang_btn").on("click",function(){l()}),R.makeUploader(),jQuery("body").on("keypress",function(e){var a=String.fromCharCode(e.which);if("'"==a||'"'==a||"\\"==a||"/"==a)return!1}),jQuery("ul.grid li figcaption").on("click",'a[data-toggle="lightbox"]',function(){t(decodeURIComponent(jQuery(this).attr("data-url")))}),jQuery(".create-file-btn").on("click",function(){n()}),jQuery(".new-folder").on("click",function(){bootbox.prompt(jQuery("#insert_folder_name").val(),jQuery("#cancel").val(),jQuery("#ok").val(),function(a){if(null!==a){a=_(a).replace(".","");var r=jQuery("#sub_folder").val()+jQuery("#fldr_value").val();e.ajax({type:"POST",url:"execute.php?action=create_folder",data:{path:r,name:a}}).done(function(e){setTimeout(function(){window.location.href=jQuery("#refresh").attr("href")+"&"+(new Date).getTime()},300)})}})}),jQuery(".view-controller button").on("click",function(){var a=jQuery(this);jQuery(".view-controller button").removeClass("btn-inverse"),jQuery(".view-controller i").removeClass("icon-white"),a.addClass("btn-inverse"),a.find("i").addClass("icon-white"),e.ajax({url:"ajax_calls.php?action=view&type="+a.attr("data-value")}).done(function(e){""!=e&&bootbox.alert(e)}),"undefined"!=typeof jQuery("ul.grid")[0]&&jQuery("ul.grid")[0]&&(jQuery("ul.grid")[0].className=jQuery("ul.grid")[0].className.replace(/\blist-view.*?\b/g,"")),"undefined"!=typeof jQuery(".sorter-container")[0]&&jQuery(".sorter-container")[0]&&(jQuery(".sorter-container")[0].className=jQuery(".sorter-container")[0].className.replace(/\blist-view.*?\b/g,""));var r=a.attr("data-value");jQuery("#view").val(r),jQuery("ul.grid").addClass("list-view"+r),jQuery(".sorter-container").addClass("list-view"+r),a.attr("data-value")>=1?v(14):(jQuery("ul.grid li").css("width",126),jQuery("ul.grid figure").css("width",122)),x()}),a.touch?(jQuery("#help").show(),jQuery(".box:not(.no-effect)").swipe({swipeLeft:m,swipeRight:m,threshold:30})):(jQuery(".tip").tooltip({placement:"bottom"}),jQuery(".tip-top").tooltip({placement:"top"}),jQuery(".tip-left").tooltip({placement:"left"}),jQuery(".tip-right").tooltip({placement:"right"}),jQuery("body").addClass("no-touch")),jQuery(".paste-here-btn").on("click",function(){0==jQuery(this).hasClass("disabled")&&f()}),jQuery(".clear-clipboard-btn").on("click",function(){0==jQuery(this).hasClass("disabled")&&s()}),!a.csstransforms){var c=jQuery("figure");c.on("mouseover",function(){0==jQuery("#view").val()&&jQuery("#main-item-container").hasClass("no-effect-slide")===!1&&jQuery(this).find(".box:not(.no-effect)").animate({top:"-26px"},{queue:!1,duration:300})}),c.on("mouseout",function(){0==jQuery("#view").val()&&jQuery(this).find(".box:not(.no-effect)").animate({top:"0px"},{queue:!1,duration:300})})}jQuery(window).resize(function(){v(28)}),v(14),y(1==jQuery("#clipboard").val()?!0:!1),jQuery("li.dir, li.file").draggable({distance:20,cursor:"move",helper:function(){jQuery(this).find("figure").find(".box").css("top","0px");var e=jQuery(this).clone().css("z-index",1e3).find(".box").css("box-shadow","none").css("-webkit-box-shadow","none").parent().parent();return jQuery(this).addClass("selected"),e},start:function(e,a){jQuery(a.helper).addClass("ui-draggable-helper"),0==jQuery("#view").val()&&jQuery("#main-item-container").addClass("no-effect-slide")},stop:function(){jQuery(this).removeClass("selected"),0==jQuery("#view").val()&&jQuery("#main-item-container").removeClass("no-effect-slide")}}),jQuery("li.dir,li.back").droppable({accept:"ul.grid li",activeClass:"ui-state-highlight",hoverClass:"ui-state-hover",drop:function(e,a){p(a.draggable.find("figure"),jQuery(this).find("figure"))}}),jQuery(document).on("keyup","#chmod_form #chmod_value",function(){u(!0)}),jQuery(document).on("change","#chmod_form input",function(){u(!1)}),jQuery(document).on("focusout","#chmod_form #chmod_value",function(){var e=jQuery("#chmod_form #chmod_value");null==e.val().match(/^[0-7]{3}$/)&&(e.val(e.attr("data-def-value")),u(!0))}),T=new LazyLoad,I=new Clipboard(".btn")}),encodeURL=function(e){for(var a=e.split("/"),r=3;r-1?(f=f+"?"+(new Date).getTime(),c=''+o+''):e.inArray(u,d)>-1?c='":e.inArray(u,s)>-1?("mp3"==u&&(u="mpeg"),c='"):c=''+o+"",1==jQuery("#crossdomain").val()?t.postMessage({sender:"responsivefilemanager",url:f,field_id:null,html:c},"*"):parent.tinymce.majorVersion<4?(parent.tinymce.activeEditor.execCommand("mceInsertContent",!1,c),parent.tinymce.activeEditor.windowManager.close(parent.tinymce.activeEditor.windowManager.params.mce_window_id)):(parent.tinymce.activeEditor.insertContent(c),parent.tinymce.activeEditor.windowManager.close())},apply_link=function(e,a){if(1==jQuery("#popup").val())var r=window.opener;else var r=window.parent;var t=jQuery("#callback").val(),n=jQuery("#cur_dir").val();n=n.replace("\\","/");var i=jQuery("#subdir").val();i=i.replace("\\","/");var l=jQuery("#base_url").val();if(1==jQuery("#ftp").val())var o=encodeURL(jQuery("#ftp_base_url").val()+jQuery("#upload_dir").val()+jQuery("#fldr_value").val()+e);else var u=jQuery("#return_relative_url").val(),o=encodeURL((1==u?i:l+n)+e);if(""!=a)if(1==jQuery("#crossdomain").val())r.postMessage({sender:"responsivefilemanager",url:o,field_id:a},"*");else{var c=jQuery("#"+a,r.document);c.val(o).trigger("change"),0==t?"function"==typeof r.responsive_filemanager_callback&&r.responsive_filemanager_callback(a):"function"==typeof r[t]&&r[t](a),Q()}else apply_any(o)},apply_img=function(e,a){var r;r=1==jQuery("#popup").val()?window.opener:window.parent;var t=jQuery("#callback").val(),n=jQuery("#cur_dir").val();n=n.replace("\\","/");var i=jQuery("#subdir").val();i=i.replace("\\","/");var l=jQuery("#base_url").val();if(1==jQuery("#ftp").val())var o=encodeURL(jQuery("#ftp_base_url").val()+jQuery("#upload_dir").val()+jQuery("#fldr_value").val()+e);else var u=jQuery("#return_relative_url").val(),o=encodeURL((1==u?i:l+n)+e);if(""!=a)if(1==jQuery("#crossdomain").val())r.postMessage({sender:"responsivefilemanager",url:o,field_id:a},"*");else{var c=jQuery("#"+a,r.document);c.val(o).trigger("change"),0==t?"function"==typeof r.responsive_filemanager_callback&&r.responsive_filemanager_callback(a):"function"==typeof r[t]&&r[t](a),Q()}else jQuery("#add_time_to_img").val()&&(o=o+"?"+(new Date).getTime()),apply_any(o)},apply_video=function(e,a){var r;r=1==jQuery("#popup").val()?window.opener:window.parent;var t=jQuery("#callback").val(),n=jQuery("#cur_dir").val();n=n.replace("\\","/");var i=jQuery("#subdir").val();i=i.replace("\\","/");var l=jQuery("#base_url").val();if(1==jQuery("#ftp").val())var o=encodeURL(jQuery("#ftp_base_url").val()+jQuery("#upload_dir").val()+jQuery("#fldr_value").val()+e);else var u=jQuery("#return_relative_url").val(),o=encodeURL((1==u?i:l+n)+e);if(""!=a)if(1==jQuery("#crossdomain").val())r.postMessage({sender:"responsivefilemanager",url:o,field_id:a},"*");else{var c=jQuery("#"+a,r.document);c.val(o).trigger("change"),0==t?"function"==typeof r.responsive_filemanager_callback&&r.responsive_filemanager_callback(a):"function"==typeof r[t]&&r[t](a),Q()}else apply_any(o)},apply_none=function(e){var a=jQuery("ul.grid").find('li[data-name="'+e+'"] figcaption a');a[1].click(),jQuery(".tip-right").tooltip("hide")},apply_any=function(e){if(1==jQuery("#crossdomain").val())window.parent.postMessage({sender:"responsivefilemanager",url:e,field_id:null},"*");else{var a=jQuery("#editor").val();if("ckeditor"==a){var r=j("CKEditorFuncNum");window.opener.CKEDITOR.tools.callFunction(r,e),window.close()}else parent.tinymce.majorVersion<4?(parent.tinymce.activeEditor.windowManager.params.setUrl(e),parent.tinymce.activeEditor.windowManager.close(parent.tinymce.activeEditor.windowManager.params.mce_window_id)):(parent.tinymce.activeEditor.windowManager.getParams().setUrl(e),parent.tinymce.activeEditor.windowManager.close())}},apply_file_duplicate=function(e,a){var r=e.parent().parent().parent().parent();r.after("
  • "+r.html()+"
  • ");var t=r.next();apply_file_rename(t.find("figure"),a);var n=t.find(".download-form"),i="form"+(new Date).getTime();n.attr("id",i),n.find(".tip-right").attr("onclick","jQuery('#"+i+"').submit();")},apply_file_rename=function(e,a){var r;e.attr("data-name",a),e.parent().attr("data-name",a),e.find("h4").text(a);var t=e.find("a.link");r=t.attr("data-file"); -var n=r.substring(r.lastIndexOf("/")+1),i=r.substring(r.lastIndexOf(".")+1);t.each(function(){jQuery(this).attr("data-file",encodeURIComponent(a+"."+i))}),e.find("img").each(function(){var e=jQuery(this).attr("src");jQuery(this).attr("src",e.replace(n,a+"."+i)+"?time="+(new Date).getTime()),jQuery(this).attr("alt",a+" thumbnails")});var l=e.find("a.preview");r=l.attr("data-url"),"undefined"!=typeof r&&r&&l.attr("data-url",r.replace(encodeURIComponent(n),encodeURIComponent(a+"."+i))),e.parent().attr("data-name",a+"."+i),e.attr("data-name",a+"."+i),e.find(".name_download").val(a+"."+i);var o=e.find("a.rename-file"),u=e.find("a.delete-file"),c=o.attr("data-path"),s=c.replace(n,a+"."+i);o.attr("data-path",s),u.attr("data-path",s)},apply_folder_rename=function(e,a){e.attr("data-name",a),e.find("figure").attr("data-name",a);var r=e.find("h4").find("a").text();e.find("h4 > a").text(a);var t=e.find(".folder-link"),n=t.attr("href"),i=jQuery("#fldr_value").val(),l=n.replace("fldr="+i+encodeURIComponent(r),"fldr="+i+encodeURIComponent(a));t.each(function(){jQuery(this).attr("href",l)});var o=e.find("a.delete-folder"),u=e.find("a.rename-folder"),c=u.attr("data-path"),s=c.lastIndexOf("/"),d=c.substr(0,s+1)+a;o.attr("data-path",d),u.attr("data-path",d)},show_animation=function(){jQuery("#loading_container").css("display","block"),jQuery("#loading").css("opacity",".7")},hide_animation=function(){jQuery("#loading_container").fadeOut()}}(jQuery,Modernizr,image_editor),function(){function e(e,a){a=a||{bubbles:!1,cancelable:!1,detail:void 0};var r=document.createEvent("CustomEvent");return r.initCustomEvent(e,a.bubbles,a.cancelable,a.detail),r}return"function"!=typeof window.CustomEvent&&(e.prototype=window.Event.prototype,void(window.CustomEvent=e))}(); \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/js/jPlayer/MIT-LICENSE.txt b/libraries/filemanager-9.12.1/js/jPlayer/MIT-LICENSE.txt deleted file mode 100644 index 741ccdf..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/MIT-LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -Copyright (c) 2009 - 2013 Happyworm Ltd -http://happyworm.com -http://jplayer.org - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/js/jPlayer/README.md b/libraries/filemanager-9.12.1/js/jPlayer/README.md deleted file mode 100644 index a1b3011..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/README.md +++ /dev/null @@ -1,32 +0,0 @@ -# [jPlayer](http://jplayer.org/) : HTML5 Audio & Video for [jQuery](http://jquery.com/) - -Support for [Zepto](http://zeptojs.com/) 1.0+ compiled with the data module. - -## What is jPlayer? - -### jPlayer is a jQuery/Zepto plugin that allows you to: -* **play and control media** files in your webpage. -* create a **consistent interface** and experience across all browsers. -* create and style a media player using **just HTML and CSS**. -* add **audio** and **video** to your jQuery/Zepto projects. -* support more devices using **HTML5**. -* support older browsers using a Flash _fall-back/forward_. -* control media on your website using a [JavaScript API](http://www.jplayer.org/latest/developer-guide/). - -### jPlayer supports: -* HTML5: **mp3, m4a (AAC), m4v (H.264),** ogv*, oga*, wav*, webm* -* Flash: **mp3, m4a (AAC), m4v (H.264),** rtmp, flv. - -_(*) Optional counterpart formats to increase HTML5 cross-browser support._ - -## License -[jPlayer](http://jplayer.org/) is licensed under the [MIT license](http://opensource.org/licenses/MIT). - -## More information: -* [jPlayer.org](http://jplayer.org/) -* [Quick Start Guide](http://www.jplayer.org/latest/quick-start-guide/) -* [Developer Guide and API Reference](http://www.jplayer.org/latest/developer-guide/) - -## Author: -Mark J Panaghiston [@thepag](http://twitter.com/thepag) -[happyworm.com](http://happyworm.com/) diff --git a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/Jplayer.as b/libraries/filemanager-9.12.1/js/jPlayer/actionscript/Jplayer.as deleted file mode 100644 index ab6940e..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/Jplayer.as +++ /dev/null @@ -1,638 +0,0 @@ -/* - * jPlayer Plugin for jQuery JavaScript Library - * http://www.jplayer.org - * - * Copyright (c) 2009 - 2013 Happyworm Ltd - * Licensed under the MIT. - * http://opensource.org/licenses/MIT - * - * Author: Mark J Panaghiston - * Version: 2.4.0 - * Date: 5th June 2013 - * - * FlashVars expected: (AS3 property of: loaderInfo.parameters) - * id: (URL Encoded: String) Id of jPlayer instance - * vol: (Number) Sets the initial volume - * muted: (Boolean in a String) Sets the initial muted state - * jQuery: (URL Encoded: String) Sets the jQuery var name. Used with: someVar = jQuery.noConflict(true); The someVar name must contain jQuery in it. - * - * Compiled using: Adobe Flex Compiler (mxmlc) Version 4.5.1 build 21328 - */ - -package { - import flash.system.Security; - import flash.external.ExternalInterface; - - import flash.utils.Timer; - import flash.events.TimerEvent; - - import flash.text.TextField; - import flash.text.TextFormat; - - import flash.events.KeyboardEvent; - - import flash.display.Sprite; - import happyworm.jPlayer.*; - - import flash.display.StageAlign; - import flash.display.StageScaleMode; - import flash.events.Event; - import flash.net.LocalConnection; - import flash.events.StatusEvent; - - import flash.events.MouseEvent; - - import flash.ui.ContextMenu; - import flash.ui.ContextMenuItem; - import flash.events.ContextMenuEvent; - import flash.net.URLRequest; - import flash.net.navigateToURL; - import flash.media.Video; - - public class Jplayer extends Sprite { - private var jQuery:String; - private var sentNumberFractionDigits:uint = 2; - - public var commonStatus:JplayerStatus = new JplayerStatus(); // Used for inital ready event so volume is correct. - - private var myInitTimer:Timer = new Timer(100, 0); - - private var myMp3Player:JplayerMp3; - private var myMp4Player:JplayerMp4; - - private var myRtmpPlayer:JplayerRtmp; - - private var isRtmp:Boolean = false; - private var isMp4:Boolean = false; - - private var isMp3:Boolean = false; - private var isVideo:Boolean = false; - - private var securityIssue:Boolean = false; // On direct access and when SWF parameters contain illegal characters - - private var contextMenuFix:Sprite = new Sprite(); // A sprite that will be on top and fix the content menu over video bug. (A Flash plugin bug.) - - private var txLog:TextField; - private var debug:Boolean = false; // Set debug to false for release compile! - private var localAIRDebug:Boolean = false; // This is autodetermined by AIR app - leave false! - - private var traceOut:TraceOut; - - public function Jplayer() { - - flash.system.Security.allowDomain("*"); - traceOut = new TraceOut(); - - // Fix to the security exploit reported by Jason Calvert http://appsec.ws/ - checkFlashVars(loaderInfo.parameters); - - stage.scaleMode = StageScaleMode.NO_SCALE; - stage.align = StageAlign.TOP_LEFT; - - if(!securityIssue) { - // The jQuery param is the primary cause of security concerns. - jQuery = loaderInfo.parameters.jQuery + "('#" + loaderInfo.parameters.id + "').jPlayer"; - commonStatus.volume = Number(loaderInfo.parameters.vol); - commonStatus.muted = loaderInfo.parameters.muted == "true"; - - stage.addEventListener(Event.RESIZE, resizeHandler); - stage.addEventListener(MouseEvent.CLICK, clickHandler); - - var initialVolume:Number = commonStatus.volume; - if(commonStatus.muted) { - initialVolume = 0; - } - - myMp3Player = new JplayerMp3(initialVolume); - addChild(myMp3Player); - - myMp4Player = new JplayerMp4(initialVolume); - addChild(myMp4Player); - - myRtmpPlayer = new JplayerRtmp(initialVolume); - addChild(myRtmpPlayer); - - switchType("mp3"); // set default state to mp3 - } - - // The ContextMenu only partially works. The menu select events never occur. - // Investigated and it is something to do with the way jPlayer inserts the Flash on the page. - // A simple test inserting the Jplayer.swf on a page using: 1) SWFObject 2.2 works. 2) AC_FL_RunContent() works. - // jPlayer Flash insertion is based on SWFObject 2.2 and the resaon behind this failure is not clear. The Flash insertion HTML on the page looks similar. - var myContextMenu:ContextMenu = new ContextMenu(); - myContextMenu.hideBuiltInItems(); - var menuItem_jPlayer:ContextMenuItem = new ContextMenuItem("jPlayer " + JplayerStatus.VERSION); - var menuItem_happyworm:ContextMenuItem = new ContextMenuItem("© 2009-2013 Happyworm Ltd", true); - menuItem_jPlayer.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuSelectHandler_jPlayer); - menuItem_happyworm.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, menuSelectHandler_happyworm); - myContextMenu.customItems.push(menuItem_jPlayer, menuItem_happyworm); - contextMenu = myContextMenu; - - // Log console for dev compile option: debug - if(debug || securityIssue) { - txLog = new TextField(); - txLog.x = 5; - txLog.y = 5; - txLog.width = stage.stageWidth - 10; - txLog.height = stage.stageHeight - 10; - txLog.backgroundColor = 0xEEEEFF; - txLog.border = true; - txLog.background = true; - txLog.multiline = true; - txLog.text = "jPlayer " + JplayerStatus.VERSION; - - if(securityIssue) { - txLog.visible = true; - } else if(debug) { - txLog.visible = false; - } - - this.addChild(txLog); - - if(debug && !securityIssue) { - this.stage.addEventListener(KeyboardEvent.KEY_UP, keyboardHandler); - - myMp3Player.addEventListener(JplayerEvent.DEBUG_MSG, debugMsgHandler); - myMp4Player.addEventListener(JplayerEvent.DEBUG_MSG, debugMsgHandler); - myRtmpPlayer.addEventListener(JplayerEvent.DEBUG_MSG, debugMsgHandler); - } - } - - // Known Flash problem with contextMenu over video player. - // Add a transparent rectangle into the sprite. - contextMenuFix.graphics.beginFill(0x000000, 0); // Transparent black - contextMenuFix.graphics.drawRect(0, 0, 10, 10); // Arbitary rectangle - contextMenuFix.graphics.endFill(); - addChild(contextMenuFix); // Put the sprite on the top layer. - - if(!securityIssue) { - // Delay init() because Firefox 3.5.7+ developed a bug with local testing in Firebug. - myInitTimer.addEventListener(TimerEvent.TIMER, init); - myInitTimer.start(); - } - } - - private function switchType(playType:String):void { - switch(playType) { - case "rtmpa": - isRtmp=true; - isMp3=false; - isMp4=false; - isVideo=false; - break; - case "rtmpv": - isRtmp=true; - isMp3=false; - isMp4=false; - isVideo=true; - break; - case "mp3": - isRtmp=false; - isMp3=true; - isMp4=false; - isVideo=false; - break; - case "mp4": - isRtmp=false; - isMp3=false; - isMp4=true; - isVideo=false; - break; - case "m4v": - isRtmp=false; - isMp3=false; - isMp4=true; - isVideo=true; - break; - } - - listenToMp3(isMp3); - listenToMp4(isMp4); - listenToRtmp(isRtmp); - } - - private function init(e:TimerEvent):void { - myInitTimer.stop(); - if(ExternalInterface.available && !securityIssue) { - ExternalInterface.addCallback("fl_setAudio_mp3", fl_setAudio_mp3); - ExternalInterface.addCallback("fl_setAudio_m4a", fl_setAudio_m4a); - ExternalInterface.addCallback("fl_setVideo_m4v", fl_setVideo_m4v); - ExternalInterface.addCallback("fl_setAudio_rtmp", fl_setAudio_rtmp); - ExternalInterface.addCallback("fl_setVideo_rtmp", fl_setVideo_rtmp); - ExternalInterface.addCallback("fl_clearMedia", fl_clearMedia); - ExternalInterface.addCallback("fl_load", fl_load); - ExternalInterface.addCallback("fl_play", fl_play); - ExternalInterface.addCallback("fl_pause", fl_pause); - ExternalInterface.addCallback("fl_play_head", fl_play_head); - ExternalInterface.addCallback("fl_volume", fl_volume); - ExternalInterface.addCallback("fl_mute", fl_mute); - - ExternalInterface.call(jQuery, "jPlayerFlashEvent", JplayerEvent.JPLAYER_READY, extractStatusData(commonStatus)); // See JplayerStatus() class for version number. - } - } - private function checkFlashVars(p:Object):void { - // Check for direct access. Inspired by mediaelement.js - Also added name to HTML object for non-IE browsers. - if(ExternalInterface.objectID != null && ExternalInterface.objectID.toString() != "") { - for each (var s:String in p) { - if(illegalChar(s)) { - securityIssue = true; // Found a security concern. - } - } - if(!securityIssue) { - if(jQueryIllegal(p.jQuery)) { - securityIssue = true; // Found a security concern. - } - } - } else { - securityIssue = true; // Direct access disables the callbacks, which were a security concern. - } - } - private function illegalChar(s:String):Boolean { - // A whitelist of accepted chars. - var validParam:RegExp = /^[-A-Za-z0-9_.]+$/; - return !validParam.test(s); - } - private function jQueryIllegal(s:String):Boolean { - // Check param contains the term jQuery. - var validParam:RegExp = /(jQuery)/; - return !validParam.test(s); - } - // switchType() here - private function listenToMp3(active:Boolean):void { - if(active) { - myMp3Player.addEventListener(JplayerEvent.JPLAYER_ERROR, jPlayerFlashEvent); - myMp3Player.addEventListener(JplayerEvent.JPLAYER_PROGRESS, jPlayerFlashEvent); - myMp3Player.addEventListener(JplayerEvent.JPLAYER_TIMEUPDATE, jPlayerFlashEvent); - myMp3Player.addEventListener(JplayerEvent.JPLAYER_ENDED, jPlayerFlashEvent); - - myMp3Player.addEventListener(JplayerEvent.JPLAYER_PLAY, jPlayerFlashEvent); - myMp3Player.addEventListener(JplayerEvent.JPLAYER_PAUSE, jPlayerFlashEvent); - myMp3Player.addEventListener(JplayerEvent.JPLAYER_LOADSTART, jPlayerFlashEvent); - - myMp3Player.addEventListener(JplayerEvent.JPLAYER_SEEKING, jPlayerFlashEvent); - myMp3Player.addEventListener(JplayerEvent.JPLAYER_SEEKED, jPlayerFlashEvent); - - myMp3Player.addEventListener(JplayerEvent.JPLAYER_WAITING, jPlayerFlashEvent); // only MP3 atm - myMp3Player.addEventListener(JplayerEvent.JPLAYER_PLAYING, jPlayerFlashEvent); // only MP3 atm - - myMp3Player.addEventListener(JplayerEvent.JPLAYER_CANPLAY, jPlayerFlashEvent); // only MP3 atm - myMp3Player.addEventListener(JplayerEvent.JPLAYER_CANPLAYTHROUGH, jPlayerFlashEvent); // only MP3 atm - } else { - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_ERROR, jPlayerFlashEvent); - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_PROGRESS, jPlayerFlashEvent); - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_TIMEUPDATE, jPlayerFlashEvent); - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_ENDED, jPlayerFlashEvent); - - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_PLAY, jPlayerFlashEvent); - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_PAUSE, jPlayerFlashEvent); - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_LOADSTART, jPlayerFlashEvent); - - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_SEEKING, jPlayerFlashEvent); - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_SEEKED, jPlayerFlashEvent); - - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_WAITING, jPlayerFlashEvent); // only MP3 atm - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_PLAYING, jPlayerFlashEvent); // only MP3 atm - - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_CANPLAY, jPlayerFlashEvent); // only MP3 atm - myMp3Player.removeEventListener(JplayerEvent.JPLAYER_CANPLAYTHROUGH, jPlayerFlashEvent); // only MP3 atm - } - } - private function listenToMp4(active:Boolean):void { - if(active) { - myMp4Player.addEventListener(JplayerEvent.JPLAYER_ERROR, jPlayerFlashEvent); - myMp4Player.addEventListener(JplayerEvent.JPLAYER_PROGRESS, jPlayerFlashEvent); - myMp4Player.addEventListener(JplayerEvent.JPLAYER_TIMEUPDATE, jPlayerFlashEvent); - myMp4Player.addEventListener(JplayerEvent.JPLAYER_ENDED, jPlayerFlashEvent); - - myMp4Player.addEventListener(JplayerEvent.JPLAYER_PLAY, jPlayerFlashEvent); - myMp4Player.addEventListener(JplayerEvent.JPLAYER_PAUSE, jPlayerFlashEvent); - myMp4Player.addEventListener(JplayerEvent.JPLAYER_LOADSTART, jPlayerFlashEvent); - - myMp4Player.addEventListener(JplayerEvent.JPLAYER_SEEKING, jPlayerFlashEvent); - myMp4Player.addEventListener(JplayerEvent.JPLAYER_SEEKED, jPlayerFlashEvent); - - myMp4Player.addEventListener(JplayerEvent.JPLAYER_LOADEDMETADATA, jPlayerMetaDataHandler); // Note the unique handler - } else { - myMp4Player.removeEventListener(JplayerEvent.JPLAYER_ERROR, jPlayerFlashEvent); - myMp4Player.removeEventListener(JplayerEvent.JPLAYER_PROGRESS, jPlayerFlashEvent); - myMp4Player.removeEventListener(JplayerEvent.JPLAYER_TIMEUPDATE, jPlayerFlashEvent); - myMp4Player.removeEventListener(JplayerEvent.JPLAYER_ENDED, jPlayerFlashEvent); - - myMp4Player.removeEventListener(JplayerEvent.JPLAYER_PLAY, jPlayerFlashEvent); - myMp4Player.removeEventListener(JplayerEvent.JPLAYER_PAUSE, jPlayerFlashEvent); - myMp4Player.removeEventListener(JplayerEvent.JPLAYER_LOADSTART, jPlayerFlashEvent); - - myMp4Player.removeEventListener(JplayerEvent.JPLAYER_SEEKING, jPlayerFlashEvent); - myMp4Player.removeEventListener(JplayerEvent.JPLAYER_SEEKED, jPlayerFlashEvent); - - myMp4Player.removeEventListener(JplayerEvent.JPLAYER_LOADEDMETADATA, jPlayerMetaDataHandler); // Note the unique handler - } - } - - private function listenToRtmp(active:Boolean):void { - if(active) { - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_ERROR, jPlayerFlashEvent); - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_PROGRESS, jPlayerFlashEvent); - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_TIMEUPDATE, jPlayerFlashEvent); - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_ENDED, jPlayerFlashEvent); - - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_PLAY, jPlayerFlashEvent); - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_PAUSE, jPlayerFlashEvent); - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_LOADSTART, jPlayerFlashEvent); - - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_CANPLAY, jPlayerFlashEvent); - - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_SEEKING, jPlayerFlashEvent); - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_SEEKED, jPlayerFlashEvent); - - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_LOADEDMETADATA, jPlayerMetaDataHandler); // Note the unique handler - } else { - myRtmpPlayer.removeEventListener(JplayerEvent.JPLAYER_ERROR, jPlayerFlashEvent); - myRtmpPlayer.removeEventListener(JplayerEvent.JPLAYER_PROGRESS, jPlayerFlashEvent); - myRtmpPlayer.removeEventListener(JplayerEvent.JPLAYER_TIMEUPDATE, jPlayerFlashEvent); - myRtmpPlayer.removeEventListener(JplayerEvent.JPLAYER_ENDED, jPlayerFlashEvent); - - myRtmpPlayer.removeEventListener(JplayerEvent.JPLAYER_PLAY, jPlayerFlashEvent); - myRtmpPlayer.removeEventListener(JplayerEvent.JPLAYER_PAUSE, jPlayerFlashEvent); - myRtmpPlayer.removeEventListener(JplayerEvent.JPLAYER_LOADSTART, jPlayerFlashEvent); - - myRtmpPlayer.addEventListener(JplayerEvent.JPLAYER_CANPLAY, jPlayerFlashEvent); - - myRtmpPlayer.removeEventListener(JplayerEvent.JPLAYER_SEEKING, jPlayerFlashEvent); - myRtmpPlayer.removeEventListener(JplayerEvent.JPLAYER_SEEKED, jPlayerFlashEvent); - - myRtmpPlayer.removeEventListener(JplayerEvent.JPLAYER_LOADEDMETADATA, jPlayerMetaDataHandler); // Note the unique handler - } - } - - private function fl_setAudio_mp3(src:String):Boolean { - if (src != null) { - log("fl_setAudio_mp3: "+src); - switchType("mp3"); - myMp4Player.clearFile(); - myRtmpPlayer.clearFile(); - myMp3Player.setFile(src); - return true; - } else { - log("fl_setAudio_mp3: null"); - return false; - } - } - private function fl_setAudio_rtmp(src:String):Boolean { - tracer("SET RTMP: "+src); - if (src != null) { - log("fl_setAudio_rtmp: "+src); - switchType("rtmpa"); - myMp4Player.clearFile(); - myMp3Player.clearFile(); - myRtmpPlayer.setFile(src,false); - return true; - } else { - log("fl_setAudio_rtmp: null"); - return false; - } - } - - private function fl_setVideo_rtmp(src:String):Boolean { - tracer("SET RTMP: "+src); - if (src != null) { - log("fl_setVideo_rtmp: "+src); - switchType("rtmpv"); - myMp4Player.clearFile(); - myMp3Player.clearFile(); - myRtmpPlayer.setFile(src,true); - return true; - } else { - log("fl_setVideo_rtmp: null"); - return false; - } - } - private function fl_setAudio_m4a(src:String):Boolean { - if (src != null) { - log("fl_setAudio_m4a: "+src); - switchType("mp4") - myMp3Player.clearFile(); - myRtmpPlayer.clearFile(); - myMp4Player.setFile(src); - return true; - } else { - log("fl_setAudio_m4a: null"); - return false; - } - } - private function fl_setVideo_m4v(src:String):Boolean { - if (src != null) { - log("fl_setVideo_m4v: "+src); - switchType("m4v"); - myMp3Player.clearFile(); - myRtmpPlayer.clearFile(); - myMp4Player.setFile(src); - return true; - } else { - log("fl_setVideo_m4v: null"); - return false; - } - } - private function fl_clearMedia():void { - log("clearMedia."); - myMp3Player.clearFile(); - myMp4Player.clearFile(); - myRtmpPlayer.clearFile(); - } - - private function getType():Object { - var returnType:Object; - if(isMp3) { - returnType=myMp3Player; - } - if(isRtmp) { - returnType=myRtmpPlayer; - } - if(isMp4) { - returnType=myMp4Player; - } - return returnType; - } - - private function fl_load():Boolean { - log("load."); - var returnType:Object = getType(); - return returnType.load(); - } - private function fl_play(time:Number = NaN):Boolean { - log("play: time = " + time); - var returnType:Object = getType(); - return returnType.play(time * 1000); // Flash uses milliseconds - } - private function fl_pause(time:Number = NaN):Boolean { - log("pause: time = " + time); - var returnType:Object = getType(); - return returnType.pause(time * 1000); // Flash uses milliseconds - } - private function fl_play_head(percent:Number):Boolean { - log("play_head: "+percent+"%"); - var returnType:Object = getType(); - return returnType.playHead(percent); - } - private function fl_volume(v:Number):void { - log("volume: "+v); - commonStatus.volume = v; - if(!commonStatus.muted) { - myMp3Player.setVolume(v); - myMp4Player.setVolume(v); - myRtmpPlayer.setVolume(v); - } - } - private function fl_mute(mute:Boolean):void { - log("mute: "+mute); - commonStatus.muted = mute; - if(mute) { - myMp3Player.setVolume(0); - myMp4Player.setVolume(0); - myRtmpPlayer.setVolume(0); - } else { - myMp3Player.setVolume(commonStatus.volume); - myMp4Player.setVolume(commonStatus.volume); - myRtmpPlayer.setVolume(commonStatus.volume); - } - } - private function jPlayerFlashEvent(e:JplayerEvent):void { - log("jPlayer Flash Event: " + e.type + ": " + e.target); - //tracer("jPlayer Flash Event: " + e.type + ": " + e.target); - if(ExternalInterface.available && !securityIssue) { - ExternalInterface.call(jQuery, "jPlayerFlashEvent", e.type, extractStatusData(e.data)); - } - } - - private function tracer(msg:String):void { - traceOut.tracer(msg); - } - - private function extractStatusData(data:JplayerStatus):Object { - var myStatus:Object = { - version: JplayerStatus.VERSION, - src: data.src, - paused: !data.isPlaying, // Changing this name requires inverting all assignments and conditional statements. - srcSet: data.srcSet, - seekPercent: data.seekPercent, - currentPercentRelative: data.currentPercentRelative, - currentPercentAbsolute: data.currentPercentAbsolute, - currentTime: data.currentTime / 1000, // JavaScript uses seconds - duration: data.duration / 1000, // JavaScript uses seconds - videoWidth: data.videoWidth, - videoHeight: data.videoHeight, - volume: commonStatus.volume, - muted: commonStatus.muted - }; - log("extractStatusData: sp="+myStatus.seekPercent+" cpr="+myStatus.currentPercentRelative+" cpa="+myStatus.currentPercentAbsolute+" ct="+myStatus.currentTime+" d="+myStatus.duration); - return myStatus; - } - private function jPlayerMetaDataHandler(e:JplayerEvent):void { - log("jPlayerMetaDataHandler:" + e.target); - if(ExternalInterface.available && !securityIssue) { - resizeHandler(new Event(Event.RESIZE)); - ExternalInterface.call(jQuery, "jPlayerFlashEvent", e.type, extractStatusData(e.data)); - } - } - private function resizeHandler(e:Event):void { - log("resizeHandler: stageWidth = " + stage.stageWidth + " | stageHeight = " + stage.stageHeight); - - var mediaX:Number = 0; - var mediaY:Number = 0; - var mediaWidth:Number = 0; - var mediaHeight:Number = 0; - - var aspectRatioStage:Number = 0; - var aspectRatioVideo:Number = 0; - - var videoItem:*; - - if(isRtmp) { - videoItem = myRtmpPlayer; - } - if(isMp4) { - videoItem = myMp4Player; - } - - if(videoItem) { - if(stage.stageWidth > 0 && stage.stageHeight > 0 && videoItem.myVideo.width > 0 && videoItem.myVideo.height > 0) { - aspectRatioStage = stage.stageWidth / stage.stageHeight; - aspectRatioVideo = videoItem.myVideo.width / videoItem.myVideo.height; - if(aspectRatioStage < aspectRatioVideo) { - mediaWidth = stage.stageWidth; - mediaHeight = stage.stageWidth / aspectRatioVideo; - mediaX = 0; - mediaY = (stage.stageHeight - mediaHeight) / 2; - } else { - mediaWidth = stage.stageHeight * aspectRatioVideo; - mediaHeight = stage.stageHeight; - mediaX = (stage.stageWidth - mediaWidth) / 2; - mediaY = 0; - } - resizeEntity(videoItem, mediaX, mediaY, mediaWidth, mediaHeight); - } - } - if((debug || securityIssue) && stage.stageWidth > 20 && stage.stageHeight > 20) { - txLog.width = stage.stageWidth - 10; - txLog.height = stage.stageHeight - 10; - } - // Resize the sprite so it covers the entire stage area - contextMenuFix.x = 0; - contextMenuFix.y = 0; - contextMenuFix.width = stage.stageWidth; - contextMenuFix.height = stage.stageHeight; - } - private function resizeEntity(entity:Sprite, mediaX:Number, mediaY:Number, mediaWidth:Number, mediaHeight:Number):void { - entity.x = mediaX; - entity.y = mediaY; - entity.width = mediaWidth; - entity.height = mediaHeight; - } - private function clickHandler(e:MouseEvent):void { - // This needs to work with RTMP format too! - if(isMp3) { - jPlayerFlashEvent(new JplayerEvent(JplayerEvent.JPLAYER_CLICK, myMp3Player.myStatus, "click")) - } else { - jPlayerFlashEvent(new JplayerEvent(JplayerEvent.JPLAYER_CLICK, myMp4Player.myStatus, "click")) - } - } - // This event is never called. See comments in class constructor. - private function menuSelectHandler_jPlayer(e:ContextMenuEvent):void { - navigateToURL(new URLRequest("http://jplayer.org/"), "_blank"); - } - // This event is never called. See comments in class constructor. - private function menuSelectHandler_happyworm(e:ContextMenuEvent):void { - navigateToURL(new URLRequest("http://happyworm.com/"), "_blank"); - } - private function log(t:String):void { - if(debug) { - txLog.text = t + "\n" + txLog.text; - localAIRDebug = traceOut.localAIRDebug(); - if(localAIRDebug) { - tracer(t); - } - - if(ExternalInterface.available && !securityIssue) { - ExternalInterface.call("console.log", t); - } - } - } - private function debugMsgHandler(e:JplayerEvent):void { - log(e.msg); - } - private function keyboardHandler(e:KeyboardEvent):void { - log("keyboardHandler: e.keyCode = " + e.keyCode); - switch(e.keyCode) { - case 68 : // d - txLog.visible = !txLog.visible; - log("Toggled log display: " + txLog.visible); - break; - case 76 : // l - if(e.ctrlKey && e.shiftKey) { - txLog.text = "Cleared log."; - } - break; - } - } - } -} diff --git a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/Jplayer.fla b/libraries/filemanager-9.12.1/js/jPlayer/actionscript/Jplayer.fla deleted file mode 100644 index 61ae40d3ac2811ebcfd63b1ff3bb590f67984445..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 61952 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�DN>v0;j*NSUn@AEC$So)`x?s<|%m5n{;d9tze zPb=N?B#kN?d(QJ@W9gq(y5~t6RW|mV=gG#>Kdp4nlQgPq>^aYqjirBD>1*Z5riuT# Lr)S@~#Q*$1&)N_z diff --git a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/ConnectManager.as b/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/ConnectManager.as deleted file mode 100644 index 1baa032..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/ConnectManager.as +++ /dev/null @@ -1,295 +0,0 @@ -/* - * jPlayer Plugin for jQuery JavaScript Library - * http://www.jplayer.org - * - * Copyright (c) 2009 - 2013 Happyworm Ltd - * Licensed under the MIT license. - * http://opensource.org/licenses/MIT - * - * Author: Robert M. Hall - * Date: 7th August 2012 - * Custom NetConnection Manager for more robust RTMP support - * Based in part on work by Will Law for the old Akamai NCManager.as - * and some of Will's new work in the OVP base classes (Open Video Player) - * as well as similar approaches by many other NetConnection managers - * - */ - - /* - TODO LIST 08/18/2011: - 1. Wired up errors to dispatch events to Jplayer events to allow them to bubble up to JS - 2. Rework event dispatch to handoff netconnection instead of a passed in reference - 3. Allow a customizeable list of protocols and ports to be used instead of entire list - 4. Allow a specific port/protocol (1 connect type) to be used first, and then optionally fallback on a custom list or the default list - 5. Remove some traces and check a few other items below where I've made notes - */ - -package happyworm.jPlayer { - - import flash.events.*; - import flash.net.*; - - import flash.utils.Timer; - import flash.utils.getTimer; - import flash.utils.clearInterval; - import flash.utils.setInterval; - - public class ConnectManager extends Object { - - private var protocols_arr:Array = new Array("rtmp","rtmpt","rtmpe","rtmpte","rtmps"); - private var ports_arr:Array = new Array("",":1935",":80",":443"); - private const protCount:Number = 5; - private const portCount:Number = 4; - - private var _ncRef:Object; - - private var _aNC:Array; - - private var k_TIMEOUT:Number = 30000; - private var k_startConns:Number; - private var m_connList:Array = []; - private var m_serverName:String; - private var m_appName:String; - private var m_streamName:String; - private var m_connListCounter:Number; - private var m_flashComConnectTimeOut:Number; - private var m_validNetConnection:NetConnection; - - private var connectSuccess:Boolean=false; - - private var negotiating:Boolean=false; - private var idleTimeOut:Boolean=false; - - public function ConnectManager() { - trace ("ConnectManager Initialized Version: 1.00 DT"); - createPortsProtocolsArray(); - } - - private function createPortsProtocolsArray():void { - var outerLoop:Number=0; - var innerLoop:Number=0; - for (outerLoop=0; outerLoop getDuration())) { - // Illegal seek time - seeking(false); - seekedEvent(); - pause(0); - } - } - private function seekingEvent():void { - myStatus.isSeeking = true; - updateStatusValues(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_SEEKING, myStatus)); - } - private function seekedEvent():void { - myStatus.isSeeking = false; - updateStatusValues(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_SEEKED, myStatus)); - } - private function playingHandler(e:TimerEvent):void { - checkPlaying(false); // Without forcing playing event. - } - private function checkPlaying(force:Boolean):void { - if(mySound.isBuffering) { - if(!myStatus.isWaiting) { - waitingEvent(); - } - } else { - if(myStatus.isWaiting || force) { - playingEvent(); - } - } - } - private function waitingEvent():void { - myStatus.isWaiting = true; - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_WAITING, myStatus)); - } - private function playingEvent():void { - myStatus.isWaiting = false; - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_CANPLAY, myStatus)); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PLAYING, myStatus)); - } - private function waitingHandler(e:TimerEvent):void { - waitingTimer.stop(); - if(myStatus.playOnLoad) { - waitingEvent(); - } - } - public function load():Boolean { - if(myStatus.loadRequired()) { - myStatus.startingDownload(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_LOADSTART, myStatus)); - waitingTimer.start(); - mySound.load(myRequest, myContext); - return true; - } else { - return false; - } - } - public function play(time:Number = NaN):Boolean { - var wasPlaying:Boolean = myStatus.isPlaying; - - if(!isNaN(time) && myStatus.srcSet) { - if(myStatus.isPlaying) { - myChannel.stop(); - myStatus.isPlaying = false; - } - myStatus.pausePosition = time; - } - - if(myStatus.isStartingDownload) { - myStatus.playOnLoad = true; // Raise flag, captured in loadOpen() - return true; - } else if(myStatus.loadRequired()) { - myStatus.playOnLoad = true; // Raise flag, captured in loadOpen() - return load(); - } else if((myStatus.isLoading || myStatus.isLoaded) && !myStatus.isPlaying) { - if(myStatus.isLoaded && myStatus.pausePosition > getDuration()) { // The time is invalid, ie., past the end. - myStatus.pausePosition = 0; - timeUpdates(false); - timeUpdateEvent(); - if(wasPlaying) { // For when playing and then get a play(huge) - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PAUSE, myStatus)); - } - } else if(myStatus.pausePosition > getDuration()) { - myStatus.playOnSeek = true; - seeking(true); - } else { - myStatus.isPlaying = true; // Set immediately before playing. Could affects events. - myChannel = mySound.play(myStatus.pausePosition); - myChannel.soundTransform = myTransform; - myChannel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler); - timeUpdates(true); - if(!wasPlaying) { - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PLAY, myStatus)); - } - checkPlaying(true); // Force the playing event unless waiting, which will be dealt with in the playingTimer. - } - return true; - } else { - return false; - } - } - public function pause(time:Number = NaN):Boolean { - myStatus.playOnLoad = false; // Reset flag in case load/play issued immediately before this command, ie., before loadOpen() event. - myStatus.playOnSeek = false; // Reset flag in case play(time) issued before the command and is still seeking to time set. - - var wasPlaying:Boolean = myStatus.isPlaying; - - // To avoid possible loops with timeupdate and pause(time). A pause() does not have the problem. - var alreadyPausedAtTime:Boolean = false; - if(!isNaN(time) && myStatus.pausePosition == time) { - alreadyPausedAtTime = true; - } - - if(myStatus.isPlaying) { - myStatus.isPlaying = false; - myChannel.stop(); - if(myChannel.position > 0) { // Required otherwise a fast play then pause causes myChannel.position to equal zero and not the correct value. ie., When it happens leave pausePosition alone. - myStatus.pausePosition = myChannel.position; - } - } - - if(!isNaN(time) && myStatus.srcSet) { - myStatus.pausePosition = time; - } - - if(wasPlaying) { - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PAUSE, myStatus)); - } - - if(myStatus.isStartingDownload) { - return true; - } else if(myStatus.loadRequired()) { - if(time > 0) { // We do not want the stop() command, which does pause(0), causing a load operation. - return load(); - } else { - return true; // Technically the pause(0) succeeded. ie., It did nothing, since nothing was required. - } - } else if(myStatus.isLoading || myStatus.isLoaded) { - if(myStatus.isLoaded && myStatus.pausePosition > getDuration()) { // The time is invalid, ie., past the end. - myStatus.pausePosition = 0; - } else if(myStatus.pausePosition > getDuration()) { - seeking(true); - } - timeUpdates(false); - // Need to be careful with timeupdate event, otherwise a pause in a timeupdate event can cause a loop. - // Neither pause() nor pause(time) will cause a timeupdate loop. - if(wasPlaying || !isNaN(time) && !alreadyPausedAtTime) { - timeUpdateEvent(); - } - return true; - } else { - return false; - } - } - public function playHead(percent:Number):Boolean { - var time:Number = percent * getDuration() / 100; - if(myStatus.isPlaying || myStatus.playOnLoad || myStatus.playOnSeek) { - return play(time); - } else { - return pause(time); - } - } - public function setVolume(v:Number):void { - myStatus.volume = v; - myTransform.volume = v; - myChannel.soundTransform = myTransform; - } - private function updateStatusValues():void { - myStatus.seekPercent = 100 * getLoadRatio(); - myStatus.currentTime = getCurrentTime(); - myStatus.currentPercentRelative = 100 * getCurrentRatioRel(); - myStatus.currentPercentAbsolute = 100 * getCurrentRatioAbs(); - myStatus.duration = getDuration(); - } - public function getLoadRatio():Number { - if((myStatus.isLoading || myStatus.isLoaded) && mySound.bytesTotal > 0) { - return mySound.bytesLoaded / mySound.bytesTotal; - } else { - return 0; - } - } - public function getDuration():Number { - if(mySound.length > 0) { - return mySound.length; - } else { - return 0; - } - } - public function getCurrentTime():Number { - if(myStatus.isPlaying) { - return myChannel.position; - } else { - return myStatus.pausePosition; - } - } - public function getCurrentRatioRel():Number { - if((getDuration() > 0) && (getCurrentTime() <= getDuration())) { - return getCurrentTime() / getDuration(); - } else { - return 0; - } - } - public function getCurrentRatioAbs():Number { - return getCurrentRatioRel() * getLoadRatio(); - } - } -} diff --git a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerMp4.as b/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerMp4.as deleted file mode 100644 index a45e327..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerMp4.as +++ /dev/null @@ -1,412 +0,0 @@ -/* - * jPlayer Plugin for jQuery JavaScript Library - * http://www.jplayer.org - * - * Copyright (c) 2009 - 2013 Happyworm Ltd - * Licensed under the MIT license. - * http://opensource.org/licenses/MIT - * - * Author: Mark J Panaghiston - * Date: 29th January 2013 - */ - -package happyworm.jPlayer { - import flash.display.Sprite; - - import flash.media.Video; - import flash.media.SoundTransform; - - import flash.net.NetConnection; - import flash.net.NetStream; - - import flash.utils.Timer; - - import flash.events.NetStatusEvent; - import flash.events.SecurityErrorEvent; - import flash.events.TimerEvent; - - public class JplayerMp4 extends Sprite { - - public var myVideo:Video = new Video(); - private var myConnection:NetConnection; - private var myStream:NetStream; - - private var myTransform:SoundTransform = new SoundTransform(); - - public var myStatus:JplayerStatus = new JplayerStatus(); - - private var timeUpdateTimer:Timer = new Timer(250, 0); // Matched to HTML event freq - private var progressTimer:Timer = new Timer(250, 0); // Matched to HTML event freq - private var seekingTimer:Timer = new Timer(100, 0); // Internal: How often seeking is checked to see if it is over. - - public function JplayerMp4(volume:Number) { - myConnection = new NetConnection(); - myConnection.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); - myConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); - myVideo.smoothing = true; - this.addChild(myVideo); - - timeUpdateTimer.addEventListener(TimerEvent.TIMER, timeUpdateHandler); - progressTimer.addEventListener(TimerEvent.TIMER, progressHandler); - seekingTimer.addEventListener(TimerEvent.TIMER, seekingHandler); - - myStatus.volume = volume; - } - private function progressUpdates(active:Boolean):void { - if(active) { - progressTimer.start(); - } else { - progressTimer.stop(); - } - } - private function progressHandler(e:TimerEvent):void { - if(myStatus.isLoading) { - if(getLoadRatio() == 1) { // Close as can get to a loadComplete event since client.onPlayStatus only works with FMS - this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG, myStatus, "progressHandler: loadComplete")); - myStatus.loaded(); - progressUpdates(false); - } - } - progressEvent(); - } - private function progressEvent():void { - this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG, myStatus, "progressEvent:")); - updateStatusValues(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PROGRESS, myStatus)); - } - private function timeUpdates(active:Boolean):void { - if(active) { - timeUpdateTimer.start(); - } else { - timeUpdateTimer.stop(); - } - } - private function timeUpdateHandler(e:TimerEvent):void { - timeUpdateEvent(); - } - private function timeUpdateEvent():void { - updateStatusValues(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_TIMEUPDATE, myStatus)); - } - private function seeking(active:Boolean):void { - if(active) { - if(!myStatus.isSeeking) { - seekingEvent(); - } - seekingTimer.start(); - } else { - if(myStatus.isSeeking) { - seekedEvent(); - } - seekingTimer.stop(); - } - } - private function seekingHandler(e:TimerEvent):void { - if(getSeekTimeRatio() <= getLoadRatio()) { - seeking(false); - if(myStatus.playOnSeek) { - myStatus.playOnSeek = false; // Capture the flag. - play(myStatus.pausePosition); // Must pass time or the seek time is never set. - } else { - pause(myStatus.pausePosition); // Must pass time or the stream.time is read. - } - } else if(myStatus.metaDataReady && myStatus.pausePosition > myStatus.duration) { - // Illegal seek time - seeking(false); - pause(0); - } - } - private function seekingEvent():void { - myStatus.isSeeking = true; - updateStatusValues(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_SEEKING, myStatus)); - } - private function seekedEvent():void { - myStatus.isSeeking = false; - updateStatusValues(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_SEEKED, myStatus)); - } - private function netStatusHandler(e:NetStatusEvent):void { - this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG, myStatus, "netStatusHandler: '" + e.info.code + "'")); - switch(e.info.code) { - case "NetConnection.Connect.Success": - connectStream(); - break; - case "NetStream.Play.Start": - // This event code occurs once, when the media is opened. Equiv to loadOpen() in mp3 player. - myStatus.loading(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_LOADSTART, myStatus)); - progressUpdates(true); - // See onMetaDataHandler() for other condition, since duration is vital. - break; - case "NetStream.Play.Stop": - this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG, myStatus, "NetStream.Play.Stop: getDuration() - getCurrentTime() = " + (getDuration() - getCurrentTime()))); - - // Check if media is at the end (or close) otherwise this was due to download bandwidth stopping playback. ie., Download is not fast enough. - if(Math.abs(getDuration() - getCurrentTime()) < 150) { // Testing found 150ms worked best for M4A files, where playHead(99.9) caused a stuck state due to firing with ~116ms left to play. - endedEvent(); - } - break; - case "NetStream.Seek.InvalidTime": - // Used for capturing invalid set times and clicks on the end of the progress bar. - endedEvent(); - break; - case "NetStream.Play.StreamNotFound": - myStatus.error(); // Resets status except the src, and it sets srcError property. - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_ERROR, myStatus)); - break; - } - // "NetStream.Seek.Notify" event code is not very useful. It occurs after every seek(t) command issued and does not appear to wait for the media to be ready. - } - private function endedEvent():void { - var wasPlaying:Boolean = myStatus.isPlaying; - pause(0); - timeUpdates(false); - timeUpdateEvent(); - if(wasPlaying) { - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_ENDED, myStatus)); - } - } - private function securityErrorHandler(event:SecurityErrorEvent):void { - this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG, myStatus, "securityErrorHandler.")); - } - private function connectStream():void { - this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG, myStatus, "connectStream.")); - var customClient:Object = new Object(); - customClient.onMetaData = onMetaDataHandler; - // customClient.onPlayStatus = onPlayStatusHandler; // According to the forums and my tests, onPlayStatus only works with FMS (Flash Media Server). - myStream = null; - myStream = new NetStream(myConnection); - myStream.addEventListener(NetStatusEvent.NET_STATUS, netStatusHandler); - myStream.client = customClient; - myVideo.attachNetStream(myStream); - setVolume(myStatus.volume); - myStream.play(myStatus.src); - } - public function setFile(src:String):void { - if(myStream != null) { - myStream.close(); - } - myVideo.clear(); - progressUpdates(false); - timeUpdates(false); - - myStatus.reset(); - myStatus.src = src; - myStatus.srcSet = true; - timeUpdateEvent(); - } - public function clearFile():void { - setFile(""); - myStatus.srcSet = false; - } - public function load():Boolean { - if(myStatus.loadRequired()) { - myStatus.startingDownload(); - myConnection.connect(null); - return true; - } else { - return false; - } - } - public function play(time:Number = NaN):Boolean { - var wasPlaying:Boolean = myStatus.isPlaying; - - if(!isNaN(time) && myStatus.srcSet) { - if(myStatus.isPlaying) { - myStream.pause(); - myStatus.isPlaying = false; - } - myStatus.pausePosition = time; - } - - if(myStatus.isStartingDownload) { - myStatus.playOnLoad = true; // Raise flag, captured in onMetaDataHandler() - return true; - } else if(myStatus.loadRequired()) { - myStatus.playOnLoad = true; // Raise flag, captured in onMetaDataHandler() - return load(); - } else if((myStatus.isLoading || myStatus.isLoaded) && !myStatus.isPlaying) { - if(myStatus.metaDataReady && myStatus.pausePosition > myStatus.duration) { // The time is invalid, ie., past the end. - myStream.pause(); // Since it is playing by default at this point. - myStatus.pausePosition = 0; - myStream.seek(0); - timeUpdates(false); - timeUpdateEvent(); - if(wasPlaying) { // For when playing and then get a play(huge) - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PAUSE, myStatus)); - } - } else if(getSeekTimeRatio() > getLoadRatio()) { // Use an estimate based on the downloaded amount - myStatus.playOnSeek = true; - seeking(true); - myStream.pause(); // Since it is playing by default at this point. - } else { - if(!isNaN(time)) { // Avoid using seek() when it is already correct. - myStream.seek(myStatus.pausePosition/1000); // Since time is in ms and seek() takes seconds - } - myStatus.isPlaying = true; // Set immediately before playing. Could affects events. - myStream.resume(); - timeUpdates(true); - if(!wasPlaying) { - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PLAY, myStatus)); - } - } - return true; - } else { - return false; - } - } - public function pause(time:Number = NaN):Boolean { - myStatus.playOnLoad = false; // Reset flag in case load/play issued immediately before this command, ie., before onMetadata() event. - myStatus.playOnSeek = false; // Reset flag in case play(time) issued before the command and is still seeking to time set. - - var wasPlaying:Boolean = myStatus.isPlaying; - - // To avoid possible loops with timeupdate and pause(time). A pause() does not have the problem. - var alreadyPausedAtTime:Boolean = false; - if(!isNaN(time) && myStatus.pausePosition == time) { - alreadyPausedAtTime = true; - } - - // Need to wait for metadata to load before ever issuing a pause. The metadata handler will call this function if needed, when ready. - if(myStream != null && myStatus.metaDataReady) { // myStream is a null until the 1st media is loaded. ie., The 1st ever setMedia being followed by a pause() or pause(t). - myStream.pause(); - } - if(myStatus.isPlaying) { - myStatus.isPlaying = false; - myStatus.pausePosition = myStream.time * 1000; - } - - if(!isNaN(time) && myStatus.srcSet) { - myStatus.pausePosition = time; - } - - if(wasPlaying) { - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PAUSE, myStatus)); - } - - if(myStatus.isStartingDownload) { - return true; - } else if(myStatus.loadRequired()) { - if(time > 0) { // We do not want the stop() command, which does pause(0), causing a load operation. - return load(); - } else { - return true; // Technically the pause(0) succeeded. ie., It did nothing, since nothing was required. - } - } else if(myStatus.isLoading || myStatus.isLoaded) { - if(myStatus.metaDataReady && myStatus.pausePosition > myStatus.duration) { // The time is invalid, ie., past the end. - myStatus.pausePosition = 0; - myStream.seek(0); - seekedEvent(); // Deals with seeking effect when using setMedia() then pause(huge). NB: There is no preceeding seeking event. - } else if(!isNaN(time)) { - if(getSeekTimeRatio() > getLoadRatio()) { // Use an estimate based on the downloaded amount - seeking(true); - } else { - if(myStatus.metaDataReady) { // Otherwise seek(0) will stop the metadata loading. - myStream.seek(myStatus.pausePosition/1000); - } - } - } - timeUpdates(false); - // Need to be careful with timeupdate event, otherwise a pause in a timeupdate event can cause a loop. - // Neither pause() nor pause(time) will cause a timeupdate loop. - if(wasPlaying || !isNaN(time) && !alreadyPausedAtTime) { - timeUpdateEvent(); - } - return true; - } else { - return false; - } - } - public function playHead(percent:Number):Boolean { - var time:Number = percent * getDuration() * getLoadRatio() / 100; - if(myStatus.isPlaying || myStatus.playOnLoad || myStatus.playOnSeek) { - return play(time); - } else { - return pause(time); - } - } - public function setVolume(v:Number):void { - myStatus.volume = v; - myTransform.volume = v; - if(myStream != null) { - myStream.soundTransform = myTransform; - } - } - private function updateStatusValues():void { - myStatus.seekPercent = 100 * getLoadRatio(); - myStatus.currentTime = getCurrentTime(); - myStatus.currentPercentRelative = 100 * getCurrentRatioRel(); - myStatus.currentPercentAbsolute = 100 * getCurrentRatioAbs(); - myStatus.duration = getDuration(); - } - public function getLoadRatio():Number { - if((myStatus.isLoading || myStatus.isLoaded) && myStream.bytesTotal > 0) { - return myStream.bytesLoaded / myStream.bytesTotal; - } else { - return 0; - } - } - public function getDuration():Number { - return myStatus.duration; // Set from meta data. - } - public function getCurrentTime():Number { - if(myStatus.isPlaying) { - return myStream.time * 1000; - } else { - return myStatus.pausePosition; - } - } - public function getCurrentRatioRel():Number { - if((getLoadRatio() > 0) && (getCurrentRatioAbs() <= getLoadRatio())) { - return getCurrentRatioAbs() / getLoadRatio(); - } else { - return 0; - } - } - public function getCurrentRatioAbs():Number { - if(getDuration() > 0) { - return getCurrentTime() / getDuration(); - } else { - return 0; - } - } - public function getSeekTimeRatio():Number { - if(getDuration() > 0) { - return myStatus.pausePosition / getDuration(); - } else { - return 1; - } - } - public function onMetaDataHandler(info:Object):void { // Used in connectStream() in myStream.client object. - // This event occurs when jumping to the start of static files! ie., seek(0) will cause this event to occur. - if(!myStatus.metaDataReady) { - this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG, myStatus, "onMetaDataHandler: " + info.duration + " | " + info.width + "x" + info.height)); - - myStatus.metaDataReady = true; // Set flag so that this event only effects jPlayer the 1st time. - myStatus.metaData = info; - myStatus.duration = info.duration * 1000; // Only available via Meta Data. - if(info.width != undefined) { - myVideo.width = myStatus.videoWidth = info.width; - } - if(info.height != undefined) { - myVideo.height = myStatus.videoHeight = info.height; - } - - if(myStatus.playOnLoad) { - myStatus.playOnLoad = false; // Capture the flag - if(myStatus.pausePosition > 0 ) { // Important for setMedia followed by play(time). - play(myStatus.pausePosition); - } else { - play(); // Not always sending pausePosition avoids the extra seek(0) for a normal play() command. - } - } else { - pause(myStatus.pausePosition); // Always send the pausePosition. Important for setMedia() followed by pause(time). Deals with not reading stream.time with setMedia() and play() immediately followed by stop() or pause(0) - } - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_LOADEDMETADATA, myStatus)); - } else { - this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG, myStatus, "onMetaDataHandler: Already read (NO EFFECT)")); - } - } - } -} diff --git a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerRtmp.as b/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerRtmp.as deleted file mode 100644 index aae8a4d..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerRtmp.as +++ /dev/null @@ -1,983 +0,0 @@ -/* - * jPlayer Plugin for jQuery JavaScript Library - * http://www.jplayer.org - * - * Copyright (c) 2009 - 2013 Happyworm Ltd - * Licensed under the MIT license. - * http://opensource.org/licenses/MIT - * - * Author: Robert M. Hall - * Date: 29th January 2013 - * Based on JplayerMp4.as with modifications for rtmp - */ - -package happyworm.jPlayer -{ - import flash.display.Sprite; - - import flash.media.Video; - import flash.media.SoundTransform; - - import flash.net.NetConnection; - import flash.net.NetStream; - import flash.net.Responder; - - import flash.utils.Timer; - import flash.utils.getTimer; - - import flash.events.NetStatusEvent; - import flash.events.SecurityErrorEvent; - import flash.events.TimerEvent; - import flash.events.ErrorEvent; - import flash.events.UncaughtErrorEvent; - import flash.utils.clearInterval; - import flash.utils.setInterval; - import happyworm.jPlayer.ConnectManager; - - public class JplayerRtmp extends Sprite - { - - public var myVideo:Video = new Video; - private var myConnection:NetConnection; - private var myStream:NetStream; - - public var responder:Responder; - - private var streamName:String; - - private var connectString:Object; - - private var firstTime:Boolean = true; - - private var myTransform:SoundTransform = new SoundTransform ; - - public var myStatus:JplayerStatus = new JplayerStatus ; - - private var ConnMgr:ConnectManager=new ConnectManager(); - - private var timeUpdateTimer:Timer = new Timer(250,0);// Matched to HTML event freq - private var progressTimer:Timer = new Timer(250,0);// Matched to HTML event freq - private var seekingTimer:Timer = new Timer(100,0);// Internal: How often seeking is checked to see if it is over. - - private var startBuffer:Number = 3; - private var maxBuffer:Number = 12; - - public function JplayerRtmp(volume:Number) - { - myConnection = new NetConnection ; - myConnection.client = this; - - - // Moved the netconnection negotiation into the ConnectManager.as class - not needed for initial connection - // may need to add eventHandler back in for errors only or just dispatch from the ConnectManager..revisit... - - // myConnection.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler); - // myConnection.addEventListener(SecurityErrorEvent.SECURITY_ERROR,securityErrorHandler); - myVideo.smoothing = true; - this.addChild(myVideo); - - timeUpdateTimer.addEventListener(TimerEvent.TIMER,timeUpdateHandler); - progressTimer.addEventListener(TimerEvent.TIMER,progressHandler); - seekingTimer.addEventListener(TimerEvent.TIMER,seekingHandler); - - myStatus.volume = volume; - - addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler); - - - } - - - - private function uncaughtErrorHandler(event:UncaughtErrorEvent):void - { - trace("UNCAUGHT ERROR - try loading again"); - - if (event.error is Error) - { - var error:Error = event.error as Error; - trace(error); - // do something with the error - } - else if (event.error is ErrorEvent) - { - var errorEvent:ErrorEvent = event.error as ErrorEvent; - // do something with the error - trace(errorEvent); - } - else - { - // a non-Error, non-ErrorEvent type was thrown and uncaught - } - load(); - } - - - - private function progressUpdates(active:Boolean):void - { - if (active) - { - progressTimer.start(); - } - else - { - progressTimer.stop(); - } - } - - private function progressHandler(e:TimerEvent):void - { - if (myStatus.isLoading) - { - if ((getLoadRatio() == 1)) - {// Close as can get to a loadComplete event since client.onPlayStatus only works with FMS - this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG,myStatus,"progressHandler: loadComplete")); - myStatus.loaded(); - progressUpdates(false); - } - } - progressEvent(); - } - - private function progressEvent():void - { - // temporarily disabled progress event dispatching - not really needed for rtmp - //this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG,myStatus,"progressEvent:")); - updateStatusValues(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PROGRESS,myStatus)); - } - - private function timeUpdates(active:Boolean):void - { - if (active) - { - timeUpdateTimer.start(); - } - else - { - timeUpdateTimer.stop(); - } - } - - private function timeUpdateHandler(e:TimerEvent):void - { - timeUpdateEvent(); - } - - private function timeUpdateEvent():void - { - updateStatusValues(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_TIMEUPDATE,myStatus)); - } - private function seeking(active:Boolean):void - { - if (active) - { - if (! myStatus.isSeeking) - { - seekingEvent(); - } - seekingTimer.start(); - } - else - { - if (myStatus.isSeeking) - { - seekedEvent(); - } - seekingTimer.stop(); - } - } - private function seekingHandler(e:TimerEvent):void - { - if ((getSeekTimeRatio() <= getLoadRatio())) - { - seeking(false); - if (myStatus.playOnSeek) - { - myStatus.playOnSeek = false;// Capture the flag. - play(myStatus.pausePosition);// Must pass time or the seek time is never set. - } - else - { - pause(myStatus.pausePosition);// Must pass time or the stream.time is read. - } - } - else if (myStatus.metaDataReady && myStatus.pausePosition > myStatus.duration) - { - // Illegal seek time - seeking(false); - pause(0); - } - } - private function seekingEvent():void - { - myStatus.isSeeking = true; - updateStatusValues(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_SEEKING,myStatus)); - } - private function seekedEvent():void - { - myStatus.isSeeking = false; - updateStatusValues(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_SEEKED,myStatus)); - } - - - private function netStatusHandler(e:NetStatusEvent):void - { - trace(("netStatusHandler: " + e.info.code)); - //this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG,myStatus,"netStatusHandler: '" + e.info.code + "'")); - //trace("BEFORE: bufferTime: "+myStream.bufferTime+" - bufferTimeMax: "+myStream.bufferTimeMax); - switch (e.info.code) - { - case "NetConnection.Connect.Success" : - // connectStream(); // This method did not do anything sensible anyway. - // Do not think this case occurs. This was for the static file connection. - // Which now seems to be handled by the Connection Manager. - break; - case "NetStream.Buffer.Full": - if(connectString.streamTYPE == "LIVE") { - myStream.bufferTime = startBuffer; - } else { - myStream.bufferTime = maxBuffer; - } - break; - case "NetStream.Buffer.Flush": - myStream.bufferTime = startBuffer; - break; - case "NetStream.Buffer.Empty": - myStream.bufferTime = startBuffer; - break; - case "NetStream.Seek.Notify": - myStream.bufferTime = startBuffer; - break; - case "NetStream.Play.Start" : - - if (firstTime) { - firstTime = false; // Capture flag - - myStatus.loading(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_LOADSTART,myStatus)); - - // NB: With MP4 player both audio and video types get connected to myVideo. - // NB: Had believed it was important for the audio too, otherwise what plays it? - if(videoBinding) { - myVideo.attachNetStream(myStream); - } - - setVolume(myStatus.volume); - - // Really the progress event just needs to be generated once, and should probably happen before now. - progressUpdates(true); - - // This is an ASSUMPTION! Made it so that the default GUI worked. - // Hence why this part should be refactored. - // Lots of commands sequences after setMedia would be corrupted by this assumption. - // Bascally, we assume that after a setMedia, you will play it. - // Doing setMedia and pause(15) cause the flag to be set incorrectly and the GUI locks up. - myStatus.isPlaying = true; // Should be handled elsewhere. - } - - // Under RTMP, this event code occurs every time the media starts playing and when a new position is seeked to, even when paused. - - // Since under RTMP the event behaviour is quite different, believe a refactor is best here. - // ie., Under RTMP we should be able to know a lot more info about the stream. - - // See onMetaDataHandler() for other condition, since duration is vital. - // See onResult() response handler too. - // Appears to be some duplication between onMetaDataHandler() and onResult(), along with a race between them occuring. - - break; - case "NetStream.Play.UnpublishNotify": - myStream.bufferTime = startBuffer; // was 3 - case "NetStream.Play.Stop" : - myStream.bufferTime = startBuffer; // was 3 - //this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG,myStatus,"NetStream.Play.Stop: getDuration() - getCurrentTime() = " + (getDuration() - getCurrentTime()))); - - // Check if media is at the end (or close) otherwise this was due to download bandwidth stopping playback. ie., Download is not fast enough. - if (Math.abs((getDuration() - getCurrentTime())) < 150) - {// Testing found 150ms worked best for M4A files, where playHead(99.9) caused a stuck state due to firing with ~116ms left to play. - //endedEvent(); - } - break; - case "NetStream.Seek.InvalidTime" : - // Used for capturing invalid set times and clicks on the end of the progress bar. - endedEvent(); - break; - case "NetStream.Play.StreamNotFound" : - myStatus.error(); - // Resets status except the src, and it sets srcError property.; - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_ERROR,myStatus)); - break; - } - //trace("AFTER: bufferTime: "+myStream.bufferTime+" - bufferTimeMax: "+myStream.bufferTimeMax); - // "NetStream.Seek.Notify" event code is not very useful. It occurs after every seek(t) command issued and does not appear to wait for the media to be ready. - } - private function endedEvent():void - { - trace("ENDED STREAM EVENT"); - var wasPlaying:Boolean = myStatus.isPlaying; - - // timeUpdates(false); - // timeUpdateEvent(); - pause(0); - - if (wasPlaying) - { - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_ENDED,myStatus)); - } - } - private function securityErrorHandler(event:SecurityErrorEvent):void - { - //this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG,myStatus,"securityErrorHandler.")); - } - public function connectStream():void - { - trace("CONNECTING"); - //this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG,myStatus,"connectStream.")); - //this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_CANPLAY,myStatus)); - - timeUpdates(true); - progressUpdates(true); - //myVideo.attachNetStream(myStream); - //setVolume(myStatus.volume); - } - - private function onResult(result:Object):void - { - trace("OnResult EVENT FIRED!"); - myStatus.duration = parseFloat(result.toString()) * 1000; - trace((("The stream length is " + result) + " seconds")); - - if(!myConnection.connected) { - load(); - } else { - //this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_CANPLAY,myStatus,"Rockit!")); - - //myStatus.loaded(); - //myStatus.isPlaying=true; - if (! myStatus.metaDataReady) - { - //this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG,myStatus,"onMetaDataHandler: " + myStatus.duration)); - - // Allow multiple onResult Handlers to affect size. As per PR #131 and #98. - // myStatus.metaDataReady = true; - - /*var info:Object = new Object(); - info.duration=myStatus.duration - info.width=undefined; - info.height=undefined; - myStatus.metaData = info; - */ - if (myStatus.playOnLoad) - { - myStatus.playOnLoad = false;// Capture the flag - if (myStatus.pausePosition > 0) - {// Important for setMedia followed by play(time). - play(myStatus.pausePosition); - } - else - { - play();// Not always sending pausePosition avoids the extra seek(0) for a normal play() command. - } - - } - else - { - pause(myStatus.pausePosition);// Always send the pausePosition. Important for setMedia() followed by pause(time). Deals with not reading stream.time with setMedia() and play() immediately followed by stop() or pause(0) - } - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_LOADEDMETADATA,myStatus)); - } - else - { - //this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG,myStatus,"onMetaDataHandler: Already read (NO EFFECT)")); - } - - myStream.play(streamName); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PLAY,myStatus)); - // timeUpdates(false); - } - - } - - private var overRideConnect:Boolean=false; - public function doneYet():void { - if(!myConnection.connected) { - // try again - ConnMgr.stopAll(true); - overRideConnect=true; - trace("Connected: "+myConnection.connected+" - "+myStatus.loadRequired()); - load(); - } - } - - private var videoBinding:Boolean=false; - public function setFile(src:String,videoSupport:Boolean=false):void - { - // videoSupport turns on/off video - by default no video, audio only - videoBinding=videoSupport; - /* Dont close the stream or netconnection here anymore so we can recycle if host/appname are the same - if ((myStream != null)) - { - myStream.close(); - myConnection.close(); - } - */ - if(ConnMgr.getNegotiating() == true) { - //ConnMgr.stopAll(); - ConnMgr.setNegotiating(false); - } - - myVideo.clear(); - - progressUpdates(false); - timeUpdates(false); - - myStatus.reset(); - myStatus.src = src; - myStatus.srcSet = true; - - firstTime = true; - - //myStatus.loaded(); - - if(src != "") { - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_CANPLAY,myStatus)); - } - - //timeUpdateEvent(); - } - - public function shutDownNcNs():void { - trace("Connections Closed"); - timeUpdates(false); - progressUpdates(false); - myStream.close(); - myConnection.close(); - - myStatus.reset(); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_ENDED,myStatus)); - } - - public function clearFile():void - { - if (myStream != null) - { - myStream.close(); - // Dont close the netConnection here any longer, as we may recycle it later - // may need an extra way to close manually if switching media types after an rtmp session - revisit - // myConnection.close(); - myStatus.reset(); - } - setFile(""); - myStatus.srcSet = false; - } - - public function parseRTMPsrcConnect(rtmpSrc:String):Object - { - // rtmp://cp76372.live.edgefcs.net/live/Flash1Office@60204 - var appName:String = ""; - var streamFileName:String = ""; - var startIndex:uint = 2 + rtmpSrc.indexOf("//"); - var streamTYPE:String = "recorded"; - var host:String = rtmpSrc.substr(startIndex); - var port:String = ""; - host = host.substr(0,host.indexOf("/")); - var endHost:Number = startIndex + host.length + 1; - - // See if there is a host port specified - if(host.indexOf(":") != -1) { - port = host.substr(host.indexOf(":")+1); - host = host.substr(0,host.indexOf(":")); - } - - // Akamai specific live streams - if (rtmpSrc.lastIndexOf("/live/") != -1) - { - trace("LIVE!"); - - - appName = rtmpSrc.substring(endHost,rtmpSrc.lastIndexOf("/live/") + 6); - streamFileName = rtmpSrc.substr(rtmpSrc.lastIndexOf("/live/") + 6); - streamTYPE="LIVE"; - } else { - streamTYPE="RECORDED"; - - } - - // Mp3 streams with standard appname/no instance name, mp3: prefix - if (rtmpSrc.indexOf(".mp3") != -1) - { - appName = rtmpSrc.substring(endHost,rtmpSrc.indexOf("mp3:")); - streamFileName = rtmpSrc.substr(rtmpSrc.indexOf("mp3:")); - streamFileName = streamFileName.substr(0,streamFileName.length - 4); - } - // rtmp://cp83813.edgefcs.net/ondemand/rob_hall/bruce_campbell_oldspice.flv - - // Mp4 streams with standard appname/no instance name, mp4: prefix - if (rtmpSrc.indexOf("mp4:") != -1) - { - appName = rtmpSrc.substring(endHost,rtmpSrc.indexOf("mp4:")); - streamFileName = rtmpSrc.substr(rtmpSrc.indexOf("mp4:")); - streamFileName = streamFileName.substr(0,streamFileName.length - 4); - } - - // .f4v streams with standard appname/no instance name, .flv extension - if (rtmpSrc.indexOf(".flv") != -1) - { - // allow use of ^ in rtmp string to indicate break point for an appname or instance name that - // contains a / in it where it would require multiple connection attempts or manual configuratiom - // of the appname/instancename - var endApp:Number=0; - if(rtmpSrc.indexOf("^") != -1) { - endApp=rtmpSrc.indexOf("^"); - rtmpSrc.replace("^", "/"); - } else { - endApp = rtmpSrc.indexOf("/",endHost); - } - appName = rtmpSrc.substring(endHost,endApp) + "/"; - streamFileName = rtmpSrc.substr(endApp+1); - } - - if(port=="") { - port="MULTI"; - } - //rtmp, rtmpt, rtmps, rtmpe, rtmpte - - - trace(("\n\n*** HOST: " + host)); - trace(("*** PORT: " + port)); - trace(("*** APPNAME: " + appName)); - trace(("*** StreamName: " + streamFileName)); - - var streamParts:Object = new Object; - streamParts.streamTYPE=streamTYPE; - streamParts.appName = appName; - streamParts.streamFileName = streamFileName; - streamParts.hostName = host; - streamName = streamFileName; - - return streamParts; - } - - public function load():Boolean - { - //trace("LOAD: "+myStatus.src); - if (myStatus.loadRequired() || overRideConnect==true) - { - overRideConnect=false; - myStatus.startingDownload(); - var lastAppName:String; - var lastHostName:String; - - try{ - // we do a try, as these properties might not exist yet - if(connectString.appName != "" && connectString.appName != undefined) { - trace("PREVIOUS APP/HOST INFO AVAILABLE"); - lastAppName = connectString.appName; - lastHostName = connectString.hostName; - trace("LAST: "+lastAppName,lastHostName); - } - } catch (error:Error) { - //trace("*** Caught an error condition: "+error); - } - - connectString = parseRTMPsrcConnect(myStatus.src); - - - - trace("**** LOAD :: CONNECT SOURCE: " +connectString.hostName +" "+ connectString.appName); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_WAITING, myStatus)); - - if((connectString.appName == lastAppName && connectString.hostName == lastHostName) && (myConnection.connected)) { - // recycle the netConnection - trace("RECYCLING NETCONNECTION"); - if ((myStream != null)) - { - myStream.close(); - } - connectStream(); - onBWDone(null,myConnection); - } else { - // myConnection.connect(connectString.appName); - trace("NEW NetConnection Negotiation"); - if ((myStream != null)) - { - myStream.close(); - myConnection.close(); - } - - ConnMgr.stopAll(true); - ConnMgr.negotiateConnect(this,connectString.hostName,connectString.appName); - } - - trace("**** LOAD2 :: CONNECT SOURCE: " +connectString.hostName +" "+ connectString.appName); - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_WAITING, myStatus)); - return true; - } - else - { - return false; - } - } - - - - public function onFCUnsubscribe(info:Object):void - { - trace(("onFCUnSubscribe worked" + info)); - } - - public function onFCSubscribe(info:Object):void - { - trace(("onFCSubscribe worked" + info)); - } - - public function onBWDone(info:Object,nc:NetConnection):void - { - if(nc.connected) { - myConnection=nc; - trace(((("onBWDone " + info) + " :: ") + myStatus.src)); - - var customClient:Object = new Object ; - customClient.onMetaData = onMetaDataHandler; - customClient.onPlayStatus = onPlayStatusHandler;// According to the forums and my tests, onPlayStatus only works with FMS (Flash Media Server). - - myStream = null; - myStream = new NetStream(myConnection); - myStream.addEventListener(NetStatusEvent.NET_STATUS,netStatusHandler); - myStream.client = customClient; - if(connectString.streamTYPE == "LIVE") { - myStream.bufferTime = 3; // was 3 - myStream.bufferTimeMax = 24; - startBuffer = 3; - maxBuffer = 12; - - } else { - myStream.bufferTime = .2; // was 3 - myStream.bufferTimeMax = 0; - startBuffer = .2; - maxBuffer = 12; - } - - - //streamName=""; - //var connectString:Object = parseRTMPsrcConnect(myStatus.src); - //streamName=connectString.streamFileName; - - responder = new Responder(onResult); - myConnection.call("getStreamLength",responder,streamName); - } else { - connectStream(); - } - - trace("PLAY SOURCE: "+connectString); - - } - - public function play(time:Number = NaN):Boolean { - //trace("PLAY: "+time+" - isPlaying: "+myStatus.isPlaying +" - myStatus.isStartingDownload:"+myStatus.isStartingDownload); - var wasPlaying:Boolean = myStatus.isPlaying; - - if(!isNaN(time) && myStatus.srcSet) { - if(myStatus.isPlaying) { - myStream.pause(); - myStatus.isPlaying = false; - } - myStatus.pausePosition = time; - } - - if(myStatus.isStartingDownload) { - myStatus.playOnLoad = true; // Raise flag, captured in onMetaDataHandler() - return true; - } else if(myStatus.loadRequired()) { - myStatus.playOnLoad = true; // Raise flag, captured in onMetaDataHandler() - return load(); - } else if((myStatus.isLoading || myStatus.isLoaded) && !myStatus.isPlaying) { - if(myStatus.metaDataReady && myStatus.pausePosition > myStatus.duration && connectString.streamTYPE != "LIVE") { // The time is invalid, ie., past the end. - myStream.pause(); // Since it is playing by default at this point. - myStatus.pausePosition = 0; - trace("SEEKER!"); - myStream.seek(0); - timeUpdates(false); - timeUpdateEvent(); - if(wasPlaying) { // For when playing and then get a play(huge) - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PAUSE, myStatus)); - } - } else if(getSeekTimeRatio() > getLoadRatio()) { // Use an estimate based on the downloaded amount - myStatus.playOnSeek = true; - seeking(true); - trace("SEEKER PAUSE!"); - myStream.pause(); // Since it is playing by default at this point. - } else { - if(!isNaN(time)) { // Avoid using seek() when it is already correct. - trace("SEEKER3"); - myStream.seek(myStatus.pausePosition/1000); // Since time is in ms and seek() takes seconds - } - myStatus.isPlaying = true; // Set immediately before playing. Could affects events. - trace("SHOULD GET RESUME!"); - myStream.resume(); - timeUpdates(true); - if(!wasPlaying) { - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PLAY, myStatus)); - } - } - return true; - } else { - return false; - } - } - - public function pause(time:Number=NaN):Boolean - { - //trace("PAUSE: "+time); - myStatus.playOnLoad = false;// Reset flag in case load/play issued immediately before this command, ie., before onMetadata() event. - myStatus.playOnSeek = false;// Reset flag in case play(time) issued before the command and is still seeking to time set. - - var wasPlaying:Boolean = myStatus.isPlaying; - - - // To avoid possible loops with timeupdate and pause(time). A pause() does not have the problem. - var alreadyPausedAtTime:Boolean = false; - if(!isNaN(time) && myStatus.pausePosition == time) { - alreadyPausedAtTime = true; - } - - trace("!isNaN: "+!isNaN(time) +" isNaN: "+isNaN(time)); - - // Need to wait for metadata to load before ever issuing a pause. The metadata handler will call this function if needed, when ready. - if (((myStream != null) && myStatus.metaDataReady)) - {// myStream is a null until the 1st media is loaded. ie., The 1st ever setMedia being followed by a pause() or pause(t). - - if(connectString.streamTYPE == "LIVE") { - trace("PAUSING LIVE"); - myStream.play(false) - } else { - trace("PAUSING RECORDED"); - myStream.pause(); - } - } - if (myStatus.isPlaying) - { - myStatus.isPlaying = false; - myStatus.pausePosition = myStream.time * 1000; - } - - if (! isNaN(time) && myStatus.srcSet) - { - myStatus.pausePosition = time; - } - - if (wasPlaying) - { - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_PAUSE,myStatus)); - } - - if (myStatus.isStartingDownload) - { - return true; - } - else if (myStatus.loadRequired()) - { - if ((time > 0)) - {// We do not want the stop() command, which does pause(0), causing a load operation. - return load(); - } - else - { - return true;// Technically the pause(0) succeeded. ie., It did nothing, since nothing was required. - } - } - else if (myStatus.isLoading || myStatus.isLoaded) - { - if (myStatus.metaDataReady && myStatus.pausePosition > myStatus.duration && connectString.streamTYPE != "LIVE" ) - {// The time is invalid, ie., past the end. - myStatus.pausePosition = 0; - - trace("GOT HERE!"); - myStream.seek(0); - seekedEvent();// Deals with seeking effect when using setMedia() then pause(huge). NB: There is no preceeding seeking event. - } - else if (! isNaN(time)) - { - if ((getSeekTimeRatio() > getLoadRatio())) - {// Use an estimate based on the downloaded amount - seeking(true); - } - else - { - if (myStatus.metaDataReady && connectString.streamTYPE != "LIVE") - {// Otherwise seek(0) will stop the metadata loading. - trace("GOT HERE TOO!"); - myStream.seek(myStatus.pausePosition / 1000); - } - } - } - timeUpdates(false); - // Need to be careful with timeupdate event, otherwise a pause in a timeupdate event can cause a loop. - // Neither pause() nor pause(time) will cause a timeupdate loop. - if(wasPlaying || !isNaN(time) && !alreadyPausedAtTime) { - timeUpdateEvent(); - } - return true; - } - else - { - return false; - } - } - public function playHead(percent:Number):Boolean - { - var time:Number = percent * getDuration() * getLoadRatio() / 100; - if (myStatus.isPlaying || myStatus.playOnLoad || myStatus.playOnSeek) - { - return play(time); - } - else - { - return pause(time); - } - } - public function setVolume(v:Number):void - { - myStatus.volume = v; - myTransform.volume = v; - if ((myStream != null)) - { - myStream.soundTransform = myTransform; - } - } - private function updateStatusValues():void - { - //myStatus.seekPercent = 100 * getLoadRatio(); - myStatus.seekPercent = 100; - myStatus.currentTime = getCurrentTime(); - myStatus.currentPercentRelative = 100 * getCurrentRatioRel(); - myStatus.currentPercentAbsolute = 100 * getCurrentRatioAbs(); - myStatus.duration = getDuration(); - } - public function getLoadRatio():Number - { - return 1; - /*trace("LoadRatio:"+myStream.bytesLoaded, myStream.bytesTotal); - if((myStatus.isLoading || myStatus.isLoaded) && myStream.bytesTotal > 0) { - - return myStream.bytesLoaded / myStream.bytesTotal; - } else { - return 0; - } - */ - - } - public function getDuration():Number - { - return myStatus.duration;// Set from meta data. - } - public function getCurrentTime():Number - { - if (myStatus.isPlaying) - { - //trace(myStream.time * 1000); - return myStream.time * 1000; // was +1000 - } - else - { - return myStatus.pausePosition; - } - } - public function getCurrentRatioRel():Number - { - - if ((getCurrentRatioAbs() <= getLoadRatio())) - { - //if((getLoadRatio() > 0) && (getCurrentRatioAbs() <= getLoadRatio())) { - return getCurrentRatioAbs() / getLoadRatio(); - } - else - { - return 0; - } - } - public function getCurrentRatioAbs():Number - { - if ((getDuration() > 0)) - { - return getCurrentTime() / getDuration(); - } - else - { - return 0; - } - } - public function getSeekTimeRatio():Number - { - if ((getDuration() > 0)) - { - return myStatus.pausePosition / getDuration(); - } - else - { - return 1; - } - } - public function onPlayStatusHandler(infoObject:Object):void - { - trace((("OnPlayStatusHandler called: (" + getTimer()) + " ms)")); - for (var prop:* in infoObject) - { - trace(((("\t" + prop) + ":\t") + infoObject[prop])); - } - if (infoObject.code == "NetStream.Play.Complete") - { - endedEvent(); - } - } - - public function onMetaDataHandler(info:Object):void - {// Used in connectStream() in myStream.client object. - // This event occurs when jumping to the start of static files! ie., seek(0) will cause this event to occur. - - if (! myStatus.metaDataReady) - { - trace("\n\n*** METADATA FIRED! ***\n\n"); - //this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG,myStatus,"onMetaDataHandler: " + info.duration + " | " + info.width + "x" + info.height)); - - myStatus.metaDataReady = true;// Set flag so that this event only effects jPlayer the 1st time. - myStatus.metaData = info; - myStatus.duration = info.duration * 1000;// Only available via Meta Data. - if (info.width != undefined) - { - myVideo.width = myStatus.videoWidth = info.width; - } - if (info.height != undefined) - { - myVideo.height = myStatus.videoHeight = info.height; - } - - if (myStatus.playOnLoad) - { - myStatus.playOnLoad = false;// Capture the flag - if (myStatus.pausePosition > 0) - {// Important for setMedia followed by play(time). - play(myStatus.pausePosition); - } - else - { - play();// Not always sending pausePosition avoids the extra seek(0) for a normal play() command. - } - } - else - { - pause(myStatus.pausePosition);// Always send the pausePosition. Important for setMedia() followed by pause(time). Deals with not reading stream.time with setMedia() and play() immediately followed by stop() or pause(0) - } - this.dispatchEvent(new JplayerEvent(JplayerEvent.JPLAYER_LOADEDMETADATA,myStatus)); - } - else - { - //this.dispatchEvent(new JplayerEvent(JplayerEvent.DEBUG_MSG,myStatus,"onMetaDataHandler: Already read (NO EFFECT)")); - } - } -} -} \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerStatus.as b/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerStatus.as deleted file mode 100644 index da9f5ca..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/JplayerStatus.as +++ /dev/null @@ -1,110 +0,0 @@ -/* - * jPlayer Plugin for jQuery JavaScript Library - * http://www.jplayer.org - * - * Copyright (c) 2009 - 2013 Happyworm Ltd - * Licensed under the MIT license. - * http://opensource.org/licenses/MIT - * - * Author: Mark J Panaghiston - * Date: 5th June 2013 - */ - -package happyworm.jPlayer { - public class JplayerStatus { - - public static const VERSION:String = "2.4.0"; // The version of the Flash jPlayer entity. - - public var volume:Number = 0.5; // Not affected by reset() - public var muted:Boolean = false; // Not affected by reset() - - public var src:String; - public var srcError:Boolean; - - public var srcSet:Boolean; - public var isPlaying:Boolean; - public var isSeeking:Boolean; - - public var isWaiting:Boolean; - - public var playOnLoad:Boolean; - public var playOnSeek:Boolean; - - public var isStartingDownload:Boolean; - public var isLoading:Boolean; - public var isLoaded:Boolean; - - public var pausePosition:Number; - - public var seekPercent:Number; - public var currentTime:Number; - public var currentPercentRelative:Number; - public var currentPercentAbsolute:Number; - public var duration:Number; - - public var videoWidth:Number; - public var videoHeight:Number; - - public var metaDataReady:Boolean; - public var metaData:Object; - - public function JplayerStatus() { - reset(); - } - public function reset():void { - src = ""; - srcError = false; - - srcSet = false; - isPlaying = false; - isSeeking = false; - - isWaiting = false; - - playOnLoad = false; - playOnSeek = false; - - isStartingDownload = false; - isLoading = false; - isLoaded = false; - - pausePosition = 0; - - seekPercent = 0; - currentTime = 0; - currentPercentRelative = 0; - currentPercentAbsolute = 0; - duration = 0; - - videoWidth = 0; - videoHeight = 0; - - metaDataReady = false; - metaData = {}; - } - public function error():void { - var srcSaved:String = src; - reset(); - src = srcSaved; - srcError = true; - } - public function loadRequired():Boolean { - return (srcSet && !isStartingDownload && !isLoading && !isLoaded); - } - public function startingDownload():void { - isStartingDownload = true; - isLoading = false; - isLoaded = false; - } - public function loading():void { - isStartingDownload = false; - isLoading = true; - isLoaded = false; - } - public function loaded():void { - isStartingDownload = false; - isLoading = false; - isLoaded = true; - } - } -} diff --git a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/TraceOut.as b/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/TraceOut.as deleted file mode 100644 index 75be070..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/actionscript/happyworm/jPlayer/TraceOut.as +++ /dev/null @@ -1,62 +0,0 @@ -/* - * jPlayer Plugin for jQuery JavaScript Library - * http://www.jplayer.org - * - * Copyright (c) 2009 - 2013 Happyworm Ltd - * Licensed under the MIT license. - * http://opensource.org/licenses/MIT - * - * Author: Robert M. Hall - * Date: 7th August 2012 - */ - -package happyworm.jPlayer -{ - import flash.net.LocalConnection; - import flash.events.StatusEvent; - import flash.system.Capabilities; - import flash.utils.getTimer; - - public class TraceOut - { - - private var outgoing_lc:LocalConnection = new LocalConnection (); - private var firstEvent:Boolean = true; - private var _localAIRDebug:Boolean = false; - - public function TraceOut() - { - outgoing_lc.addEventListener(StatusEvent.STATUS, lcListener); - outgoing_lc.send("_log_output","startLogging",""); - } - - private function lcListener(event:StatusEvent):void - { - // Must have this listener to avoid errors - if (event.level == "error") - { - _localAIRDebug = false; - } - else if(event.level =="status" && firstEvent==true) - { - firstEvent = false; - tracer("<< Successful Connection To Event Logger >>"); - tracer("DEBUG INFO: \n<"+Capabilities.serverString + ">\nFlash Player Version: " + Capabilities.version + "\n"); - _localAIRDebug = true; - } - } - - public function localAIRDebug():Boolean - { - return _localAIRDebug; - } - - public function tracer(msg:String):void - { - trace(msg); - var outMsg:String = "[" + getTimer() + "ms] " + msg; - outgoing_lc.send("_log_output","displayMsg",outMsg); - - } - } -} diff --git a/libraries/filemanager-9.12.1/js/jPlayer/add-on/jplayer.playlist.js b/libraries/filemanager-9.12.1/js/jPlayer/add-on/jplayer.playlist.js deleted file mode 100644 index 725caf0..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/add-on/jplayer.playlist.js +++ /dev/null @@ -1,496 +0,0 @@ -/* - * Playlist Object for the jPlayer Plugin - * http://www.jplayer.org - * - * Copyright (c) 2009 - 2014 Happyworm Ltd - * Licensed under the MIT license. - * http://www.opensource.org/licenses/MIT - * - * Author: Mark J Panaghiston - * Version: 2.4.1 - * Date: 19th November 2014 - * - * Requires: - * - jQuery 1.7.0+ - * - jPlayer 2.8.2+ - */ - -/*global jPlayerPlaylist:true */ - -(function($, undefined) { - - jPlayerPlaylist = function(cssSelector, playlist, options) { - var self = this; - - this.current = 0; - this.loop = false; // Flag used with the jPlayer repeat event - this.shuffled = false; - this.removing = false; // Flag is true during remove animation, disabling the remove() method until complete. - - this.cssSelector = $.extend({}, this._cssSelector, cssSelector); // Object: Containing the css selectors for jPlayer and its cssSelectorAncestor - this.options = $.extend(true, { - keyBindings: { - next: { - key: 221, // ] - fn: function() { - self.next(); - } - }, - previous: { - key: 219, // [ - fn: function() { - self.previous(); - } - }, - shuffle: { - key: 83, // s - fn: function() { - self.shuffle(); - } - } - }, - stateClass: { - shuffled: "jp-state-shuffled" - } - }, this._options, options); // Object: The jPlayer constructor options for this playlist and the playlist options - - this.playlist = []; // Array of Objects: The current playlist displayed (Un-shuffled or Shuffled) - this.original = []; // Array of Objects: The original playlist - - this._initPlaylist(playlist); // Copies playlist to this.original. Then mirrors this.original to this.playlist. Creating two arrays, where the element pointers match. (Enables pointer comparison.) - - // Setup the css selectors for the extra interface items used by the playlist. - this.cssSelector.details = this.cssSelector.cssSelectorAncestor + " .jp-details"; // Note that jPlayer controls the text in the title element. - this.cssSelector.playlist = this.cssSelector.cssSelectorAncestor + " .jp-playlist"; - this.cssSelector.next = this.cssSelector.cssSelectorAncestor + " .jp-next"; - this.cssSelector.previous = this.cssSelector.cssSelectorAncestor + " .jp-previous"; - this.cssSelector.shuffle = this.cssSelector.cssSelectorAncestor + " .jp-shuffle"; - this.cssSelector.shuffleOff = this.cssSelector.cssSelectorAncestor + " .jp-shuffle-off"; - - // Override the cssSelectorAncestor given in options - this.options.cssSelectorAncestor = this.cssSelector.cssSelectorAncestor; - - // Override the default repeat event handler - this.options.repeat = function(event) { - self.loop = event.jPlayer.options.loop; - }; - - // Create a ready event handler to initialize the playlist - $(this.cssSelector.jPlayer).bind($.jPlayer.event.ready, function() { - self._init(); - }); - - // Create an ended event handler to move to the next item - $(this.cssSelector.jPlayer).bind($.jPlayer.event.ended, function() { - self.next(); - }); - - // Create a play event handler to pause other instances - $(this.cssSelector.jPlayer).bind($.jPlayer.event.play, function() { - $(this).jPlayer("pauseOthers"); - }); - - // Create a resize event handler to show the title in full screen mode. - $(this.cssSelector.jPlayer).bind($.jPlayer.event.resize, function(event) { - if(event.jPlayer.options.fullScreen) { - $(self.cssSelector.details).show(); - } else { - $(self.cssSelector.details).hide(); - } - }); - - // Create click handlers for the extra buttons that do playlist functions. - $(this.cssSelector.previous).click(function(e) { - e.preventDefault(); - self.previous(); - self.blur(this); - }); - - $(this.cssSelector.next).click(function(e) { - e.preventDefault(); - self.next(); - self.blur(this); - }); - - $(this.cssSelector.shuffle).click(function(e) { - e.preventDefault(); - if(self.shuffled && $(self.cssSelector.jPlayer).jPlayer("option", "useStateClassSkin")) { - self.shuffle(false); - } else { - self.shuffle(true); - } - self.blur(this); - }); - $(this.cssSelector.shuffleOff).click(function(e) { - e.preventDefault(); - self.shuffle(false); - self.blur(this); - }).hide(); - - // Put the title in its initial display state - if(!this.options.fullScreen) { - $(this.cssSelector.details).hide(); - } - - // Remove the empty
  • from the page HTML. Allows page to be valid HTML, while not interfereing with display animations - $(this.cssSelector.playlist + " ul").empty(); - - // Create .on() handlers for the playlist items along with the free media and remove controls. - this._createItemHandlers(); - - // Instance jPlayer - $(this.cssSelector.jPlayer).jPlayer(this.options); - }; - - jPlayerPlaylist.prototype = { - _cssSelector: { // static object, instanced in constructor - jPlayer: "#jquery_jplayer_1", - cssSelectorAncestor: "#jp_container_1" - }, - _options: { // static object, instanced in constructor - playlistOptions: { - autoPlay: false, - loopOnPrevious: false, - shuffleOnLoop: true, - enableRemoveControls: false, - displayTime: 'slow', - addTime: 'fast', - removeTime: 'fast', - shuffleTime: 'slow', - itemClass: "jp-playlist-item", - freeGroupClass: "jp-free-media", - freeItemClass: "jp-playlist-item-free", - removeItemClass: "jp-playlist-item-remove" - } - }, - option: function(option, value) { // For changing playlist options only - if(value === undefined) { - return this.options.playlistOptions[option]; - } - - this.options.playlistOptions[option] = value; - - switch(option) { - case "enableRemoveControls": - this._updateControls(); - break; - case "itemClass": - case "freeGroupClass": - case "freeItemClass": - case "removeItemClass": - this._refresh(true); // Instant - this._createItemHandlers(); - break; - } - return this; - }, - _init: function() { - var self = this; - this._refresh(function() { - if(self.options.playlistOptions.autoPlay) { - self.play(self.current); - } else { - self.select(self.current); - } - }); - }, - _initPlaylist: function(playlist) { - this.current = 0; - this.shuffled = false; - this.removing = false; - this.original = $.extend(true, [], playlist); // Copy the Array of Objects - this._originalPlaylist(); - }, - _originalPlaylist: function() { - var self = this; - this.playlist = []; - // Make both arrays point to the same object elements. Gives us 2 different arrays, each pointing to the same actual object. ie., Not copies of the object. - $.each(this.original, function(i) { - self.playlist[i] = self.original[i]; - }); - }, - _refresh: function(instant) { - /* instant: Can be undefined, true or a function. - * undefined -> use animation timings - * true -> no animation - * function -> use animation timings and excute function at half way point. - */ - var self = this; - - if(instant && !$.isFunction(instant)) { - $(this.cssSelector.playlist + " ul").empty(); - $.each(this.playlist, function(i) { - $(self.cssSelector.playlist + " ul").append(self._createListItem(self.playlist[i])); - }); - this._updateControls(); - } else { - var displayTime = $(this.cssSelector.playlist + " ul").children().length ? this.options.playlistOptions.displayTime : 0; - - $(this.cssSelector.playlist + " ul").slideUp(displayTime, function() { - var $this = $(this); - $(this).empty(); - - $.each(self.playlist, function(i) { - $this.append(self._createListItem(self.playlist[i])); - }); - self._updateControls(); - if($.isFunction(instant)) { - instant(); - } - if(self.playlist.length) { - $(this).slideDown(self.options.playlistOptions.displayTime); - } else { - $(this).show(); - } - }); - } - }, - _createListItem: function(media) { - var self = this; - - // Wrap the
  • contents in a
    - var listItem = "
  • "; - - // Create remove control - listItem += "×"; - - // Create links to free media - if(media.free) { - var first = true; - listItem += "("; - $.each(media, function(property,value) { - if($.jPlayer.prototype.format[property]) { // Check property is a media format. - if(first) { - first = false; - } else { - listItem += " | "; - } - listItem += "" + property + ""; - } - }); - listItem += ")"; - } - - // The title is given next in the HTML otherwise the float:right on the free media corrupts in IE6/7 - listItem += "" + media.title + (media.artist ? " " : "") + ""; - listItem += "
  • "; - - return listItem; - }, - _createItemHandlers: function() { - var self = this; - // Create live handlers for the playlist items - $(this.cssSelector.playlist).off("click", "a." + this.options.playlistOptions.itemClass).on("click", "a." + this.options.playlistOptions.itemClass, function(e) { - e.preventDefault(); - var index = $(this).parent().parent().index(); - if(self.current !== index) { - self.play(index); - } else { - $(self.cssSelector.jPlayer).jPlayer("play"); - } - self.blur(this); - }); - - // Create live handlers that disable free media links to force access via right click - $(this.cssSelector.playlist).off("click", "a." + this.options.playlistOptions.freeItemClass).on("click", "a." + this.options.playlistOptions.freeItemClass, function(e) { - e.preventDefault(); - $(this).parent().parent().find("." + self.options.playlistOptions.itemClass).click(); - self.blur(this); - }); - - // Create live handlers for the remove controls - $(this.cssSelector.playlist).off("click", "a." + this.options.playlistOptions.removeItemClass).on("click", "a." + this.options.playlistOptions.removeItemClass, function(e) { - e.preventDefault(); - var index = $(this).parent().parent().index(); - self.remove(index); - self.blur(this); - }); - }, - _updateControls: function() { - if(this.options.playlistOptions.enableRemoveControls) { - $(this.cssSelector.playlist + " ." + this.options.playlistOptions.removeItemClass).show(); - } else { - $(this.cssSelector.playlist + " ." + this.options.playlistOptions.removeItemClass).hide(); - } - - if(this.shuffled) { - $(this.cssSelector.jPlayer).jPlayer("addStateClass", "shuffled"); - } else { - $(this.cssSelector.jPlayer).jPlayer("removeStateClass", "shuffled"); - } - if($(this.cssSelector.shuffle).length && $(this.cssSelector.shuffleOff).length) { - if(this.shuffled) { - $(this.cssSelector.shuffleOff).show(); - $(this.cssSelector.shuffle).hide(); - } else { - $(this.cssSelector.shuffleOff).hide(); - $(this.cssSelector.shuffle).show(); - } - } - }, - _highlight: function(index) { - if(this.playlist.length && index !== undefined) { - $(this.cssSelector.playlist + " .jp-playlist-current").removeClass("jp-playlist-current"); - $(this.cssSelector.playlist + " li:nth-child(" + (index + 1) + ")").addClass("jp-playlist-current").find(".jp-playlist-item").addClass("jp-playlist-current"); - // $(this.cssSelector.details + " li").html("" + (this.playlist[index].artist ? " " : "")); - } - }, - setPlaylist: function(playlist) { - this._initPlaylist(playlist); - this._init(); - }, - add: function(media, playNow) { - $(this.cssSelector.playlist + " ul").append(this._createListItem(media)).find("li:last-child").hide().slideDown(this.options.playlistOptions.addTime); - this._updateControls(); - this.original.push(media); - this.playlist.push(media); // Both array elements share the same object pointer. Comforms with _initPlaylist(p) system. - - if(playNow) { - this.play(this.playlist.length - 1); - } else { - if(this.original.length === 1) { - this.select(0); - } - } - }, - remove: function(index) { - var self = this; - - if(index === undefined) { - this._initPlaylist([]); - this._refresh(function() { - $(self.cssSelector.jPlayer).jPlayer("clearMedia"); - }); - return true; - } else { - - if(this.removing) { - return false; - } else { - index = (index < 0) ? self.original.length + index : index; // Negative index relates to end of array. - if(0 <= index && index < this.playlist.length) { - this.removing = true; - - $(this.cssSelector.playlist + " li:nth-child(" + (index + 1) + ")").slideUp(this.options.playlistOptions.removeTime, function() { - $(this).remove(); - - if(self.shuffled) { - var item = self.playlist[index]; - $.each(self.original, function(i) { - if(self.original[i] === item) { - self.original.splice(i, 1); - return false; // Exit $.each - } - }); - self.playlist.splice(index, 1); - } else { - self.original.splice(index, 1); - self.playlist.splice(index, 1); - } - - if(self.original.length) { - if(index === self.current) { - self.current = (index < self.original.length) ? self.current : self.original.length - 1; // To cope when last element being selected when it was removed - self.select(self.current); - } else if(index < self.current) { - self.current--; - } - } else { - $(self.cssSelector.jPlayer).jPlayer("clearMedia"); - self.current = 0; - self.shuffled = false; - self._updateControls(); - } - - self.removing = false; - }); - } - return true; - } - } - }, - select: function(index) { - index = (index < 0) ? this.original.length + index : index; // Negative index relates to end of array. - if(0 <= index && index < this.playlist.length) { - this.current = index; - this._highlight(index); - $(this.cssSelector.jPlayer).jPlayer("setMedia", this.playlist[this.current]); - } else { - this.current = 0; - } - }, - play: function(index) { - index = (index < 0) ? this.original.length + index : index; // Negative index relates to end of array. - if(0 <= index && index < this.playlist.length) { - if(this.playlist.length) { - this.select(index); - $(this.cssSelector.jPlayer).jPlayer("play"); - } - } else if(index === undefined) { - $(this.cssSelector.jPlayer).jPlayer("play"); - } - }, - pause: function() { - $(this.cssSelector.jPlayer).jPlayer("pause"); - }, - next: function() { - var index = (this.current + 1 < this.playlist.length) ? this.current + 1 : 0; - - if(this.loop) { - // See if we need to shuffle before looping to start, and only shuffle if more than 1 item. - if(index === 0 && this.shuffled && this.options.playlistOptions.shuffleOnLoop && this.playlist.length > 1) { - this.shuffle(true, true); // playNow - } else { - this.play(index); - } - } else { - // The index will be zero if it just looped round - if(index > 0) { - this.play(index); - } - } - }, - previous: function() { - var index = (this.current - 1 >= 0) ? this.current - 1 : this.playlist.length - 1; - - if(this.loop && this.options.playlistOptions.loopOnPrevious || index < this.playlist.length - 1) { - this.play(index); - } - }, - shuffle: function(shuffled, playNow) { - var self = this; - - if(shuffled === undefined) { - shuffled = !this.shuffled; - } - - if(shuffled || shuffled !== this.shuffled) { - - $(this.cssSelector.playlist + " ul").slideUp(this.options.playlistOptions.shuffleTime, function() { - self.shuffled = shuffled; - if(shuffled) { - self.playlist.sort(function() { - return 0.5 - Math.random(); - }); - } else { - self._originalPlaylist(); - } - self._refresh(true); // Instant - - if(playNow || !$(self.cssSelector.jPlayer).data("jPlayer").status.paused) { - self.play(0); - } else { - self.select(0); - } - - $(this).slideDown(self.options.playlistOptions.shuffleTime); - }); - } - }, - blur: function(that) { - if($(this.cssSelector.jPlayer).jPlayer("option", "autoBlur")) { - $(that).blur(); - } - } - }; -})(jQuery); diff --git a/libraries/filemanager-9.12.1/js/jPlayer/add-on/jplayer.playlist.min.js b/libraries/filemanager-9.12.1/js/jPlayer/add-on/jplayer.playlist.min.js deleted file mode 100644 index 6a0e866..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/add-on/jplayer.playlist.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jPlayerPlaylist for jPlayer 2.9.2 ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ -!function(a,b){jPlayerPlaylist=function(b,c,d){var e=this;this.current=0,this.loop=!1,this.shuffled=!1,this.removing=!1,this.cssSelector=a.extend({},this._cssSelector,b),this.options=a.extend(!0,{keyBindings:{next:{key:221,fn:function(){e.next()}},previous:{key:219,fn:function(){e.previous()}},shuffle:{key:83,fn:function(){e.shuffle()}}},stateClass:{shuffled:"jp-state-shuffled"}},this._options,d),this.playlist=[],this.original=[],this._initPlaylist(c),this.cssSelector.details=this.cssSelector.cssSelectorAncestor+" .jp-details",this.cssSelector.playlist=this.cssSelector.cssSelectorAncestor+" .jp-playlist",this.cssSelector.next=this.cssSelector.cssSelectorAncestor+" .jp-next",this.cssSelector.previous=this.cssSelector.cssSelectorAncestor+" .jp-previous",this.cssSelector.shuffle=this.cssSelector.cssSelectorAncestor+" .jp-shuffle",this.cssSelector.shuffleOff=this.cssSelector.cssSelectorAncestor+" .jp-shuffle-off",this.options.cssSelectorAncestor=this.cssSelector.cssSelectorAncestor,this.options.repeat=function(a){e.loop=a.jPlayer.options.loop},a(this.cssSelector.jPlayer).bind(a.jPlayer.event.ready,function(){e._init()}),a(this.cssSelector.jPlayer).bind(a.jPlayer.event.ended,function(){e.next()}),a(this.cssSelector.jPlayer).bind(a.jPlayer.event.play,function(){a(this).jPlayer("pauseOthers")}),a(this.cssSelector.jPlayer).bind(a.jPlayer.event.resize,function(b){b.jPlayer.options.fullScreen?a(e.cssSelector.details).show():a(e.cssSelector.details).hide()}),a(this.cssSelector.previous).click(function(a){a.preventDefault(),e.previous(),e.blur(this)}),a(this.cssSelector.next).click(function(a){a.preventDefault(),e.next(),e.blur(this)}),a(this.cssSelector.shuffle).click(function(b){b.preventDefault(),e.shuffle(e.shuffled&&a(e.cssSelector.jPlayer).jPlayer("option","useStateClassSkin")?!1:!0),e.blur(this)}),a(this.cssSelector.shuffleOff).click(function(a){a.preventDefault(),e.shuffle(!1),e.blur(this)}).hide(),this.options.fullScreen||a(this.cssSelector.details).hide(),a(this.cssSelector.playlist+" ul").empty(),this._createItemHandlers(),a(this.cssSelector.jPlayer).jPlayer(this.options)},jPlayerPlaylist.prototype={_cssSelector:{jPlayer:"#jquery_jplayer_1",cssSelectorAncestor:"#jp_container_1"},_options:{playlistOptions:{autoPlay:!1,loopOnPrevious:!1,shuffleOnLoop:!0,enableRemoveControls:!1,displayTime:"slow",addTime:"fast",removeTime:"fast",shuffleTime:"slow",itemClass:"jp-playlist-item",freeGroupClass:"jp-free-media",freeItemClass:"jp-playlist-item-free",removeItemClass:"jp-playlist-item-remove"}},option:function(a,c){if(c===b)return this.options.playlistOptions[a];switch(this.options.playlistOptions[a]=c,a){case"enableRemoveControls":this._updateControls();break;case"itemClass":case"freeGroupClass":case"freeItemClass":case"removeItemClass":this._refresh(!0),this._createItemHandlers()}return this},_init:function(){var a=this;this._refresh(function(){a.options.playlistOptions.autoPlay?a.play(a.current):a.select(a.current)})},_initPlaylist:function(b){this.current=0,this.shuffled=!1,this.removing=!1,this.original=a.extend(!0,[],b),this._originalPlaylist()},_originalPlaylist:function(){var b=this;this.playlist=[],a.each(this.original,function(a){b.playlist[a]=b.original[a]})},_refresh:function(b){var c=this;if(b&&!a.isFunction(b))a(this.cssSelector.playlist+" ul").empty(),a.each(this.playlist,function(b){a(c.cssSelector.playlist+" ul").append(c._createListItem(c.playlist[b]))}),this._updateControls();else{var d=a(this.cssSelector.playlist+" ul").children().length?this.options.playlistOptions.displayTime:0;a(this.cssSelector.playlist+" ul").slideUp(d,function(){var d=a(this);a(this).empty(),a.each(c.playlist,function(a){d.append(c._createListItem(c.playlist[a]))}),c._updateControls(),a.isFunction(b)&&b(),c.playlist.length?a(this).slideDown(c.options.playlistOptions.displayTime):a(this).show()})}},_createListItem:function(b){var c=this,d="
  • ";if(d+="×",b.free){var e=!0;d+="(",a.each(b,function(b,f){a.jPlayer.prototype.format[b]&&(e?e=!1:d+=" | ",d+=""+b+"")}),d+=")"}return d+=""+b.title+(b.artist?" ":"")+"",d+="
  • "},_createItemHandlers:function(){var b=this;a(this.cssSelector.playlist).off("click","a."+this.options.playlistOptions.itemClass).on("click","a."+this.options.playlistOptions.itemClass,function(c){c.preventDefault();var d=a(this).parent().parent().index();b.current!==d?b.play(d):a(b.cssSelector.jPlayer).jPlayer("play"),b.blur(this)}),a(this.cssSelector.playlist).off("click","a."+this.options.playlistOptions.freeItemClass).on("click","a."+this.options.playlistOptions.freeItemClass,function(c){c.preventDefault(),a(this).parent().parent().find("."+b.options.playlistOptions.itemClass).click(),b.blur(this)}),a(this.cssSelector.playlist).off("click","a."+this.options.playlistOptions.removeItemClass).on("click","a."+this.options.playlistOptions.removeItemClass,function(c){c.preventDefault();var d=a(this).parent().parent().index();b.remove(d),b.blur(this)})},_updateControls:function(){this.options.playlistOptions.enableRemoveControls?a(this.cssSelector.playlist+" ."+this.options.playlistOptions.removeItemClass).show():a(this.cssSelector.playlist+" ."+this.options.playlistOptions.removeItemClass).hide(),this.shuffled?a(this.cssSelector.jPlayer).jPlayer("addStateClass","shuffled"):a(this.cssSelector.jPlayer).jPlayer("removeStateClass","shuffled"),a(this.cssSelector.shuffle).length&&a(this.cssSelector.shuffleOff).length&&(this.shuffled?(a(this.cssSelector.shuffleOff).show(),a(this.cssSelector.shuffle).hide()):(a(this.cssSelector.shuffleOff).hide(),a(this.cssSelector.shuffle).show()))},_highlight:function(c){this.playlist.length&&c!==b&&(a(this.cssSelector.playlist+" .jp-playlist-current").removeClass("jp-playlist-current"),a(this.cssSelector.playlist+" li:nth-child("+(c+1)+")").addClass("jp-playlist-current").find(".jp-playlist-item").addClass("jp-playlist-current"))},setPlaylist:function(a){this._initPlaylist(a),this._init()},add:function(b,c){a(this.cssSelector.playlist+" ul").append(this._createListItem(b)).find("li:last-child").hide().slideDown(this.options.playlistOptions.addTime),this._updateControls(),this.original.push(b),this.playlist.push(b),c?this.play(this.playlist.length-1):1===this.original.length&&this.select(0)},remove:function(c){var d=this;return c===b?(this._initPlaylist([]),this._refresh(function(){a(d.cssSelector.jPlayer).jPlayer("clearMedia")}),!0):this.removing?!1:(c=0>c?d.original.length+c:c,c>=0&&cb?this.original.length+b:b,b>=0&&bc?this.original.length+c:c,c>=0&&c1?this.shuffle(!0,!0):this.play(a):a>0&&this.play(a)},previous:function(){var a=this.current-1>=0?this.current-1:this.playlist.length-1;(this.loop&&this.options.playlistOptions.loopOnPrevious||a' + (config.visible ? "Hide" : "Show") + ' jPlayer Inspector

    ' - + '
    ' - + '
    ' - + '
    ' - + '

    jPlayer events that have occurred over the past 1 second:' - + '
    (Backgrounds: Never occurred Occurred before Occurred Multiple occurrences reset)

    '; - - // MJP: Would use the next 3 lines for ease, but the events are just slapped on the page. - // $.each($.jPlayer.event, function(eventName,eventType) { - // structure += '
    ' + eventName + '
    '; - // }); - - var eventStyle = "float:left;margin:0 5px 5px 0;padding:0 5px;border:1px dotted #000;"; - // MJP: Doing it longhand so order and layout easier to control. - structure += - '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - - + '
    ' - + '
    ' - + '
    ' - + '
    ' - - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - + '
    ' - - + '
    '; - - // MJP: Would like a check here in case we missed an event. - - // MJP: Check fails, since it is not on the page yet. -/* $.each($.jPlayer.event, function(eventName,eventType) { - if($("#" + config.eventId[eventType])[0] === undefined) { - structure += '
    ' + eventName + '
    '; - } - }); -*/ - structure += - '
    ' - + '

    Update jPlayer Inspector

    ' - + '
    ' - + '
    '; - $(this).html(structure); - - config.windowJq = $("#" + config.windowId); - config.statusJq = $("#" + config.statusId); - config.configJq = $("#" + config.configId); - config.toggleJq = $("#" + config.toggleId); - config.eventResetJq = $("#" + config.eventResetId); - config.updateJq = $("#" + config.updateId); - - $.each($.jPlayer.event, function(eventName,eventType) { - config.eventJq[eventType] = $("#" + config.eventId[eventType]); - config.eventJq[eventType].text(eventName + " (" + config.eventOccurrence[eventType] + ")"); // Sets the text to the event name and (0); - - config.jPlayer.bind(eventType + ".jPlayerInspector", function(e) { - config.eventOccurrence[e.type]++; - if(config.eventOccurrence[e.type] > 1) { - config.eventJq[e.type].css("background-color","#ff9"); - } else { - config.eventJq[e.type].css("background-color","#9f9"); - } - config.eventJq[e.type].text(eventName + " (" + config.eventOccurrence[e.type] + ")"); - // The timer to handle the color - clearTimeout(config.eventTimeout[e.type]); - config.eventTimeout[e.type] = setTimeout(function() { - config.eventJq[e.type].css("background-color","#fff"); - }, 1000); - // The timer to handle the occurences. - setTimeout(function() { - config.eventOccurrence[e.type]--; - config.eventJq[e.type].text(eventName + " (" + config.eventOccurrence[e.type] + ")"); - }, 1000); - if(config.visible) { // Update the status, if inspector open. - $this.jPlayerInspector("updateStatus"); - } - }); - }); - - config.jPlayer.bind($.jPlayer.event.ready + ".jPlayerInspector", function(e) { - $this.jPlayerInspector("updateConfig"); - }); - - config.toggleJq.click(function() { - if(config.visible) { - $(this).text("Show"); - config.windowJq.hide(); - config.statusJq.empty(); - config.configJq.empty(); - } else { - $(this).text("Hide"); - config.windowJq.show(); - config.updateJq.click(); - } - config.visible = !config.visible; - $(this).blur(); - return false; - }); - - config.eventResetJq.click(function() { - $.each($.jPlayer.event, function(eventName,eventType) { - config.eventJq[eventType].css("background-color","#eee"); - }); - $(this).blur(); - return false; - }); - - config.updateJq.click(function() { - $this.jPlayerInspector("updateStatus"); - $this.jPlayerInspector("updateConfig"); - return false; - }); - - if(!config.visible) { - config.windowJq.hide(); - } else { - // config.updateJq.click(); - } - - $.jPlayerInspector.i++; - - return this; - }, - destroy: function() { - $(this).data("jPlayerInspector") && $(this).data("jPlayerInspector").jPlayer.unbind(".jPlayerInspector"); - $(this).empty(); - }, - updateConfig: function() { // This displays information about jPlayer's configuration in inspector - - var jPlayerInfo = "

    This jPlayer instance is running in your browser where:
    " - - for(i = 0; i < $(this).data("jPlayerInspector").jPlayer.data("jPlayer").solutions.length; i++) { - var solution = $(this).data("jPlayerInspector").jPlayer.data("jPlayer").solutions[i]; - jPlayerInfo += " jPlayer's " + solution + " solution is"; - if($(this).data("jPlayerInspector").jPlayer.data("jPlayer")[solution].used) { - jPlayerInfo += " being used and will support:"; - for(format in $(this).data("jPlayerInspector").jPlayer.data("jPlayer")[solution].support) { - if($(this).data("jPlayerInspector").jPlayer.data("jPlayer")[solution].support[format]) { - jPlayerInfo += " " + format; - } - } - jPlayerInfo += "
    "; - } else { - jPlayerInfo += " not required
    "; - } - } - jPlayerInfo += "

    "; - - if($(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.active) { - if($(this).data("jPlayerInspector").jPlayer.data("jPlayer").flash.active) { - jPlayerInfo += "Problem with jPlayer since both HTML5 and Flash are active."; - } else { - jPlayerInfo += "The HTML5 is active."; - } - } else { - if($(this).data("jPlayerInspector").jPlayer.data("jPlayer").flash.active) { - jPlayerInfo += "The Flash is active."; - } else { - jPlayerInfo += "No solution is currently active. jPlayer needs a setMedia()."; - } - } - jPlayerInfo += "

    "; - - var formatType = $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.formatType; - jPlayerInfo += "

    status.formatType = '" + formatType + "'
    "; - if(formatType) { - jPlayerInfo += "Browser canPlay('" + $.jPlayer.prototype.format[formatType].codec + "')"; - } else { - jPlayerInfo += "

    "; - } - - jPlayerInfo += "

    status.src = '" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.src + "'

    "; - - jPlayerInfo += "

    status.media = {
    "; - for(prop in $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.media) { - jPlayerInfo += " " + prop + ": " + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.media[prop] + "
    "; // Some are strings - } - jPlayerInfo += "};

    " - - jPlayerInfo += "

    "; - jPlayerInfo += "status.videoWidth = '" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.videoWidth + "'"; - jPlayerInfo += " | status.videoHeight = '" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.videoHeight + "'"; - jPlayerInfo += "
    status.width = '" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.width + "'"; - jPlayerInfo += " | status.height = '" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.height + "'"; - jPlayerInfo += "

    "; - - + "

    Raw browser test for HTML5 support. Should equal a function if HTML5 is available.
    "; - if($(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.audio.available) { - jPlayerInfo += "htmlElement.audio.canPlayType = " + (typeof $(this).data("jPlayerInspector").jPlayer.data("jPlayer").htmlElement.audio.canPlayType) +"
    " - } - if($(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.video.available) { - jPlayerInfo += "htmlElement.video.canPlayType = " + (typeof $(this).data("jPlayerInspector").jPlayer.data("jPlayer").htmlElement.video.canPlayType) +""; - } - jPlayerInfo += "

    "; - - jPlayerInfo += "

    This instance is using the constructor options:
    " - + "$('#" + $(this).data("jPlayerInspector").jPlayer.data("jPlayer").internal.self.id + "').jPlayer({
    " - - + " swfPath: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "swfPath") + "',
    " - - + " solution: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "solution") + "',
    " - - + " supplied: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "supplied") + "',
    " - - + " preload: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "preload") + "',
    " - - + " volume: " + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "volume") + ",
    " - - + " muted: " + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "muted") + ",
    " - - + " backgroundColor: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "backgroundColor") + "',
    " - - + " cssSelectorAncestor: '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "cssSelectorAncestor") + "',
    " - - + " cssSelector: {"; - - var cssSelector = $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "cssSelector"); - for(prop in cssSelector) { - - // jPlayerInfo += "
      " + prop + ": '" + cssSelector[prop] + "'," // This works too of course, but want to use option method for deep keys. - jPlayerInfo += "
      " + prop + ": '" + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "cssSelector." + prop) + "'," - } - - jPlayerInfo = jPlayerInfo.slice(0, -1); // Because the sloppy comma was bugging me. - - jPlayerInfo += "
     },
    " - - + " errorAlerts: " + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "errorAlerts") + ",
    " - - + " warningAlerts: " + $(this).data("jPlayerInspector").jPlayer.jPlayer("option", "warningAlerts") + "
    " - - + "});

    "; - $(this).data("jPlayerInspector").configJq.html(jPlayerInfo); - return this; - }, - updateStatus: function() { // This displays information about jPlayer's status in the inspector - $(this).data("jPlayerInspector").statusJq.html( - "

    jPlayer is " + - ($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.paused ? "paused" : "playing") + - " at time: " + Math.floor($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentTime*10)/10 + "s." + - " (d: " + Math.floor($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.duration*10)/10 + "s" + - ", sp: " + Math.floor($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.seekPercent) + "%" + - ", cpr: " + Math.floor($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentPercentRelative) + "%" + - ", cpa: " + Math.floor($(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentPercentAbsolute) + "%)

    " - ); - return this; - } - }; - $.fn.jPlayerInspector = function( method ) { - // Method calling logic - if ( methods[method] ) { - return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 )); - } else if ( typeof method === 'object' || ! method ) { - return methods.init.apply( this, arguments ); - } else { - $.error( 'Method ' + method + ' does not exist on jQuery.jPlayerInspector' ); - } - }; -})(jQuery); diff --git a/libraries/filemanager-9.12.1/js/jPlayer/add-on/jquery.jplayer.inspector.min.js b/libraries/filemanager-9.12.1/js/jPlayer/add-on/jquery.jplayer.inspector.min.js deleted file mode 100644 index 69925c8..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/add-on/jquery.jplayer.inspector.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jPlayerInspector for jPlayer 2.9.2 ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ -!function(a,b){a.jPlayerInspector={},a.jPlayerInspector.i=0,a.jPlayerInspector.defaults={jPlayer:b,idPrefix:"jplayer_inspector_",visible:!1};var c={init:function(b){var c=a(this),d=a.extend({},a.jPlayerInspector.defaults,b);a(this).data("jPlayerInspector",d),d.id=a(this).attr("id"),d.jPlayerId=d.jPlayer.attr("id"),d.windowId=d.idPrefix+"window_"+a.jPlayerInspector.i,d.statusId=d.idPrefix+"status_"+a.jPlayerInspector.i,d.configId=d.idPrefix+"config_"+a.jPlayerInspector.i,d.toggleId=d.idPrefix+"toggle_"+a.jPlayerInspector.i,d.eventResetId=d.idPrefix+"event_reset_"+a.jPlayerInspector.i,d.updateId=d.idPrefix+"update_"+a.jPlayerInspector.i,d.eventWindowId=d.idPrefix+"event_window_"+a.jPlayerInspector.i,d.eventId={},d.eventJq={},d.eventTimeout={},d.eventOccurrence={},a.each(a.jPlayer.event,function(b,c){d.eventId[c]=d.idPrefix+"event_"+b+"_"+a.jPlayerInspector.i,d.eventOccurrence[c]=0});var e='

    '+(d.visible?"Hide":"Show")+' jPlayer Inspector

    jPlayer events that have occurred over the past 1 second:
    (Backgrounds: Never occurred Occurred before Occurred Multiple occurrences reset)

    ',f="float:left;margin:0 5px 5px 0;padding:0 5px;border:1px dotted #000;";return e+='
    ',e+='

    Update jPlayer Inspector

    ',a(this).html(e),d.windowJq=a("#"+d.windowId),d.statusJq=a("#"+d.statusId),d.configJq=a("#"+d.configId),d.toggleJq=a("#"+d.toggleId),d.eventResetJq=a("#"+d.eventResetId),d.updateJq=a("#"+d.updateId),a.each(a.jPlayer.event,function(b,e){d.eventJq[e]=a("#"+d.eventId[e]),d.eventJq[e].text(b+" ("+d.eventOccurrence[e]+")"),d.jPlayer.bind(e+".jPlayerInspector",function(a){d.eventOccurrence[a.type]++,d.eventOccurrence[a.type]>1?d.eventJq[a.type].css("background-color","#ff9"):d.eventJq[a.type].css("background-color","#9f9"),d.eventJq[a.type].text(b+" ("+d.eventOccurrence[a.type]+")"),clearTimeout(d.eventTimeout[a.type]),d.eventTimeout[a.type]=setTimeout(function(){d.eventJq[a.type].css("background-color","#fff")},1e3),setTimeout(function(){d.eventOccurrence[a.type]--,d.eventJq[a.type].text(b+" ("+d.eventOccurrence[a.type]+")")},1e3),d.visible&&c.jPlayerInspector("updateStatus")})}),d.jPlayer.bind(a.jPlayer.event.ready+".jPlayerInspector",function(){c.jPlayerInspector("updateConfig")}),d.toggleJq.click(function(){return d.visible?(a(this).text("Show"),d.windowJq.hide(),d.statusJq.empty(),d.configJq.empty()):(a(this).text("Hide"),d.windowJq.show(),d.updateJq.click()),d.visible=!d.visible,a(this).blur(),!1}),d.eventResetJq.click(function(){return a.each(a.jPlayer.event,function(a,b){d.eventJq[b].css("background-color","#eee")}),a(this).blur(),!1}),d.updateJq.click(function(){return c.jPlayerInspector("updateStatus"),c.jPlayerInspector("updateConfig"),!1}),d.visible||d.windowJq.hide(),a.jPlayerInspector.i++,this},destroy:function(){a(this).data("jPlayerInspector")&&a(this).data("jPlayerInspector").jPlayer.unbind(".jPlayerInspector"),a(this).empty()},updateConfig:function(){var b="

    This jPlayer instance is running in your browser where:
    ";for(i=0;i"+c+" solution is",a(this).data("jPlayerInspector").jPlayer.data("jPlayer")[c].used){b+=" being used and will support:";for(format in a(this).data("jPlayerInspector").jPlayer.data("jPlayer")[c].support)a(this).data("jPlayerInspector").jPlayer.data("jPlayer")[c].support[format]&&(b+=" "+format);b+="
    "}else b+=" not required
    "}b+="

    ",b+=a(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.active?a(this).data("jPlayerInspector").jPlayer.data("jPlayer").flash.active?"Problem with jPlayer since both HTML5 and Flash are active.":"The HTML5 is active.":a(this).data("jPlayerInspector").jPlayer.data("jPlayer").flash.active?"The Flash is active.":"No solution is currently active. jPlayer needs a setMedia().",b+="

    ";var d=a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.formatType;b+="

    status.formatType = '"+d+"'
    ",b+=d?"Browser canPlay('"+a.jPlayer.prototype.format[d].codec+"')":"

    ",b+="

    status.src = '"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.src+"'

    ",b+="

    status.media = {
    ";for(prop in a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.media)b+=" "+prop+": "+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.media[prop]+"
    ";b+="};

    ",b+="

    ",b+="status.videoWidth = '"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.videoWidth+"'",b+=" | status.videoHeight = '"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.videoHeight+"'",b+="
    status.width = '"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.width+"'",b+=" | status.height = '"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.height+"'",b+="

    ",a(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.audio.available&&(b+="htmlElement.audio.canPlayType = "+typeof a(this).data("jPlayerInspector").jPlayer.data("jPlayer").htmlElement.audio.canPlayType+"
    "),a(this).data("jPlayerInspector").jPlayer.data("jPlayer").html.video.available&&(b+="htmlElement.video.canPlayType = "+typeof a(this).data("jPlayerInspector").jPlayer.data("jPlayer").htmlElement.video.canPlayType+""),b+="

    ",b+="

    This instance is using the constructor options:
    $('#"+a(this).data("jPlayerInspector").jPlayer.data("jPlayer").internal.self.id+"').jPlayer({
     swfPath: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","swfPath")+"',
     solution: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","solution")+"',
     supplied: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","supplied")+"',
     preload: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","preload")+"',
     volume: "+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","volume")+",
     muted: "+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","muted")+",
     backgroundColor: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","backgroundColor")+"',
     cssSelectorAncestor: '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","cssSelectorAncestor")+"',
     cssSelector: {";var e=a(this).data("jPlayerInspector").jPlayer.jPlayer("option","cssSelector");for(prop in e)b+="
      "+prop+": '"+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","cssSelector."+prop)+"',";return b=b.slice(0,-1),b+="
     },
     errorAlerts: "+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","errorAlerts")+",
     warningAlerts: "+a(this).data("jPlayerInspector").jPlayer.jPlayer("option","warningAlerts")+"
    });

    ",a(this).data("jPlayerInspector").configJq.html(b),this},updateStatus:function(){return a(this).data("jPlayerInspector").statusJq.html("

    jPlayer is "+(a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.paused?"paused":"playing")+" at time: "+Math.floor(10*a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentTime)/10+"s. (d: "+Math.floor(10*a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.duration)/10+"s, sp: "+Math.floor(a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.seekPercent)+"%, cpr: "+Math.floor(a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentPercentRelative)+"%, cpa: "+Math.floor(a(this).data("jPlayerInspector").jPlayer.data("jPlayer").status.currentPercentAbsolute)+"%)

    "),this}};a.fn.jPlayerInspector=function(b){return c[b]?c[b].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof b&&b?void a.error("Method "+b+" does not exist on jQuery.jPlayerInspector"):c.init.apply(this,arguments)}}(jQuery); \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/js/jPlayer/jplayer.jquery.json b/libraries/filemanager-9.12.1/js/jPlayer/jplayer.jquery.json deleted file mode 100644 index 3b7b437..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/jplayer.jquery.json +++ /dev/null @@ -1,33 +0,0 @@ -{ - "name": "jplayer", - "title": "jPlayer : HTML5 Audio & Video", - "description": "jPlayer allows you to create a media player with a consistent interface and experience across all browsers.", - "keywords": [ - "audio", - "video", - "media", - "player", - "jplayer", - "html5", - "streaming" - ], - "version": "2.4.0", - "author": { - "name": "Mark J Panaghiston", - "url": "http://happyworm.com/" - }, - "licenses": [ - { - "type": "MIT", - "url": "https://github.com/happyworm/jPlayer/blob/master/MIT-LICENSE.txt" - } - ], - "dependencies": { - "jquery": ">=1.7" - }, - "homepage": "http://jplayer.org/", - "demo": "http://jplayer.org/latest/demos/", - "docs": "http://jplayer.org/latest/developer-guide/", - "download": "http://jplayer.org/download/", - "bugs": "https://github.com/happyworm/jPlayer/issues" -} \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.js b/libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.js deleted file mode 100644 index 842f31b..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.js +++ /dev/null @@ -1,3506 +0,0 @@ -/* - * jPlayer Plugin for jQuery JavaScript Library - * http://www.jplayer.org - * - * Copyright (c) 2009 - 2014 Happyworm Ltd - * Licensed under the MIT license. - * http://opensource.org/licenses/MIT - * - * Author: Mark J Panaghiston - * Version: 2.9.2 - * Date: 14th December 2014 - */ - -/* Support for Zepto 1.0 compiled with optional data module. - * For AMD or NODE/CommonJS support, you will need to manually switch the related 2 lines in the code below. - * Search terms: "jQuery Switch" and "Zepto Switch" - */ - -(function (root, factory) { - if (typeof define === 'function' && define.amd) { - // AMD. Register as an anonymous module. - define(['jquery'], factory); // jQuery Switch - // define(['zepto'], factory); // Zepto Switch - } else if (typeof exports === 'object') { - // Node/CommonJS - factory(require('jquery')); // jQuery Switch - //factory(require('zepto')); // Zepto Switch - } else { - // Browser globals - if(root.jQuery) { // Use jQuery if available - factory(root.jQuery); - } else { // Otherwise, use Zepto - factory(root.Zepto); - } - } -}(this, function ($, undefined) { - - // Adapted from jquery.ui.widget.js (1.8.7): $.widget.bridge - Tweaked $.data(this,XYZ) to $(this).data(XYZ) for Zepto - $.fn.jPlayer = function( options ) { - var name = "jPlayer"; - var isMethodCall = typeof options === "string", - args = Array.prototype.slice.call( arguments, 1 ), - returnValue = this; - - // allow multiple hashes to be passed on init - options = !isMethodCall && args.length ? - $.extend.apply( null, [ true, options ].concat(args) ) : - options; - - // prevent calls to internal methods - if ( isMethodCall && options.charAt( 0 ) === "_" ) { - return returnValue; - } - - if ( isMethodCall ) { - this.each(function() { - var instance = $(this).data( name ), - methodValue = instance && $.isFunction( instance[options] ) ? - instance[ options ].apply( instance, args ) : - instance; - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue; - return false; - } - }); - } else { - this.each(function() { - var instance = $(this).data( name ); - if ( instance ) { - // instance.option( options || {} )._init(); // Orig jquery.ui.widget.js code: Not recommend for jPlayer. ie., Applying new options to an existing instance (via the jPlayer constructor) and performing the _init(). The _init() is what concerns me. It would leave a lot of event handlers acting on jPlayer instance and the interface. - instance.option( options || {} ); // The new constructor only changes the options. Changing options only has basic support atm. - } else { - $(this).data( name, new $.jPlayer( options, this ) ); - } - }); - } - - return returnValue; - }; - - $.jPlayer = function( options, element ) { - // allow instantiation without initializing for simple inheritance - if ( arguments.length ) { - this.element = $(element); - this.options = $.extend(true, {}, - this.options, - options - ); - var self = this; - this.element.bind( "remove.jPlayer", function() { - self.destroy(); - }); - this._init(); - } - }; - // End of: (Adapted from jquery.ui.widget.js (1.8.7)) - - // Zepto is missing one of the animation methods. - if(typeof $.fn.stop !== 'function') { - $.fn.stop = function() {}; - } - - // Emulated HTML5 methods and properties - $.jPlayer.emulateMethods = "load play pause"; - $.jPlayer.emulateStatus = "src readyState networkState currentTime duration paused ended playbackRate"; - $.jPlayer.emulateOptions = "muted volume"; - - // Reserved event names generated by jPlayer that are not part of the HTML5 Media element spec - $.jPlayer.reservedEvent = "ready flashreset resize repeat error warning"; - - // Events generated by jPlayer - $.jPlayer.event = {}; - $.each( - [ - 'ready', - 'setmedia', // Fires when the media is set - 'flashreset', // Similar to the ready event if the Flash solution is set to display:none and then shown again or if it's reloaded for another reason by the browser. For example, using CSS position:fixed on Firefox for the full screen feature. - 'resize', // Occurs when the size changes through a full/restore screen operation or if the size/sizeFull options are changed. - 'repeat', // Occurs when the repeat status changes. Usually through clicks on the repeat button of the interface. - 'click', // Occurs when the user clicks on one of the following: poster image, html video, flash video. - 'error', // Event error code in event.jPlayer.error.type. See $.jPlayer.error - 'warning', // Event warning code in event.jPlayer.warning.type. See $.jPlayer.warning - - // Other events match HTML5 spec. - 'loadstart', - 'progress', - 'suspend', - 'abort', - 'emptied', - 'stalled', - 'play', - 'pause', - 'loadedmetadata', - 'loadeddata', - 'waiting', - 'playing', - 'canplay', - 'canplaythrough', - 'seeking', - 'seeked', - 'timeupdate', - 'ended', - 'ratechange', - 'durationchange', - 'volumechange' - ], - function() { - $.jPlayer.event[ this ] = 'jPlayer_' + this; - } - ); - - $.jPlayer.htmlEvent = [ // These HTML events are bubbled through to the jPlayer event, without any internal action. - "loadstart", - // "progress", // jPlayer uses internally before bubbling. - // "suspend", // jPlayer uses internally before bubbling. - "abort", - // "error", // jPlayer uses internally before bubbling. - "emptied", - "stalled", - // "play", // jPlayer uses internally before bubbling. - // "pause", // jPlayer uses internally before bubbling. - "loadedmetadata", - // "loadeddata", // jPlayer uses internally before bubbling. - // "waiting", // jPlayer uses internally before bubbling. - // "playing", // jPlayer uses internally before bubbling. - "canplay", - "canplaythrough" - // "seeking", // jPlayer uses internally before bubbling. - // "seeked", // jPlayer uses internally before bubbling. - // "timeupdate", // jPlayer uses internally before bubbling. - // "ended", // jPlayer uses internally before bubbling. - // "ratechange" // jPlayer uses internally before bubbling. - // "durationchange" // jPlayer uses internally before bubbling. - // "volumechange" // jPlayer uses internally before bubbling. - ]; - - $.jPlayer.pause = function() { - $.jPlayer.prototype.destroyRemoved(); - $.each($.jPlayer.prototype.instances, function(i, element) { - if(element.data("jPlayer").status.srcSet) { // Check that media is set otherwise would cause error event. - element.jPlayer("pause"); - } - }); - }; - - // Default for jPlayer option.timeFormat - $.jPlayer.timeFormat = { - showHour: false, - showMin: true, - showSec: true, - padHour: false, - padMin: true, - padSec: true, - sepHour: ":", - sepMin: ":", - sepSec: "" - }; - var ConvertTime = function() { - this.init(); - }; - ConvertTime.prototype = { - init: function() { - this.options = { - timeFormat: $.jPlayer.timeFormat - }; - }, - time: function(s) { // function used on jPlayer.prototype._convertTime to enable per instance options. - s = (s && typeof s === 'number') ? s : 0; - - var myTime = new Date(s * 1000), - hour = myTime.getUTCHours(), - min = this.options.timeFormat.showHour ? myTime.getUTCMinutes() : myTime.getUTCMinutes() + hour * 60, - sec = this.options.timeFormat.showMin ? myTime.getUTCSeconds() : myTime.getUTCSeconds() + min * 60, - strHour = (this.options.timeFormat.padHour && hour < 10) ? "0" + hour : hour, - strMin = (this.options.timeFormat.padMin && min < 10) ? "0" + min : min, - strSec = (this.options.timeFormat.padSec && sec < 10) ? "0" + sec : sec, - strTime = ""; - - strTime += this.options.timeFormat.showHour ? strHour + this.options.timeFormat.sepHour : ""; - strTime += this.options.timeFormat.showMin ? strMin + this.options.timeFormat.sepMin : ""; - strTime += this.options.timeFormat.showSec ? strSec + this.options.timeFormat.sepSec : ""; - - return strTime; - } - }; - var myConvertTime = new ConvertTime(); - $.jPlayer.convertTime = function(s) { - return myConvertTime.time(s); - }; - - // Adapting jQuery 1.4.4 code for jQuery.browser. Required since jQuery 1.3.2 does not detect Chrome as webkit. - $.jPlayer.uaBrowser = function( userAgent ) { - var ua = userAgent.toLowerCase(); - - // Useragent RegExp - var rwebkit = /(webkit)[ \/]([\w.]+)/; - var ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/; - var rmsie = /(msie) ([\w.]+)/; - var rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/; - - var match = rwebkit.exec( ua ) || - ropera.exec( ua ) || - rmsie.exec( ua ) || - ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) || - []; - - return { browser: match[1] || "", version: match[2] || "0" }; - }; - - // Platform sniffer for detecting mobile devices - $.jPlayer.uaPlatform = function( userAgent ) { - var ua = userAgent.toLowerCase(); - - // Useragent RegExp - var rplatform = /(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/; - var rtablet = /(ipad|playbook)/; - var randroid = /(android)/; - var rmobile = /(mobile)/; - - var platform = rplatform.exec( ua ) || []; - var tablet = rtablet.exec( ua ) || - !rmobile.exec( ua ) && randroid.exec( ua ) || - []; - - if(platform[1]) { - platform[1] = platform[1].replace(/\s/g, "_"); // Change whitespace to underscore. Enables dot notation. - } - - return { platform: platform[1] || "", tablet: tablet[1] || "" }; - }; - - $.jPlayer.browser = { - }; - $.jPlayer.platform = { - }; - - var browserMatch = $.jPlayer.uaBrowser(navigator.userAgent); - if ( browserMatch.browser ) { - $.jPlayer.browser[ browserMatch.browser ] = true; - $.jPlayer.browser.version = browserMatch.version; - } - var platformMatch = $.jPlayer.uaPlatform(navigator.userAgent); - if ( platformMatch.platform ) { - $.jPlayer.platform[ platformMatch.platform ] = true; - $.jPlayer.platform.mobile = !platformMatch.tablet; - $.jPlayer.platform.tablet = !!platformMatch.tablet; - } - - // Internet Explorer (IE) Browser Document Mode Sniffer. Based on code at: - // http://msdn.microsoft.com/en-us/library/cc288325%28v=vs.85%29.aspx#GetMode - $.jPlayer.getDocMode = function() { - var docMode; - if ($.jPlayer.browser.msie) { - if (document.documentMode) { // IE8 or later - docMode = document.documentMode; - } else { // IE 5-7 - docMode = 5; // Assume quirks mode unless proven otherwise - if (document.compatMode) { - if (document.compatMode === "CSS1Compat") { - docMode = 7; // standards mode - } - } - } - } - return docMode; - }; - $.jPlayer.browser.documentMode = $.jPlayer.getDocMode(); - - $.jPlayer.nativeFeatures = { - init: function() { - - /* Fullscreen function naming influenced by W3C naming. - * No support for: Mozilla Proposal: https://wiki.mozilla.org/Gecko:FullScreenAPI - */ - - var d = document, - v = d.createElement('video'), - spec = { - // http://www.w3.org/TR/fullscreen/ - w3c: [ - 'fullscreenEnabled', - 'fullscreenElement', - 'requestFullscreen', - 'exitFullscreen', - 'fullscreenchange', - 'fullscreenerror' - ], - // https://developer.mozilla.org/en-US/docs/DOM/Using_fullscreen_mode - moz: [ - 'mozFullScreenEnabled', - 'mozFullScreenElement', - 'mozRequestFullScreen', - 'mozCancelFullScreen', - 'mozfullscreenchange', - 'mozfullscreenerror' - ], - // http://developer.apple.com/library/safari/#documentation/WebKit/Reference/ElementClassRef/Element/Element.html - // http://developer.apple.com/library/safari/#documentation/UserExperience/Reference/DocumentAdditionsReference/DocumentAdditions/DocumentAdditions.html - webkit: [ - '', - 'webkitCurrentFullScreenElement', - 'webkitRequestFullScreen', - 'webkitCancelFullScreen', - 'webkitfullscreenchange', - '' - ], - // http://developer.apple.com/library/safari/#documentation/AudioVideo/Reference/HTMLVideoElementClassReference/HTMLVideoElement/HTMLVideoElement.html - // https://developer.apple.com/library/safari/samplecode/HTML5VideoEventFlow/Listings/events_js.html#//apple_ref/doc/uid/DTS40010085-events_js-DontLinkElementID_5 - // Events: 'webkitbeginfullscreen' and 'webkitendfullscreen' - webkitVideo: [ - 'webkitSupportsFullscreen', - 'webkitDisplayingFullscreen', - 'webkitEnterFullscreen', - 'webkitExitFullscreen', - '', - '' - ], - ms: [ - '', - 'msFullscreenElement', - 'msRequestFullscreen', - 'msExitFullscreen', - 'MSFullscreenChange', - 'MSFullscreenError' - ] - }, - specOrder = [ - 'w3c', - 'moz', - 'webkit', - 'webkitVideo', - 'ms' - ], - fs, i, il; - - this.fullscreen = fs = { - support: { - w3c: !!d[spec.w3c[0]], - moz: !!d[spec.moz[0]], - webkit: typeof d[spec.webkit[3]] === 'function', - webkitVideo: typeof v[spec.webkitVideo[2]] === 'function', - ms: typeof v[spec.ms[2]] === 'function' - }, - used: {} - }; - - // Store the name of the spec being used and as a handy boolean. - for(i = 0, il = specOrder.length; i < il; i++) { - var n = specOrder[i]; - if(fs.support[n]) { - fs.spec = n; - fs.used[n] = true; - break; - } - } - - if(fs.spec) { - var s = spec[fs.spec]; - fs.api = { - fullscreenEnabled: true, - fullscreenElement: function(elem) { - elem = elem ? elem : d; // Video element required for webkitVideo - return elem[s[1]]; - }, - requestFullscreen: function(elem) { - return elem[s[2]](); // Chrome and Opera want parameter (Element.ALLOW_KEYBOARD_INPUT) but Safari fails if flag used. - }, - exitFullscreen: function(elem) { - elem = elem ? elem : d; // Video element required for webkitVideo - return elem[s[3]](); - } - }; - fs.event = { - fullscreenchange: s[4], - fullscreenerror: s[5] - }; - } else { - fs.api = { - fullscreenEnabled: false, - fullscreenElement: function() { - return null; - }, - requestFullscreen: function() {}, - exitFullscreen: function() {} - }; - fs.event = {}; - } - } - }; - $.jPlayer.nativeFeatures.init(); - - // The keyboard control system. - - // The current jPlayer instance in focus. - $.jPlayer.focus = null; - - // The list of element node names to ignore with key controls. - $.jPlayer.keyIgnoreElementNames = "A INPUT TEXTAREA SELECT BUTTON"; - - // The function that deals with key presses. - var keyBindings = function(event) { - var f = $.jPlayer.focus, - ignoreKey; - - // A jPlayer instance must be in focus. ie., keyEnabled and the last one played. - if(f) { - // What generated the key press? - $.each( $.jPlayer.keyIgnoreElementNames.split(/\s+/g), function(i, name) { - // The strings should already be uppercase. - if(event.target.nodeName.toUpperCase() === name.toUpperCase()) { - ignoreKey = true; - return false; // exit each. - } - }); - if(!ignoreKey) { - // See if the key pressed matches any of the bindings. - $.each(f.options.keyBindings, function(action, binding) { - // The binding could be a null when the default has been disabled. ie., 1st clause in if() - if( - (binding && $.isFunction(binding.fn)) && - ((typeof binding.key === 'number' && event.which === binding.key) || - (typeof binding.key === 'string' && event.key === binding.key)) - ) { - event.preventDefault(); // Key being used by jPlayer, so prevent default operation. - binding.fn(f); - return false; // exit each. - } - }); - } - } - }; - - $.jPlayer.keys = function(en) { - var event = "keydown.jPlayer"; - // Remove any binding, just in case enabled more than once. - $(document.documentElement).unbind(event); - if(en) { - $(document.documentElement).bind(event, keyBindings); - } - }; - - // Enable the global key control handler ready for any jPlayer instance with the keyEnabled option enabled. - $.jPlayer.keys(true); - - $.jPlayer.prototype = { - count: 0, // Static Variable: Change it via prototype. - version: { // Static Object - script: "2.9.2", - needFlash: "2.9.0", - flash: "unknown" - }, - options: { // Instanced in $.jPlayer() constructor - swfPath: "js", // Path to jquery.jplayer.swf. Can be relative, absolute or server root relative. - solution: "html, flash", // Valid solutions: html, flash, aurora. Order defines priority. 1st is highest, - supplied: "mp3", // Defines which formats jPlayer will try and support and the priority by the order. 1st is highest, - auroraFormats: "wav", // List the aurora.js codecs being loaded externally. Its core supports "wav". Specify format in jPlayer context. EG., The aac.js codec gives the "m4a" format. - preload: 'metadata', // HTML5 Spec values: none, metadata, auto. - volume: 0.8, // The volume. Number 0 to 1. - muted: false, - remainingDuration: false, // When true, the remaining time is shown in the duration GUI element. - toggleDuration: false, // When true, clicks on the duration toggle between the duration and remaining display. - captureDuration: true, // When true, clicks on the duration are captured and no longer propagate up the DOM. - playbackRate: 1, - defaultPlaybackRate: 1, - minPlaybackRate: 0.5, - maxPlaybackRate: 4, - wmode: "opaque", // Valid wmode: window, transparent, opaque, direct, gpu. - backgroundColor: "#000000", // To define the jPlayer div and Flash background color. - cssSelectorAncestor: "#jp_container_1", - cssSelector: { // * denotes properties that should only be required when video media type required. _cssSelector() would require changes to enable splitting these into Audio and Video defaults. - videoPlay: ".jp-video-play", // * - play: ".jp-play", - pause: ".jp-pause", - stop: ".jp-stop", - seekBar: ".jp-seek-bar", - playBar: ".jp-play-bar", - mute: ".jp-mute", - unmute: ".jp-unmute", - volumeBar: ".jp-volume-bar", - volumeBarValue: ".jp-volume-bar-value", - volumeMax: ".jp-volume-max", - playbackRateBar: ".jp-playback-rate-bar", - playbackRateBarValue: ".jp-playback-rate-bar-value", - currentTime: ".jp-current-time", - duration: ".jp-duration", - title: ".jp-title", - fullScreen: ".jp-full-screen", // * - restoreScreen: ".jp-restore-screen", // * - repeat: ".jp-repeat", - repeatOff: ".jp-repeat-off", - gui: ".jp-gui", // The interface used with autohide feature. - noSolution: ".jp-no-solution" // For error feedback when jPlayer cannot find a solution. - }, - stateClass: { // Classes added to the cssSelectorAncestor to indicate the state. - playing: "jp-state-playing", - seeking: "jp-state-seeking", - muted: "jp-state-muted", - looped: "jp-state-looped", - fullScreen: "jp-state-full-screen", - noVolume: "jp-state-no-volume" - }, - useStateClassSkin: false, // A state class skin relies on the state classes to change the visual appearance. The single control toggles the effect, for example: play then pause, mute then unmute. - autoBlur: true, // GUI control handlers will drop focus after clicks. - smoothPlayBar: false, // Smooths the play bar transitions, which affects clicks and short media with big changes per second. - fullScreen: false, // Native Full Screen - fullWindow: false, - autohide: { - restored: false, // Controls the interface autohide feature. - full: true, // Controls the interface autohide feature. - fadeIn: 200, // Milliseconds. The period of the fadeIn anim. - fadeOut: 600, // Milliseconds. The period of the fadeOut anim. - hold: 1000 // Milliseconds. The period of the pause before autohide beings. - }, - loop: false, - repeat: function(event) { // The default jPlayer repeat event handler - if(event.jPlayer.options.loop) { - $(this).unbind(".jPlayerRepeat").bind($.jPlayer.event.ended + ".jPlayer.jPlayerRepeat", function() { - $(this).jPlayer("play"); - }); - } else { - $(this).unbind(".jPlayerRepeat"); - } - }, - nativeVideoControls: { - // Works well on standard browsers. - // Phone and tablet browsers can have problems with the controls disappearing. - }, - noFullWindow: { - msie: /msie [0-6]\./, - ipad: /ipad.*?os [0-4]\./, - iphone: /iphone/, - ipod: /ipod/, - android_pad: /android [0-3]\.(?!.*?mobile)/, - android_phone: /(?=.*android)(?!.*chrome)(?=.*mobile)/, - blackberry: /blackberry/, - windows_ce: /windows ce/, - iemobile: /iemobile/, - webos: /webos/ - }, - noVolume: { - ipad: /ipad/, - iphone: /iphone/, - ipod: /ipod/, - android_pad: /android(?!.*?mobile)/, - android_phone: /android.*?mobile/, - blackberry: /blackberry/, - windows_ce: /windows ce/, - iemobile: /iemobile/, - webos: /webos/, - playbook: /playbook/ - }, - timeFormat: { - // Specific time format for this instance. The supported options are defined in $.jPlayer.timeFormat - // For the undefined options we use the default from $.jPlayer.timeFormat - }, - keyEnabled: false, // Enables keyboard controls. - audioFullScreen: false, // Enables keyboard controls to enter full screen with audio media. - keyBindings: { // The key control object, defining the key codes and the functions to execute. - // The parameter, f = $.jPlayer.focus, will be checked truethy before attempting to call any of these functions. - // Properties may be added to this object, in key/fn pairs, to enable other key controls. EG, for the playlist add-on. - play: { - key: 80, // p - fn: function(f) { - if(f.status.paused) { - f.play(); - } else { - f.pause(); - } - } - }, - fullScreen: { - key: 70, // f - fn: function(f) { - if(f.status.video || f.options.audioFullScreen) { - f._setOption("fullScreen", !f.options.fullScreen); - } - } - }, - muted: { - key: 77, // m - fn: function(f) { - f._muted(!f.options.muted); - } - }, - volumeUp: { - key: 190, // . - fn: function(f) { - f.volume(f.options.volume + 0.1); - } - }, - volumeDown: { - key: 188, // , - fn: function(f) { - f.volume(f.options.volume - 0.1); - } - }, - loop: { - key: 76, // l - fn: function(f) { - f._loop(!f.options.loop); - } - } - }, - verticalVolume: false, // Calculate volume from the bottom of the volume bar. Default is from the left. Also volume affects either width or height. - verticalPlaybackRate: false, - globalVolume: false, // Set to make volume and muted changes affect all jPlayer instances with this option enabled - idPrefix: "jp", // Prefix for the ids of html elements created by jPlayer. For flash, this must not include characters: . - + * / \ - noConflict: "jQuery", - emulateHtml: false, // Emulates the HTML5 Media element on the jPlayer element. - consoleAlerts: true, // Alerts are sent to the console.log() instead of alert(). - errorAlerts: false, - warningAlerts: false - }, - optionsAudio: { - size: { - width: "0px", - height: "0px", - cssClass: "" - }, - sizeFull: { - width: "0px", - height: "0px", - cssClass: "" - } - }, - optionsVideo: { - size: { - width: "480px", - height: "270px", - cssClass: "jp-video-270p" - }, - sizeFull: { - width: "100%", - height: "100%", - cssClass: "jp-video-full" - } - }, - instances: {}, // Static Object - status: { // Instanced in _init() - src: "", - media: {}, - paused: true, - format: {}, - formatType: "", - waitForPlay: true, // Same as waitForLoad except in case where preloading. - waitForLoad: true, - srcSet: false, - video: false, // True if playing a video - seekPercent: 0, - currentPercentRelative: 0, - currentPercentAbsolute: 0, - currentTime: 0, - duration: 0, - remaining: 0, - videoWidth: 0, // Intrinsic width of the video in pixels. - videoHeight: 0, // Intrinsic height of the video in pixels. - readyState: 0, - networkState: 0, - playbackRate: 1, // Warning - Now both an option and a status property - ended: 0 - -/* Persistant status properties created dynamically at _init(): - width - height - cssClass - nativeVideoControls - noFullWindow - noVolume - playbackRateEnabled // Warning - Technically, we can have both Flash and HTML, so this might not be correct if the Flash is active. That is a niche case. -*/ - }, - - internal: { // Instanced in _init() - ready: false - // instance: undefined - // domNode: undefined - // htmlDlyCmdId: undefined - // autohideId: undefined - // mouse: undefined - // cmdsIgnored - }, - solution: { // Static Object: Defines the solutions built in jPlayer. - html: true, - aurora: true, - flash: true - }, - // 'MPEG-4 support' : canPlayType('video/mp4; codecs="mp4v.20.8"') - format: { // Static Object - mp3: { - codec: 'audio/mpeg', - flashCanPlay: true, - media: 'audio' - }, - m4a: { // AAC / MP4 - codec: 'audio/mp4; codecs="mp4a.40.2"', - flashCanPlay: true, - media: 'audio' - }, - m3u8a: { // AAC / MP4 / Apple HLS - codec: 'application/vnd.apple.mpegurl; codecs="mp4a.40.2"', - flashCanPlay: false, - media: 'audio' - }, - m3ua: { // M3U - codec: 'audio/mpegurl', - flashCanPlay: false, - media: 'audio' - }, - oga: { // OGG - codec: 'audio/ogg; codecs="vorbis, opus"', - flashCanPlay: false, - media: 'audio' - }, - flac: { // FLAC - codec: 'audio/x-flac', - flashCanPlay: false, - media: 'audio' - }, - wav: { // PCM - codec: 'audio/wav; codecs="1"', - flashCanPlay: false, - media: 'audio' - }, - webma: { // WEBM - codec: 'audio/webm; codecs="vorbis"', - flashCanPlay: false, - media: 'audio' - }, - fla: { // FLV / F4A - codec: 'audio/x-flv', - flashCanPlay: true, - media: 'audio' - }, - rtmpa: { // RTMP AUDIO - codec: 'audio/rtmp; codecs="rtmp"', - flashCanPlay: true, - media: 'audio' - }, - m4v: { // H.264 / MP4 - codec: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"', - flashCanPlay: true, - media: 'video' - }, - m3u8v: { // H.264 / AAC / MP4 / Apple HLS - codec: 'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"', - flashCanPlay: false, - media: 'video' - }, - m3uv: { // M3U - codec: 'audio/mpegurl', - flashCanPlay: false, - media: 'video' - }, - ogv: { // OGG - codec: 'video/ogg; codecs="theora, vorbis"', - flashCanPlay: false, - media: 'video' - }, - webmv: { // WEBM - codec: 'video/webm; codecs="vorbis, vp8"', - flashCanPlay: false, - media: 'video' - }, - flv: { // FLV / F4V - codec: 'video/x-flv', - flashCanPlay: true, - media: 'video' - }, - rtmpv: { // RTMP VIDEO - codec: 'video/rtmp; codecs="rtmp"', - flashCanPlay: true, - media: 'video' - } - }, - _init: function() { - var self = this; - - this.element.empty(); - - this.status = $.extend({}, this.status); // Copy static to unique instance. - this.internal = $.extend({}, this.internal); // Copy static to unique instance. - - // Initialize the time format - this.options.timeFormat = $.extend({}, $.jPlayer.timeFormat, this.options.timeFormat); - - // On iOS, assume commands will be ignored before user initiates them. - this.internal.cmdsIgnored = $.jPlayer.platform.ipad || $.jPlayer.platform.iphone || $.jPlayer.platform.ipod; - - this.internal.domNode = this.element.get(0); - - // Add key bindings focus to 1st jPlayer instanced with key control enabled. - if(this.options.keyEnabled && !$.jPlayer.focus) { - $.jPlayer.focus = this; - } - - // A fix for Android where older (2.3) and even some 4.x devices fail to work when changing the *audio* SRC and then playing immediately. - this.androidFix = { - setMedia: false, // True when media set - play: false, // True when a progress event will instruct the media to play - pause: false, // True when a progress event will instruct the media to pause at a time. - time: NaN // The play(time) parameter - }; - if($.jPlayer.platform.android) { - this.options.preload = this.options.preload !== 'auto' ? 'metadata' : 'auto'; // Default to metadata, but allow auto. - } - - this.formats = []; // Array based on supplied string option. Order defines priority. - this.solutions = []; // Array based on solution string option. Order defines priority. - this.require = {}; // Which media types are required: video, audio. - - this.htmlElement = {}; // DOM elements created by jPlayer - this.html = {}; // In _init()'s this.desired code and setmedia(): Accessed via this[solution], where solution from this.solutions array. - this.html.audio = {}; - this.html.video = {}; - this.aurora = {}; // In _init()'s this.desired code and setmedia(): Accessed via this[solution], where solution from this.solutions array. - this.aurora.formats = []; - this.aurora.properties = []; - this.flash = {}; // In _init()'s this.desired code and setmedia(): Accessed via this[solution], where solution from this.solutions array. - - this.css = {}; - this.css.cs = {}; // Holds the css selector strings - this.css.jq = {}; // Holds jQuery selectors. ie., $(css.cs.method) - - this.ancestorJq = []; // Holds jQuery selector of cssSelectorAncestor. Init would use $() instead of [], but it is only 1.4+ - - this.options.volume = this._limitValue(this.options.volume, 0, 1); // Limit volume value's bounds. - - // Create the formats array, with prority based on the order of the supplied formats string - $.each(this.options.supplied.toLowerCase().split(","), function(index1, value1) { - var format = value1.replace(/^\s+|\s+$/g, ""); //trim - if(self.format[format]) { // Check format is valid. - var dupFound = false; - $.each(self.formats, function(index2, value2) { // Check for duplicates - if(format === value2) { - dupFound = true; - return false; - } - }); - if(!dupFound) { - self.formats.push(format); - } - } - }); - - // Create the solutions array, with prority based on the order of the solution string - $.each(this.options.solution.toLowerCase().split(","), function(index1, value1) { - var solution = value1.replace(/^\s+|\s+$/g, ""); //trim - if(self.solution[solution]) { // Check solution is valid. - var dupFound = false; - $.each(self.solutions, function(index2, value2) { // Check for duplicates - if(solution === value2) { - dupFound = true; - return false; - } - }); - if(!dupFound) { - self.solutions.push(solution); - } - } - }); - - // Create Aurora.js formats array - $.each(this.options.auroraFormats.toLowerCase().split(","), function(index1, value1) { - var format = value1.replace(/^\s+|\s+$/g, ""); //trim - if(self.format[format]) { // Check format is valid. - var dupFound = false; - $.each(self.aurora.formats, function(index2, value2) { // Check for duplicates - if(format === value2) { - dupFound = true; - return false; - } - }); - if(!dupFound) { - self.aurora.formats.push(format); - } - } - }); - - this.internal.instance = "jp_" + this.count; - this.instances[this.internal.instance] = this.element; - - // Check the jPlayer div has an id and create one if required. Important for Flash to know the unique id for comms. - if(!this.element.attr("id")) { - this.element.attr("id", this.options.idPrefix + "_jplayer_" + this.count); - } - - this.internal.self = $.extend({}, { - id: this.element.attr("id"), - jq: this.element - }); - this.internal.audio = $.extend({}, { - id: this.options.idPrefix + "_audio_" + this.count, - jq: undefined - }); - this.internal.video = $.extend({}, { - id: this.options.idPrefix + "_video_" + this.count, - jq: undefined - }); - this.internal.flash = $.extend({}, { - id: this.options.idPrefix + "_flash_" + this.count, - jq: undefined, - swf: this.options.swfPath + (this.options.swfPath.toLowerCase().slice(-4) !== ".swf" ? (this.options.swfPath && this.options.swfPath.slice(-1) !== "/" ? "/" : "") + "jquery.jplayer.swf" : "") - }); - this.internal.poster = $.extend({}, { - id: this.options.idPrefix + "_poster_" + this.count, - jq: undefined - }); - - // Register listeners defined in the constructor - $.each($.jPlayer.event, function(eventName,eventType) { - if(self.options[eventName] !== undefined) { - self.element.bind(eventType + ".jPlayer", self.options[eventName]); // With .jPlayer namespace. - self.options[eventName] = undefined; // Destroy the handler pointer copy on the options. Reason, events can be added/removed in other ways so this could be obsolete and misleading. - } - }); - - // Determine if we require solutions for audio, video or both media types. - this.require.audio = false; - this.require.video = false; - $.each(this.formats, function(priority, format) { - self.require[self.format[format].media] = true; - }); - - // Now required types are known, finish the options default settings. - if(this.require.video) { - this.options = $.extend(true, {}, - this.optionsVideo, - this.options - ); - } else { - this.options = $.extend(true, {}, - this.optionsAudio, - this.options - ); - } - this._setSize(); // update status and jPlayer element size - - // Determine the status for Blocklisted options. - this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls); - this.status.noFullWindow = this._uaBlocklist(this.options.noFullWindow); - this.status.noVolume = this._uaBlocklist(this.options.noVolume); - - // Create event handlers if native fullscreen is supported - if($.jPlayer.nativeFeatures.fullscreen.api.fullscreenEnabled) { - this._fullscreenAddEventListeners(); - } - - // The native controls are only for video and are disabled when audio is also used. - this._restrictNativeVideoControls(); - - // Create the poster image. - this.htmlElement.poster = document.createElement('img'); - this.htmlElement.poster.id = this.internal.poster.id; - this.htmlElement.poster.onload = function() { // Note that this did not work on Firefox 3.6: poster.addEventListener("onload", function() {}, false); Did not investigate x-browser. - if(!self.status.video || self.status.waitForPlay) { - self.internal.poster.jq.show(); - } - }; - this.element.append(this.htmlElement.poster); - this.internal.poster.jq = $("#" + this.internal.poster.id); - this.internal.poster.jq.css({'width': this.status.width, 'height': this.status.height}); - this.internal.poster.jq.hide(); - this.internal.poster.jq.bind("click.jPlayer", function() { - self._trigger($.jPlayer.event.click); - }); - - // Generate the required media elements - this.html.audio.available = false; - if(this.require.audio) { // If a supplied format is audio - this.htmlElement.audio = document.createElement('audio'); - this.htmlElement.audio.id = this.internal.audio.id; - this.html.audio.available = !!this.htmlElement.audio.canPlayType && this._testCanPlayType(this.htmlElement.audio); // Test is for IE9 on Win Server 2008. - } - this.html.video.available = false; - if(this.require.video) { // If a supplied format is video - this.htmlElement.video = document.createElement('video'); - this.htmlElement.video.id = this.internal.video.id; - this.html.video.available = !!this.htmlElement.video.canPlayType && this._testCanPlayType(this.htmlElement.video); // Test is for IE9 on Win Server 2008. - } - - this.flash.available = this._checkForFlash(10.1); - - this.html.canPlay = {}; - this.aurora.canPlay = {}; - this.flash.canPlay = {}; - $.each(this.formats, function(priority, format) { - self.html.canPlay[format] = self.html[self.format[format].media].available && "" !== self.htmlElement[self.format[format].media].canPlayType(self.format[format].codec); - self.aurora.canPlay[format] = ($.inArray(format, self.aurora.formats) > -1); - self.flash.canPlay[format] = self.format[format].flashCanPlay && self.flash.available; - }); - this.html.desired = false; - this.aurora.desired = false; - this.flash.desired = false; - $.each(this.solutions, function(solutionPriority, solution) { - if(solutionPriority === 0) { - self[solution].desired = true; - } else { - var audioCanPlay = false; - var videoCanPlay = false; - $.each(self.formats, function(formatPriority, format) { - if(self[self.solutions[0]].canPlay[format]) { // The other solution can play - if(self.format[format].media === 'video') { - videoCanPlay = true; - } else { - audioCanPlay = true; - } - } - }); - self[solution].desired = (self.require.audio && !audioCanPlay) || (self.require.video && !videoCanPlay); - } - }); - // This is what jPlayer will support, based on solution and supplied. - this.html.support = {}; - this.aurora.support = {}; - this.flash.support = {}; - $.each(this.formats, function(priority, format) { - self.html.support[format] = self.html.canPlay[format] && self.html.desired; - self.aurora.support[format] = self.aurora.canPlay[format] && self.aurora.desired; - self.flash.support[format] = self.flash.canPlay[format] && self.flash.desired; - }); - // If jPlayer is supporting any format in a solution, then the solution is used. - this.html.used = false; - this.aurora.used = false; - this.flash.used = false; - $.each(this.solutions, function(solutionPriority, solution) { - $.each(self.formats, function(formatPriority, format) { - if(self[solution].support[format]) { - self[solution].used = true; - return false; - } - }); - }); - - // Init solution active state and the event gates to false. - this._resetActive(); - this._resetGate(); - - // Set up the css selectors for the control and feedback entities. - this._cssSelectorAncestor(this.options.cssSelectorAncestor); - - // If neither html nor aurora nor flash are being used by this browser, then media playback is not possible. Trigger an error event. - if(!(this.html.used || this.aurora.used || this.flash.used)) { - this._error( { - type: $.jPlayer.error.NO_SOLUTION, - context: "{solution:'" + this.options.solution + "', supplied:'" + this.options.supplied + "'}", - message: $.jPlayer.errorMsg.NO_SOLUTION, - hint: $.jPlayer.errorHint.NO_SOLUTION - }); - if(this.css.jq.noSolution.length) { - this.css.jq.noSolution.show(); - } - } else { - if(this.css.jq.noSolution.length) { - this.css.jq.noSolution.hide(); - } - } - - // Add the flash solution if it is being used. - if(this.flash.used) { - var htmlObj, - flashVars = 'jQuery=' + encodeURI(this.options.noConflict) + '&id=' + encodeURI(this.internal.self.id) + '&vol=' + this.options.volume + '&muted=' + this.options.muted; - - // Code influenced by SWFObject 2.2: http://code.google.com/p/swfobject/ - // Non IE browsers have an initial Flash size of 1 by 1 otherwise the wmode affected the Flash ready event. - - if($.jPlayer.browser.msie && (Number($.jPlayer.browser.version) < 9 || $.jPlayer.browser.documentMode < 9)) { - var objStr = ''; - - var paramStr = [ - '', - '', - '', - '', - '' - ]; - - htmlObj = document.createElement(objStr); - for(var i=0; i < paramStr.length; i++) { - htmlObj.appendChild(document.createElement(paramStr[i])); - } - } else { - var createParam = function(el, n, v) { - var p = document.createElement("param"); - p.setAttribute("name", n); - p.setAttribute("value", v); - el.appendChild(p); - }; - - htmlObj = document.createElement("object"); - htmlObj.setAttribute("id", this.internal.flash.id); - htmlObj.setAttribute("name", this.internal.flash.id); - htmlObj.setAttribute("data", this.internal.flash.swf); - htmlObj.setAttribute("type", "application/x-shockwave-flash"); - htmlObj.setAttribute("width", "1"); // Non-zero - htmlObj.setAttribute("height", "1"); // Non-zero - htmlObj.setAttribute("tabindex", "-1"); - createParam(htmlObj, "flashvars", flashVars); - createParam(htmlObj, "allowscriptaccess", "always"); - createParam(htmlObj, "bgcolor", this.options.backgroundColor); - createParam(htmlObj, "wmode", this.options.wmode); - } - - this.element.append(htmlObj); - this.internal.flash.jq = $(htmlObj); - } - - // Setup playbackRate ability before using _addHtmlEventListeners() - if(this.html.used && !this.flash.used) { // If only HTML - // Using the audio element capabilities for playbackRate. ie., Assuming video element is the same. - this.status.playbackRateEnabled = this._testPlaybackRate('audio'); - } else { - this.status.playbackRateEnabled = false; - } - - this._updatePlaybackRate(); - - // Add the HTML solution if being used. - if(this.html.used) { - - // The HTML Audio handlers - if(this.html.audio.available) { - this._addHtmlEventListeners(this.htmlElement.audio, this.html.audio); - this.element.append(this.htmlElement.audio); - this.internal.audio.jq = $("#" + this.internal.audio.id); - } - - // The HTML Video handlers - if(this.html.video.available) { - this._addHtmlEventListeners(this.htmlElement.video, this.html.video); - this.element.append(this.htmlElement.video); - this.internal.video.jq = $("#" + this.internal.video.id); - if(this.status.nativeVideoControls) { - this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); - } else { - this.internal.video.jq.css({'width':'0px', 'height':'0px'}); // Using size 0x0 since a .hide() causes issues in iOS - } - this.internal.video.jq.bind("click.jPlayer", function() { - self._trigger($.jPlayer.event.click); - }); - } - } - - // Add the Aurora.js solution if being used. - if(this.aurora.used) { - // Aurora.js player need to be created for each media, see setMedia function. - } - - // Create the bridge that emulates the HTML Media element on the jPlayer DIV - if( this.options.emulateHtml ) { - this._emulateHtmlBridge(); - } - - if((this.html.used || this.aurora.used) && !this.flash.used) { // If only HTML, then emulate flash ready() call after 100ms. - setTimeout( function() { - self.internal.ready = true; - self.version.flash = "n/a"; - self._trigger($.jPlayer.event.repeat); // Trigger the repeat event so its handler can initialize itself with the loop option. - self._trigger($.jPlayer.event.ready); - }, 100); - } - - // Initialize the interface components with the options. - this._updateNativeVideoControls(); - // The other controls are now setup in _cssSelectorAncestor() - if(this.css.jq.videoPlay.length) { - this.css.jq.videoPlay.hide(); - } - - $.jPlayer.prototype.count++; // Change static variable via prototype. - }, - destroy: function() { - // MJP: The background change remains. Would need to store the original to restore it correctly. - // MJP: The jPlayer element's size change remains. - - // Clear the media to reset the GUI and stop any downloads. Streams on some browsers had persited. (Chrome) - this.clearMedia(); - // Remove the size/sizeFull cssClass from the cssSelectorAncestor - this._removeUiClass(); - // Remove the times from the GUI - if(this.css.jq.currentTime.length) { - this.css.jq.currentTime.text(""); - } - if(this.css.jq.duration.length) { - this.css.jq.duration.text(""); - } - // Remove any bindings from the interface controls. - $.each(this.css.jq, function(fn, jq) { - // Check selector is valid before trying to execute method. - if(jq.length) { - jq.unbind(".jPlayer"); - } - }); - // Remove the click handlers for $.jPlayer.event.click - this.internal.poster.jq.unbind(".jPlayer"); - if(this.internal.video.jq) { - this.internal.video.jq.unbind(".jPlayer"); - } - // Remove the fullscreen event handlers - this._fullscreenRemoveEventListeners(); - // Remove key bindings - if(this === $.jPlayer.focus) { - $.jPlayer.focus = null; - } - // Destroy the HTML bridge. - if(this.options.emulateHtml) { - this._destroyHtmlBridge(); - } - this.element.removeData("jPlayer"); // Remove jPlayer data - this.element.unbind(".jPlayer"); // Remove all event handlers created by the jPlayer constructor - this.element.empty(); // Remove the inserted child elements - - delete this.instances[this.internal.instance]; // Clear the instance on the static instance object - }, - destroyRemoved: function() { // Destroy any instances that have gone away. - var self = this; - $.each(this.instances, function(i, element) { - if(self.element !== element) { // Do not destroy this instance. - if(!element.data("jPlayer")) { // Check that element is a real jPlayer. - element.jPlayer("destroy"); - delete self.instances[i]; - } - } - }); - }, - enable: function() { // Plan to implement - // options.disabled = false - }, - disable: function () { // Plan to implement - // options.disabled = true - }, - _testCanPlayType: function(elem) { - // IE9 on Win Server 2008 did not implement canPlayType(), but it has the property. - try { - elem.canPlayType(this.format.mp3.codec); // The type is irrelevant. - return true; - } catch(err) { - return false; - } - }, - _testPlaybackRate: function(type) { - // type: String 'audio' or 'video' - var el, rate = 0.5; - type = typeof type === 'string' ? type : 'audio'; - el = document.createElement(type); - // Wrapping in a try/catch, just in case older HTML5 browsers throw and error. - try { - if('playbackRate' in el) { - el.playbackRate = rate; - return el.playbackRate === rate; - } else { - return false; - } - } catch(err) { - return false; - } - }, - _uaBlocklist: function(list) { - // list : object with properties that are all regular expressions. Property names are irrelevant. - // Returns true if the user agent is matched in list. - var ua = navigator.userAgent.toLowerCase(), - block = false; - - $.each(list, function(p, re) { - if(re && re.test(ua)) { - block = true; - return false; // exit $.each. - } - }); - return block; - }, - _restrictNativeVideoControls: function() { - // Fallback to noFullWindow when nativeVideoControls is true and audio media is being used. Affects when both media types are used. - if(this.require.audio) { - if(this.status.nativeVideoControls) { - this.status.nativeVideoControls = false; - this.status.noFullWindow = true; - } - } - }, - _updateNativeVideoControls: function() { - if(this.html.video.available && this.html.used) { - // Turn the HTML Video controls on/off - this.htmlElement.video.controls = this.status.nativeVideoControls; - // Show/hide the jPlayer GUI. - this._updateAutohide(); - // For when option changed. The poster image is not updated, as it is dealt with in setMedia(). Acceptable degradation since seriously doubt these options will change on the fly. Can again review later. - if(this.status.nativeVideoControls && this.require.video) { - this.internal.poster.jq.hide(); - this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); - } else if(this.status.waitForPlay && this.status.video) { - this.internal.poster.jq.show(); - this.internal.video.jq.css({'width': '0px', 'height': '0px'}); - } - } - }, - _addHtmlEventListeners: function(mediaElement, entity) { - var self = this; - mediaElement.preload = this.options.preload; - mediaElement.muted = this.options.muted; - mediaElement.volume = this.options.volume; - - if(this.status.playbackRateEnabled) { - mediaElement.defaultPlaybackRate = this.options.defaultPlaybackRate; - mediaElement.playbackRate = this.options.playbackRate; - } - - // Create the event listeners - // Only want the active entity to affect jPlayer and bubble events. - // Using entity.gate so that object is referenced and gate property always current - - mediaElement.addEventListener("progress", function() { - if(entity.gate) { - if(self.internal.cmdsIgnored && this.readyState > 0) { // Detect iOS executed the command - self.internal.cmdsIgnored = false; - } - self._getHtmlStatus(mediaElement); - self._updateInterface(); - self._trigger($.jPlayer.event.progress); - } - }, false); - mediaElement.addEventListener("loadeddata", function() { - if(entity.gate) { - self.androidFix.setMedia = false; // Disable the fix after the first progress event. - if(self.androidFix.play) { // Play Android audio - performing the fix. - self.androidFix.play = false; - self.play(self.androidFix.time); - } - if(self.androidFix.pause) { // Pause Android audio at time - performing the fix. - self.androidFix.pause = false; - self.pause(self.androidFix.time); - } - self._trigger($.jPlayer.event.loadeddata); - } - }, false); - mediaElement.addEventListener("timeupdate", function() { - if(entity.gate) { - self._getHtmlStatus(mediaElement); - self._updateInterface(); - self._trigger($.jPlayer.event.timeupdate); - } - }, false); - mediaElement.addEventListener("durationchange", function() { - if(entity.gate) { - self._getHtmlStatus(mediaElement); - self._updateInterface(); - self._trigger($.jPlayer.event.durationchange); - } - }, false); - mediaElement.addEventListener("play", function() { - if(entity.gate) { - self._updateButtons(true); - self._html_checkWaitForPlay(); // So the native controls update this variable and puts the hidden interface in the correct state. Affects toggling native controls. - self._trigger($.jPlayer.event.play); - } - }, false); - mediaElement.addEventListener("playing", function() { - if(entity.gate) { - self._updateButtons(true); - self._seeked(); - self._trigger($.jPlayer.event.playing); - } - }, false); - mediaElement.addEventListener("pause", function() { - if(entity.gate) { - self._updateButtons(false); - self._trigger($.jPlayer.event.pause); - } - }, false); - mediaElement.addEventListener("waiting", function() { - if(entity.gate) { - self._seeking(); - self._trigger($.jPlayer.event.waiting); - } - }, false); - mediaElement.addEventListener("seeking", function() { - if(entity.gate) { - self._seeking(); - self._trigger($.jPlayer.event.seeking); - } - }, false); - mediaElement.addEventListener("seeked", function() { - if(entity.gate) { - self._seeked(); - self._trigger($.jPlayer.event.seeked); - } - }, false); - mediaElement.addEventListener("volumechange", function() { - if(entity.gate) { - // Read the values back from the element as the Blackberry PlayBook shares the volume with the physical buttons master volume control. - // However, when tested 6th July 2011, those buttons do not generate an event. The physical play/pause button does though. - self.options.volume = mediaElement.volume; - self.options.muted = mediaElement.muted; - self._updateMute(); - self._updateVolume(); - self._trigger($.jPlayer.event.volumechange); - } - }, false); - mediaElement.addEventListener("ratechange", function() { - if(entity.gate) { - self.options.defaultPlaybackRate = mediaElement.defaultPlaybackRate; - self.options.playbackRate = mediaElement.playbackRate; - self._updatePlaybackRate(); - self._trigger($.jPlayer.event.ratechange); - } - }, false); - mediaElement.addEventListener("suspend", function() { // Seems to be the only way of capturing that the iOS4 browser did not actually play the media from the page code. ie., It needs a user gesture. - if(entity.gate) { - self._seeked(); - self._trigger($.jPlayer.event.suspend); - } - }, false); - mediaElement.addEventListener("ended", function() { - if(entity.gate) { - // Order of the next few commands are important. Change the time and then pause. - // Solves a bug in Firefox, where issuing pause 1st causes the media to play from the start. ie., The pause is ignored. - if(!$.jPlayer.browser.webkit) { // Chrome crashes if you do this in conjunction with a setMedia command in an ended event handler. ie., The playlist demo. - self.htmlElement.media.currentTime = 0; // Safari does not care about this command. ie., It works with or without this line. (Both Safari and Chrome are Webkit.) - } - self.htmlElement.media.pause(); // Pause otherwise a click on the progress bar will play from that point, when it shouldn't, since it stopped playback. - self._updateButtons(false); - self._getHtmlStatus(mediaElement, true); // With override true. Otherwise Chrome leaves progress at full. - self._updateInterface(); - self._trigger($.jPlayer.event.ended); - } - }, false); - mediaElement.addEventListener("error", function() { - if(entity.gate) { - self._updateButtons(false); - self._seeked(); - if(self.status.srcSet) { // Deals with case of clearMedia() causing an error event. - clearTimeout(self.internal.htmlDlyCmdId); // Clears any delayed commands used in the HTML solution. - self.status.waitForLoad = true; // Allows the load operation to try again. - self.status.waitForPlay = true; // Reset since a play was captured. - if(self.status.video && !self.status.nativeVideoControls) { - self.internal.video.jq.css({'width':'0px', 'height':'0px'}); - } - if(self._validString(self.status.media.poster) && !self.status.nativeVideoControls) { - self.internal.poster.jq.show(); - } - if(self.css.jq.videoPlay.length) { - self.css.jq.videoPlay.show(); - } - self._error( { - type: $.jPlayer.error.URL, - context: self.status.src, // this.src shows absolute urls. Want context to show the url given. - message: $.jPlayer.errorMsg.URL, - hint: $.jPlayer.errorHint.URL - }); - } - } - }, false); - // Create all the other event listeners that bubble up to a jPlayer event from html, without being used by jPlayer. - $.each($.jPlayer.htmlEvent, function(i, eventType) { - mediaElement.addEventListener(this, function() { - if(entity.gate) { - self._trigger($.jPlayer.event[eventType]); - } - }, false); - }); - }, - _addAuroraEventListeners : function(player, entity) { - var self = this; - //player.preload = this.options.preload; - //player.muted = this.options.muted; - player.volume = this.options.volume * 100; - - // Create the event listeners - // Only want the active entity to affect jPlayer and bubble events. - // Using entity.gate so that object is referenced and gate property always current - - player.on("progress", function() { - if(entity.gate) { - if(self.internal.cmdsIgnored && this.readyState > 0) { // Detect iOS executed the command - self.internal.cmdsIgnored = false; - } - self._getAuroraStatus(player); - self._updateInterface(); - self._trigger($.jPlayer.event.progress); - // Progress with song duration, we estimate timeupdate need to be triggered too. - if (player.duration > 0) { - self._trigger($.jPlayer.event.timeupdate); - } - } - }, false); - player.on("ready", function() { - if(entity.gate) { - self._trigger($.jPlayer.event.loadeddata); - } - }, false); - player.on("duration", function() { - if(entity.gate) { - self._getAuroraStatus(player); - self._updateInterface(); - self._trigger($.jPlayer.event.durationchange); - } - }, false); - player.on("end", function() { - if(entity.gate) { - // Order of the next few commands are important. Change the time and then pause. - self._updateButtons(false); - self._getAuroraStatus(player, true); - self._updateInterface(); - self._trigger($.jPlayer.event.ended); - } - }, false); - player.on("error", function() { - if(entity.gate) { - self._updateButtons(false); - self._seeked(); - if(self.status.srcSet) { // Deals with case of clearMedia() causing an error event. - self.status.waitForLoad = true; // Allows the load operation to try again. - self.status.waitForPlay = true; // Reset since a play was captured. - if(self.status.video && !self.status.nativeVideoControls) { - self.internal.video.jq.css({'width':'0px', 'height':'0px'}); - } - if(self._validString(self.status.media.poster) && !self.status.nativeVideoControls) { - self.internal.poster.jq.show(); - } - if(self.css.jq.videoPlay.length) { - self.css.jq.videoPlay.show(); - } - self._error( { - type: $.jPlayer.error.URL, - context: self.status.src, // this.src shows absolute urls. Want context to show the url given. - message: $.jPlayer.errorMsg.URL, - hint: $.jPlayer.errorHint.URL - }); - } - } - }, false); - }, - _getHtmlStatus: function(media, override) { - var ct = 0, cpa = 0, sp = 0, cpr = 0; - - // Fixes the duration bug in iOS, where the durationchange event occurs when media.duration is not always correct. - // Fixes the initial duration bug in BB OS7, where the media.duration is infinity and displays as NaN:NaN due to Date() using inifity. - if(isFinite(media.duration)) { - this.status.duration = media.duration; - } - - ct = media.currentTime; - cpa = (this.status.duration > 0) ? 100 * ct / this.status.duration : 0; - if((typeof media.seekable === "object") && (media.seekable.length > 0)) { - sp = (this.status.duration > 0) ? 100 * media.seekable.end(media.seekable.length-1) / this.status.duration : 100; - cpr = (this.status.duration > 0) ? 100 * media.currentTime / media.seekable.end(media.seekable.length-1) : 0; // Duration conditional for iOS duration bug. ie., seekable.end is a NaN in that case. - } else { - sp = 100; - cpr = cpa; - } - - if(override) { - ct = 0; - cpr = 0; - cpa = 0; - } - - this.status.seekPercent = sp; - this.status.currentPercentRelative = cpr; - this.status.currentPercentAbsolute = cpa; - this.status.currentTime = ct; - - this.status.remaining = this.status.duration - this.status.currentTime; - - this.status.videoWidth = media.videoWidth; - this.status.videoHeight = media.videoHeight; - - this.status.readyState = media.readyState; - this.status.networkState = media.networkState; - this.status.playbackRate = media.playbackRate; - this.status.ended = media.ended; - }, - _getAuroraStatus: function(player, override) { - var ct = 0, cpa = 0, sp = 0, cpr = 0; - - this.status.duration = player.duration / 1000; - - ct = player.currentTime / 1000; - cpa = (this.status.duration > 0) ? 100 * ct / this.status.duration : 0; - if(player.buffered > 0) { - sp = (this.status.duration > 0) ? (player.buffered * this.status.duration) / this.status.duration : 100; - cpr = (this.status.duration > 0) ? ct / (player.buffered * this.status.duration) : 0; - } else { - sp = 100; - cpr = cpa; - } - - if(override) { - ct = 0; - cpr = 0; - cpa = 0; - } - - this.status.seekPercent = sp; - this.status.currentPercentRelative = cpr; - this.status.currentPercentAbsolute = cpa; - this.status.currentTime = ct; - - this.status.remaining = this.status.duration - this.status.currentTime; - - this.status.readyState = 4; // status.readyState; - this.status.networkState = 0; // status.networkState; - this.status.playbackRate = 1; // status.playbackRate; - this.status.ended = false; // status.ended; - }, - _resetStatus: function() { - this.status = $.extend({}, this.status, $.jPlayer.prototype.status); // Maintains the status properties that persist through a reset. - }, - _trigger: function(eventType, error, warning) { // eventType always valid as called using $.jPlayer.event.eventType - var event = $.Event(eventType); - event.jPlayer = {}; - event.jPlayer.version = $.extend({}, this.version); - event.jPlayer.options = $.extend(true, {}, this.options); // Deep copy - event.jPlayer.status = $.extend(true, {}, this.status); // Deep copy - event.jPlayer.html = $.extend(true, {}, this.html); // Deep copy - event.jPlayer.aurora = $.extend(true, {}, this.aurora); // Deep copy - event.jPlayer.flash = $.extend(true, {}, this.flash); // Deep copy - if(error) { - event.jPlayer.error = $.extend({}, error); - } - if(warning) { - event.jPlayer.warning = $.extend({}, warning); - } - this.element.trigger(event); - }, - jPlayerFlashEvent: function(eventType, status) { // Called from Flash - if(eventType === $.jPlayer.event.ready) { - if(!this.internal.ready) { - this.internal.ready = true; - this.internal.flash.jq.css({'width':'0px', 'height':'0px'}); // Once Flash generates the ready event, minimise to zero as it is not affected by wmode anymore. - - this.version.flash = status.version; - if(this.version.needFlash !== this.version.flash) { - this._error( { - type: $.jPlayer.error.VERSION, - context: this.version.flash, - message: $.jPlayer.errorMsg.VERSION + this.version.flash, - hint: $.jPlayer.errorHint.VERSION - }); - } - this._trigger($.jPlayer.event.repeat); // Trigger the repeat event so its handler can initialize itself with the loop option. - this._trigger(eventType); - } else { - // This condition occurs if the Flash is hidden and then shown again. - // Firefox also reloads the Flash if the CSS position changes. position:fixed is used for full screen. - - // Only do this if the Flash is the solution being used at the moment. Affects Media players where both solution may be being used. - if(this.flash.gate) { - - // Send the current status to the Flash now that it is ready (available) again. - if(this.status.srcSet) { - - // Need to read original status before issuing the setMedia command. - var currentTime = this.status.currentTime, - paused = this.status.paused; - - this.setMedia(this.status.media); - this.volumeWorker(this.options.volume); - if(currentTime > 0) { - if(paused) { - this.pause(currentTime); - } else { - this.play(currentTime); - } - } - } - this._trigger($.jPlayer.event.flashreset); - } - } - } - if(this.flash.gate) { - switch(eventType) { - case $.jPlayer.event.progress: - this._getFlashStatus(status); - this._updateInterface(); - this._trigger(eventType); - break; - case $.jPlayer.event.timeupdate: - this._getFlashStatus(status); - this._updateInterface(); - this._trigger(eventType); - break; - case $.jPlayer.event.play: - this._seeked(); - this._updateButtons(true); - this._trigger(eventType); - break; - case $.jPlayer.event.pause: - this._updateButtons(false); - this._trigger(eventType); - break; - case $.jPlayer.event.ended: - this._updateButtons(false); - this._trigger(eventType); - break; - case $.jPlayer.event.click: - this._trigger(eventType); // This could be dealt with by the default - break; - case $.jPlayer.event.error: - this.status.waitForLoad = true; // Allows the load operation to try again. - this.status.waitForPlay = true; // Reset since a play was captured. - if(this.status.video) { - this.internal.flash.jq.css({'width':'0px', 'height':'0px'}); - } - if(this._validString(this.status.media.poster)) { - this.internal.poster.jq.show(); - } - if(this.css.jq.videoPlay.length && this.status.video) { - this.css.jq.videoPlay.show(); - } - if(this.status.video) { // Set up for another try. Execute before error event. - this._flash_setVideo(this.status.media); - } else { - this._flash_setAudio(this.status.media); - } - this._updateButtons(false); - this._error( { - type: $.jPlayer.error.URL, - context:status.src, - message: $.jPlayer.errorMsg.URL, - hint: $.jPlayer.errorHint.URL - }); - break; - case $.jPlayer.event.seeking: - this._seeking(); - this._trigger(eventType); - break; - case $.jPlayer.event.seeked: - this._seeked(); - this._trigger(eventType); - break; - case $.jPlayer.event.ready: - // The ready event is handled outside the switch statement. - // Captured here otherwise 2 ready events would be generated if the ready event handler used setMedia. - break; - default: - this._trigger(eventType); - } - } - return false; - }, - _getFlashStatus: function(status) { - this.status.seekPercent = status.seekPercent; - this.status.currentPercentRelative = status.currentPercentRelative; - this.status.currentPercentAbsolute = status.currentPercentAbsolute; - this.status.currentTime = status.currentTime; - this.status.duration = status.duration; - this.status.remaining = status.duration - status.currentTime; - - this.status.videoWidth = status.videoWidth; - this.status.videoHeight = status.videoHeight; - - // The Flash does not generate this information in this release - this.status.readyState = 4; // status.readyState; - this.status.networkState = 0; // status.networkState; - this.status.playbackRate = 1; // status.playbackRate; - this.status.ended = false; // status.ended; - }, - _updateButtons: function(playing) { - if(playing === undefined) { - playing = !this.status.paused; - } else { - this.status.paused = !playing; - } - // Apply the state classes. (For the useStateClassSkin:true option) - if(playing) { - this.addStateClass('playing'); - } else { - this.removeStateClass('playing'); - } - if(!this.status.noFullWindow && this.options.fullWindow) { - this.addStateClass('fullScreen'); - } else { - this.removeStateClass('fullScreen'); - } - if(this.options.loop) { - this.addStateClass('looped'); - } else { - this.removeStateClass('looped'); - } - // Toggle the GUI element pairs. (For the useStateClassSkin:false option) - if(this.css.jq.play.length && this.css.jq.pause.length) { - if(playing) { - this.css.jq.play.hide(); - this.css.jq.pause.show(); - } else { - this.css.jq.play.show(); - this.css.jq.pause.hide(); - } - } - if(this.css.jq.restoreScreen.length && this.css.jq.fullScreen.length) { - if(this.status.noFullWindow) { - this.css.jq.fullScreen.hide(); - this.css.jq.restoreScreen.hide(); - } else if(this.options.fullWindow) { - this.css.jq.fullScreen.hide(); - this.css.jq.restoreScreen.show(); - } else { - this.css.jq.fullScreen.show(); - this.css.jq.restoreScreen.hide(); - } - } - if(this.css.jq.repeat.length && this.css.jq.repeatOff.length) { - if(this.options.loop) { - this.css.jq.repeat.hide(); - this.css.jq.repeatOff.show(); - } else { - this.css.jq.repeat.show(); - this.css.jq.repeatOff.hide(); - } - } - }, - _updateInterface: function() { - if(this.css.jq.seekBar.length) { - this.css.jq.seekBar.width(this.status.seekPercent+"%"); - } - if(this.css.jq.playBar.length) { - if(this.options.smoothPlayBar) { - this.css.jq.playBar.stop().animate({ - width: this.status.currentPercentAbsolute+"%" - }, 250, "linear"); - } else { - this.css.jq.playBar.width(this.status.currentPercentRelative+"%"); - } - } - var currentTimeText = ''; - if(this.css.jq.currentTime.length) { - currentTimeText = this._convertTime(this.status.currentTime); - if(currentTimeText !== this.css.jq.currentTime.text()) { - this.css.jq.currentTime.text(this._convertTime(this.status.currentTime)); - } - } - var durationText = '', - duration = this.status.duration, - remaining = this.status.remaining; - if(this.css.jq.duration.length) { - if(typeof this.status.media.duration === 'string') { - durationText = this.status.media.duration; - } else { - if(typeof this.status.media.duration === 'number') { - duration = this.status.media.duration; - remaining = duration - this.status.currentTime; - } - if(this.options.remainingDuration) { - durationText = (remaining > 0 ? '-' : '') + this._convertTime(remaining); - } else { - durationText = this._convertTime(duration); - } - } - if(durationText !== this.css.jq.duration.text()) { - this.css.jq.duration.text(durationText); - } - } - }, - _convertTime: ConvertTime.prototype.time, - _seeking: function() { - if(this.css.jq.seekBar.length) { - this.css.jq.seekBar.addClass("jp-seeking-bg"); - } - this.addStateClass('seeking'); - }, - _seeked: function() { - if(this.css.jq.seekBar.length) { - this.css.jq.seekBar.removeClass("jp-seeking-bg"); - } - this.removeStateClass('seeking'); - }, - _resetGate: function() { - this.html.audio.gate = false; - this.html.video.gate = false; - this.aurora.gate = false; - this.flash.gate = false; - }, - _resetActive: function() { - this.html.active = false; - this.aurora.active = false; - this.flash.active = false; - }, - _escapeHtml: function(s) { - return s.split('&').join('&').split('<').join('<').split('>').join('>').split('"').join('"'); - }, - _qualifyURL: function(url) { - var el = document.createElement('div'); - el.innerHTML= 'x'; - return el.firstChild.href; - }, - _absoluteMediaUrls: function(media) { - var self = this; - $.each(media, function(type, url) { - if(url && self.format[type] && url.substr(0, 5) !== "data:") { - media[type] = self._qualifyURL(url); - } - }); - return media; - }, - addStateClass: function(state) { - if(this.ancestorJq.length) { - this.ancestorJq.addClass(this.options.stateClass[state]); - } - }, - removeStateClass: function(state) { - if(this.ancestorJq.length) { - this.ancestorJq.removeClass(this.options.stateClass[state]); - } - }, - setMedia: function(media) { - - /* media[format] = String: URL of format. Must contain all of the supplied option's video or audio formats. - * media.poster = String: Video poster URL. - * media.track = Array: Of objects defining the track element: kind, src, srclang, label, def. - * media.stream = Boolean: * NOT IMPLEMENTED * Designating actual media streams. ie., "false/undefined" for files. Plan to refresh the flash every so often. - */ - - var self = this, - supported = false, - posterChanged = this.status.media.poster !== media.poster; // Compare before reset. Important for OSX Safari as this.htmlElement.poster.src is absolute, even if original poster URL was relative. - - this._resetMedia(); - this._resetGate(); - this._resetActive(); - - // Clear the Android Fix. - this.androidFix.setMedia = false; - this.androidFix.play = false; - this.androidFix.pause = false; - - // Convert all media URLs to absolute URLs. - media = this._absoluteMediaUrls(media); - - $.each(this.formats, function(formatPriority, format) { - var isVideo = self.format[format].media === 'video'; - $.each(self.solutions, function(solutionPriority, solution) { - if(self[solution].support[format] && self._validString(media[format])) { // Format supported in solution and url given for format. - var isHtml = solution === 'html'; - var isAurora = solution === 'aurora'; - - if(isVideo) { - if(isHtml) { - self.html.video.gate = true; - self._html_setVideo(media); - self.html.active = true; - } else { - self.flash.gate = true; - self._flash_setVideo(media); - self.flash.active = true; - } - if(self.css.jq.videoPlay.length) { - self.css.jq.videoPlay.show(); - } - self.status.video = true; - } else { - if(isHtml) { - self.html.audio.gate = true; - self._html_setAudio(media); - self.html.active = true; - - // Setup the Android Fix - Only for HTML audio. - if($.jPlayer.platform.android) { - self.androidFix.setMedia = true; - } - } else if(isAurora) { - self.aurora.gate = true; - self._aurora_setAudio(media); - self.aurora.active = true; - } else { - self.flash.gate = true; - self._flash_setAudio(media); - self.flash.active = true; - } - if(self.css.jq.videoPlay.length) { - self.css.jq.videoPlay.hide(); - } - self.status.video = false; - } - - supported = true; - return false; // Exit $.each - } - }); - if(supported) { - return false; // Exit $.each - } - }); - - if(supported) { - if(!(this.status.nativeVideoControls && this.html.video.gate)) { - // Set poster IMG if native video controls are not being used - // Note: With IE the IMG onload event occurs immediately when cached. - // Note: Poster hidden by default in _resetMedia() - if(this._validString(media.poster)) { - if(posterChanged) { // Since some browsers do not generate img onload event. - this.htmlElement.poster.src = media.poster; - } else { - this.internal.poster.jq.show(); - } - } - } - if(typeof media.title === 'string') { - if(this.css.jq.title.length) { - this.css.jq.title.html(media.title); - } - if(this.htmlElement.audio) { - this.htmlElement.audio.setAttribute('title', media.title); - } - if(this.htmlElement.video) { - this.htmlElement.video.setAttribute('title', media.title); - } - } - this.status.srcSet = true; - this.status.media = $.extend({}, media); - this._updateButtons(false); - this._updateInterface(); - this._trigger($.jPlayer.event.setmedia); - } else { // jPlayer cannot support any formats provided in this browser - // Send an error event - this._error( { - type: $.jPlayer.error.NO_SUPPORT, - context: "{supplied:'" + this.options.supplied + "'}", - message: $.jPlayer.errorMsg.NO_SUPPORT, - hint: $.jPlayer.errorHint.NO_SUPPORT - }); - } - }, - _resetMedia: function() { - this._resetStatus(); - this._updateButtons(false); - this._updateInterface(); - this._seeked(); - this.internal.poster.jq.hide(); - - clearTimeout(this.internal.htmlDlyCmdId); - - if(this.html.active) { - this._html_resetMedia(); - } else if(this.aurora.active) { - this._aurora_resetMedia(); - } else if(this.flash.active) { - this._flash_resetMedia(); - } - }, - clearMedia: function() { - this._resetMedia(); - - if(this.html.active) { - this._html_clearMedia(); - } else if(this.aurora.active) { - this._aurora_clearMedia(); - } else if(this.flash.active) { - this._flash_clearMedia(); - } - - this._resetGate(); - this._resetActive(); - }, - load: function() { - if(this.status.srcSet) { - if(this.html.active) { - this._html_load(); - } else if(this.aurora.active) { - this._aurora_load(); - } else if(this.flash.active) { - this._flash_load(); - } - } else { - this._urlNotSetError("load"); - } - }, - focus: function() { - if(this.options.keyEnabled) { - $.jPlayer.focus = this; - } - }, - play: function(time) { - var guiAction = typeof time === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI. - if(guiAction && this.options.useStateClassSkin && !this.status.paused) { - this.pause(time); // The time would be the click event, but passing it over so info is not lost. - } else { - time = (typeof time === "number") ? time : NaN; // Remove jQuery event from click handler - if(this.status.srcSet) { - this.focus(); - if(this.html.active) { - this._html_play(time); - } else if(this.aurora.active) { - this._aurora_play(time); - } else if(this.flash.active) { - this._flash_play(time); - } - } else { - this._urlNotSetError("play"); - } - } - }, - videoPlay: function() { // Handles clicks on the play button over the video poster - this.play(); - }, - pause: function(time) { - time = (typeof time === "number") ? time : NaN; // Remove jQuery event from click handler - if(this.status.srcSet) { - if(this.html.active) { - this._html_pause(time); - } else if(this.aurora.active) { - this._aurora_pause(time); - } else if(this.flash.active) { - this._flash_pause(time); - } - } else { - this._urlNotSetError("pause"); - } - }, - tellOthers: function(command, conditions) { - var self = this, - hasConditions = typeof conditions === 'function', - args = Array.prototype.slice.call(arguments); // Convert arguments to an Array. - - if(typeof command !== 'string') { // Ignore, since no command. - return; // Return undefined to maintain chaining. - } - if(hasConditions) { - args.splice(1, 1); // Remove the conditions from the arguments - } - - $.jPlayer.prototype.destroyRemoved(); - $.each(this.instances, function() { - // Remember that "this" is the instance's "element" in the $.each() loop. - if(self.element !== this) { // Do not tell my instance. - if(!hasConditions || conditions.call(this.data("jPlayer"), self)) { - this.jPlayer.apply(this, args); - } - } - }); - }, - pauseOthers: function(time) { - this.tellOthers("pause", function() { - // In the conditions function, the "this" context is the other instance's jPlayer object. - return this.status.srcSet; - }, time); - }, - stop: function() { - if(this.status.srcSet) { - if(this.html.active) { - this._html_pause(0); - } else if(this.aurora.active) { - this._aurora_pause(0); - } else if(this.flash.active) { - this._flash_pause(0); - } - } else { - this._urlNotSetError("stop"); - } - }, - playHead: function(p) { - p = this._limitValue(p, 0, 100); - if(this.status.srcSet) { - if(this.html.active) { - this._html_playHead(p); - } else if(this.aurora.active) { - this._aurora_playHead(p); - } else if(this.flash.active) { - this._flash_playHead(p); - } - } else { - this._urlNotSetError("playHead"); - } - }, - _muted: function(muted) { - this.mutedWorker(muted); - if(this.options.globalVolume) { - this.tellOthers("mutedWorker", function() { - // Check the other instance has global volume enabled. - return this.options.globalVolume; - }, muted); - } - }, - mutedWorker: function(muted) { - this.options.muted = muted; - if(this.html.used) { - this._html_setProperty('muted', muted); - } - if(this.aurora.used) { - this._aurora_mute(muted); - } - if(this.flash.used) { - this._flash_mute(muted); - } - - // The HTML solution generates this event from the media element itself. - if(!this.html.video.gate && !this.html.audio.gate) { - this._updateMute(muted); - this._updateVolume(this.options.volume); - this._trigger($.jPlayer.event.volumechange); - } - }, - mute: function(mute) { // mute is either: undefined (true), an event object (true) or a boolean (muted). - var guiAction = typeof mute === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI. - if(guiAction && this.options.useStateClassSkin && this.options.muted) { - this._muted(false); - } else { - mute = mute === undefined ? true : !!mute; - this._muted(mute); - } - }, - unmute: function(unmute) { // unmute is either: undefined (true), an event object (true) or a boolean (!muted). - unmute = unmute === undefined ? true : !!unmute; - this._muted(!unmute); - }, - _updateMute: function(mute) { - if(mute === undefined) { - mute = this.options.muted; - } - if(mute) { - this.addStateClass('muted'); - } else { - this.removeStateClass('muted'); - } - if(this.css.jq.mute.length && this.css.jq.unmute.length) { - if(this.status.noVolume) { - this.css.jq.mute.hide(); - this.css.jq.unmute.hide(); - } else if(mute) { - this.css.jq.mute.hide(); - this.css.jq.unmute.show(); - } else { - this.css.jq.mute.show(); - this.css.jq.unmute.hide(); - } - } - }, - volume: function(v) { - this.volumeWorker(v); - if(this.options.globalVolume) { - this.tellOthers("volumeWorker", function() { - // Check the other instance has global volume enabled. - return this.options.globalVolume; - }, v); - } - }, - volumeWorker: function(v) { - v = this._limitValue(v, 0, 1); - this.options.volume = v; - - if(this.html.used) { - this._html_setProperty('volume', v); - } - if(this.aurora.used) { - this._aurora_volume(v); - } - if(this.flash.used) { - this._flash_volume(v); - } - - // The HTML solution generates this event from the media element itself. - if(!this.html.video.gate && !this.html.audio.gate) { - this._updateVolume(v); - this._trigger($.jPlayer.event.volumechange); - } - }, - volumeBar: function(e) { // Handles clicks on the volumeBar - if(this.css.jq.volumeBar.length) { - // Using $(e.currentTarget) to enable multiple volume bars - var $bar = $(e.currentTarget), - offset = $bar.offset(), - x = e.pageX - offset.left, - w = $bar.width(), - y = $bar.height() - e.pageY + offset.top, - h = $bar.height(); - if(this.options.verticalVolume) { - this.volume(y/h); - } else { - this.volume(x/w); - } - } - if(this.options.muted) { - this._muted(false); - } - }, - _updateVolume: function(v) { - if(v === undefined) { - v = this.options.volume; - } - v = this.options.muted ? 0 : v; - - if(this.status.noVolume) { - this.addStateClass('noVolume'); - if(this.css.jq.volumeBar.length) { - this.css.jq.volumeBar.hide(); - } - if(this.css.jq.volumeBarValue.length) { - this.css.jq.volumeBarValue.hide(); - } - if(this.css.jq.volumeMax.length) { - this.css.jq.volumeMax.hide(); - } - } else { - this.removeStateClass('noVolume'); - if(this.css.jq.volumeBar.length) { - this.css.jq.volumeBar.show(); - } - if(this.css.jq.volumeBarValue.length) { - this.css.jq.volumeBarValue.show(); - this.css.jq.volumeBarValue[this.options.verticalVolume ? "height" : "width"]((v*100)+"%"); - } - if(this.css.jq.volumeMax.length) { - this.css.jq.volumeMax.show(); - } - } - }, - volumeMax: function() { // Handles clicks on the volume max - this.volume(1); - if(this.options.muted) { - this._muted(false); - } - }, - _cssSelectorAncestor: function(ancestor) { - var self = this; - this.options.cssSelectorAncestor = ancestor; - this._removeUiClass(); - this.ancestorJq = ancestor ? $(ancestor) : []; // Would use $() instead of [], but it is only 1.4+ - if(ancestor && this.ancestorJq.length !== 1) { // So empty strings do not generate the warning. - this._warning( { - type: $.jPlayer.warning.CSS_SELECTOR_COUNT, - context: ancestor, - message: $.jPlayer.warningMsg.CSS_SELECTOR_COUNT + this.ancestorJq.length + " found for cssSelectorAncestor.", - hint: $.jPlayer.warningHint.CSS_SELECTOR_COUNT - }); - } - this._addUiClass(); - $.each(this.options.cssSelector, function(fn, cssSel) { - self._cssSelector(fn, cssSel); - }); - - // Set the GUI to the current state. - this._updateInterface(); - this._updateButtons(); - this._updateAutohide(); - this._updateVolume(); - this._updateMute(); - }, - _cssSelector: function(fn, cssSel) { - var self = this; - if(typeof cssSel === 'string') { - if($.jPlayer.prototype.options.cssSelector[fn]) { - if(this.css.jq[fn] && this.css.jq[fn].length) { - this.css.jq[fn].unbind(".jPlayer"); - } - this.options.cssSelector[fn] = cssSel; - this.css.cs[fn] = this.options.cssSelectorAncestor + " " + cssSel; - - if(cssSel) { // Checks for empty string - this.css.jq[fn] = $(this.css.cs[fn]); - } else { - this.css.jq[fn] = []; // To comply with the css.jq[fn].length check before its use. As of jQuery 1.4 could have used $() for an empty set. - } - - if(this.css.jq[fn].length && this[fn]) { - var handler = function(e) { - e.preventDefault(); - self[fn](e); - if(self.options.autoBlur) { - $(this).blur(); - } else { - $(this).focus(); // Force focus for ARIA. - } - }; - this.css.jq[fn].bind("click.jPlayer", handler); // Using jPlayer namespace - } - - if(cssSel && this.css.jq[fn].length !== 1) { // So empty strings do not generate the warning. ie., they just remove the old one. - this._warning( { - type: $.jPlayer.warning.CSS_SELECTOR_COUNT, - context: this.css.cs[fn], - message: $.jPlayer.warningMsg.CSS_SELECTOR_COUNT + this.css.jq[fn].length + " found for " + fn + " method.", - hint: $.jPlayer.warningHint.CSS_SELECTOR_COUNT - }); - } - } else { - this._warning( { - type: $.jPlayer.warning.CSS_SELECTOR_METHOD, - context: fn, - message: $.jPlayer.warningMsg.CSS_SELECTOR_METHOD, - hint: $.jPlayer.warningHint.CSS_SELECTOR_METHOD - }); - } - } else { - this._warning( { - type: $.jPlayer.warning.CSS_SELECTOR_STRING, - context: cssSel, - message: $.jPlayer.warningMsg.CSS_SELECTOR_STRING, - hint: $.jPlayer.warningHint.CSS_SELECTOR_STRING - }); - } - }, - duration: function(e) { - if(this.options.toggleDuration) { - if(this.options.captureDuration) { - e.stopPropagation(); - } - this._setOption("remainingDuration", !this.options.remainingDuration); - } - }, - seekBar: function(e) { // Handles clicks on the seekBar - if(this.css.jq.seekBar.length) { - // Using $(e.currentTarget) to enable multiple seek bars - var $bar = $(e.currentTarget), - offset = $bar.offset(), - x = e.pageX - offset.left, - w = $bar.width(), - p = 100 * x / w; - this.playHead(p); - } - }, - playbackRate: function(pbr) { - this._setOption("playbackRate", pbr); - }, - playbackRateBar: function(e) { // Handles clicks on the playbackRateBar - if(this.css.jq.playbackRateBar.length) { - // Using $(e.currentTarget) to enable multiple playbackRate bars - var $bar = $(e.currentTarget), - offset = $bar.offset(), - x = e.pageX - offset.left, - w = $bar.width(), - y = $bar.height() - e.pageY + offset.top, - h = $bar.height(), - ratio, pbr; - if(this.options.verticalPlaybackRate) { - ratio = y/h; - } else { - ratio = x/w; - } - pbr = ratio * (this.options.maxPlaybackRate - this.options.minPlaybackRate) + this.options.minPlaybackRate; - this.playbackRate(pbr); - } - }, - _updatePlaybackRate: function() { - var pbr = this.options.playbackRate, - ratio = (pbr - this.options.minPlaybackRate) / (this.options.maxPlaybackRate - this.options.minPlaybackRate); - if(this.status.playbackRateEnabled) { - if(this.css.jq.playbackRateBar.length) { - this.css.jq.playbackRateBar.show(); - } - if(this.css.jq.playbackRateBarValue.length) { - this.css.jq.playbackRateBarValue.show(); - this.css.jq.playbackRateBarValue[this.options.verticalPlaybackRate ? "height" : "width"]((ratio*100)+"%"); - } - } else { - if(this.css.jq.playbackRateBar.length) { - this.css.jq.playbackRateBar.hide(); - } - if(this.css.jq.playbackRateBarValue.length) { - this.css.jq.playbackRateBarValue.hide(); - } - } - }, - repeat: function(event) { // Handle clicks on the repeat button - var guiAction = typeof event === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI. - if(guiAction && this.options.useStateClassSkin && this.options.loop) { - this._loop(false); - } else { - this._loop(true); - } - }, - repeatOff: function() { // Handle clicks on the repeatOff button - this._loop(false); - }, - _loop: function(loop) { - if(this.options.loop !== loop) { - this.options.loop = loop; - this._updateButtons(); - this._trigger($.jPlayer.event.repeat); - } - }, - - // Options code adapted from ui.widget.js (1.8.7). Made changes so the key can use dot notation. To match previous getData solution in jPlayer 1. - option: function(key, value) { - var options = key; - - // Enables use: options(). Returns a copy of options object - if ( arguments.length === 0 ) { - return $.extend( true, {}, this.options ); - } - - if(typeof key === "string") { - var keys = key.split("."); - - // Enables use: options("someOption") Returns a copy of the option. Supports dot notation. - if(value === undefined) { - - var opt = $.extend(true, {}, this.options); - for(var i = 0; i < keys.length; i++) { - if(opt[keys[i]] !== undefined) { - opt = opt[keys[i]]; - } else { - this._warning( { - type: $.jPlayer.warning.OPTION_KEY, - context: key, - message: $.jPlayer.warningMsg.OPTION_KEY, - hint: $.jPlayer.warningHint.OPTION_KEY - }); - return undefined; - } - } - return opt; - } - - // Enables use: options("someOptionObject", someObject}). Creates: {someOptionObject:someObject} - // Enables use: options("someOption", someValue). Creates: {someOption:someValue} - // Enables use: options("someOptionObject.someOption", someValue). Creates: {someOptionObject:{someOption:someValue}} - - options = {}; - var opts = options; - - for(var j = 0; j < keys.length; j++) { - if(j < keys.length - 1) { - opts[keys[j]] = {}; - opts = opts[keys[j]]; - } else { - opts[keys[j]] = value; - } - } - } - - // Otherwise enables use: options(optionObject). Uses original object (the key) - - this._setOptions(options); - - return this; - }, - _setOptions: function(options) { - var self = this; - $.each(options, function(key, value) { // This supports the 2 level depth that the options of jPlayer has. Would review if we ever need more depth. - self._setOption(key, value); - }); - - return this; - }, - _setOption: function(key, value) { - var self = this; - - // The ability to set options is limited at this time. - - switch(key) { - case "volume" : - this.volume(value); - break; - case "muted" : - this._muted(value); - break; - case "globalVolume" : - this.options[key] = value; - break; - case "cssSelectorAncestor" : - this._cssSelectorAncestor(value); // Set and refresh all associations for the new ancestor. - break; - case "cssSelector" : - $.each(value, function(fn, cssSel) { - self._cssSelector(fn, cssSel); // NB: The option is set inside this function, after further validity checks. - }); - break; - case "playbackRate" : - this.options[key] = value = this._limitValue(value, this.options.minPlaybackRate, this.options.maxPlaybackRate); - if(this.html.used) { - this._html_setProperty('playbackRate', value); - } - this._updatePlaybackRate(); - break; - case "defaultPlaybackRate" : - this.options[key] = value = this._limitValue(value, this.options.minPlaybackRate, this.options.maxPlaybackRate); - if(this.html.used) { - this._html_setProperty('defaultPlaybackRate', value); - } - this._updatePlaybackRate(); - break; - case "minPlaybackRate" : - this.options[key] = value = this._limitValue(value, 0.1, this.options.maxPlaybackRate - 0.1); - this._updatePlaybackRate(); - break; - case "maxPlaybackRate" : - this.options[key] = value = this._limitValue(value, this.options.minPlaybackRate + 0.1, 16); - this._updatePlaybackRate(); - break; - case "fullScreen" : - if(this.options[key] !== value) { // if changed - var wkv = $.jPlayer.nativeFeatures.fullscreen.used.webkitVideo; - if(!wkv || wkv && !this.status.waitForPlay) { - if(!wkv) { // No sensible way to unset option on these devices. - this.options[key] = value; - } - if(value) { - this._requestFullscreen(); - } else { - this._exitFullscreen(); - } - if(!wkv) { - this._setOption("fullWindow", value); - } - } - } - break; - case "fullWindow" : - if(this.options[key] !== value) { // if changed - this._removeUiClass(); - this.options[key] = value; - this._refreshSize(); - } - break; - case "size" : - if(!this.options.fullWindow && this.options[key].cssClass !== value.cssClass) { - this._removeUiClass(); - } - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this._refreshSize(); - break; - case "sizeFull" : - if(this.options.fullWindow && this.options[key].cssClass !== value.cssClass) { - this._removeUiClass(); - } - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this._refreshSize(); - break; - case "autohide" : - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this._updateAutohide(); - break; - case "loop" : - this._loop(value); - break; - case "remainingDuration" : - this.options[key] = value; - this._updateInterface(); - break; - case "toggleDuration" : - this.options[key] = value; - break; - case "nativeVideoControls" : - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls); - this._restrictNativeVideoControls(); - this._updateNativeVideoControls(); - break; - case "noFullWindow" : - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls); // Need to check again as noFullWindow can depend on this flag and the restrict() can override it. - this.status.noFullWindow = this._uaBlocklist(this.options.noFullWindow); - this._restrictNativeVideoControls(); - this._updateButtons(); - break; - case "noVolume" : - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this.status.noVolume = this._uaBlocklist(this.options.noVolume); - this._updateVolume(); - this._updateMute(); - break; - case "emulateHtml" : - if(this.options[key] !== value) { // To avoid multiple event handlers being created, if true already. - this.options[key] = value; - if(value) { - this._emulateHtmlBridge(); - } else { - this._destroyHtmlBridge(); - } - } - break; - case "timeFormat" : - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - break; - case "keyEnabled" : - this.options[key] = value; - if(!value && this === $.jPlayer.focus) { - $.jPlayer.focus = null; - } - break; - case "keyBindings" : - this.options[key] = $.extend(true, {}, this.options[key], value); // store a merged DEEP copy of it, incase not all properties changed. - break; - case "audioFullScreen" : - this.options[key] = value; - break; - case "autoBlur" : - this.options[key] = value; - break; - } - - return this; - }, - // End of: (Options code adapted from ui.widget.js) - - _refreshSize: function() { - this._setSize(); // update status and jPlayer element size - this._addUiClass(); // update the ui class - this._updateSize(); // update internal sizes - this._updateButtons(); - this._updateAutohide(); - this._trigger($.jPlayer.event.resize); - }, - _setSize: function() { - // Determine the current size from the options - if(this.options.fullWindow) { - this.status.width = this.options.sizeFull.width; - this.status.height = this.options.sizeFull.height; - this.status.cssClass = this.options.sizeFull.cssClass; - } else { - this.status.width = this.options.size.width; - this.status.height = this.options.size.height; - this.status.cssClass = this.options.size.cssClass; - } - - // Set the size of the jPlayer area. - this.element.css({'width': this.status.width, 'height': this.status.height}); - }, - _addUiClass: function() { - if(this.ancestorJq.length) { - this.ancestorJq.addClass(this.status.cssClass); - } - }, - _removeUiClass: function() { - if(this.ancestorJq.length) { - this.ancestorJq.removeClass(this.status.cssClass); - } - }, - _updateSize: function() { - // The poster uses show/hide so can simply resize it. - this.internal.poster.jq.css({'width': this.status.width, 'height': this.status.height}); - - // Video html or flash resized if necessary at this time, or if native video controls being used. - if(!this.status.waitForPlay && this.html.active && this.status.video || this.html.video.available && this.html.used && this.status.nativeVideoControls) { - this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); - } - else if(!this.status.waitForPlay && this.flash.active && this.status.video) { - this.internal.flash.jq.css({'width': this.status.width, 'height': this.status.height}); - } - }, - _updateAutohide: function() { - var self = this, - event = "mousemove.jPlayer", - namespace = ".jPlayerAutohide", - eventType = event + namespace, - handler = function(event) { - var moved = false, - deltaX, deltaY; - if(typeof self.internal.mouse !== "undefined") { - //get the change from last position to this position - deltaX = self.internal.mouse.x - event.pageX; - deltaY = self.internal.mouse.y - event.pageY; - moved = (Math.floor(deltaX) > 0) || (Math.floor(deltaY)>0); - } else { - moved = true; - } - // store current position for next method execution - self.internal.mouse = { - x : event.pageX, - y : event.pageY - }; - // if mouse has been actually moved, do the gui fadeIn/fadeOut - if (moved) { - self.css.jq.gui.fadeIn(self.options.autohide.fadeIn, function() { - clearTimeout(self.internal.autohideId); - self.internal.autohideId = setTimeout( function() { - self.css.jq.gui.fadeOut(self.options.autohide.fadeOut); - }, self.options.autohide.hold); - }); - } - }; - - if(this.css.jq.gui.length) { - - // End animations first so that its callback is executed now. - // Otherwise an in progress fadeIn animation still has the callback to fadeOut again. - this.css.jq.gui.stop(true, true); - - // Removes the fadeOut operation from the fadeIn callback. - clearTimeout(this.internal.autohideId); - // undefine mouse - delete this.internal.mouse; - - this.element.unbind(namespace); - this.css.jq.gui.unbind(namespace); - - if(!this.status.nativeVideoControls) { - if(this.options.fullWindow && this.options.autohide.full || !this.options.fullWindow && this.options.autohide.restored) { - this.element.bind(eventType, handler); - this.css.jq.gui.bind(eventType, handler); - this.css.jq.gui.hide(); - } else { - this.css.jq.gui.show(); - } - } else { - this.css.jq.gui.hide(); - } - } - }, - fullScreen: function(event) { - var guiAction = typeof event === "object"; // Flags GUI click events so we know this was not a direct command, but an action taken by the user on the GUI. - if(guiAction && this.options.useStateClassSkin && this.options.fullScreen) { - this._setOption("fullScreen", false); - } else { - this._setOption("fullScreen", true); - } - }, - restoreScreen: function() { - this._setOption("fullScreen", false); - }, - _fullscreenAddEventListeners: function() { - var self = this, - fs = $.jPlayer.nativeFeatures.fullscreen; - - if(fs.api.fullscreenEnabled) { - if(fs.event.fullscreenchange) { - // Create the event handler function and store it for removal. - if(typeof this.internal.fullscreenchangeHandler !== 'function') { - this.internal.fullscreenchangeHandler = function() { - self._fullscreenchange(); - }; - } - document.addEventListener(fs.event.fullscreenchange, this.internal.fullscreenchangeHandler, false); - } - // No point creating handler for fullscreenerror. - // Either logic avoids fullscreen occurring (w3c/moz), or their is no event on the browser (webkit). - } - }, - _fullscreenRemoveEventListeners: function() { - var fs = $.jPlayer.nativeFeatures.fullscreen; - if(this.internal.fullscreenchangeHandler) { - document.removeEventListener(fs.event.fullscreenchange, this.internal.fullscreenchangeHandler, false); - } - }, - _fullscreenchange: function() { - // If nothing is fullscreen, then we cannot be in fullscreen mode. - if(this.options.fullScreen && !$.jPlayer.nativeFeatures.fullscreen.api.fullscreenElement()) { - this._setOption("fullScreen", false); - } - }, - _requestFullscreen: function() { - // Either the container or the jPlayer div - var e = this.ancestorJq.length ? this.ancestorJq[0] : this.element[0], - fs = $.jPlayer.nativeFeatures.fullscreen; - - // This method needs the video element. For iOS and Android. - if(fs.used.webkitVideo) { - e = this.htmlElement.video; - } - - if(fs.api.fullscreenEnabled) { - fs.api.requestFullscreen(e); - } - }, - _exitFullscreen: function() { - - var fs = $.jPlayer.nativeFeatures.fullscreen, - e; - - // This method needs the video element. For iOS and Android. - if(fs.used.webkitVideo) { - e = this.htmlElement.video; - } - - if(fs.api.fullscreenEnabled) { - fs.api.exitFullscreen(e); - } - }, - _html_initMedia: function(media) { - // Remove any existing track elements - var $media = $(this.htmlElement.media).empty(); - - // Create any track elements given with the media, as an Array of track Objects. - $.each(media.track || [], function(i,v) { - var track = document.createElement('track'); - track.setAttribute("kind", v.kind ? v.kind : ""); - track.setAttribute("src", v.src ? v.src : ""); - track.setAttribute("srclang", v.srclang ? v.srclang : ""); - track.setAttribute("label", v.label ? v.label : ""); - if(v.def) { - track.setAttribute("default", v.def); - } - $media.append(track); - }); - - this.htmlElement.media.src = this.status.src; - - if(this.options.preload !== 'none') { - this._html_load(); // See function for comments - } - this._trigger($.jPlayer.event.timeupdate); // The flash generates this event for its solution. - }, - _html_setFormat: function(media) { - var self = this; - // Always finds a format due to checks in setMedia() - $.each(this.formats, function(priority, format) { - if(self.html.support[format] && media[format]) { - self.status.src = media[format]; - self.status.format[format] = true; - self.status.formatType = format; - return false; - } - }); - }, - _html_setAudio: function(media) { - this._html_setFormat(media); - this.htmlElement.media = this.htmlElement.audio; - this._html_initMedia(media); - }, - _html_setVideo: function(media) { - this._html_setFormat(media); - if(this.status.nativeVideoControls) { - this.htmlElement.video.poster = this._validString(media.poster) ? media.poster : ""; - } - this.htmlElement.media = this.htmlElement.video; - this._html_initMedia(media); - }, - _html_resetMedia: function() { - if(this.htmlElement.media) { - if(this.htmlElement.media.id === this.internal.video.id && !this.status.nativeVideoControls) { - this.internal.video.jq.css({'width':'0px', 'height':'0px'}); - } - this.htmlElement.media.pause(); - } - }, - _html_clearMedia: function() { - if(this.htmlElement.media) { - this.htmlElement.media.src = "about:blank"; - // The following load() is only required for Firefox 3.6 (PowerMacs). - // Recent HTMl5 browsers only require the src change. Due to changes in W3C spec and load() effect. - this.htmlElement.media.load(); // Stops an old, "in progress" download from continuing the download. Triggers the loadstart, error and emptied events, due to the empty src. Also an abort event if a download was in progress. - } - }, - _html_load: function() { - // This function remains to allow the early HTML5 browsers to work, such as Firefox 3.6 - // A change in the W3C spec for the media.load() command means that this is no longer necessary. - // This command should be removed and actually causes minor undesirable effects on some browsers. Such as loading the whole file and not only the metadata. - if(this.status.waitForLoad) { - this.status.waitForLoad = false; - this.htmlElement.media.load(); - } - clearTimeout(this.internal.htmlDlyCmdId); - }, - _html_play: function(time) { - var self = this, - media = this.htmlElement.media; - - this.androidFix.pause = false; // Cancel the pause fix. - - this._html_load(); // Loads if required and clears any delayed commands. - - // Setup the Android Fix. - if(this.androidFix.setMedia) { - this.androidFix.play = true; - this.androidFix.time = time; - - } else if(!isNaN(time)) { - - // Attempt to play it, since iOS has been ignoring commands - if(this.internal.cmdsIgnored) { - media.play(); - } - - try { - // !media.seekable is for old HTML5 browsers, like Firefox 3.6. - // Checking seekable.length is important for iOS6 to work with setMedia().play(time) - if(!media.seekable || typeof media.seekable === "object" && media.seekable.length > 0) { - media.currentTime = time; - media.play(); - } else { - throw 1; - } - } catch(err) { - this.internal.htmlDlyCmdId = setTimeout(function() { - self.play(time); - }, 250); - return; // Cancel execution and wait for the delayed command. - } - } else { - media.play(); - } - this._html_checkWaitForPlay(); - }, - _html_pause: function(time) { - var self = this, - media = this.htmlElement.media; - - this.androidFix.play = false; // Cancel the play fix. - - if(time > 0) { // We do not want the stop() command, which does pause(0), causing a load operation. - this._html_load(); // Loads if required and clears any delayed commands. - } else { - clearTimeout(this.internal.htmlDlyCmdId); - } - - // Order of these commands is important for Safari (Win) and IE9. Pause then change currentTime. - media.pause(); - - // Setup the Android Fix. - if(this.androidFix.setMedia) { - this.androidFix.pause = true; - this.androidFix.time = time; - - } else if(!isNaN(time)) { - try { - if(!media.seekable || typeof media.seekable === "object" && media.seekable.length > 0) { - media.currentTime = time; - } else { - throw 1; - } - } catch(err) { - this.internal.htmlDlyCmdId = setTimeout(function() { - self.pause(time); - }, 250); - return; // Cancel execution and wait for the delayed command. - } - } - if(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button. - this._html_checkWaitForPlay(); - } - }, - _html_playHead: function(percent) { - var self = this, - media = this.htmlElement.media; - - this._html_load(); // Loads if required and clears any delayed commands. - - // This playHead() method needs a refactor to apply the android fix. - - try { - if(typeof media.seekable === "object" && media.seekable.length > 0) { - media.currentTime = percent * media.seekable.end(media.seekable.length-1) / 100; - } else if(media.duration > 0 && !isNaN(media.duration)) { - media.currentTime = percent * media.duration / 100; - } else { - throw "e"; - } - } catch(err) { - this.internal.htmlDlyCmdId = setTimeout(function() { - self.playHead(percent); - }, 250); - return; // Cancel execution and wait for the delayed command. - } - if(!this.status.waitForLoad) { - this._html_checkWaitForPlay(); - } - }, - _html_checkWaitForPlay: function() { - if(this.status.waitForPlay) { - this.status.waitForPlay = false; - if(this.css.jq.videoPlay.length) { - this.css.jq.videoPlay.hide(); - } - if(this.status.video) { - this.internal.poster.jq.hide(); - this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); - } - } - }, - _html_setProperty: function(property, value) { - if(this.html.audio.available) { - this.htmlElement.audio[property] = value; - } - if(this.html.video.available) { - this.htmlElement.video[property] = value; - } - }, - _aurora_setAudio: function(media) { - var self = this; - - // Always finds a format due to checks in setMedia() - $.each(this.formats, function(priority, format) { - if(self.aurora.support[format] && media[format]) { - self.status.src = media[format]; - self.status.format[format] = true; - self.status.formatType = format; - - return false; - } - }); - - this.aurora.player = new AV.Player.fromURL(this.status.src); - this._addAuroraEventListeners(this.aurora.player, this.aurora); - - if(this.options.preload === 'auto') { - this._aurora_load(); - this.status.waitForLoad = false; - } - }, - _aurora_resetMedia: function() { - if (this.aurora.player) { - this.aurora.player.stop(); - } - }, - _aurora_clearMedia: function() { - // Nothing to clear. - }, - _aurora_load: function() { - if(this.status.waitForLoad) { - this.status.waitForLoad = false; - this.aurora.player.preload(); - } - }, - _aurora_play: function(time) { - if (!this.status.waitForLoad) { - if (!isNaN(time)) { - this.aurora.player.seek(time); - } - } - if (!this.aurora.player.playing) { - this.aurora.player.play(); - } - this.status.waitForLoad = false; - this._aurora_checkWaitForPlay(); - - // No event from the player, update UI now. - this._updateButtons(true); - this._trigger($.jPlayer.event.play); - }, - _aurora_pause: function(time) { - if (!isNaN(time)) { - this.aurora.player.seek(time * 1000); - } - this.aurora.player.pause(); - - if(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button. - this._aurora_checkWaitForPlay(); - } - - // No event from the player, update UI now. - this._updateButtons(false); - this._trigger($.jPlayer.event.pause); - }, - _aurora_playHead: function(percent) { - if(this.aurora.player.duration > 0) { - // The seek() sould be in milliseconds, but the only codec that works with seek (aac.js) uses seconds. - this.aurora.player.seek(percent * this.aurora.player.duration / 100); // Using seconds - } - - if(!this.status.waitForLoad) { - this._aurora_checkWaitForPlay(); - } - }, - _aurora_checkWaitForPlay: function() { - if(this.status.waitForPlay) { - this.status.waitForPlay = false; - } - }, - _aurora_volume: function(v) { - this.aurora.player.volume = v * 100; - }, - _aurora_mute: function(m) { - if (m) { - this.aurora.properties.lastvolume = this.aurora.player.volume; - this.aurora.player.volume = 0; - } else { - this.aurora.player.volume = this.aurora.properties.lastvolume; - } - this.aurora.properties.muted = m; - }, - _flash_setAudio: function(media) { - var self = this; - try { - // Always finds a format due to checks in setMedia() - $.each(this.formats, function(priority, format) { - if(self.flash.support[format] && media[format]) { - switch (format) { - case "m4a" : - case "fla" : - self._getMovie().fl_setAudio_m4a(media[format]); - break; - case "mp3" : - self._getMovie().fl_setAudio_mp3(media[format]); - break; - case "rtmpa": - self._getMovie().fl_setAudio_rtmp(media[format]); - break; - } - self.status.src = media[format]; - self.status.format[format] = true; - self.status.formatType = format; - return false; - } - }); - - if(this.options.preload === 'auto') { - this._flash_load(); - this.status.waitForLoad = false; - } - } catch(err) { this._flashError(err); } - }, - _flash_setVideo: function(media) { - var self = this; - try { - // Always finds a format due to checks in setMedia() - $.each(this.formats, function(priority, format) { - if(self.flash.support[format] && media[format]) { - switch (format) { - case "m4v" : - case "flv" : - self._getMovie().fl_setVideo_m4v(media[format]); - break; - case "rtmpv": - self._getMovie().fl_setVideo_rtmp(media[format]); - break; - } - self.status.src = media[format]; - self.status.format[format] = true; - self.status.formatType = format; - return false; - } - }); - - if(this.options.preload === 'auto') { - this._flash_load(); - this.status.waitForLoad = false; - } - } catch(err) { this._flashError(err); } - }, - _flash_resetMedia: function() { - this.internal.flash.jq.css({'width':'0px', 'height':'0px'}); // Must do via CSS as setting attr() to zero causes a jQuery error in IE. - this._flash_pause(NaN); - }, - _flash_clearMedia: function() { - try { - this._getMovie().fl_clearMedia(); - } catch(err) { this._flashError(err); } - }, - _flash_load: function() { - try { - this._getMovie().fl_load(); - } catch(err) { this._flashError(err); } - this.status.waitForLoad = false; - }, - _flash_play: function(time) { - try { - this._getMovie().fl_play(time); - } catch(err) { this._flashError(err); } - this.status.waitForLoad = false; - this._flash_checkWaitForPlay(); - }, - _flash_pause: function(time) { - try { - this._getMovie().fl_pause(time); - } catch(err) { this._flashError(err); } - if(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button. - this.status.waitForLoad = false; - this._flash_checkWaitForPlay(); - } - }, - _flash_playHead: function(p) { - try { - this._getMovie().fl_play_head(p); - } catch(err) { this._flashError(err); } - if(!this.status.waitForLoad) { - this._flash_checkWaitForPlay(); - } - }, - _flash_checkWaitForPlay: function() { - if(this.status.waitForPlay) { - this.status.waitForPlay = false; - if(this.css.jq.videoPlay.length) { - this.css.jq.videoPlay.hide(); - } - if(this.status.video) { - this.internal.poster.jq.hide(); - this.internal.flash.jq.css({'width': this.status.width, 'height': this.status.height}); - } - } - }, - _flash_volume: function(v) { - try { - this._getMovie().fl_volume(v); - } catch(err) { this._flashError(err); } - }, - _flash_mute: function(m) { - try { - this._getMovie().fl_mute(m); - } catch(err) { this._flashError(err); } - }, - _getMovie: function() { - return document[this.internal.flash.id]; - }, - _getFlashPluginVersion: function() { - - // _getFlashPluginVersion() code influenced by: - // - FlashReplace 1.01: http://code.google.com/p/flashreplace/ - // - SWFObject 2.2: http://code.google.com/p/swfobject/ - - var version = 0, - flash; - if(window.ActiveXObject) { - try { - flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); - if (flash) { // flash will return null when ActiveX is disabled - var v = flash.GetVariable("$version"); - if(v) { - v = v.split(" ")[1].split(","); - version = parseInt(v[0], 10) + "." + parseInt(v[1], 10); - } - } - } catch(e) {} - } - else if(navigator.plugins && navigator.mimeTypes.length > 0) { - flash = navigator.plugins["Shockwave Flash"]; - if(flash) { - version = navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/, "$1"); - } - } - return version * 1; // Converts to a number - }, - _checkForFlash: function (version) { - var flashOk = false; - if(this._getFlashPluginVersion() >= version) { - flashOk = true; - } - return flashOk; - }, - _validString: function(url) { - return (url && typeof url === "string"); // Empty strings return false - }, - _limitValue: function(value, min, max) { - return (value < min) ? min : ((value > max) ? max : value); - }, - _urlNotSetError: function(context) { - this._error( { - type: $.jPlayer.error.URL_NOT_SET, - context: context, - message: $.jPlayer.errorMsg.URL_NOT_SET, - hint: $.jPlayer.errorHint.URL_NOT_SET - }); - }, - _flashError: function(error) { - var errorType; - if(!this.internal.ready) { - errorType = "FLASH"; - } else { - errorType = "FLASH_DISABLED"; - } - this._error( { - type: $.jPlayer.error[errorType], - context: this.internal.flash.swf, - message: $.jPlayer.errorMsg[errorType] + error.message, - hint: $.jPlayer.errorHint[errorType] - }); - // Allow the audio player to recover if display:none and then shown again, or with position:fixed on Firefox. - // This really only affects audio in a media player, as an audio player could easily move the jPlayer element away from such issues. - this.internal.flash.jq.css({'width':'1px', 'height':'1px'}); - }, - _error: function(error) { - this._trigger($.jPlayer.event.error, error); - if(this.options.errorAlerts) { - this._alert("Error!" + (error.message ? "\n" + error.message : "") + (error.hint ? "\n" + error.hint : "") + "\nContext: " + error.context); - } - }, - _warning: function(warning) { - this._trigger($.jPlayer.event.warning, undefined, warning); - if(this.options.warningAlerts) { - this._alert("Warning!" + (warning.message ? "\n" + warning.message : "") + (warning.hint ? "\n" + warning.hint : "") + "\nContext: " + warning.context); - } - }, - _alert: function(message) { - var msg = "jPlayer " + this.version.script + " : id='" + this.internal.self.id +"' : " + message; - if(!this.options.consoleAlerts) { - alert(msg); - } else if(window.console && window.console.log) { - window.console.log(msg); - } - }, - _emulateHtmlBridge: function() { - var self = this; - - // Emulate methods on jPlayer's DOM element. - $.each( $.jPlayer.emulateMethods.split(/\s+/g), function(i, name) { - self.internal.domNode[name] = function(arg) { - self[name](arg); - }; - - }); - - // Bubble jPlayer events to its DOM element. - $.each($.jPlayer.event, function(eventName,eventType) { - var nativeEvent = true; - $.each( $.jPlayer.reservedEvent.split(/\s+/g), function(i, name) { - if(name === eventName) { - nativeEvent = false; - return false; - } - }); - if(nativeEvent) { - self.element.bind(eventType + ".jPlayer.jPlayerHtml", function() { // With .jPlayer & .jPlayerHtml namespaces. - self._emulateHtmlUpdate(); - var domEvent = document.createEvent("Event"); - domEvent.initEvent(eventName, false, true); - self.internal.domNode.dispatchEvent(domEvent); - }); - } - // The error event would require a special case - }); - - // IE9 has a readyState property on all elements. The document should have it, but all (except media) elements inherit it in IE9. This conflicts with Popcorn, which polls the readyState. - }, - _emulateHtmlUpdate: function() { - var self = this; - - $.each( $.jPlayer.emulateStatus.split(/\s+/g), function(i, name) { - self.internal.domNode[name] = self.status[name]; - }); - $.each( $.jPlayer.emulateOptions.split(/\s+/g), function(i, name) { - self.internal.domNode[name] = self.options[name]; - }); - }, - _destroyHtmlBridge: function() { - var self = this; - - // Bridge event handlers are also removed by destroy() through .jPlayer namespace. - this.element.unbind(".jPlayerHtml"); // Remove all event handlers created by the jPlayer bridge. So you can change the emulateHtml option. - - // Remove the methods and properties - var emulated = $.jPlayer.emulateMethods + " " + $.jPlayer.emulateStatus + " " + $.jPlayer.emulateOptions; - $.each( emulated.split(/\s+/g), function(i, name) { - delete self.internal.domNode[name]; - }); - } - }; - - $.jPlayer.error = { - FLASH: "e_flash", - FLASH_DISABLED: "e_flash_disabled", - NO_SOLUTION: "e_no_solution", - NO_SUPPORT: "e_no_support", - URL: "e_url", - URL_NOT_SET: "e_url_not_set", - VERSION: "e_version" - }; - - $.jPlayer.errorMsg = { - FLASH: "jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ", // Used in: _flashError() - FLASH_DISABLED: "jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ", // Used in: _flashError() - NO_SOLUTION: "No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.", // Used in: _init() - NO_SUPPORT: "It is not possible to play any media format provided in setMedia() on this browser using your current options.", // Used in: setMedia() - URL: "Media URL could not be loaded.", // Used in: jPlayerFlashEvent() and _addHtmlEventListeners() - URL_NOT_SET: "Attempt to issue media playback commands, while no media url is set.", // Used in: load(), play(), pause(), stop() and playHead() - VERSION: "jPlayer " + $.jPlayer.prototype.version.script + " needs Jplayer.swf version " + $.jPlayer.prototype.version.needFlash + " but found " // Used in: jPlayerReady() - }; - - $.jPlayer.errorHint = { - FLASH: "Check your swfPath option and that Jplayer.swf is there.", - FLASH_DISABLED: "Check that you have not display:none; the jPlayer entity or any ancestor.", - NO_SOLUTION: "Review the jPlayer options: support and supplied.", - NO_SUPPORT: "Video or audio formats defined in the supplied option are missing.", - URL: "Check media URL is valid.", - URL_NOT_SET: "Use setMedia() to set the media URL.", - VERSION: "Update jPlayer files." - }; - - $.jPlayer.warning = { - CSS_SELECTOR_COUNT: "e_css_selector_count", - CSS_SELECTOR_METHOD: "e_css_selector_method", - CSS_SELECTOR_STRING: "e_css_selector_string", - OPTION_KEY: "e_option_key" - }; - - $.jPlayer.warningMsg = { - CSS_SELECTOR_COUNT: "The number of css selectors found did not equal one: ", - CSS_SELECTOR_METHOD: "The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.", - CSS_SELECTOR_STRING: "The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.", - OPTION_KEY: "The option requested in jPlayer('option') is undefined." - }; - - $.jPlayer.warningHint = { - CSS_SELECTOR_COUNT: "Check your css selector and the ancestor.", - CSS_SELECTOR_METHOD: "Check your method name.", - CSS_SELECTOR_STRING: "Check your css selector is a string.", - OPTION_KEY: "Check your option name." - }; -})); diff --git a/libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.min.js b/libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.min.js deleted file mode 100644 index 99f64d7..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.min.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! jPlayer 2.9.2 for jQuery ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ -!function(a,b){"function"==typeof define&&define.amd?define(["jquery"],b):b("object"==typeof exports?require("jquery"):a.jQuery?a.jQuery:a.Zepto)}(this,function(a,b){a.fn.jPlayer=function(c){var d="jPlayer",e="string"==typeof c,f=Array.prototype.slice.call(arguments,1),g=this;return c=!e&&f.length?a.extend.apply(null,[!0,c].concat(f)):c,e&&"_"===c.charAt(0)?g:(this.each(e?function(){var e=a(this).data(d),h=e&&a.isFunction(e[c])?e[c].apply(e,f):e;return h!==e&&h!==b?(g=h,!1):void 0}:function(){var b=a(this).data(d);b?b.option(c||{}):a(this).data(d,new a.jPlayer(c,this))}),g)},a.jPlayer=function(b,c){if(arguments.length){this.element=a(c),this.options=a.extend(!0,{},this.options,b);var d=this;this.element.bind("remove.jPlayer",function(){d.destroy()}),this._init()}},"function"!=typeof a.fn.stop&&(a.fn.stop=function(){}),a.jPlayer.emulateMethods="load play pause",a.jPlayer.emulateStatus="src readyState networkState currentTime duration paused ended playbackRate",a.jPlayer.emulateOptions="muted volume",a.jPlayer.reservedEvent="ready flashreset resize repeat error warning",a.jPlayer.event={},a.each(["ready","setmedia","flashreset","resize","repeat","click","error","warning","loadstart","progress","suspend","abort","emptied","stalled","play","pause","loadedmetadata","loadeddata","waiting","playing","canplay","canplaythrough","seeking","seeked","timeupdate","ended","ratechange","durationchange","volumechange"],function(){a.jPlayer.event[this]="jPlayer_"+this}),a.jPlayer.htmlEvent=["loadstart","abort","emptied","stalled","loadedmetadata","canplay","canplaythrough"],a.jPlayer.pause=function(){a.jPlayer.prototype.destroyRemoved(),a.each(a.jPlayer.prototype.instances,function(a,b){b.data("jPlayer").status.srcSet&&b.jPlayer("pause")})},a.jPlayer.timeFormat={showHour:!1,showMin:!0,showSec:!0,padHour:!1,padMin:!0,padSec:!0,sepHour:":",sepMin:":",sepSec:""};var c=function(){this.init()};c.prototype={init:function(){this.options={timeFormat:a.jPlayer.timeFormat}},time:function(a){a=a&&"number"==typeof a?a:0;var b=new Date(1e3*a),c=b.getUTCHours(),d=this.options.timeFormat.showHour?b.getUTCMinutes():b.getUTCMinutes()+60*c,e=this.options.timeFormat.showMin?b.getUTCSeconds():b.getUTCSeconds()+60*d,f=this.options.timeFormat.padHour&&10>c?"0"+c:c,g=this.options.timeFormat.padMin&&10>d?"0"+d:d,h=this.options.timeFormat.padSec&&10>e?"0"+e:e,i="";return i+=this.options.timeFormat.showHour?f+this.options.timeFormat.sepHour:"",i+=this.options.timeFormat.showMin?g+this.options.timeFormat.sepMin:"",i+=this.options.timeFormat.showSec?h+this.options.timeFormat.sepSec:""}};var d=new c;a.jPlayer.convertTime=function(a){return d.time(a)},a.jPlayer.uaBrowser=function(a){var b=a.toLowerCase(),c=/(webkit)[ \/]([\w.]+)/,d=/(opera)(?:.*version)?[ \/]([\w.]+)/,e=/(msie) ([\w.]+)/,f=/(mozilla)(?:.*? rv:([\w.]+))?/,g=c.exec(b)||d.exec(b)||e.exec(b)||b.indexOf("compatible")<0&&f.exec(b)||[];return{browser:g[1]||"",version:g[2]||"0"}},a.jPlayer.uaPlatform=function(a){var b=a.toLowerCase(),c=/(ipad|iphone|ipod|android|blackberry|playbook|windows ce|webos)/,d=/(ipad|playbook)/,e=/(android)/,f=/(mobile)/,g=c.exec(b)||[],h=d.exec(b)||!f.exec(b)&&e.exec(b)||[];return g[1]&&(g[1]=g[1].replace(/\s/g,"_")),{platform:g[1]||"",tablet:h[1]||""}},a.jPlayer.browser={},a.jPlayer.platform={};var e=a.jPlayer.uaBrowser(navigator.userAgent);e.browser&&(a.jPlayer.browser[e.browser]=!0,a.jPlayer.browser.version=e.version);var f=a.jPlayer.uaPlatform(navigator.userAgent);f.platform&&(a.jPlayer.platform[f.platform]=!0,a.jPlayer.platform.mobile=!f.tablet,a.jPlayer.platform.tablet=!!f.tablet),a.jPlayer.getDocMode=function(){var b;return a.jPlayer.browser.msie&&(document.documentMode?b=document.documentMode:(b=5,document.compatMode&&"CSS1Compat"===document.compatMode&&(b=7))),b},a.jPlayer.browser.documentMode=a.jPlayer.getDocMode(),a.jPlayer.nativeFeatures={init:function(){var a,b,c,d=document,e=d.createElement("video"),f={w3c:["fullscreenEnabled","fullscreenElement","requestFullscreen","exitFullscreen","fullscreenchange","fullscreenerror"],moz:["mozFullScreenEnabled","mozFullScreenElement","mozRequestFullScreen","mozCancelFullScreen","mozfullscreenchange","mozfullscreenerror"],webkit:["","webkitCurrentFullScreenElement","webkitRequestFullScreen","webkitCancelFullScreen","webkitfullscreenchange",""],webkitVideo:["webkitSupportsFullscreen","webkitDisplayingFullscreen","webkitEnterFullscreen","webkitExitFullscreen","",""],ms:["","msFullscreenElement","msRequestFullscreen","msExitFullscreen","MSFullscreenChange","MSFullscreenError"]},g=["w3c","moz","webkit","webkitVideo","ms"];for(this.fullscreen=a={support:{w3c:!!d[f.w3c[0]],moz:!!d[f.moz[0]],webkit:"function"==typeof d[f.webkit[3]],webkitVideo:"function"==typeof e[f.webkitVideo[2]],ms:"function"==typeof e[f.ms[2]]},used:{}},b=0,c=g.length;c>b;b++){var h=g[b];if(a.support[h]){a.spec=h,a.used[h]=!0;break}}if(a.spec){var i=f[a.spec];a.api={fullscreenEnabled:!0,fullscreenElement:function(a){return a=a?a:d,a[i[1]]},requestFullscreen:function(a){return a[i[2]]()},exitFullscreen:function(a){return a=a?a:d,a[i[3]]()}},a.event={fullscreenchange:i[4],fullscreenerror:i[5]}}else a.api={fullscreenEnabled:!1,fullscreenElement:function(){return null},requestFullscreen:function(){},exitFullscreen:function(){}},a.event={}}},a.jPlayer.nativeFeatures.init(),a.jPlayer.focus=null,a.jPlayer.keyIgnoreElementNames="A INPUT TEXTAREA SELECT BUTTON";var g=function(b){var c,d=a.jPlayer.focus;d&&(a.each(a.jPlayer.keyIgnoreElementNames.split(/\s+/g),function(a,d){return b.target.nodeName.toUpperCase()===d.toUpperCase()?(c=!0,!1):void 0}),c||a.each(d.options.keyBindings,function(c,e){return e&&a.isFunction(e.fn)&&("number"==typeof e.key&&b.which===e.key||"string"==typeof e.key&&b.key===e.key)?(b.preventDefault(),e.fn(d),!1):void 0}))};a.jPlayer.keys=function(b){var c="keydown.jPlayer";a(document.documentElement).unbind(c),b&&a(document.documentElement).bind(c,g)},a.jPlayer.keys(!0),a.jPlayer.prototype={count:0,version:{script:"2.9.2",needFlash:"2.9.0",flash:"unknown"},options:{swfPath:"js",solution:"html, flash",supplied:"mp3",auroraFormats:"wav",preload:"metadata",volume:.8,muted:!1,remainingDuration:!1,toggleDuration:!1,captureDuration:!0,playbackRate:1,defaultPlaybackRate:1,minPlaybackRate:.5,maxPlaybackRate:4,wmode:"opaque",backgroundColor:"#000000",cssSelectorAncestor:"#jp_container_1",cssSelector:{videoPlay:".jp-video-play",play:".jp-play",pause:".jp-pause",stop:".jp-stop",seekBar:".jp-seek-bar",playBar:".jp-play-bar",mute:".jp-mute",unmute:".jp-unmute",volumeBar:".jp-volume-bar",volumeBarValue:".jp-volume-bar-value",volumeMax:".jp-volume-max",playbackRateBar:".jp-playback-rate-bar",playbackRateBarValue:".jp-playback-rate-bar-value",currentTime:".jp-current-time",duration:".jp-duration",title:".jp-title",fullScreen:".jp-full-screen",restoreScreen:".jp-restore-screen",repeat:".jp-repeat",repeatOff:".jp-repeat-off",gui:".jp-gui",noSolution:".jp-no-solution"},stateClass:{playing:"jp-state-playing",seeking:"jp-state-seeking",muted:"jp-state-muted",looped:"jp-state-looped",fullScreen:"jp-state-full-screen",noVolume:"jp-state-no-volume"},useStateClassSkin:!1,autoBlur:!0,smoothPlayBar:!1,fullScreen:!1,fullWindow:!1,autohide:{restored:!1,full:!0,fadeIn:200,fadeOut:600,hold:1e3},loop:!1,repeat:function(b){b.jPlayer.options.loop?a(this).unbind(".jPlayerRepeat").bind(a.jPlayer.event.ended+".jPlayer.jPlayerRepeat",function(){a(this).jPlayer("play")}):a(this).unbind(".jPlayerRepeat")},nativeVideoControls:{},noFullWindow:{msie:/msie [0-6]\./,ipad:/ipad.*?os [0-4]\./,iphone:/iphone/,ipod:/ipod/,android_pad:/android [0-3]\.(?!.*?mobile)/,android_phone:/(?=.*android)(?!.*chrome)(?=.*mobile)/,blackberry:/blackberry/,windows_ce:/windows ce/,iemobile:/iemobile/,webos:/webos/},noVolume:{ipad:/ipad/,iphone:/iphone/,ipod:/ipod/,android_pad:/android(?!.*?mobile)/,android_phone:/android.*?mobile/,blackberry:/blackberry/,windows_ce:/windows ce/,iemobile:/iemobile/,webos:/webos/,playbook:/playbook/},timeFormat:{},keyEnabled:!1,audioFullScreen:!1,keyBindings:{play:{key:80,fn:function(a){a.status.paused?a.play():a.pause()}},fullScreen:{key:70,fn:function(a){(a.status.video||a.options.audioFullScreen)&&a._setOption("fullScreen",!a.options.fullScreen)}},muted:{key:77,fn:function(a){a._muted(!a.options.muted)}},volumeUp:{key:190,fn:function(a){a.volume(a.options.volume+.1)}},volumeDown:{key:188,fn:function(a){a.volume(a.options.volume-.1)}},loop:{key:76,fn:function(a){a._loop(!a.options.loop)}}},verticalVolume:!1,verticalPlaybackRate:!1,globalVolume:!1,idPrefix:"jp",noConflict:"jQuery",emulateHtml:!1,consoleAlerts:!0,errorAlerts:!1,warningAlerts:!1},optionsAudio:{size:{width:"0px",height:"0px",cssClass:""},sizeFull:{width:"0px",height:"0px",cssClass:""}},optionsVideo:{size:{width:"480px",height:"270px",cssClass:"jp-video-270p"},sizeFull:{width:"100%",height:"100%",cssClass:"jp-video-full"}},instances:{},status:{src:"",media:{},paused:!0,format:{},formatType:"",waitForPlay:!0,waitForLoad:!0,srcSet:!1,video:!1,seekPercent:0,currentPercentRelative:0,currentPercentAbsolute:0,currentTime:0,duration:0,remaining:0,videoWidth:0,videoHeight:0,readyState:0,networkState:0,playbackRate:1,ended:0},internal:{ready:!1},solution:{html:!0,aurora:!0,flash:!0},format:{mp3:{codec:"audio/mpeg",flashCanPlay:!0,media:"audio"},m4a:{codec:'audio/mp4; codecs="mp4a.40.2"',flashCanPlay:!0,media:"audio"},m3u8a:{codec:'application/vnd.apple.mpegurl; codecs="mp4a.40.2"',flashCanPlay:!1,media:"audio"},m3ua:{codec:"audio/mpegurl",flashCanPlay:!1,media:"audio"},oga:{codec:'audio/ogg; codecs="vorbis, opus"',flashCanPlay:!1,media:"audio"},flac:{codec:"audio/x-flac",flashCanPlay:!1,media:"audio"},wav:{codec:'audio/wav; codecs="1"',flashCanPlay:!1,media:"audio"},webma:{codec:'audio/webm; codecs="vorbis"',flashCanPlay:!1,media:"audio"},fla:{codec:"audio/x-flv",flashCanPlay:!0,media:"audio"},rtmpa:{codec:'audio/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"audio"},m4v:{codec:'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!0,media:"video"},m3u8v:{codec:'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!1,media:"video"},m3uv:{codec:"audio/mpegurl",flashCanPlay:!1,media:"video"},ogv:{codec:'video/ogg; codecs="theora, vorbis"',flashCanPlay:!1,media:"video"},webmv:{codec:'video/webm; codecs="vorbis, vp8"',flashCanPlay:!1,media:"video"},flv:{codec:"video/x-flv",flashCanPlay:!0,media:"video"},rtmpv:{codec:'video/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"video"}},_init:function(){var c=this;if(this.element.empty(),this.status=a.extend({},this.status),this.internal=a.extend({},this.internal),this.options.timeFormat=a.extend({},a.jPlayer.timeFormat,this.options.timeFormat),this.internal.cmdsIgnored=a.jPlayer.platform.ipad||a.jPlayer.platform.iphone||a.jPlayer.platform.ipod,this.internal.domNode=this.element.get(0),this.options.keyEnabled&&!a.jPlayer.focus&&(a.jPlayer.focus=this),this.androidFix={setMedia:!1,play:!1,pause:!1,time:0/0},a.jPlayer.platform.android&&(this.options.preload="auto"!==this.options.preload?"metadata":"auto"),this.formats=[],this.solutions=[],this.require={},this.htmlElement={},this.html={},this.html.audio={},this.html.video={},this.aurora={},this.aurora.formats=[],this.aurora.properties=[],this.flash={},this.css={},this.css.cs={},this.css.jq={},this.ancestorJq=[],this.options.volume=this._limitValue(this.options.volume,0,1),a.each(this.options.supplied.toLowerCase().split(","),function(b,d){var e=d.replace(/^\s+|\s+$/g,"");if(c.format[e]){var f=!1;a.each(c.formats,function(a,b){return e===b?(f=!0,!1):void 0}),f||c.formats.push(e)}}),a.each(this.options.solution.toLowerCase().split(","),function(b,d){var e=d.replace(/^\s+|\s+$/g,"");if(c.solution[e]){var f=!1;a.each(c.solutions,function(a,b){return e===b?(f=!0,!1):void 0}),f||c.solutions.push(e)}}),a.each(this.options.auroraFormats.toLowerCase().split(","),function(b,d){var e=d.replace(/^\s+|\s+$/g,"");if(c.format[e]){var f=!1;a.each(c.aurora.formats,function(a,b){return e===b?(f=!0,!1):void 0}),f||c.aurora.formats.push(e)}}),this.internal.instance="jp_"+this.count,this.instances[this.internal.instance]=this.element,this.element.attr("id")||this.element.attr("id",this.options.idPrefix+"_jplayer_"+this.count),this.internal.self=a.extend({},{id:this.element.attr("id"),jq:this.element}),this.internal.audio=a.extend({},{id:this.options.idPrefix+"_audio_"+this.count,jq:b}),this.internal.video=a.extend({},{id:this.options.idPrefix+"_video_"+this.count,jq:b}),this.internal.flash=a.extend({},{id:this.options.idPrefix+"_flash_"+this.count,jq:b,swf:this.options.swfPath+(".swf"!==this.options.swfPath.toLowerCase().slice(-4)?(this.options.swfPath&&"/"!==this.options.swfPath.slice(-1)?"/":"")+"jquery.jplayer.swf":"")}),this.internal.poster=a.extend({},{id:this.options.idPrefix+"_poster_"+this.count,jq:b}),a.each(a.jPlayer.event,function(a,d){c.options[a]!==b&&(c.element.bind(d+".jPlayer",c.options[a]),c.options[a]=b)}),this.require.audio=!1,this.require.video=!1,a.each(this.formats,function(a,b){c.require[c.format[b].media]=!0}),this.options=this.require.video?a.extend(!0,{},this.optionsVideo,this.options):a.extend(!0,{},this.optionsAudio,this.options),this._setSize(),this.status.nativeVideoControls=this._uaBlocklist(this.options.nativeVideoControls),this.status.noFullWindow=this._uaBlocklist(this.options.noFullWindow),this.status.noVolume=this._uaBlocklist(this.options.noVolume),a.jPlayer.nativeFeatures.fullscreen.api.fullscreenEnabled&&this._fullscreenAddEventListeners(),this._restrictNativeVideoControls(),this.htmlElement.poster=document.createElement("img"),this.htmlElement.poster.id=this.internal.poster.id,this.htmlElement.poster.onload=function(){(!c.status.video||c.status.waitForPlay)&&c.internal.poster.jq.show()},this.element.append(this.htmlElement.poster),this.internal.poster.jq=a("#"+this.internal.poster.id),this.internal.poster.jq.css({width:this.status.width,height:this.status.height}),this.internal.poster.jq.hide(),this.internal.poster.jq.bind("click.jPlayer",function(){c._trigger(a.jPlayer.event.click)}),this.html.audio.available=!1,this.require.audio&&(this.htmlElement.audio=document.createElement("audio"),this.htmlElement.audio.id=this.internal.audio.id,this.html.audio.available=!!this.htmlElement.audio.canPlayType&&this._testCanPlayType(this.htmlElement.audio)),this.html.video.available=!1,this.require.video&&(this.htmlElement.video=document.createElement("video"),this.htmlElement.video.id=this.internal.video.id,this.html.video.available=!!this.htmlElement.video.canPlayType&&this._testCanPlayType(this.htmlElement.video)),this.flash.available=this._checkForFlash(10.1),this.html.canPlay={},this.aurora.canPlay={},this.flash.canPlay={},a.each(this.formats,function(b,d){c.html.canPlay[d]=c.html[c.format[d].media].available&&""!==c.htmlElement[c.format[d].media].canPlayType(c.format[d].codec),c.aurora.canPlay[d]=a.inArray(d,c.aurora.formats)>-1,c.flash.canPlay[d]=c.format[d].flashCanPlay&&c.flash.available}),this.html.desired=!1,this.aurora.desired=!1,this.flash.desired=!1,a.each(this.solutions,function(b,d){if(0===b)c[d].desired=!0;else{var e=!1,f=!1;a.each(c.formats,function(a,b){c[c.solutions[0]].canPlay[b]&&("video"===c.format[b].media?f=!0:e=!0)}),c[d].desired=c.require.audio&&!e||c.require.video&&!f}}),this.html.support={},this.aurora.support={},this.flash.support={},a.each(this.formats,function(a,b){c.html.support[b]=c.html.canPlay[b]&&c.html.desired,c.aurora.support[b]=c.aurora.canPlay[b]&&c.aurora.desired,c.flash.support[b]=c.flash.canPlay[b]&&c.flash.desired}),this.html.used=!1,this.aurora.used=!1,this.flash.used=!1,a.each(this.solutions,function(b,d){a.each(c.formats,function(a,b){return c[d].support[b]?(c[d].used=!0,!1):void 0})}),this._resetActive(),this._resetGate(),this._cssSelectorAncestor(this.options.cssSelectorAncestor),this.html.used||this.aurora.used||this.flash.used?this.css.jq.noSolution.length&&this.css.jq.noSolution.hide():(this._error({type:a.jPlayer.error.NO_SOLUTION,context:"{solution:'"+this.options.solution+"', supplied:'"+this.options.supplied+"'}",message:a.jPlayer.errorMsg.NO_SOLUTION,hint:a.jPlayer.errorHint.NO_SOLUTION}),this.css.jq.noSolution.length&&this.css.jq.noSolution.show()),this.flash.used){var d,e="jQuery="+encodeURI(this.options.noConflict)+"&id="+encodeURI(this.internal.self.id)+"&vol="+this.options.volume+"&muted="+this.options.muted;if(a.jPlayer.browser.msie&&(Number(a.jPlayer.browser.version)<9||a.jPlayer.browser.documentMode<9)){var f='',g=['','','','',''];d=document.createElement(f);for(var h=0;h0&&(d.internal.cmdsIgnored=!1),d._getHtmlStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.progress))},!1),b.addEventListener("loadeddata",function(){c.gate&&(d.androidFix.setMedia=!1,d.androidFix.play&&(d.androidFix.play=!1,d.play(d.androidFix.time)),d.androidFix.pause&&(d.androidFix.pause=!1,d.pause(d.androidFix.time)),d._trigger(a.jPlayer.event.loadeddata))},!1),b.addEventListener("timeupdate",function(){c.gate&&(d._getHtmlStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.timeupdate))},!1),b.addEventListener("durationchange",function(){c.gate&&(d._getHtmlStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.durationchange))},!1),b.addEventListener("play",function(){c.gate&&(d._updateButtons(!0),d._html_checkWaitForPlay(),d._trigger(a.jPlayer.event.play))},!1),b.addEventListener("playing",function(){c.gate&&(d._updateButtons(!0),d._seeked(),d._trigger(a.jPlayer.event.playing))},!1),b.addEventListener("pause",function(){c.gate&&(d._updateButtons(!1),d._trigger(a.jPlayer.event.pause))},!1),b.addEventListener("waiting",function(){c.gate&&(d._seeking(),d._trigger(a.jPlayer.event.waiting))},!1),b.addEventListener("seeking",function(){c.gate&&(d._seeking(),d._trigger(a.jPlayer.event.seeking))},!1),b.addEventListener("seeked",function(){c.gate&&(d._seeked(),d._trigger(a.jPlayer.event.seeked))},!1),b.addEventListener("volumechange",function(){c.gate&&(d.options.volume=b.volume,d.options.muted=b.muted,d._updateMute(),d._updateVolume(),d._trigger(a.jPlayer.event.volumechange))},!1),b.addEventListener("ratechange",function(){c.gate&&(d.options.defaultPlaybackRate=b.defaultPlaybackRate,d.options.playbackRate=b.playbackRate,d._updatePlaybackRate(),d._trigger(a.jPlayer.event.ratechange))},!1),b.addEventListener("suspend",function(){c.gate&&(d._seeked(),d._trigger(a.jPlayer.event.suspend))},!1),b.addEventListener("ended",function(){c.gate&&(a.jPlayer.browser.webkit||(d.htmlElement.media.currentTime=0),d.htmlElement.media.pause(),d._updateButtons(!1),d._getHtmlStatus(b,!0),d._updateInterface(),d._trigger(a.jPlayer.event.ended))},!1),b.addEventListener("error",function(){c.gate&&(d._updateButtons(!1),d._seeked(),d.status.srcSet&&(clearTimeout(d.internal.htmlDlyCmdId),d.status.waitForLoad=!0,d.status.waitForPlay=!0,d.status.video&&!d.status.nativeVideoControls&&d.internal.video.jq.css({width:"0px",height:"0px"}),d._validString(d.status.media.poster)&&!d.status.nativeVideoControls&&d.internal.poster.jq.show(),d.css.jq.videoPlay.length&&d.css.jq.videoPlay.show(),d._error({type:a.jPlayer.error.URL,context:d.status.src,message:a.jPlayer.errorMsg.URL,hint:a.jPlayer.errorHint.URL})))},!1),a.each(a.jPlayer.htmlEvent,function(e,f){b.addEventListener(this,function(){c.gate&&d._trigger(a.jPlayer.event[f])},!1)})},_addAuroraEventListeners:function(b,c){var d=this;b.volume=100*this.options.volume,b.on("progress",function(){c.gate&&(d.internal.cmdsIgnored&&this.readyState>0&&(d.internal.cmdsIgnored=!1),d._getAuroraStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.progress),b.duration>0&&d._trigger(a.jPlayer.event.timeupdate))},!1),b.on("ready",function(){c.gate&&d._trigger(a.jPlayer.event.loadeddata)},!1),b.on("duration",function(){c.gate&&(d._getAuroraStatus(b),d._updateInterface(),d._trigger(a.jPlayer.event.durationchange))},!1),b.on("end",function(){c.gate&&(d._updateButtons(!1),d._getAuroraStatus(b,!0),d._updateInterface(),d._trigger(a.jPlayer.event.ended))},!1),b.on("error",function(){c.gate&&(d._updateButtons(!1),d._seeked(),d.status.srcSet&&(d.status.waitForLoad=!0,d.status.waitForPlay=!0,d.status.video&&!d.status.nativeVideoControls&&d.internal.video.jq.css({width:"0px",height:"0px"}),d._validString(d.status.media.poster)&&!d.status.nativeVideoControls&&d.internal.poster.jq.show(),d.css.jq.videoPlay.length&&d.css.jq.videoPlay.show(),d._error({type:a.jPlayer.error.URL,context:d.status.src,message:a.jPlayer.errorMsg.URL,hint:a.jPlayer.errorHint.URL})))},!1)},_getHtmlStatus:function(a,b){var c=0,d=0,e=0,f=0;isFinite(a.duration)&&(this.status.duration=a.duration),c=a.currentTime,d=this.status.duration>0?100*c/this.status.duration:0,"object"==typeof a.seekable&&a.seekable.length>0?(e=this.status.duration>0?100*a.seekable.end(a.seekable.length-1)/this.status.duration:100,f=this.status.duration>0?100*a.currentTime/a.seekable.end(a.seekable.length-1):0):(e=100,f=d),b&&(c=0,f=0,d=0),this.status.seekPercent=e,this.status.currentPercentRelative=f,this.status.currentPercentAbsolute=d,this.status.currentTime=c,this.status.remaining=this.status.duration-this.status.currentTime,this.status.videoWidth=a.videoWidth,this.status.videoHeight=a.videoHeight,this.status.readyState=a.readyState,this.status.networkState=a.networkState,this.status.playbackRate=a.playbackRate,this.status.ended=a.ended},_getAuroraStatus:function(a,b){var c=0,d=0,e=0,f=0;this.status.duration=a.duration/1e3,c=a.currentTime/1e3,d=this.status.duration>0?100*c/this.status.duration:0,a.buffered>0?(e=this.status.duration>0?a.buffered*this.status.duration/this.status.duration:100,f=this.status.duration>0?c/(a.buffered*this.status.duration):0):(e=100,f=d),b&&(c=0,f=0,d=0),this.status.seekPercent=e,this.status.currentPercentRelative=f,this.status.currentPercentAbsolute=d,this.status.currentTime=c,this.status.remaining=this.status.duration-this.status.currentTime,this.status.readyState=4,this.status.networkState=0,this.status.playbackRate=1,this.status.ended=!1},_resetStatus:function(){this.status=a.extend({},this.status,a.jPlayer.prototype.status)},_trigger:function(b,c,d){var e=a.Event(b);e.jPlayer={},e.jPlayer.version=a.extend({},this.version),e.jPlayer.options=a.extend(!0,{},this.options),e.jPlayer.status=a.extend(!0,{},this.status),e.jPlayer.html=a.extend(!0,{},this.html),e.jPlayer.aurora=a.extend(!0,{},this.aurora),e.jPlayer.flash=a.extend(!0,{},this.flash),c&&(e.jPlayer.error=a.extend({},c)),d&&(e.jPlayer.warning=a.extend({},d)),this.element.trigger(e)},jPlayerFlashEvent:function(b,c){if(b===a.jPlayer.event.ready)if(this.internal.ready){if(this.flash.gate){if(this.status.srcSet){var d=this.status.currentTime,e=this.status.paused;this.setMedia(this.status.media),this.volumeWorker(this.options.volume),d>0&&(e?this.pause(d):this.play(d))}this._trigger(a.jPlayer.event.flashreset)}}else this.internal.ready=!0,this.internal.flash.jq.css({width:"0px",height:"0px"}),this.version.flash=c.version,this.version.needFlash!==this.version.flash&&this._error({type:a.jPlayer.error.VERSION,context:this.version.flash,message:a.jPlayer.errorMsg.VERSION+this.version.flash,hint:a.jPlayer.errorHint.VERSION}),this._trigger(a.jPlayer.event.repeat),this._trigger(b);if(this.flash.gate)switch(b){case a.jPlayer.event.progress:this._getFlashStatus(c),this._updateInterface(),this._trigger(b);break;case a.jPlayer.event.timeupdate:this._getFlashStatus(c),this._updateInterface(),this._trigger(b);break;case a.jPlayer.event.play:this._seeked(),this._updateButtons(!0),this._trigger(b);break;case a.jPlayer.event.pause:this._updateButtons(!1),this._trigger(b);break;case a.jPlayer.event.ended:this._updateButtons(!1),this._trigger(b);break;case a.jPlayer.event.click:this._trigger(b);break;case a.jPlayer.event.error:this.status.waitForLoad=!0,this.status.waitForPlay=!0,this.status.video&&this.internal.flash.jq.css({width:"0px",height:"0px"}),this._validString(this.status.media.poster)&&this.internal.poster.jq.show(),this.css.jq.videoPlay.length&&this.status.video&&this.css.jq.videoPlay.show(),this.status.video?this._flash_setVideo(this.status.media):this._flash_setAudio(this.status.media),this._updateButtons(!1),this._error({type:a.jPlayer.error.URL,context:c.src,message:a.jPlayer.errorMsg.URL,hint:a.jPlayer.errorHint.URL});break;case a.jPlayer.event.seeking:this._seeking(),this._trigger(b);break;case a.jPlayer.event.seeked:this._seeked(),this._trigger(b);break;case a.jPlayer.event.ready:break;default:this._trigger(b)}return!1},_getFlashStatus:function(a){this.status.seekPercent=a.seekPercent,this.status.currentPercentRelative=a.currentPercentRelative,this.status.currentPercentAbsolute=a.currentPercentAbsolute,this.status.currentTime=a.currentTime,this.status.duration=a.duration,this.status.remaining=a.duration-a.currentTime,this.status.videoWidth=a.videoWidth,this.status.videoHeight=a.videoHeight,this.status.readyState=4,this.status.networkState=0,this.status.playbackRate=1,this.status.ended=!1},_updateButtons:function(a){a===b?a=!this.status.paused:this.status.paused=!a,a?this.addStateClass("playing"):this.removeStateClass("playing"),!this.status.noFullWindow&&this.options.fullWindow?this.addStateClass("fullScreen"):this.removeStateClass("fullScreen"),this.options.loop?this.addStateClass("looped"):this.removeStateClass("looped"),this.css.jq.play.length&&this.css.jq.pause.length&&(a?(this.css.jq.play.hide(),this.css.jq.pause.show()):(this.css.jq.play.show(),this.css.jq.pause.hide())),this.css.jq.restoreScreen.length&&this.css.jq.fullScreen.length&&(this.status.noFullWindow?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.hide()):this.options.fullWindow?(this.css.jq.fullScreen.hide(),this.css.jq.restoreScreen.show()):(this.css.jq.fullScreen.show(),this.css.jq.restoreScreen.hide())),this.css.jq.repeat.length&&this.css.jq.repeatOff.length&&(this.options.loop?(this.css.jq.repeat.hide(),this.css.jq.repeatOff.show()):(this.css.jq.repeat.show(),this.css.jq.repeatOff.hide()))},_updateInterface:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.width(this.status.seekPercent+"%"),this.css.jq.playBar.length&&(this.options.smoothPlayBar?this.css.jq.playBar.stop().animate({width:this.status.currentPercentAbsolute+"%"},250,"linear"):this.css.jq.playBar.width(this.status.currentPercentRelative+"%"));var a="";this.css.jq.currentTime.length&&(a=this._convertTime(this.status.currentTime),a!==this.css.jq.currentTime.text()&&this.css.jq.currentTime.text(this._convertTime(this.status.currentTime)));var b="",c=this.status.duration,d=this.status.remaining;this.css.jq.duration.length&&("string"==typeof this.status.media.duration?b=this.status.media.duration:("number"==typeof this.status.media.duration&&(c=this.status.media.duration,d=c-this.status.currentTime),b=this.options.remainingDuration?(d>0?"-":"")+this._convertTime(d):this._convertTime(c)),b!==this.css.jq.duration.text()&&this.css.jq.duration.text(b))},_convertTime:c.prototype.time,_seeking:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.addClass("jp-seeking-bg"),this.addStateClass("seeking")},_seeked:function(){this.css.jq.seekBar.length&&this.css.jq.seekBar.removeClass("jp-seeking-bg"),this.removeStateClass("seeking")},_resetGate:function(){this.html.audio.gate=!1,this.html.video.gate=!1,this.aurora.gate=!1,this.flash.gate=!1},_resetActive:function(){this.html.active=!1,this.aurora.active=!1,this.flash.active=!1},_escapeHtml:function(a){return a.split("&").join("&").split("<").join("<").split(">").join(">").split('"').join(""")},_qualifyURL:function(a){var b=document.createElement("div"); -return b.innerHTML='x',b.firstChild.href},_absoluteMediaUrls:function(b){var c=this;return a.each(b,function(a,d){d&&c.format[a]&&"data:"!==d.substr(0,5)&&(b[a]=c._qualifyURL(d))}),b},addStateClass:function(a){this.ancestorJq.length&&this.ancestorJq.addClass(this.options.stateClass[a])},removeStateClass:function(a){this.ancestorJq.length&&this.ancestorJq.removeClass(this.options.stateClass[a])},setMedia:function(b){var c=this,d=!1,e=this.status.media.poster!==b.poster;this._resetMedia(),this._resetGate(),this._resetActive(),this.androidFix.setMedia=!1,this.androidFix.play=!1,this.androidFix.pause=!1,b=this._absoluteMediaUrls(b),a.each(this.formats,function(e,f){var g="video"===c.format[f].media;return a.each(c.solutions,function(e,h){if(c[h].support[f]&&c._validString(b[f])){var i="html"===h,j="aurora"===h;return g?(i?(c.html.video.gate=!0,c._html_setVideo(b),c.html.active=!0):(c.flash.gate=!0,c._flash_setVideo(b),c.flash.active=!0),c.css.jq.videoPlay.length&&c.css.jq.videoPlay.show(),c.status.video=!0):(i?(c.html.audio.gate=!0,c._html_setAudio(b),c.html.active=!0,a.jPlayer.platform.android&&(c.androidFix.setMedia=!0)):j?(c.aurora.gate=!0,c._aurora_setAudio(b),c.aurora.active=!0):(c.flash.gate=!0,c._flash_setAudio(b),c.flash.active=!0),c.css.jq.videoPlay.length&&c.css.jq.videoPlay.hide(),c.status.video=!1),d=!0,!1}}),d?!1:void 0}),d?(this.status.nativeVideoControls&&this.html.video.gate||this._validString(b.poster)&&(e?this.htmlElement.poster.src=b.poster:this.internal.poster.jq.show()),"string"==typeof b.title&&(this.css.jq.title.length&&this.css.jq.title.html(b.title),this.htmlElement.audio&&this.htmlElement.audio.setAttribute("title",b.title),this.htmlElement.video&&this.htmlElement.video.setAttribute("title",b.title)),this.status.srcSet=!0,this.status.media=a.extend({},b),this._updateButtons(!1),this._updateInterface(),this._trigger(a.jPlayer.event.setmedia)):this._error({type:a.jPlayer.error.NO_SUPPORT,context:"{supplied:'"+this.options.supplied+"'}",message:a.jPlayer.errorMsg.NO_SUPPORT,hint:a.jPlayer.errorHint.NO_SUPPORT})},_resetMedia:function(){this._resetStatus(),this._updateButtons(!1),this._updateInterface(),this._seeked(),this.internal.poster.jq.hide(),clearTimeout(this.internal.htmlDlyCmdId),this.html.active?this._html_resetMedia():this.aurora.active?this._aurora_resetMedia():this.flash.active&&this._flash_resetMedia()},clearMedia:function(){this._resetMedia(),this.html.active?this._html_clearMedia():this.aurora.active?this._aurora_clearMedia():this.flash.active&&this._flash_clearMedia(),this._resetGate(),this._resetActive()},load:function(){this.status.srcSet?this.html.active?this._html_load():this.aurora.active?this._aurora_load():this.flash.active&&this._flash_load():this._urlNotSetError("load")},focus:function(){this.options.keyEnabled&&(a.jPlayer.focus=this)},play:function(a){var b="object"==typeof a;b&&this.options.useStateClassSkin&&!this.status.paused?this.pause(a):(a="number"==typeof a?a:0/0,this.status.srcSet?(this.focus(),this.html.active?this._html_play(a):this.aurora.active?this._aurora_play(a):this.flash.active&&this._flash_play(a)):this._urlNotSetError("play"))},videoPlay:function(){this.play()},pause:function(a){a="number"==typeof a?a:0/0,this.status.srcSet?this.html.active?this._html_pause(a):this.aurora.active?this._aurora_pause(a):this.flash.active&&this._flash_pause(a):this._urlNotSetError("pause")},tellOthers:function(b,c){var d=this,e="function"==typeof c,f=Array.prototype.slice.call(arguments);"string"==typeof b&&(e&&f.splice(1,1),a.jPlayer.prototype.destroyRemoved(),a.each(this.instances,function(){d.element!==this&&(!e||c.call(this.data("jPlayer"),d))&&this.jPlayer.apply(this,f)}))},pauseOthers:function(a){this.tellOthers("pause",function(){return this.status.srcSet},a)},stop:function(){this.status.srcSet?this.html.active?this._html_pause(0):this.aurora.active?this._aurora_pause(0):this.flash.active&&this._flash_pause(0):this._urlNotSetError("stop")},playHead:function(a){a=this._limitValue(a,0,100),this.status.srcSet?this.html.active?this._html_playHead(a):this.aurora.active?this._aurora_playHead(a):this.flash.active&&this._flash_playHead(a):this._urlNotSetError("playHead")},_muted:function(a){this.mutedWorker(a),this.options.globalVolume&&this.tellOthers("mutedWorker",function(){return this.options.globalVolume},a)},mutedWorker:function(b){this.options.muted=b,this.html.used&&this._html_setProperty("muted",b),this.aurora.used&&this._aurora_mute(b),this.flash.used&&this._flash_mute(b),this.html.video.gate||this.html.audio.gate||(this._updateMute(b),this._updateVolume(this.options.volume),this._trigger(a.jPlayer.event.volumechange))},mute:function(a){var c="object"==typeof a;c&&this.options.useStateClassSkin&&this.options.muted?this._muted(!1):(a=a===b?!0:!!a,this._muted(a))},unmute:function(a){a=a===b?!0:!!a,this._muted(!a)},_updateMute:function(a){a===b&&(a=this.options.muted),a?this.addStateClass("muted"):this.removeStateClass("muted"),this.css.jq.mute.length&&this.css.jq.unmute.length&&(this.status.noVolume?(this.css.jq.mute.hide(),this.css.jq.unmute.hide()):a?(this.css.jq.mute.hide(),this.css.jq.unmute.show()):(this.css.jq.mute.show(),this.css.jq.unmute.hide()))},volume:function(a){this.volumeWorker(a),this.options.globalVolume&&this.tellOthers("volumeWorker",function(){return this.options.globalVolume},a)},volumeWorker:function(b){b=this._limitValue(b,0,1),this.options.volume=b,this.html.used&&this._html_setProperty("volume",b),this.aurora.used&&this._aurora_volume(b),this.flash.used&&this._flash_volume(b),this.html.video.gate||this.html.audio.gate||(this._updateVolume(b),this._trigger(a.jPlayer.event.volumechange))},volumeBar:function(b){if(this.css.jq.volumeBar.length){var c=a(b.currentTarget),d=c.offset(),e=b.pageX-d.left,f=c.width(),g=c.height()-b.pageY+d.top,h=c.height();this.volume(this.options.verticalVolume?g/h:e/f)}this.options.muted&&this._muted(!1)},_updateVolume:function(a){a===b&&(a=this.options.volume),a=this.options.muted?0:a,this.status.noVolume?(this.addStateClass("noVolume"),this.css.jq.volumeBar.length&&this.css.jq.volumeBar.hide(),this.css.jq.volumeBarValue.length&&this.css.jq.volumeBarValue.hide(),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.hide()):(this.removeStateClass("noVolume"),this.css.jq.volumeBar.length&&this.css.jq.volumeBar.show(),this.css.jq.volumeBarValue.length&&(this.css.jq.volumeBarValue.show(),this.css.jq.volumeBarValue[this.options.verticalVolume?"height":"width"](100*a+"%")),this.css.jq.volumeMax.length&&this.css.jq.volumeMax.show())},volumeMax:function(){this.volume(1),this.options.muted&&this._muted(!1)},_cssSelectorAncestor:function(b){var c=this;this.options.cssSelectorAncestor=b,this._removeUiClass(),this.ancestorJq=b?a(b):[],b&&1!==this.ancestorJq.length&&this._warning({type:a.jPlayer.warning.CSS_SELECTOR_COUNT,context:b,message:a.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.ancestorJq.length+" found for cssSelectorAncestor.",hint:a.jPlayer.warningHint.CSS_SELECTOR_COUNT}),this._addUiClass(),a.each(this.options.cssSelector,function(a,b){c._cssSelector(a,b)}),this._updateInterface(),this._updateButtons(),this._updateAutohide(),this._updateVolume(),this._updateMute()},_cssSelector:function(b,c){var d=this;if("string"==typeof c)if(a.jPlayer.prototype.options.cssSelector[b]){if(this.css.jq[b]&&this.css.jq[b].length&&this.css.jq[b].unbind(".jPlayer"),this.options.cssSelector[b]=c,this.css.cs[b]=this.options.cssSelectorAncestor+" "+c,this.css.jq[b]=c?a(this.css.cs[b]):[],this.css.jq[b].length&&this[b]){var e=function(c){c.preventDefault(),d[b](c),d.options.autoBlur?a(this).blur():a(this).focus()};this.css.jq[b].bind("click.jPlayer",e)}c&&1!==this.css.jq[b].length&&this._warning({type:a.jPlayer.warning.CSS_SELECTOR_COUNT,context:this.css.cs[b],message:a.jPlayer.warningMsg.CSS_SELECTOR_COUNT+this.css.jq[b].length+" found for "+b+" method.",hint:a.jPlayer.warningHint.CSS_SELECTOR_COUNT})}else this._warning({type:a.jPlayer.warning.CSS_SELECTOR_METHOD,context:b,message:a.jPlayer.warningMsg.CSS_SELECTOR_METHOD,hint:a.jPlayer.warningHint.CSS_SELECTOR_METHOD});else this._warning({type:a.jPlayer.warning.CSS_SELECTOR_STRING,context:c,message:a.jPlayer.warningMsg.CSS_SELECTOR_STRING,hint:a.jPlayer.warningHint.CSS_SELECTOR_STRING})},duration:function(a){this.options.toggleDuration&&(this.options.captureDuration&&a.stopPropagation(),this._setOption("remainingDuration",!this.options.remainingDuration))},seekBar:function(b){if(this.css.jq.seekBar.length){var c=a(b.currentTarget),d=c.offset(),e=b.pageX-d.left,f=c.width(),g=100*e/f;this.playHead(g)}},playbackRate:function(a){this._setOption("playbackRate",a)},playbackRateBar:function(b){if(this.css.jq.playbackRateBar.length){var c,d,e=a(b.currentTarget),f=e.offset(),g=b.pageX-f.left,h=e.width(),i=e.height()-b.pageY+f.top,j=e.height();c=this.options.verticalPlaybackRate?i/j:g/h,d=c*(this.options.maxPlaybackRate-this.options.minPlaybackRate)+this.options.minPlaybackRate,this.playbackRate(d)}},_updatePlaybackRate:function(){var a=this.options.playbackRate,b=(a-this.options.minPlaybackRate)/(this.options.maxPlaybackRate-this.options.minPlaybackRate);this.status.playbackRateEnabled?(this.css.jq.playbackRateBar.length&&this.css.jq.playbackRateBar.show(),this.css.jq.playbackRateBarValue.length&&(this.css.jq.playbackRateBarValue.show(),this.css.jq.playbackRateBarValue[this.options.verticalPlaybackRate?"height":"width"](100*b+"%"))):(this.css.jq.playbackRateBar.length&&this.css.jq.playbackRateBar.hide(),this.css.jq.playbackRateBarValue.length&&this.css.jq.playbackRateBarValue.hide())},repeat:function(a){var b="object"==typeof a;this._loop(b&&this.options.useStateClassSkin&&this.options.loop?!1:!0)},repeatOff:function(){this._loop(!1)},_loop:function(b){this.options.loop!==b&&(this.options.loop=b,this._updateButtons(),this._trigger(a.jPlayer.event.repeat))},option:function(c,d){var e=c;if(0===arguments.length)return a.extend(!0,{},this.options);if("string"==typeof c){var f=c.split(".");if(d===b){for(var g=a.extend(!0,{},this.options),h=0;h0||Math.floor(d)>0):e=!0,a.internal.mouse={x:b.pageX,y:b.pageY},e&&a.css.jq.gui.fadeIn(a.options.autohide.fadeIn,function(){clearTimeout(a.internal.autohideId),a.internal.autohideId=setTimeout(function(){a.css.jq.gui.fadeOut(a.options.autohide.fadeOut)},a.options.autohide.hold)})};this.css.jq.gui.length&&(this.css.jq.gui.stop(!0,!0),clearTimeout(this.internal.autohideId),delete this.internal.mouse,this.element.unbind(c),this.css.jq.gui.unbind(c),this.status.nativeVideoControls?this.css.jq.gui.hide():this.options.fullWindow&&this.options.autohide.full||!this.options.fullWindow&&this.options.autohide.restored?(this.element.bind(d,e),this.css.jq.gui.bind(d,e),this.css.jq.gui.hide()):this.css.jq.gui.show())},fullScreen:function(a){var b="object"==typeof a;b&&this.options.useStateClassSkin&&this.options.fullScreen?this._setOption("fullScreen",!1):this._setOption("fullScreen",!0)},restoreScreen:function(){this._setOption("fullScreen",!1)},_fullscreenAddEventListeners:function(){var b=this,c=a.jPlayer.nativeFeatures.fullscreen;c.api.fullscreenEnabled&&c.event.fullscreenchange&&("function"!=typeof this.internal.fullscreenchangeHandler&&(this.internal.fullscreenchangeHandler=function(){b._fullscreenchange()}),document.addEventListener(c.event.fullscreenchange,this.internal.fullscreenchangeHandler,!1))},_fullscreenRemoveEventListeners:function(){var b=a.jPlayer.nativeFeatures.fullscreen;this.internal.fullscreenchangeHandler&&document.removeEventListener(b.event.fullscreenchange,this.internal.fullscreenchangeHandler,!1)},_fullscreenchange:function(){this.options.fullScreen&&!a.jPlayer.nativeFeatures.fullscreen.api.fullscreenElement()&&this._setOption("fullScreen",!1)},_requestFullscreen:function(){var b=this.ancestorJq.length?this.ancestorJq[0]:this.element[0],c=a.jPlayer.nativeFeatures.fullscreen;c.used.webkitVideo&&(b=this.htmlElement.video),c.api.fullscreenEnabled&&c.api.requestFullscreen(b)},_exitFullscreen:function(){var b,c=a.jPlayer.nativeFeatures.fullscreen;c.used.webkitVideo&&(b=this.htmlElement.video),c.api.fullscreenEnabled&&c.api.exitFullscreen(b)},_html_initMedia:function(b){var c=a(this.htmlElement.media).empty();a.each(b.track||[],function(a,b){var d=document.createElement("track");d.setAttribute("kind",b.kind?b.kind:""),d.setAttribute("src",b.src?b.src:""),d.setAttribute("srclang",b.srclang?b.srclang:""),d.setAttribute("label",b.label?b.label:""),b.def&&d.setAttribute("default",b.def),c.append(d)}),this.htmlElement.media.src=this.status.src,"none"!==this.options.preload&&this._html_load(),this._trigger(a.jPlayer.event.timeupdate)},_html_setFormat:function(b){var c=this;a.each(this.formats,function(a,d){return c.html.support[d]&&b[d]?(c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1):void 0})},_html_setAudio:function(a){this._html_setFormat(a),this.htmlElement.media=this.htmlElement.audio,this._html_initMedia(a)},_html_setVideo:function(a){this._html_setFormat(a),this.status.nativeVideoControls&&(this.htmlElement.video.poster=this._validString(a.poster)?a.poster:""),this.htmlElement.media=this.htmlElement.video,this._html_initMedia(a)},_html_resetMedia:function(){this.htmlElement.media&&(this.htmlElement.media.id!==this.internal.video.id||this.status.nativeVideoControls||this.internal.video.jq.css({width:"0px",height:"0px"}),this.htmlElement.media.pause())},_html_clearMedia:function(){this.htmlElement.media&&(this.htmlElement.media.src="about:blank",this.htmlElement.media.load())},_html_load:function(){this.status.waitForLoad&&(this.status.waitForLoad=!1,this.htmlElement.media.load()),clearTimeout(this.internal.htmlDlyCmdId)},_html_play:function(a){var b=this,c=this.htmlElement.media;if(this.androidFix.pause=!1,this._html_load(),this.androidFix.setMedia)this.androidFix.play=!0,this.androidFix.time=a;else if(isNaN(a))c.play();else{this.internal.cmdsIgnored&&c.play();try{if(c.seekable&&!("object"==typeof c.seekable&&c.seekable.length>0))throw 1;c.currentTime=a,c.play()}catch(d){return void(this.internal.htmlDlyCmdId=setTimeout(function(){b.play(a)},250))}}this._html_checkWaitForPlay()},_html_pause:function(a){var b=this,c=this.htmlElement.media;if(this.androidFix.play=!1,a>0?this._html_load():clearTimeout(this.internal.htmlDlyCmdId),c.pause(),this.androidFix.setMedia)this.androidFix.pause=!0,this.androidFix.time=a;else if(!isNaN(a))try{if(c.seekable&&!("object"==typeof c.seekable&&c.seekable.length>0))throw 1;c.currentTime=a}catch(d){return void(this.internal.htmlDlyCmdId=setTimeout(function(){b.pause(a)},250))}a>0&&this._html_checkWaitForPlay()},_html_playHead:function(a){var b=this,c=this.htmlElement.media;this._html_load();try{if("object"==typeof c.seekable&&c.seekable.length>0)c.currentTime=a*c.seekable.end(c.seekable.length-1)/100;else{if(!(c.duration>0)||isNaN(c.duration))throw"e";c.currentTime=a*c.duration/100}}catch(d){return void(this.internal.htmlDlyCmdId=setTimeout(function(){b.playHead(a)},250))}this.status.waitForLoad||this._html_checkWaitForPlay()},_html_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide(),this.status.video&&(this.internal.poster.jq.hide(),this.internal.video.jq.css({width:this.status.width,height:this.status.height})))},_html_setProperty:function(a,b){this.html.audio.available&&(this.htmlElement.audio[a]=b),this.html.video.available&&(this.htmlElement.video[a]=b)},_aurora_setAudio:function(b){var c=this;a.each(this.formats,function(a,d){return c.aurora.support[d]&&b[d]?(c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1):void 0}),this.aurora.player=new AV.Player.fromURL(this.status.src),this._addAuroraEventListeners(this.aurora.player,this.aurora),"auto"===this.options.preload&&(this._aurora_load(),this.status.waitForLoad=!1)},_aurora_resetMedia:function(){this.aurora.player&&this.aurora.player.stop()},_aurora_clearMedia:function(){},_aurora_load:function(){this.status.waitForLoad&&(this.status.waitForLoad=!1,this.aurora.player.preload())},_aurora_play:function(b){this.status.waitForLoad||isNaN(b)||this.aurora.player.seek(b),this.aurora.player.playing||this.aurora.player.play(),this.status.waitForLoad=!1,this._aurora_checkWaitForPlay(),this._updateButtons(!0),this._trigger(a.jPlayer.event.play)},_aurora_pause:function(b){isNaN(b)||this.aurora.player.seek(1e3*b),this.aurora.player.pause(),b>0&&this._aurora_checkWaitForPlay(),this._updateButtons(!1),this._trigger(a.jPlayer.event.pause)},_aurora_playHead:function(a){this.aurora.player.duration>0&&this.aurora.player.seek(a*this.aurora.player.duration/100),this.status.waitForLoad||this._aurora_checkWaitForPlay()},_aurora_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1)},_aurora_volume:function(a){this.aurora.player.volume=100*a},_aurora_mute:function(a){a?(this.aurora.properties.lastvolume=this.aurora.player.volume,this.aurora.player.volume=0):this.aurora.player.volume=this.aurora.properties.lastvolume,this.aurora.properties.muted=a},_flash_setAudio:function(b){var c=this;try{a.each(this.formats,function(a,d){if(c.flash.support[d]&&b[d]){switch(d){case"m4a":case"fla":c._getMovie().fl_setAudio_m4a(b[d]);break;case"mp3":c._getMovie().fl_setAudio_mp3(b[d]);break;case"rtmpa":c._getMovie().fl_setAudio_rtmp(b[d])}return c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1}}),"auto"===this.options.preload&&(this._flash_load(),this.status.waitForLoad=!1)}catch(d){this._flashError(d)}},_flash_setVideo:function(b){var c=this;try{a.each(this.formats,function(a,d){if(c.flash.support[d]&&b[d]){switch(d){case"m4v":case"flv":c._getMovie().fl_setVideo_m4v(b[d]);break;case"rtmpv":c._getMovie().fl_setVideo_rtmp(b[d])}return c.status.src=b[d],c.status.format[d]=!0,c.status.formatType=d,!1}}),"auto"===this.options.preload&&(this._flash_load(),this.status.waitForLoad=!1)}catch(d){this._flashError(d)}},_flash_resetMedia:function(){this.internal.flash.jq.css({width:"0px",height:"0px"}),this._flash_pause(0/0)},_flash_clearMedia:function(){try{this._getMovie().fl_clearMedia()}catch(a){this._flashError(a)}},_flash_load:function(){try{this._getMovie().fl_load()}catch(a){this._flashError(a)}this.status.waitForLoad=!1},_flash_play:function(a){try{this._getMovie().fl_play(a)}catch(b){this._flashError(b)}this.status.waitForLoad=!1,this._flash_checkWaitForPlay()},_flash_pause:function(a){try{this._getMovie().fl_pause(a)}catch(b){this._flashError(b)}a>0&&(this.status.waitForLoad=!1,this._flash_checkWaitForPlay())},_flash_playHead:function(a){try{this._getMovie().fl_play_head(a)}catch(b){this._flashError(b)}this.status.waitForLoad||this._flash_checkWaitForPlay()},_flash_checkWaitForPlay:function(){this.status.waitForPlay&&(this.status.waitForPlay=!1,this.css.jq.videoPlay.length&&this.css.jq.videoPlay.hide(),this.status.video&&(this.internal.poster.jq.hide(),this.internal.flash.jq.css({width:this.status.width,height:this.status.height})))},_flash_volume:function(a){try{this._getMovie().fl_volume(a)}catch(b){this._flashError(b)}},_flash_mute:function(a){try{this._getMovie().fl_mute(a)}catch(b){this._flashError(b)}},_getMovie:function(){return document[this.internal.flash.id]},_getFlashPluginVersion:function(){var a,b=0;if(window.ActiveXObject)try{if(a=new ActiveXObject("ShockwaveFlash.ShockwaveFlash")){var c=a.GetVariable("$version");c&&(c=c.split(" ")[1].split(","),b=parseInt(c[0],10)+"."+parseInt(c[1],10))}}catch(d){}else navigator.plugins&&navigator.mimeTypes.length>0&&(a=navigator.plugins["Shockwave Flash"],a&&(b=navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/,"$1")));return 1*b},_checkForFlash:function(a){var b=!1;return this._getFlashPluginVersion()>=a&&(b=!0),b},_validString:function(a){return a&&"string"==typeof a},_limitValue:function(a,b,c){return b>a?b:a>c?c:a},_urlNotSetError:function(b){this._error({type:a.jPlayer.error.URL_NOT_SET,context:b,message:a.jPlayer.errorMsg.URL_NOT_SET,hint:a.jPlayer.errorHint.URL_NOT_SET})},_flashError:function(b){var c;c=this.internal.ready?"FLASH_DISABLED":"FLASH",this._error({type:a.jPlayer.error[c],context:this.internal.flash.swf,message:a.jPlayer.errorMsg[c]+b.message,hint:a.jPlayer.errorHint[c]}),this.internal.flash.jq.css({width:"1px",height:"1px"})},_error:function(b){this._trigger(a.jPlayer.event.error,b),this.options.errorAlerts&&this._alert("Error!"+(b.message?"\n"+b.message:"")+(b.hint?"\n"+b.hint:"")+"\nContext: "+b.context)},_warning:function(c){this._trigger(a.jPlayer.event.warning,b,c),this.options.warningAlerts&&this._alert("Warning!"+(c.message?"\n"+c.message:"")+(c.hint?"\n"+c.hint:"")+"\nContext: "+c.context)},_alert:function(a){var b="jPlayer "+this.version.script+" : id='"+this.internal.self.id+"' : "+a;this.options.consoleAlerts?window.console&&window.console.log&&window.console.log(b):alert(b)},_emulateHtmlBridge:function(){var b=this;a.each(a.jPlayer.emulateMethods.split(/\s+/g),function(a,c){b.internal.domNode[c]=function(a){b[c](a)}}),a.each(a.jPlayer.event,function(c,d){var e=!0;a.each(a.jPlayer.reservedEvent.split(/\s+/g),function(a,b){return b===c?(e=!1,!1):void 0}),e&&b.element.bind(d+".jPlayer.jPlayerHtml",function(){b._emulateHtmlUpdate();var a=document.createEvent("Event");a.initEvent(c,!1,!0),b.internal.domNode.dispatchEvent(a)})})},_emulateHtmlUpdate:function(){var b=this;a.each(a.jPlayer.emulateStatus.split(/\s+/g),function(a,c){b.internal.domNode[c]=b.status[c]}),a.each(a.jPlayer.emulateOptions.split(/\s+/g),function(a,c){b.internal.domNode[c]=b.options[c]})},_destroyHtmlBridge:function(){var b=this;this.element.unbind(".jPlayerHtml");var c=a.jPlayer.emulateMethods+" "+a.jPlayer.emulateStatus+" "+a.jPlayer.emulateOptions;a.each(c.split(/\s+/g),function(a,c){delete b.internal.domNode[c]})}},a.jPlayer.error={FLASH:"e_flash",FLASH_DISABLED:"e_flash_disabled",NO_SOLUTION:"e_no_solution",NO_SUPPORT:"e_no_support",URL:"e_url",URL_NOT_SET:"e_url_not_set",VERSION:"e_version"},a.jPlayer.errorMsg={FLASH:"jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ",FLASH_DISABLED:"jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ",NO_SOLUTION:"No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.",NO_SUPPORT:"It is not possible to play any media format provided in setMedia() on this browser using your current options.",URL:"Media URL could not be loaded.",URL_NOT_SET:"Attempt to issue media playback commands, while no media url is set.",VERSION:"jPlayer "+a.jPlayer.prototype.version.script+" needs Jplayer.swf version "+a.jPlayer.prototype.version.needFlash+" but found "},a.jPlayer.errorHint={FLASH:"Check your swfPath option and that Jplayer.swf is there.",FLASH_DISABLED:"Check that you have not display:none; the jPlayer entity or any ancestor.",NO_SOLUTION:"Review the jPlayer options: support and supplied.",NO_SUPPORT:"Video or audio formats defined in the supplied option are missing.",URL:"Check media URL is valid.",URL_NOT_SET:"Use setMedia() to set the media URL.",VERSION:"Update jPlayer files."},a.jPlayer.warning={CSS_SELECTOR_COUNT:"e_css_selector_count",CSS_SELECTOR_METHOD:"e_css_selector_method",CSS_SELECTOR_STRING:"e_css_selector_string",OPTION_KEY:"e_option_key"},a.jPlayer.warningMsg={CSS_SELECTOR_COUNT:"The number of css selectors found did not equal one: ",CSS_SELECTOR_METHOD:"The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.",CSS_SELECTOR_STRING:"The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.",OPTION_KEY:"The option requested in jPlayer('option') is undefined."},a.jPlayer.warningHint={CSS_SELECTOR_COUNT:"Check your css selector and the ancestor.",CSS_SELECTOR_METHOD:"Check your method name.",CSS_SELECTOR_STRING:"Check your css selector is a string.",OPTION_KEY:"Check your option name."}}); \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.swf b/libraries/filemanager-9.12.1/js/jPlayer/jplayer/jquery.jplayer.swf deleted file mode 100644 index 340f7f98d0d363bafa787e2bcc7422e15fb7f41c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13714 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 Kh=yOW5&svT>H|gq diff --git a/libraries/filemanager-9.12.1/js/jPlayer/jquery.jplayer/Jplayer.swf b/libraries/filemanager-9.12.1/js/jPlayer/jquery.jplayer/Jplayer.swf deleted file mode 100644 index 85c0ba38eede8cabc9b85603c2239082a548f549..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14085 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'; - - var paramStr = [ - '', - '', - '', - '', - '' - ]; - - htmlObj = document.createElement(objStr); - for(var i=0; i < paramStr.length; i++) { - htmlObj.appendChild(document.createElement(paramStr[i])); - } - } else { - var createParam = function(el, n, v) { - var p = document.createElement("param"); - p.setAttribute("name", n); - p.setAttribute("value", v); - el.appendChild(p); - }; - - htmlObj = document.createElement("object"); - htmlObj.setAttribute("id", this.internal.flash.id); - htmlObj.setAttribute("name", this.internal.flash.id); - htmlObj.setAttribute("data", this.internal.flash.swf); - htmlObj.setAttribute("type", "application/x-shockwave-flash"); - htmlObj.setAttribute("width", "1"); // Non-zero - htmlObj.setAttribute("height", "1"); // Non-zero - htmlObj.setAttribute("tabindex", "-1"); - createParam(htmlObj, "flashvars", flashVars); - createParam(htmlObj, "allowscriptaccess", "always"); - createParam(htmlObj, "bgcolor", this.options.backgroundColor); - createParam(htmlObj, "wmode", this.options.wmode); - } - - this.element.append(htmlObj); - this.internal.flash.jq = $(htmlObj); - } - - // Add the HTML solution if being used. - if(this.html.used) { - - // The HTML Audio handlers - if(this.html.audio.available) { - this._addHtmlEventListeners(this.htmlElement.audio, this.html.audio); - this.element.append(this.htmlElement.audio); - this.internal.audio.jq = $("#" + this.internal.audio.id); - } - - // The HTML Video handlers - if(this.html.video.available) { - this._addHtmlEventListeners(this.htmlElement.video, this.html.video); - this.element.append(this.htmlElement.video); - this.internal.video.jq = $("#" + this.internal.video.id); - if(this.status.nativeVideoControls) { - this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); - } else { - this.internal.video.jq.css({'width':'0px', 'height':'0px'}); // Using size 0x0 since a .hide() causes issues in iOS - } - this.internal.video.jq.bind("click.jPlayer", function() { - self._trigger($.jPlayer.event.click); - }); - } - } - - // Create the bridge that emulates the HTML Media element on the jPlayer DIV - if( this.options.emulateHtml ) { - this._emulateHtmlBridge(); - } - - if(this.html.used && !this.flash.used) { // If only HTML, then emulate flash ready() call after 100ms. - setTimeout( function() { - self.internal.ready = true; - self.version.flash = "n/a"; - self._trigger($.jPlayer.event.repeat); // Trigger the repeat event so its handler can initialize itself with the loop option. - self._trigger($.jPlayer.event.ready); - }, 100); - } - - // Initialize the interface components with the options. - this._updateNativeVideoControls(); - // The other controls are now setup in _cssSelectorAncestor() - if(this.css.jq.videoPlay.length) { - this.css.jq.videoPlay.hide(); - } - - $.jPlayer.prototype.count++; // Change static variable via prototype. - }, - destroy: function() { - // MJP: The background change remains. Would need to store the original to restore it correctly. - // MJP: The jPlayer element's size change remains. - - // Clear the media to reset the GUI and stop any downloads. Streams on some browsers had persited. (Chrome) - this.clearMedia(); - // Remove the size/sizeFull cssClass from the cssSelectorAncestor - this._removeUiClass(); - // Remove the times from the GUI - if(this.css.jq.currentTime.length) { - this.css.jq.currentTime.text(""); - } - if(this.css.jq.duration.length) { - this.css.jq.duration.text(""); - } - // Remove any bindings from the interface controls. - $.each(this.css.jq, function(fn, jq) { - // Check selector is valid before trying to execute method. - if(jq.length) { - jq.unbind(".jPlayer"); - } - }); - // Remove the click handlers for $.jPlayer.event.click - this.internal.poster.jq.unbind(".jPlayer"); - if(this.internal.video.jq) { - this.internal.video.jq.unbind(".jPlayer"); - } - // Remove the fullscreen event handlers - this._fullscreenRemoveEventListeners(); - // Remove key bindings - if(this === $.jPlayer.focus) { - $.jPlayer.focus = null; - } - // Destroy the HTML bridge. - if(this.options.emulateHtml) { - this._destroyHtmlBridge(); - } - this.element.removeData("jPlayer"); // Remove jPlayer data - this.element.unbind(".jPlayer"); // Remove all event handlers created by the jPlayer constructor - this.element.empty(); // Remove the inserted child elements - - delete this.instances[this.internal.instance]; // Clear the instance on the static instance object - }, - enable: function() { // Plan to implement - // options.disabled = false - }, - disable: function () { // Plan to implement - // options.disabled = true - }, - _testCanPlayType: function(elem) { - // IE9 on Win Server 2008 did not implement canPlayType(), but it has the property. - try { - elem.canPlayType(this.format.mp3.codec); // The type is irrelevant. - return true; - } catch(err) { - return false; - } - }, - _uaBlocklist: function(list) { - // list : object with properties that are all regular expressions. Property names are irrelevant. - // Returns true if the user agent is matched in list. - var ua = navigator.userAgent.toLowerCase(), - block = false; - - $.each(list, function(p, re) { - if(re && re.test(ua)) { - block = true; - return false; // exit $.each. - } - }); - return block; - }, - _restrictNativeVideoControls: function() { - // Fallback to noFullWindow when nativeVideoControls is true and audio media is being used. Affects when both media types are used. - if(this.require.audio) { - if(this.status.nativeVideoControls) { - this.status.nativeVideoControls = false; - this.status.noFullWindow = true; - } - } - }, - _updateNativeVideoControls: function() { - if(this.html.video.available && this.html.used) { - // Turn the HTML Video controls on/off - this.htmlElement.video.controls = this.status.nativeVideoControls; - // Show/hide the jPlayer GUI. - this._updateAutohide(); - // For when option changed. The poster image is not updated, as it is dealt with in setMedia(). Acceptable degradation since seriously doubt these options will change on the fly. Can again review later. - if(this.status.nativeVideoControls && this.require.video) { - this.internal.poster.jq.hide(); - this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); - } else if(this.status.waitForPlay && this.status.video) { - this.internal.poster.jq.show(); - this.internal.video.jq.css({'width': '0px', 'height': '0px'}); - } - } - }, - _addHtmlEventListeners: function(mediaElement, entity) { - var self = this; - mediaElement.preload = this.options.preload; - mediaElement.muted = this.options.muted; - mediaElement.volume = this.options.volume; - - // Create the event listeners - // Only want the active entity to affect jPlayer and bubble events. - // Using entity.gate so that object is referenced and gate property always current - - mediaElement.addEventListener("progress", function() { - if(entity.gate) { - if(self.internal.cmdsIgnored && this.readyState > 0) { // Detect iOS executed the command - self.internal.cmdsIgnored = false; - } - self._getHtmlStatus(mediaElement); - self._updateInterface(); - self._trigger($.jPlayer.event.progress); - } - }, false); - mediaElement.addEventListener("timeupdate", function() { - if(entity.gate) { - self._getHtmlStatus(mediaElement); - self._updateInterface(); - self._trigger($.jPlayer.event.timeupdate); - } - }, false); - mediaElement.addEventListener("durationchange", function() { - if(entity.gate) { - self._getHtmlStatus(mediaElement); - self._updateInterface(); - self._trigger($.jPlayer.event.durationchange); - } - }, false); - mediaElement.addEventListener("play", function() { - if(entity.gate) { - self._updateButtons(true); - self._html_checkWaitForPlay(); // So the native controls update this variable and puts the hidden interface in the correct state. Affects toggling native controls. - self._trigger($.jPlayer.event.play); - } - }, false); - mediaElement.addEventListener("playing", function() { - if(entity.gate) { - self._updateButtons(true); - self._seeked(); - self._trigger($.jPlayer.event.playing); - } - }, false); - mediaElement.addEventListener("pause", function() { - if(entity.gate) { - self._updateButtons(false); - self._trigger($.jPlayer.event.pause); - } - }, false); - mediaElement.addEventListener("waiting", function() { - if(entity.gate) { - self._seeking(); - self._trigger($.jPlayer.event.waiting); - } - }, false); - mediaElement.addEventListener("seeking", function() { - if(entity.gate) { - self._seeking(); - self._trigger($.jPlayer.event.seeking); - } - }, false); - mediaElement.addEventListener("seeked", function() { - if(entity.gate) { - self._seeked(); - self._trigger($.jPlayer.event.seeked); - } - }, false); - mediaElement.addEventListener("volumechange", function() { - if(entity.gate) { - // Read the values back from the element as the Blackberry PlayBook shares the volume with the physical buttons master volume control. - // However, when tested 6th July 2011, those buttons do not generate an event. The physical play/pause button does though. - self.options.volume = mediaElement.volume; - self.options.muted = mediaElement.muted; - self._updateMute(); - self._updateVolume(); - self._trigger($.jPlayer.event.volumechange); - } - }, false); - mediaElement.addEventListener("suspend", function() { // Seems to be the only way of capturing that the iOS4 browser did not actually play the media from the page code. ie., It needs a user gesture. - if(entity.gate) { - self._seeked(); - self._trigger($.jPlayer.event.suspend); - } - }, false); - mediaElement.addEventListener("ended", function() { - if(entity.gate) { - // Order of the next few commands are important. Change the time and then pause. - // Solves a bug in Firefox, where issuing pause 1st causes the media to play from the start. ie., The pause is ignored. - if(!$.jPlayer.browser.webkit) { // Chrome crashes if you do this in conjunction with a setMedia command in an ended event handler. ie., The playlist demo. - self.htmlElement.media.currentTime = 0; // Safari does not care about this command. ie., It works with or without this line. (Both Safari and Chrome are Webkit.) - } - self.htmlElement.media.pause(); // Pause otherwise a click on the progress bar will play from that point, when it shouldn't, since it stopped playback. - self._updateButtons(false); - self._getHtmlStatus(mediaElement, true); // With override true. Otherwise Chrome leaves progress at full. - self._updateInterface(); - self._trigger($.jPlayer.event.ended); - } - }, false); - mediaElement.addEventListener("error", function() { - if(entity.gate) { - self._updateButtons(false); - self._seeked(); - if(self.status.srcSet) { // Deals with case of clearMedia() causing an error event. - clearTimeout(self.internal.htmlDlyCmdId); // Clears any delayed commands used in the HTML solution. - self.status.waitForLoad = true; // Allows the load operation to try again. - self.status.waitForPlay = true; // Reset since a play was captured. - if(self.status.video && !self.status.nativeVideoControls) { - self.internal.video.jq.css({'width':'0px', 'height':'0px'}); - } - if(self._validString(self.status.media.poster) && !self.status.nativeVideoControls) { - self.internal.poster.jq.show(); - } - if(self.css.jq.videoPlay.length) { - self.css.jq.videoPlay.show(); - } - self._error( { - type: $.jPlayer.error.URL, - context: self.status.src, // this.src shows absolute urls. Want context to show the url given. - message: $.jPlayer.errorMsg.URL, - hint: $.jPlayer.errorHint.URL - }); - } - } - }, false); - // Create all the other event listeners that bubble up to a jPlayer event from html, without being used by jPlayer. - $.each($.jPlayer.htmlEvent, function(i, eventType) { - mediaElement.addEventListener(this, function() { - if(entity.gate) { - self._trigger($.jPlayer.event[eventType]); - } - }, false); - }); - }, - _getHtmlStatus: function(media, override) { - var ct = 0, cpa = 0, sp = 0, cpr = 0; - - // Fixes the duration bug in iOS, where the durationchange event occurs when media.duration is not always correct. - // Fixes the initial duration bug in BB OS7, where the media.duration is infinity and displays as NaN:NaN due to Date() using inifity. - if(isFinite(media.duration)) { - this.status.duration = media.duration; - } - - ct = media.currentTime; - cpa = (this.status.duration > 0) ? 100 * ct / this.status.duration : 0; - if((typeof media.seekable === "object") && (media.seekable.length > 0)) { - sp = (this.status.duration > 0) ? 100 * media.seekable.end(media.seekable.length-1) / this.status.duration : 100; - cpr = (this.status.duration > 0) ? 100 * media.currentTime / media.seekable.end(media.seekable.length-1) : 0; // Duration conditional for iOS duration bug. ie., seekable.end is a NaN in that case. - } else { - sp = 100; - cpr = cpa; - } - - if(override) { - ct = 0; - cpr = 0; - cpa = 0; - } - - this.status.seekPercent = sp; - this.status.currentPercentRelative = cpr; - this.status.currentPercentAbsolute = cpa; - this.status.currentTime = ct; - - this.status.videoWidth = media.videoWidth; - this.status.videoHeight = media.videoHeight; - - this.status.readyState = media.readyState; - this.status.networkState = media.networkState; - this.status.playbackRate = media.playbackRate; - this.status.ended = media.ended; - }, - _resetStatus: function() { - this.status = $.extend({}, this.status, $.jPlayer.prototype.status); // Maintains the status properties that persist through a reset. - }, - _trigger: function(eventType, error, warning) { // eventType always valid as called using $.jPlayer.event.eventType - var event = $.Event(eventType); - event.jPlayer = {}; - event.jPlayer.version = $.extend({}, this.version); - event.jPlayer.options = $.extend(true, {}, this.options); // Deep copy - event.jPlayer.status = $.extend(true, {}, this.status); // Deep copy - event.jPlayer.html = $.extend(true, {}, this.html); // Deep copy - event.jPlayer.flash = $.extend(true, {}, this.flash); // Deep copy - if(error) { - event.jPlayer.error = $.extend({}, error); - } - if(warning) { - event.jPlayer.warning = $.extend({}, warning); - } - this.element.trigger(event); - }, - jPlayerFlashEvent: function(eventType, status) { // Called from Flash - if(eventType === $.jPlayer.event.ready) { - if(!this.internal.ready) { - this.internal.ready = true; - this.internal.flash.jq.css({'width':'0px', 'height':'0px'}); // Once Flash generates the ready event, minimise to zero as it is not affected by wmode anymore. - - this.version.flash = status.version; - if(this.version.needFlash !== this.version.flash) { - this._error( { - type: $.jPlayer.error.VERSION, - context: this.version.flash, - message: $.jPlayer.errorMsg.VERSION + this.version.flash, - hint: $.jPlayer.errorHint.VERSION - }); - } - this._trigger($.jPlayer.event.repeat); // Trigger the repeat event so its handler can initialize itself with the loop option. - this._trigger(eventType); - } else { - // This condition occurs if the Flash is hidden and then shown again. - // Firefox also reloads the Flash if the CSS position changes. position:fixed is used for full screen. - - // Only do this if the Flash is the solution being used at the moment. Affects Media players where both solution may be being used. - if(this.flash.gate) { - - // Send the current status to the Flash now that it is ready (available) again. - if(this.status.srcSet) { - - // Need to read original status before issuing the setMedia command. - var currentTime = this.status.currentTime, - paused = this.status.paused; - - this.setMedia(this.status.media); - if(currentTime > 0) { - if(paused) { - this.pause(currentTime); - } else { - this.play(currentTime); - } - } - } - this._trigger($.jPlayer.event.flashreset); - } - } - } - if(this.flash.gate) { - switch(eventType) { - case $.jPlayer.event.progress: - this._getFlashStatus(status); - this._updateInterface(); - this._trigger(eventType); - break; - case $.jPlayer.event.timeupdate: - this._getFlashStatus(status); - this._updateInterface(); - this._trigger(eventType); - break; - case $.jPlayer.event.play: - this._seeked(); - this._updateButtons(true); - this._trigger(eventType); - break; - case $.jPlayer.event.pause: - this._updateButtons(false); - this._trigger(eventType); - break; - case $.jPlayer.event.ended: - this._updateButtons(false); - this._trigger(eventType); - break; - case $.jPlayer.event.click: - this._trigger(eventType); // This could be dealt with by the default - break; - case $.jPlayer.event.error: - this.status.waitForLoad = true; // Allows the load operation to try again. - this.status.waitForPlay = true; // Reset since a play was captured. - if(this.status.video) { - this.internal.flash.jq.css({'width':'0px', 'height':'0px'}); - } - if(this._validString(this.status.media.poster)) { - this.internal.poster.jq.show(); - } - if(this.css.jq.videoPlay.length && this.status.video) { - this.css.jq.videoPlay.show(); - } - if(this.status.video) { // Set up for another try. Execute before error event. - this._flash_setVideo(this.status.media); - } else { - this._flash_setAudio(this.status.media); - } - this._updateButtons(false); - this._error( { - type: $.jPlayer.error.URL, - context:status.src, - message: $.jPlayer.errorMsg.URL, - hint: $.jPlayer.errorHint.URL - }); - break; - case $.jPlayer.event.seeking: - this._seeking(); - this._trigger(eventType); - break; - case $.jPlayer.event.seeked: - this._seeked(); - this._trigger(eventType); - break; - case $.jPlayer.event.ready: - // The ready event is handled outside the switch statement. - // Captured here otherwise 2 ready events would be generated if the ready event handler used setMedia. - break; - default: - this._trigger(eventType); - } - } - return false; - }, - _getFlashStatus: function(status) { - this.status.seekPercent = status.seekPercent; - this.status.currentPercentRelative = status.currentPercentRelative; - this.status.currentPercentAbsolute = status.currentPercentAbsolute; - this.status.currentTime = status.currentTime; - this.status.duration = status.duration; - - this.status.videoWidth = status.videoWidth; - this.status.videoHeight = status.videoHeight; - - // The Flash does not generate this information in this release - this.status.readyState = 4; // status.readyState; - this.status.networkState = 0; // status.networkState; - this.status.playbackRate = 1; // status.playbackRate; - this.status.ended = false; // status.ended; - }, - _updateButtons: function(playing) { - if(playing === undefined) { - playing = !this.status.paused; - } else { - this.status.paused = !playing; - } - if(this.css.jq.play.length && this.css.jq.pause.length) { - if(playing) { - this.css.jq.play.hide(); - this.css.jq.pause.show(); - } else { - this.css.jq.play.show(); - this.css.jq.pause.hide(); - } - } - if(this.css.jq.restoreScreen.length && this.css.jq.fullScreen.length) { - if(this.status.noFullWindow) { - this.css.jq.fullScreen.hide(); - this.css.jq.restoreScreen.hide(); - } else if(this.options.fullWindow) { - this.css.jq.fullScreen.hide(); - this.css.jq.restoreScreen.show(); - } else { - this.css.jq.fullScreen.show(); - this.css.jq.restoreScreen.hide(); - } - } - if(this.css.jq.repeat.length && this.css.jq.repeatOff.length) { - if(this.options.loop) { - this.css.jq.repeat.hide(); - this.css.jq.repeatOff.show(); - } else { - this.css.jq.repeat.show(); - this.css.jq.repeatOff.hide(); - } - } - }, - _updateInterface: function() { - if(this.css.jq.seekBar.length) { - this.css.jq.seekBar.width(this.status.seekPercent+"%"); - } - if(this.css.jq.playBar.length) { - if(this.options.smoothPlayBar) { - this.css.jq.playBar.stop().animate({ - width: this.status.currentPercentAbsolute+"%" - }, 250, "linear"); - } else { - this.css.jq.playBar.width(this.status.currentPercentRelative+"%"); - } - } - if(this.css.jq.currentTime.length) { - this.css.jq.currentTime.text(this._convertTime(this.status.currentTime)); - } - if(this.css.jq.duration.length) { - this.css.jq.duration.text(this._convertTime(this.status.duration)); - } - }, - _convertTime: ConvertTime.prototype.time, - _seeking: function() { - if(this.css.jq.seekBar.length) { - this.css.jq.seekBar.addClass("jp-seeking-bg"); - } - }, - _seeked: function() { - if(this.css.jq.seekBar.length) { - this.css.jq.seekBar.removeClass("jp-seeking-bg"); - } - }, - _resetGate: function() { - this.html.audio.gate = false; - this.html.video.gate = false; - this.flash.gate = false; - }, - _resetActive: function() { - this.html.active = false; - this.flash.active = false; - }, - setMedia: function(media) { - - /* media[format] = String: URL of format. Must contain all of the supplied option's video or audio formats. - * media.poster = String: Video poster URL. - * media.subtitles = String: * NOT IMPLEMENTED * URL of subtitles SRT file - * media.chapters = String: * NOT IMPLEMENTED * URL of chapters SRT file - * media.stream = Boolean: * NOT IMPLEMENTED * Designating actual media streams. ie., "false/undefined" for files. Plan to refresh the flash every so often. - */ - - var self = this, - supported = false, - posterChanged = this.status.media.poster !== media.poster; // Compare before reset. Important for OSX Safari as this.htmlElement.poster.src is absolute, even if original poster URL was relative. - - this._resetMedia(); - this._resetGate(); - this._resetActive(); - - $.each(this.formats, function(formatPriority, format) { - var isVideo = self.format[format].media === 'video'; - $.each(self.solutions, function(solutionPriority, solution) { - if(self[solution].support[format] && self._validString(media[format])) { // Format supported in solution and url given for format. - var isHtml = solution === 'html'; - - if(isVideo) { - if(isHtml) { - self.html.video.gate = true; - self._html_setVideo(media); - self.html.active = true; - } else { - self.flash.gate = true; - self._flash_setVideo(media); - self.flash.active = true; - } - if(self.css.jq.videoPlay.length) { - self.css.jq.videoPlay.show(); - } - self.status.video = true; - } else { - if(isHtml) { - self.html.audio.gate = true; - self._html_setAudio(media); - self.html.active = true; - } else { - self.flash.gate = true; - self._flash_setAudio(media); - self.flash.active = true; - } - if(self.css.jq.videoPlay.length) { - self.css.jq.videoPlay.hide(); - } - self.status.video = false; - } - - supported = true; - return false; // Exit $.each - } - }); - if(supported) { - return false; // Exit $.each - } - }); - - if(supported) { - if(!(this.status.nativeVideoControls && this.html.video.gate)) { - // Set poster IMG if native video controls are not being used - // Note: With IE the IMG onload event occurs immediately when cached. - // Note: Poster hidden by default in _resetMedia() - if(this._validString(media.poster)) { - if(posterChanged) { // Since some browsers do not generate img onload event. - this.htmlElement.poster.src = media.poster; - } else { - this.internal.poster.jq.show(); - } - } - } - this.status.srcSet = true; - this.status.media = $.extend({}, media); - this._updateButtons(false); - this._updateInterface(); - } else { // jPlayer cannot support any formats provided in this browser - // Send an error event - this._error( { - type: $.jPlayer.error.NO_SUPPORT, - context: "{supplied:'" + this.options.supplied + "'}", - message: $.jPlayer.errorMsg.NO_SUPPORT, - hint: $.jPlayer.errorHint.NO_SUPPORT - }); - } - }, - _resetMedia: function() { - this._resetStatus(); - this._updateButtons(false); - this._updateInterface(); - this._seeked(); - this.internal.poster.jq.hide(); - - clearTimeout(this.internal.htmlDlyCmdId); - - if(this.html.active) { - this._html_resetMedia(); - } else if(this.flash.active) { - this._flash_resetMedia(); - } - }, - clearMedia: function() { - this._resetMedia(); - - if(this.html.active) { - this._html_clearMedia(); - } else if(this.flash.active) { - this._flash_clearMedia(); - } - - this._resetGate(); - this._resetActive(); - }, - load: function() { - if(this.status.srcSet) { - if(this.html.active) { - this._html_load(); - } else if(this.flash.active) { - this._flash_load(); - } - } else { - this._urlNotSetError("load"); - } - }, - focus: function() { - if(this.options.keyEnabled) { - $.jPlayer.focus = this; - } - }, - play: function(time) { - time = (typeof time === "number") ? time : NaN; // Remove jQuery event from click handler - if(this.status.srcSet) { - this.focus(); - if(this.html.active) { - this._html_play(time); - } else if(this.flash.active) { - this._flash_play(time); - } - } else { - this._urlNotSetError("play"); - } - }, - videoPlay: function() { // Handles clicks on the play button over the video poster - this.play(); - }, - pause: function(time) { - time = (typeof time === "number") ? time : NaN; // Remove jQuery event from click handler - if(this.status.srcSet) { - if(this.html.active) { - this._html_pause(time); - } else if(this.flash.active) { - this._flash_pause(time); - } - } else { - this._urlNotSetError("pause"); - } - }, - pauseOthers: function() { - var self = this; - $.each(this.instances, function(i, element) { - if(self.element !== element) { // Do not this instance. - if(element.data("jPlayer").status.srcSet) { // Check that media is set otherwise would cause error event. - element.jPlayer("pause"); - } - } - }); - }, - stop: function() { - if(this.status.srcSet) { - if(this.html.active) { - this._html_pause(0); - } else if(this.flash.active) { - this._flash_pause(0); - } - } else { - this._urlNotSetError("stop"); - } - }, - playHead: function(p) { - p = this._limitValue(p, 0, 100); - if(this.status.srcSet) { - if(this.html.active) { - this._html_playHead(p); - } else if(this.flash.active) { - this._flash_playHead(p); - } - } else { - this._urlNotSetError("playHead"); - } - }, - _muted: function(muted) { - this.options.muted = muted; - if(this.html.used) { - this._html_mute(muted); - } - if(this.flash.used) { - this._flash_mute(muted); - } - - // The HTML solution generates this event from the media element itself. - if(!this.html.video.gate && !this.html.audio.gate) { - this._updateMute(muted); - this._updateVolume(this.options.volume); - this._trigger($.jPlayer.event.volumechange); - } - }, - mute: function(mute) { // mute is either: undefined (true), an event object (true) or a boolean (muted). - mute = mute === undefined ? true : !!mute; - this._muted(mute); - }, - unmute: function(unmute) { // unmute is either: undefined (true), an event object (true) or a boolean (!muted). - unmute = unmute === undefined ? true : !!unmute; - this._muted(!unmute); - }, - _updateMute: function(mute) { - if(mute === undefined) { - mute = this.options.muted; - } - if(this.css.jq.mute.length && this.css.jq.unmute.length) { - if(this.status.noVolume) { - this.css.jq.mute.hide(); - this.css.jq.unmute.hide(); - } else if(mute) { - this.css.jq.mute.hide(); - this.css.jq.unmute.show(); - } else { - this.css.jq.mute.show(); - this.css.jq.unmute.hide(); - } - } - }, - volume: function(v) { - v = this._limitValue(v, 0, 1); - this.options.volume = v; - - if(this.html.used) { - this._html_volume(v); - } - if(this.flash.used) { - this._flash_volume(v); - } - - // The HTML solution generates this event from the media element itself. - if(!this.html.video.gate && !this.html.audio.gate) { - this._updateVolume(v); - this._trigger($.jPlayer.event.volumechange); - } - }, - volumeBar: function(e) { // Handles clicks on the volumeBar - if(this.css.jq.volumeBar.length) { - // Using $(e.currentTarget) to enable multiple volume bars - var $bar = $(e.currentTarget), - offset = $bar.offset(), - x = e.pageX - offset.left, - w = $bar.width(), - y = $bar.height() - e.pageY + offset.top, - h = $bar.height(); - if(this.options.verticalVolume) { - this.volume(y/h); - } else { - this.volume(x/w); - } - } - if(this.options.muted) { - this._muted(false); - } - }, - volumeBarValue: function() { // Handles clicks on the volumeBarValue - // The volumeBar handles this event as the event propagates up the DOM. - }, - _updateVolume: function(v) { - if(v === undefined) { - v = this.options.volume; - } - v = this.options.muted ? 0 : v; - - if(this.status.noVolume) { - if(this.css.jq.volumeBar.length) { - this.css.jq.volumeBar.hide(); - } - if(this.css.jq.volumeBarValue.length) { - this.css.jq.volumeBarValue.hide(); - } - if(this.css.jq.volumeMax.length) { - this.css.jq.volumeMax.hide(); - } - } else { - if(this.css.jq.volumeBar.length) { - this.css.jq.volumeBar.show(); - } - if(this.css.jq.volumeBarValue.length) { - this.css.jq.volumeBarValue.show(); - this.css.jq.volumeBarValue[this.options.verticalVolume ? "height" : "width"]((v*100)+"%"); - } - if(this.css.jq.volumeMax.length) { - this.css.jq.volumeMax.show(); - } - } - }, - volumeMax: function() { // Handles clicks on the volume max - this.volume(1); - if(this.options.muted) { - this._muted(false); - } - }, - _cssSelectorAncestor: function(ancestor) { - var self = this; - this.options.cssSelectorAncestor = ancestor; - this._removeUiClass(); - this.ancestorJq = ancestor ? $(ancestor) : []; // Would use $() instead of [], but it is only 1.4+ - if(ancestor && this.ancestorJq.length !== 1) { // So empty strings do not generate the warning. - this._warning( { - type: $.jPlayer.warning.CSS_SELECTOR_COUNT, - context: ancestor, - message: $.jPlayer.warningMsg.CSS_SELECTOR_COUNT + this.ancestorJq.length + " found for cssSelectorAncestor.", - hint: $.jPlayer.warningHint.CSS_SELECTOR_COUNT - }); - } - this._addUiClass(); - $.each(this.options.cssSelector, function(fn, cssSel) { - self._cssSelector(fn, cssSel); - }); - - // Set the GUI to the current state. - this._updateInterface(); - this._updateButtons(); - this._updateAutohide(); - this._updateVolume(); - this._updateMute(); - }, - _cssSelector: function(fn, cssSel) { - var self = this; - if(typeof cssSel === 'string') { - if($.jPlayer.prototype.options.cssSelector[fn]) { - if(this.css.jq[fn] && this.css.jq[fn].length) { - this.css.jq[fn].unbind(".jPlayer"); - } - this.options.cssSelector[fn] = cssSel; - this.css.cs[fn] = this.options.cssSelectorAncestor + " " + cssSel; - - if(cssSel) { // Checks for empty string - this.css.jq[fn] = $(this.css.cs[fn]); - } else { - this.css.jq[fn] = []; // To comply with the css.jq[fn].length check before its use. As of jQuery 1.4 could have used $() for an empty set. - } - - if(this.css.jq[fn].length) { - var handler = function(e) { - e.preventDefault(); - self[fn](e); - $(this).blur(); - }; - this.css.jq[fn].bind("click.jPlayer", handler); // Using jPlayer namespace - } - - if(cssSel && this.css.jq[fn].length !== 1) { // So empty strings do not generate the warning. ie., they just remove the old one. - this._warning( { - type: $.jPlayer.warning.CSS_SELECTOR_COUNT, - context: this.css.cs[fn], - message: $.jPlayer.warningMsg.CSS_SELECTOR_COUNT + this.css.jq[fn].length + " found for " + fn + " method.", - hint: $.jPlayer.warningHint.CSS_SELECTOR_COUNT - }); - } - } else { - this._warning( { - type: $.jPlayer.warning.CSS_SELECTOR_METHOD, - context: fn, - message: $.jPlayer.warningMsg.CSS_SELECTOR_METHOD, - hint: $.jPlayer.warningHint.CSS_SELECTOR_METHOD - }); - } - } else { - this._warning( { - type: $.jPlayer.warning.CSS_SELECTOR_STRING, - context: cssSel, - message: $.jPlayer.warningMsg.CSS_SELECTOR_STRING, - hint: $.jPlayer.warningHint.CSS_SELECTOR_STRING - }); - } - }, - seekBar: function(e) { // Handles clicks on the seekBar - if(this.css.jq.seekBar.length) { - // Using $(e.currentTarget) to enable multiple seek bars - var $bar = $(e.currentTarget), - offset = $bar.offset(), - x = e.pageX - offset.left, - w = $bar.width(), - p = 100 * x / w; - this.playHead(p); - } - }, - playBar: function() { // Handles clicks on the playBar - // The seekBar handles this event as the event propagates up the DOM. - }, - repeat: function() { // Handle clicks on the repeat button - this._loop(true); - }, - repeatOff: function() { // Handle clicks on the repeatOff button - this._loop(false); - }, - _loop: function(loop) { - if(this.options.loop !== loop) { - this.options.loop = loop; - this._updateButtons(); - this._trigger($.jPlayer.event.repeat); - } - }, - - // Plan to review the cssSelector method to cope with missing associated functions accordingly. - - currentTime: function() { // Handles clicks on the text - // Added to avoid errors using cssSelector system for the text - }, - duration: function() { // Handles clicks on the text - // Added to avoid errors using cssSelector system for the text - }, - gui: function() { // Handles clicks on the gui - // Added to avoid errors using cssSelector system for the gui - }, - noSolution: function() { // Handles clicks on the error message - // Added to avoid errors using cssSelector system for no-solution - }, - - // Options code adapted from ui.widget.js (1.8.7). Made changes so the key can use dot notation. To match previous getData solution in jPlayer 1. - option: function(key, value) { - var options = key; - - // Enables use: options(). Returns a copy of options object - if ( arguments.length === 0 ) { - return $.extend( true, {}, this.options ); - } - - if(typeof key === "string") { - var keys = key.split("."); - - // Enables use: options("someOption") Returns a copy of the option. Supports dot notation. - if(value === undefined) { - - var opt = $.extend(true, {}, this.options); - for(var i = 0; i < keys.length; i++) { - if(opt[keys[i]] !== undefined) { - opt = opt[keys[i]]; - } else { - this._warning( { - type: $.jPlayer.warning.OPTION_KEY, - context: key, - message: $.jPlayer.warningMsg.OPTION_KEY, - hint: $.jPlayer.warningHint.OPTION_KEY - }); - return undefined; - } - } - return opt; - } - - // Enables use: options("someOptionObject", someObject}). Creates: {someOptionObject:someObject} - // Enables use: options("someOption", someValue). Creates: {someOption:someValue} - // Enables use: options("someOptionObject.someOption", someValue). Creates: {someOptionObject:{someOption:someValue}} - - options = {}; - var opts = options; - - for(var j = 0; j < keys.length; j++) { - if(j < keys.length - 1) { - opts[keys[j]] = {}; - opts = opts[keys[j]]; - } else { - opts[keys[j]] = value; - } - } - } - - // Otherwise enables use: options(optionObject). Uses original object (the key) - - this._setOptions(options); - - return this; - }, - _setOptions: function(options) { - var self = this; - $.each(options, function(key, value) { // This supports the 2 level depth that the options of jPlayer has. Would review if we ever need more depth. - self._setOption(key, value); - }); - - return this; - }, - _setOption: function(key, value) { - var self = this; - - // The ability to set options is limited at this time. - - switch(key) { - case "volume" : - this.volume(value); - break; - case "muted" : - this._muted(value); - break; - case "cssSelectorAncestor" : - this._cssSelectorAncestor(value); // Set and refresh all associations for the new ancestor. - break; - case "cssSelector" : - $.each(value, function(fn, cssSel) { - self._cssSelector(fn, cssSel); // NB: The option is set inside this function, after further validity checks. - }); - break; - case "fullScreen" : - if(this.options[key] !== value) { // if changed - var wkv = $.jPlayer.nativeFeatures.fullscreen.used.webkitVideo; - if(!wkv || wkv && !this.status.waitForPlay) { - if(!wkv) { // No sensible way to unset option on these devices. - this.options[key] = value; - } - if(value) { - this._requestFullscreen(); - } else { - this._exitFullscreen(); - } - if(!wkv) { - this._setOption("fullWindow", value); - } - } - } - break; - case "fullWindow" : - if(this.options[key] !== value) { // if changed - this._removeUiClass(); - this.options[key] = value; - this._refreshSize(); - } - break; - case "size" : - if(!this.options.fullWindow && this.options[key].cssClass !== value.cssClass) { - this._removeUiClass(); - } - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this._refreshSize(); - break; - case "sizeFull" : - if(this.options.fullWindow && this.options[key].cssClass !== value.cssClass) { - this._removeUiClass(); - } - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this._refreshSize(); - break; - case "autohide" : - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this._updateAutohide(); - break; - case "loop" : - this._loop(value); - break; - case "nativeVideoControls" : - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls); - this._restrictNativeVideoControls(); - this._updateNativeVideoControls(); - break; - case "noFullWindow" : - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this.status.nativeVideoControls = this._uaBlocklist(this.options.nativeVideoControls); // Need to check again as noFullWindow can depend on this flag and the restrict() can override it. - this.status.noFullWindow = this._uaBlocklist(this.options.noFullWindow); - this._restrictNativeVideoControls(); - this._updateButtons(); - break; - case "noVolume" : - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - this.status.noVolume = this._uaBlocklist(this.options.noVolume); - this._updateVolume(); - this._updateMute(); - break; - case "emulateHtml" : - if(this.options[key] !== value) { // To avoid multiple event handlers being created, if true already. - this.options[key] = value; - if(value) { - this._emulateHtmlBridge(); - } else { - this._destroyHtmlBridge(); - } - } - break; - case "timeFormat" : - this.options[key] = $.extend({}, this.options[key], value); // store a merged copy of it, incase not all properties changed. - break; - case "keyEnabled" : - this.options[key] = value; - if(!value && this === $.jPlayer.focus) { - $.jPlayer.focus = null; - } - break; - case "keyBindings" : - this.options[key] = $.extend(true, {}, this.options[key], value); // store a merged DEEP copy of it, incase not all properties changed. - break; - case "audioFullScreen" : - this.options[key] = value; - break; - } - - return this; - }, - // End of: (Options code adapted from ui.widget.js) - - _refreshSize: function() { - this._setSize(); // update status and jPlayer element size - this._addUiClass(); // update the ui class - this._updateSize(); // update internal sizes - this._updateButtons(); - this._updateAutohide(); - this._trigger($.jPlayer.event.resize); - }, - _setSize: function() { - // Determine the current size from the options - if(this.options.fullWindow) { - this.status.width = this.options.sizeFull.width; - this.status.height = this.options.sizeFull.height; - this.status.cssClass = this.options.sizeFull.cssClass; - } else { - this.status.width = this.options.size.width; - this.status.height = this.options.size.height; - this.status.cssClass = this.options.size.cssClass; - } - - // Set the size of the jPlayer area. - this.element.css({'width': this.status.width, 'height': this.status.height}); - }, - _addUiClass: function() { - if(this.ancestorJq.length) { - this.ancestorJq.addClass(this.status.cssClass); - } - }, - _removeUiClass: function() { - if(this.ancestorJq.length) { - this.ancestorJq.removeClass(this.status.cssClass); - } - }, - _updateSize: function() { - // The poster uses show/hide so can simply resize it. - this.internal.poster.jq.css({'width': this.status.width, 'height': this.status.height}); - - // Video html or flash resized if necessary at this time, or if native video controls being used. - if(!this.status.waitForPlay && this.html.active && this.status.video || this.html.video.available && this.html.used && this.status.nativeVideoControls) { - this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); - } - else if(!this.status.waitForPlay && this.flash.active && this.status.video) { - this.internal.flash.jq.css({'width': this.status.width, 'height': this.status.height}); - } - }, - _updateAutohide: function() { - var self = this, - event = "mousemove.jPlayer", - namespace = ".jPlayerAutohide", - eventType = event + namespace, - handler = function() { - self.css.jq.gui.fadeIn(self.options.autohide.fadeIn, function() { - clearTimeout(self.internal.autohideId); - self.internal.autohideId = setTimeout( function() { - self.css.jq.gui.fadeOut(self.options.autohide.fadeOut); - }, self.options.autohide.hold); - }); - }; - - if(this.css.jq.gui.length) { - - // End animations first so that its callback is executed now. - // Otherwise an in progress fadeIn animation still has the callback to fadeOut again. - this.css.jq.gui.stop(true, true); - - // Removes the fadeOut operation from the fadeIn callback. - clearTimeout(this.internal.autohideId); - - this.element.unbind(namespace); - this.css.jq.gui.unbind(namespace); - - if(!this.status.nativeVideoControls) { - if(this.options.fullWindow && this.options.autohide.full || !this.options.fullWindow && this.options.autohide.restored) { - this.element.bind(eventType, handler); - this.css.jq.gui.bind(eventType, handler); - this.css.jq.gui.hide(); - } else { - this.css.jq.gui.show(); - } - } else { - this.css.jq.gui.hide(); - } - } - }, - fullScreen: function() { - this._setOption("fullScreen", true); - }, - restoreScreen: function() { - this._setOption("fullScreen", false); - }, - _fullscreenAddEventListeners: function() { - var self = this, - fs = $.jPlayer.nativeFeatures.fullscreen; - - if(fs.api.fullscreenEnabled) { - if(fs.event.fullscreenchange) { - // Create the event handler function and store it for removal. - if(typeof this.internal.fullscreenchangeHandler !== 'function') { - this.internal.fullscreenchangeHandler = function() { - self._fullscreenchange(); - }; - } - document.addEventListener(fs.event.fullscreenchange, this.internal.fullscreenchangeHandler, false); - } - // No point creating handler for fullscreenerror. - // Either logic avoids fullscreen occurring (w3c/moz), or their is no event on the browser (webkit). - } - }, - _fullscreenRemoveEventListeners: function() { - var fs = $.jPlayer.nativeFeatures.fullscreen; - if(this.internal.fullscreenchangeHandler) { - document.addEventListener(fs.event.fullscreenchange, this.internal.fullscreenchangeHandler, false); - } - }, - _fullscreenchange: function() { - // If nothing is fullscreen, then we cannot be in fullscreen mode. - if(this.options.fullScreen && !$.jPlayer.nativeFeatures.fullscreen.api.fullscreenElement()) { - this._setOption("fullScreen", false); - } - }, - _requestFullscreen: function() { - // Either the container or the jPlayer div - var e = this.ancestorJq.length ? this.ancestorJq[0] : this.element[0], - fs = $.jPlayer.nativeFeatures.fullscreen; - - // This method needs the video element. For iOS and Android. - if(fs.used.webkitVideo) { - e = this.htmlElement.video; - } - - if(fs.api.fullscreenEnabled) { - fs.api.requestFullscreen(e); - } - }, - _exitFullscreen: function() { - - var fs = $.jPlayer.nativeFeatures.fullscreen, - e; - - // This method needs the video element. For iOS and Android. - if(fs.used.webkitVideo) { - e = this.htmlElement.video; - } - - if(fs.api.fullscreenEnabled) { - fs.api.exitFullscreen(e); - } - }, - _html_initMedia: function(media) { - // Remove any existing track elements - var $media = $(this.htmlElement.media).empty(); - - // Create any track elements given with the media, as an Array of track Objects. - $.each(media.track || [], function(i,v) { - var track = document.createElement('track'); - track.setAttribute("kind", v.kind ? v.kind : ""); - track.setAttribute("src", v.src ? v.src : ""); - track.setAttribute("srclang", v.srclang ? v.srclang : ""); - track.setAttribute("label", v.label ? v.label : ""); - if(v.def) { - track.setAttribute("default", v.def); - } - $media.append(track); - }); - - this.htmlElement.media.src = this.status.src; - - if(this.options.preload !== 'none') { - this._html_load(); // See function for comments - } - this._trigger($.jPlayer.event.timeupdate); // The flash generates this event for its solution. - }, - _html_setFormat: function(media) { - var self = this; - // Always finds a format due to checks in setMedia() - $.each(this.formats, function(priority, format) { - if(self.html.support[format] && media[format]) { - self.status.src = media[format]; - self.status.format[format] = true; - self.status.formatType = format; - return false; - } - }); - }, - _html_setAudio: function(media) { - this._html_setFormat(media); - this.htmlElement.media = this.htmlElement.audio; - this._html_initMedia(media); - }, - _html_setVideo: function(media) { - this._html_setFormat(media); - if(this.status.nativeVideoControls) { - this.htmlElement.video.poster = this._validString(media.poster) ? media.poster : ""; - } - this.htmlElement.media = this.htmlElement.video; - this._html_initMedia(media); - }, - _html_resetMedia: function() { - if(this.htmlElement.media) { - if(this.htmlElement.media.id === this.internal.video.id && !this.status.nativeVideoControls) { - this.internal.video.jq.css({'width':'0px', 'height':'0px'}); - } - this.htmlElement.media.pause(); - } - }, - _html_clearMedia: function() { - if(this.htmlElement.media) { - this.htmlElement.media.src = "about:blank"; - // The following load() is only required for Firefox 3.6 (PowerMacs). - // Recent HTMl5 browsers only require the src change. Due to changes in W3C spec and load() effect. - this.htmlElement.media.load(); // Stops an old, "in progress" download from continuing the download. Triggers the loadstart, error and emptied events, due to the empty src. Also an abort event if a download was in progress. - } - }, - _html_load: function() { - // This function remains to allow the early HTML5 browsers to work, such as Firefox 3.6 - // A change in the W3C spec for the media.load() command means that this is no longer necessary. - // This command should be removed and actually causes minor undesirable effects on some browsers. Such as loading the whole file and not only the metadata. - if(this.status.waitForLoad) { - this.status.waitForLoad = false; - this.htmlElement.media.load(); - } - clearTimeout(this.internal.htmlDlyCmdId); - }, - _html_play: function(time) { - var self = this, - media = this.htmlElement.media; - - this._html_load(); // Loads if required and clears any delayed commands. - - if(!isNaN(time)) { - - // Attempt to play it, since iOS has been ignoring commands - if(this.internal.cmdsIgnored) { - media.play(); - } - - try { - // !media.seekable is for old HTML5 browsers, like Firefox 3.6. - // Checking seekable.length is important for iOS6 to work with setMedia().play(time) - if(!media.seekable || typeof media.seekable === "object" && media.seekable.length > 0) { - media.currentTime = time; - media.play(); - } else { - throw 1; - } - } catch(err) { - this.internal.htmlDlyCmdId = setTimeout(function() { - self.play(time); - }, 250); - return; // Cancel execution and wait for the delayed command. - } - } else { - media.play(); - } - this._html_checkWaitForPlay(); - }, - _html_pause: function(time) { - var self = this, - media = this.htmlElement.media; - - if(time > 0) { // We do not want the stop() command, which does pause(0), causing a load operation. - this._html_load(); // Loads if required and clears any delayed commands. - } else { - clearTimeout(this.internal.htmlDlyCmdId); - } - - // Order of these commands is important for Safari (Win) and IE9. Pause then change currentTime. - media.pause(); - - if(!isNaN(time)) { - try { - if(!media.seekable || typeof media.seekable === "object" && media.seekable.length > 0) { - media.currentTime = time; - } else { - throw 1; - } - } catch(err) { - this.internal.htmlDlyCmdId = setTimeout(function() { - self.pause(time); - }, 250); - return; // Cancel execution and wait for the delayed command. - } - } - if(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button. - this._html_checkWaitForPlay(); - } - }, - _html_playHead: function(percent) { - var self = this, - media = this.htmlElement.media; - - this._html_load(); // Loads if required and clears any delayed commands. - - try { - if(typeof media.seekable === "object" && media.seekable.length > 0) { - media.currentTime = percent * media.seekable.end(media.seekable.length-1) / 100; - } else if(media.duration > 0 && !isNaN(media.duration)) { - media.currentTime = percent * media.duration / 100; - } else { - throw "e"; - } - } catch(err) { - this.internal.htmlDlyCmdId = setTimeout(function() { - self.playHead(percent); - }, 250); - return; // Cancel execution and wait for the delayed command. - } - if(!this.status.waitForLoad) { - this._html_checkWaitForPlay(); - } - }, - _html_checkWaitForPlay: function() { - if(this.status.waitForPlay) { - this.status.waitForPlay = false; - if(this.css.jq.videoPlay.length) { - this.css.jq.videoPlay.hide(); - } - if(this.status.video) { - this.internal.poster.jq.hide(); - this.internal.video.jq.css({'width': this.status.width, 'height': this.status.height}); - } - } - }, - _html_volume: function(v) { - if(this.html.audio.available) { - this.htmlElement.audio.volume = v; - } - if(this.html.video.available) { - this.htmlElement.video.volume = v; - } - }, - _html_mute: function(m) { - if(this.html.audio.available) { - this.htmlElement.audio.muted = m; - } - if(this.html.video.available) { - this.htmlElement.video.muted = m; - } - }, - _flash_setAudio: function(media) { - var self = this; - try { - // Always finds a format due to checks in setMedia() - $.each(this.formats, function(priority, format) { - if(self.flash.support[format] && media[format]) { - switch (format) { - case "m4a" : - case "fla" : - self._getMovie().fl_setAudio_m4a(media[format]); - break; - case "mp3" : - self._getMovie().fl_setAudio_mp3(media[format]); - break; - case "rtmpa": - self._getMovie().fl_setAudio_rtmp(media[format]); - break; - } - self.status.src = media[format]; - self.status.format[format] = true; - self.status.formatType = format; - return false; - } - }); - - if(this.options.preload === 'auto') { - this._flash_load(); - this.status.waitForLoad = false; - } - } catch(err) { this._flashError(err); } - }, - _flash_setVideo: function(media) { - var self = this; - try { - // Always finds a format due to checks in setMedia() - $.each(this.formats, function(priority, format) { - if(self.flash.support[format] && media[format]) { - switch (format) { - case "m4v" : - case "flv" : - self._getMovie().fl_setVideo_m4v(media[format]); - break; - case "rtmpv": - self._getMovie().fl_setVideo_rtmp(media[format]); - break; - } - self.status.src = media[format]; - self.status.format[format] = true; - self.status.formatType = format; - return false; - } - }); - - if(this.options.preload === 'auto') { - this._flash_load(); - this.status.waitForLoad = false; - } - } catch(err) { this._flashError(err); } - }, - _flash_resetMedia: function() { - this.internal.flash.jq.css({'width':'0px', 'height':'0px'}); // Must do via CSS as setting attr() to zero causes a jQuery error in IE. - this._flash_pause(NaN); - }, - _flash_clearMedia: function() { - try { - this._getMovie().fl_clearMedia(); - } catch(err) { this._flashError(err); } - }, - _flash_load: function() { - try { - this._getMovie().fl_load(); - } catch(err) { this._flashError(err); } - this.status.waitForLoad = false; - }, - _flash_play: function(time) { - try { - this._getMovie().fl_play(time); - } catch(err) { this._flashError(err); } - this.status.waitForLoad = false; - this._flash_checkWaitForPlay(); - }, - _flash_pause: function(time) { - try { - this._getMovie().fl_pause(time); - } catch(err) { this._flashError(err); } - if(time > 0) { // Avoids a setMedia() followed by stop() or pause(0) hiding the video play button. - this.status.waitForLoad = false; - this._flash_checkWaitForPlay(); - } - }, - _flash_playHead: function(p) { - try { - this._getMovie().fl_play_head(p); - } catch(err) { this._flashError(err); } - if(!this.status.waitForLoad) { - this._flash_checkWaitForPlay(); - } - }, - _flash_checkWaitForPlay: function() { - if(this.status.waitForPlay) { - this.status.waitForPlay = false; - if(this.css.jq.videoPlay.length) { - this.css.jq.videoPlay.hide(); - } - if(this.status.video) { - this.internal.poster.jq.hide(); - this.internal.flash.jq.css({'width': this.status.width, 'height': this.status.height}); - } - } - }, - _flash_volume: function(v) { - try { - this._getMovie().fl_volume(v); - } catch(err) { this._flashError(err); } - }, - _flash_mute: function(m) { - try { - this._getMovie().fl_mute(m); - } catch(err) { this._flashError(err); } - }, - _getMovie: function() { - return document[this.internal.flash.id]; - }, - _getFlashPluginVersion: function() { - - // _getFlashPluginVersion() code influenced by: - // - FlashReplace 1.01: http://code.google.com/p/flashreplace/ - // - SWFObject 2.2: http://code.google.com/p/swfobject/ - - var version = 0, - flash; - if(window.ActiveXObject) { - try { - flash = new ActiveXObject("ShockwaveFlash.ShockwaveFlash"); - if (flash) { // flash will return null when ActiveX is disabled - var v = flash.GetVariable("$version"); - if(v) { - v = v.split(" ")[1].split(","); - version = parseInt(v[0], 10) + "." + parseInt(v[1], 10); - } - } - } catch(e) {} - } - else if(navigator.plugins && navigator.mimeTypes.length > 0) { - flash = navigator.plugins["Shockwave Flash"]; - if(flash) { - version = navigator.plugins["Shockwave Flash"].description.replace(/.*\s(\d+\.\d+).*/, "$1"); - } - } - return version * 1; // Converts to a number - }, - _checkForFlash: function (version) { - var flashOk = false; - if(this._getFlashPluginVersion() >= version) { - flashOk = true; - } - return flashOk; - }, - _validString: function(url) { - return (url && typeof url === "string"); // Empty strings return false - }, - _limitValue: function(value, min, max) { - return (value < min) ? min : ((value > max) ? max : value); - }, - _urlNotSetError: function(context) { - this._error( { - type: $.jPlayer.error.URL_NOT_SET, - context: context, - message: $.jPlayer.errorMsg.URL_NOT_SET, - hint: $.jPlayer.errorHint.URL_NOT_SET - }); - }, - _flashError: function(error) { - var errorType; - if(!this.internal.ready) { - errorType = "FLASH"; - } else { - errorType = "FLASH_DISABLED"; - } - this._error( { - type: $.jPlayer.error[errorType], - context: this.internal.flash.swf, - message: $.jPlayer.errorMsg[errorType] + error.message, - hint: $.jPlayer.errorHint[errorType] - }); - // Allow the audio player to recover if display:none and then shown again, or with position:fixed on Firefox. - // This really only affects audio in a media player, as an audio player could easily move the jPlayer element away from such issues. - this.internal.flash.jq.css({'width':'1px', 'height':'1px'}); - }, - _error: function(error) { - this._trigger($.jPlayer.event.error, error); - if(this.options.errorAlerts) { - this._alert("Error!" + (error.message ? "\n\n" + error.message : "") + (error.hint ? "\n\n" + error.hint : "") + "\n\nContext: " + error.context); - } - }, - _warning: function(warning) { - this._trigger($.jPlayer.event.warning, undefined, warning); - if(this.options.warningAlerts) { - this._alert("Warning!" + (warning.message ? "\n\n" + warning.message : "") + (warning.hint ? "\n\n" + warning.hint : "") + "\n\nContext: " + warning.context); - } - }, - _alert: function(message) { - alert("jPlayer " + this.version.script + " : id='" + this.internal.self.id +"' : " + message); - }, - _emulateHtmlBridge: function() { - var self = this; - - // Emulate methods on jPlayer's DOM element. - $.each( $.jPlayer.emulateMethods.split(/\s+/g), function(i, name) { - self.internal.domNode[name] = function(arg) { - self[name](arg); - }; - - }); - - // Bubble jPlayer events to its DOM element. - $.each($.jPlayer.event, function(eventName,eventType) { - var nativeEvent = true; - $.each( $.jPlayer.reservedEvent.split(/\s+/g), function(i, name) { - if(name === eventName) { - nativeEvent = false; - return false; - } - }); - if(nativeEvent) { - self.element.bind(eventType + ".jPlayer.jPlayerHtml", function() { // With .jPlayer & .jPlayerHtml namespaces. - self._emulateHtmlUpdate(); - var domEvent = document.createEvent("Event"); - domEvent.initEvent(eventName, false, true); - self.internal.domNode.dispatchEvent(domEvent); - }); - } - // The error event would require a special case - }); - - // IE9 has a readyState property on all elements. The document should have it, but all (except media) elements inherit it in IE9. This conflicts with Popcorn, which polls the readyState. - }, - _emulateHtmlUpdate: function() { - var self = this; - - $.each( $.jPlayer.emulateStatus.split(/\s+/g), function(i, name) { - self.internal.domNode[name] = self.status[name]; - }); - $.each( $.jPlayer.emulateOptions.split(/\s+/g), function(i, name) { - self.internal.domNode[name] = self.options[name]; - }); - }, - _destroyHtmlBridge: function() { - var self = this; - - // Bridge event handlers are also removed by destroy() through .jPlayer namespace. - this.element.unbind(".jPlayerHtml"); // Remove all event handlers created by the jPlayer bridge. So you can change the emulateHtml option. - - // Remove the methods and properties - var emulated = $.jPlayer.emulateMethods + " " + $.jPlayer.emulateStatus + " " + $.jPlayer.emulateOptions; - $.each( emulated.split(/\s+/g), function(i, name) { - delete self.internal.domNode[name]; - }); - } - }; - - $.jPlayer.error = { - FLASH: "e_flash", - FLASH_DISABLED: "e_flash_disabled", - NO_SOLUTION: "e_no_solution", - NO_SUPPORT: "e_no_support", - URL: "e_url", - URL_NOT_SET: "e_url_not_set", - VERSION: "e_version" - }; - - $.jPlayer.errorMsg = { - FLASH: "jPlayer's Flash fallback is not configured correctly, or a command was issued before the jPlayer Ready event. Details: ", // Used in: _flashError() - FLASH_DISABLED: "jPlayer's Flash fallback has been disabled by the browser due to the CSS rules you have used. Details: ", // Used in: _flashError() - NO_SOLUTION: "No solution can be found by jPlayer in this browser. Neither HTML nor Flash can be used.", // Used in: _init() - NO_SUPPORT: "It is not possible to play any media format provided in setMedia() on this browser using your current options.", // Used in: setMedia() - URL: "Media URL could not be loaded.", // Used in: jPlayerFlashEvent() and _addHtmlEventListeners() - URL_NOT_SET: "Attempt to issue media playback commands, while no media url is set.", // Used in: load(), play(), pause(), stop() and playHead() - VERSION: "jPlayer " + $.jPlayer.prototype.version.script + " needs Jplayer.swf version " + $.jPlayer.prototype.version.needFlash + " but found " // Used in: jPlayerReady() - }; - - $.jPlayer.errorHint = { - FLASH: "Check your swfPath option and that Jplayer.swf is there.", - FLASH_DISABLED: "Check that you have not display:none; the jPlayer entity or any ancestor.", - NO_SOLUTION: "Review the jPlayer options: support and supplied.", - NO_SUPPORT: "Video or audio formats defined in the supplied option are missing.", - URL: "Check media URL is valid.", - URL_NOT_SET: "Use setMedia() to set the media URL.", - VERSION: "Update jPlayer files." - }; - - $.jPlayer.warning = { - CSS_SELECTOR_COUNT: "e_css_selector_count", - CSS_SELECTOR_METHOD: "e_css_selector_method", - CSS_SELECTOR_STRING: "e_css_selector_string", - OPTION_KEY: "e_option_key" - }; - - $.jPlayer.warningMsg = { - CSS_SELECTOR_COUNT: "The number of css selectors found did not equal one: ", - CSS_SELECTOR_METHOD: "The methodName given in jPlayer('cssSelector') is not a valid jPlayer method.", - CSS_SELECTOR_STRING: "The methodCssSelector given in jPlayer('cssSelector') is not a String or is empty.", - OPTION_KEY: "The option requested in jPlayer('option') is undefined." - }; - - $.jPlayer.warningHint = { - CSS_SELECTOR_COUNT: "Check your css selector and the ancestor.", - CSS_SELECTOR_METHOD: "Check your method name.", - CSS_SELECTOR_STRING: "Check your css selector is a string.", - OPTION_KEY: "Check your option name." - }; -})); diff --git a/libraries/filemanager-9.12.1/js/jPlayer/package.json b/libraries/filemanager-9.12.1/js/jPlayer/package.json deleted file mode 100644 index 70656c2..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/package.json +++ /dev/null @@ -1,27 +0,0 @@ -{ - "name": "jplayer", - "version": "2.4.0", - "description": "The jQuery HTML5 Audio / Video Library", - "homepage": "http://www.jplayer.org/", - "keywords": [ - "audio", - "video" - ], - "dependencies": { - "jquery": ">1.7.0" - }, - "licenses": [ - { - "type": "MIT", - "url": "http://www.opensource.org/licenses/MIT" - } - ], - "repositories": [ - { - "type": "git", - "url": "https://github.com/happyworm/jPlayer.git" - } - ], - "github": "http://github.com/happyworm/jPlayer", - "main": "jquery.jplayer/jquery.jplayer.js" -} diff --git a/libraries/filemanager-9.12.1/js/jPlayer/popcorn/popcorn.jplayer.js b/libraries/filemanager-9.12.1/js/jPlayer/popcorn/popcorn.jplayer.js deleted file mode 100644 index 8eff0da..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/popcorn/popcorn.jplayer.js +++ /dev/null @@ -1,579 +0,0 @@ -/* - * jPlayer Player Plugin for Popcorn JavaScript Library - * http://www.jplayer.org - * - * Copyright (c) 2012 - 2014 Happyworm Ltd - * Licensed under the MIT license. - * http://opensource.org/licenses/MIT - * - * Author: Mark J Panaghiston - * Version: 1.1.6 - * Date: 27th November 2014 - * - * For Popcorn Version: 1.3 - * For jPlayer Version: 2.9.0 - * Requires: jQuery 1.7+ - * Note: jQuery dependancy cannot be removed since jPlayer 2 is a jQuery plugin. Use of jQuery will be kept to a minimum. - */ - -(function(Popcorn) { - - var JQUERY_SCRIPT = '//code.jquery.com/jquery-1.11.1.min.js', // Used if jQuery not already present. - JPLAYER_SCRIPT = '//code.jplayer.org/2.9.0/jplayer/jquery.jplayer.min.js', // Used if jPlayer not already present. - JPLAYER_SWFPATH = '//code.jplayer.org/2.9.0/jplayer/jquery.jplayer.swf', // Used if not specified in jPlayer options via SRC Object. - SOLUTION = 'html,flash', // The default solution option. - DEBUG = false, // Decided to leave the debugging option and console output in for the time being. Overhead is trivial. - jQueryDownloading = false, // Flag to stop multiple instances from each pulling in jQuery, thus corrupting it. - jPlayerDownloading = false, // Flag to stop multiple instances from each pulling in jPlayer, thus corrupting it. - format = { // Duplicate of jPlayer 2.5.0 object, to avoid always requiring jQuery and jPlayer to be loaded before performing the _canPlayType() test. - mp3: { - codec: 'audio/mpeg', - flashCanPlay: true, - media: 'audio' - }, - m4a: { // AAC / MP4 - codec: 'audio/mp4; codecs="mp4a.40.2"', - flashCanPlay: true, - media: 'audio' - }, - m3u8a: { // AAC / MP4 / Apple HLS - codec: 'application/vnd.apple.mpegurl; codecs="mp4a.40.2"', - flashCanPlay: false, - media: 'audio' - }, - m3ua: { // M3U - codec: 'audio/mpegurl', - flashCanPlay: false, - media: 'audio' - }, - oga: { // OGG - codec: 'audio/ogg; codecs="vorbis, opus"', - flashCanPlay: false, - media: 'audio' - }, - flac: { // FLAC - codec: 'audio/x-flac', - flashCanPlay: false, - media: 'audio' - }, - wav: { // PCM - codec: 'audio/wav; codecs="1"', - flashCanPlay: false, - media: 'audio' - }, - webma: { // WEBM - codec: 'audio/webm; codecs="vorbis"', - flashCanPlay: false, - media: 'audio' - }, - fla: { // FLV / F4A - codec: 'audio/x-flv', - flashCanPlay: true, - media: 'audio' - }, - rtmpa: { // RTMP AUDIO - codec: 'audio/rtmp; codecs="rtmp"', - flashCanPlay: true, - media: 'audio' - }, - m4v: { // H.264 / MP4 - codec: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"', - flashCanPlay: true, - media: 'video' - }, - m3u8v: { // H.264 / AAC / MP4 / Apple HLS - codec: 'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"', - flashCanPlay: false, - media: 'video' - }, - m3uv: { // M3U - codec: 'audio/mpegurl', - flashCanPlay: false, - media: 'video' - }, - ogv: { // OGG - codec: 'video/ogg; codecs="theora, vorbis"', - flashCanPlay: false, - media: 'video' - }, - webmv: { // WEBM - codec: 'video/webm; codecs="vorbis, vp8"', - flashCanPlay: false, - media: 'video' - }, - flv: { // FLV / F4V - codec: 'video/x-flv', - flashCanPlay: true, - media: 'video' - }, - rtmpv: { // RTMP VIDEO - codec: 'video/rtmp; codecs="rtmp"', - flashCanPlay: true, - media: 'video' - } - }, - isObject = function(val) { // Basic check for Object - if(val && typeof val === 'object' && val.hasOwnProperty) { - return true; - } else { - return false; - } - }, - getMediaType = function(url) { // Function to gleam the media type from the URL - var mediaType = false; - if(/\.mp3$/i.test(url)) { - mediaType = 'mp3'; - } else if(/\.mp4$/i.test(url) || /\.m4v$/i.test(url)) { - mediaType = 'm4v'; - } else if(/\.m4a$/i.test(url)) { - mediaType = 'm4a'; - } else if(/\.ogg$/i.test(url) || /\.oga$/i.test(url)) { - mediaType = 'oga'; - } else if(/\.ogv$/i.test(url)) { - mediaType = 'ogv'; - } else if(/\.webm$/i.test(url)) { - mediaType = 'webmv'; - } - return mediaType; - }, - getSupplied = function(url) { // Function to generate a supplied option from an src object. ie., When supplied not specified. - var supplied = '', - separator = ''; - if(isObject(url)) { - // Generate supplied option from object's properties. Non-format properties would be ignored by jPlayer. Order is unpredictable. - for(var prop in url) { - if(url.hasOwnProperty(prop)) { - supplied += separator + prop; - separator = ','; - } - } - } - if(DEBUG) console.log('getSupplied(): Generated: supplied = "' + supplied + '"'); - return supplied; - }; - - Popcorn.player( 'jplayer', { - _canPlayType: function( containerType, url ) { - // url : Either a String or an Object structured similar a jPlayer media object. ie., As used by setMedia in jPlayer. - // The url object may also contain a solution and supplied property. - - // Define the src object structure here! - - var cType = containerType.toLowerCase(), - srcObj = { - media:{}, - options:{} - }, - rVal = false, // Only a boolean false means it is not supported. - mediaType; - - if(cType !== 'video' && cType !== 'audio') { - - if(typeof url === 'string') { - // Check it starts with http, so the URL is absolute... Well, it is not a perfect check. - if(/^http.*/i.test(url)) { - mediaType = getMediaType(url); - if(mediaType) { - srcObj.media[mediaType] = url; - srcObj.options.solution = SOLUTION; - srcObj.options.supplied = mediaType; - } - } - } else { - srcObj = url; // Assume the url is an src object. - } - - // Check for Object and appropriate minimum data structure. - if(isObject(srcObj) && isObject(srcObj.media)) { - - if(!isObject(srcObj.options)) { - srcObj.options = {}; - } - - if(!srcObj.options.solution) { - srcObj.options.solution = SOLUTION; - } - - if(!srcObj.options.supplied) { - srcObj.options.supplied = getSupplied(srcObj.media); - } - - // Figure out how jPlayer will play it. - // This may not work properly when both audio and video is supplied. ie., A media player. But it should return truethy and jPlayer can figure it out. - - var solution = srcObj.options.solution.toLowerCase().split(","), // Create the solution array, with prority based on the order of the solution string. - supplied = srcObj.options.supplied.toLowerCase().split(","); // Create the supplied formats array, with prority based on the order of the supplied formats string. - - for(var sol = 0; sol < solution.length; sol++) { - - var solutionType = solution[sol].replace(/^\s+|\s+$/g, ""), //trim - checkingHtml = solutionType === 'html', - checkingFlash = solutionType === 'flash', - mediaElem; - - for(var fmt = 0; fmt < supplied.length; fmt++) { - mediaType = supplied[fmt].replace(/^\s+|\s+$/g, ""); //trim - if(format[mediaType]) { // Check format is valid. - - // Create an HTML5 media element for the type of media. - if(!mediaElem && checkingHtml) { - mediaElem = document.createElement(format[mediaType].media); - } - // See if the HTML5 media element can play the MIME / Codec type. - // Flash also returns the object if the format is playable, so it is truethy, but that html property is false. - // This assumes Flash is available, but that should be dealt with by jPlayer if that happens. - var htmlCanPlay = !!(mediaElem && mediaElem.canPlayType && mediaElem.canPlayType(format[mediaType].codec)), - htmlWillPlay = htmlCanPlay && checkingHtml, - flashWillPlay = format[mediaType].flashCanPlay && checkingFlash; - // The first one found will match what jPlayer uses. - if(htmlWillPlay || flashWillPlay) { - rVal = { - html: htmlWillPlay, - type: mediaType - }; - sol = solution.length; // Exit solution loop - fmt = supplied.length; // Exit supplied loop - } - } - } - } - } - } - return rVal; - }, - // _setup: function( options ) { // Warning: options is deprecated. - _setup: function() { - var media = this, - myPlayer, // The jQuery selector of the jPlayer element. Usually a
    - jPlayerObj, // The jPlayer data instance. For performance and DRY code. - mediaType = 'unknown', - jpMedia = {}, - jpOptions = {}, - ready = false, // Used during init to override the annoying duration dependance in the track event padding during Popcorn's isReady(). ie., We is ready after loadeddata and duration can then be set real value at leisure. - duration = 0, // For the durationchange event with both HTML5 and Flash solutions. Used with 'ready' to keep control during the Popcorn isReady() via loadeddata event. (Duration=0 is bad.) - durationchangeId = null, // A timeout ID used with delayed durationchange event. (Because of the duration=NaN fudge to avoid Popcorn track event corruption.) - canplaythrough = false, - error = null, // The MediaError object. - - dispatchDurationChange = function() { - if(ready) { - if(DEBUG) console.log('Dispatched event : durationchange : ' + duration); - media.dispatchEvent('durationchange'); - } else { - if(DEBUG) console.log('DELAYED EVENT (!ready) : durationchange : ' + duration); - clearTimeout(durationchangeId); // Stop multiple triggers causing multiple timeouts running in parallel. - durationchangeId = setTimeout(dispatchDurationChange, 250); - } - }, - - jPlayerFlashEventsPatch = function() { - - /* Events already supported by jPlayer Flash: - * loadstart - * loadedmetadata (M4A, M4V) - * progress - * play - * pause - * seeking - * seeked - * timeupdate - * ended - * volumechange - * error <- See the custom handler in jPlayerInit() - */ - - /* Events patched: - * loadeddata - * durationchange - * canplaythrough - * playing - */ - - /* Events NOT patched: - * suspend - * abort - * emptied - * stalled - * loadedmetadata (MP3) - * waiting - * canplay - * ratechange - */ - - // Triggering patched events through the jPlayer Object so the events are homogeneous. ie., The contain the event.jPlayer data structure. - - var checkDuration = function(event) { - if(event.jPlayer.status.duration !== duration) { - duration = event.jPlayer.status.duration; - dispatchDurationChange(); - } - }, - - checkCanPlayThrough = function(event) { - if(!canplaythrough && event.jPlayer.status.seekPercent === 100) { - canplaythrough = true; - setTimeout(function() { - if(DEBUG) console.log('Trigger : canplaythrough'); - jPlayerObj._trigger($.jPlayer.event.canplaythrough); - }, 0); - } - }; - - myPlayer.bind($.jPlayer.event.loadstart, function() { - setTimeout(function() { - if(DEBUG) console.log('Trigger : loadeddata'); - jPlayerObj._trigger($.jPlayer.event.loadeddata); - }, 0); - }) - .bind($.jPlayer.event.progress, function(event) { - checkDuration(event); - checkCanPlayThrough(event); - }) - .bind($.jPlayer.event.timeupdate, function(event) { - checkDuration(event); - checkCanPlayThrough(event); - }) - .bind($.jPlayer.event.play, function() { - setTimeout(function() { - if(DEBUG) console.log('Trigger : playing'); - jPlayerObj._trigger($.jPlayer.event.playing); - }, 0); - }); - - if(DEBUG) console.log('Created CUSTOM event handlers for FLASH'); - }, - - jPlayerInit = function() { - (function($) { - - myPlayer = $('#' + media.id); - - if(typeof media.src === 'string') { - mediaType = getMediaType(media.src); - jpMedia[mediaType] = media.src; - jpOptions.supplied = mediaType; - jpOptions.solution = SOLUTION; - } else if(isObject(media.src)) { - jpMedia = isObject(media.src.media) ? media.src.media : {}; - jpOptions = isObject(media.src.options) ? media.src.options : {}; - jpOptions.solution = jpOptions.solution || SOLUTION; - jpOptions.supplied = jpOptions.supplied || getSupplied(media.src.media); - } - - // Allow the swfPath to be set to local server. ie., If the jPlayer Plugin is local and already on the page, then you can also use the local SWF. - jpOptions.swfPath = jpOptions.swfPath || JPLAYER_SWFPATH; - - myPlayer.bind($.jPlayer.event.ready, function(event) { - if(event.jPlayer.flash.used) { - jPlayerFlashEventsPatch(); - } - // Set the media andd load it, so that the Flash solution behaves similar to HTML5 solution. - // This also allows the loadstart event to be used to know jPlayer is ready. - $(this).jPlayer('setMedia', jpMedia).jPlayer('load'); - }); - - // Do not auto-bubble the reserved events, nor the loadeddata and durationchange event, since the duration must be carefully handled when loadeddata event occurs. - // See the duration property code for more details. (Ranting.) - - var reservedEvents = $.jPlayer.reservedEvent + ' loadeddata durationchange', - reservedEvent = reservedEvents.split(/\s+/g); - - // Generate event handlers for all the standard HTML5 media events. (Except durationchange) - - var bindEvent = function(name) { - myPlayer.bind($.jPlayer.event[name], function(event) { - if(DEBUG) console.log('Dispatched event: ' + name + (event && event.jPlayer ? ' (' + event.jPlayer.status.currentTime + 's)' : '')); // Must be after dispatch for some reason on Firefox/Opera - media.dispatchEvent(name); - }); - if(DEBUG) console.log('Created event handler for: ' + name); - }; - - for(var eventName in $.jPlayer.event) { - if($.jPlayer.event.hasOwnProperty(eventName)) { - var nativeEvent = true; - for(var iRes in reservedEvent) { - if(reservedEvent.hasOwnProperty(iRes)) { - if(reservedEvent[iRes] === eventName) { - nativeEvent = false; - break; - } - } - } - if(nativeEvent) { - bindEvent(eventName); - } else { - if(DEBUG) console.log('Skipped auto event handler creation for: ' + eventName); - } - } - } - - myPlayer.bind($.jPlayer.event.loadeddata, function(event) { - if(DEBUG) console.log('Dispatched event: loadeddata' + (event && event.jPlayer ? ' (' + event.jPlayer.status.currentTime + 's)' : '')); - media.dispatchEvent('loadeddata'); - ready = true; - }); - if(DEBUG) console.log('Created CUSTOM event handler for: loadeddata'); - - myPlayer.bind($.jPlayer.event.durationchange, function(event) { - duration = event.jPlayer.status.duration; - dispatchDurationChange(); - }); - if(DEBUG) console.log('Created CUSTOM event handler for: durationchange'); - - // The error event is a special case. Plus jPlayer error event assumes it is a broken URL. (It could also be a decoder error... Or aborted or a Network error.) - myPlayer.bind($.jPlayer.event.error, function(event) { - // Not sure how to handle the error situation. Popcorn does not appear to have the error or error.code property documented here: http://popcornjs.org/popcorn-docs/media-methods/ - // If any error event happens, then something has gone pear shaped. - - error = event.jPlayer.error; // Saving object pointer, not a copy of the object. Possible garbage collection issue... But the player is dead anyway, so don't care. - - if(error.type === $.jPlayer.error.URL) { - error.code = 4; // MEDIA_ERR_SRC_NOT_SUPPORTED since jPlayer makes this assumption. It is the most common error, then the decode error. Never seen either of the other 2 error types occur. - } else { - error.code = 0; // It was a jPlayer error, not an HTML5 media error. - } - - if(DEBUG) console.log('Dispatched event: error'); - if(DEBUG) console.dir(error); - media.dispatchEvent('error'); - }); - if(DEBUG) console.log('Created CUSTOM event handler for: error'); - - Popcorn.player.defineProperty( media, 'error', { - set: function() { - // Read-only property - return error; - }, - get: function() { - return error; - } - }); - - Popcorn.player.defineProperty( media, 'currentTime', { - set: function( val ) { - if(jPlayerObj.status.paused) { - myPlayer.jPlayer('pause', val); - } else { - myPlayer.jPlayer('play', val); - } - return val; - }, - get: function() { - return jPlayerObj.status.currentTime; - } - }); - - /* The joy of duration and the loadeddata event isReady() handler - * The duration is assumed to be a NaN or a valid duration. - * jPlayer uses zero instead of a NaN and this screws up the Popcorn track event start/end arrays padding. - * This line here: - * videoDurationPlus = duration != duration ? Number.MAX_VALUE : duration + 1; - * Not sure why it is not simply: - * videoDurationPlus = Number.MAX_VALUE; // Who cares if the padding is close to the real duration? - * So if you trigger loadeddata before the duration is correct, the track event padding is screwed up. (It pads the start, not the end... Well, duration+1 = 0+1 = 1s) - * That line makes the MP3 Flash fallback difficult to setup. The whole MP3 will need to load before the duration is known. - * Planning on using a NaN for duration until a >0 value is found... Except with MP3, where seekPercent must be 100% before setting the duration. - * Why not just use a NaN during init... And then correct the duration later? - */ - - Popcorn.player.defineProperty( media, 'duration', { - set: function() { - // Read-only property - if(ready) { - return duration; - } else { - return NaN; - } - }, - get: function() { - if(ready) { - return duration; // Popcorn has initialized, we can now use duration zero or whatever without fear. - } else { - return NaN; // Keep the duration a NaN until after loadeddata event has occurred. Otherwise Popcorn track event padding is corrupted. - } - } - }); - - Popcorn.player.defineProperty( media, 'muted', { - set: function( val ) { - myPlayer.jPlayer('mute', val); - return jPlayerObj.options.muted; - }, - get: function() { - return jPlayerObj.options.muted; - } - }); - - Popcorn.player.defineProperty( media, 'volume', { - set: function( val ) { - myPlayer.jPlayer('volume', val); - return jPlayerObj.options.volume; - }, - get: function() { - return jPlayerObj.options.volume; - } - }); - - Popcorn.player.defineProperty( media, 'paused', { - set: function() { - // Read-only property - return jPlayerObj.status.paused; - }, - get: function() { - return jPlayerObj.status.paused; - } - }); - - media.play = function() { - myPlayer.jPlayer('play'); - }; - media.pause = function() { - myPlayer.jPlayer('pause'); - }; - - myPlayer.jPlayer(jpOptions); // Instance jPlayer. Note that the options should not have a ready event defined... Kill it by default? - jPlayerObj = myPlayer.data('jPlayer'); - - }(jQuery)); - }, - - jPlayerCheck = function() { - if (!jQuery.jPlayer) { - if (!jPlayerDownloading) { - jPlayerDownloading = true; - Popcorn.getScript(JPLAYER_SCRIPT, function() { - jPlayerDownloading = false; - jPlayerInit(); - }); - } else { - setTimeout(jPlayerCheck, 250); - } - } else { - jPlayerInit(); - } - }, - - jQueryCheck = function() { - if (!window.jQuery) { - if (!jQueryDownloading) { - jQueryDownloading = true; - Popcorn.getScript(JQUERY_SCRIPT, function() { - jQueryDownloading = false; - jPlayerCheck(); - }); - } else { - setTimeout(jQueryCheck, 250); - } - } else { - jPlayerCheck(); - } - }; - - jQueryCheck(); - }, - _teardown: function() { - jQuery('#' + this.id).jPlayer('destroy'); - } - }); - -}(Popcorn)); \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/js/jPlayer/popcorn/popcorn.jplayer.min.js b/libraries/filemanager-9.12.1/js/jPlayer/popcorn/popcorn.jplayer.min.js deleted file mode 100644 index 9b69a13..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/popcorn/popcorn.jplayer.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! Popcorn Player for jPlayer 2.9.2 ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ -!function(a){var b="//code.jquery.com/jquery-1.11.1.min.js",c="//code.jplayer.org/2.9.0/jplayer/jquery.jplayer.min.js",d="//code.jplayer.org/2.9.0/jplayer/jquery.jplayer.swf",e="html,flash",f=!1,g=!1,h=!1,i={mp3:{codec:"audio/mpeg",flashCanPlay:!0,media:"audio"},m4a:{codec:'audio/mp4; codecs="mp4a.40.2"',flashCanPlay:!0,media:"audio"},m3u8a:{codec:'application/vnd.apple.mpegurl; codecs="mp4a.40.2"',flashCanPlay:!1,media:"audio"},m3ua:{codec:"audio/mpegurl",flashCanPlay:!1,media:"audio"},oga:{codec:'audio/ogg; codecs="vorbis, opus"',flashCanPlay:!1,media:"audio"},flac:{codec:"audio/x-flac",flashCanPlay:!1,media:"audio"},wav:{codec:'audio/wav; codecs="1"',flashCanPlay:!1,media:"audio"},webma:{codec:'audio/webm; codecs="vorbis"',flashCanPlay:!1,media:"audio"},fla:{codec:"audio/x-flv",flashCanPlay:!0,media:"audio"},rtmpa:{codec:'audio/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"audio"},m4v:{codec:'video/mp4; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!0,media:"video"},m3u8v:{codec:'application/vnd.apple.mpegurl; codecs="avc1.42E01E, mp4a.40.2"',flashCanPlay:!1,media:"video"},m3uv:{codec:"audio/mpegurl",flashCanPlay:!1,media:"video"},ogv:{codec:'video/ogg; codecs="theora, vorbis"',flashCanPlay:!1,media:"video"},webmv:{codec:'video/webm; codecs="vorbis, vp8"',flashCanPlay:!1,media:"video"},flv:{codec:"video/x-flv",flashCanPlay:!0,media:"video"},rtmpv:{codec:'video/rtmp; codecs="rtmp"',flashCanPlay:!0,media:"video"}},j=function(a){return a&&"object"==typeof a&&a.hasOwnProperty?!0:!1},k=function(a){var b=!1;return/\.mp3$/i.test(a)?b="mp3":/\.mp4$/i.test(a)||/\.m4v$/i.test(a)?b="m4v":/\.m4a$/i.test(a)?b="m4a":/\.ogg$/i.test(a)||/\.oga$/i.test(a)?b="oga":/\.ogv$/i.test(a)?b="ogv":/\.webm$/i.test(a)&&(b="webmv"),b},l=function(a){var b="",c="";if(j(a))for(var d in a)a.hasOwnProperty(d)&&(b+=c+d,c=",");return f&&console.log('getSupplied(): Generated: supplied = "'+b+'"'),b};a.player("jplayer",{_canPlayType:function(a,b){var c,d=a.toLowerCase(),f={media:{},options:{}},g=!1;if("video"!==d&&"audio"!==d&&("string"==typeof b?/^http.*/i.test(b)&&(c=k(b),c&&(f.media[c]=b,f.options.solution=e,f.options.supplied=c)):f=b,j(f)&&j(f.media))){j(f.options)||(f.options={}),f.options.solution||(f.options.solution=e),f.options.supplied||(f.options.supplied=l(f.media));for(var h=f.options.solution.toLowerCase().split(","),m=f.options.supplied.toLowerCase().split(","),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 I?Z5i}0Xq{#rvLx| diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/image/jplayer.blue.monday.seeking.gif b/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/image/jplayer.blue.monday.seeking.gif deleted file mode 100644 index dbd2105ab933f0336e1f732e32a54c6d6a8e1441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3284 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 diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.css b/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.css deleted file mode 100644 index 1a5da65..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.css +++ /dev/null @@ -1,640 +0,0 @@ -/* - * Skin for jPlayer Plugin (jQuery JavaScript Library) - * http://www.jplayer.org - * - * Skin Name: Blue Monday - * - * Copyright (c) 2010-2012 Happyworm Ltd - * Dual licensed under the MIT and GPL licenses. - * - http://www.opensource.org/licenses/mit-license.php - * - http://www.gnu.org/copyleft/gpl.html - * - * Author: Silvia Benvenuti - * Skin Version: 4.3 (jPlayer 2.2.0) - * Date: 19th November 2012 - */ - -div.jp-audio, -div.jp-audio-stream, -div.jp-video { - - /* Edit the font-size to counteract inherited font sizing. - * Eg. 1.25em = 1 / 0.8em - */ - - font-size:1.25em; /* 1.25em for testing in site pages */ /* No parent CSS that can effect the size in the demos ZIP */ - - font-family:Verdana, Arial, sans-serif; - line-height:1.6; - color: #666; - border:1px solid #009be3; - background-color:#eee; -} -div.jp-audio { - width:420px; -} -div.jp-audio-stream { - width:182px; -} -div.jp-video-270p { - width:480px; -} -div.jp-video-360p { - width:640px; -} -div.jp-video-full { - /* Rules for IE6 (full-screen) */ - width:480px; - height:270px; - /* Rules for IE7 (full-screen) - Otherwise the relative container causes other page items that are not position:static (default) to appear over the video/gui. */ - position:static !important; position:relative; -} - -/* The z-index rule is defined in this manner to enable Popcorn plugins that add overlays to video area. EG. Subtitles. */ -div.jp-video-full div div { - z-index:1000; -} - -div.jp-video-full div.jp-jplayer { - top: 0; - left: 0; - position: fixed !important; position: relative; /* Rules for IE6 (full-screen) */ - overflow: hidden; -} - -div.jp-video-full div.jp-gui { - position: fixed !important; position: static; /* Rules for IE6 (full-screen) */ - top: 0; - left: 0; - width:100%; - height:100%; - z-index:1001; /* 1 layer above the others. */ -} - -div.jp-video-full div.jp-interface { - position: absolute !important; position: relative; /* Rules for IE6 (full-screen) */ - bottom: 0; - left: 0; -} - -div.jp-interface { - position: relative; - background-color:#eee; - width:100%; -} - -div.jp-audio div.jp-type-single div.jp-interface { - height:80px; -} -div.jp-audio div.jp-type-playlist div.jp-interface { - height:80px; -} - -div.jp-audio-stream div.jp-type-single div.jp-interface { - height:80px; -} - -div.jp-video div.jp-interface { - border-top:1px solid #009be3; -} - -/* @group CONTROLS */ - -div.jp-controls-holder { - clear: both; - width:440px; - margin:0 auto; - position: relative; - overflow:hidden; - top:-8px; /* This negative value depends on the size of the text in jp-currentTime and jp-duration */ -} - -div.jp-interface ul.jp-controls { - list-style-type:none; - margin:0; - padding: 0; - overflow:hidden; -} - -div.jp-audio ul.jp-controls { - width: 380px; - padding:20px 20px 0 20px; -} - -div.jp-audio-stream ul.jp-controls { - width: 142px; - padding:20px 20px 0 20px; -} - -div.jp-video div.jp-type-single ul.jp-controls { - width: 78px; - margin-left: 200px; -} - -div.jp-video div.jp-type-playlist ul.jp-controls { - width: 134px; - margin-left: 172px; -} -div.jp-video ul.jp-controls, -div.jp-interface ul.jp-controls li { - display:inline; - float: left; -} - -div.jp-interface ul.jp-controls a { - display:block; - overflow:hidden; - text-indent:-9999px; -} -a.jp-play, -a.jp-pause { - width:40px; - height:40px; -} - -a.jp-play { - background: url("jplayer.blue.monday.jpg") 0 0 no-repeat; -} -a.jp-play:hover { - background: url("jplayer.blue.monday.jpg") -41px 0 no-repeat; -} -a.jp-pause { - background: url("jplayer.blue.monday.jpg") 0 -42px no-repeat; - display: none; -} -a.jp-pause:hover { - background: url("jplayer.blue.monday.jpg") -41px -42px no-repeat; -} - -a.jp-stop, a.jp-previous, a.jp-next { - width:28px; - height:28px; - margin-top:6px; -} - -a.jp-stop { - background: url("jplayer.blue.monday.jpg") 0 -83px no-repeat; - margin-left:10px; -} - -a.jp-stop:hover { - background: url("jplayer.blue.monday.jpg") -29px -83px no-repeat; -} - -a.jp-previous { - background: url("jplayer.blue.monday.jpg") 0 -112px no-repeat; -} -a.jp-previous:hover { - background: url("jplayer.blue.monday.jpg") -29px -112px no-repeat; -} - -a.jp-next { - background: url("jplayer.blue.monday.jpg") 0 -141px no-repeat; -} -a.jp-next:hover { - background: url("jplayer.blue.monday.jpg") -29px -141px no-repeat; -} - -/* @end */ - -/* @group progress bar */ - -div.jp-progress { - overflow:hidden; - background-color: #ddd; -} -div.jp-audio div.jp-progress { - position: absolute; - top:32px; - height:15px; -} -div.jp-audio div.jp-type-single div.jp-progress { - left:110px; - width:186px; -} -div.jp-audio div.jp-type-playlist div.jp-progress { - left:166px; - width:130px; -} -div.jp-video div.jp-progress { - top:0px; - left:0px; - width:100%; - height:10px; -} -div.jp-seek-bar { - background: url("jplayer.blue.monday.jpg") 0 -202px repeat-x; - width:0px; - height:100%; - cursor: pointer; -} -div.jp-play-bar { - background: url("jplayer.blue.monday.jpg") 0 -218px repeat-x ; - width:0px; - height:100%; -} - -/* The seeking class is added/removed inside jPlayer */ -div.jp-seeking-bg { - background: url("jplayer.blue.monday.seeking.gif"); -} - -/* @end */ - -/* @group volume controls */ - - -a.jp-mute, -a.jp-unmute, -a.jp-volume-max { - width:18px; - height:15px; - margin-top:12px; -} - -div.jp-audio div.jp-type-single a.jp-mute, -div.jp-audio div.jp-type-single a.jp-unmute { - margin-left: 210px; -} -div.jp-audio div.jp-type-playlist a.jp-mute, -div.jp-audio div.jp-type-playlist a.jp-unmute { - margin-left: 154px; -} - -div.jp-audio-stream div.jp-type-single a.jp-mute, -div.jp-audio-stream div.jp-type-single a.jp-unmute { - margin-left:10px; -} - -div.jp-audio a.jp-volume-max, -div.jp-audio-stream a.jp-volume-max { - margin-left: 56px; -} - -div.jp-video a.jp-mute, -div.jp-video a.jp-unmute, -div.jp-video a.jp-volume-max { - position: absolute; - top:12px; - margin-top:0; -} - -div.jp-video a.jp-mute, -div.jp-video a.jp-unmute { - left: 50px; -} - -div.jp-video a.jp-volume-max { - left: 134px; -} - -a.jp-mute { - background: url("jplayer.blue.monday.jpg") 0 -170px no-repeat; -} -a.jp-mute:hover { - background: url("jplayer.blue.monday.jpg") -19px -170px no-repeat; -} -a.jp-unmute { - background: url("jplayer.blue.monday.jpg") -60px -170px no-repeat; - display: none; -} -a.jp-unmute:hover { - background: url("jplayer.blue.monday.jpg") -79px -170px no-repeat; -} -a.jp-volume-max { - background: url("jplayer.blue.monday.jpg") 0 -186px no-repeat; -} -a.jp-volume-max:hover { - background: url("jplayer.blue.monday.jpg") -19px -186px no-repeat; -} - -div.jp-volume-bar { - position: absolute; - overflow:hidden; - background: url("jplayer.blue.monday.jpg") 0 -250px repeat-x; - width:46px; - height:5px; - cursor: pointer; -} -div.jp-audio div.jp-volume-bar { - top:37px; - left:330px; -} -div.jp-audio-stream div.jp-volume-bar { - top:37px; - left:92px; -} -div.jp-video div.jp-volume-bar { - top:17px; - left:72px; -} -div.jp-volume-bar-value { - background: url("jplayer.blue.monday.jpg") 0 -256px repeat-x; - width:0px; - height:5px; -} - -/* @end */ - -/* @group current time and duration */ - -div.jp-audio div.jp-time-holder { - position:absolute; - top:50px; -} -div.jp-audio div.jp-type-single div.jp-time-holder { - left:110px; - width:186px; -} -div.jp-audio div.jp-type-playlist div.jp-time-holder { - left:166px; - width:130px; -} - -div.jp-current-time, -div.jp-duration { - width:60px; - font-size:.64em; - font-style:oblique; -} -div.jp-current-time { - float: left; - display:inline; -} -div.jp-duration { - float: right; - display:inline; - text-align: right; -} - -div.jp-video div.jp-current-time { - margin-left:20px; -} -div.jp-video div.jp-duration { - margin-right:20px; -} - -/* @end */ - -/* @group playlist */ - -div.jp-title { - font-weight:bold; - text-align:center; -} - -div.jp-title, -div.jp-playlist { - width:100%; - background-color:#ccc; - border-top:1px solid #009be3; -} -div.jp-type-single div.jp-title, -div.jp-type-playlist div.jp-title, -div.jp-type-single div.jp-playlist { - border-top:none; -} -div.jp-title ul, -div.jp-playlist ul { - list-style-type:none; - margin:0; - padding:0 20px; - font-size:.72em; -} - -div.jp-title li { - padding:5px 0; - font-weight:bold; -} -div.jp-playlist li { - padding:5px 0 4px 20px; - border-bottom:1px solid #eee; -} - -div.jp-playlist li div { - display:inline; -} - -/* Note that the first-child (IE6) and last-child (IE6/7/8) selectors do not work on IE */ - -div.jp-type-playlist div.jp-playlist li:last-child { - padding:5px 0 5px 20px; - border-bottom:none; -} -div.jp-type-playlist div.jp-playlist li.jp-playlist-current { - list-style-type:square; - list-style-position:inside; - padding-left:7px; -} -div.jp-type-playlist div.jp-playlist a { - color: #333; - text-decoration: none; -} -div.jp-type-playlist div.jp-playlist a:hover { - color:#0d88c1; -} -div.jp-type-playlist div.jp-playlist a.jp-playlist-current { - color:#0d88c1; -} - -div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove { - float:right; - display:inline; - text-align:right; - margin-right:10px; - font-weight:bold; - color:#666; -} -div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove:hover { - color:#0d88c1; -} -div.jp-type-playlist div.jp-playlist span.jp-free-media { - float:right; - display:inline; - text-align:right; - margin-right:10px; -} -div.jp-type-playlist div.jp-playlist span.jp-free-media a{ - color:#666; -} -div.jp-type-playlist div.jp-playlist span.jp-free-media a:hover{ - color:#0d88c1; -} -span.jp-artist { - font-size:.8em; - color:#666; -} - -/* @end */ - -div.jp-video-play { - width:100%; - overflow:hidden; /* Important for nested negative margins to work in modern browsers */ - cursor:pointer; - background-color:rgba(0,0,0,0); /* Makes IE9 work with the active area over the whole video area. IE6/7/8 only have the button as active area. */ -} -div.jp-video-270p div.jp-video-play { - margin-top:-270px; - height:270px; -} -div.jp-video-360p div.jp-video-play { - margin-top:-360px; - height:360px; -} -div.jp-video-full div.jp-video-play { - height:100%; -} -a.jp-video-play-icon { - position:relative; - display:block; - width: 112px; - height: 100px; - - margin-left:-56px; - margin-top:-50px; - left:50%; - top:50%; - - background: url("jplayer.blue.monday.video.play.png") 0 0 no-repeat; - text-indent:-9999px; -} -div.jp-video-play:hover a.jp-video-play-icon { - background: url("jplayer.blue.monday.video.play.png") 0 -100px no-repeat; -} - - - - - -div.jp-jplayer audio, -div.jp-jplayer { - width:0px; - height:0px; -} - -div.jp-jplayer { - background-color: #000000; -} - - - - - -/* @group TOGGLES */ - -/* The audio toggles are nested inside jp-time-holder */ - -ul.jp-toggles { - list-style-type:none; - padding:0; - margin:0 auto; - overflow:hidden; -} - -div.jp-audio .jp-type-single ul.jp-toggles { - width:25px; -} -div.jp-audio .jp-type-playlist ul.jp-toggles { - width:55px; - margin: 0; - position: absolute; - left: 325px; - top: 50px; -} - -div.jp-video ul.jp-toggles { - margin-top:10px; - width:100px; -} - -ul.jp-toggles li { - display:block; - float:right; -} - -ul.jp-toggles li a { - display:block; - width:25px; - height:18px; - text-indent:-9999px; - line-height:100%; /* need this for IE6 */ -} - -a.jp-full-screen { - background: url("jplayer.blue.monday.jpg") 0 -310px no-repeat; - margin-left: 20px; -} - -a.jp-full-screen:hover { - background: url("jplayer.blue.monday.jpg") -30px -310px no-repeat; -} - -a.jp-restore-screen { - background: url("jplayer.blue.monday.jpg") -60px -310px no-repeat; - margin-left: 20px; -} - -a.jp-restore-screen:hover { - background: url("jplayer.blue.monday.jpg") -90px -310px no-repeat; -} - -a.jp-repeat { - background: url("jplayer.blue.monday.jpg") 0 -290px no-repeat; -} - -a.jp-repeat:hover { - background: url("jplayer.blue.monday.jpg") -30px -290px no-repeat; -} - -a.jp-repeat-off { - background: url("jplayer.blue.monday.jpg") -60px -290px no-repeat; -} - -a.jp-repeat-off:hover { - background: url("jplayer.blue.monday.jpg") -90px -290px no-repeat; -} - -a.jp-shuffle { - background: url("jplayer.blue.monday.jpg") 0 -270px no-repeat; - margin-left: 5px; -} - -a.jp-shuffle:hover { - background: url("jplayer.blue.monday.jpg") -30px -270px no-repeat; -} - -a.jp-shuffle-off { - background: url("jplayer.blue.monday.jpg") -60px -270px no-repeat; - margin-left: 5px; -} - -a.jp-shuffle-off:hover { - background: url("jplayer.blue.monday.jpg") -90px -270px no-repeat; -} - - -/* @end */ - -/* @group NO SOLUTION error feedback */ - -.jp-no-solution { - padding:5px; - font-size:.8em; - background-color:#eee; - border:2px solid #009be3; - color:#000; - display:none; -} - -.jp-no-solution a { - color:#000; -} - -.jp-no-solution span { - font-size:1em; - display:block; - text-align:center; - font-weight:bold; -} - -/* @end */ diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.jpg b/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.jpg deleted file mode 100644 index adab53ff7b6ea893972ce1f2c24323d319b8e5ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23189 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 I?Z5i}0Xq{#rvLx| diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.seeking.gif b/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/jplayer.blue.monday.seeking.gif deleted file mode 100644 index dbd2105ab933f0336e1f732e32a54c6d6a8e1441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3284 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 diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.playlist.html b/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.playlist.html deleted file mode 100644 index 2c2d2dd..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.playlist.html +++ /dev/null @@ -1,42 +0,0 @@ - - diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.single.html b/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.single.html deleted file mode 100644 index 3b3341f..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.single.html +++ /dev/null @@ -1,37 +0,0 @@ - - diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.stream.html b/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.stream.html deleted file mode 100644 index efeb504..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.audio.stream.html +++ /dev/null @@ -1,24 +0,0 @@ - - diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.video.playlist.html b/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.video.playlist.html deleted file mode 100644 index 7ffc474..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.video.playlist.html +++ /dev/null @@ -1,52 +0,0 @@ - diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.video.single.html b/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.video.single.html deleted file mode 100644 index c9a16f8..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/mustache/jplayer.blue.monday.video.single.html +++ /dev/null @@ -1,43 +0,0 @@ - diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/skin.handlebars b/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/skin.handlebars deleted file mode 100644 index b8ec557..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/blue.monday/skin.handlebars +++ /dev/null @@ -1,40 +0,0 @@ - - \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/css/jplayer.pink.flag.css b/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/css/jplayer.pink.flag.css deleted file mode 100644 index 8703b18..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/css/jplayer.pink.flag.css +++ /dev/null @@ -1,572 +0,0 @@ -/*! Pink Flag Skin for jPlayer 2.9.2 ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */ - -/* - * Skin for jPlayer Plugin (jQuery JavaScript Library) - * http://www.jplayer.org - * - * Skin Name: Pink Flag - * - * Copyright (c) 2012 - 2014 Happyworm Ltd - * Licensed under the MIT license. - * - http://www.opensource.org/licenses/mit-license.php - * - * Author: Silvia Benvenuti - * Skin Version: 2.1 (jPlayer 2.8.0) - * Date: 13th November 2014 - */ -.jp-audio *:focus, -.jp-audio-stream *:focus, -.jp-video *:focus { - /* Disable the browser focus highlighting. */ - outline: none; } - -.jp-audio button::-moz-focus-inner, -.jp-audio-stream button::-moz-focus-inner, -.jp-video button::-moz-focus-inner { - /* Disable the browser CSS3 focus highlighting. */ - border: 0; } - -.jp-audio, -.jp-audio-stream, -.jp-video { - font-size: 16px; - font-family: Verdana, Arial, sans-serif; - line-height: 1.6; - color: #fff; - border-top: 1px solid #554461; - border-left: 1px solid #554461; - border-right: 1px solid #180a1f; - border-bottom: 1px solid #180a1f; - background-color: #3a2a45; } - -.jp-audio { - width: 201px; - padding: 20px; } - -.jp-audio-stream { - width: 101px; - padding: 20px 20px 10px 20px; } - -.jp-video-270p { - width: 480px; } - -.jp-video-360p { - width: 640px; } - -.jp-video-full { - /* Rules for IE6 (full-screen) */ - width: 480px; - height: 270px; - /* Rules for IE7 (full-screen) - Otherwise the relative container causes other page items that are not position:static (default) to appear over the video/gui. */ - position: static !important; - position: relative; } - -/* The z-index rule is defined in this manner to enable Popcorn plugins that add overlays to video area. EG. Subtitles. */ -.jp-video-full div div { - z-index: 1000; } - -.jp-video-full .jp-jplayer { - top: 0; - left: 0; - position: fixed !important; - position: relative; - /* Rules for IE6 (full-screen) */ - overflow: hidden; } - -.jp-video-full .jp-gui { - position: fixed !important; - position: static; - /* Rules for IE6 (full-screen) */ - top: 0; - left: 0; - width: 100%; - height: 100%; - z-index: 1001; - /* 1 layer above the others. */ } - -.jp-video-full .jp-interface { - position: absolute !important; - position: relative; - /* Rules for IE6 (full-screen) */ - bottom: 0; - left: 0; } - -.jp-interface { - position: relative; - width: 100%; - background-color: #3a2a45; - /* Required for the full screen */ } - -/* @group CONTROLS */ -.jp-video .jp-controls-holder { - clear: both; - width: 440px; - margin: 0 auto 10px auto; - position: relative; - overflow: hidden; } - -.jp-audio .jp-controls-holder { - height: 80px; } - -.jp-audio-stream .jp-controls-holder { - height: 50px; } - -.jp-controls { - background: url("../image/jplayer.pink.flag.jpg") 0 0 no-repeat; - padding: 1px 0 2px 1px; - overflow: hidden; - width: 201px; - height: 34px; } - -.jp-audio .jp-controls, -.jp-audio-stream .jp-controls { - margin: 0 auto; } - -.jp-audio-stream .jp-controls { - width: 100px; } - -.jp-video .jp-controls { - margin: 0 0 0 115px; - float: left; - display: inline; - /* need this to fix IE6 double margin */ } - -.jp-controls button { - display: block; - float: left; - overflow: hidden; - text-indent: -9999px; - height: 34px; - margin: 0 1px 2px 0; - padding: 0; - border: none; - cursor: pointer; } - -/* @group single player controls */ -.jp-type-single .jp-controls button { - width: 99px; } - -.jp-type-single .jp-play { - background: url("../image/jplayer.pink.flag.jpg") 0px -40px no-repeat; } - -.jp-type-single .jp-play:focus { - background: url("../image/jplayer.pink.flag.jpg") -100px -40px no-repeat; } - -.jp-state-playing .jp-type-single .jp-play { - background: url("../image/jplayer.pink.flag.jpg") 0px -120px no-repeat; } - -.jp-state-playing .jp-type-single .jp-play:focus { - background: url("../image/jplayer.pink.flag.jpg") -100px -120px no-repeat; } - -/* The right border is normally in the ul background image. */ -.jp-audio-stream .jp-play, -.jp-audio-stream .jp-pause { - border-right: 1px solid #180920; } - -.jp-type-single .jp-stop { - background: url("../image/jplayer.pink.flag.jpg") 0px -80px no-repeat; } - -.jp-type-single .jp-stop:focus { - background: url("../image/jplayer.pink.flag.jpg") -100px -80px no-repeat; } - -/* @end */ -/* @group playlist player controls */ -.jp-type-playlist .jp-controls button { - width: 49px; } - -.jp-type-playlist .jp-play { - background: url("../image/jplayer.pink.flag.jpg") -24px -40px no-repeat; } - -.jp-type-playlist .jp-play:focus { - background: url("../image/jplayer.pink.flag.jpg") -124px -40px no-repeat; } - -.jp-state-playing div.jp-type-playlist .jp-play { - background: url("../image/jplayer.pink.flag.jpg") -24px -120px no-repeat; } - -.jp-state-playing div.jp-type-playlist .jp-play:focus { - background: url("../image/jplayer.pink.flag.jpg") -124px -120px no-repeat; } - -.jp-type-playlist .jp-stop { - background: url("../image/jplayer.pink.flag.jpg") -24px -80px no-repeat; } - -.jp-type-playlist .jp-stop:focus { - background: url("../image/jplayer.pink.flag.jpg") -124px -80px no-repeat; } - -.jp-type-playlist .jp-previous { - background: url("../image/jplayer.pink.flag.jpg") -24px -200px no-repeat; } - -.jp-type-playlist .jp-previous:focus { - background: url("../image/jplayer.pink.flag.jpg") -124px -200px no-repeat; } - -.jp-type-playlist .jp-next { - background: url("../image/jplayer.pink.flag.jpg") -24px -160px no-repeat; } - -.jp-type-playlist .jp-next:focus { - background: url("../image/jplayer.pink.flag.jpg") -124px -160px no-repeat; } - -/* @end */ -/* @group TOGGLES */ -.jp-toggles { - padding: 0; - margin: 0 auto; - overflow: hidden; } - -.jp-audio .jp-toggles { - width: 55px; } - -.jp-audio .jp-type-single .jp-toggles { - width: 25px; } - -.jp-video .jp-toggles { - float: left; - width: 105px; - margin: 10px 0 0 15px; } - -.jp-toggles button { - display: block; - float: left; - width: 25px; - height: 18px; - text-indent: -9999px; - line-height: 100%; - /* need this for IE6 */ - border: none; - cursor: pointer; } - -.jp-full-screen { - background: url("../image/jplayer.pink.flag.jpg") 0 -420px no-repeat; - margin-left: 15px; } - -.jp-full-screen:focus { - background: url("../image/jplayer.pink.flag.jpg") -30px -420px no-repeat; } - -.jp-state-full-screen .jp-full-screen { - background: url("../image/jplayer.pink.flag.jpg") -60px -420px no-repeat; } - -.jp-state-full-screen .jp-full-screen:focus { - background: url("../image/jplayer.pink.flag.jpg") -90px -420px no-repeat; } - -.jp-repeat { - background: url("../image/jplayer.pink.flag.jpg") 0 -440px no-repeat; - margin-left: 0; } - -.jp-repeat:focus { - background: url("../image/jplayer.pink.flag.jpg") -30px -440px no-repeat; } - -.jp-state-looped .jp-repeat { - background: url("../image/jplayer.pink.flag.jpg") -60px -440px no-repeat; } - -.jp-state-looped .jp-repeat:focus { - background: url("../image/jplayer.pink.flag.jpg") -90px -440px no-repeat; } - -.jp-shuffle { - background: url("../image/jplayer.pink.flag.jpg") 0 -460px no-repeat; - margin-left: 15px; } - -.jp-shuffle:focus { - background: url("../image/jplayer.pink.flag.jpg") -30px -460px no-repeat; } - -.jp-state-shuffled .jp-shuffle { - background: url("../image/jplayer.pink.flag.jpg") -60px -460px no-repeat; } - -.jp-state-shuffled .jp-shuffle:focus { - background: url("../image/jplayer.pink.flag.jpg") -90px -460px no-repeat; } - -.jp-audio .jp-shuffle { - margin-left: 5px; } - -/* @end */ -/* @group progress bar */ -/* The seeking class is added/removed inside jPlayer */ -div.jp-seeking-bg { - background: url("../image/jplayer.pink.flag.seeking.gif"); } - -.jp-progress { - background: url("../image/jplayer.pink.flag.jpg") 0px -240px no-repeat; - width: 197px; - height: 13px; - padding: 0 2px 2px 2px; - margin-bottom: 4px; - overflow: hidden; } - -div.jp-video .jp-progress { - border-top: 1px solid #180a1f; - border-bottom: 1px solid #554560; - width: 100%; - background-image: none; - padding: 0; } - -.jp-seek-bar { - background: url("../image/jplayer.pink.flag.jpg") 0px -260px repeat-x; - width: 0px; - height: 100%; - overflow: hidden; - cursor: pointer; } - -.jp-play-bar { - background: url("../image/jplayer.pink.flag.jpg") 0px -280px repeat-x; - width: 0px; - height: 100%; - overflow: hidden; } - -/* @end */ -/* @group volume controls */ -.jp-state-no-volume .jp-volume-controls { - display: none; } - -.jp-audio .jp-volume-controls, -.jp-audio-stream .jp-volume-controls { - height: 30px; } - -.jp-volume-controls button { - position: absolute; - display: block; - overflow: hidden; - text-indent: -9999px; - margin: 0; - padding: 0; - width: 16px; - height: 11px; - border: none; - cursor: pointer; } - -.jp-audio .jp-volume-controls .jp-mute, -.jp-audio-stream .jp-volume-controls .jp-mute { - top: -6px; - left: 0; } - -.jp-audio .jp-volume-controls .jp-volume-max, -.jp-audio-stream .jp-volume-controls .jp-volume-max { - top: -6px; - right: 0; } - -.jp-video .jp-volume-controls .jp-mute, -.jp-video .jp-volume-controls .jp-unmute { - left: 0; - top: 14px; } - -.jp-video .jp-volume-controls .jp-volume-max { - left: 84px; - top: 14px; } - -.jp-volume-controls .jp-mute { - background: url("../image/jplayer.pink.flag.jpg") 0px -330px no-repeat; } - -.jp-volume-controls .jp-mute:focus { - background: url("../image/jplayer.pink.flag.jpg") -25px -330px no-repeat; } - -.jp-state-muted .jp-volume-controls .jp-mute { - background: url("../image/jplayer.pink.flag.jpg") -60px -330px no-repeat; } - -.jp-state-muted .jp-volume-controls .jp-mute:focus { - background: url("../image/jplayer.pink.flag.jpg") -85px -330px no-repeat; } - -.jp-volume-controls .jp-volume-max { - background: url("../image/jplayer.pink.flag.jpg") 0px -350px no-repeat; } - -.jp-volume-controls .jp-volume-max:focus { - background: url("../image/jplayer.pink.flag.jpg") -25px -350px no-repeat; } - -.jp-volume-bar { - background: url("../image/jplayer.pink.flag.jpg") 0px -300px repeat-x; - position: absolute; - width: 197px; - height: 4px; - padding: 2px 2px 1px 2px; - overflow: hidden; - cursor: pointer; } - -.jp-audio .jp-interface .jp-volume-bar, -.jp-audio-stream .jp-interface .jp-volume-bar { - top: 10px; - left: 0; } - -.jp-audio-stream .jp-interface .jp-volume-bar { - width: 97px; - border-right: 1px solid #180920; - padding-right: 1px; } - -.jp-video .jp-volume-bar { - top: 0; - left: 0; - width: 95px; - border-right: 1px solid #180920; - padding-right: 1px; - margin-top: 30px; } - -.jp-volume-bar-value { - background: url("../image/jplayer.pink.flag.jpg") 0px -320px repeat-x; - height: 4px; } - -/* @end */ -/* @group current time and duration */ -.jp-current-time, .jp-duration { - width: 70px; - font-size: .5em; - color: #8c7a99; } - -.jp-current-time { - float: left; - cursor: default; } - -.jp-duration { - float: right; - text-align: right; - cursor: pointer; } - -.jp-video .jp-current-time { - padding-left: 20px; } - -.jp-video .jp-duration { - padding-right: 20px; } - -/* @end */ -/* @group playlist */ -.jp-details { - font-size: .7em; - margin: 0; - padding: 0; } - -.jp-details .jp-title { - padding: 0; - margin: 0; - overflow: hidden; - text-align: center; - cursor: default; } - -.jp-video .jp-details { - margin: 0 90px 10px; } - -.jp-playlist ul { - list-style-type: none; - font-size: .7em; - margin: 0; - padding: 0; } - -.jp-video .jp-playlist ul { - margin: 0 20px; } - -.jp-playlist li { - position: relative; - padding: 2px 0; - border-top: 1px solid #554461; - border-bottom: 1px solid #180a1f; - overflow: hidden; } - -/* Note that the first-child (IE6) and last-child (IE6/7/8) selectors do not work on IE */ -div.jp-type-playlist div.jp-playlist li:first-child { - border-top: none; - padding-top: 3px; } - -div.jp-type-playlist div.jp-playlist li:last-child { - border-bottom: none; - padding-bottom: 3px; } - -div.jp-type-playlist div.jp-playlist a { - color: #fff; - text-decoration: none; } - -div.jp-type-playlist div.jp-playlist a:hover { - color: #e892e9; } - -div.jp-type-playlist div.jp-playlist li.jp-playlist-current { - background-color: #26102e; - margin: 0 -20px; - padding: 2px 20px; - border-top: 1px solid #26102e; - border-bottom: 1px solid #26102e; } - -div.jp-type-playlist div.jp-playlist li.jp-playlist-current a { - color: #e892e9; } - -div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove { - float: right; - display: inline; - text-align: right; - margin-left: 10px; - font-weight: bold; - color: #8C7A99; } - -div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove:hover { - color: #E892E9; } - -div.jp-type-playlist div.jp-playlist span.jp-free-media { - float: right; - display: inline; - text-align: right; - color: #8C7A99; } - -div.jp-type-playlist div.jp-playlist span.jp-free-media a { - color: #8C7A99; } - -div.jp-type-playlist div.jp-playlist span.jp-free-media a:hover { - color: #E892E9; } - -span.jp-artist { - font-size: .8em; - color: #8C7A99; } - -/* @end */ -.jp-video .jp-video-play { - width: 100%; - overflow: hidden; - /* Important for nested negative margins to work in modern browsers */ } - -.jp-video-270p .jp-video-play { - margin-top: -270px; - height: 270px; } - -.jp-video-360p .jp-video-play { - margin-top: -360px; - height: 360px; } - -.jp-video-full .jp-video-play { - height: 100%; } - -.jp-video-play-icon { - position: relative; - display: block; - width: 112px; - height: 100px; - margin-left: -56px; - margin-top: -50px; - left: 50%; - top: 50%; - border: none; - cursor: pointer; - background: url("../image/jplayer.pink.flag.video.play.png") 0 0 no-repeat; - text-indent: -9999px; } - -.jp-video-play-icon:focus { - background: url("../image/jplayer.pink.flag.video.play.png") 0 -100px no-repeat; } - -.jp-jplayer audio, -.jp-jplayer { - width: 0px; - height: 0px; } - -.jp-jplayer { - background-color: #000000; } - -/* @group NO SOLUTION error feedback */ -.jp-no-solution { - padding: 5px; - font-size: .8em; - background-color: #3a2a45; - border-top: 2px solid #554461; - border-left: 2px solid #554461; - border-right: 2px solid #180a1f; - border-bottom: 2px solid #180a1f; - color: #FFF; - display: none; } - -.jp-no-solution a { - color: #FFF; } - -.jp-no-solution span { - font-size: 1em; - display: block; - text-align: center; - font-weight: bold; } - -/* @end */ diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/css/jplayer.pink.flag.min.css b/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/css/jplayer.pink.flag.min.css deleted file mode 100644 index 7e0f6de..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/css/jplayer.pink.flag.min.css +++ /dev/null @@ -1 +0,0 @@ -/*! Pink Flag Skin for jPlayer 2.9.2 ~ (c) 2009-2014 Happyworm Ltd ~ MIT License */.jp-audio :focus,.jp-audio-stream :focus,.jp-video :focus{outline:0}.jp-audio button::-moz-focus-inner,.jp-audio-stream button::-moz-focus-inner,.jp-video button::-moz-focus-inner{border:0}.jp-audio,.jp-audio-stream,.jp-video{font-size:16px;font-family:Verdana,Arial,sans-serif;line-height:1.6;color:#fff;border-top:1px solid #554461;border-left:1px solid #554461;border-right:1px solid #180a1f;border-bottom:1px solid #180a1f;background-color:#3a2a45}.jp-audio{width:201px;padding:20px}.jp-audio-stream{width:101px;padding:20px 20px 10px}.jp-video-270p{width:480px}.jp-video-360p{width:640px}.jp-video-full{width:480px;height:270px;position:static!important;position:relative}.jp-video-full div div{z-index:1000}.jp-video-full .jp-jplayer{top:0;left:0;position:fixed!important;position:relative;overflow:hidden}.jp-video-full .jp-gui{position:fixed!important;position:static;top:0;left:0;width:100%;height:100%;z-index:1001}.jp-video-full .jp-interface{position:absolute!important;position:relative;bottom:0;left:0}.jp-interface{position:relative;width:100%;background-color:#3a2a45}.jp-video .jp-controls-holder{clear:both;width:440px;margin:0 auto 10px;position:relative;overflow:hidden}.jp-audio .jp-controls-holder{height:80px}.jp-audio-stream .jp-controls-holder{height:50px}.jp-controls{background:url(../image/jplayer.pink.flag.jpg) no-repeat;padding:1px 0 2px 1px;overflow:hidden;width:201px;height:34px}.jp-audio .jp-controls,.jp-audio-stream .jp-controls{margin:0 auto}.jp-audio-stream .jp-controls{width:100px}.jp-video .jp-controls{margin:0 0 0 115px;float:left;display:inline}.jp-controls button{display:block;float:left;overflow:hidden;text-indent:-9999px;height:34px;margin:0 1px 2px 0;padding:0;border:none;cursor:pointer}.jp-type-single .jp-controls button{width:99px}.jp-type-single .jp-play{background:url(../image/jplayer.pink.flag.jpg) 0 -40px no-repeat}.jp-type-single .jp-play:focus{background:url(../image/jplayer.pink.flag.jpg) -100px -40px no-repeat}.jp-state-playing .jp-type-single .jp-play{background:url(../image/jplayer.pink.flag.jpg) 0 -120px no-repeat}.jp-state-playing .jp-type-single .jp-play:focus{background:url(../image/jplayer.pink.flag.jpg) -100px -120px no-repeat}.jp-audio-stream .jp-pause,.jp-audio-stream .jp-play{border-right:1px solid #180920}.jp-type-single .jp-stop{background:url(../image/jplayer.pink.flag.jpg) 0 -80px no-repeat}.jp-type-single .jp-stop:focus{background:url(../image/jplayer.pink.flag.jpg) -100px -80px no-repeat}.jp-type-playlist .jp-controls button{width:49px}.jp-type-playlist .jp-play{background:url(../image/jplayer.pink.flag.jpg) -24px -40px no-repeat}.jp-type-playlist .jp-play:focus{background:url(../image/jplayer.pink.flag.jpg) -124px -40px no-repeat}.jp-state-playing div.jp-type-playlist .jp-play{background:url(../image/jplayer.pink.flag.jpg) -24px -120px no-repeat}.jp-state-playing div.jp-type-playlist .jp-play:focus{background:url(../image/jplayer.pink.flag.jpg) -124px -120px no-repeat}.jp-type-playlist .jp-stop{background:url(../image/jplayer.pink.flag.jpg) -24px -80px no-repeat}.jp-type-playlist .jp-stop:focus{background:url(../image/jplayer.pink.flag.jpg) -124px -80px no-repeat}.jp-type-playlist .jp-previous{background:url(../image/jplayer.pink.flag.jpg) -24px -200px no-repeat}.jp-type-playlist .jp-previous:focus{background:url(../image/jplayer.pink.flag.jpg) -124px -200px no-repeat}.jp-type-playlist .jp-next{background:url(../image/jplayer.pink.flag.jpg) -24px -160px no-repeat}.jp-type-playlist .jp-next:focus{background:url(../image/jplayer.pink.flag.jpg) -124px -160px no-repeat}.jp-toggles{padding:0;margin:0 auto;overflow:hidden}.jp-audio .jp-toggles{width:55px}.jp-audio .jp-type-single .jp-toggles{width:25px}.jp-video .jp-toggles{float:left;width:105px;margin:10px 0 0 15px}.jp-toggles button{display:block;float:left;width:25px;height:18px;text-indent:-9999px;line-height:100%;border:none;cursor:pointer}.jp-full-screen{background:url(../image/jplayer.pink.flag.jpg) 0 -420px no-repeat;margin-left:15px}.jp-full-screen:focus{background:url(../image/jplayer.pink.flag.jpg) -30px -420px no-repeat}.jp-state-full-screen .jp-full-screen{background:url(../image/jplayer.pink.flag.jpg) -60px -420px no-repeat}.jp-state-full-screen .jp-full-screen:focus{background:url(../image/jplayer.pink.flag.jpg) -90px -420px no-repeat}.jp-repeat{background:url(../image/jplayer.pink.flag.jpg) 0 -440px no-repeat;margin-left:0}.jp-repeat:focus{background:url(../image/jplayer.pink.flag.jpg) -30px -440px no-repeat}.jp-state-looped .jp-repeat{background:url(../image/jplayer.pink.flag.jpg) -60px -440px no-repeat}.jp-state-looped .jp-repeat:focus{background:url(../image/jplayer.pink.flag.jpg) -90px -440px no-repeat}.jp-shuffle{background:url(../image/jplayer.pink.flag.jpg) 0 -460px no-repeat;margin-left:15px}.jp-shuffle:focus{background:url(../image/jplayer.pink.flag.jpg) -30px -460px no-repeat}.jp-state-shuffled .jp-shuffle{background:url(../image/jplayer.pink.flag.jpg) -60px -460px no-repeat}.jp-state-shuffled .jp-shuffle:focus{background:url(../image/jplayer.pink.flag.jpg) -90px -460px no-repeat}.jp-audio .jp-shuffle{margin-left:5px}div.jp-seeking-bg{background:url(../image/jplayer.pink.flag.seeking.gif)}.jp-progress{background:url(../image/jplayer.pink.flag.jpg) 0 -240px no-repeat;width:197px;height:13px;padding:0 2px 2px;margin-bottom:4px;overflow:hidden}div.jp-video .jp-progress{border-top:1px solid #180a1f;border-bottom:1px solid #554560;width:100%;background-image:none;padding:0}.jp-seek-bar{background:url(../image/jplayer.pink.flag.jpg) 0 -260px repeat-x;width:0;height:100%;overflow:hidden;cursor:pointer}.jp-play-bar{background:url(../image/jplayer.pink.flag.jpg) 0 -280px repeat-x;width:0;height:100%;overflow:hidden}.jp-state-no-volume .jp-volume-controls{display:none}.jp-audio .jp-volume-controls,.jp-audio-stream .jp-volume-controls{height:30px}.jp-volume-controls button{position:absolute;display:block;overflow:hidden;text-indent:-9999px;margin:0;padding:0;width:16px;height:11px;border:none;cursor:pointer}.jp-audio .jp-volume-controls .jp-mute,.jp-audio-stream .jp-volume-controls .jp-mute{top:-6px;left:0}.jp-audio .jp-volume-controls .jp-volume-max,.jp-audio-stream .jp-volume-controls .jp-volume-max{top:-6px;right:0}.jp-video .jp-volume-controls .jp-mute,.jp-video .jp-volume-controls .jp-unmute{left:0;top:14px}.jp-video .jp-volume-controls .jp-volume-max{left:84px;top:14px}.jp-volume-controls .jp-mute{background:url(../image/jplayer.pink.flag.jpg) 0 -330px no-repeat}.jp-volume-controls .jp-mute:focus{background:url(../image/jplayer.pink.flag.jpg) -25px -330px no-repeat}.jp-state-muted .jp-volume-controls .jp-mute{background:url(../image/jplayer.pink.flag.jpg) -60px -330px no-repeat}.jp-state-muted .jp-volume-controls .jp-mute:focus{background:url(../image/jplayer.pink.flag.jpg) -85px -330px no-repeat}.jp-volume-controls .jp-volume-max{background:url(../image/jplayer.pink.flag.jpg) 0 -350px no-repeat}.jp-volume-controls .jp-volume-max:focus{background:url(../image/jplayer.pink.flag.jpg) -25px -350px no-repeat}.jp-volume-bar{background:url(../image/jplayer.pink.flag.jpg) 0 -300px repeat-x;position:absolute;width:197px;height:4px;padding:2px 2px 1px;overflow:hidden;cursor:pointer}.jp-audio .jp-interface .jp-volume-bar,.jp-audio-stream .jp-interface .jp-volume-bar{top:10px;left:0}.jp-audio-stream .jp-interface .jp-volume-bar{width:97px;border-right:1px solid #180920;padding-right:1px}.jp-video .jp-volume-bar{top:0;left:0;width:95px;border-right:1px solid #180920;padding-right:1px;margin-top:30px}.jp-volume-bar-value{background:url(../image/jplayer.pink.flag.jpg) 0 -320px repeat-x;height:4px}.jp-current-time,.jp-duration{width:70px;font-size:.5em;color:#8c7a99}.jp-current-time{float:left;cursor:default}.jp-duration{float:right;text-align:right;cursor:pointer}.jp-video .jp-current-time{padding-left:20px}.jp-video .jp-duration{padding-right:20px}.jp-details{font-size:.7em;margin:0;padding:0}.jp-details .jp-title{padding:0;margin:0;overflow:hidden;text-align:center;cursor:default}.jp-video .jp-details{margin:0 90px 10px}.jp-playlist ul{list-style-type:none;font-size:.7em;margin:0;padding:0}.jp-video .jp-playlist ul{margin:0 20px}.jp-playlist li{position:relative;padding:2px 0;border-top:1px solid #554461;border-bottom:1px solid #180a1f;overflow:hidden}div.jp-type-playlist div.jp-playlist li:first-child{border-top:none;padding-top:3px}div.jp-type-playlist div.jp-playlist li:last-child{border-bottom:none;padding-bottom:3px}div.jp-type-playlist div.jp-playlist a{color:#fff;text-decoration:none}div.jp-type-playlist div.jp-playlist a:hover{color:#e892e9}div.jp-type-playlist div.jp-playlist li.jp-playlist-current{background-color:#26102e;margin:0 -20px;padding:2px 20px;border-top:1px solid #26102e;border-bottom:1px solid #26102e}div.jp-type-playlist div.jp-playlist li.jp-playlist-current a{color:#e892e9}div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove{float:right;display:inline;text-align:right;margin-left:10px;font-weight:700;color:#8C7A99}div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove:hover{color:#E892E9}div.jp-type-playlist div.jp-playlist span.jp-free-media{float:right;display:inline;text-align:right;color:#8C7A99}div.jp-type-playlist div.jp-playlist span.jp-free-media a{color:#8C7A99}div.jp-type-playlist div.jp-playlist span.jp-free-media a:hover{color:#E892E9}span.jp-artist{font-size:.8em;color:#8C7A99}.jp-video .jp-video-play{width:100%;overflow:hidden}.jp-video-270p .jp-video-play{margin-top:-270px;height:270px}.jp-video-360p .jp-video-play{margin-top:-360px;height:360px}.jp-video-full .jp-video-play{height:100%}.jp-video-play-icon{position:relative;display:block;width:112px;height:100px;margin-left:-56px;margin-top:-50px;left:50%;top:50%;border:none;cursor:pointer;background:url(../image/jplayer.pink.flag.video.play.png) no-repeat;text-indent:-9999px}.jp-video-play-icon:focus{background:url(../image/jplayer.pink.flag.video.play.png) 0 -100px no-repeat}.jp-jplayer,.jp-jplayer audio{width:0;height:0}.jp-jplayer{background-color:#000}.jp-no-solution{padding:5px;font-size:.8em;background-color:#3a2a45;border-top:2px solid #554461;border-left:2px solid #554461;border-right:2px solid #180a1f;border-bottom:2px solid #180a1f;color:#FFF;display:none}.jp-no-solution a{color:#FFF}.jp-no-solution span{font-size:1em;display:block;text-align:center;font-weight:700} \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/image/jplayer.pink.flag.jpg b/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/image/jplayer.pink.flag.jpg deleted file mode 100644 index 0c084e298844644faab531e0bec15452795f14ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18426 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 diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/image/jplayer.pink.flag.seeking.gif b/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/image/jplayer.pink.flag.seeking.gif deleted file mode 100644 index 754ceb167377fd304f0bd596d7458277fe47265f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3284 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 diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.playlist.html b/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.playlist.html deleted file mode 100644 index f64d5f9..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.playlist.html +++ /dev/null @@ -1,42 +0,0 @@ - - diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.single.html b/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.single.html deleted file mode 100644 index 83662d7..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.single.html +++ /dev/null @@ -1,37 +0,0 @@ - - diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.stream.html b/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.stream.html deleted file mode 100644 index f16c74f..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.audio.stream.html +++ /dev/null @@ -1,24 +0,0 @@ - - diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.video.playlist.html b/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.video.playlist.html deleted file mode 100644 index 1cd16ca..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.video.playlist.html +++ /dev/null @@ -1,52 +0,0 @@ - diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.video.single.html b/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.video.single.html deleted file mode 100644 index 519c147..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin/pink.flag/mustache/jplayer.pink.flag.video.single.html +++ /dev/null @@ -1,43 +0,0 @@ - diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.css b/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.css deleted file mode 100644 index 1a5da65..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.css +++ /dev/null @@ -1,640 +0,0 @@ -/* - * Skin for jPlayer Plugin (jQuery JavaScript Library) - * http://www.jplayer.org - * - * Skin Name: Blue Monday - * - * Copyright (c) 2010-2012 Happyworm Ltd - * Dual licensed under the MIT and GPL licenses. - * - http://www.opensource.org/licenses/mit-license.php - * - http://www.gnu.org/copyleft/gpl.html - * - * Author: Silvia Benvenuti - * Skin Version: 4.3 (jPlayer 2.2.0) - * Date: 19th November 2012 - */ - -div.jp-audio, -div.jp-audio-stream, -div.jp-video { - - /* Edit the font-size to counteract inherited font sizing. - * Eg. 1.25em = 1 / 0.8em - */ - - font-size:1.25em; /* 1.25em for testing in site pages */ /* No parent CSS that can effect the size in the demos ZIP */ - - font-family:Verdana, Arial, sans-serif; - line-height:1.6; - color: #666; - border:1px solid #009be3; - background-color:#eee; -} -div.jp-audio { - width:420px; -} -div.jp-audio-stream { - width:182px; -} -div.jp-video-270p { - width:480px; -} -div.jp-video-360p { - width:640px; -} -div.jp-video-full { - /* Rules for IE6 (full-screen) */ - width:480px; - height:270px; - /* Rules for IE7 (full-screen) - Otherwise the relative container causes other page items that are not position:static (default) to appear over the video/gui. */ - position:static !important; position:relative; -} - -/* The z-index rule is defined in this manner to enable Popcorn plugins that add overlays to video area. EG. Subtitles. */ -div.jp-video-full div div { - z-index:1000; -} - -div.jp-video-full div.jp-jplayer { - top: 0; - left: 0; - position: fixed !important; position: relative; /* Rules for IE6 (full-screen) */ - overflow: hidden; -} - -div.jp-video-full div.jp-gui { - position: fixed !important; position: static; /* Rules for IE6 (full-screen) */ - top: 0; - left: 0; - width:100%; - height:100%; - z-index:1001; /* 1 layer above the others. */ -} - -div.jp-video-full div.jp-interface { - position: absolute !important; position: relative; /* Rules for IE6 (full-screen) */ - bottom: 0; - left: 0; -} - -div.jp-interface { - position: relative; - background-color:#eee; - width:100%; -} - -div.jp-audio div.jp-type-single div.jp-interface { - height:80px; -} -div.jp-audio div.jp-type-playlist div.jp-interface { - height:80px; -} - -div.jp-audio-stream div.jp-type-single div.jp-interface { - height:80px; -} - -div.jp-video div.jp-interface { - border-top:1px solid #009be3; -} - -/* @group CONTROLS */ - -div.jp-controls-holder { - clear: both; - width:440px; - margin:0 auto; - position: relative; - overflow:hidden; - top:-8px; /* This negative value depends on the size of the text in jp-currentTime and jp-duration */ -} - -div.jp-interface ul.jp-controls { - list-style-type:none; - margin:0; - padding: 0; - overflow:hidden; -} - -div.jp-audio ul.jp-controls { - width: 380px; - padding:20px 20px 0 20px; -} - -div.jp-audio-stream ul.jp-controls { - width: 142px; - padding:20px 20px 0 20px; -} - -div.jp-video div.jp-type-single ul.jp-controls { - width: 78px; - margin-left: 200px; -} - -div.jp-video div.jp-type-playlist ul.jp-controls { - width: 134px; - margin-left: 172px; -} -div.jp-video ul.jp-controls, -div.jp-interface ul.jp-controls li { - display:inline; - float: left; -} - -div.jp-interface ul.jp-controls a { - display:block; - overflow:hidden; - text-indent:-9999px; -} -a.jp-play, -a.jp-pause { - width:40px; - height:40px; -} - -a.jp-play { - background: url("jplayer.blue.monday.jpg") 0 0 no-repeat; -} -a.jp-play:hover { - background: url("jplayer.blue.monday.jpg") -41px 0 no-repeat; -} -a.jp-pause { - background: url("jplayer.blue.monday.jpg") 0 -42px no-repeat; - display: none; -} -a.jp-pause:hover { - background: url("jplayer.blue.monday.jpg") -41px -42px no-repeat; -} - -a.jp-stop, a.jp-previous, a.jp-next { - width:28px; - height:28px; - margin-top:6px; -} - -a.jp-stop { - background: url("jplayer.blue.monday.jpg") 0 -83px no-repeat; - margin-left:10px; -} - -a.jp-stop:hover { - background: url("jplayer.blue.monday.jpg") -29px -83px no-repeat; -} - -a.jp-previous { - background: url("jplayer.blue.monday.jpg") 0 -112px no-repeat; -} -a.jp-previous:hover { - background: url("jplayer.blue.monday.jpg") -29px -112px no-repeat; -} - -a.jp-next { - background: url("jplayer.blue.monday.jpg") 0 -141px no-repeat; -} -a.jp-next:hover { - background: url("jplayer.blue.monday.jpg") -29px -141px no-repeat; -} - -/* @end */ - -/* @group progress bar */ - -div.jp-progress { - overflow:hidden; - background-color: #ddd; -} -div.jp-audio div.jp-progress { - position: absolute; - top:32px; - height:15px; -} -div.jp-audio div.jp-type-single div.jp-progress { - left:110px; - width:186px; -} -div.jp-audio div.jp-type-playlist div.jp-progress { - left:166px; - width:130px; -} -div.jp-video div.jp-progress { - top:0px; - left:0px; - width:100%; - height:10px; -} -div.jp-seek-bar { - background: url("jplayer.blue.monday.jpg") 0 -202px repeat-x; - width:0px; - height:100%; - cursor: pointer; -} -div.jp-play-bar { - background: url("jplayer.blue.monday.jpg") 0 -218px repeat-x ; - width:0px; - height:100%; -} - -/* The seeking class is added/removed inside jPlayer */ -div.jp-seeking-bg { - background: url("jplayer.blue.monday.seeking.gif"); -} - -/* @end */ - -/* @group volume controls */ - - -a.jp-mute, -a.jp-unmute, -a.jp-volume-max { - width:18px; - height:15px; - margin-top:12px; -} - -div.jp-audio div.jp-type-single a.jp-mute, -div.jp-audio div.jp-type-single a.jp-unmute { - margin-left: 210px; -} -div.jp-audio div.jp-type-playlist a.jp-mute, -div.jp-audio div.jp-type-playlist a.jp-unmute { - margin-left: 154px; -} - -div.jp-audio-stream div.jp-type-single a.jp-mute, -div.jp-audio-stream div.jp-type-single a.jp-unmute { - margin-left:10px; -} - -div.jp-audio a.jp-volume-max, -div.jp-audio-stream a.jp-volume-max { - margin-left: 56px; -} - -div.jp-video a.jp-mute, -div.jp-video a.jp-unmute, -div.jp-video a.jp-volume-max { - position: absolute; - top:12px; - margin-top:0; -} - -div.jp-video a.jp-mute, -div.jp-video a.jp-unmute { - left: 50px; -} - -div.jp-video a.jp-volume-max { - left: 134px; -} - -a.jp-mute { - background: url("jplayer.blue.monday.jpg") 0 -170px no-repeat; -} -a.jp-mute:hover { - background: url("jplayer.blue.monday.jpg") -19px -170px no-repeat; -} -a.jp-unmute { - background: url("jplayer.blue.monday.jpg") -60px -170px no-repeat; - display: none; -} -a.jp-unmute:hover { - background: url("jplayer.blue.monday.jpg") -79px -170px no-repeat; -} -a.jp-volume-max { - background: url("jplayer.blue.monday.jpg") 0 -186px no-repeat; -} -a.jp-volume-max:hover { - background: url("jplayer.blue.monday.jpg") -19px -186px no-repeat; -} - -div.jp-volume-bar { - position: absolute; - overflow:hidden; - background: url("jplayer.blue.monday.jpg") 0 -250px repeat-x; - width:46px; - height:5px; - cursor: pointer; -} -div.jp-audio div.jp-volume-bar { - top:37px; - left:330px; -} -div.jp-audio-stream div.jp-volume-bar { - top:37px; - left:92px; -} -div.jp-video div.jp-volume-bar { - top:17px; - left:72px; -} -div.jp-volume-bar-value { - background: url("jplayer.blue.monday.jpg") 0 -256px repeat-x; - width:0px; - height:5px; -} - -/* @end */ - -/* @group current time and duration */ - -div.jp-audio div.jp-time-holder { - position:absolute; - top:50px; -} -div.jp-audio div.jp-type-single div.jp-time-holder { - left:110px; - width:186px; -} -div.jp-audio div.jp-type-playlist div.jp-time-holder { - left:166px; - width:130px; -} - -div.jp-current-time, -div.jp-duration { - width:60px; - font-size:.64em; - font-style:oblique; -} -div.jp-current-time { - float: left; - display:inline; -} -div.jp-duration { - float: right; - display:inline; - text-align: right; -} - -div.jp-video div.jp-current-time { - margin-left:20px; -} -div.jp-video div.jp-duration { - margin-right:20px; -} - -/* @end */ - -/* @group playlist */ - -div.jp-title { - font-weight:bold; - text-align:center; -} - -div.jp-title, -div.jp-playlist { - width:100%; - background-color:#ccc; - border-top:1px solid #009be3; -} -div.jp-type-single div.jp-title, -div.jp-type-playlist div.jp-title, -div.jp-type-single div.jp-playlist { - border-top:none; -} -div.jp-title ul, -div.jp-playlist ul { - list-style-type:none; - margin:0; - padding:0 20px; - font-size:.72em; -} - -div.jp-title li { - padding:5px 0; - font-weight:bold; -} -div.jp-playlist li { - padding:5px 0 4px 20px; - border-bottom:1px solid #eee; -} - -div.jp-playlist li div { - display:inline; -} - -/* Note that the first-child (IE6) and last-child (IE6/7/8) selectors do not work on IE */ - -div.jp-type-playlist div.jp-playlist li:last-child { - padding:5px 0 5px 20px; - border-bottom:none; -} -div.jp-type-playlist div.jp-playlist li.jp-playlist-current { - list-style-type:square; - list-style-position:inside; - padding-left:7px; -} -div.jp-type-playlist div.jp-playlist a { - color: #333; - text-decoration: none; -} -div.jp-type-playlist div.jp-playlist a:hover { - color:#0d88c1; -} -div.jp-type-playlist div.jp-playlist a.jp-playlist-current { - color:#0d88c1; -} - -div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove { - float:right; - display:inline; - text-align:right; - margin-right:10px; - font-weight:bold; - color:#666; -} -div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove:hover { - color:#0d88c1; -} -div.jp-type-playlist div.jp-playlist span.jp-free-media { - float:right; - display:inline; - text-align:right; - margin-right:10px; -} -div.jp-type-playlist div.jp-playlist span.jp-free-media a{ - color:#666; -} -div.jp-type-playlist div.jp-playlist span.jp-free-media a:hover{ - color:#0d88c1; -} -span.jp-artist { - font-size:.8em; - color:#666; -} - -/* @end */ - -div.jp-video-play { - width:100%; - overflow:hidden; /* Important for nested negative margins to work in modern browsers */ - cursor:pointer; - background-color:rgba(0,0,0,0); /* Makes IE9 work with the active area over the whole video area. IE6/7/8 only have the button as active area. */ -} -div.jp-video-270p div.jp-video-play { - margin-top:-270px; - height:270px; -} -div.jp-video-360p div.jp-video-play { - margin-top:-360px; - height:360px; -} -div.jp-video-full div.jp-video-play { - height:100%; -} -a.jp-video-play-icon { - position:relative; - display:block; - width: 112px; - height: 100px; - - margin-left:-56px; - margin-top:-50px; - left:50%; - top:50%; - - background: url("jplayer.blue.monday.video.play.png") 0 0 no-repeat; - text-indent:-9999px; -} -div.jp-video-play:hover a.jp-video-play-icon { - background: url("jplayer.blue.monday.video.play.png") 0 -100px no-repeat; -} - - - - - -div.jp-jplayer audio, -div.jp-jplayer { - width:0px; - height:0px; -} - -div.jp-jplayer { - background-color: #000000; -} - - - - - -/* @group TOGGLES */ - -/* The audio toggles are nested inside jp-time-holder */ - -ul.jp-toggles { - list-style-type:none; - padding:0; - margin:0 auto; - overflow:hidden; -} - -div.jp-audio .jp-type-single ul.jp-toggles { - width:25px; -} -div.jp-audio .jp-type-playlist ul.jp-toggles { - width:55px; - margin: 0; - position: absolute; - left: 325px; - top: 50px; -} - -div.jp-video ul.jp-toggles { - margin-top:10px; - width:100px; -} - -ul.jp-toggles li { - display:block; - float:right; -} - -ul.jp-toggles li a { - display:block; - width:25px; - height:18px; - text-indent:-9999px; - line-height:100%; /* need this for IE6 */ -} - -a.jp-full-screen { - background: url("jplayer.blue.monday.jpg") 0 -310px no-repeat; - margin-left: 20px; -} - -a.jp-full-screen:hover { - background: url("jplayer.blue.monday.jpg") -30px -310px no-repeat; -} - -a.jp-restore-screen { - background: url("jplayer.blue.monday.jpg") -60px -310px no-repeat; - margin-left: 20px; -} - -a.jp-restore-screen:hover { - background: url("jplayer.blue.monday.jpg") -90px -310px no-repeat; -} - -a.jp-repeat { - background: url("jplayer.blue.monday.jpg") 0 -290px no-repeat; -} - -a.jp-repeat:hover { - background: url("jplayer.blue.monday.jpg") -30px -290px no-repeat; -} - -a.jp-repeat-off { - background: url("jplayer.blue.monday.jpg") -60px -290px no-repeat; -} - -a.jp-repeat-off:hover { - background: url("jplayer.blue.monday.jpg") -90px -290px no-repeat; -} - -a.jp-shuffle { - background: url("jplayer.blue.monday.jpg") 0 -270px no-repeat; - margin-left: 5px; -} - -a.jp-shuffle:hover { - background: url("jplayer.blue.monday.jpg") -30px -270px no-repeat; -} - -a.jp-shuffle-off { - background: url("jplayer.blue.monday.jpg") -60px -270px no-repeat; - margin-left: 5px; -} - -a.jp-shuffle-off:hover { - background: url("jplayer.blue.monday.jpg") -90px -270px no-repeat; -} - - -/* @end */ - -/* @group NO SOLUTION error feedback */ - -.jp-no-solution { - padding:5px; - font-size:.8em; - background-color:#eee; - border:2px solid #009be3; - color:#000; - display:none; -} - -.jp-no-solution a { - color:#000; -} - -.jp-no-solution span { - font-size:1em; - display:block; - text-align:center; - font-weight:bold; -} - -/* @end */ diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.jpg b/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.jpg deleted file mode 100644 index adab53ff7b6ea893972ce1f2c24323d319b8e5ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23189 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 I?Z5i}0Xq{#rvLx| diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.seeking.gif b/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/jplayer.blue.monday.seeking.gif deleted file mode 100644 index dbd2105ab933f0336e1f732e32a54c6d6a8e1441..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3284 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 diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/skin.handlebars b/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/skin.handlebars deleted file mode 100644 index b8ec557..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/blue.monday/skin.handlebars +++ /dev/null @@ -1,40 +0,0 @@ - - \ No newline at end of file diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.css b/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.css deleted file mode 100644 index bafe3ff..0000000 --- a/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.css +++ /dev/null @@ -1,670 +0,0 @@ -/* - * Skin for jPlayer Plugin (jQuery JavaScript Library) - * http://www.jplayer.org - * - * Skin Name: Pink Flag - * - * Copyright (c) 2012 Happyworm Ltd - * Dual licensed under the MIT and GPL licenses. - * - http://www.opensource.org/licenses/mit-license.php - * - http://www.gnu.org/copyleft/gpl.html - * - * Author: Silvia Benvenuti - * Skin Version: 1.2 (jPlayer 2.2.0) - * Date: 22nd October 2012 - */ - -div.jp-audio, -div.jp-audio-stream, -div.jp-video { - - /* Edit the font-size to counteract inherited font sizing. - * Eg. 1.25em = 1 / 0.8em - */ - - font-size:1.25em; /* 1.25em for testing in site pages */ /* No parent CSS that can effect the size in the demos ZIP */ - - font-family:Verdana, Arial, sans-serif; - line-height:1.6; - color: #fff; - border-top:1px solid #554461; - border-left:1px solid #554461; - border-right:1px solid #180a1f; - border-bottom:1px solid #180a1f; - background-color:#3a2a45; -} -div.jp-audio { - width:201px; - padding:20px; -} - -div.jp-audio-stream { - width:101px; - padding:20px 20px 10px 20px; -} - -div.jp-video-270p { - width:480px; -} -div.jp-video-360p { - width:640px; -} -div.jp-video-full { - /* Rules for IE6 (full-screen) */ - width:480px; - height:270px; - /* Rules for IE7 (full-screen) - Otherwise the relative container causes other page items that are not position:static (default) to appear over the video/gui. */ - position:static !important; position:relative; -} - -/* The z-index rule is defined in this manner to enable Popcorn plugins that add overlays to video area. EG. Subtitles. */ -div.jp-video-full div div { - z-index:1000; -} - -div.jp-video-full div.jp-jplayer { - top: 0; - left: 0; - position: fixed !important; position: relative; /* Rules for IE6 (full-screen) */ - overflow: hidden; -} - -div.jp-video-full div.jp-gui { - position: fixed !important; position: static; /* Rules for IE6 (full-screen) */ - top: 0; - left: 0; - width:100%; - height:100%; - z-index:1001; /* 1 layer above the others. */ -} -div.jp-video-full div.jp-interface { - position: absolute !important; position: relative; /* Rules for IE6 (full-screen) */ - bottom: 0; - left: 0; -} - -div.jp-interface { - position: relative; - width:100%; - background-color:#3a2a45; /* Required for the full screen */ -} - - -div.jp-audio .jp-interface { - height: 80px; - padding-top:30px; -} - -div.jp-audio-stream .jp-interface { - height: 50px; - padding-top:30px; -} - -/* @group CONTROLS */ - -div.jp-controls-holder { - clear: both; - width:440px; - margin:0 auto 10px auto; - position: relative; - overflow:hidden; -} - -div.jp-interface ul.jp-controls { - background: url("jplayer.pink.flag.jpg") 0 0 no-repeat; - list-style-type:none; - padding: 1px 0 2px 1px; - overflow:hidden; - width: 201px; - height: 34px; -} - -div.jp-audio ul.jp-controls, -div.jp-audio-stream ul.jp-controls { - margin:0 auto; -} - -div.jp-audio-stream ul.jp-controls { - width: 100px; -} - -div.jp-video ul.jp-controls { - margin:0 0 0 115px; - float:left; - display:inline; /* need this to fix IE6 double margin */ -} - -div.jp-interface ul.jp-controls li { - display:inline; - float: left; -} -div.jp-interface ul.jp-controls a { - display:block; - overflow:hidden; - text-indent:-9999px; - height: 34px; - margin: 0 1px 2px 0; - padding: 0; -} - - -/* @group single player controls */ - -div.jp-type-single .jp-controls li a{ - width: 99px; -} - -div.jp-type-single .jp-play { - background: url("jplayer.pink.flag.jpg") 0px -40px no-repeat; -} - -div.jp-type-single .jp-play:hover { - background: url("jplayer.pink.flag.jpg") -100px -40px no-repeat; -} - -div.jp-type-single .jp-pause { - background: url("jplayer.pink.flag.jpg") 0px -120px no-repeat; -} - -div.jp-type-single .jp-pause:hover { - background: url("jplayer.pink.flag.jpg") -100px -120px no-repeat; -} - -/* The right border is normally in the ul background image. */ -div.jp-audio-stream .jp-play, -div.jp-audio-stream .jp-pause { - border-right:1px solid #180920; -} - -div.jp-type-single .jp-stop { - background: url("jplayer.pink.flag.jpg") 0px -80px no-repeat; -} - -div.jp-type-single .jp-stop:hover { - background: url("jplayer.pink.flag.jpg") -100px -80px no-repeat; -} - -/* @end */ - -/* @group playlist player controls */ - -div.jp-type-playlist .jp-controls li a{ - width: 49px; -} - -div.jp-type-playlist .jp-play { - background: url("jplayer.pink.flag.jpg") -24px -40px no-repeat; -} - -div.jp-type-playlist .jp-play:hover { - background: url("jplayer.pink.flag.jpg") -124px -40px no-repeat; -} - -div.jp-type-playlist .jp-pause { - background: url("jplayer.pink.flag.jpg") -24px -120px no-repeat; -} - -div.jp-type-playlist .jp-pause:hover { - background: url("jplayer.pink.flag.jpg") -124px -120px no-repeat; -} - -div.jp-type-playlist .jp-stop { - background: url("jplayer.pink.flag.jpg") -24px -80px no-repeat; -} - -div.jp-type-playlist .jp-stop:hover { - background: url("jplayer.pink.flag.jpg") -124px -80px no-repeat; -} - -div.jp-type-playlist .jp-previous { - background: url("jplayer.pink.flag.jpg") -24px -200px no-repeat; -} - -div.jp-type-playlist .jp-previous:hover { - background: url("jplayer.pink.flag.jpg") -124px -200px no-repeat; -} - -div.jp-type-playlist .jp-next { - background: url("jplayer.pink.flag.jpg") -24px -160px no-repeat; -} - -div.jp-type-playlist .jp-next:hover { - background: url("jplayer.pink.flag.jpg") -124px -160px no-repeat; -} - -/* @end */ - -/* @end */ - - - - -/* @group TOGGLES */ - -ul.jp-toggles { - list-style-type:none; - padding:0; - margin:0 auto; - overflow:hidden; -} - -div.jp-audio ul.jp-toggles { - width:55px; -} - -div.jp-audio .jp-type-single ul.jp-toggles { - width:25px; -} - -div.jp-video ul.jp-toggles { - width:100px; - margin-top: 10px; -} - -ul.jp-toggles li{ - display:block; - float:right; -} - -ul.jp-toggles li a{ - display:block; - width:25px; - height:18px; - text-indent:-9999px; - line-height:100%; /* need this for IE6 */ -} - -.jp-full-screen { - background: url("jplayer.pink.flag.jpg") 0 -420px no-repeat; - margin-left: 20px; -} - -.jp-full-screen:hover { - background: url("jplayer.pink.flag.jpg") -30px -420px no-repeat; -} - -.jp-restore-screen { - background: url("jplayer.pink.flag.jpg") -60px -420px no-repeat; - margin-left: 20px; -} - -.jp-restore-screen:hover { - background: url("jplayer.pink.flag.jpg") -90px -420px no-repeat; -} - -.jp-repeat { - background: url("jplayer.pink.flag.jpg") 0 -440px no-repeat; -} - -.jp-repeat:hover { - background: url("jplayer.pink.flag.jpg") -30px -440px no-repeat; -} - -.jp-repeat-off { - background: url("jplayer.pink.flag.jpg") -60px -440px no-repeat; -} - -.jp-repeat-off:hover { - background: url("jplayer.pink.flag.jpg") -90px -440px no-repeat; -} - -.jp-shuffle { - background: url("jplayer.pink.flag.jpg") 0 -460px no-repeat; - margin-left: 5px; -} - -.jp-shuffle:hover { - background: url("jplayer.pink.flag.jpg") -30px -460px no-repeat; -} - -.jp-shuffle-off { - background: url("jplayer.pink.flag.jpg") -60px -460px no-repeat; - margin-left: 5px; -} - -.jp-shuffle-off:hover { - background: url("jplayer.pink.flag.jpg") -90px -460px no-repeat; -} - - -/* @end */ - -/* @group progress bar */ - -/* The seeking class is added/removed inside jPlayer */ -div.jp-seeking-bg { - background: url("jplayer.pink.flag.seeking.gif"); -} - -.jp-progress { - background: url("jplayer.pink.flag.jpg") 0px -240px no-repeat; - width: 197px; - height: 13px; - padding: 0 2px 2px 2px; - margin-bottom: 4px; - overflow:hidden; -} - -div.jp-video .jp-progress { - border-top:1px solid #180a1f; - border-bottom: 1px solid #554560; - width:100%; - background-image: none; - padding: 0; -} - -.jp-seek-bar { - background: url("jplayer.pink.flag.jpg") 0px -260px repeat-x; - width:0px; - height: 100%; - overflow:hidden; - cursor:pointer; -} - -.jp-play-bar { - background: url("jplayer.pink.flag.jpg") 0px -280px repeat-x; - width:0px; - height: 100%; - overflow:hidden; -} - - -/* @end */ - -/* @group volume controls */ - -div.jp-interface ul.jp-controls a.jp-mute, -div.jp-interface ul.jp-controls a.jp-unmute, -div.jp-interface ul.jp-controls a.jp-volume-max { - background: url("jplayer.pink.flag.jpg") 0px -330px no-repeat; - position: absolute; - width: 16px; - height: 11px; -} - -div.jp-audio ul.jp-controls a.jp-mute, -div.jp-audio ul.jp-controls a.jp-unmute, -div.jp-audio-stream ul.jp-controls a.jp-mute, -div.jp-audio-stream ul.jp-controls a.jp-unmute { - top:-6px; - left: 0; -} - -div.jp-audio ul.jp-controls a.jp-volume-max, -div.jp-audio-stream ul.jp-controls a.jp-volume-max { - top:-6px; - right: 0; -} - - -div.jp-video ul.jp-controls a.jp-mute, -div.jp-video ul.jp-controls a.jp-unmute { - left: 0; - top:14px; -} - -div.jp-video ul.jp-controls a.jp-volume-max { - left: 84px; - top:14px; -} - -div.jp-interface ul.jp-controls a.jp-mute:hover { - background: url("jplayer.pink.flag.jpg") -25px -330px no-repeat; -} - -div.jp-interface ul.jp-controls a.jp-unmute { - background: url("jplayer.pink.flag.jpg") -60px -330px no-repeat; -} - -div.jp-interface ul.jp-controls a.jp-unmute:hover { - background: url("jplayer.pink.flag.jpg") -85px -330px no-repeat; -} - -div.jp-interface ul.jp-controls a.jp-volume-max { - background: url("jplayer.pink.flag.jpg") 0px -350px no-repeat; -} - -div.jp-interface ul.jp-controls a.jp-volume-max:hover { - background: url("jplayer.pink.flag.jpg") -25px -350px no-repeat; -} - -.jp-volume-bar { - background: url("jplayer.pink.flag.jpg") 0px -300px repeat-x; - position: absolute; - width: 197px; - height: 4px; - padding: 2px 2px 1px 2px; - overflow: hidden; -} - -.jp-volume-bar:hover { - cursor: pointer; -} - - -div.jp-audio .jp-interface .jp-volume-bar, -div.jp-audio-stream .jp-interface .jp-volume-bar { - top:10px; - left: 0; -} - -div.jp-audio-stream .jp-interface .jp-volume-bar { - width: 97px; - border-right:1px solid #180920; - padding-right:1px; -} - -div.jp-video .jp-volume-bar { - top: 0; - left: 0; - width:95px; - border-right:1px solid #180920; - padding-right:1px; - margin-top: 30px; -} - -.jp-volume-bar-value { - background: url("jplayer.pink.flag.jpg") 0px -320px repeat-x; - height: 4px; -} - -/* @end */ - -/* @group current time and duration */ - -.jp-current-time, .jp-duration { - width:70px; - font-size:.5em; - color: #8c7a99; -} - -.jp-current-time { - float: left; -} - -.jp-duration { - float: right; - text-align:right; -} - -.jp-video .jp-current-time { - padding-left:20px; -} - -.jp-video .jp-duration { - padding-right:20px; -} - -/* @end */ - -/* @group playlist */ - -.jp-title ul, -.jp-playlist ul { - list-style-type:none; - font-size:.7em; - margin: 0; - padding: 0; -} - -.jp-video .jp-title ul { - margin: 0 20px 10px; -} - -.jp-video .jp-playlist ul { - margin: 0 20px; -} - -.jp-title li, -.jp-playlist li { - position: relative; - padding: 2px 0; - border-top:1px solid #554461; - border-bottom:1px solid #180a1f; - overflow: hidden; -} - -.jp-title li{ - border-bottom:none; - border-top:none; - padding:0; - text-align:center; -} - -/* Note that the first-child (IE6) and last-child (IE6/7/8) selectors do not work on IE */ - -div.jp-type-playlist div.jp-playlist li:first-child { - border-top:none; - padding-top:3px; -} - -div.jp-type-playlist div.jp-playlist li:last-child { - border-bottom:none; - padding-bottom:3px; -} - -div.jp-type-playlist div.jp-playlist a { - color: #fff; - text-decoration:none; -} - -div.jp-type-playlist div.jp-playlist a:hover { - color: #e892e9; -} - -div.jp-type-playlist div.jp-playlist li.jp-playlist-current { - background-color: #26102e; - margin: 0 -20px; - padding: 2px 20px; - border-top: 1px solid #26102e; - border-bottom: 1px solid #26102e; -} - -div.jp-type-playlist div.jp-playlist li.jp-playlist-current a{ - color: #e892e9; -} - -div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove { - float:right; - display:inline; - text-align:right; - margin-left:10px; - font-weight:bold; - color:#8C7A99; -} -div.jp-type-playlist div.jp-playlist a.jp-playlist-item-remove:hover { - color:#E892E9; -} - -div.jp-type-playlist div.jp-playlist span.jp-free-media { - float: right; - display:inline; - text-align:right; - color:#8C7A99; -} - -div.jp-type-playlist div.jp-playlist span.jp-free-media a{ - color:#8C7A99; -} - -div.jp-type-playlist div.jp-playlist span.jp-free-media a:hover{ - color:#E892E9; -} -span.jp-artist { - font-size:.8em; - color:#8C7A99; -} - -/* @end */ - - -div.jp-video div.jp-video-play { - width:100%; - overflow:hidden; /* Important for nested negative margins to work in modern browsers */ - cursor:pointer; -} -div.jp-video-270p div.jp-video-play { - margin-top:-270px; - height:270px; -} -div.jp-video-360p div.jp-video-play { - margin-top:-360px; - height:360px; -} -div.jp-video-full div.jp-video-play { - height:100%; -} -a.jp-video-play-icon { - position:relative; - display:block; - width: 112px; - height: 100px; - - margin-left:-56px; - margin-top:-50px; - left:50%; - top:50%; - - background: url("jplayer.pink.flag.video.play.png") 0 0 no-repeat; - text-indent:-9999px; -} -div.jp-video-play:hover a.jp-video-play-icon { - background: url("jplayer.pink.flag.video.play.png") 0 -100px no-repeat; -} - - -div.jp-jplayer audio, -div.jp-jplayer { - width:0px; - height:0px; -} - -div.jp-jplayer { - background-color: #000000; -} - -/* @group NO SOLUTION error feedback */ - -.jp-no-solution { - padding:5px; - font-size:.8em; - background-color:#3a2a45; - border-top:2px solid #554461; - border-left:2px solid #554461; - border-right:2px solid #180a1f; - border-bottom:2px solid #180a1f; - color:#FFF; - display:none; -} - -.jp-no-solution a { - color:#FFF; -} - -.jp-no-solution span { - font-size:1em; - display:block; - text-align:center; - font-weight:bold; -} -/* @end */ diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.jpg b/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.jpg deleted file mode 100644 index 0c084e298844644faab531e0bec15452795f14ed..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18426 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 diff --git a/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.seeking.gif b/libraries/filemanager-9.12.1/js/jPlayer/skin_ol/pink.flag/jplayer.pink.flag.seeking.gif deleted file mode 100644 index 754ceb167377fd304f0bd596d7458277fe47265f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3284 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 diff --git a/libraries/filemanager-9.12.1/js/jquery.fileupload-angular.js b/libraries/filemanager-9.12.1/js/jquery.fileupload-angular.js deleted file mode 100644 index 1c20552..0000000 --- a/libraries/filemanager-9.12.1/js/jquery.fileupload-angular.js +++ /dev/null @@ -1,437 +0,0 @@ -/* - * jQuery File Upload AngularJS Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, angular, require */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'angular', - './jquery.fileupload-image', - './jquery.fileupload-audio', - './jquery.fileupload-video', - './jquery.fileupload-validate' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('angular'), - require('./jquery.fileupload-image'), - require('./jquery.fileupload-audio'), - require('./jquery.fileupload-video'), - require('./jquery.fileupload-validate') - ); - } else { - factory(); - } -}(function () { - 'use strict'; - - angular.module('blueimp.fileupload', []) - - // The fileUpload service provides configuration options - // for the fileUpload directive and default handlers for - // File Upload events: - .provider('fileUpload', function () { - var scopeEvalAsync = function (expression) { - var scope = angular.element(this) - .fileupload('option', 'scope'); - // Schedule a new $digest cycle if not already inside of one - // and evaluate the given expression: - scope.$evalAsync(expression); - }, - addFileMethods = function (scope, data) { - var files = data.files, - file = files[0]; - angular.forEach(files, function (file, index) { - file._index = index; - file.$state = function () { - return data.state(); - }; - file.$processing = function () { - return data.processing(); - }; - file.$progress = function () { - return data.progress(); - }; - file.$response = function () { - return data.response(); - }; - }); - file.$submit = function () { - if (!file.error) { - return data.submit(); - } - }; - file.$cancel = function () { - return data.abort(); - }; - }, - $config; - $config = this.defaults = { - handleResponse: function (e, data) { - var files = data.result && data.result.files; - if (files) { - data.scope.replace(data.files, files); - } else if (data.errorThrown || - data.textStatus === 'error') { - data.files[0].error = data.errorThrown || - data.textStatus; - } - }, - add: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var scope = data.scope, - filesCopy = []; - angular.forEach(data.files, function (file) { - filesCopy.push(file); - }); - scope.$parent.$applyAsync(function () { - addFileMethods(scope, data); - var method = scope.option('prependFiles') ? - 'unshift' : 'push'; - Array.prototype[method].apply(scope.queue, data.files); - }); - data.process(function () { - return scope.process(data); - }).always(function () { - scope.$parent.$applyAsync(function () { - addFileMethods(scope, data); - scope.replace(filesCopy, data.files); - }); - }).then(function () { - if ((scope.option('autoUpload') || - data.autoUpload) && - data.autoUpload !== false) { - data.submit(); - } - }); - }, - done: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = this; - data.scope.$apply(function () { - data.handleResponse.call(that, e, data); - }); - }, - fail: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = this, - scope = data.scope; - if (data.errorThrown === 'abort') { - scope.clear(data.files); - return; - } - scope.$apply(function () { - data.handleResponse.call(that, e, data); - }); - }, - stop: scopeEvalAsync, - processstart: scopeEvalAsync, - processstop: scopeEvalAsync, - getNumberOfFiles: function () { - var scope = this.scope; - return scope.queue.length - scope.processing(); - }, - dataType: 'json', - autoUpload: false - }; - this.$get = [ - function () { - return { - defaults: $config - }; - } - ]; - }) - - // Format byte numbers to readable presentations: - .provider('formatFileSizeFilter', function () { - var $config = { - // Byte units following the IEC format - // http://en.wikipedia.org/wiki/Kilobyte - units: [ - {size: 1000000000, suffix: ' GB'}, - {size: 1000000, suffix: ' MB'}, - {size: 1000, suffix: ' KB'} - ] - }; - this.defaults = $config; - this.$get = function () { - return function (bytes) { - if (!angular.isNumber(bytes)) { - return ''; - } - var unit = true, - i = 0, - prefix, - suffix; - while (unit) { - unit = $config.units[i]; - prefix = unit.prefix || ''; - suffix = unit.suffix || ''; - if (i === $config.units.length - 1 || bytes >= unit.size) { - return prefix + (bytes / unit.size).toFixed(2) + suffix; - } - i += 1; - } - }; - }; - }) - - // The FileUploadController initializes the fileupload widget and - // provides scope methods to control the File Upload functionality: - .controller('FileUploadController', [ - '$scope', '$element', '$attrs', '$window', 'fileUpload','$q', - function ($scope, $element, $attrs, $window, fileUpload, $q) { - var uploadMethods = { - progress: function () { - return $element.fileupload('progress'); - }, - active: function () { - return $element.fileupload('active'); - }, - option: function (option, data) { - if (arguments.length === 1) { - return $element.fileupload('option', option); - } - $element.fileupload('option', option, data); - }, - add: function (data) { - return $element.fileupload('add', data); - }, - send: function (data) { - return $element.fileupload('send', data); - }, - process: function (data) { - return $element.fileupload('process', data); - }, - processing: function (data) { - return $element.fileupload('processing', data); - } - }; - $scope.disabled = !$window.jQuery.support.fileInput; - $scope.queue = $scope.queue || []; - $scope.clear = function (files) { - var queue = this.queue, - i = queue.length, - file = files, - length = 1; - if (angular.isArray(files)) { - file = files[0]; - length = files.length; - } - while (i) { - i -= 1; - if (queue[i] === file) { - return queue.splice(i, length); - } - } - }; - $scope.replace = function (oldFiles, newFiles) { - var queue = this.queue, - file = oldFiles[0], - i, - j; - for (i = 0; i < queue.length; i += 1) { - if (queue[i] === file) { - for (j = 0; j < newFiles.length; j += 1) { - queue[i + j] = newFiles[j]; - } - return; - } - } - }; - $scope.applyOnQueue = function (method) { - var list = this.queue.slice(0), - i, - file, - promises = []; - for (i = 0; i < list.length; i += 1) { - file = list[i]; - if (file[method]) { - promises.push(file[method]()); - } - } - return $q.all(promises); - }; - $scope.submit = function () { - return this.applyOnQueue('$submit'); - }; - $scope.cancel = function () { - return this.applyOnQueue('$cancel'); - }; - // Add upload methods to the scope: - angular.extend($scope, uploadMethods); - // The fileupload widget will initialize with - // the options provided via "data-"-parameters, - // as well as those given via options object: - $element.fileupload(angular.extend( - {scope: $scope}, - fileUpload.defaults - )).on('fileuploadadd', function (e, data) { - data.scope = $scope; - }).on('fileuploadfail', function (e, data) { - if (data.errorThrown === 'abort') { - return; - } - if (data.dataType && - data.dataType.indexOf('json') === data.dataType.length - 4) { - try { - data.result = angular.fromJson(data.jqXHR.responseText); - } catch (ignore) {} - } - }).on([ - 'fileuploadadd', - 'fileuploadsubmit', - 'fileuploadsend', - 'fileuploaddone', - 'fileuploadfail', - 'fileuploadalways', - 'fileuploadprogress', - 'fileuploadprogressall', - 'fileuploadstart', - 'fileuploadstop', - 'fileuploadchange', - 'fileuploadpaste', - 'fileuploaddrop', - 'fileuploaddragover', - 'fileuploadchunksend', - 'fileuploadchunkdone', - 'fileuploadchunkfail', - 'fileuploadchunkalways', - 'fileuploadprocessstart', - 'fileuploadprocess', - 'fileuploadprocessdone', - 'fileuploadprocessfail', - 'fileuploadprocessalways', - 'fileuploadprocessstop' - ].join(' '), function (e, data) { - $scope.$parent.$applyAsync(function () { - if ($scope.$emit(e.type, data).defaultPrevented) { - e.preventDefault(); - } - }); - }).on('remove', function () { - // Remove upload methods from the scope, - // when the widget is removed: - var method; - for (method in uploadMethods) { - if (uploadMethods.hasOwnProperty(method)) { - delete $scope[method]; - } - } - }); - // Observe option changes: - $scope.$watch( - $attrs.fileUpload, - function (newOptions) { - if (newOptions) { - $element.fileupload('option', newOptions); - } - } - ); - } - ]) - - // Provide File Upload progress feedback: - .controller('FileUploadProgressController', [ - '$scope', '$attrs', '$parse', - function ($scope, $attrs, $parse) { - var fn = $parse($attrs.fileUploadProgress), - update = function () { - var progress = fn($scope); - if (!progress || !progress.total) { - return; - } - $scope.num = Math.floor( - progress.loaded / progress.total * 100 - ); - }; - update(); - $scope.$watch( - $attrs.fileUploadProgress + '.loaded', - function (newValue, oldValue) { - if (newValue !== oldValue) { - update(); - } - } - ); - } - ]) - - // Display File Upload previews: - .controller('FileUploadPreviewController', [ - '$scope', '$element', '$attrs', - function ($scope, $element, $attrs) { - $scope.$watch( - $attrs.fileUploadPreview + '.preview', - function (preview) { - $element.empty(); - if (preview) { - $element.append(preview); - } - } - ); - } - ]) - - .directive('fileUpload', function () { - return { - controller: 'FileUploadController', - scope: true - }; - }) - - .directive('fileUploadProgress', function () { - return { - controller: 'FileUploadProgressController', - scope: true - }; - }) - - .directive('fileUploadPreview', function () { - return { - controller: 'FileUploadPreviewController' - }; - }) - - // Enhance the HTML5 download attribute to - // allow drag&drop of files to the desktop: - .directive('download', function () { - return function (scope, elm) { - elm.on('dragstart', function (e) { - try { - e.originalEvent.dataTransfer.setData( - 'DownloadURL', - [ - 'application/octet-stream', - elm.prop('download'), - elm.prop('href') - ].join(':') - ); - } catch (ignore) {} - }); - }; - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/jquery.fileupload-audio.js b/libraries/filemanager-9.12.1/js/jquery.fileupload-audio.js deleted file mode 100644 index a253776..0000000 --- a/libraries/filemanager-9.12.1/js/jquery.fileupload-audio.js +++ /dev/null @@ -1,113 +0,0 @@ -/* - * jQuery File Upload Audio Preview Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window, document */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'load-image', - './jquery.fileupload-process' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('blueimp-load-image/js/load-image'), - require('./jquery.fileupload-process') - ); - } else { - // Browser globals: - factory( - window.jQuery, - window.loadImage - ); - } -}(function ($, loadImage) { - 'use strict'; - - // Prepend to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.unshift( - { - action: 'loadAudio', - // Use the action as prefix for the "@" options: - prefix: true, - fileTypes: '@', - maxFileSize: '@', - disabled: '@disableAudioPreview' - }, - { - action: 'setAudio', - name: '@audioPreviewName', - disabled: '@disableAudioPreview' - } - ); - - // The File Upload Audio Preview plugin extends the fileupload widget - // with audio preview functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - // The regular expression for the types of audio files to load, - // matched against the file type: - loadAudioFileTypes: /^audio\/.*$/ - }, - - _audioElement: document.createElement('audio'), - - processActions: { - - // Loads the audio file given via data.files and data.index - // as audio element if the browser supports playing it. - // Accepts the options fileTypes (regular expression) - // and maxFileSize (integer) to limit the files to load: - loadAudio: function (data, options) { - if (options.disabled) { - return data; - } - var file = data.files[data.index], - url, - audio; - if (this._audioElement.canPlayType && - this._audioElement.canPlayType(file.type) && - ($.type(options.maxFileSize) !== 'number' || - file.size <= options.maxFileSize) && - (!options.fileTypes || - options.fileTypes.test(file.type))) { - url = loadImage.createObjectURL(file); - if (url) { - audio = this._audioElement.cloneNode(false); - audio.src = url; - audio.controls = true; - data.audio = audio; - return data; - } - } - return data; - }, - - // Sets the audio element as a property of the file object: - setAudio: function (data, options) { - if (data.audio && !options.disabled) { - data.files[data.index][options.name || 'preview'] = data.audio; - } - return data; - } - - } - - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/jquery.fileupload-image.js b/libraries/filemanager-9.12.1/js/jquery.fileupload-image.js deleted file mode 100644 index 7e066a6..0000000 --- a/libraries/filemanager-9.12.1/js/jquery.fileupload-image.js +++ /dev/null @@ -1,326 +0,0 @@ -/* - * jQuery File Upload Image Preview & Resize Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window, Blob */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'load-image', - 'load-image-meta', - 'load-image-scale', - 'load-image-exif', - 'canvas-to-blob', - './jquery.fileupload-process' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('blueimp-load-image/js/load-image'), - require('blueimp-load-image/js/load-image-meta'), - require('blueimp-load-image/js/load-image-scale'), - require('blueimp-load-image/js/load-image-exif'), - require('blueimp-canvas-to-blob'), - require('./jquery.fileupload-process') - ); - } else { - // Browser globals: - factory( - window.jQuery, - window.loadImage - ); - } -}(function ($, loadImage) { - 'use strict'; - - // Prepend to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.unshift( - { - action: 'loadImageMetaData', - disableImageHead: '@', - disableExif: '@', - disableExifThumbnail: '@', - disableExifSub: '@', - disableExifGps: '@', - disabled: '@disableImageMetaDataLoad' - }, - { - action: 'loadImage', - // Use the action as prefix for the "@" options: - prefix: true, - fileTypes: '@', - maxFileSize: '@', - noRevoke: '@', - disabled: '@disableImageLoad' - }, - { - action: 'resizeImage', - // Use "image" as prefix for the "@" options: - prefix: 'image', - maxWidth: '@', - maxHeight: '@', - minWidth: '@', - minHeight: '@', - crop: '@', - orientation: '@', - forceResize: '@', - disabled: '@disableImageResize' - }, - { - action: 'saveImage', - quality: '@imageQuality', - type: '@imageType', - disabled: '@disableImageResize' - }, - { - action: 'saveImageMetaData', - disabled: '@disableImageMetaDataSave' - }, - { - action: 'resizeImage', - // Use "preview" as prefix for the "@" options: - prefix: 'preview', - maxWidth: '@', - maxHeight: '@', - minWidth: '@', - minHeight: '@', - crop: '@', - orientation: '@', - thumbnail: '@', - canvas: '@', - disabled: '@disableImagePreview' - }, - { - action: 'setImage', - name: '@imagePreviewName', - disabled: '@disableImagePreview' - }, - { - action: 'deleteImageReferences', - disabled: '@disableImageReferencesDeletion' - } - ); - - // The File Upload Resize plugin extends the fileupload widget - // with image resize functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - // The regular expression for the types of images to load: - // matched against the file type: - loadImageFileTypes: /^image\/(gif|jpeg|png|svg\+xml)$/, - // The maximum file size of images to load: - loadImageMaxFileSize: 10000000, // 10MB - // The maximum width of resized images: - imageMaxWidth: 1920, - // The maximum height of resized images: - imageMaxHeight: 1080, - // Defines the image orientation (1-8) or takes the orientation - // value from Exif data if set to true: - imageOrientation: false, - // Define if resized images should be cropped or only scaled: - imageCrop: false, - // Disable the resize image functionality by default: - disableImageResize: true, - // The maximum width of the preview images: - previewMaxWidth: 50, - // The maximum height of the preview images: - previewMaxHeight: 50, - // Defines the preview orientation (1-8) or takes the orientation - // value from Exif data if set to true: - previewOrientation: true, - // Create the preview using the Exif data thumbnail: - previewThumbnail: true, - // Define if preview images should be cropped or only scaled: - previewCrop: false, - // Define if preview images should be resized as canvas elements: - previewCanvas: true - }, - - processActions: { - - // Loads the image given via data.files and data.index - // as img element, if the browser supports the File API. - // Accepts the options fileTypes (regular expression) - // and maxFileSize (integer) to limit the files to load: - loadImage: function (data, options) { - if (options.disabled) { - return data; - } - var that = this, - file = data.files[data.index], - dfd = $.Deferred(); - if (($.type(options.maxFileSize) === 'number' && - file.size > options.maxFileSize) || - (options.fileTypes && - !options.fileTypes.test(file.type)) || - !loadImage( - file, - function (img) { - if (img.src) { - data.img = img; - } - dfd.resolveWith(that, [data]); - }, - options - )) { - return data; - } - return dfd.promise(); - }, - - // Resizes the image given as data.canvas or data.img - // and updates data.canvas or data.img with the resized image. - // Also stores the resized image as preview property. - // Accepts the options maxWidth, maxHeight, minWidth, - // minHeight, canvas and crop: - resizeImage: function (data, options) { - if (options.disabled || !(data.canvas || data.img)) { - return data; - } - options = $.extend({canvas: true}, options); - var that = this, - dfd = $.Deferred(), - img = (options.canvas && data.canvas) || data.img, - resolve = function (newImg) { - if (newImg && (newImg.width !== img.width || - newImg.height !== img.height || - options.forceResize)) { - data[newImg.getContext ? 'canvas' : 'img'] = newImg; - } - data.preview = newImg; - dfd.resolveWith(that, [data]); - }, - thumbnail; - if (data.exif) { - if (options.orientation === true) { - options.orientation = data.exif.get('Orientation'); - } - if (options.thumbnail) { - thumbnail = data.exif.get('Thumbnail'); - if (thumbnail) { - loadImage(thumbnail, resolve, options); - return dfd.promise(); - } - } - // Prevent orienting the same image twice: - if (data.orientation) { - delete options.orientation; - } else { - data.orientation = options.orientation; - } - } - if (img) { - resolve(loadImage.scale(img, options)); - return dfd.promise(); - } - return data; - }, - - // Saves the processed image given as data.canvas - // inplace at data.index of data.files: - saveImage: function (data, options) { - if (!data.canvas || options.disabled) { - return data; - } - var that = this, - file = data.files[data.index], - dfd = $.Deferred(); - if (data.canvas.toBlob) { - data.canvas.toBlob( - function (blob) { - if (!blob.name) { - if (file.type === blob.type) { - blob.name = file.name; - } else if (file.name) { - blob.name = file.name.replace( - /\.\w+$/, - '.' + blob.type.substr(6) - ); - } - } - // Don't restore invalid meta data: - if (file.type !== blob.type) { - delete data.imageHead; - } - // Store the created blob at the position - // of the original file in the files list: - data.files[data.index] = blob; - dfd.resolveWith(that, [data]); - }, - options.type || file.type, - options.quality - ); - } else { - return data; - } - return dfd.promise(); - }, - - loadImageMetaData: function (data, options) { - if (options.disabled) { - return data; - } - var that = this, - dfd = $.Deferred(); - loadImage.parseMetaData(data.files[data.index], function (result) { - $.extend(data, result); - dfd.resolveWith(that, [data]); - }, options); - return dfd.promise(); - }, - - saveImageMetaData: function (data, options) { - if (!(data.imageHead && data.canvas && - data.canvas.toBlob && !options.disabled)) { - return data; - } - var file = data.files[data.index], - blob = new Blob([ - data.imageHead, - // Resized images always have a head size of 20 bytes, - // including the JPEG marker and a minimal JFIF header: - this._blobSlice.call(file, 20) - ], {type: file.type}); - blob.name = file.name; - data.files[data.index] = blob; - return data; - }, - - // Sets the resized version of the image as a property of the - // file object, must be called after "saveImage": - setImage: function (data, options) { - if (data.preview && !options.disabled) { - data.files[data.index][options.name || 'preview'] = data.preview; - } - return data; - }, - - deleteImageReferences: function (data, options) { - if (!options.disabled) { - delete data.img; - delete data.canvas; - delete data.preview; - delete data.imageHead; - } - return data; - } - - } - - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/jquery.fileupload-jquery-ui.js b/libraries/filemanager-9.12.1/js/jquery.fileupload-jquery-ui.js deleted file mode 100644 index 7b136b3..0000000 --- a/libraries/filemanager-9.12.1/js/jquery.fileupload-jquery-ui.js +++ /dev/null @@ -1,161 +0,0 @@ -/* - * jQuery File Upload jQuery UI Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - './jquery.fileupload-ui' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('./jquery.fileupload-ui') - ); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - processdone: function (e, data) { - data.context.find('.start').button('enable'); - }, - progress: function (e, data) { - if (data.context) { - data.context.find('.progress').progressbar( - 'option', - 'value', - parseInt(data.loaded / data.total * 100, 10) - ); - } - }, - progressall: function (e, data) { - var $this = $(this); - $this.find('.fileupload-progress') - .find('.progress').progressbar( - 'option', - 'value', - parseInt(data.loaded / data.total * 100, 10) - ).end() - .find('.progress-extended').each(function () { - $(this).html( - ($this.data('blueimp-fileupload') || - $this.data('fileupload')) - ._renderExtendedProgress(data) - ); - }); - } - }, - - _renderUpload: function (func, files) { - var node = this._super(func, files), - showIconText = $(window).width() > 480; - node.find('.progress').empty().progressbar(); - node.find('.start').button({ - icons: {primary: 'ui-icon-circle-arrow-e'}, - text: showIconText - }); - node.find('.cancel').button({ - icons: {primary: 'ui-icon-cancel'}, - text: showIconText - }); - if (node.hasClass('fade')) { - node.hide(); - } - return node; - }, - - _renderDownload: function (func, files) { - var node = this._super(func, files), - showIconText = $(window).width() > 480; - node.find('.delete').button({ - icons: {primary: 'ui-icon-trash'}, - text: showIconText - }); - if (node.hasClass('fade')) { - node.hide(); - } - return node; - }, - - _startHandler: function (e) { - $(e.currentTarget).button('disable'); - this._super(e); - }, - - _transition: function (node) { - var deferred = $.Deferred(); - if (node.hasClass('fade')) { - node.fadeToggle( - this.options.transitionDuration, - this.options.transitionEasing, - function () { - deferred.resolveWith(node); - } - ); - } else { - deferred.resolveWith(node); - } - return deferred; - }, - - _create: function () { - this._super(); - this.element - .find('.fileupload-buttonbar') - .find('.fileinput-button').each(function () { - var input = $(this).find('input:file').detach(); - $(this) - .button({icons: {primary: 'ui-icon-plusthick'}}) - .append(input); - }) - .end().find('.start') - .button({icons: {primary: 'ui-icon-circle-arrow-e'}}) - .end().find('.cancel') - .button({icons: {primary: 'ui-icon-cancel'}}) - .end().find('.delete') - .button({icons: {primary: 'ui-icon-trash'}}) - .end().find('.progress').progressbar(); - }, - - _destroy: function () { - this.element - .find('.fileupload-buttonbar') - .find('.fileinput-button').each(function () { - var input = $(this).find('input:file').detach(); - $(this) - .button('destroy') - .append(input); - }) - .end().find('.start') - .button('destroy') - .end().find('.cancel') - .button('destroy') - .end().find('.delete') - .button('destroy') - .end().find('.progress').progressbar('destroy'); - this._super(); - } - - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/jquery.fileupload-process.js b/libraries/filemanager-9.12.1/js/jquery.fileupload-process.js deleted file mode 100644 index 638f0d2..0000000 --- a/libraries/filemanager-9.12.1/js/jquery.fileupload-process.js +++ /dev/null @@ -1,178 +0,0 @@ -/* - * jQuery File Upload Processing Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2012, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - './jquery.fileupload' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('./jquery.fileupload') - ); - } else { - // Browser globals: - factory( - window.jQuery - ); - } -}(function ($) { - 'use strict'; - - var originalAdd = $.blueimp.fileupload.prototype.options.add; - - // The File Upload Processing plugin extends the fileupload widget - // with file processing functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - // The list of processing actions: - processQueue: [ - /* - { - action: 'log', - type: 'debug' - } - */ - ], - add: function (e, data) { - var $this = $(this); - data.process(function () { - return $this.fileupload('process', data); - }); - originalAdd.call(this, e, data); - } - }, - - processActions: { - /* - log: function (data, options) { - console[options.type]( - 'Processing "' + data.files[data.index].name + '"' - ); - } - */ - }, - - _processFile: function (data, originalData) { - var that = this, - dfd = $.Deferred().resolveWith(that, [data]), - chain = dfd.promise(); - this._trigger('process', null, data); - $.each(data.processQueue, function (i, settings) { - var func = function (data) { - if (originalData.errorThrown) { - return $.Deferred() - .rejectWith(that, [originalData]).promise(); - } - return that.processActions[settings.action].call( - that, - data, - settings - ); - }; - chain = chain.then(func, settings.always && func); - }); - chain - .done(function () { - that._trigger('processdone', null, data); - that._trigger('processalways', null, data); - }) - .fail(function () { - that._trigger('processfail', null, data); - that._trigger('processalways', null, data); - }); - return chain; - }, - - // Replaces the settings of each processQueue item that - // are strings starting with an "@", using the remaining - // substring as key for the option map, - // e.g. "@autoUpload" is replaced with options.autoUpload: - _transformProcessQueue: function (options) { - var processQueue = []; - $.each(options.processQueue, function () { - var settings = {}, - action = this.action, - prefix = this.prefix === true ? action : this.prefix; - $.each(this, function (key, value) { - if ($.type(value) === 'string' && - value.charAt(0) === '@') { - settings[key] = options[ - value.slice(1) || (prefix ? prefix + - key.charAt(0).toUpperCase() + key.slice(1) : key) - ]; - } else { - settings[key] = value; - } - - }); - processQueue.push(settings); - }); - options.processQueue = processQueue; - }, - - // Returns the number of files currently in the processsing queue: - processing: function () { - return this._processing; - }, - - // Processes the files given as files property of the data parameter, - // returns a Promise object that allows to bind callbacks: - process: function (data) { - var that = this, - options = $.extend({}, this.options, data); - if (options.processQueue && options.processQueue.length) { - this._transformProcessQueue(options); - if (this._processing === 0) { - this._trigger('processstart'); - } - $.each(data.files, function (index) { - var opts = index ? $.extend({}, options) : options, - func = function () { - if (data.errorThrown) { - return $.Deferred() - .rejectWith(that, [data]).promise(); - } - return that._processFile(opts, data); - }; - opts.index = index; - that._processing += 1; - that._processingQueue = that._processingQueue.then(func, func) - .always(function () { - that._processing -= 1; - if (that._processing === 0) { - that._trigger('processstop'); - } - }); - }); - } - return this._processingQueue; - }, - - _create: function () { - this._super(); - this._processing = 0; - this._processingQueue = $.Deferred().resolveWith(this) - .promise(); - } - - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/jquery.fileupload-ui.js b/libraries/filemanager-9.12.1/js/jquery.fileupload-ui.js deleted file mode 100644 index 5058084..0000000 --- a/libraries/filemanager-9.12.1/js/jquery.fileupload-ui.js +++ /dev/null @@ -1,714 +0,0 @@ -/* - * jQuery File Upload User Interface Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'blueimp-tmpl', - './jquery.fileupload-image', - './jquery.fileupload-audio', - './jquery.fileupload-video', - './jquery.fileupload-validate' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('blueimp-tmpl'), - require('./jquery.fileupload-image'), - require('./jquery.fileupload-audio'), - require('./jquery.fileupload-video'), - require('./jquery.fileupload-validate') - ); - } else { - // Browser globals: - factory( - window.jQuery, - window.tmpl - ); - } -}(function ($, tmpl) { - 'use strict'; - - $.blueimp.fileupload.prototype._specialOptions.push( - 'filesContainer', - 'uploadTemplateId', - 'downloadTemplateId' - ); - - // The UI version extends the file upload widget - // and adds complete user interface interaction: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - // By default, files added to the widget are uploaded as soon - // as the user clicks on the start buttons. To enable automatic - // uploads, set the following option to true: - autoUpload: false, - // The ID of the upload template: - uploadTemplateId: 'template-upload', - // The ID of the download template: - downloadTemplateId: 'template-download', - // The container for the list of files. If undefined, it is set to - // an element with class "files" inside of the widget element: - filesContainer: undefined, - // By default, files are appended to the files container. - // Set the following option to true, to prepend files instead: - prependFiles: false, - // The expected data type of the upload response, sets the dataType - // option of the $.ajax upload requests: - dataType: 'json', - - // Error and info messages: - messages: { - unknownError: 'Unknown error' - }, - - // Function returning the current number of files, - // used by the maxNumberOfFiles validation: - getNumberOfFiles: function () { - return this.filesContainer.children() - .not('.processing').length; - }, - - // Callback to retrieve the list of files from the server response: - getFilesFromResponse: function (data) { - if (data.result && $.isArray(data.result.files)) { - return data.result.files; - } - return []; - }, - - // The add callback is invoked as soon as files are added to the fileupload - // widget (via file input selection, drag & drop or add API call). - // See the basic file upload widget for more information: - add: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var $this = $(this), - that = $this.data('blueimp-fileupload') || - $this.data('fileupload'), - options = that.options; - data.context = that._renderUpload(data.files) - .data('data', data) - .addClass('processing'); - options.filesContainer[ - options.prependFiles ? 'prepend' : 'append' - ](data.context); - that._forceReflow(data.context); - that._transition(data.context); - data.process(function () { - return $this.fileupload('process', data); - }).always(function () { - data.context.each(function (index) { - $(this).find('.size').text( - that._formatFileSize(data.files[index].size) - ); - }).removeClass('processing'); - that._renderPreviews(data); - }).done(function () { - data.context.find('.start').prop('disabled', false); - if ((that._trigger('added', e, data) !== false) && - (options.autoUpload || data.autoUpload) && - data.autoUpload !== false) { - data.submit(); - } - }).fail(function () { - if (data.files.error) { - data.context.each(function (index) { - var error = data.files[index].error; - if (error) { - $(this).find('.error').text(error); - } - }); - } - }); - }, - // Callback for the start of each file upload request: - send: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'); - if (data.context && data.dataType && - data.dataType.substr(0, 6) === 'iframe') { - // Iframe Transport does not support progress events. - // In lack of an indeterminate progress bar, we set - // the progress to 100%, showing the full animated bar: - data.context - .find('.progress').addClass( - !$.support.transition && 'progress-animated' - ) - .attr('aria-valuenow', 100) - .children().first().css( - 'width', - '100%' - ); - } - return that._trigger('sent', e, data); - }, - // Callback for successful uploads: - done: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'), - getFilesFromResponse = data.getFilesFromResponse || - that.options.getFilesFromResponse, - files = getFilesFromResponse(data), - template, - deferred; - if (data.context) { - data.context.each(function (index) { - var file = files[index] || - {error: 'Empty file upload result'}; - deferred = that._addFinishedDeferreds(); - that._transition($(this)).done( - function () { - var node = $(this); - template = that._renderDownload([file]) - .replaceAll(node); - that._forceReflow(template); - that._transition(template).done( - function () { - data.context = $(this); - that._trigger('completed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - } - ); - } - ); - }); - } else { - template = that._renderDownload(files)[ - that.options.prependFiles ? 'prependTo' : 'appendTo' - ](that.options.filesContainer); - that._forceReflow(template); - deferred = that._addFinishedDeferreds(); - that._transition(template).done( - function () { - data.context = $(this); - that._trigger('completed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - } - ); - } - }, - // Callback for failed (abort or error) uploads: - fail: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'), - template, - deferred; - if (data.context) { - data.context.each(function (index) { - if (data.errorThrown !== 'abort') { - var file = data.files[index]; - file.error = file.error || data.errorThrown || - data.i18n('unknownError'); - deferred = that._addFinishedDeferreds(); - that._transition($(this)).done( - function () { - var node = $(this); - template = that._renderDownload([file]) - .replaceAll(node); - that._forceReflow(template); - that._transition(template).done( - function () { - data.context = $(this); - that._trigger('failed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - } - ); - } - ); - } else { - deferred = that._addFinishedDeferreds(); - that._transition($(this)).done( - function () { - $(this).remove(); - that._trigger('failed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - } - ); - } - }); - } else if (data.errorThrown !== 'abort') { - data.context = that._renderUpload(data.files)[ - that.options.prependFiles ? 'prependTo' : 'appendTo' - ](that.options.filesContainer) - .data('data', data); - that._forceReflow(data.context); - deferred = that._addFinishedDeferreds(); - that._transition(data.context).done( - function () { - data.context = $(this); - that._trigger('failed', e, data); - that._trigger('finished', e, data); - deferred.resolve(); - } - ); - } else { - that._trigger('failed', e, data); - that._trigger('finished', e, data); - that._addFinishedDeferreds().resolve(); - } - }, - // Callback for upload progress events: - progress: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var progress = Math.floor(data.loaded / data.total * 100); - if (data.context) { - data.context.each(function () { - $(this).find('.progress') - .attr('aria-valuenow', progress) - .children().first().css( - 'width', - progress + '%' - ); - }); - } - }, - // Callback for global upload progress events: - progressall: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var $this = $(this), - progress = Math.floor(data.loaded / data.total * 100), - globalProgressNode = $this.find('.fileupload-progress'), - extendedProgressNode = globalProgressNode - .find('.progress-extended'); - if (extendedProgressNode.length) { - extendedProgressNode.html( - ($this.data('blueimp-fileupload') || $this.data('fileupload')) - ._renderExtendedProgress(data) - ); - } - globalProgressNode - .find('.progress') - .attr('aria-valuenow', progress) - .children().first().css( - 'width', - progress + '%' - ); - }, - // Callback for uploads start, equivalent to the global ajaxStart event: - start: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'); - that._resetFinishedDeferreds(); - that._transition($(this).find('.fileupload-progress')).done( - function () { - that._trigger('started', e); - } - ); - }, - // Callback for uploads stop, equivalent to the global ajaxStop event: - stop: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'), - deferred = that._addFinishedDeferreds(); - $.when.apply($, that._getFinishedDeferreds()) - .done(function () { - that._trigger('stopped', e); - }); - that._transition($(this).find('.fileupload-progress')).done( - function () { - $(this).find('.progress') - .attr('aria-valuenow', '0') - .children().first().css('width', '0%'); - $(this).find('.progress-extended').html(' '); - deferred.resolve(); - } - ); - }, - processstart: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - $(this).addClass('fileupload-processing'); - }, - processstop: function (e) { - if (e.isDefaultPrevented()) { - return false; - } - $(this).removeClass('fileupload-processing'); - }, - // Callback for file deletion: - destroy: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - var that = $(this).data('blueimp-fileupload') || - $(this).data('fileupload'), - removeNode = function () { - that._transition(data.context).done( - function () { - $(this).remove(); - that._trigger('destroyed', e, data); - } - ); - }; - if (data.url) { - data.dataType = data.dataType || that.options.dataType; - $.ajax(data).done(removeNode).fail(function () { - that._trigger('destroyfailed', e, data); - }); - } else { - removeNode(); - } - } - }, - - _resetFinishedDeferreds: function () { - this._finishedUploads = []; - }, - - _addFinishedDeferreds: function (deferred) { - if (!deferred) { - deferred = $.Deferred(); - } - this._finishedUploads.push(deferred); - return deferred; - }, - - _getFinishedDeferreds: function () { - return this._finishedUploads; - }, - - // Link handler, that allows to download files - // by drag & drop of the links to the desktop: - _enableDragToDesktop: function () { - var link = $(this), - url = link.prop('href'), - name = link.prop('download'), - type = 'application/octet-stream'; - link.bind('dragstart', function (e) { - try { - e.originalEvent.dataTransfer.setData( - 'DownloadURL', - [type, name, url].join(':') - ); - } catch (ignore) {} - }); - }, - - _formatFileSize: function (bytes) { - if (typeof bytes !== 'number') { - return ''; - } - if (bytes >= 1000000000) { - return (bytes / 1000000000).toFixed(2) + ' GB'; - } - if (bytes >= 1000000) { - return (bytes / 1000000).toFixed(2) + ' MB'; - } - return (bytes / 1000).toFixed(2) + ' KB'; - }, - - _formatBitrate: function (bits) { - if (typeof bits !== 'number') { - return ''; - } - if (bits >= 1000000000) { - return (bits / 1000000000).toFixed(2) + ' Gbit/s'; - } - if (bits >= 1000000) { - return (bits / 1000000).toFixed(2) + ' Mbit/s'; - } - if (bits >= 1000) { - return (bits / 1000).toFixed(2) + ' kbit/s'; - } - return bits.toFixed(2) + ' bit/s'; - }, - - _formatTime: function (seconds) { - var date = new Date(seconds * 1000), - days = Math.floor(seconds / 86400); - days = days ? days + 'd ' : ''; - return days + - ('0' + date.getUTCHours()).slice(-2) + ':' + - ('0' + date.getUTCMinutes()).slice(-2) + ':' + - ('0' + date.getUTCSeconds()).slice(-2); - }, - - _formatPercentage: function (floatValue) { - return (floatValue * 100).toFixed(2) + ' %'; - }, - - _renderExtendedProgress: function (data) { - return this._formatBitrate(data.bitrate) + ' | ' + - this._formatTime( - (data.total - data.loaded) * 8 / data.bitrate - ) + ' | ' + - this._formatPercentage( - data.loaded / data.total - ) + ' | ' + - this._formatFileSize(data.loaded) + ' / ' + - this._formatFileSize(data.total); - }, - - _renderTemplate: function (func, files) { - if (!func) { - return $(); - } - var result = func({ - files: files, - formatFileSize: this._formatFileSize, - options: this.options - }); - if (result instanceof $) { - return result; - } - return $(this.options.templatesContainer).html(result).children(); - }, - - _renderPreviews: function (data) { - data.context.find('.preview').each(function (index, elm) { - $(elm).append(data.files[index].preview); - }); - }, - - _renderUpload: function (files) { - return this._renderTemplate( - this.options.uploadTemplate, - files - ); - }, - - _renderDownload: function (files) { - return this._renderTemplate( - this.options.downloadTemplate, - files - ).find('a[download]').each(this._enableDragToDesktop).end(); - }, - - _startHandler: function (e) { - e.preventDefault(); - var button = $(e.currentTarget), - template = button.closest('.template-upload'), - data = template.data('data'); - button.prop('disabled', true); - if (data && data.submit) { - data.submit(); - } - }, - - _cancelHandler: function (e) { - e.preventDefault(); - var template = $(e.currentTarget) - .closest('.template-upload,.template-download'), - data = template.data('data') || {}; - data.context = data.context || template; - if (data.abort) { - data.abort(); - } else { - data.errorThrown = 'abort'; - this._trigger('fail', e, data); - } - }, - - _deleteHandler: function (e) { - e.preventDefault(); - var button = $(e.currentTarget); - this._trigger('destroy', e, $.extend({ - context: button.closest('.template-download'), - type: 'DELETE' - }, button.data())); - }, - - _forceReflow: function (node) { - return $.support.transition && node.length && - node[0].offsetWidth; - }, - - _transition: function (node) { - var dfd = $.Deferred(); - if ($.support.transition && node.hasClass('fade') && node.is(':visible')) { - node.bind( - $.support.transition.end, - function (e) { - // Make sure we don't respond to other transitions events - // in the container element, e.g. from button elements: - if (e.target === node[0]) { - node.unbind($.support.transition.end); - dfd.resolveWith(node); - } - } - ).toggleClass('in'); - } else { - node.toggleClass('in'); - dfd.resolveWith(node); - } - return dfd; - }, - - _initButtonBarEventHandlers: function () { - var fileUploadButtonBar = this.element.find('.fileupload-buttonbar'), - filesList = this.options.filesContainer; - this._on(fileUploadButtonBar.find('.start'), { - click: function (e) { - e.preventDefault(); - filesList.find('.start').click(); - } - }); - this._on(fileUploadButtonBar.find('.cancel'), { - click: function (e) { - e.preventDefault(); - filesList.find('.cancel').click(); - } - }); - this._on(fileUploadButtonBar.find('.delete'), { - click: function (e) { - e.preventDefault(); - filesList.find('.toggle:checked') - .closest('.template-download') - .find('.delete').click(); - fileUploadButtonBar.find('.toggle') - .prop('checked', false); - } - }); - this._on(fileUploadButtonBar.find('.toggle'), { - change: function (e) { - filesList.find('.toggle').prop( - 'checked', - $(e.currentTarget).is(':checked') - ); - } - }); - }, - - _destroyButtonBarEventHandlers: function () { - this._off( - this.element.find('.fileupload-buttonbar') - .find('.start, .cancel, .delete'), - 'click' - ); - this._off( - this.element.find('.fileupload-buttonbar .toggle'), - 'change.' - ); - }, - - _initEventHandlers: function () { - this._super(); - this._on(this.options.filesContainer, { - 'click .start': this._startHandler, - 'click .cancel': this._cancelHandler, - 'click .delete': this._deleteHandler - }); - this._initButtonBarEventHandlers(); - }, - - _destroyEventHandlers: function () { - this._destroyButtonBarEventHandlers(); - this._off(this.options.filesContainer, 'click'); - this._super(); - }, - - _enableFileInputButton: function () { - this.element.find('.fileinput-button input') - .prop('disabled', false) - .parent().removeClass('disabled'); - }, - - _disableFileInputButton: function () { - this.element.find('.fileinput-button input') - .prop('disabled', true) - .parent().addClass('disabled'); - }, - - _initTemplates: function () { - var options = this.options; - options.templatesContainer = this.document[0].createElement( - options.filesContainer.prop('nodeName') - ); - if (tmpl) { - if (options.uploadTemplateId) { - options.uploadTemplate = tmpl(options.uploadTemplateId); - } - if (options.downloadTemplateId) { - options.downloadTemplate = tmpl(options.downloadTemplateId); - } - } - }, - - _initFilesContainer: function () { - var options = this.options; - if (options.filesContainer === undefined) { - options.filesContainer = this.element.find('.files'); - } else if (!(options.filesContainer instanceof $)) { - options.filesContainer = $(options.filesContainer); - } - }, - - _initSpecialOptions: function () { - this._super(); - this._initFilesContainer(); - this._initTemplates(); - }, - - _create: function () { - this._super(); - this._resetFinishedDeferreds(); - if (!$.support.fileInput) { - this._disableFileInputButton(); - } - }, - - enable: function () { - var wasDisabled = false; - if (this.options.disabled) { - wasDisabled = true; - } - this._super(); - if (wasDisabled) { - this.element.find('input, button').prop('disabled', false); - this._enableFileInputButton(); - } - }, - - disable: function () { - if (!this.options.disabled) { - this.element.find('input, button').prop('disabled', true); - this._disableFileInputButton(); - } - this._super(); - } - - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/jquery.fileupload-validate.js b/libraries/filemanager-9.12.1/js/jquery.fileupload-validate.js deleted file mode 100644 index eebeb37..0000000 --- a/libraries/filemanager-9.12.1/js/jquery.fileupload-validate.js +++ /dev/null @@ -1,125 +0,0 @@ -/* - * jQuery File Upload Validation Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require, window */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - './jquery.fileupload-process' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('./jquery.fileupload-process') - ); - } else { - // Browser globals: - factory( - window.jQuery - ); - } -}(function ($) { - 'use strict'; - - // Append to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.push( - { - action: 'validate', - // Always trigger this action, - // even if the previous action was rejected: - always: true, - // Options taken from the global options map: - acceptFileTypes: '@', - maxFileSize: '@', - minFileSize: '@', - maxNumberOfFiles: '@', - disabled: '@disableValidation' - } - ); - - // The File Upload Validation plugin extends the fileupload widget - // with file validation functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - /* - // The regular expression for allowed file types, matches - // against either file type or file name: - acceptFileTypes: /(\.|\/)(gif|jpe?g|png)$/i, - // The maximum allowed file size in bytes: - maxFileSize: 10000000, // 10 MB - // The minimum allowed file size in bytes: - minFileSize: undefined, // No minimal file size - // The limit of files to be uploaded: - maxNumberOfFiles: 10, - */ - - // Function returning the current number of files, - // has to be overriden for maxNumberOfFiles validation: - getNumberOfFiles: $.noop, - - // Error and info messages: - messages: { - maxNumberOfFiles: 'Maximum number of files exceeded', - acceptFileTypes: 'File type not allowed', - maxFileSize: 'File is too large', - minFileSize: 'File is too small' - } - }, - - processActions: { - - validate: function (data, options) { - if (options.disabled) { - return data; - } - var dfd = $.Deferred(), - settings = this.options, - file = data.files[data.index], - fileSize; - if (options.minFileSize || options.maxFileSize) { - fileSize = file.size; - } - if ($.type(options.maxNumberOfFiles) === 'number' && - (settings.getNumberOfFiles() || 0) + data.files.length > - options.maxNumberOfFiles) { - file.error = settings.i18n('maxNumberOfFiles'); - } else if (options.acceptFileTypes && - !(options.acceptFileTypes.test(file.type) || - options.acceptFileTypes.test(file.name))) { - file.error = settings.i18n('acceptFileTypes'); - } else if (fileSize > options.maxFileSize) { - file.error = settings.i18n('maxFileSize'); - } else if ($.type(fileSize) === 'number' && - fileSize < options.minFileSize) { - file.error = settings.i18n('minFileSize'); - } else { - delete file.error; - } - if (file.error || data.files.error) { - data.files.error = true; - dfd.rejectWith(this, [data]); - } else { - dfd.resolveWith(this, [data]); - } - return dfd.promise(); - } - - } - - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/jquery.fileupload-video.js b/libraries/filemanager-9.12.1/js/jquery.fileupload-video.js deleted file mode 100644 index aedcec2..0000000 --- a/libraries/filemanager-9.12.1/js/jquery.fileupload-video.js +++ /dev/null @@ -1,113 +0,0 @@ -/* - * jQuery File Upload Video Preview Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2013, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window, document */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'load-image', - './jquery.fileupload-process' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('blueimp-load-image/js/load-image'), - require('./jquery.fileupload-process') - ); - } else { - // Browser globals: - factory( - window.jQuery, - window.loadImage - ); - } -}(function ($, loadImage) { - 'use strict'; - - // Prepend to the default processQueue: - $.blueimp.fileupload.prototype.options.processQueue.unshift( - { - action: 'loadVideo', - // Use the action as prefix for the "@" options: - prefix: true, - fileTypes: '@', - maxFileSize: '@', - disabled: '@disableVideoPreview' - }, - { - action: 'setVideo', - name: '@videoPreviewName', - disabled: '@disableVideoPreview' - } - ); - - // The File Upload Video Preview plugin extends the fileupload widget - // with video preview functionality: - $.widget('blueimp.fileupload', $.blueimp.fileupload, { - - options: { - // The regular expression for the types of video files to load, - // matched against the file type: - loadVideoFileTypes: /^video\/.*$/ - }, - - _videoElement: document.createElement('video'), - - processActions: { - - // Loads the video file given via data.files and data.index - // as video element if the browser supports playing it. - // Accepts the options fileTypes (regular expression) - // and maxFileSize (integer) to limit the files to load: - loadVideo: function (data, options) { - if (options.disabled) { - return data; - } - var file = data.files[data.index], - url, - video; - if (this._videoElement.canPlayType && - this._videoElement.canPlayType(file.type) && - ($.type(options.maxFileSize) !== 'number' || - file.size <= options.maxFileSize) && - (!options.fileTypes || - options.fileTypes.test(file.type))) { - url = loadImage.createObjectURL(file); - if (url) { - video = this._videoElement.cloneNode(false); - video.src = url; - video.controls = true; - data.video = video; - return data; - } - } - return data; - }, - - // Sets the video element as a property of the file object: - setVideo: function (data, options) { - if (data.video && !options.disabled) { - data.files[data.index][options.name || 'preview'] = data.video; - } - return data; - } - - } - - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/jquery.fileupload.js b/libraries/filemanager-9.12.1/js/jquery.fileupload.js deleted file mode 100644 index f20bc6d..0000000 --- a/libraries/filemanager-9.12.1/js/jquery.fileupload.js +++ /dev/null @@ -1,1482 +0,0 @@ -/* - * jQuery File Upload Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2010, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* jshint nomen:false */ -/* global define, require, window, document, location, Blob, FormData */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define([ - 'jquery', - 'jquery-ui/ui/widget' - ], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory( - require('jquery'), - require('./vendor/jquery.ui.widget') - ); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - - // Detect file input support, based on - // http://viljamis.com/blog/2012/file-upload-support-on-mobile/ - $.support.fileInput = !(new RegExp( - // Handle devices which give false positives for the feature detection: - '(Android (1\\.[0156]|2\\.[01]))' + - '|(Windows Phone (OS 7|8\\.0))|(XBLWP)|(ZuneWP)|(WPDesktop)' + - '|(w(eb)?OSBrowser)|(webOS)' + - '|(Kindle/(1\\.0|2\\.[05]|3\\.0))' - ).test(window.navigator.userAgent) || - // Feature detection for all other devices: - $('').prop('disabled')); - - // The FileReader API is not actually used, but works as feature detection, - // as some Safari versions (5?) support XHR file uploads via the FormData API, - // but not non-multipart XHR file uploads. - // window.XMLHttpRequestUpload is not available on IE10, so we check for - // window.ProgressEvent instead to detect XHR2 file upload capability: - $.support.xhrFileUpload = !!(window.ProgressEvent && window.FileReader); - $.support.xhrFormDataFileUpload = !!window.FormData; - - // Detect support for Blob slicing (required for chunked uploads): - $.support.blobSlice = window.Blob && (Blob.prototype.slice || - Blob.prototype.webkitSlice || Blob.prototype.mozSlice); - - // Helper function to create drag handlers for dragover/dragenter/dragleave: - function getDragHandler(type) { - var isDragOver = type === 'dragover'; - return function (e) { - e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; - var dataTransfer = e.dataTransfer; - if (dataTransfer && $.inArray('Files', dataTransfer.types) !== -1 && - this._trigger( - type, - $.Event(type, {delegatedEvent: e}) - ) !== false) { - e.preventDefault(); - if (isDragOver) { - dataTransfer.dropEffect = 'copy'; - } - } - }; - } - - // The fileupload widget listens for change events on file input fields defined - // via fileInput setting and paste or drop events of the given dropZone. - // In addition to the default jQuery Widget methods, the fileupload widget - // exposes the "add" and "send" methods, to add or directly send files using - // the fileupload API. - // By default, files added via file input selection, paste, drag & drop or - // "add" method are uploaded immediately, but it is possible to override - // the "add" callback option to queue file uploads. - $.widget('blueimp.fileupload', { - - options: { - // The drop target element(s), by the default the complete document. - // Set to null to disable drag & drop support: - dropZone: $(document), - // The paste target element(s), by the default undefined. - // Set to a DOM node or jQuery object to enable file pasting: - pasteZone: undefined, - // The file input field(s), that are listened to for change events. - // If undefined, it is set to the file input fields inside - // of the widget element on plugin initialization. - // Set to null to disable the change listener. - fileInput: undefined, - // By default, the file input field is replaced with a clone after - // each input field change event. This is required for iframe transport - // queues and allows change events to be fired for the same file - // selection, but can be disabled by setting the following option to false: - replaceFileInput: true, - // The parameter name for the file form data (the request argument name). - // If undefined or empty, the name property of the file input field is - // used, or "files[]" if the file input name property is also empty, - // can be a string or an array of strings: - paramName: undefined, - // By default, each file of a selection is uploaded using an individual - // request for XHR type uploads. Set to false to upload file - // selections in one request each: - singleFileUploads: true, - // To limit the number of files uploaded with one XHR request, - // set the following option to an integer greater than 0: - limitMultiFileUploads: undefined, - // The following option limits the number of files uploaded with one - // XHR request to keep the request size under or equal to the defined - // limit in bytes: - limitMultiFileUploadSize: undefined, - // Multipart file uploads add a number of bytes to each uploaded file, - // therefore the following option adds an overhead for each file used - // in the limitMultiFileUploadSize configuration: - limitMultiFileUploadSizeOverhead: 512, - // Set the following option to true to issue all file upload requests - // in a sequential order: - sequentialUploads: false, - // To limit the number of concurrent uploads, - // set the following option to an integer greater than 0: - limitConcurrentUploads: undefined, - // Set the following option to true to force iframe transport uploads: - forceIframeTransport: false, - // Set the following option to the location of a redirect url on the - // origin server, for cross-domain iframe transport uploads: - redirect: undefined, - // The parameter name for the redirect url, sent as part of the form - // data and set to 'redirect' if this option is empty: - redirectParamName: undefined, - // Set the following option to the location of a postMessage window, - // to enable postMessage transport uploads: - postMessage: undefined, - // By default, XHR file uploads are sent as multipart/form-data. - // The iframe transport is always using multipart/form-data. - // Set to false to enable non-multipart XHR uploads: - multipart: true, - // To upload large files in smaller chunks, set the following option - // to a preferred maximum chunk size. If set to 0, null or undefined, - // or the browser does not support the required Blob API, files will - // be uploaded as a whole. - maxChunkSize: undefined, - // When a non-multipart upload or a chunked multipart upload has been - // aborted, this option can be used to resume the upload by setting - // it to the size of the already uploaded bytes. This option is most - // useful when modifying the options object inside of the "add" or - // "send" callbacks, as the options are cloned for each file upload. - uploadedBytes: undefined, - // By default, failed (abort or error) file uploads are removed from the - // global progress calculation. Set the following option to false to - // prevent recalculating the global progress data: - recalculateProgress: true, - // Interval in milliseconds to calculate and trigger progress events: - progressInterval: 100, - // Interval in milliseconds to calculate progress bitrate: - bitrateInterval: 500, - // By default, uploads are started automatically when adding files: - autoUpload: true, - - // Error and info messages: - messages: { - uploadedBytes: 'Uploaded bytes exceed file size' - }, - - // Translation function, gets the message key to be translated - // and an object with context specific data as arguments: - i18n: function (message, context) { - message = this.messages[message] || message.toString(); - if (context) { - $.each(context, function (key, value) { - message = message.replace('{' + key + '}', value); - }); - } - return message; - }, - - // Additional form data to be sent along with the file uploads can be set - // using this option, which accepts an array of objects with name and - // value properties, a function returning such an array, a FormData - // object (for XHR file uploads), or a simple object. - // The form of the first fileInput is given as parameter to the function: - formData: function (form) { - return form.serializeArray(); - }, - - // The add callback is invoked as soon as files are added to the fileupload - // widget (via file input selection, drag & drop, paste or add API call). - // If the singleFileUploads option is enabled, this callback will be - // called once for each file in the selection for XHR file uploads, else - // once for each file selection. - // - // The upload starts when the submit method is invoked on the data parameter. - // The data object contains a files property holding the added files - // and allows you to override plugin options as well as define ajax settings. - // - // Listeners for this callback can also be bound the following way: - // .bind('fileuploadadd', func); - // - // data.submit() returns a Promise object and allows to attach additional - // handlers using jQuery's Deferred callbacks: - // data.submit().done(func).fail(func).always(func); - add: function (e, data) { - if (e.isDefaultPrevented()) { - return false; - } - if (data.autoUpload || (data.autoUpload !== false && - $(this).fileupload('option', 'autoUpload'))) { - data.process().done(function () { - data.submit(); - }); - } - }, - - // Other callbacks: - - // Callback for the submit event of each file upload: - // submit: function (e, data) {}, // .bind('fileuploadsubmit', func); - - // Callback for the start of each file upload request: - // send: function (e, data) {}, // .bind('fileuploadsend', func); - - // Callback for successful uploads: - // done: function (e, data) {}, // .bind('fileuploaddone', func); - - // Callback for failed (abort or error) uploads: - // fail: function (e, data) {}, // .bind('fileuploadfail', func); - - // Callback for completed (success, abort or error) requests: - // always: function (e, data) {}, // .bind('fileuploadalways', func); - - // Callback for upload progress events: - // progress: function (e, data) {}, // .bind('fileuploadprogress', func); - - // Callback for global upload progress events: - // progressall: function (e, data) {}, // .bind('fileuploadprogressall', func); - - // Callback for uploads start, equivalent to the global ajaxStart event: - // start: function (e) {}, // .bind('fileuploadstart', func); - - // Callback for uploads stop, equivalent to the global ajaxStop event: - // stop: function (e) {}, // .bind('fileuploadstop', func); - - // Callback for change events of the fileInput(s): - // change: function (e, data) {}, // .bind('fileuploadchange', func); - - // Callback for paste events to the pasteZone(s): - // paste: function (e, data) {}, // .bind('fileuploadpaste', func); - - // Callback for drop events of the dropZone(s): - // drop: function (e, data) {}, // .bind('fileuploaddrop', func); - - // Callback for dragover events of the dropZone(s): - // dragover: function (e) {}, // .bind('fileuploaddragover', func); - - // Callback for the start of each chunk upload request: - // chunksend: function (e, data) {}, // .bind('fileuploadchunksend', func); - - // Callback for successful chunk uploads: - // chunkdone: function (e, data) {}, // .bind('fileuploadchunkdone', func); - - // Callback for failed (abort or error) chunk uploads: - // chunkfail: function (e, data) {}, // .bind('fileuploadchunkfail', func); - - // Callback for completed (success, abort or error) chunk upload requests: - // chunkalways: function (e, data) {}, // .bind('fileuploadchunkalways', func); - - // The plugin options are used as settings object for the ajax calls. - // The following are jQuery ajax settings required for the file uploads: - processData: false, - contentType: false, - cache: false, - timeout: 0 - }, - - // A list of options that require reinitializing event listeners and/or - // special initialization code: - _specialOptions: [ - 'fileInput', - 'dropZone', - 'pasteZone', - 'multipart', - 'forceIframeTransport' - ], - - _blobSlice: $.support.blobSlice && function () { - var slice = this.slice || this.webkitSlice || this.mozSlice; - return slice.apply(this, arguments); - }, - - _BitrateTimer: function () { - this.timestamp = ((Date.now) ? Date.now() : (new Date()).getTime()); - this.loaded = 0; - this.bitrate = 0; - this.getBitrate = function (now, loaded, interval) { - var timeDiff = now - this.timestamp; - if (!this.bitrate || !interval || timeDiff > interval) { - this.bitrate = (loaded - this.loaded) * (1000 / timeDiff) * 8; - this.loaded = loaded; - this.timestamp = now; - } - return this.bitrate; - }; - }, - - _isXHRUpload: function (options) { - return !options.forceIframeTransport && - ((!options.multipart && $.support.xhrFileUpload) || - $.support.xhrFormDataFileUpload); - }, - - _getFormData: function (options) { - var formData; - if ($.type(options.formData) === 'function') { - return options.formData(options.form); - } - if ($.isArray(options.formData)) { - return options.formData; - } - if ($.type(options.formData) === 'object') { - formData = []; - $.each(options.formData, function (name, value) { - formData.push({name: name, value: value}); - }); - return formData; - } - return []; - }, - - _getTotal: function (files) { - var total = 0; - $.each(files, function (index, file) { - total += file.size || 1; - }); - return total; - }, - - _initProgressObject: function (obj) { - var progress = { - loaded: 0, - total: 0, - bitrate: 0 - }; - if (obj._progress) { - $.extend(obj._progress, progress); - } else { - obj._progress = progress; - } - }, - - _initResponseObject: function (obj) { - var prop; - if (obj._response) { - for (prop in obj._response) { - if (obj._response.hasOwnProperty(prop)) { - delete obj._response[prop]; - } - } - } else { - obj._response = {}; - } - }, - - _onProgress: function (e, data) { - if (e.lengthComputable) { - var now = ((Date.now) ? Date.now() : (new Date()).getTime()), - loaded; - if (data._time && data.progressInterval && - (now - data._time < data.progressInterval) && - e.loaded !== e.total) { - return; - } - data._time = now; - loaded = Math.floor( - e.loaded / e.total * (data.chunkSize || data._progress.total) - ) + (data.uploadedBytes || 0); - // Add the difference from the previously loaded state - // to the global loaded counter: - this._progress.loaded += (loaded - data._progress.loaded); - this._progress.bitrate = this._bitrateTimer.getBitrate( - now, - this._progress.loaded, - data.bitrateInterval - ); - data._progress.loaded = data.loaded = loaded; - data._progress.bitrate = data.bitrate = data._bitrateTimer.getBitrate( - now, - loaded, - data.bitrateInterval - ); - // Trigger a custom progress event with a total data property set - // to the file size(s) of the current upload and a loaded data - // property calculated accordingly: - this._trigger( - 'progress', - $.Event('progress', {delegatedEvent: e}), - data - ); - // Trigger a global progress event for all current file uploads, - // including ajax calls queued for sequential file uploads: - this._trigger( - 'progressall', - $.Event('progressall', {delegatedEvent: e}), - this._progress - ); - } - }, - - _initProgressListener: function (options) { - var that = this, - xhr = options.xhr ? options.xhr() : $.ajaxSettings.xhr(); - // Accesss to the native XHR object is required to add event listeners - // for the upload progress event: - if (xhr.upload) { - $(xhr.upload).bind('progress', function (e) { - var oe = e.originalEvent; - // Make sure the progress event properties get copied over: - e.lengthComputable = oe.lengthComputable; - e.loaded = oe.loaded; - e.total = oe.total; - that._onProgress(e, options); - }); - options.xhr = function () { - return xhr; - }; - } - }, - - _isInstanceOf: function (type, obj) { - // Cross-frame instanceof check - return Object.prototype.toString.call(obj) === '[object ' + type + ']'; - }, - - _initXHRData: function (options) { - var that = this, - formData, - file = options.files[0], - // Ignore non-multipart setting if not supported: - multipart = options.multipart || !$.support.xhrFileUpload, - paramName = $.type(options.paramName) === 'array' ? - options.paramName[0] : options.paramName; - options.headers = $.extend({}, options.headers); - if (options.contentRange) { - options.headers['Content-Range'] = options.contentRange; - } - if (!multipart || options.blob || !this._isInstanceOf('File', file)) { - options.headers['Content-Disposition'] = 'attachment; filename="' + - encodeURI(file.name) + '"'; - } - if (!multipart) { - options.contentType = file.type || 'application/octet-stream'; - options.data = options.blob || file; - } else if ($.support.xhrFormDataFileUpload) { - if (options.postMessage) { - // window.postMessage does not allow sending FormData - // objects, so we just add the File/Blob objects to - // the formData array and let the postMessage window - // create the FormData object out of this array: - formData = this._getFormData(options); - if (options.blob) { - formData.push({ - name: paramName, - value: options.blob - }); - } else { - $.each(options.files, function (index, file) { - formData.push({ - name: ($.type(options.paramName) === 'array' && - options.paramName[index]) || paramName, - value: file - }); - }); - } - } else { - if (that._isInstanceOf('FormData', options.formData)) { - formData = options.formData; - } else { - formData = new FormData(); - $.each(this._getFormData(options), function (index, field) { - formData.append(field.name, field.value); - }); - } - if (options.blob) { - formData.append(paramName, options.blob, file.name); - } else { - $.each(options.files, function (index, file) { - // This check allows the tests to run with - // dummy objects: - if (that._isInstanceOf('File', file) || - that._isInstanceOf('Blob', file)) { - formData.append( - ($.type(options.paramName) === 'array' && - options.paramName[index]) || paramName, - file, - file.uploadName || file.name - ); - } - }); - } - } - options.data = formData; - } - // Blob reference is not needed anymore, free memory: - options.blob = null; - }, - - _initIframeSettings: function (options) { - var targetHost = $('').prop('href', options.url).prop('host'); - // Setting the dataType to iframe enables the iframe transport: - options.dataType = 'iframe ' + (options.dataType || ''); - // The iframe transport accepts a serialized array as form data: - options.formData = this._getFormData(options); - // Add redirect url to form data on cross-domain uploads: - if (options.redirect && targetHost && targetHost !== location.host) { - options.formData.push({ - name: options.redirectParamName || 'redirect', - value: options.redirect - }); - } - }, - - _initDataSettings: function (options) { - if (this._isXHRUpload(options)) { - if (!this._chunkedUpload(options, true)) { - if (!options.data) { - this._initXHRData(options); - } - this._initProgressListener(options); - } - if (options.postMessage) { - // Setting the dataType to postmessage enables the - // postMessage transport: - options.dataType = 'postmessage ' + (options.dataType || ''); - } - } else { - this._initIframeSettings(options); - } - }, - - _getParamName: function (options) { - var fileInput = $(options.fileInput), - paramName = options.paramName; - if (!paramName) { - paramName = []; - fileInput.each(function () { - var input = $(this), - name = input.prop('name') || 'files[]', - i = (input.prop('files') || [1]).length; - while (i) { - paramName.push(name); - i -= 1; - } - }); - if (!paramName.length) { - paramName = [fileInput.prop('name') || 'files[]']; - } - } else if (!$.isArray(paramName)) { - paramName = [paramName]; - } - return paramName; - }, - - _initFormSettings: function (options) { - // Retrieve missing options from the input field and the - // associated form, if available: - if (!options.form || !options.form.length) { - options.form = $(options.fileInput.prop('form')); - // If the given file input doesn't have an associated form, - // use the default widget file input's form: - if (!options.form.length) { - options.form = $(this.options.fileInput.prop('form')); - } - } - options.paramName = this._getParamName(options); - if (!options.url) { - options.url = options.form.prop('action') || location.href; - } - // The HTTP request method must be "POST" or "PUT": - options.type = (options.type || - ($.type(options.form.prop('method')) === 'string' && - options.form.prop('method')) || '' - ).toUpperCase(); - if (options.type !== 'POST' && options.type !== 'PUT' && - options.type !== 'PATCH') { - options.type = 'POST'; - } - if (!options.formAcceptCharset) { - options.formAcceptCharset = options.form.attr('accept-charset'); - } - }, - - _getAJAXSettings: function (data) { - var options = $.extend({}, this.options, data); - this._initFormSettings(options); - this._initDataSettings(options); - return options; - }, - - // jQuery 1.6 doesn't provide .state(), - // while jQuery 1.8+ removed .isRejected() and .isResolved(): - _getDeferredState: function (deferred) { - if (deferred.state) { - return deferred.state(); - } - if (deferred.isResolved()) { - return 'resolved'; - } - if (deferred.isRejected()) { - return 'rejected'; - } - return 'pending'; - }, - - // Maps jqXHR callbacks to the equivalent - // methods of the given Promise object: - _enhancePromise: function (promise) { - promise.success = promise.done; - promise.error = promise.fail; - promise.complete = promise.always; - return promise; - }, - - // Creates and returns a Promise object enhanced with - // the jqXHR methods abort, success, error and complete: - _getXHRPromise: function (resolveOrReject, context, args) { - var dfd = $.Deferred(), - promise = dfd.promise(); - context = context || this.options.context || promise; - if (resolveOrReject === true) { - dfd.resolveWith(context, args); - } else if (resolveOrReject === false) { - dfd.rejectWith(context, args); - } - promise.abort = dfd.promise; - return this._enhancePromise(promise); - }, - - // Adds convenience methods to the data callback argument: - _addConvenienceMethods: function (e, data) { - var that = this, - getPromise = function (args) { - return $.Deferred().resolveWith(that, args).promise(); - }; - data.process = function (resolveFunc, rejectFunc) { - if (resolveFunc || rejectFunc) { - data._processQueue = this._processQueue = - (this._processQueue || getPromise([this])).then( - function () { - if (data.errorThrown) { - return $.Deferred() - .rejectWith(that, [data]).promise(); - } - return getPromise(arguments); - } - ).then(resolveFunc, rejectFunc); - } - return this._processQueue || getPromise([this]); - }; - data.submit = function () { - if (this.state() !== 'pending') { - data.jqXHR = this.jqXHR = - (that._trigger( - 'submit', - $.Event('submit', {delegatedEvent: e}), - this - ) !== false) && that._onSend(e, this); - } - return this.jqXHR || that._getXHRPromise(); - }; - data.abort = function () { - if (this.jqXHR) { - return this.jqXHR.abort(); - } - this.errorThrown = 'abort'; - that._trigger('fail', null, this); - return that._getXHRPromise(false); - }; - data.state = function () { - if (this.jqXHR) { - return that._getDeferredState(this.jqXHR); - } - if (this._processQueue) { - return that._getDeferredState(this._processQueue); - } - }; - data.processing = function () { - return !this.jqXHR && this._processQueue && that - ._getDeferredState(this._processQueue) === 'pending'; - }; - data.progress = function () { - return this._progress; - }; - data.response = function () { - return this._response; - }; - }, - - // Parses the Range header from the server response - // and returns the uploaded bytes: - _getUploadedBytes: function (jqXHR) { - var range = jqXHR.getResponseHeader('Range'), - parts = range && range.split('-'), - upperBytesPos = parts && parts.length > 1 && - parseInt(parts[1], 10); - return upperBytesPos && upperBytesPos + 1; - }, - - // Uploads a file in multiple, sequential requests - // by splitting the file up in multiple blob chunks. - // If the second parameter is true, only tests if the file - // should be uploaded in chunks, but does not invoke any - // upload requests: - _chunkedUpload: function (options, testOnly) { - options.uploadedBytes = options.uploadedBytes || 0; - var that = this, - file = options.files[0], - fs = file.size, - ub = options.uploadedBytes, - mcs = options.maxChunkSize || fs, - slice = this._blobSlice, - dfd = $.Deferred(), - promise = dfd.promise(), - jqXHR, - upload; - if (!(this._isXHRUpload(options) && slice && (ub || ($.type(mcs) === 'function' ? mcs(options) : mcs) < fs)) || - options.data) { - return false; - } - if (testOnly) { - return true; - } - if (ub >= fs) { - file.error = options.i18n('uploadedBytes'); - return this._getXHRPromise( - false, - options.context, - [null, 'error', file.error] - ); - } - // The chunk upload method: - upload = function () { - // Clone the options object for each chunk upload: - var o = $.extend({}, options), - currentLoaded = o._progress.loaded; - o.blob = slice.call( - file, - ub, - ub + ($.type(mcs) === 'function' ? mcs(o) : mcs), - file.type - ); - // Store the current chunk size, as the blob itself - // will be dereferenced after data processing: - o.chunkSize = o.blob.size; - // Expose the chunk bytes position range: - o.contentRange = 'bytes ' + ub + '-' + - (ub + o.chunkSize - 1) + '/' + fs; - // Process the upload data (the blob and potential form data): - that._initXHRData(o); - // Add progress listeners for this chunk upload: - that._initProgressListener(o); - jqXHR = ((that._trigger('chunksend', null, o) !== false && $.ajax(o)) || - that._getXHRPromise(false, o.context)) - .done(function (result, textStatus, jqXHR) { - ub = that._getUploadedBytes(jqXHR) || - (ub + o.chunkSize); - // Create a progress event if no final progress event - // with loaded equaling total has been triggered - // for this chunk: - if (currentLoaded + o.chunkSize - o._progress.loaded) { - that._onProgress($.Event('progress', { - lengthComputable: true, - loaded: ub - o.uploadedBytes, - total: ub - o.uploadedBytes - }), o); - } - options.uploadedBytes = o.uploadedBytes = ub; - o.result = result; - o.textStatus = textStatus; - o.jqXHR = jqXHR; - that._trigger('chunkdone', null, o); - that._trigger('chunkalways', null, o); - if (ub < fs) { - // File upload not yet complete, - // continue with the next chunk: - upload(); - } else { - dfd.resolveWith( - o.context, - [result, textStatus, jqXHR] - ); - } - }) - .fail(function (jqXHR, textStatus, errorThrown) { - o.jqXHR = jqXHR; - o.textStatus = textStatus; - o.errorThrown = errorThrown; - that._trigger('chunkfail', null, o); - that._trigger('chunkalways', null, o); - dfd.rejectWith( - o.context, - [jqXHR, textStatus, errorThrown] - ); - }); - }; - this._enhancePromise(promise); - promise.abort = function () { - return jqXHR.abort(); - }; - upload(); - return promise; - }, - - _beforeSend: function (e, data) { - if (this._active === 0) { - // the start callback is triggered when an upload starts - // and no other uploads are currently running, - // equivalent to the global ajaxStart event: - this._trigger('start'); - // Set timer for global bitrate progress calculation: - this._bitrateTimer = new this._BitrateTimer(); - // Reset the global progress values: - this._progress.loaded = this._progress.total = 0; - this._progress.bitrate = 0; - } - // Make sure the container objects for the .response() and - // .progress() methods on the data object are available - // and reset to their initial state: - this._initResponseObject(data); - this._initProgressObject(data); - data._progress.loaded = data.loaded = data.uploadedBytes || 0; - data._progress.total = data.total = this._getTotal(data.files) || 1; - data._progress.bitrate = data.bitrate = 0; - this._active += 1; - // Initialize the global progress values: - this._progress.loaded += data.loaded; - this._progress.total += data.total; - }, - - _onDone: function (result, textStatus, jqXHR, options) { - var total = options._progress.total, - response = options._response; - if (options._progress.loaded < total) { - // Create a progress event if no final progress event - // with loaded equaling total has been triggered: - this._onProgress($.Event('progress', { - lengthComputable: true, - loaded: total, - total: total - }), options); - } - response.result = options.result = result; - response.textStatus = options.textStatus = textStatus; - response.jqXHR = options.jqXHR = jqXHR; - this._trigger('done', null, options); - }, - - _onFail: function (jqXHR, textStatus, errorThrown, options) { - var response = options._response; - if (options.recalculateProgress) { - // Remove the failed (error or abort) file upload from - // the global progress calculation: - this._progress.loaded -= options._progress.loaded; - this._progress.total -= options._progress.total; - } - response.jqXHR = options.jqXHR = jqXHR; - response.textStatus = options.textStatus = textStatus; - response.errorThrown = options.errorThrown = errorThrown; - this._trigger('fail', null, options); - }, - - _onAlways: function (jqXHRorResult, textStatus, jqXHRorError, options) { - // jqXHRorResult, textStatus and jqXHRorError are added to the - // options object via done and fail callbacks - this._trigger('always', null, options); - }, - - _onSend: function (e, data) { - if (!data.submit) { - this._addConvenienceMethods(e, data); - } - var that = this, - jqXHR, - aborted, - slot, - pipe, - options = that._getAJAXSettings(data), - send = function () { - that._sending += 1; - // Set timer for bitrate progress calculation: - options._bitrateTimer = new that._BitrateTimer(); - jqXHR = jqXHR || ( - ((aborted || that._trigger( - 'send', - $.Event('send', {delegatedEvent: e}), - options - ) === false) && - that._getXHRPromise(false, options.context, aborted)) || - that._chunkedUpload(options) || $.ajax(options) - ).done(function (result, textStatus, jqXHR) { - that._onDone(result, textStatus, jqXHR, options); - }).fail(function (jqXHR, textStatus, errorThrown) { - that._onFail(jqXHR, textStatus, errorThrown, options); - }).always(function (jqXHRorResult, textStatus, jqXHRorError) { - that._onAlways( - jqXHRorResult, - textStatus, - jqXHRorError, - options - ); - that._sending -= 1; - that._active -= 1; - if (options.limitConcurrentUploads && - options.limitConcurrentUploads > that._sending) { - // Start the next queued upload, - // that has not been aborted: - var nextSlot = that._slots.shift(); - while (nextSlot) { - if (that._getDeferredState(nextSlot) === 'pending') { - nextSlot.resolve(); - break; - } - nextSlot = that._slots.shift(); - } - } - if (that._active === 0) { - // The stop callback is triggered when all uploads have - // been completed, equivalent to the global ajaxStop event: - that._trigger('stop'); - } - }); - return jqXHR; - }; - this._beforeSend(e, options); - if (this.options.sequentialUploads || - (this.options.limitConcurrentUploads && - this.options.limitConcurrentUploads <= this._sending)) { - if (this.options.limitConcurrentUploads > 1) { - slot = $.Deferred(); - this._slots.push(slot); - pipe = slot.then(send); - } else { - this._sequence = this._sequence.then(send, send); - pipe = this._sequence; - } - // Return the piped Promise object, enhanced with an abort method, - // which is delegated to the jqXHR object of the current upload, - // and jqXHR callbacks mapped to the equivalent Promise methods: - pipe.abort = function () { - aborted = [undefined, 'abort', 'abort']; - if (!jqXHR) { - if (slot) { - slot.rejectWith(options.context, aborted); - } - return send(); - } - return jqXHR.abort(); - }; - return this._enhancePromise(pipe); - } - return send(); - }, - - _onAdd: function (e, data) { - var that = this, - result = true, - options = $.extend({}, this.options, data), - files = data.files, - filesLength = files.length, - limit = options.limitMultiFileUploads, - limitSize = options.limitMultiFileUploadSize, - overhead = options.limitMultiFileUploadSizeOverhead, - batchSize = 0, - paramName = this._getParamName(options), - paramNameSet, - paramNameSlice, - fileSet, - i, - j = 0; - if (!filesLength) { - return false; - } - if (limitSize && files[0].size === undefined) { - limitSize = undefined; - } - if (!(options.singleFileUploads || limit || limitSize) || - !this._isXHRUpload(options)) { - fileSet = [files]; - paramNameSet = [paramName]; - } else if (!(options.singleFileUploads || limitSize) && limit) { - fileSet = []; - paramNameSet = []; - for (i = 0; i < filesLength; i += limit) { - fileSet.push(files.slice(i, i + limit)); - paramNameSlice = paramName.slice(i, i + limit); - if (!paramNameSlice.length) { - paramNameSlice = paramName; - } - paramNameSet.push(paramNameSlice); - } - } else if (!options.singleFileUploads && limitSize) { - fileSet = []; - paramNameSet = []; - for (i = 0; i < filesLength; i = i + 1) { - batchSize += files[i].size + overhead; - if (i + 1 === filesLength || - ((batchSize + files[i + 1].size + overhead) > limitSize) || - (limit && i + 1 - j >= limit)) { - fileSet.push(files.slice(j, i + 1)); - paramNameSlice = paramName.slice(j, i + 1); - if (!paramNameSlice.length) { - paramNameSlice = paramName; - } - paramNameSet.push(paramNameSlice); - j = i + 1; - batchSize = 0; - } - } - } else { - paramNameSet = paramName; - } - data.originalFiles = files; - $.each(fileSet || files, function (index, element) { - var newData = $.extend({}, data); - newData.files = fileSet ? element : [element]; - newData.paramName = paramNameSet[index]; - that._initResponseObject(newData); - that._initProgressObject(newData); - that._addConvenienceMethods(e, newData); - result = that._trigger( - 'add', - $.Event('add', {delegatedEvent: e}), - newData - ); - return result; - }); - return result; - }, - - _replaceFileInput: function (data) { - var input = data.fileInput, - inputClone = input.clone(true), - restoreFocus = input.is(document.activeElement); - // Add a reference for the new cloned file input to the data argument: - data.fileInputClone = inputClone; - $('
    ').append(inputClone)[0].reset(); - // Detaching allows to insert the fileInput on another form - // without loosing the file input value: - input.after(inputClone).detach(); - // If the fileInput had focus before it was detached, - // restore focus to the inputClone. - if (restoreFocus) { - inputClone.focus(); - } - // Avoid memory leaks with the detached file input: - $.cleanData(input.unbind('remove')); - // Replace the original file input element in the fileInput - // elements set with the clone, which has been copied including - // event handlers: - this.options.fileInput = this.options.fileInput.map(function (i, el) { - if (el === input[0]) { - return inputClone[0]; - } - return el; - }); - // If the widget has been initialized on the file input itself, - // override this.element with the file input clone: - if (input[0] === this.element[0]) { - this.element = inputClone; - } - }, - - _handleFileTreeEntry: function (entry, path) { - var that = this, - dfd = $.Deferred(), - entries = [], - dirReader, - errorHandler = function (e) { - if (e && !e.entry) { - e.entry = entry; - } - // Since $.when returns immediately if one - // Deferred is rejected, we use resolve instead. - // This allows valid files and invalid items - // to be returned together in one set: - dfd.resolve([e]); - }, - successHandler = function (entries) { - that._handleFileTreeEntries( - entries, - path + entry.name + '/' - ).done(function (files) { - dfd.resolve(files); - }).fail(errorHandler); - }, - readEntries = function () { - dirReader.readEntries(function (results) { - if (!results.length) { - successHandler(entries); - } else { - entries = entries.concat(results); - readEntries(); - } - }, errorHandler); - }; - path = path || ''; - if (entry.isFile) { - if (entry._file) { - // Workaround for Chrome bug #149735 - entry._file.relativePath = path; - dfd.resolve(entry._file); - } else { - entry.file(function (file) { - file.relativePath = path; - dfd.resolve(file); - }, errorHandler); - } - } else if (entry.isDirectory) { - dirReader = entry.createReader(); - readEntries(); - } else { - // Return an empy list for file system items - // other than files or directories: - dfd.resolve([]); - } - return dfd.promise(); - }, - - _handleFileTreeEntries: function (entries, path) { - var that = this; - return $.when.apply( - $, - $.map(entries, function (entry) { - return that._handleFileTreeEntry(entry, path); - }) - ).then(function () { - return Array.prototype.concat.apply( - [], - arguments - ); - }); - }, - - _getDroppedFiles: function (dataTransfer) { - dataTransfer = dataTransfer || {}; - var items = dataTransfer.items; - if (items && items.length && (items[0].webkitGetAsEntry || - items[0].getAsEntry)) { - return this._handleFileTreeEntries( - $.map(items, function (item) { - var entry; - if (item.webkitGetAsEntry) { - entry = item.webkitGetAsEntry(); - if (entry) { - // Workaround for Chrome bug #149735: - entry._file = item.getAsFile(); - } - return entry; - } - return item.getAsEntry(); - }) - ); - } - return $.Deferred().resolve( - $.makeArray(dataTransfer.files) - ).promise(); - }, - - _getSingleFileInputFiles: function (fileInput) { - fileInput = $(fileInput); - var entries = fileInput.prop('webkitEntries') || - fileInput.prop('entries'), - files, - value; - if (entries && entries.length) { - return this._handleFileTreeEntries(entries); - } - files = $.makeArray(fileInput.prop('files')); - if (!files.length) { - value = fileInput.prop('value'); - if (!value) { - return $.Deferred().resolve([]).promise(); - } - // If the files property is not available, the browser does not - // support the File API and we add a pseudo File object with - // the input value as name with path information removed: - files = [{name: value.replace(/^.*\\/, '')}]; - } else if (files[0].name === undefined && files[0].fileName) { - // File normalization for Safari 4 and Firefox 3: - $.each(files, function (index, file) { - file.name = file.fileName; - file.size = file.fileSize; - }); - } - return $.Deferred().resolve(files).promise(); - }, - - _getFileInputFiles: function (fileInput) { - if (!(fileInput instanceof $) || fileInput.length === 1) { - return this._getSingleFileInputFiles(fileInput); - } - return $.when.apply( - $, - $.map(fileInput, this._getSingleFileInputFiles) - ).then(function () { - return Array.prototype.concat.apply( - [], - arguments - ); - }); - }, - - _onChange: function (e) { - var that = this, - data = { - fileInput: $(e.target), - form: $(e.target.form) - }; - this._getFileInputFiles(data.fileInput).always(function (files) { - data.files = files; - if (that.options.replaceFileInput) { - that._replaceFileInput(data); - } - if (that._trigger( - 'change', - $.Event('change', {delegatedEvent: e}), - data - ) !== false) { - that._onAdd(e, data); - } - }); - }, - - _onPaste: function (e) { - var items = e.originalEvent && e.originalEvent.clipboardData && - e.originalEvent.clipboardData.items, - data = {files: []}; - if (items && items.length) { - $.each(items, function (index, item) { - var file = item.getAsFile && item.getAsFile(); - if (file) { - data.files.push(file); - } - }); - if (this._trigger( - 'paste', - $.Event('paste', {delegatedEvent: e}), - data - ) !== false) { - this._onAdd(e, data); - } - } - }, - - _onDrop: function (e) { - e.dataTransfer = e.originalEvent && e.originalEvent.dataTransfer; - var that = this, - dataTransfer = e.dataTransfer, - data = {}; - if (dataTransfer && dataTransfer.files && dataTransfer.files.length) { - e.preventDefault(); - this._getDroppedFiles(dataTransfer).always(function (files) { - data.files = files; - if (that._trigger( - 'drop', - $.Event('drop', {delegatedEvent: e}), - data - ) !== false) { - that._onAdd(e, data); - } - }); - } - }, - - _onDragOver: getDragHandler('dragover'), - - _onDragEnter: getDragHandler('dragenter'), - - _onDragLeave: getDragHandler('dragleave'), - - _initEventHandlers: function () { - if (this._isXHRUpload(this.options)) { - this._on(this.options.dropZone, { - dragover: this._onDragOver, - drop: this._onDrop, - // event.preventDefault() on dragenter is required for IE10+: - dragenter: this._onDragEnter, - // dragleave is not required, but added for completeness: - dragleave: this._onDragLeave - }); - this._on(this.options.pasteZone, { - paste: this._onPaste - }); - } - if ($.support.fileInput) { - this._on(this.options.fileInput, { - change: this._onChange - }); - } - }, - - _destroyEventHandlers: function () { - this._off(this.options.dropZone, 'dragenter dragleave dragover drop'); - this._off(this.options.pasteZone, 'paste'); - this._off(this.options.fileInput, 'change'); - }, - - _destroy: function () { - this._destroyEventHandlers(); - }, - - _setOption: function (key, value) { - var reinit = $.inArray(key, this._specialOptions) !== -1; - if (reinit) { - this._destroyEventHandlers(); - } - this._super(key, value); - if (reinit) { - this._initSpecialOptions(); - this._initEventHandlers(); - } - }, - - _initSpecialOptions: function () { - var options = this.options; - if (options.fileInput === undefined) { - options.fileInput = this.element.is('input[type="file"]') ? - this.element : this.element.find('input[type="file"]'); - } else if (!(options.fileInput instanceof $)) { - options.fileInput = $(options.fileInput); - } - if (!(options.dropZone instanceof $)) { - options.dropZone = $(options.dropZone); - } - if (!(options.pasteZone instanceof $)) { - options.pasteZone = $(options.pasteZone); - } - }, - - _getRegExp: function (str) { - var parts = str.split('/'), - modifiers = parts.pop(); - parts.shift(); - return new RegExp(parts.join('/'), modifiers); - }, - - _isRegExpOption: function (key, value) { - return key !== 'url' && $.type(value) === 'string' && - /^\/.*\/[igm]{0,3}$/.test(value); - }, - - _initDataAttributes: function () { - var that = this, - options = this.options, - data = this.element.data(); - // Initialize options set via HTML5 data-attributes: - $.each( - this.element[0].attributes, - function (index, attr) { - var key = attr.name.toLowerCase(), - value; - if (/^data-/.test(key)) { - // Convert hyphen-ated key to camelCase: - key = key.slice(5).replace(/-[a-z]/g, function (str) { - return str.charAt(1).toUpperCase(); - }); - value = data[key]; - if (that._isRegExpOption(key, value)) { - value = that._getRegExp(value); - } - options[key] = value; - } - } - ); - }, - - _create: function () { - this._initDataAttributes(); - this._initSpecialOptions(); - this._slots = []; - this._sequence = this._getXHRPromise(true); - this._sending = this._active = 0; - this._initProgressObject(this); - this._initEventHandlers(); - }, - - // This method is exposed to the widget API and allows to query - // the number of active uploads: - active: function () { - return this._active; - }, - - // This method is exposed to the widget API and allows to query - // the widget upload progress. - // It returns an object with loaded, total and bitrate properties - // for the running uploads: - progress: function () { - return this._progress; - }, - - // This method is exposed to the widget API and allows adding files - // using the fileupload API. The data parameter accepts an object which - // must have a files property and can contain additional options: - // .fileupload('add', {files: filesList}); - add: function (data) { - var that = this; - if (!data || this.options.disabled) { - return; - } - if (data.fileInput && !data.files) { - this._getFileInputFiles(data.fileInput).always(function (files) { - data.files = files; - that._onAdd(null, data); - }); - } else { - data.files = $.makeArray(data.files); - this._onAdd(null, data); - } - }, - - // This method is exposed to the widget API and allows sending files - // using the fileupload API. The data parameter accepts an object which - // must have a files or fileInput property and can contain additional options: - // .fileupload('send', {files: filesList}); - // The method returns a Promise object for the file upload call. - send: function (data) { - if (data && !this.options.disabled) { - if (data.fileInput && !data.files) { - var that = this, - dfd = $.Deferred(), - promise = dfd.promise(), - jqXHR, - aborted; - promise.abort = function () { - aborted = true; - if (jqXHR) { - return jqXHR.abort(); - } - dfd.reject(null, 'abort', 'abort'); - return promise; - }; - this._getFileInputFiles(data.fileInput).always( - function (files) { - if (aborted) { - return; - } - if (!files.length) { - dfd.reject(); - return; - } - data.files = files; - jqXHR = that._onSend(null, data); - jqXHR.then( - function (result, textStatus, jqXHR) { - dfd.resolve(result, textStatus, jqXHR); - }, - function (jqXHR, textStatus, errorThrown) { - dfd.reject(jqXHR, textStatus, errorThrown); - } - ); - } - ); - return this._enhancePromise(promise); - } - data.files = $.makeArray(data.files); - if (data.files.length) { - return this._onSend(null, data); - } - } - return this._getXHRPromise(false, data && data.context); - } - - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/jquery.iframe-transport.js b/libraries/filemanager-9.12.1/js/jquery.iframe-transport.js deleted file mode 100644 index 8d25c46..0000000 --- a/libraries/filemanager-9.12.1/js/jquery.iframe-transport.js +++ /dev/null @@ -1,224 +0,0 @@ -/* - * jQuery Iframe Transport Plugin - * https://github.com/blueimp/jQuery-File-Upload - * - * Copyright 2011, Sebastian Tschan - * https://blueimp.net - * - * Licensed under the MIT license: - * https://opensource.org/licenses/MIT - */ - -/* global define, require, window, document, JSON */ - -;(function (factory) { - 'use strict'; - if (typeof define === 'function' && define.amd) { - // Register as an anonymous AMD module: - define(['jquery'], factory); - } else if (typeof exports === 'object') { - // Node/CommonJS: - factory(require('jquery')); - } else { - // Browser globals: - factory(window.jQuery); - } -}(function ($) { - 'use strict'; - - // Helper variable to create unique names for the transport iframes: - var counter = 0, - jsonAPI = $, - jsonParse = 'parseJSON'; - - if ('JSON' in window && 'parse' in JSON) { - jsonAPI = JSON; - jsonParse = 'parse'; - } - - // The iframe transport accepts four additional options: - // options.fileInput: a jQuery collection of file input fields - // options.paramName: the parameter name for the file form data, - // overrides the name property of the file input field(s), - // can be a string or an array of strings. - // options.formData: an array of objects with name and value properties, - // equivalent to the return data of .serializeArray(), e.g.: - // [{name: 'a', value: 1}, {name: 'b', value: 2}] - // options.initialIframeSrc: the URL of the initial iframe src, - // by default set to "javascript:false;" - $.ajaxTransport('iframe', function (options) { - if (options.async) { - // javascript:false as initial iframe src - // prevents warning popups on HTTPS in IE6: - /*jshint scripturl: true */ - var initialIframeSrc = options.initialIframeSrc || 'javascript:false;', - /*jshint scripturl: false */ - form, - iframe, - addParamChar; - return { - send: function (_, completeCallback) { - form = $('
    '); - form.attr('accept-charset', options.formAcceptCharset); - addParamChar = /\?/.test(options.url) ? '&' : '?'; - // XDomainRequest only supports GET and POST: - if (options.type === 'DELETE') { - options.url = options.url + addParamChar + '_method=DELETE'; - options.type = 'POST'; - } else if (options.type === 'PUT') { - options.url = options.url + addParamChar + '_method=PUT'; - options.type = 'POST'; - } else if (options.type === 'PATCH') { - options.url = options.url + addParamChar + '_method=PATCH'; - options.type = 'POST'; - } - // IE versions below IE8 cannot set the name property of - // elements that have already been added to the DOM, - // so we set the name along with the iframe HTML markup: - counter += 1; - iframe = $( - '' - ).bind('load', function () { - var fileInputClones, - paramNames = $.isArray(options.paramName) ? - options.paramName : [options.paramName]; - iframe - .unbind('load') - .bind('load', function () { - var response; - // Wrap in a try/catch block to catch exceptions thrown - // when trying to access cross-domain iframe contents: - try { - response = iframe.contents(); - // Google Chrome and Firefox do not throw an - // exception when calling iframe.contents() on - // cross-domain requests, so we unify the response: - if (!response.length || !response[0].firstChild) { - throw new Error(); - } - } catch (e) { - response = undefined; - } - // The complete callback returns the - // iframe content document as response object: - completeCallback( - 200, - 'success', - {'iframe': response} - ); - // Fix for IE endless progress bar activity bug - // (happens on form submits to iframe targets): - $('') - .appendTo(form); - window.setTimeout(function () { - // Removing the form in a setTimeout call - // allows Chrome's developer tools to display - // the response result - form.remove(); - }, 0); - }); - form - .prop('target', iframe.prop('name')) - .prop('action', options.url) - .prop('method', options.type); - if (options.formData) { - $.each(options.formData, function (index, field) { - $('') - .prop('name', field.name) - .val(field.value) - .appendTo(form); - }); - } - if (options.fileInput && options.fileInput.length && - options.type === 'POST') { - fileInputClones = options.fileInput.clone(); - // Insert a clone for each file input field: - options.fileInput.after(function (index) { - return fileInputClones[index]; - }); - if (options.paramName) { - options.fileInput.each(function (index) { - $(this).prop( - 'name', - paramNames[index] || options.paramName - ); - }); - } - // Appending the file input fields to the hidden form - // removes them from their original location: - form - .append(options.fileInput) - .prop('enctype', 'multipart/form-data') - // enctype must be set as encoding for IE: - .prop('encoding', 'multipart/form-data'); - // Remove the HTML5 form attribute from the input(s): - options.fileInput.removeAttr('form'); - } - form.submit(); - // Insert the file input fields at their original location - // by replacing the clones with the originals: - if (fileInputClones && fileInputClones.length) { - options.fileInput.each(function (index, input) { - var clone = $(fileInputClones[index]); - // Restore the original name and form properties: - $(input) - .prop('name', clone.prop('name')) - .attr('form', clone.attr('form')); - clone.replaceWith(input); - }); - } - }); - form.append(iframe).appendTo(document.body); - }, - abort: function () { - if (iframe) { - // javascript:false as iframe src aborts the request - // and prevents warning popups on HTTPS in IE6. - // concat is used to avoid the "Script URL" JSLint error: - iframe - .unbind('load') - .prop('src', initialIframeSrc); - } - if (form) { - form.remove(); - } - } - }; - } - }); - - // The iframe transport returns the iframe content document as response. - // The following adds converters from iframe to text, json, html, xml - // and script. - // Please note that the Content-Type for JSON responses has to be text/plain - // or text/html, if the browser doesn't include application/json in the - // Accept header, else IE will show a download dialog. - // The Content-Type for XML responses on the other hand has to be always - // application/xml or text/xml, so IE properly parses the XML response. - // See also - // https://github.com/blueimp/jQuery-File-Upload/wiki/Setup#content-type-negotiation - $.ajaxSetup({ - converters: { - 'iframe text': function (iframe) { - return iframe && $(iframe[0].body).text(); - }, - 'iframe json': function (iframe) { - return iframe && jsonAPI[jsonParse]($(iframe[0].body).text()); - }, - 'iframe html': function (iframe) { - return iframe && $(iframe[0].body).html(); - }, - 'iframe xml': function (iframe) { - var xmlDoc = iframe && iframe[0]; - return xmlDoc && $.isXMLDoc(xmlDoc) ? xmlDoc : - $.parseXML((xmlDoc.XMLDocument && xmlDoc.XMLDocument.xml) || - $(xmlDoc.body).html()); - }, - 'iframe script': function (iframe) { - return iframe && $.globalEval($(iframe[0].body).text()); - } - } - }); - -})); diff --git a/libraries/filemanager-9.12.1/js/modernizr.custom.js b/libraries/filemanager-9.12.1/js/modernizr.custom.js deleted file mode 100644 index 2ec5cd3..0000000 --- a/libraries/filemanager-9.12.1/js/modernizr.custom.js +++ /dev/null @@ -1,4 +0,0 @@ -/* Modernizr 2.7.1 (Custom Build) | MIT & BSD - * Build: http://modernizr.com/download/#-fontface-backgroundsize-borderimage-borderradius-boxshadow-flexbox-flexboxlegacy-hsla-multiplebgs-opacity-rgba-textshadow-cssanimations-csscolumns-generatedcontent-cssgradients-cssreflections-csstransforms-csstransforms3d-csstransitions-applicationcache-canvas-canvastext-draganddrop-hashchange-history-audio-video-indexeddb-input-inputtypes-localstorage-postmessage-sessionstorage-websockets-websqldatabase-webworkers-shiv-cssclasses-teststyles-testprop-testallprops-hasevent-prefixes-domprefixes-load - */ -;window.Modernizr=function(a,b,c){function B(a){j.cssText=a}function C(a,b){return B(n.join(a+";")+(b||""))}function D(a,b){return typeof a===b}function E(a,b){return!!~(""+a).indexOf(b)}function F(a,b){for(var d in a){var e=a[d];if(!E(e,"-")&&j[e]!==c)return b=="pfx"?e:!0}return!1}function G(a,b,d){for(var e in a){var f=b[a[e]];if(f!==c)return d===!1?a[e]:D(f,"function")?f.bind(d||b):f}return!1}function H(a,b,c){var d=a.charAt(0).toUpperCase()+a.slice(1),e=(a+" "+p.join(d+" ")+d).split(" ");return D(b,"string")||D(b,"undefined")?F(e,b):(e=(a+" "+q.join(d+" ")+d).split(" "),G(e,b,c))}function I(){e.input=function(c){for(var d=0,e=c.length;d',a,""].join(""),l.id=h,(m?l:n).innerHTML+=f,n.appendChild(l),m||(n.style.background="",n.style.overflow="hidden",k=g.style.overflow,g.style.overflow="hidden",g.appendChild(n)),i=c(l,a),m?l.parentNode.removeChild(l):(n.parentNode.removeChild(n),g.style.overflow=k),!!i},y=function(){function d(d,e){e=e||b.createElement(a[d]||"div"),d="on"+d;var f=d in e;return f||(e.setAttribute||(e=b.createElement("div")),e.setAttribute&&e.removeAttribute&&(e.setAttribute(d,""),f=D(e[d],"function"),D(e[d],"undefined")||(e[d]=c),e.removeAttribute(d))),e=null,f}var a={select:"input",change:"input",submit:"form",reset:"form",error:"img",load:"img",abort:"img"};return d}(),z={}.hasOwnProperty,A;!D(z,"undefined")&&!D(z.call,"undefined")?A=function(a,b){return z.call(a,b)}:A=function(a,b){return b in a&&D(a.constructor.prototype[b],"undefined")},Function.prototype.bind||(Function.prototype.bind=function(b){var c=this;if(typeof c!="function")throw new TypeError;var d=v.call(arguments,1),e=function(){if(this instanceof e){var a=function(){};a.prototype=c.prototype;var f=new a,g=c.apply(f,d.concat(v.call(arguments)));return Object(g)===g?g:f}return c.apply(b,d.concat(v.call(arguments)))};return e}),r.flexbox=function(){return H("flexWrap")},r.flexboxlegacy=function(){return H("boxDirection")},r.canvas=function(){var a=b.createElement("canvas");return!!a.getContext&&!!a.getContext("2d")},r.canvastext=function(){return!!e.canvas&&!!D(b.createElement("canvas").getContext("2d").fillText,"function")},r.postmessage=function(){return!!a.postMessage},r.websqldatabase=function(){return!!a.openDatabase},r.indexedDB=function(){return!!H("indexedDB",a)},r.hashchange=function(){return y("hashchange",a)&&(b.documentMode===c||b.documentMode>7)},r.history=function(){return!!a.history&&!!history.pushState},r.draganddrop=function(){var a=b.createElement("div");return"draggable"in a||"ondragstart"in a&&"ondrop"in a},r.websockets=function(){return"WebSocket"in a||"MozWebSocket"in a},r.rgba=function(){return B("background-color:rgba(150,255,150,.5)"),E(j.backgroundColor,"rgba")},r.hsla=function(){return B("background-color:hsla(120,40%,100%,.5)"),E(j.backgroundColor,"rgba")||E(j.backgroundColor,"hsla")},r.multiplebgs=function(){return B("background:url(https://),url(https://),red url(https://)"),/(url\s*\(.*?){3}/.test(j.background)},r.backgroundsize=function(){return H("backgroundSize")},r.borderimage=function(){return H("borderImage")},r.borderradius=function(){return H("borderRadius")},r.boxshadow=function(){return H("boxShadow")},r.textshadow=function(){return b.createElement("div").style.textShadow===""},r.opacity=function(){return C("opacity:.55"),/^0.55$/.test(j.opacity)},r.cssanimations=function(){return H("animationName")},r.csscolumns=function(){return H("columnCount")},r.cssgradients=function(){var a="background-image:",b="gradient(linear,left top,right bottom,from(#9f9),to(white));",c="linear-gradient(left top,#9f9, white);";return B((a+"-webkit- ".split(" ").join(b+a)+n.join(c+a)).slice(0,-a.length)),E(j.backgroundImage,"gradient")},r.cssreflections=function(){return H("boxReflect")},r.csstransforms=function(){return!!H("transform")},r.csstransforms3d=function(){var a=!!H("perspective");return a&&"webkitPerspective"in g.style&&x("@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}",function(b,c){a=b.offsetLeft===9&&b.offsetHeight===3}),a},r.csstransitions=function(){return H("transition")},r.fontface=function(){var a;return x('@font-face {font-family:"font";src:url("https://")}',function(c,d){var e=b.getElementById("smodernizr"),f=e.sheet||e.styleSheet,g=f?f.cssRules&&f.cssRules[0]?f.cssRules[0].cssText:f.cssText||"":"";a=/src/i.test(g)&&g.indexOf(d.split(" ")[0])===0}),a},r.generatedcontent=function(){var a;return x(["#",h,"{font:0/0 a}#",h,':after{content:"',l,'";visibility:hidden;font:3px/1 a}'].join(""),function(b){a=b.offsetHeight>=3}),a},r.video=function(){var a=b.createElement("video"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('video/ogg; codecs="theora"').replace(/^no$/,""),c.h264=a.canPlayType('video/mp4; codecs="avc1.42E01E"').replace(/^no$/,""),c.webm=a.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,"")}catch(d){}return c},r.audio=function(){var a=b.createElement("audio"),c=!1;try{if(c=!!a.canPlayType)c=new Boolean(c),c.ogg=a.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),c.mp3=a.canPlayType("audio/mpeg;").replace(/^no$/,""),c.wav=a.canPlayType('audio/wav; codecs="1"').replace(/^no$/,""),c.m4a=(a.canPlayType("audio/x-m4a;")||a.canPlayType("audio/aac;")).replace(/^no$/,"")}catch(d){}return c},r.localstorage=function(){try{return localStorage.setItem(h,h),localStorage.removeItem(h),!0}catch(a){return!1}},r.sessionstorage=function(){try{return sessionStorage.setItem(h,h),sessionStorage.removeItem(h),!0}catch(a){return!1}},r.webworkers=function(){return!!a.Worker},r.applicationcache=function(){return!!a.applicationCache};for(var J in r)A(r,J)&&(w=J.toLowerCase(),e[w]=r[J](),u.push((e[w]?"":"no-")+w));return e.input||I(),e.addTest=function(a,b){if(typeof a=="object")for(var d in a)A(a,d)&&e.addTest(d,a[d]);else{a=a.toLowerCase();if(e[a]!==c)return e;b=typeof b=="function"?b():b,typeof f!="undefined"&&f&&(g.className+=" "+(b?"":"no-")+a),e[a]=b}return e},B(""),i=k=null,function(a,b){function l(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x",d.insertBefore(c.lastChild,d.firstChild)}function m(){var a=s.elements;return typeof a=="string"?a.split(" "):a}function n(a){var b=j[a[h]];return b||(b={},i++,a[h]=i,j[i]=b),b}function o(a,c,d){c||(c=b);if(k)return c.createElement(a);d||(d=n(c));var g;return d.cache[a]?g=d.cache[a].cloneNode():f.test(a)?g=(d.cache[a]=d.createElem(a)).cloneNode():g=d.createElem(a),g.canHaveChildren&&!e.test(a)&&!g.tagUrn?d.frag.appendChild(g):g}function p(a,c){a||(a=b);if(k)return a.createDocumentFragment();c=c||n(a);var d=c.frag.cloneNode(),e=0,f=m(),g=f.length;for(;e",g="hidden"in a,k=a.childNodes.length==1||function(){b.createElement("a");var a=b.createDocumentFragment();return typeof a.cloneNode=="undefined"||typeof a.createDocumentFragment=="undefined"||typeof a.createElement=="undefined"}()}catch(c){g=!0,k=!0}})();var s={elements:d.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video",version:c,shivCSS:d.shivCSS!==!1,supportsUnknownElements:k,shivMethods:d.shivMethods!==!1,type:"default",shivDocument:r,createElement:o,createDocumentFragment:p};a.html5=s,r(b)}(this,b),e._version=d,e._prefixes=n,e._domPrefixes=q,e._cssomPrefixes=p,e.hasEvent=y,e.testProp=function(a){return F([a])},e.testAllProps=H,e.testStyles=x,g.className=g.className.replace(/(^|\s)no-js(\s|$)/,"$1$2")+(f?" js "+u.join(" "):""),e}(this,this.document),function(a,b,c){function d(a){return"[object Function]"==o.call(a)}function e(a){return"string"==typeof a}function f(){}function g(a){return!a||"loaded"==a||"complete"==a||"uninitialized"==a}function h(){var a=p.shift();q=1,a?a.t?m(function(){("c"==a.t?B.injectCss:B.injectJs)(a.s,0,a.a,a.x,a.e,1)},0):(a(),h()):q=0}function i(a,c,d,e,f,i,j){function k(b){if(!o&&g(l.readyState)&&(u.r=o=1,!q&&h(),l.onload=l.onreadystatechange=null,b)){"img"!=a&&m(function(){t.removeChild(l)},50);for(var d in y[c])y[c].hasOwnProperty(d)&&y[c][d].onload()}}var j=j||B.errorTimeout,l=b.createElement(a),o=0,r=0,u={t:d,s:c,e:f,a:i,x:j};1===y[c]&&(r=1,y[c]=[]),"object"==a?l.data=c:(l.src=c,l.type=a),l.width=l.height="0",l.onerror=l.onload=l.onreadystatechange=function(){k.call(this,r)},p.splice(e,0,u),"img"!=a&&(r||2===y[c]?(t.insertBefore(l,s?null:n),m(k,j)):y[c].push(l))}function j(a,b,c,d,f){return q=0,b=b||"j",e(a)?i("c"==b?v:u,a,b,this.i++,c,d,f):(p.splice(this.i++,0,a),1==p.length&&h()),this}function k(){var a=B;return a.loader={load:j,i:0},a}var l=b.documentElement,m=a.setTimeout,n=b.getElementsByTagName("script")[0],o={}.toString,p=[],q=0,r="MozAppearance"in l.style,s=r&&!!b.createRange().compareNode,t=s?l:n.parentNode,l=a.opera&&"[object Opera]"==o.call(a.opera),l=!!b.attachEvent&&!l,u=r?"object":l?"script":"img",v=l?"script":u,w=Array.isArray||function(a){return"[object Array]"==o.call(a)},x=[],y={},z={timeout:function(a,b){return b.length&&(a.timeout=b[0]),a}},A,B;B=function(a){function b(a){var a=a.split("!"),b=x.length,c=a.pop(),d=a.length,c={url:c,origUrl:c,prefixes:a},e,f,g;for(f=0;f= scrollHeight - offsetBottom) ? - 'bottom' : offsetTop != null && scrollTop <= offsetTop ? - 'top' : false - - if (this.affixed === affix) return - - this.affixed = affix - this.unpin = affix == 'bottom' ? position.top - scrollTop : null - - this.$element.removeClass(reset).addClass('affix' + (affix ? '-' + affix : '')) - } - - - /* AFFIX PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.affix - - $.fn.affix = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('affix') - , options = typeof option == 'object' && option - if (!data) $this.data('affix', (data = new Affix(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - $.fn.affix.Constructor = Affix - - $.fn.affix.defaults = { - offset: 0 - } - - - /* AFFIX NO CONFLICT - * ================= */ - - $.fn.affix.noConflict = function () { - $.fn.affix = old - return this - } - - - /* AFFIX DATA-API - * ============== */ - - $(window).on('load', function () { - $('[data-spy="affix"]').each(function () { - var $spy = $(this) - , data = $spy.data() - - data.offset = data.offset || {} - - data.offsetBottom && (data.offset.bottom = data.offsetBottom) - data.offsetTop && (data.offset.top = data.offsetTop) - - $spy.affix(data) - }) - }) - - -}(window.jQuery); -/* ============================================================ - * bootstrap-dropdown.js v2.3.1 - * http://twitter.github.com/bootstrap/javascript.html#dropdowns - * ============================================================ - * Copyright 2012 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================ */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* DROPDOWN CLASS DEFINITION - * ========================= */ - - var toggle = '[data-toggle=dropdown]' - , Dropdown = function (element) { - var $el = $(element).on('click.dropdown.data-api', this.toggle) - $('html').on('click.dropdown.data-api', function () { - $el.parent().removeClass('open') - }) - } - - Dropdown.prototype = { - - constructor: Dropdown - - , toggle: function (e) { - var $this = $(this) - , $parent - , isActive - - if ($this.is('.disabled, :disabled')) return - - $parent = getParent($this) - - isActive = $parent.hasClass('open') - - clearMenus() - - if (!isActive) { - $parent.toggleClass('open') - } - - $this.focus() - - return false - } - - , keydown: function (e) { - var $this - , $items - , $active - , $parent - , isActive - , index - - if (!/(38|40|27)/.test(e.keyCode)) return - - $this = $(this) - - e.preventDefault() - e.stopPropagation() - - if ($this.is('.disabled, :disabled')) return - - $parent = getParent($this) - - isActive = $parent.hasClass('open') - - if (!isActive || (isActive && e.keyCode == 27)) { - if (e.which == 27) $parent.find(toggle).focus() - return $this.click() - } - - $items = $('[role=menu] li:not(.divider):visible a', $parent) - - if (!$items.length) return - - index = $items.index($items.filter(':focus')) - - if (e.keyCode == 38 && index > 0) index-- // up - if (e.keyCode == 40 && index < $items.length - 1) index++ // down - if (!~index) index = 0 - - $items - .eq(index) - .focus() - } - - } - - function clearMenus() { - $(toggle).each(function () { - getParent($(this)).removeClass('open') - }) - } - - function getParent($this) { - var selector = $this.attr('data-target') - , $parent - - if (!selector) { - selector = $this.attr('href') - selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 - } - - $parent = selector && $(selector) - - if (!$parent || !$parent.length) $parent = $this.parent() - - return $parent - } - - - /* DROPDOWN PLUGIN DEFINITION - * ========================== */ - - var old = $.fn.dropdown - - $.fn.dropdown = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('dropdown') - if (!data) $this.data('dropdown', (data = new Dropdown(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - $.fn.dropdown.Constructor = Dropdown - - - /* DROPDOWN NO CONFLICT - * ==================== */ - - $.fn.dropdown.noConflict = function () { - $.fn.dropdown = old - return this - } - - - /* APPLY TO STANDARD DROPDOWN ELEMENTS - * =================================== */ - - $(document) - .on('click.dropdown.data-api', clearMenus) - .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) - .on('click.dropdown-menu', function (e) { e.stopPropagation() }) - .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle) - .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) - -}(window.jQuery); - -/* ========================================================== - * bootstrap-alert.js v2.3.1 - * http://twitter.github.com/bootstrap/javascript.html#alerts - * ========================================================== - * Copyright 2012 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================== */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* ALERT CLASS DEFINITION - * ====================== */ - - var dismiss = '[data-dismiss="alert"]' - , Alert = function (el) { - $(el).on('click', dismiss, this.close) - } - - Alert.prototype.close = function (e) { - var $this = $(this) - , selector = $this.attr('data-target') - , $parent - - if (!selector) { - selector = $this.attr('href') - selector = selector && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 - } - - $parent = $(selector) - - e && e.preventDefault() - - $parent.length || ($parent = $this.hasClass('alert') ? $this : $this.parent()) - - $parent.trigger(e = $.Event('close')) - - if (e.isDefaultPrevented()) return - - $parent.removeClass('in') - - function removeElement() { - $parent - .trigger('closed') - .remove() - } - - $.support.transition && $parent.hasClass('fade') ? - $parent.on($.support.transition.end, removeElement) : - removeElement() - } - - - /* ALERT PLUGIN DEFINITION - * ======================= */ - - var old = $.fn.alert - - $.fn.alert = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('alert') - if (!data) $this.data('alert', (data = new Alert(this))) - if (typeof option == 'string') data[option].call($this) - }) - } - - $.fn.alert.Constructor = Alert - - - /* ALERT NO CONFLICT - * ================= */ - - $.fn.alert.noConflict = function () { - $.fn.alert = old - return this - } - - - /* ALERT DATA-API - * ============== */ - - $(document).on('click.alert.data-api', dismiss, Alert.prototype.close) - -}(window.jQuery); -/* ============================================================ - * bootstrap-button.js v2.3.1 - * http://twitter.github.com/bootstrap/javascript.html#buttons - * ============================================================ - * Copyright 2012 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================ */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* BUTTON PUBLIC CLASS DEFINITION - * ============================== */ - - var Button = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, $.fn.button.defaults, options) - } - - Button.prototype.setState = function (state) { - var d = 'disabled' - , $el = this.$element - , data = $el.data() - , val = $el.is('input') ? 'val' : 'html' - - state = state + 'Text' - data.resetText || $el.data('resetText', $el[val]()) - - $el[val](data[state] || this.options[state]) - - // push to event loop to allow forms to submit - setTimeout(function () { - state == 'loadingText' ? - $el.addClass(d).attr(d, d) : - $el.removeClass(d).removeAttr(d) - }, 0) - } - - Button.prototype.toggle = function () { - var $parent = this.$element.closest('[data-toggle="buttons-radio"]') - - $parent && $parent - .find('.active') - .removeClass('active') - - this.$element.toggleClass('active') - } - - - /* BUTTON PLUGIN DEFINITION - * ======================== */ - - var old = $.fn.button - - $.fn.button = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('button') - , options = typeof option == 'object' && option - if (!data) $this.data('button', (data = new Button(this, options))) - if (option == 'toggle') data.toggle() - else if (option) data.setState(option) - }) - } - - $.fn.button.defaults = { - loadingText: 'loading...' - } - - $.fn.button.Constructor = Button - - - /* BUTTON NO CONFLICT - * ================== */ - - $.fn.button.noConflict = function () { - $.fn.button = old - return this - } - - - /* BUTTON DATA-API - * =============== */ - - $(document).on('click.button.data-api', '[data-toggle^=button]', function (e) { - var $btn = $(e.target) - if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') - $btn.button('toggle') - }) - -}(window.jQuery); -/* ============================================================= - * bootstrap-collapse.js v2.3.1 - * http://twitter.github.com/bootstrap/javascript.html#collapse - * ============================================================= - * Copyright 2012 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================ */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* COLLAPSE PUBLIC CLASS DEFINITION - * ================================ */ - - var Collapse = function (element, options) { - this.$element = $(element) - this.options = $.extend({}, $.fn.collapse.defaults, options) - - if (this.options.parent) { - this.$parent = $(this.options.parent) - } - - this.options.toggle && this.toggle() - } - - Collapse.prototype = { - - constructor: Collapse - - , dimension: function () { - var hasWidth = this.$element.hasClass('width') - return hasWidth ? 'width' : 'height' - } - - , show: function () { - var dimension - , scroll - , actives - , hasData - - if (this.transitioning || this.$element.hasClass('in')) return - - dimension = this.dimension() - scroll = $.camelCase(['scroll', dimension].join('-')) - actives = this.$parent && this.$parent.find('> .accordion-group > .in') - - if (actives && actives.length) { - hasData = actives.data('collapse') - if (hasData && hasData.transitioning) return - actives.collapse('hide') - hasData || actives.data('collapse', null) - } - - this.$element[dimension](0) - this.transition('addClass', $.Event('show'), 'shown') - $.support.transition && this.$element[dimension](this.$element[0][scroll]) - } - - , hide: function () { - var dimension - if (this.transitioning || !this.$element.hasClass('in')) return - dimension = this.dimension() - this.reset(this.$element[dimension]()) - this.transition('removeClass', $.Event('hide'), 'hidden') - this.$element[dimension](0) - } - - , reset: function (size) { - var dimension = this.dimension() - - this.$element - .removeClass('collapse') - [dimension](size || 'auto') - [0].offsetWidth - - this.$element[size !== null ? 'addClass' : 'removeClass']('collapse') - - return this - } - - , transition: function (method, startEvent, completeEvent) { - var that = this - , complete = function () { - if (startEvent.type == 'show') that.reset() - that.transitioning = 0 - that.$element.trigger(completeEvent) - } - - this.$element.trigger(startEvent) - - if (startEvent.isDefaultPrevented()) return - - this.transitioning = 1 - - this.$element[method]('in') - - $.support.transition && this.$element.hasClass('collapse') ? - this.$element.one($.support.transition.end, complete) : - complete() - } - - , toggle: function () { - this[this.$element.hasClass('in') ? 'hide' : 'show']() - } - - } - - - /* COLLAPSE PLUGIN DEFINITION - * ========================== */ - - var old = $.fn.collapse - - $.fn.collapse = function (option) { - return this.each(function () { - var $this = $(this) - , data = $this.data('collapse') - , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option) - if (!data) $this.data('collapse', (data = new Collapse(this, options))) - if (typeof option == 'string') data[option]() - }) - } - - $.fn.collapse.defaults = { - toggle: true - } - - $.fn.collapse.Constructor = Collapse - - - /* COLLAPSE NO CONFLICT - * ==================== */ - - $.fn.collapse.noConflict = function () { - $.fn.collapse = old - return this - } - - - /* COLLAPSE DATA-API - * ================= */ - - $(document).on('click.collapse.data-api', '[data-toggle=collapse]', function (e) { - var $this = $(this), href - , target = $this.attr('data-target') - || e.preventDefault() - || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '') //strip for ie7 - , option = $(target).data('collapse') ? 'toggle' : $this.data() - $this[$(target).hasClass('in') ? 'addClass' : 'removeClass']('collapsed') - $(target).collapse(option) - }) - -}(window.jQuery); -/* ========================================================= - * bootstrap-modal.js v2.3.1 - * http://twitter.github.com/bootstrap/javascript.html#modals - * ========================================================= - * Copyright 2012 Twitter, Inc. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ========================================================= */ - - -!function ($) { - - "use strict"; // jshint ;_; - - - /* MODAL CLASS DEFINITION - * ====================== */ - - var Modal = function (element, options) { - this.options = options - this.$element = $(element) - .delegate('[data-dismiss="modal"]', 'click.dismiss.modal', $.proxy(this.hide, this)) - this.options.remote && this.$element.find('.modal-body').load(this.options.remote) - } - - Modal.prototype = { - - constructor: Modal - - , toggle: function () { - return this[!this.isShown ? 'show' : 'hide']() - } - - , show: function () { - var that = this - , e = $.Event('show') - - this.$element.trigger(e) - - if (this.isShown || e.isDefaultPrevented()) return - - this.isShown = true - - this.escape() - - this.backdrop(function () { - var transition = $.support.transition && that.$element.hasClass('fade') - - if (!that.$element.parent().length) { - that.$element.appendTo(document.body) //don't move modals dom position - } - - that.$element.show() - - if (transition) { - that.$element[0].offsetWidth // force reflow - } - - that.$element - .addClass('in') - .attr('aria-hidden', false) - - that.enforceFocus() - - transition ? - that.$element.one($.support.transition.end, function () { that.$element.focus().trigger('shown') }) : - that.$element.focus().trigger('shown') - - }) - } - - , hide: function (e) { - e && e.preventDefault() - - var that = this - - e = $.Event('hide') - - this.$element.trigger(e) - - if (!this.isShown || e.isDefaultPrevented()) return - - this.isShown = false - - this.escape() - - $(document).off('focusin.modal') - - this.$element - .removeClass('in') - .attr('aria-hidden', true) - - $.support.transition && this.$element.hasClass('fade') ? - this.hideWithTransition() : - this.hideModal() - } - - , enforceFocus: function () { - var that = this - $(document).on('focusin.modal', function (e) { - if (that.$element[0] !== e.target && !that.$element.has(e.target).length) { - that.$element.focus() - } - }) - } - - , escape: function () { - var that = this - if (this.isShown && this.options.keyboard) { - this.$element.on('keyup.dismiss.modal', function ( e ) { - e.which == 27 && that.hide() - }) - } else if (!this.isShown) { - this.$element.off('keyup.dismiss.modal') - } - } - - , hideWithTransition: function () { - var that = this - , timeout = setTimeout(function () { - that.$element.off($.support.transition.end) - that.hideModal() - }, 500) - - this.$element.one($.support.transition.end, function () { - clearTimeout(timeout) - that.hideModal() - }) - } - - , hideModal: function () { - var that = this - this.$element.hide() - this.backdrop(function () { - that.removeBackdrop() - that.$element.trigger('hidden') - }) - } - - , removeBackdrop: function () { - this.$backdrop && this.$backdrop.remove() - this.$backdrop = null - } - - , backdrop: function (callback) { - var that = this - , animate = this.$element.hasClass('fade') ? 'fade' : '' - - if (this.isShown && this.options.backdrop) { - var doAnimate = $.support.transition && animate - - this.$backdrop = $('