Wordfence Security – Firewall & Malware Scan - Version 7.1.9

Version Description

  • Improvement: Added an "unsubscribe" link to plugin-generated alerts.
  • Improvement: Added some additional flags.
  • Change: Removed some unnecessary files from the bundled GeoIP library.
  • Change: Updated wording in the Terms of Use/Privacy Policy agreement UI.
  • Change: The minimum "Lock out after how many login failures" is now 2.
  • Change: The diagnostics report now includes the scan issues for easier debugging.
  • Fix: Multiple improvements to automatic updating to avoid broken updates on sites with low resources or slow file systems.
  • Fix: Better text wrapping in the top failed logins widget.
  • Fix: Onboarding CSS/JS is now correctly enqueued for multisite installations.
  • Fix: Fixed a missing asset with the bundled jQueryUI library.
  • Fix: Fixed memory calculation when using PHP's supported shorthand syntax.
  • Fix: Better wrapping behavior on the reason column in the blocks table.
  • Fix: Fixed an issue with an internal data structure to prevent error log entries when using mbstring functions.
  • Fix: Improved bot detection when no user agent is sent.
Download this release

Release Info

Developer wfryan
Plugin Icon 128x128 Wordfence Security – Firewall & Malware Scan
Version 7.1.9
Comparing to
See all releases

Code changes from version 7.1.8 to 7.1.9

Files changed (93) hide show
  1. css/{activity-report-widget.1530033614.css → activity-report-widget.1531408399.css} +0 -0
  2. css/{diff.1530033614.css → diff.1531408399.css} +0 -0
  3. css/{dt_table.1530033614.css → dt_table.1531408399.css} +0 -0
  4. css/{fullLog.1530033614.css → fullLog.1531408399.css} +0 -0
  5. css/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  6. css/images/ui-bg_flat_100_1997c7_40x100.png +0 -0
  7. css/images/ui-bg_flat_100_222_40x100.png +0 -0
  8. css/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  9. css/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  10. css/images/ui-bg_highlight-soft_75_a5a5a5_1x100.png +0 -0
  11. css/images/ui-icons_222222_256x240.png +0 -0
  12. css/images/ui-icons_444444_256x240.png +0 -0
  13. css/images/ui-icons_555555_256x240.png +0 -0
  14. css/images/{ui-icons_fbe569_256x240.png → ui-icons_777620_256x240.png} +0 -0
  15. css/images/ui-icons_777777_256x240.png +0 -0
  16. css/images/{ui-icons_cd0a0a_256x240.png → ui-icons_cc0000_256x240.png} +0 -0
  17. css/images/{ui-icons_fff_256x240.png → ui-icons_ffffff_256x240.png} +0 -0
  18. css/{iptraf.1530033614.css → iptraf.1531408399.css} +0 -0
  19. css/{jquery-ui-timepicker-addon.1530033614.css → jquery-ui-timepicker-addon.1531408399.css} +0 -0
  20. css/{jquery-ui.min.1530033614.css → jquery-ui.min.1531408399.css} +4 -4
  21. css/{jquery-ui.structure.min.1530033614.css → jquery-ui.structure.min.1531408399.css} +2 -2
  22. css/jquery-ui.theme.min.1530033614.css +0 -5
  23. css/jquery-ui.theme.min.1531408399.css +5 -0
  24. css/{main.1530033614.css → main.1531408399.css} +0 -0
  25. css/{phpinfo.1530033614.css → phpinfo.1531408399.css} +0 -0
  26. css/{wf-adminbar.1530033614.css → wf-adminbar.1531408399.css} +0 -0
  27. css/{wf-colorbox.1530033614.css → wf-colorbox.1531408399.css} +0 -0
  28. css/{wf-font-awesome.1530033614.css → wf-font-awesome.1531408399.css} +0 -0
  29. css/{wf-ionicons.1530033614.css → wf-ionicons.1531408399.css} +0 -0
  30. css/{wf-onboarding.1530033614.css → wf-onboarding.1531408399.css} +0 -0
  31. css/{wf-roboto-font.1530033614.css → wf-roboto-font.1531408399.css} +0 -0
  32. css/{wfselect2.min.1530033614.css → wfselect2.min.1531408399.css} +0 -0
  33. css/{wordfenceBox.1530033614.css → wordfenceBox.1531408399.css} +0 -0
  34. images/flags/bl.png +0 -0
  35. images/flags/bq.png +0 -0
  36. images/flags/hm.png +0 -0
  37. images/flags/mf.png +0 -0
  38. images/flags/sj.png +0 -0
  39. images/flags/ss.png +0 -0
  40. images/flags/sx.png +0 -0
  41. images/flags/un.png +0 -0
  42. js/{Chart.bundle.min.1530033614.js → Chart.bundle.min.1531408399.js} +0 -0
  43. js/{admin.1530033614.js → admin.1531408399.js} +0 -0
  44. js/{admin.ajaxWatcher.1530033614.js → admin.ajaxWatcher.1531408399.js} +0 -0
  45. js/{admin.liveTraffic.1530033614.js → admin.liveTraffic.1531408399.js} +0 -0
  46. js/{date.1530033614.js → date.1531408399.js} +0 -0
  47. js/{jquery-ui-timepicker-addon.1530033614.js → jquery-ui-timepicker-addon.1531408399.js} +0 -0
  48. js/{jquery.colorbox-min.1530033614.js → jquery.colorbox-min.1531408399.js} +0 -0
  49. js/{jquery.colorbox.1530033614.js → jquery.colorbox.1531408399.js} +0 -0
  50. js/{jquery.dataTables.min.1530033614.js → jquery.dataTables.min.1531408399.js} +0 -0
  51. js/{jquery.qrcode.min.1530033614.js → jquery.qrcode.min.1531408399.js} +0 -0
  52. js/{jquery.tmpl.min.1530033614.js → jquery.tmpl.min.1531408399.js} +0 -0
  53. js/{jquery.tools.min.1530033614.js → jquery.tools.min.1531408399.js} +0 -0
  54. js/{knockout-3.3.0.1530033614.js → knockout-3.3.0.1531408399.js} +0 -0
  55. js/{perf.1530033614.js → perf.1531408399.js} +0 -0
  56. js/{wfdashboard.1530033614.js → wfdashboard.1531408399.js} +0 -0
  57. js/{wfdropdown.1530033614.js → wfdropdown.1531408399.js} +0 -0
  58. js/{wfglobal.1530033614.js → wfglobal.1531408399.js} +0 -0
  59. js/{wfpopover.1530033614.js → wfpopover.1531408399.js} +0 -0
  60. js/{wfselect2.min.1530033614.js → wfselect2.min.1531408399.js} +0 -0
  61. lib/email_newIssues.php +1 -0
  62. lib/email_unsubscribeRequest.php +8 -0
  63. lib/menu_tools_diagnostic.php +33 -0
  64. lib/wfActivityReport.php +13 -1
  65. lib/wfArray.php +7 -7
  66. lib/wfConfig.php +46 -15
  67. lib/wfIssues.php +7 -2
  68. lib/wfLog.php +1 -1
  69. lib/wfOnboardingController.php +1 -1
  70. lib/wfUtils.php +73 -0
  71. lib/wordfenceClass.php +164 -3
  72. models/common/wfGeoIP2.php +11 -1
  73. readme.txt +18 -2
  74. vendor/composer/ca-bundle/README.md +0 -85
  75. vendor/geoip2/geoip2/CHANGELOG.md +0 -257
  76. vendor/geoip2/geoip2/README.md +0 -401
  77. vendor/maxmind-db/reader/CHANGELOG.md +0 -108
  78. vendor/maxmind-db/reader/README.md +0 -139
  79. vendor/maxmind-db/reader/ext/config.m4 +0 -19
  80. vendor/maxmind-db/reader/ext/maxminddb.c +0 -564
  81. vendor/maxmind-db/reader/ext/php_maxminddb.h +0 -24
  82. vendor/maxmind-db/reader/ext/tests/001-load.phpt +0 -12
  83. vendor/maxmind-db/reader/ext/tests/002-final.phpt +0 -13
  84. vendor/maxmind/web-service-common/CHANGELOG.md +0 -74
  85. vendor/maxmind/web-service-common/README.md +0 -26
  86. views/blocking/block-list.php +9 -1
  87. views/common/unsubscribe.php +130 -0
  88. views/gdpr/banner.php +1 -1
  89. views/reports/activity-report-email-inline.php +5 -1
  90. views/reports/activity-report.php +1 -1
  91. views/waf/options-group-brute-force.php +1 -1
  92. waf/wfWAFGeoIP2.php +12 -2
  93. wordfence.php +14 -6
css/{activity-report-widget.1530033614.css → activity-report-widget.1531408399.css} RENAMED
File without changes
css/{diff.1530033614.css → diff.1531408399.css} RENAMED
File without changes
css/{dt_table.1530033614.css → dt_table.1531408399.css} RENAMED
File without changes
css/{fullLog.1530033614.css → fullLog.1531408399.css} RENAMED
File without changes
css/images/ui-bg_flat_0_aaaaaa_40x100.png DELETED
Binary file
css/images/ui-bg_flat_100_1997c7_40x100.png DELETED
Binary file
css/images/ui-bg_flat_100_222_40x100.png DELETED
Binary file
css/images/ui-bg_flat_75_ffffff_40x100.png DELETED
Binary file
css/images/ui-bg_glass_95_fef1ec_1x400.png DELETED
Binary file
css/images/ui-bg_highlight-soft_75_a5a5a5_1x100.png DELETED
Binary file
css/images/ui-icons_222222_256x240.png DELETED
Binary file
css/images/ui-icons_444444_256x240.png ADDED
Binary file
css/images/ui-icons_555555_256x240.png ADDED
Binary file
css/images/{ui-icons_fbe569_256x240.png → ui-icons_777620_256x240.png} RENAMED
Binary file
css/images/ui-icons_777777_256x240.png ADDED
Binary file
css/images/{ui-icons_cd0a0a_256x240.png → ui-icons_cc0000_256x240.png} RENAMED
Binary file
css/images/{ui-icons_fff_256x240.png → ui-icons_ffffff_256x240.png} RENAMED
File without changes
css/{iptraf.1530033614.css → iptraf.1531408399.css} RENAMED
File without changes
css/{jquery-ui-timepicker-addon.1530033614.css → jquery-ui-timepicker-addon.1531408399.css} RENAMED
File without changes
css/{jquery-ui.min.1530033614.css → jquery-ui.min.1531408399.css} RENAMED
@@ -1,7 +1,7 @@
1
- /*! jQuery UI - v1.11.4 - 2015-10-13
2
* http://jqueryui.com
3
* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
4
- * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=3px&bgColorHeader=%23222&bgTextureHeader=flat&bgImgOpacityHeader=100&borderColorHeader=%23474747&fcHeader=%23fff&iconColorHeader=%23fff&bgColorContent=%23ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=%23aaaaaa&fcContent=%23222222&iconColorContent=%23222222&bgColorDefault=%23a5a5a5&bgTextureDefault=highlight_soft&bgImgOpacityDefault=75&borderColorDefault=%239f9f9f&fcDefault=%23fff&iconColorDefault=%23fff&bgColorHover=%231997c7&bgTextureHover=flat&bgImgOpacityHover=100&borderColorHover=%23198cb7&fcHover=%23fff&iconColorHover=%23fff&bgColorActive=%231997c7&bgTextureActive=flat&bgImgOpacityActive=100&borderColorActive=%23198cb7&fcActive=%23fff&iconColorActive=%23fff&bgColorHighlight=%23fffaba&bgTextureHighlight=flat&bgImgOpacityHighlight=100&borderColorHighlight=%23eac500&fcHighlight=%23222222&iconColorHighlight=%23ec882f&bgColorError=%23fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=%23cd0a0a&fcError=%23cd0a0a&iconColorError=%23cd0a0a&bgColorOverlay=%23aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=%23aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px
5
- * Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
6
7
- .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #474747;background:#222 url("images/ui-bg_flat_100_222_40x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #9f9f9f;background:#a5a5a5 url("images/ui-bg_highlight-soft_75_a5a5a5_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #198cb7;background:#1997c7 url("images/ui-bg_flat_100_1997c7_40x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#fff;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #198cb7;background:#1997c7 url("images/ui-bg_flat_100_1997c7_40x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #eac500;background:#fffaba url("images/ui-bg_flat_100_fffaba_40x100.png") 50% 50% repeat-x;color:#222}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#222}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_ec882f_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
1
+ /*! jQuery UI - v1.11.4 - 2018-06-29
2
* http://jqueryui.com
3
* Includes: core.css, draggable.css, resizable.css, selectable.css, sortable.css, accordion.css, autocomplete.css, button.css, datepicker.css, dialog.css, menu.css, progressbar.css, selectmenu.css, slider.css, spinner.css, tabs.css, tooltip.css, theme.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&fwDefault=normal&cornerRadius=3px&bgColorHeader=e9e9e9&bgTextureHeader=flat&borderColorHeader=dddddd&fcHeader=333333&iconColorHeader=444444&bgColorContent=ffffff&bgTextureContent=flat&borderColorContent=dddddd&fcContent=333333&iconColorContent=444444&bgColorDefault=f6f6f6&bgTextureDefault=flat&borderColorDefault=c5c5c5&fcDefault=454545&iconColorDefault=777777&bgColorHover=ededed&bgTextureHover=flat&borderColorHover=cccccc&fcHover=2b2b2b&iconColorHover=555555&bgColorActive=007fff&bgTextureActive=flat&borderColorActive=003eff&fcActive=ffffff&iconColorActive=ffffff&bgColorHighlight=fffa90&bgTextureHighlight=flat&borderColorHighlight=dad55e&fcHighlight=777620&iconColorHighlight=777620&bgColorError=fddfdf&bgTextureError=flat&borderColorError=f1a899&fcError=5f3f3f&iconColorError=cc0000&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=666666&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=5px&offsetTopShadow=0px&offsetLeftShadow=0px&cornerRadiusShadow=8px
5
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
6
7
+ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
css/{jquery-ui.structure.min.1530033614.css → jquery-ui.structure.min.1531408399.css} RENAMED
@@ -1,5 +1,5 @@
1
- /*! jQuery UI - v1.11.4 - 2015-10-11
2
* http://jqueryui.com
3
- * Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
4
5
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
1
+ /*! jQuery UI - v1.11.4 - 2018-06-29
2
* http://jqueryui.com
3
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
4
5
.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;min-height:0;font-size:100%}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{overflow:hidden;position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:none}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{position:relative;margin:0;padding:3px 1em 3px .4em;cursor:pointer;min-height:0;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,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");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-button{display:inline-block;overflow:hidden;position:relative;text-decoration:none;cursor:pointer}.ui-selectmenu-button span.ui-icon{right:0.5em;left:auto;margin-top:-8px;position:absolute;top:50%}.ui-selectmenu-button span.ui-selectmenu-text{text-align:left;padding:0.4em 2.1em 0.4em 1em;display:block;line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:22px}.ui-spinner-button{width:16px;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top:none;border-bottom:none;border-right:none}.ui-spinner .ui-icon{position:absolute;margin-top:-8px;top:50%;left:0}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-spinner .ui-icon-triangle-1-s{background-position:-65px -16px}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}
css/jquery-ui.theme.min.1530033614.css DELETED
@@ -1,5 +0,0 @@
1
- /*! jQuery UI - v1.11.4 - 2015-10-13
2
- * http://jqueryui.com
3
- * Copyright 2015 jQuery Foundation and other contributors; Licensed MIT */
4
-
5
- .ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url("images/ui-bg_flat_75_ffffff_40x100.png") 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #474747;background:#222 url("images/ui-bg_flat_100_222_40x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #9f9f9f;background:#a5a5a5 url("images/ui-bg_highlight-soft_75_a5a5a5_1x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#fff;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #198cb7;background:#1997c7 url("images/ui-bg_flat_100_1997c7_40x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#fff;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #198cb7;background:#1997c7 url("images/ui-bg_flat_100_1997c7_40x100.png") 50% 50% repeat-x;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #eac500;background:#fffaba url("images/ui-bg_flat_100_fffaba_40x100.png") 50% 50% repeat-x;color:#222}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#222}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_fff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_ec882f_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url("images/ui-bg_flat_0_aaaaaa_40x100.png") 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
css/jquery-ui.theme.min.1531408399.css ADDED
@@ -0,0 +1,5 @@
1
+ /*! jQuery UI - v1.11.4 - 2018-06-29
2
+ * http://jqueryui.com
3
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
4
+
5
+ .ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#2b2b2b;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:0 0 0 0;padding:5px;background:#666;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px}
css/{main.1530033614.css → main.1531408399.css} RENAMED
File without changes
css/{phpinfo.1530033614.css → phpinfo.1531408399.css} RENAMED
File without changes
css/{wf-adminbar.1530033614.css → wf-adminbar.1531408399.css} RENAMED
File without changes
css/{wf-colorbox.1530033614.css → wf-colorbox.1531408399.css} RENAMED
File without changes
css/{wf-font-awesome.1530033614.css → wf-font-awesome.1531408399.css} RENAMED
File without changes
css/{wf-ionicons.1530033614.css → wf-ionicons.1531408399.css} RENAMED
File without changes
css/{wf-onboarding.1530033614.css → wf-onboarding.1531408399.css} RENAMED
File without changes
css/{wf-roboto-font.1530033614.css → wf-roboto-font.1531408399.css} RENAMED
File without changes
css/{wfselect2.min.1530033614.css → wfselect2.min.1531408399.css} RENAMED
File without changes
css/{wordfenceBox.1530033614.css → wordfenceBox.1531408399.css} RENAMED
File without changes
images/flags/bl.png ADDED
Binary file
images/flags/bq.png ADDED
Binary file
images/flags/hm.png ADDED
Binary file
images/flags/mf.png ADDED
Binary file
images/flags/sj.png ADDED
Binary file
images/flags/ss.png ADDED
Binary file
images/flags/sx.png ADDED
Binary file
images/flags/un.png ADDED
Binary file
js/{Chart.bundle.min.1530033614.js → Chart.bundle.min.1531408399.js} RENAMED
File without changes
js/{admin.1530033614.js → admin.1531408399.js} RENAMED
File without changes
js/{admin.ajaxWatcher.1530033614.js → admin.ajaxWatcher.1531408399.js} RENAMED
File without changes
js/{admin.liveTraffic.1530033614.js → admin.liveTraffic.1531408399.js} RENAMED
File without changes
js/{date.1530033614.js → date.1531408399.js} RENAMED
File without changes
js/{jquery-ui-timepicker-addon.1530033614.js → jquery-ui-timepicker-addon.1531408399.js} RENAMED
File without changes
js/{jquery.colorbox-min.1530033614.js → jquery.colorbox-min.1531408399.js} RENAMED
File without changes
js/{jquery.colorbox.1530033614.js → jquery.colorbox.1531408399.js} RENAMED
File without changes
js/{jquery.dataTables.min.1530033614.js → jquery.dataTables.min.1531408399.js} RENAMED
File without changes
js/{jquery.qrcode.min.1530033614.js → jquery.qrcode.min.1531408399.js} RENAMED
File without changes
js/{jquery.tmpl.min.1530033614.js → jquery.tmpl.min.1531408399.js} RENAMED
File without changes
js/{jquery.tools.min.1530033614.js → jquery.tools.min.1531408399.js} RENAMED
File without changes
js/{knockout-3.3.0.1530033614.js → knockout-3.3.0.1531408399.js} RENAMED
File without changes
js/{perf.1530033614.js → perf.1531408399.js} RENAMED
File without changes
js/{wfdashboard.1530033614.js → wfdashboard.1531408399.js} RENAMED
File without changes
js/{wfdropdown.1530033614.js → wfdropdown.1531408399.js} RENAMED
File without changes
js/{wfglobal.1530033614.js → wfglobal.1531408399.js} RENAMED
File without changes
js/{wfpopover.1530033614.js → wfpopover.1531408399.js} RENAMED
File without changes
js/{wfselect2.min.1530033614.js → wfselect2.min.1531408399.js} RENAMED
File without changes
lib/email_newIssues.php CHANGED
@@ -110,5 +110,6 @@
110
<p><?php _e('Click here to upgrade to Wordfence Premium:', 'wordfence'); ?><br><a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a></p>
111
<?php } ?>
112
113
114
110
<p><?php _e('Click here to upgrade to Wordfence Premium:', 'wordfence'); ?><br><a href="https://www.wordfence.com/zz2/wordfence-signup/">https://www.wordfence.com/zz2/wordfence-signup/</a></p>
111
<?php } ?>
112
113
+ <p><!-- ##UNSUBSCRIBE## --></p>
114
115
lib/email_unsubscribeRequest.php ADDED
@@ -0,0 +1,8 @@
1
+ <?php if (!defined('WORDFENCE_VERSION')) { exit; } ?>
2
+ <?php printf(__('Either you or someone at IP address <b>%s</b> requested an alert unsubscribe link for the website <a href="%s"><b>%s</b></a>.', 'wordfence'), esc_html($IP), esc_attr($siteURL), esc_html($siteName)); ?>
3
+ <br><br>
4
+ <?php printf(__('Request was generated at: %s', 'wordfence'), wfUtils::localHumanDate()); ?>
5
+ <br><br>
6
+ <?php _e('If you did not request this, you can safely ignore it.', 'wordfence'); ?>
7
+ <br><br>
8
+ <?php printf(__('<a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . $jwt); ?>
lib/menu_tools_diagnostic.php CHANGED
@@ -795,6 +795,39 @@ if (!isset($sendingDiagnosticEmail)) {
795
</div>
796
</div>
797
</div>
798
799
<?php if (!empty($inEmail)): ?>
800
<?php phpinfo(); ?>
795
</div>
796
</div>
797
</div>
798
+
799
+ <?php
800
+ if (!empty($inEmail)) {
801
+ echo '<h1>' . __('Scan Issues', 'wordfence') . "</h1>\n";
802
+ $issues = wfIssues::shared()->getIssues(0, 50, 0, 50);
803
+ $issueCounts = array_merge(array('new' => 0, 'ignoreP' => 0, 'ignoreC' => 0), wfIssues::shared()->getIssueCounts());
804
+ $issueTypes = wfIssues::validIssueTypes();
805
+
806
+ echo '<h2>' . sprintf(__('New Issues (%d total)', 'wordfence'), $issueCounts['new']) . "</h2>\n";
807
+ if (isset($issues['new']) && count($issues['new'])) {
808
+ foreach ($issues['new'] as $i) {
809
+ if (!in_array($i['type'], $issueTypes)) {
810
+ continue;
811
+ }
812
+
813
+ $viewContent = '';
814
+ try {
815
+ $viewContent = wfView::create('scanner/issue-' . $i['type'], array('textOutput' => $i))->render();
816
+ }
817
+ catch (wfViewNotFoundException $e) {
818
+ //Ignore -- should never happen since we validate the type
819
+ }
820
+
821
+ if (!empty($viewContent)) {
822
+ echo nl2br($viewContent) . "<br><br>\n";
823
+ }
824
+ }
825
+ }
826
+ else {
827
+ echo '<h1>' . __('No New Issues', 'wordfence') . "</h1>\n";
828
+ }
829
+ }
830
+ ?>
831
832
<?php if (!empty($inEmail)): ?>
833
<?php phpinfo(); ?>
lib/wfActivityReport.php CHANGED
@@ -539,7 +539,19 @@ SQL
539
*/
540
public function sendReportViaEmail($email_addresses) {
541
$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
542
- return wp_mail($email_addresses, 'Wordfence activity for ' . date_i18n(get_option('date_format')) . ' on ' . $shortSiteURL, $this->toEmailView()->__toString(), 'Content-Type: text/html');
543
}
544
545
/**
539
*/
540
public function sendReportViaEmail($email_addresses) {
541
$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
542
+
543
+ $content = $this->toEmailView()->__toString();
544
+
545
+ $success = true;
546
+ if (is_string($email_addresses)) { $email_addresses = explode(',', $email_addresses); }
547
+ foreach ($email_addresses as $email) {
548
+ $uniqueContent = str_replace('<!-- ##UNSUBSCRIBE## -->', sprintf(__('No longer an administrator for this site? <a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))), $content);
549
+ if (!wp_mail($email, 'Wordfence activity for ' . date_i18n(get_option('date_format')) . ' on ' . $shortSiteURL, $uniqueContent, 'Content-Type: text/html')) {
550
+ $success = false;
551
+ }
552
+ }
553
+
554
+ return $success;
555
}
556
557
/**
lib/wfArray.php CHANGED
@@ -8,21 +8,21 @@ class wfArray {
8
}
9
public function push($val){ //associative array with keys that match those given to constructor
10
foreach($this->keys as $key){
11
- $this->data .= pack('N', strlen($val[$key])) . $val[$key];
12
}
13
$this->size++;
14
}
15
public function shift(){ //If you alternately call push and shift you must periodically call collectGarbage() or ->data will keep growing
16
$arr = array();
17
- if(strlen($this->data) < 1){ return null; }
18
- if($this->shiftPtr == strlen($this->data)){ return null; }
19
foreach($this->keys as $key){
20
- $len = unpack('N', substr($this->data, $this->shiftPtr, 4));
21
$len = $len[1];
22
- $arr[$key] = substr($this->data, $this->shiftPtr + 4, $len);
23
$this->shiftPtr += 4 + $len;
24
}
25
- if($this->shiftPtr == strlen($this->data)){ //garbage collection
26
$this->data = ""; //we don't shorten with substr() because the assignment doubles peak mem
27
$this->shiftPtr = 0;
28
}
@@ -31,7 +31,7 @@ class wfArray {
31
}
32
public function collectGarbage(){ //only call collectGarbage if you're alternating between pushes and shifts and never emptying the array.
33
//If you don't collect garbage then the data that is shifted is never freed
34
- $this->data = substr($this->data, $this->shiftPtr); //at this point memory usage doubles because of the = assignment (string copy is made), so try not to call collect garbage unless you have to.
35
$this->shiftPtr = 0;
36
}
37
public function zero(){ //Rather call this instead of collect garbage because it's way more mem efficient.
8
}
9
public function push($val){ //associative array with keys that match those given to constructor
10
foreach($this->keys as $key){
11
+ $this->data .= pack('N', wfUtils::strlen($val[$key])) . $val[$key];
12
}
13
$this->size++;
14
}
15
public function shift(){ //If you alternately call push and shift you must periodically call collectGarbage() or ->data will keep growing
16
$arr = array();
17
+ if(wfUtils::strlen($this->data) < 1){ return null; }
18
+ if($this->shiftPtr == wfUtils::strlen($this->data)){ return null; }
19
foreach($this->keys as $key){
20
+ $len = unpack('N', wfUtils::substr($this->data, $this->shiftPtr, 4));
21
$len = $len[1];
22
+ $arr[$key] = wfUtils::substr($this->data, $this->shiftPtr + 4, $len);
23
$this->shiftPtr += 4 + $len;
24
}
25
+ if($this->shiftPtr == wfUtils::strlen($this->data)){ //garbage collection
26
$this->data = ""; //we don't shorten with substr() because the assignment doubles peak mem
27
$this->shiftPtr = 0;
28
}
31
}
32
public function collectGarbage(){ //only call collectGarbage if you're alternating between pushes and shifts and never emptying the array.
33
//If you don't collect garbage then the data that is shifted is never freed
34
+ $this->data = wfUtils::substr($this->data, $this->shiftPtr); //at this point memory usage doubles because of the = assignment (string copy is made), so try not to call collect garbage unless you have to.
35
$this->shiftPtr = 0;
36
}
37
public function zero(){ //Rather call this instead of collect garbage because it's way more mem efficient.
lib/wfConfig.php CHANGED
@@ -217,6 +217,7 @@ class wfConfig {
217
'supportHash' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
218
'touppPromptNeeded' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
219
'touppBypassNextCheck' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
220
),
221
);
222
public static $serializedOptions = array('lastAdminLogin', 'scanSched', 'emailedIssuesList', 'wf_summaryItems', 'adminUserList', 'twoFactorUsers', 'alertFreqTrack', 'wfStatusStartMsgs', 'vulnerabilities_plugin', 'vulnerabilities_theme', 'dashboardData', 'malwarePrefixes', 'coreHashes', 'noc1ScanSchedule', 'allScansScheduled', 'disclosureStates', 'scanStageStatuses', 'adminNoticeQueue');
@@ -251,6 +252,7 @@ class wfConfig {
251
}
252
}
253
self::set('encKey', substr(wfUtils::bigRandomHex(), 0, 16));
254
if (self::get('maxMem', false) === false) {
255
self::set('maxMem', '256');
256
}
@@ -883,22 +885,51 @@ class wfConfig {
883
return $result;
884
}
885
public static function autoUpdate(){
886
- try {
887
- if (!wfConfig::get('other_bypassLitespeedNoabort', false) && getenv('noabort') != '1' && stristr($_SERVER['SERVER_SOFTWARE'], 'litespeed') !== false) {
888
- $lastEmail = self::get('lastLiteSpdEmail', false);
889
- if( (! $lastEmail) || (time() - (int)$lastEmail > (86400 * 30))){
890
- self::set('lastLiteSpdEmail', time());
891
- wordfence::alert("Wordfence Upgrade not run. Please modify your .htaccess", "To preserve the integrity of your website we are not running Wordfence auto-update.\n" .
892
- "You are running the LiteSpeed web server which has been known to cause a problem with Wordfence auto-update.\n" .
893
- "Please go to your website now and make a minor change to your .htaccess to fix this.\n" .
894
- "You can find out how to make this change at:\n" .
895
- wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_LITESPEED_WARNING) . "\n" .
896
- "\nAlternatively you can disable auto-update on your website to stop receiving this message and upgrade Wordfence manually.\n",
897
- '127.0.0.1'
898
- );
899
}
900
- return;
901
}
902
require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
903
require_once(ABSPATH . 'wp-admin/includes/misc.php');
904
/* We were creating show_message here so that WP did not write to STDOUT. This had the strange effect of throwing an error about redeclaring show_message function, but only when a crawler hit the site and triggered the cron job. Not a human. So we're now just require'ing misc.php which does generate output, but that's OK because it is a loopback cron request.
@@ -916,7 +947,6 @@ class wfConfig {
916
return;
917
}
918
919
- wp_update_plugins();
920
ob_start();
921
$upgrader = new Plugin_Upgrader();
922
$upret = $upgrader->upgrade(WORDFENCE_BASENAME);
@@ -925,6 +955,7 @@ class wfConfig {
925
if(wfConfig::get('alertOn_update') == '1' && preg_match('/Version: (\d+\.\d+\.\d+)/', $cont, $matches) ){
926
wordfence::alert("Wordfence Upgraded to version " . $matches[1], "Your Wordfence installation has been upgraded to version " . $matches[1], '127.0.0.1');
927
}
928
}
929
$output = @ob_get_contents();
930
@ob_end_clean();
217
'supportHash' => array('value' => '', 'autoload' => self::DONT_AUTOLOAD, 'validation' => array('type' => self::TYPE_STRING)),
218
'touppPromptNeeded' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
219
'touppBypassNextCheck' => array('value' => false, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_BOOL)),
220
+ 'autoUpdateAttempts' => array('value' => 0, 'autoload' => self::AUTOLOAD, 'validation' => array('type' => self::TYPE_INT)),
221
),
222
);
223
public static $serializedOptions = array('lastAdminLogin', 'scanSched', 'emailedIssuesList', 'wf_summaryItems', 'adminUserList', 'twoFactorUsers', 'alertFreqTrack', 'wfStatusStartMsgs', 'vulnerabilities_plugin', 'vulnerabilities_theme', 'dashboardData', 'malwarePrefixes', 'coreHashes', 'noc1ScanSchedule', 'allScansScheduled', 'disclosureStates', 'scanStageStatuses', 'adminNoticeQueue');
252
}
253
}
254
self::set('encKey', substr(wfUtils::bigRandomHex(), 0, 16));
255
+ self::set('longEncKey', bin2hex(wfWAFUtils::random_bytes(32)));
256
if (self::get('maxMem', false) === false) {
257
self::set('maxMem', '256');
258
}
885
return $result;
886
}
887
public static function autoUpdate(){
888
+ if (!wfConfig::get('other_bypassLitespeedNoabort', false) && getenv('noabort') != '1' && stristr($_SERVER['SERVER_SOFTWARE'], 'litespeed') !== false) {
889
+ $lastEmail = self::get('lastLiteSpdEmail', false);
890
+ if( (! $lastEmail) || (time() - (int)$lastEmail > (86400 * 30))){
891
+ self::set('lastLiteSpdEmail', time());
892
+ wordfence::alert("Wordfence Upgrade not run. Please modify your .htaccess", "To preserve the integrity of your website we are not running Wordfence auto-update.\n" .
893
+ "You are running the LiteSpeed web server which has been known to cause a problem with Wordfence auto-update.\n" .
894
+ "Please go to your website now and make a minor change to your .htaccess to fix this.\n" .
895
+ "You can find out how to make this change at:\n" .
896
+ wfSupportController::supportURL(wfSupportController::ITEM_DASHBOARD_OPTION_LITESPEED_WARNING) . "\n" .
897
+ "\nAlternatively you can disable auto-update on your website to stop receiving this message and upgrade Wordfence manually.\n",
898
+ '127.0.0.1'
899
+ );
900
+ }
901
+ return;
902
+ }
903
+
904
+ $runUpdate = false;
905
+ wp_update_plugins();
906
+ $update_plugins = get_site_transient('update_plugins');
907
+ if ($update_plugins && is_array($update_plugins->response) && isset($update_plugins->response[WORDFENCE_BASENAME])) {
908
+ $status = $update_plugins->response[WORDFENCE_BASENAME];
909
+ if (is_object($status) && property_exists($status, 'new_version')) {
910
+ $runUpdate = (version_compare($status->new_version, WORDFENCE_VERSION) > 0);
911
+ }
912
+ }
913
+
914
+ if ($runUpdate) {
915
+ try {
916
+ $api = new wfAPI(wfConfig::get('apiKey'), wfUtils::getWPVersion());
917
+ $response = $api->call('should_auto_update', array(), array('currentVersion' => WORDFENCE_VERSION));
918
+ if (!(is_array($response) && isset($response['ok']) && wfUtils::truthyToBoolean($response['ok']))) {
919
+ $runUpdate = false;
920
}
921
}
922
+ catch (Exception $e) {
923
+ wfConfig::inc('autoUpdateAttempts');
924
+ $runUpdate = false;
925
+ }
926
+ }
927
+
928
+ if (!$runUpdate && wfConfig::get('autoUpdateAttempts') < 7) {
929
+ return;
930
+ }
931
+
932
+ try {
933
require_once(ABSPATH . 'wp-admin/includes/class-wp-upgrader.php');
934
require_once(ABSPATH . 'wp-admin/includes/misc.php');
935
/* We were creating show_message here so that WP did not write to STDOUT. This had the strange effect of throwing an error about redeclaring show_message function, but only when a crawler hit the site and triggered the cron job. Not a human. So we're now just require'ing misc.php which does generate output, but that's OK because it is a loopback cron request.
947
return;
948
}
949
950
ob_start();
951
$upgrader = new Plugin_Upgrader();
952
$upret = $upgrader->upgrade(WORDFENCE_BASENAME);
955
if(wfConfig::get('alertOn_update') == '1' && preg_match('/Version: (\d+\.\d+\.\d+)/', $cont, $matches) ){
956
wordfence::alert("Wordfence Upgraded to version " . $matches[1], "Your Wordfence installation has been upgraded to version " . $matches[1], '127.0.0.1');
957
}
958
+ wfConfig::set('autoUpdateAttempts', 0);
959
}
960
$output = @ob_get_contents();
961
@ob_end_clean();
lib/wfIssues.php CHANGED
@@ -315,6 +315,10 @@ class wfIssues {
315
public function emailNewIssues($timeLimitReached = false, $scanController = false){
316
$level = wfConfig::getAlertLevel();
317
$emails = wfConfig::getAlertEmails();
318
$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
319
$subject = "[Wordfence Alert] Problems found on $shortSiteURL";
320
@@ -373,8 +377,9 @@ class wfIssues {
373
'scanController' => ($scanController ? $scanController : wfScanner::shared()),
374
));
375
376
- if (count($emails)) {
377
- wp_mail(implode(',', $emails), $subject, $content, 'Content-type: text/html');
378
}
379
}
380
public function deleteIssue($id){
315
public function emailNewIssues($timeLimitReached = false, $scanController = false){
316
$level = wfConfig::getAlertLevel();
317
$emails = wfConfig::getAlertEmails();
318
+ if (!count($emails)) {
319
+ return;
320
+ }
321
+
322
$shortSiteURL = preg_replace('/^https?:\/\//i', '', site_url());
323
$subject = "[Wordfence Alert] Problems found on $shortSiteURL";
324
377
'scanController' => ($scanController ? $scanController : wfScanner::shared()),
378
));
379
380
+ foreach ($emails as $email) {
381
+ $uniqueContent = str_replace('<!-- ##UNSUBSCRIBE## -->', sprintf(__('No longer an administrator for this site? <a href="%s" target="_blank">Click here</a> to stop receiving security alerts.', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email))), $content);
382
+ wp_mail($email, $subject, $uniqueContent, 'Content-type: text/html');
383
}
384
}
385
public function deleteIssue($id){
lib/wfLog.php CHANGED
@@ -290,7 +290,7 @@ class wfLog {
290
}
291
}
292
}
293
- if(isset($_SERVER['HTTP_USER_AGENT']) && wfCrawl::isCrawler($_SERVER['HTTP_USER_AGENT'])){
294
if($type == 'hit' && wfConfig::get('maxRequestsCrawlers') != 'DISABLED' && $hitsPerMinute > wfConfig::getInt('maxRequestsCrawlers')){
295
$this->takeBlockingAction('maxRequestsCrawlers', "Exceeded the maximum number of requests per minute for crawlers."); //may not exit
296
} else if($type == '404' && wfConfig::get('max404Crawlers') != 'DISABLED' && $hitsPerMinute > wfConfig::getInt('max404Crawlers')){
290
}
291
}
292
}
293
+ if((isset($_SERVER['HTTP_USER_AGENT']) && wfCrawl::isCrawler($_SERVER['HTTP_USER_AGENT'])) || empty($_SERVER['HTTP_USER_AGENT'])){
294
if($type == 'hit' && wfConfig::get('maxRequestsCrawlers') != 'DISABLED' && $hitsPerMinute > wfConfig::getInt('maxRequestsCrawlers')){
295
$this->takeBlockingAction('maxRequestsCrawlers', "Exceeded the maximum number of requests per minute for crawlers."); //may not exit
296
} else if($type == '404' && wfConfig::get('max404Crawlers') != 'DISABLED' && $hitsPerMinute > wfConfig::getInt('max404Crawlers')){
lib/wfOnboardingController.php CHANGED
@@ -66,7 +66,7 @@ class wfOnboardingController {
66
self::shouldShowNewTour(self::TOUR_BLOCKING) || self::shouldShowUpgradeTour(self::TOUR_BLOCKING) ||
67
self::shouldShowNewTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowUpgradeTour(self::TOUR_LIVE_TRAFFIC));
68
69
- if (wfUtils::isAdmin() && (($willShowAnyPluginOnboarding && strpos($_SERVER['REQUEST_URI'], 'wp-admin/plugins.php') !== false) || (isset($_GET['page']) && preg_match('/^Wordfence/', @$_GET['page'])))) {
70
wp_enqueue_style('wordfence-font', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-roboto-font.css'), '', WORDFENCE_VERSION);
71
wp_enqueue_style('wordfence-ionicons-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-ionicons.css'), '', WORDFENCE_VERSION);
72
wp_enqueue_style('wordfenceOnboardingCSS', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-onboarding.css'), '', WORDFENCE_VERSION);
66
self::shouldShowNewTour(self::TOUR_BLOCKING) || self::shouldShowUpgradeTour(self::TOUR_BLOCKING) ||
67
self::shouldShowNewTour(self::TOUR_LIVE_TRAFFIC) || self::shouldShowUpgradeTour(self::TOUR_LIVE_TRAFFIC));
68
69
+ if (wfUtils::isAdmin() && (($willShowAnyPluginOnboarding && preg_match('~(?:^|/)wp-admin(?:/network)?/plugins\.php~i', $_SERVER['REQUEST_URI'])) || (isset($_GET['page']) && preg_match('/^Wordfence/', @$_GET['page'])))) {
70
wp_enqueue_style('wordfence-font', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-roboto-font.css'), '', WORDFENCE_VERSION);
71
wp_enqueue_style('wordfence-ionicons-style', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-ionicons.css'), '', WORDFENCE_VERSION);
72
wp_enqueue_style('wordfenceOnboardingCSS', wfUtils::getBaseURL() . wfUtils::versionedAsset('css/wf-onboarding.css'), '', WORDFENCE_VERSION);
lib/wfUtils.php CHANGED
@@ -2570,6 +2570,79 @@ class wfUtils {
2570
}
2571
return new DateTime($timestring);
2572
}
2573
}
2574
2575
// GeoIP lib uses these as well
2570
}
2571
return new DateTime($timestring);
2572
}
2573
+
2574
+ /**
2575
+ * Base64URL-encodes the given payload. This is identical to base64_encode except it substitutes characters
2576
+ * not safe for use in URLs.
2577
+ *
2578
+ * @param string $payload
2579
+ * @return string
2580
+ */
2581
+ public static function base64url_encode($payload) {
2582
+ $intermediate = base64_encode($payload);
2583
+ $intermediate = rtrim($intermediate, '=');
2584
+ $intermediate = str_replace('+', '-', $intermediate);
2585
+ $intermediate = str_replace('/', '_', $intermediate);
2586
+ return $intermediate;
2587
+ }
2588
+
2589
+ /**
2590
+ * Base64URL-decodes the given payload. This is identical to base64_encode except it allows for the characters
2591
+ * substituted by base64url_encode.
2592
+ *
2593
+ * @param string $payload
2594
+ * @return string
2595
+ */
2596
+ public static function base64url_decode($payload) {
2597
+ $intermediate = str_replace('_', '/', $payload);
2598
+ $intermediate = str_replace('-', '+', $intermediate);
2599
+ $intermediate = base64_decode($intermediate);
2600
+ return $intermediate;
2601
+ }
2602
+
2603
+ /**
2604
+ * Returns a signed JWT for the given payload. Payload is expected to be an array suitable for JSON-encoding.
2605
+ *
2606
+ * @param array $payload
2607
+ * @param int $maxAge How long the JWT will be considered valid.
2608
+ * @return string
2609
+ */
2610
+ public static function generateJWT($payload, $maxAge = 604800 /* 7 days */) {
2611
+ $payload['_exp'] = time() + $maxAge;
2612
+ $key = wfConfig::get('longEncKey');
2613
+ $header = '{"alg":"HS256","typ":"JWT"}';
2614
+ $body = self::base64url_encode($header) . '.' . self::base64url_encode(json_encode($payload));
2615
+ $signature = hash_hmac('sha256', $body, $key, true);
2616
+ return $body . '.' . self::base64url_encode($signature);
2617
+ }
2618
+
2619
+ /**
2620
+ * Decodes and returns the payload of a JWT. This also validates the signature.
2621
+ *
2622
+ * @param string $token
2623
+ * @return array|bool The decoded payload or false if the token is invalid or fails validation.
2624
+ */
2625
+ public static function decodeJWT($token) {
2626
+ $components = explode('.', $token);
2627
+ if (count($components) != 3) {
2628
+ return false;
2629
+ }
2630
+
2631
+ $key = wfConfig::get('longEncKey');
2632
+ $body = $components[0] . '.' . $components[1];
2633
+ $signature = hash_hmac('sha256', $body, $key, true);
2634
+ $testSignature = self::base64url_decode($components[2]);
2635
+ if (!hash_equals($signature, $testSignature)) {
2636
+ return false;
2637
+ }
2638
+
2639
+ $json = self::base64url_decode($components[1]);
2640
+ $payload = @json_decode($json, true);
2641
+ if (isset($payload['_exp']) && $payload['_exp'] < time()) {
2642
+ return false;
2643
+ }
2644
+ return $payload;
2645
+ }
2646
}
2647
2648
// GeoIP lib uses these as well
lib/wordfenceClass.php CHANGED
@@ -576,6 +576,7 @@ SQL
576
}
577
578
wfConfig::set('geoIPVersionHash', $geoIPVersionHash);
579
}
580
581
if (wfConfig::get('other_hideWPVersion')) {
@@ -1023,6 +1024,24 @@ SQL
1023
wfConfig::set('generateAllOptionsNotification', 1);
1024
}*/
1025
1026
//Check the How does Wordfence get IPs setting
1027
wfUtils::requestDetectProxyCallback();
1028
@@ -1326,7 +1345,7 @@ SQL
1326
public static function ajax_lh_callback(){
1327
self::getLog()->canLogHit = false;
1328
$UA = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
1329
- $isCrawler = false;
1330
if ($UA) {
1331
if (wfCrawl::isCrawler($UA) || wfCrawl::isGoogleCrawler()) {
1332
$isCrawler = true;
@@ -1618,12 +1637,152 @@ SQL
1618
}
1619
exit();
1620
}
1621
1622
// Sync the WAF data with the database.
1623
if (!WFWAF_SUBDIRECTORY_INSTALL && $waf = wfWAF::getInstance()) {
1624
$homeurl = wfUtils::wpHomeURL();
1625
$siteurl = wfUtils::wpSiteURL();
1626
1627
try {
1628
$configDefaults = array(
1629
'apiKey' => wfConfig::get('apiKey'),
@@ -5759,6 +5918,7 @@ HTML
5759
$IPMsg .= $userLoc['countryName'] . "\n";
5760
}
5761
}
5762
$content = wfUtils::tmpl('email_genericAlert.php', array(
5763
'isPaid' => wfConfig::get('isPaid'),
5764
'subject' => $subject,
@@ -5802,8 +5962,9 @@ HTML
5802
}
5803
}
5804
wfConfig::set('lastEmailHash', time() . ':' . $hash);
5805
- if (count($emails)) {
5806
- wp_mail(implode(',', $emails), $subject, $content);
5807
}
5808
}
5809
public static function getLog(){
576
}
577
578
wfConfig::set('geoIPVersionHash', $geoIPVersionHash);
579
+ wfConfig::set('needsGeoIPSync', true, wfConfig::DONT_AUTOLOAD); //From 7.1.9 but needs same conditional
580
}
581
582
if (wfConfig::get('other_hideWPVersion')) {
1024
wfConfig::set('generateAllOptionsNotification', 1);
1025
}*/
1026
1027
+ //7.1.9
1028
+ if (wfConfig::get('loginSec_maxFailures') == 1) {
1029
+ wfConfig::set('loginSec_maxFailures', 2);
1030
+ }
1031
+
1032
+ $blocksTable = wfBlock::blocksTable();
1033
+ $patternBlocks = wfBlock::patternBlocks();
1034
+ foreach ($patternBlocks as $b) {
1035
+ if (!empty($b->ipRange) && preg_match('/^\d+\-\d+#x2F;', $b->ipRange)) { //Old-style range block using long2ip
1036
+ $ipRange = new wfUserIPRange($b->ipRange);
1037
+ $ipRange = $ipRange->getIPString();
1038
+
1039
+ $parameters = $b->parameters;
1040
+ $parameters['ipRange'] = $ipRange;
1041
+ $wpdb->query($wpdb->prepare("UPDATE `{$blocksTable}` SET `parameters` = %s WHERE `id` = %d", json_encode($parameters), $b->id));
1042
+ }
1043
+ }
1044
+
1045
//Check the How does Wordfence get IPs setting
1046
wfUtils::requestDetectProxyCallback();
1047
1345
public static function ajax_lh_callback(){
1346
self::getLog()->canLogHit = false;
1347
$UA = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
1348
+ $isCrawler = empty($UA);
1349
if ($UA) {
1350
if (wfCrawl::isCrawler($UA) || wfCrawl::isGoogleCrawler()) {
1351
$isCrawler = true;
1637
}
1638
exit();
1639
}
1640
+ else if ($wfFunc == 'removeAlertEmail') {
1641
+ wfUtils::doNotCache();
1642
+
1643
+ $payloadStatus = false;
1644
+ $jwt = (isset($_GET['jwt']) && is_string($_GET['jwt'])) ? $_GET['jwt'] : '';
1645
+ if (!empty($jwt)) {
1646
+ $payload = wfUtils::decodeJWT($jwt);
1647
+ if ($payload && isset($payload['email'])) {
1648
+ $payloadStatus = true;
1649
+ }
1650
+ }
1651
+
1652
+ if (isset($_POST['resend'])) {
1653
+ $email = trim(@$_POST['email']);
1654
+ $found = false;
1655
+ $alertEmails = wfConfig::getAlertEmails();
1656
+ foreach ($alertEmails as $e) {
1657
+ if ($e == $email) {
1658
+ $found = true;
1659
+ break;
1660
+ }
1661
+ }
1662
+
1663
+ if ($found) {
1664
+ $content = wfUtils::tmpl('email_unsubscribeRequest.php', array(
1665
+ 'siteName' => get_bloginfo('name', 'raw'),
1666
+ 'siteURL' => wfUtils::getSiteBaseURL(),
1667
+ 'IP' => wfUtils::getIP(),
1668
+ 'jwt' => wfUtils::generateJWT(array('email' => $email)),
1669
+ ));
1670
+ wp_mail($email, "Unsubscribe Requested", $content, "Content-Type: text/html");
1671
+ }
1672
+
1673
+ echo wfView::create('common/unsubscribe', array(
1674
+ 'state' => 'resent',
1675
+ ))->render();
1676
+ exit();
1677
+ }
1678
+ else if (!$payloadStatus) {
1679
+ echo wfView::create('common/unsubscribe', array(
1680
+ 'state' => 'bad',
1681
+ ))->render();
1682
+ exit();
1683
+ }
1684
+ else if (isset($_POST['confirm'])) {
1685
+ $confirm = wfUtils::truthyToBoolean($_POST['confirm']);
1686
+ if ($confirm) {
1687
+ $found = false;
1688
+ $alertEmails = wfConfig::getAlertEmails();
1689
+ $updatedAlertEmails = array();
1690
+ foreach ($alertEmails as $alertEmail) {
1691
+ if ($alertEmail == $payload['email']) {
1692
+ $found = true;
1693
+ }
1694
+ else {
1695
+ $updatedAlertEmails[] = $alertEmail;
1696
+ }
1697
+ }
1698
+
1699
+ if ($found) {
1700
+ wfConfig::set('alertEmails', implode(',', $updatedAlertEmails));
1701
+ }
1702
+
1703
+ echo wfView::create('common/unsubscribe', array(
1704
+ 'jwt' => $_GET['jwt'],
1705
+ 'email' => $payload['email'],
1706
+ 'state' => 'unsubscribed',
1707
+ ))->render();
1708
+ exit();
1709
+ }
1710
+ }
1711
+
1712
+ echo wfView::create('common/unsubscribe', array(
1713
+ 'jwt' => $_GET['jwt'],
1714
+ 'email' => $payload['email'],
1715
+ 'state' => 'prompt',
1716
+ ))->render();
1717
+ exit();
1718
+ }
1719
1720
// Sync the WAF data with the database.
1721
if (!WFWAF_SUBDIRECTORY_INSTALL && $waf = wfWAF::getInstance()) {
1722
$homeurl = wfUtils::wpHomeURL();
1723
$siteurl = wfUtils::wpSiteURL();
1724
1725
+ //Sync the GeoIP database if needed
1726
+ $destination = WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb';
1727
+ if (!file_exists($destination) || wfConfig::get('needsGeoIPSync')) {
1728
+ $allowSync = false;
1729
+ if (wfConfig::createLock('wfSyncGeoIP')) {
1730
+ $status = get_transient('wfSyncGeoIPActive');
1731
+ if (!$status) {
1732
+ $allowSync = true;
1733
+ set_transient('wfSyncGeoIPActive', true, 3600);
1734
+ }
1735
+ wfConfig::releaseLock('wfSyncGeoIP');
1736
+ }
1737
+
1738
+ if ($allowSync) {
1739
+ $source = dirname(__FILE__) . '/GeoLite2-Country.mmdb';
1740
+ if (copy($source, $destination)) {
1741
+ $shash = '';
1742
+ $dhash = '';
1743
+
1744
+ $sp = @fopen($source, "rb");
1745
+ if ($sp) {
1746
+ $scontext = hash_init('sha256');
1747
+ while (!feof($sp)) {
1748
+ $data = fread($sp, 65536);
1749
+ if ($data === false) {
1750
+ $scontext = false;
1751
+ break;
1752
+ }
1753
+ hash_update($scontext, $data);
1754
+ }
1755
+ fclose($sp);
1756
+ if ($scontext !== false) {
1757
+ $shash = hash_final($scontext, false);
1758
+ }
1759
+ }
1760
+
1761
+ $dp = @fopen($destination, "rb");
1762
+ if ($dp) {
1763
+ $dcontext = hash_init('sha256');
1764
+ while (!feof($dp)) {
1765
+ $data = fread($dp, 65536);
1766
+ if ($data === false) {
1767
+ $dcontext = false;
1768
+ break;
1769
+ }
1770
+ hash_update($dcontext, $data);
1771
+ }
1772
+ fclose($dp);
1773
+ if ($scontext !== false) {
1774
+ $dhash = hash_final($dcontext, false);
1775
+ }
1776
+ }
1777
+
1778
+ if (hash_equals($shash, $dhash)) {
1779
+ wfConfig::remove('needsGeoIPSync');
1780
+ delete_transient('wfSyncGeoIPActive');
1781
+ }
1782
+ }
1783
+ }
1784
+ }
1785
+
1786
try {
1787
$configDefaults = array(
1788
'apiKey' => wfConfig::get('apiKey'),
5918
$IPMsg .= $userLoc['countryName'] . "\n";
5919
}
5920
}
5921
+
5922
$content = wfUtils::tmpl('email_genericAlert.php', array(
5923
'isPaid' => wfConfig::get('isPaid'),
5924
'subject' => $subject,
5962
}
5963
}
5964
wfConfig::set('lastEmailHash', time() . ':' . $hash);
5965
+ foreach ($emails as $email) {
5966
+ $uniqueContent = $content . "\n\n" . sprintf(__('No longer an administrator for this site? Click here to stop receiving security alerts: %s', 'wordfence'), wfUtils::getSiteBaseURL() . '?_wfsf=removeAlertEmail&jwt=' . wfUtils::generateJWT(array('email' => $email)));
5967
+ wp_mail($email, $subject, $uniqueContent);
5968
}
5969
}
5970
public static function getLog(){
models/common/wfGeoIP2.php CHANGED
@@ -11,7 +11,7 @@ class wfGeoIP2 {
11
/**
12
* Returns the singleton wfGeoIP2.
13
*
14
- * @return wfScanner
15
*/
16
public static function shared() {
17
static $_geoip = null;
@@ -22,6 +22,16 @@ class wfGeoIP2 {
22
}
23
24
public function __construct() {
25
$this->_reader = new Reader(__DIR__ . '/../../lib/GeoLite2-Country.mmdb'); //Can throw, but we don't catch it because it means the installation is likely corrupt and needs fixed anyway
26
}
27
11
/**
12
* Returns the singleton wfGeoIP2.
13
*
14
+ * @return wfGeoIP2
15
*/
16
public static function shared() {
17
static $_geoip = null;
22
}
23
24
public function __construct() {
25
+ try {
26
+ if (file_exists(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb')) {
27
+ $this->_reader = new Reader(WFWAF_LOG_PATH . '/GeoLite2-Country.mmdb');
28
+ return;
29
+ }
30
+ }
31
+ catch (Exception $e) {
32
+ //Fall through to bundled copy
33
+ }
34
+
35
$this->_reader = new Reader(__DIR__ . '/../../lib/GeoLite2-Country.mmdb'); //Can throw, but we don't catch it because it means the installation is likely corrupt and needs fixed anyway
36
}
37
readme.txt CHANGED
@@ -3,8 +3,8 @@ Contributors: mmaunder
3
Tags: security, firewall, malware scanner, web application firewall, antivirus, block hackers, country blocking, clean hacked site, blacklist, waf, login security
4
Requires at least: 3.9
5
Requires PHP: 5.2
6
- Tested up to: 4.9.6
7
- Stable tag: 7.1.8
8
9
Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more.
10
@@ -172,6 +172,22 @@ Secure your website with Wordfence.
172
173
== Changelog ==
174
175
= 7.1.8 =
176
* Improvement: Better detection of removal status when uninstalling the WAF's auto-prepend file.
177
* Improvement: Switched optional mailing list signup to go directly through our servers rather than a third party.
3
Tags: security, firewall, malware scanner, web application firewall, antivirus, block hackers, country blocking, clean hacked site, blacklist, waf, login security
4
Requires at least: 3.9
5
Requires PHP: 5.2
6
+ Tested up to: 4.9.7
7
+ Stable tag: 7.1.9
8
9
Secure your website with the most comprehensive WordPress security plugin. Firewall, malware scan, blocking, live traffic, login security & more.
10
172
173
== Changelog ==
174
175
+ = 7.1.9 =
176
+ * Improvement: Added an "unsubscribe" link to plugin-generated alerts.
177
+ * Improvement: Added some additional flags.
178
+ * Change: Removed some unnecessary files from the bundled GeoIP library.
179
+ * Change: Updated wording in the Terms of Use/Privacy Policy agreement UI.
180
+ * Change: The minimum "Lock out after how many login failures" is now 2.
181
+ * Change: The diagnostics report now includes the scan issues for easier debugging.
182
+ * Fix: Multiple improvements to automatic updating to avoid broken updates on sites with low resources or slow file systems.
183
+ * Fix: Better text wrapping in the top failed logins widget.
184
+ * Fix: Onboarding CSS/JS is now correctly enqueued for multisite installations.
185
+ * Fix: Fixed a missing asset with the bundled jQueryUI library.
186
+ * Fix: Fixed memory calculation when using PHP's supported shorthand syntax.
187
+ * Fix: Better wrapping behavior on the reason column in the blocks table.
188
+ * Fix: Fixed an issue with an internal data structure to prevent error log entries when using mbstring functions.
189
+ * Fix: Improved bot detection when no user agent is sent.
190
+
191
= 7.1.8 =
192
* Improvement: Better detection of removal status when uninstalling the WAF's auto-prepend file.
193
* Improvement: Switched optional mailing list signup to go directly through our servers rather than a third party.
vendor/composer/ca-bundle/README.md DELETED
@@ -1,85 +0,0 @@
1
- composer/ca-bundle
2
- ==================
3
-
4
- Small utility library that lets you find a path to the system CA bundle,
5
- and includes a fallback to the Mozilla CA bundle.
6
-
7
- Originally written as part of [composer/composer](https://github.com/composer/composer),
8
- now extracted and made available as a stand-alone library.
9
-
10
-
11
- Installation
12
- ------------
13
-
14
- Install the latest version with:
15
-
16
- ```bash
17
- $ composer require composer/ca-bundle
18
- ```
19
-
20
-
21
- Requirements
22
- ------------
23
-
24
- * PHP 5.3.2 is required but using the latest version of PHP is highly recommended.
25
-
26
-
27
- Basic usage
28
- -----------
29
-
30
- # `Composer\CaBundle\CaBundle`
31
-
32
- - `CaBundle::getSystemCaRootBundlePath()`: Returns the system CA bundle path, or a path to the bundled one as fallback
33
- - `CaBundle::getBundledCaBundlePath()`: Returns the path to the bundled CA file
34
- - `CaBundle::validateCaFile($filename)`: Validates a CA file using opensl_x509_parse only if it is safe to use
35
- - `CaBundle::isOpensslParseSafe()`: Test if it is safe to use the PHP function openssl_x509_parse()
36
- - `CaBundle::reset()`: Resets the static caches
37
-
38
-
39
- ## To use with curl
40
-
41
- ```php
42
- $curl = curl_init("https://example.org/");
43
-
44
- $caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath();
45
- if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) {
46
- curl_setopt($curl, CURLOPT_CAPATH, $caPathOrFile);
47
- } else {
48
- curl_setopt($curl, CURLOPT_CAINFO, $caPathOrFile);
49
- }
50
-
51
- $result = curl_exec($curl);
52
- ```
53
-
54
- ## To use with php streams
55
-
56
- ```php
57
- $opts = array(
58
- 'http' => array(
59
- 'method' => "GET"
60
- )
61
- );
62
-
63
- $caPathOrFile = \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath();
64
- if (is_dir($caPathOrFile) || (is_link($caPathOrFile) && is_dir(readlink($caPathOrFile)))) {
65
- $opts['ssl']['capath'] = $caPathOrFile;
66
- } else {
67
- $opts['ssl']['cafile'] = $caPathOrFile;
68
- }
69
-
70
- $context = stream_context_create($opts);
71
- $result = file_get_contents('https://example.com', false, $context);
72
- ```
73
-
74
- ## To use with Guzzle
75
-
76
- ```php
77
- $client = new \GuzzleHttp\Client([
78
- \GuzzleHttp\RequestOptions::VERIFY => \Composer\CaBundle\CaBundle::getSystemCaRootBundlePath()
79
- ]);
80
- ```
81
-
82
- License
83
- -------
84
-
85
- composer/ca-bundle is licensed under the MIT License, see the LICENSE file for details.
vendor/geoip2/geoip2/CHANGELOG.md DELETED
@@ -1,257 +0,0 @@
1
- CHANGELOG
2
- =========
3
-
4
- 2.8.0 (2018-01-18)
5
- ------------------
6
-
7
- - The `isInEuropeanUnion` property was added to `GeoIp2\Record\Country`
8
- and `GeoIp2\Record\RepresentedCountry`. This property is `true` if the
9
- country is a member state of the European Union.
10
-
11
- 2.7.0 (2017-10-27)
12
- ------------------
13
-
14
- * The following new anonymizer properties were added to `GeoIp2\Record\Traits`
15
- for use with GeoIP2 Precision Insights: `isAnonymous`, `isAnonymousVpn`,
16
- `isHostingProvider`, `isPublicProxy`, and `isTorExitNode`.
17
-
18
- 2.6.0 (2017-07-10)
19
- -----------------
20
-
21
- * Code clean-up and tidying.
22
- * Set minimum required PHP version to 5.4 in `composer.json`. Previously,
23
- 5.3 would work but was not tested. Now 5.4 is hard minimum version.
24
-
25
- 2.5.0 (2017-05-08)
26
- ------------------
27
-
28
- * Support for PHP 5.3 was dropped.
29
- * Added support for GeoLite2 ASN database.
30
-
31
- 2.4.5 (2017-01-31)
32
- ------------------
33
-
34
- * Additional error checking on the data returned from `MaxMind\Db\Reader`
35
- was added to help detect corrupt databases. GitHub #83.
36
-
37
- 2.4.4 (2016-10-11)
38
- ------------------
39
-
40
- * `isset()` on `mostSpecificSubdivision` attribute now returns the
41
- correct value. Reported by Juan Francisco Giordana. GitHub #81.
42
-
43
- 2.4.3 (2016-10-11)
44
- ------------------
45
-
46
- * `isset()` on `name` attribute now returns the correct value. Reported by
47
- Juan Francisco Giordana. GitHub #79.
48
-
49
- 2.4.2 (2016-08-17)
50
- ------------------
51
-
52
- * Updated documentation to clarify what the accuracy radius refers to.
53
- * Upgraded `maxmind/web-service-common` to 0.3.0. This version uses
54
- `composer/ca-bundle` rather than our own CA bundle. GitHub #75.
55
- * Improved PHP documentation generation.
56
-
57
- 2.4.1 (2016-06-10)
58
- ------------------
59
-
60
- * Corrected type annotations in documentation. GitHub #66.
61
- * Updated documentation to reflect that the accuracy radius is now included
62
- in City.
63
- * Upgraded web service client, which supports setting a proxy. GitHub #59.
64
-
65
- 2.4.0 (2016-04-15)
66
- ------------------
67
-
68
- * Added support for the GeoIP2 Enterprise database.
69
-
70
- 2.3.3 (2015-09-24)
71
- ------------------
72
-
73
- * Corrected case on `JsonSerializable` interface. Reported by Axel Etcheverry.
74
- GitHub #56.
75
-
76
- 2.3.2 (2015-09-23)
77
- ------------------
78
-
79
- * `JsonSerializable` compatibility interface was moved to `GeoIp2\Compat`
80
- rather than the global namespace to prevent autoloading issues. Reported by
81
- Tomas Buteler. GitHub #54.
82
- * Missing documentation for the `$postal` property was added to the
83
- `GeoIp2\Model\City` class. Fix by Roy Sindre Norangshol. GitHub #51.
84
- * In the Phar distribution, source files for this module no longer have their
85
- documentation stripped, allowing IDE introspection to work properly.
86
- Reported by Dominic Black. GitHub #52.
87
-
88
- 2.3.1 (2015-06-30)
89
- ------------------
90
-
91
- * Updated `maxmind/web-service-common` to version with fixes for PHP 5.3 and
92
- 5.4.
93
-
94
- 2.3.0 (2015-06-29)
95
- ------------------
96
-
97
- * Support for demographics fields `averageIncome` and `populationDensity` in
98
- the `Location` record, returned by the Insights endpoint.
99
- * The `isAnonymousProxy` and `isSatelliteProvider` properties on
100
- `GeoIP2\Record\Traits` have been deprecated. Please use our [GeoIP2
101
- Anonymous IP database](https://www.maxmind.com/en/geoip2-anonymous-ip-database)
102
- to determine whether an IP address is used by an anonymizing service.
103
-
104
- 2.2.0-beta1 (2015-06-09)
105
- ------------------------
106
-
107
- * Typo fix in documentation.
108
-
109
- 2.2.0-alpha2 (2015-06-01)
110
- -------------------------
111
-
112
- * `maxmind-ws/web-service-common` was renamed to `maxmind/web-service-common`.
113
-
114
- 2.2.0-alpha1 (2015-05-22)
115
- -------------------------
116
-
117
- * The library no longer uses Guzzle and instead uses curl directly.
118
- * Support for `timeout` and `connectTimout` were added to the `$options` array
119
- passed to the `GeoIp2\WebService\Client` constructor. Pull request by Will
120
- Bradley. GitHub #36.
121
-
122
- 2.1.1 (2014-12-03)
123
- ------------------
124
-
125
- * The 2.1.0 Phar builds included a shebang line, causing issues when loading
126
- it as a library. This has been corrected. GitHub #33.
127
-
128
- 2.1.0 (2014-10-29)
129
- ------------------
130
-
131
- * Update ApiGen dependency to version that isn't broken on case sensitive
132
- file systems.
133
- * Added support for the GeoIP2 Anonymous IP database. The
134
- `GeoIP2\Database\Reader` class now has an `anonymousIp` method which returns
135
- a `GeoIP2\Model\AnonymousIp` object.
136
- * Boolean attributes like those in the `GeoIP2\Record\Traits` class now return
137
- `false` instead of `null` when they were not true.
138
-
139
- 2.0.0 (2014-09-22)
140
- ------------------
141
-
142
- * First production release.
143
-
144
- 0.9.0 (2014-09-15)
145
- ------------------
146
-
147
- * IMPORTANT: The deprecated `omni()` and `cityIspOrg()` methods have been
148
- removed from `GeoIp2\WebService\Client`.
149
-
150
- 0.8.1 (2014-09-12)
151
- ------------------
152
-
153
- * The check added to the `GeoIP2\Database\Reader` lookup methods in 0.8.0 did
154
- not work with the GeoIP2 City Database Subset by Continent with World
155
- Countries. This has been fixed. Fixes GitHub issue #23.
156
-
157
- 0.8.0 (2014-09-10)
158
- ------------------
159
-
160
- * The `GeoIp2\Database\Reader` lookup methods (e.g., `city()`, `isp()`) now
161
- throw a `BadMethodCallException` if they are used with a database that
162
- does not match the method. In particular, doing a `city()` lookup on a
163
- GeoIP2 Country database will result in an exception, and vice versa.
164
- * A `metadata()` method has been added to the `GeoIP2\Database\Reader` class.
165
- This returns a `MaxMind\Db\Reader\Metadata` class with information about the
166
- database.
167
- * The name attribute was missing from the RepresentedCountry class.
168
-
169
- 0.7.0 (2014-07-22)
170
- ------------------
171
-
172
- * The web service client API has been updated for the v2.1 release of the web
173
- service. In particular, the `cityIspOrg` and `omni` methods on
174
- `GeoIp2\WebService\Client` should be considered deprecated. The `city`
175
- method now provides all of the data formerly provided by `cityIspOrg`, and
176
- the `omni` method has been replaced by the `insights` method.
177
- * Support was added for GeoIP2 Connection Type, Domain and ISP databases.
178
-
179
-
180
- 0.6.3 (2014-05-12)
181
- ------------------
182
-
183
- * With the previous Phar builds, some users received `phar error: invalid url
184
- or non-existent phar` errors. The correct alias is now used for the Phar,
185
- and this should no longer be an issue.
186
-
187
- 0.6.2 (2014-05-08)
188
- ------------------
189
-
190
- * The Phar build was broken with Guzzle 3.9.0+. This has been fixed.
191
-
192
- 0.6.1 (2014-05-01)
193
- ------------------
194
-
195
- * This API now officially supports HHVM.
196
- * The `maxmind-db/reader` dependency was updated to a version that does not
197
- require BC Math.
198
- * The Composer compatibility autoload rules are now targeted more narrowly.
199
- * A `box.json` file is included to build a Phar package.
200
-
201
- 0.6.0 (2014-02-19)
202
- ------------------
203
-
204
- * This API is now licensed under the Apache License, Version 2.0.
205
- * Model and record classes now implement `JsonSerializable`.
206
- * `isset` now works with model and record classes.
207
-
208
- 0.5.0 (2013-10-21)
209
- ------------------
210
-
211
- * Renamed $languages constructor parameters to $locales for both the Client
212
- and Reader classes.
213
- * Documentation and code clean-up (Ben Morel).
214
- * Added the interface `GeoIp2\ProviderInterface`, which is implemented by both
215
- `\GeoIp2\Database\Reader` and `\GeoIp2\WebService\Client`.
216
-
217
- 0.4.0 (2013-07-16)
218
- ------------------
219
-
220
- * This is the first release with the GeoIP2 database reader. Please see the
221
- `README.md` file and the `\GeoIp2\Database\Reader` class.
222
- * The general exception classes were replaced with specific exception classes
223
- representing particular types of errors, such as an authentication error.
224
-
225
- 0.3.0 (2013-07-12)
226
- ------------------
227
-
228
- * In namespaces and class names, "GeoIP2" was renamed to "GeoIp2" to improve
229
- consistency.
230
-
231
- 0.2.1 (2013-06-10)
232
- ------------------
233
-
234
- * First official beta release.
235
- * Documentation updates and corrections.
236
-
237
- 0.2.0 (2013-05-29)
238
- ------------------
239
-
240
- * `GenericException` was renamed to `GeoIP2Exception`.
241
- * We now support more languages. The new languages are de, es, fr, and pt-BR.
242
- * The REST API now returns a record with data about your account. There is
243
- a new `GeoIP\Records\MaxMind` class for this data.
244
- * The `continentCode` attribute on `Continent` was renamed to `code`.
245
- * Documentation updates.
246
-
247
- 0.1.1 (2013-05-14)
248
- ------------------
249
-
250
- * Updated Guzzle version requirement.
251
- * Fixed Composer example in README.md.
252
-
253
-
254
- 0.1.0 (2013-05-13)
255
- ------------------
256
-
257
- * Initial release.
vendor/geoip2/geoip2/README.md DELETED
@@ -1,401 +0,0 @@
1
- # GeoIP2 PHP API #
2
-
3
- ## Description ##
4
-
5
- This package provides an API for the GeoIP2
6
- [web services](http://dev.maxmind.com/geoip/geoip2/web-services) and
7
- [databases](http://dev.maxmind.com/geoip/geoip2/downloadable). The API also
8
- works with the free
9
- [GeoLite2 databases](http://dev.maxmind.com/geoip/geoip2/geolite2/).
10
-
11
- ## Install via Composer ##
12
-
13
- We recommend installing this package with [Composer](http://getcomposer.org/).
14
-
15
- ### Download Composer ###
16
-
17
- To download Composer, run in the root directory of your project:
18
-
19
- ```bash
20
- curl -sS https://getcomposer.org/installer | php
21
- ```
22
-
23
- You should now have the file `composer.phar` in your project directory.
24
-
25
- ### Install Dependencies ###
26
-
27
- Run in your project root:
28
-
29
- ```
30
- php composer.phar require geoip2/geoip2:~2.0
31
- ```
32
-
33
- You should now have the files `composer.json` and `composer.lock` as well as
34
- the directory `vendor` in your project directory. If you use a version control
35
- system, `composer.json` should be added to it.
36
-
37
- ### Require Autoloader ###
38
-
39
- After installing the dependencies, you need to require the Composer autoloader
40
- from your code:
41
-
42
- ```php
43
- require 'vendor/autoload.php';
44
- ```
45
-
46
- ## Install via Phar ##
47
-
48
- Although we strongly recommend using Composer, we also provide a
49
- [phar archive](http://php.net/manual/en/book.phar.php) containing most of the
50
- dependencies for GeoIP2. Our latest phar archive is available on
51
- [our releases page](https://github.com/maxmind/GeoIP2-php/releases).
52
-
53
- ### Install Dependencies ###
54
-
55
- In order to use the phar archive, you must have the PHP
56
- [Phar extension](http://php.net/manual/en/book.phar.php) installed and
57
- enabled.
58
-
59
- If you will be making web service requests, you must have the PHP
60
- [cURL extension](http://php.net/manual/en/book.curl.php)
61
- installed to use this archive. For Debian based distributions, this can
62
- typically be found in the the `php-curl` package. For other operating
63
- systems, please consult the relevant documentation. After installing the
64
- extension you may need to restart your web server.
65
-
66
- If you are missing this extension, you will see errors like the following:
67
-
68
- ```
69
- PHP Fatal error: Uncaught Error: Call to undefined function MaxMind\WebService\curl_version()
70
- ```
71
-
72
- ### Require Package ###
73
-
74
- To use the archive, just require it from your script:
75
-
76
- ```php
77
- require 'geoip2.phar';
78
- ```
79
-
80
- ## Optional C Extension ##
81
-
82
- The [MaxMind DB API](https://github.com/maxmind/MaxMind-DB-Reader-php)
83
- includes an optional C extension that you may install to dramatically increase
84
- the performance of lookups in GeoIP2 or GeoLite2 databases. To install, please
85
- follow the instructions included with that API.
86
-
87
- The extension has no effect on web-service lookups.
88
-
89
- ## IP Geolocation Usage ##
90
-
91
- IP geolocation is inherently imprecise. Locations are often near the center of
92
- the population. Any location provided by a GeoIP2 database or web service
93
- should not be used to identify a particular address or household.
94
-
95
- ## Database Reader ##
96
-
97
- ### Usage ###
98
-
99
- To use this API, you must create a new `\GeoIp2\Database\Reader` object with
100
- the path to the database file as the first argument to the constructor. You
101
- may then call the method corresponding to the database you are using.
102
-
103
- If the lookup succeeds, the method call will return a model class for the
104
- record in the database. This model in turn contains multiple container
105
- classes for the different parts of the data such as the city in which the
106
- IP address is located.
107
-
108
- If the record is not found, a `\GeoIp2\Exception\AddressNotFoundException`
109
- is thrown. If the database is invalid or corrupt, a
110
- `\MaxMind\Db\InvalidDatabaseException` will be thrown.
111
-
112
- See the API documentation for more details.
113
-
114
- ### City Example ###
115
-
116
- ```php
117
- <?php
118
- require_once 'vendor/autoload.php';
119
- use GeoIp2\Database\Reader;
120
-
121
- // This creates the Reader object, which should be reused across
122
- // lookups.
123
- $reader = new Reader('/usr/local/share/GeoIP/GeoIP2-City.mmdb');
124
-
125
- // Replace "city" with the appropriate method for your database, e.g.,
126
- // "country".
127
- $record = $reader->city('128.101.101.101');
128
-
129
- print($record->country->isoCode . "\n"); // 'US'
130
- print($record->country->name . "\n"); // 'United States'
131
- print($record->country->names['zh-CN'] . "\n"); // '美国'
132
-
133
- print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
134
- print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
135
-
136
- print($record->city->name . "\n"); // 'Minneapolis'
137
-
138
- print($record->postal->code . "\n"); // '55455'
139
-
140
- print($record->location->latitude . "\n"); // 44.9733
141
- print($record->location->longitude . "\n"); // -93.2323
142
-
143
- ```
144
-
145
- ### Anonymous IP Example ###
146
-
147
- ```php
148
- <?php
149
- require_once 'vendor/autoload.php';
150
- use GeoIp2\Database\Reader;
151
-
152
- // This creates the Reader object, which should be reused across
153
- // lookups.
154
- $reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Anonymous-IP.mmdb');
155
-
156
- $record = $reader->anonymousIp('128.101.101.101');
157
-
158
- if ($record->isAnonymous) { print "anon\n"; }
159
- print($record->ipAddress . "\n"); // '128.101.101.101'
160
-
161
- ```
162
-
163
- ### Connection-Type Example ###
164
-
165
- ```php
166
- <?php
167
- require_once 'vendor/autoload.php';
168
- use GeoIp2\Database\Reader;
169
-
170
- // This creates the Reader object, which should be reused across
171
- // lookups.
172
- $reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Connection-Type.mmdb');
173
-
174
- $record = $reader->connectionType('128.101.101.101');
175
-
176
- print($record->connectionType . "\n"); // 'Corporate'
177
- print($record->ipAddress . "\n"); // '128.101.101.101'
178
-
179
- ```
180
-
181
- ### Domain Example ###
182
-
183
- ```php
184
- <?php
185
- require_once 'vendor/autoload.php';
186
- use GeoIp2\Database\Reader;
187
-
188
- // This creates the Reader object, which should be reused across
189
- // lookups.
190
- $reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Domain.mmdb');
191
-
192
- $record = $reader->domain('128.101.101.101');
193
-
194
- print($record->domain . "\n"); // 'umn.edu'
195
- print($record->ipAddress . "\n"); // '128.101.101.101'
196
-
197
- ```
198
-
199
- ### Enterprise Example ###
200
-
201
- ```php
202
- <?php
203
- require_once 'vendor/autoload.php';
204
- use GeoIp2\Database\Reader;
205
-
206
- // This creates the Reader object, which should be reused across
207
- // lookups.
208
- $reader = new Reader('/usr/local/share/GeoIP/GeoIP2-Enterprise.mmdb');
209
-
210
- // Use the ->enterprise method to do a lookup in the Enterprise database
211
- $record = $reader->enterprise('128.101.101.101');
212
-
213
- print($record->country->confidence . "\n"); // 99
214
- print($record->country->isoCode . "\n"); // 'US'
215
- print($record->country->name . "\n"); // 'United States'
216
- print($record->country->names['zh-CN'] . "\n"); // '美国'
217
-
218
- print($record->mostSpecificSubdivision->confidence . "\n"); // 77
219
- print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
220
- print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
221
-
222
- print($record->city->confidence . "\n"); // 60
223
- print($record->city->name . "\n"); // 'Minneapolis'
224
-
225
- print($record->postal->code . "\n"); // '55455'
226
-
227
- print($record->location->accuracyRadius . "\n"); // 50
228
- print($record->location->latitude . "\n"); // 44.9733
229
- print($record->location->longitude . "\n"); // -93.2323
230
-
231
- ```
232
-
233
- ### ISP Example ###
234
-
235
- ```php
236
- <?php
237
- require_once 'vendor/autoload.php';
238
- use GeoIp2\Database\Reader;
239
-
240
- // This creates the Reader object, which should be reused across
241
- // lookups.
242
- $reader = new Reader('/usr/local/share/GeoIP/GeoIP2-ISP.mmdb');
243
-
244
- $record = $reader->isp('128.101.101.101');
245
-
246
- print($record->autonomousSystemNumber . "\n"); // 217
247
- print($record->autonomousSystemOrganization . "\n"); // 'University of Minnesota'
248
- print($record->isp . "\n"); // 'University of Minnesota'
249
- print($record->organization . "\n"); // 'University of Minnesota'
250
-
251
- print($record->ipAddress . "\n"); // '128.101.101.101'
252
-
253
- ```
254
-
255
- ## Web Service Client ##
256
-
257
- ### Usage ###
258
-
259
- To use this API, you must create a new `\GeoIp2\WebService\Client`
260
- object with your `$userId` and `$licenseKey`, then you call the method
261
- corresponding to a specific end point, passing it the IP address you want to
262
- look up.
263
-
264
- If the request succeeds, the method call will return a model class for the end
265
- point you called. This model in turn contains multiple record classes, each of
266
- which represents part of the data returned by the web service.
267
-
268
- If there is an error, a structured exception is thrown.
269
-
270
- See the API documentation for more details.
271
-
272
- ### Example ###
273
-
274
- ```php
275
- <?php
276
- require_once 'vendor/autoload.php';
277
- use GeoIp2\WebService\Client;
278
-
279
- // This creates a Client object that can be reused across requests.
280
- // Replace "42" with your user ID and "license_key" with your license
281
- // key.
282
- $client = new Client(42, 'abcdef123456');
283
-
284
- // Replace "city" with the method corresponding to the web service that
285
- // you are using, e.g., "country", "insights".
286
- $record = $client->city('128.101.101.101');
287
-
288
- print($record->country->isoCode . "\n"); // 'US'
289
- print($record->country->name . "\n"); // 'United States'
290
- print($record->country->names['zh-CN'] . "\n"); // '美国'
291
-
292
- print($record->mostSpecificSubdivision->name . "\n"); // 'Minnesota'
293
- print($record->mostSpecificSubdivision->isoCode . "\n"); // 'MN'
294
-
295
- print($record->city->name . "\n"); // 'Minneapolis'
296
-
297
- print($record->postal->code . "\n"); // '55455'
298
-
299
- print($record->location->latitude . "\n"); // 44.9733
300
- print($record->location->longitude . "\n"); // -93.2323
301
-
302
- ```
303
-
304
- ## Values to use for Database or Array Keys ##
305
-
306
- **We strongly discourage you from using a value from any `names` property as
307
- a key in a database or array.**
308
-
309
- These names may change between releases. Instead we recommend using one of the
310
- following:
311
-
312
- * `GeoIp2\Record\City` - `$city->geonameId`
313
- * `GeoIp2\Record\Continent` - `$continent->code` or `$continent->geonameId`
314
- * `GeoIp2\Record\Country` and `GeoIp2\Record\RepresentedCountry` -
315
- `$country->isoCode` or `$country->geonameId`
316
- * `GeoIp2\Record\Subdivision` - `$subdivision->isoCode` or `$subdivision->geonameId`
317
-
318
- ### What data is returned? ###
319
-
320
- While many of the end points return the same basic records, the attributes
321
- which can be populated vary between end points. In addition, while an end
322
- point may offer a particular piece of data, MaxMind does not always have every
323
- piece of data for any given IP address.
324
-
325
- Because of these factors, it is possible for any end point to return a record
326
- where some or all of the attributes are unpopulated.
327
-
328
- See the
329
- [GeoIP2 Precision web service docs](http://dev.maxmind.com/geoip/geoip2/web-services)
330
- for details on what data each end point may return.
331
-
332
- The only piece of data which is always returned is the `ipAddress`
333
- attribute in the `GeoIp2\Record\Traits` record.
334
-
335
- ## Integration with GeoNames ##
336
-
337
- [GeoNames](http://www.geonames.org/) offers web services and downloadable
338
- databases with data on geographical features around the world, including
339
- populated places. They offer both free and paid premium data. Each
340
- feature is unique identified by a `geonameId`, which is an integer.
341
-
342
- Many of the records returned by the GeoIP2 web services and databases
343
- include a `geonameId` property. This is the ID of a geographical feature
344
- (city, region, country, etc.) in the GeoNames database.
345
-
346
- Some of the data that MaxMind provides is also sourced from GeoNames. We
347
- source things like place names, ISO codes, and other similar data from
348
- the GeoNames premium data set.
349
-
350
- ## Reporting data problems ##
351
-
352
- If the problem you find is that an IP address is incorrectly mapped,
353
- please
354
- [submit your correction to MaxMind](http://www.maxmind.com/en/correction).
355
-
356
- If you find some other sort of mistake, like an incorrect spelling,
357
- please check the [GeoNames site](http://www.geonames.org/) first. Once
358
- you've searched for a place and found it on the GeoNames map view, there
359
- are a number of links you can use to correct data ("move", "edit",
360
- "alternate names", etc.). Once the correction is part of the GeoNames
361
- data set, it will be automatically incorporated into future MaxMind
362
- releases.
363
-
364
- If you are a paying MaxMind customer and you're not sure where to submit
365
- a correction, please
366
- [contact MaxMind support](http://www.maxmind.com/en/support) for help.
367
-
368
- ## Other Support ##
369
-
370
- Please report all issues with this code using the
371
- [GitHub issue tracker](https://github.com/maxmind/GeoIP2-php/issues).
372
-
373
- If you are having an issue with a MaxMind service that is not specific
374
- to the client API, please see
375
- [our support page](http://www.maxmind.com/en/support).
376
-
377
- ## Requirements ##
378
-
379
- This library requires PHP 5.4 or greater. This library works and is tested
380
- with HHVM.
381
-
382
- This library also relies on the [MaxMind DB Reader](https://github.com/maxmind/MaxMind-DB-Reader-php).
383
-
384
- ## Contributing ##
385
-
386
- Patches and pull requests are encouraged. All code should follow the PSR-2
387
- style guidelines. Please include unit tests whenever possible. You may obtain
388
- the test data for the maxmind-db folder by running `git submodule update
389
- --init --recursive` or adding `--recursive` to your initial clone, or from
390
- https://github.com/maxmind/MaxMind-DB
391
-
392
- ## Versioning ##
393
-
394
- The GeoIP2 PHP API uses [Semantic Versioning](http://semver.org/).
395
-
396
- ## Copyright and License ##
397
-
398
- This software is Copyright (c) 2013-2018 by MaxMind, Inc.
399
-
400
- This is free software, licensed under the Apache License, Version 2.0.
401
-
vendor/maxmind-db/reader/CHANGELOG.md DELETED
@@ -1,108 +0,0 @@
1
- CHANGELOG
2
- =========
3
-
4
- 1.2.0 (2017-10-27)
5
- ------------------
6
-
7
- * PHP 5.4 is now required.
8
- * The `Reader` class for the `maxminddb` extension is no longer final.
9
- This was change to match the behavior of the pure PHP class.
10
- Reported and fixed by venyii. GitHub #52 & #54.