Constant Contact Forms - Version 1.8.5

Version Description

  • Added: Forced email notifications to admin when Constant Contact API request fails on attempted form submission.
  • Fixed: Addressed issues with plugin error logging and addressed false-positive error messaging.
  • Fixed: Cleaned up style minification task to allow for unminified version of stylesheet.
  • Updated: Updated support error messaging in admin to reference tab structure of plugin settings.
Download this release

Release Info

Developer constantcontact
Plugin Icon 128x128 Constant Contact Forms
Version 1.8.5
Comparing to
See all releases

Code changes from version 1.8.4 to 1.8.5

assets/css/style.css CHANGED
@@ -1,2 +1,182 @@
1
- .ctct-form-wrapper .ctct-button{font-size:.9rem}.ctct-form-wrapper .ctct-message{border:1px solid;padding:1em}.ctct-form-wrapper .ctct-message.ctct-error{background-color:rgba(255,65,54,.02);border-color:#ff4136;color:#cf0b00}.ctct-form-wrapper .ctct-message.ctct-success{background-color:rgba(46,204,64,.02);border-color:#2ecc40;color:#1b7926}.ctct-form-wrapper .ctct-form-field{margin:0 0 1rem}.ctct-form-wrapper .ctct-field-inline{display:inline-block}.ctct-form-wrapper input[type=email]:required:valid,.ctct-form-wrapper input[type=number]:required:valid,.ctct-form-wrapper input[type=password]:required:valid,.ctct-form-wrapper input[type=tel]:required:valid,.ctct-form-wrapper input[type=text]:required:valid{background-image:url(../images/check_circle.svg);background-position:8px 50%;background-repeat:no-repeat;background-size:18px;border-color:#2ecc40;padding-left:32px}.ctct-form-wrapper input[type=email].ctct-invalid,.ctct-form-wrapper input[type=email]:required.ctct-invalid,.ctct-form-wrapper input[type=number].ctct-invalid,.ctct-form-wrapper input[type=number]:required.ctct-invalid,.ctct-form-wrapper input[type=password].ctct-invalid,.ctct-form-wrapper input[type=password]:required.ctct-invalid,.ctct-form-wrapper input[type=tel].ctct-invalid,.ctct-form-wrapper input[type=tel]:required.ctct-invalid,.ctct-form-wrapper input[type=text].ctct-invalid,.ctct-form-wrapper input[type=text]:required.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper .ctct-field-error{font-size:.85rem;font-style:italic}.ctct-form-wrapper input.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper input.ctct-label-left,.ctct-form-wrapper textarea.ctct-label-left{display:inline-block;width:75%}.ctct-form-wrapper span.ctct-label-left{display:inline-block;margin-right:5%;width:20%}.ctct-form-wrapper input.ctct-label-right,.ctct-form-wrapper textarea.ctct-label-right{display:inline-block;margin-right:5%;width:75%}.ctct-form-wrapper span.ctct-label-right{display:inline-block;width:20%}.ctct-form-wrapper span.ctct-label-hidden{left:-9999px!important;position:absolute!important;top:-9999px!important}.ctct-form-wrapper #ctct_usage{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ctct-form-wrapper .no-recaptcha #ctct-submitted:disabled{background-image:url(../images/oval.min.svg);background-position:50%;background-repeat:no-repeat;color:transparent;cursor:wait;opacity:.3}.ctct-form-wrapper .has-recaptcha #ctct-submitted:disabled{cursor:not-allowed}.ctct-form-wrapper .ctct-form:after{clear:both;content:"";display:table}.ctct-form-wrapper .ctct-form .ctct-label-bottom label,.ctct-form-wrapper .ctct-form .ctct-label-top label{display:block}.ctct-form-wrapper .ctct-form .ctct-label-left label,.ctct-form-wrapper .ctct-form .ctct-label-right label{display:inline-block}.ctct-form-wrapper .ctct-form abbr{border:none;color:#ff4136;font-size:.9rem}.ctct-form-wrapper .ctct-input-container label{color:#aaa;font-size:.8rem}.ctct-form-wrapper .ctct-field-error{color:#ff4136}.ctct-form-wrapper .ctct-submit{cursor:pointer}.ctct-twentyfourteen .ctct-form-field input{width:100%}@media (min-width:992px){.ctct-form-wrapper .ctct-field-half{float:left;margin-right:2%;width:48%}.ctct-form-wrapper .ctct-field-half:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-third{float:left;margin-right:2%;width:32%}.ctct-form-wrapper .ctct-field-third:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-fourth{float:left;margin-right:2%;width:24%}.ctct-form-wrapper .ctct-field-fourth:last-of-type{margin-right:0}}
2
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQW1ELENBQ25ELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBcUQsQ0FDckQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQXFELENBQ3JELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHlDQUNFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsMENBQ0Usc0JBQXdCLENBQ3hCLDJCQUE2QixDQUM3QixxQkFDRixDQUVBLCtCQUNFLFFBQWMsQ0FDZCxrQkFBc0IsQ0FDdEIsVUFBVyxDQUNYLFdBQVksQ0FDWixlQUFnQixDQUNoQixTQUFVLENBQ1YsaUJBQWtCLENBQ2xCLFNBQ0YsQ0FFQSwwREFDRSw0Q0FBK0MsQ0FDL0MsdUJBQTJCLENBQzNCLDJCQUE0QixDQUM1QixpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLFVBQ0YsQ0FFQSwyREFDRSxrQkFDRixDQUVBLG9DQUNFLFVBQVcsQ0FDWCxVQUFXLENBQ1gsYUFDRixDQUVBLDJHQUVFLGFBQ0YsQ0FFQSwyR0FFRSxvQkFDRixDQUVBLG1DQUNFLFdBQVksQ0FDWixhQUFjLENBQ2QsZUFDRixDQUVBLCtDQUNFLFVBQVcsQ0FDWCxlQUNGLENBRUEscUNBQ0UsYUFDRixDQUVBLGdDQUNFLGNBQ0YsQ0FFQSw0Q0FDRSxVQUNGLENBNUpBLHlCQUNFLG9DQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsaURBQ0UsY0FDRixDQUlBLHFDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0Esa0RBQ0UsY0FDRixDQUlBLHNDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsbURBQ0UsY0FDRixDQXJCRiIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtYnV0dG9uIHtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlIHtcbiAgYm9yZGVyOiAxcHggc29saWQ7XG4gIHBhZGRpbmc6IDFlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIGNvbG9yOiAjY2YwYjAwO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZS5jdGN0LXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ2LCAyMDQsIDY0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBjb2xvcjogIzFiNzkyNjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQge1xuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGYge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDQ4JTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaGFsZjpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLXRoaXJkIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiAzMiU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLXRoaXJkOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZm91cnRoIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiAyNCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZWwnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkOnZhbGlkIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2NoZWNrX2NpcmNsZS5zdmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogMThweDtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBwYWRkaW5nLWxlZnQ6IDMycHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ10uY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoXCIuLi9pbWFnZXMvZXJyb3Iuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoXCIuLi9pbWFnZXMvZXJyb3Iuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLWxlZnQsXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWxlZnQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNSU7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLXJpZ2h0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNSU7XG4gIHdpZHRoOiA3NSU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtaGlkZGVuIHtcbiAgbGVmdDogLTk5OTlweCAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgdG9wOiAtOTk5OXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAjY3RjdF91c2FnZSB7XG4gIGJvcmRlcjogMCBub25lO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAubm8tcmVjYXB0Y2hhICNjdGN0LXN1Ym1pdHRlZDpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9vdmFsLm1pbi5zdmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHdhaXQ7XG4gIG9wYWNpdHk6IDAuMztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5oYXMtcmVjYXB0Y2hhICNjdGN0LXN1Ym1pdHRlZDpkaXNhYmxlZCB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtOjphZnRlciB7XG4gIGNsZWFyOiBib3RoO1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogdGFibGU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXRvcCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLWJvdHRvbSBsYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1sZWZ0IGxhYmVsLFxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtcmlnaHQgbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIGFiYnIge1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiAjZmY0MTM2O1xuICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWlucHV0LWNvbnRhaW5lciBsYWJlbCB7XG4gIGNvbG9yOiAjYWFhO1xuICBmb250LXNpemU6IDAuOHJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWVycm9yIHtcbiAgY29sb3I6ICNmZjQxMzY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1zdWJtaXQge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5jdGN0LXR3ZW50eWZvdXJ0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbn1cbiJdfQ== */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .ctct-form-wrapper .ctct-button {
2
+ font-size: 0.9rem;
3
+ }
4
+
5
+ .ctct-form-wrapper .ctct-message {
6
+ border: 1px solid;
7
+ padding: 1em;
8
+ }
9
+
10
+ .ctct-form-wrapper .ctct-message.ctct-error {
11
+ background-color: rgba(255, 65, 54, 0.02);
12
+ border-color: #ff4136;
13
+ color: #cf0b00;
14
+ }
15
+
16
+ .ctct-form-wrapper .ctct-message.ctct-success {
17
+ background-color: rgba(46, 204, 64, 0.02);
18
+ border-color: #2ecc40;
19
+ color: #1b7926;
20
+ }
21
+
22
+ .ctct-form-wrapper .ctct-form-field {
23
+ margin: 0 0 1rem;
24
+ }
25
+
26
+ .ctct-form-wrapper .ctct-field-inline {
27
+ display: inline-block;
28
+ }
29
+
30
+ .ctct-form-wrapper input[type='text']:required:valid, .ctct-form-wrapper input[type='email']:required:valid, .ctct-form-wrapper input[type='password']:required:valid, .ctct-form-wrapper input[type='tel']:required:valid, .ctct-form-wrapper input[type='number']:required:valid {
31
+ background-image: url("../images/check_circle.svg");
32
+ background-position: 8px 50%;
33
+ background-repeat: no-repeat;
34
+ background-size: 18px;
35
+ border-color: #2ecc40;
36
+ padding-left: 32px;
37
+ }
38
+
39
+ .ctct-form-wrapper input[type='text']:required.ctct-invalid, .ctct-form-wrapper input[type='text'].ctct-invalid, .ctct-form-wrapper input[type='email']:required.ctct-invalid, .ctct-form-wrapper input[type='email'].ctct-invalid, .ctct-form-wrapper input[type='password']:required.ctct-invalid, .ctct-form-wrapper input[type='password'].ctct-invalid, .ctct-form-wrapper input[type='tel']:required.ctct-invalid, .ctct-form-wrapper input[type='tel'].ctct-invalid, .ctct-form-wrapper input[type='number']:required.ctct-invalid, .ctct-form-wrapper input[type='number'].ctct-invalid {
40
+ background: #fff url("../images/error.svg") no-repeat;
41
+ background-color: rgba(255, 65, 54, 0.02);
42
+ background-position: 8px 50%;
43
+ background-size: 24px;
44
+ border-color: #ff4136;
45
+ padding-left: 40px;
46
+ }
47
+
48
+ .ctct-form-wrapper .ctct-field-error {
49
+ font-size: 0.85rem;
50
+ font-style: italic;
51
+ }
52
+
53
+ .ctct-form-wrapper input.ctct-invalid {
54
+ background: #fff url("../images/error.svg") no-repeat;
55
+ background-color: rgba(255, 65, 54, 0.02);
56
+ background-position: 8px 50%;
57
+ background-size: 24px;
58
+ border-color: #ff4136;
59
+ padding-left: 40px;
60
+ }
61
+
62
+ .ctct-form-wrapper input.ctct-label-left,
63
+ .ctct-form-wrapper textarea.ctct-label-left {
64
+ display: inline-block;
65
+ width: 75%;
66
+ }
67
+
68
+ .ctct-form-wrapper span.ctct-label-left {
69
+ display: inline-block;
70
+ margin-right: 5%;
71
+ width: 20%;
72
+ }
73
+
74
+ .ctct-form-wrapper input.ctct-label-right,
75
+ .ctct-form-wrapper textarea.ctct-label-right {
76
+ display: inline-block;
77
+ margin-right: 5%;
78
+ width: 75%;
79
+ }
80
+
81
+ .ctct-form-wrapper span.ctct-label-right {
82
+ display: inline-block;
83
+ width: 20%;
84
+ }
85
+
86
+ .ctct-form-wrapper span.ctct-label-hidden {
87
+ left: -9999px !important;
88
+ position: absolute !important;
89
+ top: -9999px !important;
90
+ }
91
+
92
+ .ctct-form-wrapper #ctct_usage {
93
+ border: 0 none;
94
+ clip: rect(0, 0, 0, 0);
95
+ height: 1px;
96
+ margin: -1px;
97
+ overflow: hidden;
98
+ padding: 0;
99
+ position: absolute;
100
+ width: 1px;
101
+ }
102
+
103
+ .ctct-form-wrapper .no-recaptcha #ctct-submitted:disabled {
104
+ background-image: url("../images/oval.min.svg");
105
+ background-position: center;
106
+ background-repeat: no-repeat;
107
+ color: transparent;
108
+ cursor: wait;
109
+ opacity: 0.3;
110
+ }
111
+
112
+ .ctct-form-wrapper .has-recaptcha #ctct-submitted:disabled {
113
+ cursor: not-allowed;
114
+ }
115
+
116
+ .ctct-form-wrapper .ctct-form::after {
117
+ clear: both;
118
+ content: '';
119
+ display: table;
120
+ }
121
+
122
+ .ctct-form-wrapper .ctct-form .ctct-label-top label,
123
+ .ctct-form-wrapper .ctct-form .ctct-label-bottom label {
124
+ display: block;
125
+ }
126
+
127
+ .ctct-form-wrapper .ctct-form .ctct-label-left label,
128
+ .ctct-form-wrapper .ctct-form .ctct-label-right label {
129
+ display: inline-block;
130
+ }
131
+
132
+ .ctct-form-wrapper .ctct-form abbr {
133
+ border: none;
134
+ color: #ff4136;
135
+ font-size: 0.9rem;
136
+ }
137
+
138
+ .ctct-form-wrapper .ctct-input-container label {
139
+ color: #aaa;
140
+ font-size: 0.8rem;
141
+ }
142
+
143
+ .ctct-form-wrapper .ctct-field-error {
144
+ color: #ff4136;
145
+ }
146
+
147
+ .ctct-form-wrapper .ctct-submit {
148
+ cursor: pointer;
149
+ }
150
+
151
+ .ctct-twentyfourteen .ctct-form-field input {
152
+ width: 100%;
153
+ }
154
+
155
+ @media (min-width: 992px) {
156
+ .ctct-form-wrapper .ctct-field-half {
157
+ float: left;
158
+ margin-right: 2%;
159
+ width: 48%;
160
+ }
161
+ .ctct-form-wrapper .ctct-field-half:last-of-type {
162
+ margin-right: 0;
163
+ }
164
+ .ctct-form-wrapper .ctct-field-third {
165
+ float: left;
166
+ margin-right: 2%;
167
+ width: 32%;
168
+ }
169
+ .ctct-form-wrapper .ctct-field-third:last-of-type {
170
+ margin-right: 0;
171
+ }
172
+ .ctct-form-wrapper .ctct-field-fourth {
173
+ float: left;
174
+ margin-right: 2%;
175
+ width: 24%;
176
+ }
177
+ .ctct-form-wrapper .ctct-field-fourth:last-of-type {
178
+ margin-right: 0;
179
+ }
180
+ }
181
+
182
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtFQUNFLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLGlCQUFpQjtFQUNqQixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSx5Q0FBeUM7RUFDekMscUJBQXFCO0VBQ3JCLGNBQWM7QUFDaEI7O0FBRUE7RUFDRSxnQkFBZ0I7QUFDbEI7O0FBRUE7RUFDRSxxQkFBcUI7QUFDdkI7O0FBbUNBO0VBQ0UsbURBQW1EO0VBQ25ELDRCQUE0QjtFQUM1Qiw0QkFBNEI7RUFDNUIscUJBQXFCO0VBQ3JCLHFCQUFxQjtFQUNyQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxxREFBcUQ7RUFDckQseUNBQXlDO0VBQ3pDLDRCQUE0QjtFQUM1QixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGtCQUFrQjtBQUNwQjs7QUFFQTtFQUNFLGtCQUFrQjtFQUNsQixrQkFBa0I7QUFDcEI7O0FBRUE7RUFDRSxxREFBcUQ7RUFDckQseUNBQXlDO0VBQ3pDLDRCQUE0QjtFQUM1QixxQkFBcUI7RUFDckIscUJBQXFCO0VBQ3JCLGtCQUFrQjtBQUNwQjs7QUFFQTs7RUFFRSxxQkFBcUI7RUFDckIsVUFBVTtBQUNaOztBQUVBO0VBQ0UscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixVQUFVO0FBQ1o7O0FBRUE7O0VBRUUscUJBQXFCO0VBQ3JCLGdCQUFnQjtFQUNoQixVQUFVO0FBQ1o7O0FBRUE7RUFDRSxxQkFBcUI7RUFDckIsVUFBVTtBQUNaOztBQUVBO0VBQ0Usd0JBQXdCO0VBQ3hCLDZCQUE2QjtFQUM3Qix1QkFBdUI7QUFDekI7O0FBRUE7RUFDRSxjQUFjO0VBQ2Qsc0JBQXNCO0VBQ3RCLFdBQVc7RUFDWCxZQUFZO0VBQ1osZ0JBQWdCO0VBQ2hCLFVBQVU7RUFDVixrQkFBa0I7RUFDbEIsVUFBVTtBQUNaOztBQUVBO0VBQ0UsK0NBQStDO0VBQy9DLDJCQUEyQjtFQUMzQiw0QkFBNEI7RUFDNUIsa0JBQWtCO0VBQ2xCLFlBQVk7RUFDWixZQUFZO0FBQ2Q7O0FBRUE7RUFDRSxtQkFBbUI7QUFDckI7O0FBRUE7RUFDRSxXQUFXO0VBQ1gsV0FBVztFQUNYLGNBQWM7QUFDaEI7O0FBRUE7O0VBRUUsY0FBYztBQUNoQjs7QUFFQTs7RUFFRSxxQkFBcUI7QUFDdkI7O0FBRUE7RUFDRSxZQUFZO0VBQ1osY0FBYztFQUNkLGlCQUFpQjtBQUNuQjs7QUFFQTtFQUNFLFdBQVc7RUFDWCxpQkFBaUI7QUFDbkI7O0FBRUE7RUFDRSxjQUFjO0FBQ2hCOztBQUVBO0VBQ0UsZUFBZTtBQUNqQjs7QUFFQTtFQUNFLFdBQVc7QUFDYjs7QUE1SkE7RUFDRTtJQUNFLFdBQVc7SUFDWCxnQkFBZ0I7SUFDaEIsVUFBVTtFQUNaO0VBQ0E7SUFDRSxlQUFlO0VBQ2pCO0VBSUE7SUFDRSxXQUFXO0lBQ1gsZ0JBQWdCO0lBQ2hCLFVBQVU7RUFDWjtFQUNBO0lBQ0UsZUFBZTtFQUNqQjtFQUlBO0lBQ0UsV0FBVztJQUNYLGdCQUFnQjtJQUNoQixVQUFVO0VBQ1o7RUFDQTtJQUNFLGVBQWU7RUFDakI7QUFyQkYiLCJmaWxlIjoic3R5bGUuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiA0OCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGY6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMzIlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMjQlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGg6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZDp2YWxpZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9jaGVja19jaXJjbGUuc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBmb250LXNpemU6IDAuODVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1sZWZ0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWhpZGRlbiB7XG4gIGxlZnQ6IC05OTk5cHggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgI2N0Y3RfdXNhZ2Uge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLm5vLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvb3ZhbC5taW4uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC10d2VudHlmb3VydGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
assets/css/style.min.css CHANGED
@@ -1,2 +1,2 @@
1
  .ctct-form-wrapper .ctct-button{font-size:.9rem}.ctct-form-wrapper .ctct-message{border:1px solid;padding:1em}.ctct-form-wrapper .ctct-message.ctct-error{background-color:rgba(255,65,54,.02);border-color:#ff4136;color:#cf0b00}.ctct-form-wrapper .ctct-message.ctct-success{background-color:rgba(46,204,64,.02);border-color:#2ecc40;color:#1b7926}.ctct-form-wrapper .ctct-form-field{margin:0 0 1rem}.ctct-form-wrapper .ctct-field-inline{display:inline-block}.ctct-form-wrapper input[type=email]:required:valid,.ctct-form-wrapper input[type=number]:required:valid,.ctct-form-wrapper input[type=password]:required:valid,.ctct-form-wrapper input[type=tel]:required:valid,.ctct-form-wrapper input[type=text]:required:valid{background-image:url(../images/check_circle.svg);background-position:8px 50%;background-repeat:no-repeat;background-size:18px;border-color:#2ecc40;padding-left:32px}.ctct-form-wrapper input[type=email].ctct-invalid,.ctct-form-wrapper input[type=email]:required.ctct-invalid,.ctct-form-wrapper input[type=number].ctct-invalid,.ctct-form-wrapper input[type=number]:required.ctct-invalid,.ctct-form-wrapper input[type=password].ctct-invalid,.ctct-form-wrapper input[type=password]:required.ctct-invalid,.ctct-form-wrapper input[type=tel].ctct-invalid,.ctct-form-wrapper input[type=tel]:required.ctct-invalid,.ctct-form-wrapper input[type=text].ctct-invalid,.ctct-form-wrapper input[type=text]:required.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper .ctct-field-error{font-size:.85rem;font-style:italic}.ctct-form-wrapper input.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper input.ctct-label-left,.ctct-form-wrapper textarea.ctct-label-left{display:inline-block;width:75%}.ctct-form-wrapper span.ctct-label-left{display:inline-block;margin-right:5%;width:20%}.ctct-form-wrapper input.ctct-label-right,.ctct-form-wrapper textarea.ctct-label-right{display:inline-block;margin-right:5%;width:75%}.ctct-form-wrapper span.ctct-label-right{display:inline-block;width:20%}.ctct-form-wrapper span.ctct-label-hidden{left:-9999px!important;position:absolute!important;top:-9999px!important}.ctct-form-wrapper #ctct_usage{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ctct-form-wrapper .no-recaptcha #ctct-submitted:disabled{background-image:url(../images/oval.min.svg);background-position:50%;background-repeat:no-repeat;color:transparent;cursor:wait;opacity:.3}.ctct-form-wrapper .has-recaptcha #ctct-submitted:disabled{cursor:not-allowed}.ctct-form-wrapper .ctct-form:after{clear:both;content:"";display:table}.ctct-form-wrapper .ctct-form .ctct-label-bottom label,.ctct-form-wrapper .ctct-form .ctct-label-top label{display:block}.ctct-form-wrapper .ctct-form .ctct-label-left label,.ctct-form-wrapper .ctct-form .ctct-label-right label{display:inline-block}.ctct-form-wrapper .ctct-form abbr{border:none;color:#ff4136;font-size:.9rem}.ctct-form-wrapper .ctct-input-container label{color:#aaa;font-size:.8rem}.ctct-form-wrapper .ctct-field-error{color:#ff4136}.ctct-form-wrapper .ctct-submit{cursor:pointer}.ctct-twentyfourteen .ctct-form-field input{width:100%}@media (min-width:992px){.ctct-form-wrapper .ctct-field-half{float:left;margin-right:2%;width:48%}.ctct-form-wrapper .ctct-field-half:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-third{float:left;margin-right:2%;width:32%}.ctct-form-wrapper .ctct-field-third:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-fourth{float:left;margin-right:2%;width:24%}.ctct-form-wrapper .ctct-field-fourth:last-of-type{margin-right:0}}
2
- /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQW1ELENBQ25ELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBcUQsQ0FDckQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQXFELENBQ3JELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHlDQUNFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsMENBQ0Usc0JBQXdCLENBQ3hCLDJCQUE2QixDQUM3QixxQkFDRixDQUVBLCtCQUNFLFFBQWMsQ0FDZCxrQkFBc0IsQ0FDdEIsVUFBVyxDQUNYLFdBQVksQ0FDWixlQUFnQixDQUNoQixTQUFVLENBQ1YsaUJBQWtCLENBQ2xCLFNBQ0YsQ0FFQSwwREFDRSw0Q0FBK0MsQ0FDL0MsdUJBQTJCLENBQzNCLDJCQUE0QixDQUM1QixpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLFVBQ0YsQ0FFQSwyREFDRSxrQkFDRixDQUVBLG9DQUNFLFVBQVcsQ0FDWCxVQUFXLENBQ1gsYUFDRixDQUVBLDJHQUVFLGFBQ0YsQ0FFQSwyR0FFRSxvQkFDRixDQUVBLG1DQUNFLFdBQVksQ0FDWixhQUFjLENBQ2QsZUFDRixDQUVBLCtDQUNFLFVBQVcsQ0FDWCxlQUNGLENBRUEscUNBQ0UsYUFDRixDQUVBLGdDQUNFLGNBQ0YsQ0FFQSw0Q0FDRSxVQUNGLENBNUpBLHlCQUNFLG9DQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsaURBQ0UsY0FDRixDQUlBLHFDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0Esa0RBQ0UsY0FDRixDQUlBLHNDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsbURBQ0UsY0FDRixDQXJCRiIsImZpbGUiOiJzdHlsZS5jc3MiLCJzb3VyY2VzQ29udGVudCI6WyIuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtYnV0dG9uIHtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlIHtcbiAgYm9yZGVyOiAxcHggc29saWQ7XG4gIHBhZGRpbmc6IDFlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1lcnJvciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBib3JkZXItY29sb3I6ICNmZjQxMzY7XG4gIGNvbG9yOiAjY2YwYjAwO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZS5jdGN0LXN1Y2Nlc3Mge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDQ2LCAyMDQsIDY0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBjb2xvcjogIzFiNzkyNjtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0tZmllbGQge1xuICBtYXJnaW46IDAgMCAxcmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaW5saW5lIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGYge1xuICAgIGZsb2F0OiBsZWZ0O1xuICAgIG1hcmdpbi1yaWdodDogMiU7XG4gICAgd2lkdGg6IDQ4JTtcbiAgfVxuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtaGFsZjpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLXRoaXJkIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiAzMiU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLXRoaXJkOmxhc3Qtb2YtdHlwZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAwO1xuICB9XG59XG5cbkBtZWRpYSAobWluLXdpZHRoOiA5OTJweCkge1xuICAuY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZm91cnRoIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiAyNCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZWwnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkOnZhbGlkIHtcbiAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiLi4vaW1hZ2VzL2NoZWNrX2NpcmNsZS5zdmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtc2l6ZTogMThweDtcbiAgYm9yZGVyLWNvbG9yOiAjMmVjYzQwO1xuICBwYWRkaW5nLWxlZnQ6IDMycHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSd0ZXh0J106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nZW1haWwnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3Bhc3N3b3JkJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ106cmVxdWlyZWQuY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0nbnVtYmVyJ10uY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoXCIuLi9pbWFnZXMvZXJyb3Iuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGZvbnQtc2l6ZTogMC44NXJlbTtcbiAgZm9udC1zdHlsZTogaXRhbGljO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1pbnZhbGlkIHtcbiAgYmFja2dyb3VuZDogI2ZmZiB1cmwoXCIuLi9pbWFnZXMvZXJyb3Iuc3ZnXCIpIG5vLXJlcGVhdDtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDY1LCA1NCwgMC4wMik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IDhweCA1MCU7XG4gIGJhY2tncm91bmQtc2l6ZTogMjRweDtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBwYWRkaW5nLWxlZnQ6IDQwcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLWxlZnQsXG4uY3RjdC1mb3JtLXdyYXBwZXIgdGV4dGFyZWEuY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWxlZnQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNSU7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBpbnB1dC5jdGN0LWxhYmVsLXJpZ2h0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1yaWdodDogNSU7XG4gIHdpZHRoOiA3NSU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtcmlnaHQge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAyMCU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciBzcGFuLmN0Y3QtbGFiZWwtaGlkZGVuIHtcbiAgbGVmdDogLTk5OTlweCAhaW1wb3J0YW50O1xuICBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDtcbiAgdG9wOiAtOTk5OXB4ICFpbXBvcnRhbnQ7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAjY3RjdF91c2FnZSB7XG4gIGJvcmRlcjogMCBub25lO1xuICBjbGlwOiByZWN0KDAsIDAsIDAsIDApO1xuICBoZWlnaHQ6IDFweDtcbiAgbWFyZ2luOiAtMXB4O1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBwYWRkaW5nOiAwO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcHg7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAubm8tcmVjYXB0Y2hhICNjdGN0LXN1Ym1pdHRlZDpkaXNhYmxlZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9vdmFsLm1pbi5zdmdcIik7XG4gIGJhY2tncm91bmQtcG9zaXRpb246IGNlbnRlcjtcbiAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xuICBjdXJzb3I6IHdhaXQ7XG4gIG9wYWNpdHk6IDAuMztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5oYXMtcmVjYXB0Y2hhICNjdGN0LXN1Ym1pdHRlZDpkaXNhYmxlZCB7XG4gIGN1cnNvcjogbm90LWFsbG93ZWQ7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtOjphZnRlciB7XG4gIGNsZWFyOiBib3RoO1xuICBjb250ZW50OiAnJztcbiAgZGlzcGxheTogdGFibGU7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXRvcCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLWJvdHRvbSBsYWJlbCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1sZWZ0IGxhYmVsLFxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtcmlnaHQgbGFiZWwge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIGFiYnIge1xuICBib3JkZXI6IG5vbmU7XG4gIGNvbG9yOiAjZmY0MTM2O1xuICBmb250LXNpemU6IDAuOXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWlucHV0LWNvbnRhaW5lciBsYWJlbCB7XG4gIGNvbG9yOiAjYWFhO1xuICBmb250LXNpemU6IDAuOHJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWVycm9yIHtcbiAgY29sb3I6ICNmZjQxMzY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1zdWJtaXQge1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5cbi5jdGN0LXR3ZW50eWZvdXJ0ZWVuIC5jdGN0LWZvcm0tZmllbGQgaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbn1cbiJdfQ== */
1
  .ctct-form-wrapper .ctct-button{font-size:.9rem}.ctct-form-wrapper .ctct-message{border:1px solid;padding:1em}.ctct-form-wrapper .ctct-message.ctct-error{background-color:rgba(255,65,54,.02);border-color:#ff4136;color:#cf0b00}.ctct-form-wrapper .ctct-message.ctct-success{background-color:rgba(46,204,64,.02);border-color:#2ecc40;color:#1b7926}.ctct-form-wrapper .ctct-form-field{margin:0 0 1rem}.ctct-form-wrapper .ctct-field-inline{display:inline-block}.ctct-form-wrapper input[type=email]:required:valid,.ctct-form-wrapper input[type=number]:required:valid,.ctct-form-wrapper input[type=password]:required:valid,.ctct-form-wrapper input[type=tel]:required:valid,.ctct-form-wrapper input[type=text]:required:valid{background-image:url(../images/check_circle.svg);background-position:8px 50%;background-repeat:no-repeat;background-size:18px;border-color:#2ecc40;padding-left:32px}.ctct-form-wrapper input[type=email].ctct-invalid,.ctct-form-wrapper input[type=email]:required.ctct-invalid,.ctct-form-wrapper input[type=number].ctct-invalid,.ctct-form-wrapper input[type=number]:required.ctct-invalid,.ctct-form-wrapper input[type=password].ctct-invalid,.ctct-form-wrapper input[type=password]:required.ctct-invalid,.ctct-form-wrapper input[type=tel].ctct-invalid,.ctct-form-wrapper input[type=tel]:required.ctct-invalid,.ctct-form-wrapper input[type=text].ctct-invalid,.ctct-form-wrapper input[type=text]:required.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper .ctct-field-error{font-size:.85rem;font-style:italic}.ctct-form-wrapper input.ctct-invalid{background:#fff url(../images/error.svg) no-repeat;background-color:rgba(255,65,54,.02);background-position:8px 50%;background-size:24px;border-color:#ff4136;padding-left:40px}.ctct-form-wrapper input.ctct-label-left,.ctct-form-wrapper textarea.ctct-label-left{display:inline-block;width:75%}.ctct-form-wrapper span.ctct-label-left{display:inline-block;margin-right:5%;width:20%}.ctct-form-wrapper input.ctct-label-right,.ctct-form-wrapper textarea.ctct-label-right{display:inline-block;margin-right:5%;width:75%}.ctct-form-wrapper span.ctct-label-right{display:inline-block;width:20%}.ctct-form-wrapper span.ctct-label-hidden{left:-9999px!important;position:absolute!important;top:-9999px!important}.ctct-form-wrapper #ctct_usage{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ctct-form-wrapper .no-recaptcha #ctct-submitted:disabled{background-image:url(../images/oval.min.svg);background-position:50%;background-repeat:no-repeat;color:transparent;cursor:wait;opacity:.3}.ctct-form-wrapper .has-recaptcha #ctct-submitted:disabled{cursor:not-allowed}.ctct-form-wrapper .ctct-form:after{clear:both;content:"";display:table}.ctct-form-wrapper .ctct-form .ctct-label-bottom label,.ctct-form-wrapper .ctct-form .ctct-label-top label{display:block}.ctct-form-wrapper .ctct-form .ctct-label-left label,.ctct-form-wrapper .ctct-form .ctct-label-right label{display:inline-block}.ctct-form-wrapper .ctct-form abbr{border:none;color:#ff4136;font-size:.9rem}.ctct-form-wrapper .ctct-input-container label{color:#aaa;font-size:.8rem}.ctct-form-wrapper .ctct-field-error{color:#ff4136}.ctct-form-wrapper .ctct-submit{cursor:pointer}.ctct-twentyfourteen .ctct-form-field input{width:100%}@media (min-width:992px){.ctct-form-wrapper .ctct-field-half{float:left;margin-right:2%;width:48%}.ctct-form-wrapper .ctct-field-half:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-third{float:left;margin-right:2%;width:32%}.ctct-form-wrapper .ctct-field-third:last-of-type{margin-right:0}.ctct-form-wrapper .ctct-field-fourth{float:left;margin-right:2%;width:24%}.ctct-form-wrapper .ctct-field-fourth:last-of-type{margin-right:0}}
2
+ /*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInN0eWxlLmNzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxnQ0FDRSxlQUNGLENBRUEsaUNBQ0UsZ0JBQWlCLENBQ2pCLFdBQ0YsQ0FFQSw0Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSw4Q0FDRSxvQ0FBeUMsQ0FDekMsb0JBQXFCLENBQ3JCLGFBQ0YsQ0FFQSxvQ0FDRSxlQUNGLENBRUEsc0NBQ0Usb0JBQ0YsQ0FtQ0EscVFBQ0UsZ0RBQW1ELENBQ25ELDJCQUE0QixDQUM1QiwyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLG1pQkFDRSxrREFBcUQsQ0FDckQsb0NBQXlDLENBQ3pDLDJCQUE0QixDQUM1QixvQkFBcUIsQ0FDckIsb0JBQXFCLENBQ3JCLGlCQUNGLENBRUEscUNBQ0UsZ0JBQWtCLENBQ2xCLGlCQUNGLENBRUEsc0NBQ0Usa0RBQXFELENBQ3JELG9DQUF5QyxDQUN6QywyQkFBNEIsQ0FDNUIsb0JBQXFCLENBQ3JCLG9CQUFxQixDQUNyQixpQkFDRixDQUVBLHFGQUVFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsd0NBQ0Usb0JBQXFCLENBQ3JCLGVBQWdCLENBQ2hCLFNBQ0YsQ0FFQSx1RkFFRSxvQkFBcUIsQ0FDckIsZUFBZ0IsQ0FDaEIsU0FDRixDQUVBLHlDQUNFLG9CQUFxQixDQUNyQixTQUNGLENBRUEsMENBQ0Usc0JBQXdCLENBQ3hCLDJCQUE2QixDQUM3QixxQkFDRixDQUVBLCtCQUNFLFFBQWMsQ0FDZCxrQkFBc0IsQ0FDdEIsVUFBVyxDQUNYLFdBQVksQ0FDWixlQUFnQixDQUNoQixTQUFVLENBQ1YsaUJBQWtCLENBQ2xCLFNBQ0YsQ0FFQSwwREFDRSw0Q0FBK0MsQ0FDL0MsdUJBQTJCLENBQzNCLDJCQUE0QixDQUM1QixpQkFBa0IsQ0FDbEIsV0FBWSxDQUNaLFVBQ0YsQ0FFQSwyREFDRSxrQkFDRixDQUVBLG9DQUNFLFVBQVcsQ0FDWCxVQUFXLENBQ1gsYUFDRixDQUVBLDJHQUVFLGFBQ0YsQ0FFQSwyR0FFRSxvQkFDRixDQUVBLG1DQUNFLFdBQVksQ0FDWixhQUFjLENBQ2QsZUFDRixDQUVBLCtDQUNFLFVBQVcsQ0FDWCxlQUNGLENBRUEscUNBQ0UsYUFDRixDQUVBLGdDQUNFLGNBQ0YsQ0FFQSw0Q0FDRSxVQUNGLENBNUpBLHlCQUNFLG9DQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsaURBQ0UsY0FDRixDQUlBLHFDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0Esa0RBQ0UsY0FDRixDQUlBLHNDQUNFLFVBQVcsQ0FDWCxlQUFnQixDQUNoQixTQUNGLENBQ0EsbURBQ0UsY0FDRixDQXJCRiIsImZpbGUiOiJzdHlsZS5taW4uY3NzIiwic291cmNlc0NvbnRlbnQiOlsiLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWJ1dHRvbiB7XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtbWVzc2FnZSB7XG4gIGJvcmRlcjogMXB4IHNvbGlkO1xuICBwYWRkaW5nOiAxZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1tZXNzYWdlLmN0Y3QtZXJyb3Ige1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgNjUsIDU0LCAwLjAyKTtcbiAgYm9yZGVyLWNvbG9yOiAjZmY0MTM2O1xuICBjb2xvcjogI2NmMGIwMDtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LW1lc3NhZ2UuY3RjdC1zdWNjZXNzIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg0NiwgMjA0LCA2NCwgMC4wMik7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgY29sb3I6ICMxYjc5MjY7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtLWZpZWxkIHtcbiAgbWFyZ2luOiAwIDAgMXJlbTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWlubGluZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1oYWxmIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgICBtYXJnaW4tcmlnaHQ6IDIlO1xuICAgIHdpZHRoOiA0OCU7XG4gIH1cbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWhhbGY6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuQG1lZGlhIChtaW4td2lkdGg6IDk5MnB4KSB7XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMzIlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC10aGlyZDpsYXN0LW9mLXR5cGUge1xuICAgIG1hcmdpbi1yaWdodDogMDtcbiAgfVxufVxuXG5AbWVkaWEgKG1pbi13aWR0aDogOTkycHgpIHtcbiAgLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZpZWxkLWZvdXJ0aCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gICAgbWFyZ2luLXJpZ2h0OiAyJTtcbiAgICB3aWR0aDogMjQlO1xuICB9XG4gIC5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1mb3VydGg6bGFzdC1vZi10eXBlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDA7XG4gIH1cbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXTpyZXF1aXJlZDp2YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddOnJlcXVpcmVkOnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGVsJ106cmVxdWlyZWQ6dmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdudW1iZXInXTpyZXF1aXJlZDp2YWxpZCB7XG4gIGJhY2tncm91bmQtaW1hZ2U6IHVybChcIi4uL2ltYWdlcy9jaGVja19jaXJjbGUuc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xuICBiYWNrZ3JvdW5kLXNpemU6IDE4cHg7XG4gIGJvcmRlci1jb2xvcjogIzJlY2M0MDtcbiAgcGFkZGluZy1sZWZ0OiAzMnB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ndGV4dCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RleHQnXS5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdlbWFpbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J2VtYWlsJ10uY3RjdC1pbnZhbGlkLCAuY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXRbdHlwZT0ncGFzc3dvcmQnXTpyZXF1aXJlZC5jdGN0LWludmFsaWQsIC5jdGN0LWZvcm0td3JhcHBlciBpbnB1dFt0eXBlPSdwYXNzd29yZCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J3RlbCddLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddOnJlcXVpcmVkLmN0Y3QtaW52YWxpZCwgLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0W3R5cGU9J251bWJlciddLmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZmllbGQtZXJyb3Ige1xuICBmb250LXNpemU6IDAuODVyZW07XG4gIGZvbnQtc3R5bGU6IGl0YWxpYztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIGlucHV0LmN0Y3QtaW52YWxpZCB7XG4gIGJhY2tncm91bmQ6ICNmZmYgdXJsKFwiLi4vaW1hZ2VzL2Vycm9yLnN2Z1wiKSBuby1yZXBlYXQ7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCA2NSwgNTQsIDAuMDIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiA4cHggNTAlO1xuICBiYWNrZ3JvdW5kLXNpemU6IDI0cHg7XG4gIGJvcmRlci1jb2xvcjogI2ZmNDEzNjtcbiAgcGFkZGluZy1sZWZ0OiA0MHB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1sZWZ0LFxuLmN0Y3QtZm9ybS13cmFwcGVyIHRleHRhcmVhLmN0Y3QtbGFiZWwtbGVmdCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDc1JTtcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIHNwYW4uY3RjdC1sYWJlbC1sZWZ0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgaW5wdXQuY3RjdC1sYWJlbC1yaWdodCxcbi5jdGN0LWZvcm0td3JhcHBlciB0ZXh0YXJlYS5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXJnaW4tcmlnaHQ6IDUlO1xuICB3aWR0aDogNzUlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLXJpZ2h0IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMjAlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgc3Bhbi5jdGN0LWxhYmVsLWhpZGRlbiB7XG4gIGxlZnQ6IC05OTk5cHggIWltcG9ydGFudDtcbiAgcG9zaXRpb246IGFic29sdXRlICFpbXBvcnRhbnQ7XG4gIHRvcDogLTk5OTlweCAhaW1wb3J0YW50O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgI2N0Y3RfdXNhZ2Uge1xuICBib3JkZXI6IDAgbm9uZTtcbiAgY2xpcDogcmVjdCgwLCAwLCAwLCAwKTtcbiAgaGVpZ2h0OiAxcHg7XG4gIG1hcmdpbjogLTFweDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgcGFkZGluZzogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMXB4O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLm5vLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCIuLi9pbWFnZXMvb3ZhbC5taW4uc3ZnXCIpO1xuICBiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XG4gIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XG4gIGNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY3Vyc29yOiB3YWl0O1xuICBvcGFjaXR5OiAwLjM7XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuaGFzLXJlY2FwdGNoYSAjY3RjdC1zdWJtaXR0ZWQ6ZGlzYWJsZWQge1xuICBjdXJzb3I6IG5vdC1hbGxvd2VkO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybTo6YWZ0ZXIge1xuICBjbGVhcjogYm90aDtcbiAgY29udGVudDogJyc7XG4gIGRpc3BsYXk6IHRhYmxlO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC10b3AgbGFiZWwsXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSAuY3RjdC1sYWJlbC1ib3R0b20gbGFiZWwge1xuICBkaXNwbGF5OiBibG9jaztcbn1cblxuLmN0Y3QtZm9ybS13cmFwcGVyIC5jdGN0LWZvcm0gLmN0Y3QtbGFiZWwtbGVmdCBsYWJlbCxcbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1mb3JtIC5jdGN0LWxhYmVsLXJpZ2h0IGxhYmVsIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3QtZm9ybSBhYmJyIHtcbiAgYm9yZGVyOiBub25lO1xuICBjb2xvcjogI2ZmNDEzNjtcbiAgZm9udC1zaXplOiAwLjlyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1pbnB1dC1jb250YWluZXIgbGFiZWwge1xuICBjb2xvcjogI2FhYTtcbiAgZm9udC1zaXplOiAwLjhyZW07XG59XG5cbi5jdGN0LWZvcm0td3JhcHBlciAuY3RjdC1maWVsZC1lcnJvciB7XG4gIGNvbG9yOiAjZmY0MTM2O1xufVxuXG4uY3RjdC1mb3JtLXdyYXBwZXIgLmN0Y3Qtc3VibWl0IHtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuXG4uY3RjdC10d2VudHlmb3VydGVlbiAuY3RjdC1mb3JtLWZpZWxkIGlucHV0IHtcbiAgd2lkdGg6IDEwMCU7XG59XG4iXX0= */
assets/images/check_circle.svg CHANGED
File without changes
assets/images/error.svg CHANGED
File without changes
constant-contact-forms.php CHANGED
@@ -12,7 +12,7 @@
12
  * Plugin Name: Constant Contact Forms for WordPress
13
  * Plugin URI: https://www.constantcontact.com
14
  * Description: Be a better marketer. All it takes is Constant Contact email marketing.
15
- * Version: 1.8.4
16
  * Author: Constant Contact
17
  * Author URI: https://www.constantcontact.com/index?pn=miwordpress
18
  * License: GPLv3
@@ -72,7 +72,7 @@ class Constant_Contact {
72
  * @since 1.0.0
73
  * @var string
74
  */
75
- const VERSION = '1.8.4';
76
 
77
  /**
78
  * URL of plugin directory.
@@ -532,6 +532,24 @@ class Constant_Contact {
532
  */
533
  public function init() {
534
  load_plugin_textdomain( 'constant-contact-forms', false, dirname( $this->basename ) . '/languages/' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
535
  }
536
 
537
  /**
12
  * Plugin Name: Constant Contact Forms for WordPress
13
  * Plugin URI: https://www.constantcontact.com
14
  * Description: Be a better marketer. All it takes is Constant Contact email marketing.
15
+ * Version: 1.8.5
16
  * Author: Constant Contact
17
  * Author URI: https://www.constantcontact.com/index?pn=miwordpress
18
  * License: GPLv3
72
  * @since 1.0.0
73
  * @var string
74
  */
75
+ const VERSION = '1.8.5';
76
 
77
  /**
78
  * URL of plugin directory.
532
  */
533
  public function init() {
534
  load_plugin_textdomain( 'constant-contact-forms', false, dirname( $this->basename ) . '/languages/' );
535
+ $this->init_debug_log();
536
+ }
537
+
538
+ /**
539
+ * Initialize debug log on init.
540
+ *
541
+ * @since 1.8.5
542
+ *
543
+ * @return void
544
+ */
545
+ protected function init_debug_log() {
546
+
547
+ if ( ! constant_contact_debugging_enabled() ) {
548
+ return;
549
+ }
550
+
551
+ // Create logging file and directory.
552
+ $this->logging->initialize_logging();
553
  }
554
 
555
  /**
includes/class-logging.php CHANGED
@@ -86,7 +86,7 @@ class ConstantContact_Logging {
86
  /**
87
  * The logging directory name.
88
  *
89
- * @since NEXT
90
  * @var string
91
  */
92
  protected $log_file_dir = 'ctct-logs';
@@ -210,47 +210,45 @@ class ConstantContact_Logging {
210
  <img class="ctct-logo" src="<?php echo esc_url( constant_contact()->url . 'assets/images/constant-contact-logo.png' ); ?>" alt="<?php echo esc_attr_x( 'Constant Contact logo', 'img alt text', 'constant-contact-forms' ); ?>">
211
  <div class="ctct-body">
212
  <?php
213
- $contents = '';
214
- $log_location = $this->log_location_url;
215
 
216
- if ( ! file_exists( constant_contact()->logger_location ) ) {
217
 
218
- if ( ! is_writable( constant_contact()->logger_location ) ) {
219
- $contents .= sprintf(
220
- /* Translators: placeholder holds the log location. */
221
- esc_html__( 'We are not able to write to the %s file.', 'constant-contact-forms' ),
222
- constant_contact()->logger_location
223
- );
224
- } else {
225
- $contents .= esc_html__( 'No error log exists', 'constant-contact-forms' );
226
- }
227
- } elseif ( ! is_writable( constant_contact()->logger_location ) ) {
228
  $contents .= sprintf(
229
  /* Translators: placeholder holds the log location. */
230
  esc_html__( 'We are not able to write to the %s file.', 'constant-contact-forms' ),
231
  constant_contact()->logger_location
232
  );
233
- } else {
234
- $contents .= $this->get_log_contents();
235
  }
 
 
 
 
 
 
236
  ?>
237
  <p><?php esc_html_e( 'Error log below can be used with support requests to help identify issues with Constant Contact Forms.', 'constant-contact-forms' ); ?></p>
238
  <p><?php esc_html_e( 'When available, you can share information by copying and pasting the content in the textarea, or by using the "Download logs" link at the end. Logs can be cleared by using the "Delete logs" link.', 'constant-contact-forms' ); ?></p>
239
  <textarea name="ctct_error_logs" id="ctct_error_logs" cols="80" rows="40" onclick="this.focus();this.select();" onfocus="this.focus();this.select();" readonly="readonly" aria-readonly="true"><?php echo esc_html( $contents ); ?></textarea>
240
  <?php
241
 
242
- if ( file_exists( constant_contact()->logger_location ) ) {
243
- if ( ! empty( $contents ) && is_wp_error( $contents ) ) {
244
- ?>
245
- <p><?php esc_html_e( 'Error log may still have content, even if an error is shown above. Please use the download link below.', 'constant-contact-forms' ); ?></p>
246
- <?php
247
- }
 
248
  ?>
249
  <p>
250
  <?php
251
  printf(
252
  '<p><a href="%s" download>%s</a></p><p><a href="%s" id="deletelog">%s</a></p>',
253
- esc_attr( $log_location ),
254
  esc_html__( 'Download logs', 'constant-contact-forms' ),
255
  esc_attr(
256
  wp_nonce_url(
@@ -304,7 +302,7 @@ class ConstantContact_Logging {
304
  $this->create_log_file();
305
  }
306
 
307
- wp_redirect( $this->options_url );
308
  exit();
309
  }
310
 
@@ -360,8 +358,7 @@ class ConstantContact_Logging {
360
  * @since 1.5.0
361
  */
362
  public function create_log_folder() {
363
- mkdir( $this->log_location_dir );
364
- chmod( $this->log_location_dir, 0755 );
365
  }
366
 
367
  /**
@@ -404,7 +401,7 @@ class ConstantContact_Logging {
404
  * Retrieve logging file location.
405
  *
406
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
407
- * @since NEXT
408
  *
409
  * @return string Logging file location.
410
  */
@@ -416,7 +413,7 @@ class ConstantContact_Logging {
416
  * Remove old logging directory and files for older plugin versions (<= 1.8.1).
417
  *
418
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
419
- * @since NEXT
420
  *
421
  * @return void
422
  */
@@ -432,7 +429,7 @@ class ConstantContact_Logging {
432
  * Remove current logging directory and files.
433
  *
434
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
435
- * @since NEXT
436
  */
437
  public function delete_current_log_dir() {
438
  $this->delete_log_dir( $this->log_location_dir );
@@ -442,7 +439,7 @@ class ConstantContact_Logging {
442
  * Helper function to remove logging directory.
443
  *
444
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
445
- * @since NEXT
446
  *
447
  * @return void
448
  */
@@ -459,4 +456,16 @@ class ConstantContact_Logging {
459
  array_map( 'unlink', glob( "{$dir}/*" ) );
460
  rmdir( $dir );
461
  }
 
 
 
 
 
 
 
 
 
 
 
 
462
  }
86
  /**
87
  * The logging directory name.
88
  *
89
+ * @since 1.8.2
90
  * @var string
91
  */
92
  protected $log_file_dir = 'ctct-logs';
210
  <img class="ctct-logo" src="<?php echo esc_url( constant_contact()->url . 'assets/images/constant-contact-logo.png' ); ?>" alt="<?php echo esc_attr_x( 'Constant Contact logo', 'img alt text', 'constant-contact-forms' ); ?>">
211
  <div class="ctct-body">
212
  <?php
 
 
213
 
214
+ $contents = '';
215
 
216
+ if ( ! file_exists( $this->log_location_file ) ) {
217
+ $contents .= esc_html__( 'No error log exists', 'constant-contact-forms' );
218
+ }
219
+
220
+ if ( ! is_writable( $this->log_location_file ) ) {
 
 
 
 
 
221
  $contents .= sprintf(
222
  /* Translators: placeholder holds the log location. */
223
  esc_html__( 'We are not able to write to the %s file.', 'constant-contact-forms' ),
224
  constant_contact()->logger_location
225
  );
 
 
226
  }
227
+
228
+ if ( is_file( $this->log_location_file ) && is_readable( $this->log_location_file ) ) {
229
+ // phpcs:ignore -- Not reading over network, it's on the filesystem.
230
+ $contents .= file_get_contents( $this->log_location_file );
231
+ }
232
+
233
  ?>
234
  <p><?php esc_html_e( 'Error log below can be used with support requests to help identify issues with Constant Contact Forms.', 'constant-contact-forms' ); ?></p>
235
  <p><?php esc_html_e( 'When available, you can share information by copying and pasting the content in the textarea, or by using the "Download logs" link at the end. Logs can be cleared by using the "Delete logs" link.', 'constant-contact-forms' ); ?></p>
236
  <textarea name="ctct_error_logs" id="ctct_error_logs" cols="80" rows="40" onclick="this.focus();this.select();" onfocus="this.focus();this.select();" readonly="readonly" aria-readonly="true"><?php echo esc_html( $contents ); ?></textarea>
237
  <?php
238
 
239
+ if ( is_file( $this->log_location_file ) && ! is_readable( $this->log_location_file ) ) {
240
+ ?>
241
+ <p><?php esc_html_e( 'Error log may still have content, even if an error is shown above. Please use the download link below.', 'constant-contact-forms' ); ?></p>
242
+ <?php
243
+ }
244
+
245
+ if ( file_exists( $this->log_location_file ) ) {
246
  ?>
247
  <p>
248
  <?php
249
  printf(
250
  '<p><a href="%s" download>%s</a></p><p><a href="%s" id="deletelog">%s</a></p>',
251
+ esc_attr( $this->log_location_url ),
252
  esc_html__( 'Download logs', 'constant-contact-forms' ),
253
  esc_attr(
254
  wp_nonce_url(
302
  $this->create_log_file();
303
  }
304
 
305
+ wp_safe_redirect( $this->options_url );
306
  exit();
307
  }
308
 
358
  * @since 1.5.0
359
  */
360
  public function create_log_folder() {
361
+ wp_mkdir_p( $this->log_location_dir );
 
362
  }
363
 
364
  /**
401
  * Retrieve logging file location.
402
  *
403
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
404
+ * @since 1.8.2
405
  *
406
  * @return string Logging file location.
407
  */
413
  * Remove old logging directory and files for older plugin versions (<= 1.8.1).
414
  *
415
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
416
+ * @since 1.8.2
417
  *
418
  * @return void
419
  */
429
  * Remove current logging directory and files.
430
  *
431
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
432
+ * @since 1.8.2
433
  */
434
  public function delete_current_log_dir() {
435
  $this->delete_log_dir( $this->log_location_dir );
439
  * Helper function to remove logging directory.
440
  *
441
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
442
+ * @since 1.8.2
443
  *
444
  * @return void
445
  */
456
  array_map( 'unlink', glob( "{$dir}/*" ) );
457
  rmdir( $dir );
458
  }
459
+
460
+ /**
461
+ * Initialize Logging directories and files.
462
+ *
463
+ * @author Richard Aber <richard.aber@webdevstudios.com>
464
+ * @since 1.8.5
465
+ */
466
+ public function initialize_logging() {
467
+ $this->create_log_folder();
468
+ $this->create_log_index_file();
469
+ $this->create_log_file();
470
+ }
471
  }
includes/class-mail.php CHANGED
@@ -486,6 +486,11 @@ class ConstantContact_Mail {
486
  esc_html__( 'NO (User did not select the Email Opt-in checkbox)', 'constant-contact-forms' ) . '<br/>' . esc_html__( "You can disable this under Form options. Email Opt-in isn't required to add subscribers into your account", 'constant-contact-forms' )
487
  );
488
  }
 
 
 
 
 
489
  }
490
 
491
  return $content_notice;
486
  esc_html__( 'NO (User did not select the Email Opt-in checkbox)', 'constant-contact-forms' ) . '<br/>' . esc_html__( "You can disable this under Form options. Email Opt-in isn't required to add subscribers into your account", 'constant-contact-forms' )
487
  );
488
  }
489
+ } elseif ( isset( $submission_details['custom-reason'] ) && ! empty( $submission_details['custom-reason'] ) ) {
490
+ $content_notice .= sprintf(
491
+ $template,
492
+ esc_html( $submission_details['custom-reason'] )
493
+ );
494
  }
495
 
496
  return $content_notice;
includes/class-notification-content.php CHANGED
@@ -179,7 +179,7 @@ class ConstantContact_Notification_Content {
179
  public static function exceptions() {
180
  return sprintf(
181
  /* Translators: placeholders will be html `<a>` links. */
182
- esc_html__( 'Constant Contact Forms has experienced issues that may need addressed and functionality may be missing. Please enable the "Support" checkbox in the %1$sConstant Contact settings%2$s and start a %3$sforum support thread%4$s. Our support team will aid with further steps.', 'constant-contact-forms' ),
183
  sprintf( '<a href="%s">', esc_url( admin_url( 'edit.php?post_type=ctct_forms&page=ctct_options_settings' ) ) ),
184
  '</a>',
185
  sprintf( '<a href="%s" target="_blank">', esc_url( 'https://wordpress.org/support/topic/constant-contact-forms-has-experienced-issues-that-need-addressed-admin-notice/' ) ),
@@ -190,7 +190,7 @@ class ConstantContact_Notification_Content {
190
  /**
191
  * Admin notice regarding deleted forms.
192
  *
193
- * @since NEXT
194
  *
195
  * @return string Deleted forms notice HTML.
196
  */
@@ -214,7 +214,7 @@ class ConstantContact_Notification_Content {
214
  /**
215
  * Display deleted form references HTML.
216
  *
217
- * @since NEXT
218
  *
219
  * @param int $form_id Current form ID.
220
  * @param array $references Current form references.
@@ -341,7 +341,7 @@ add_filter( 'constant_contact_notifications', 'constant_contact_exceptions_throw
341
  /**
342
  * Add notification on form deletion if instances of that form appear as shortcodes or widgets.
343
  *
344
- * @since NEXT
345
  *
346
  * @param array $notifications Array of notifications to be shown.
347
  * @return array Array of notifications to be shown.
179
  public static function exceptions() {
180
  return sprintf(
181
  /* Translators: placeholders will be html `<a>` links. */
182
+ esc_html__( 'Constant Contact Forms has experienced issues that may need addressed and functionality may be missing. Please enable the "Support" checkbox under the Support tab in %1$sConstant Contact settings%2$s and start a %3$sforum support thread%4$s. Our support team will aid with further steps.', 'constant-contact-forms' ),
183
  sprintf( '<a href="%s">', esc_url( admin_url( 'edit.php?post_type=ctct_forms&page=ctct_options_settings' ) ) ),
184
  '</a>',
185
  sprintf( '<a href="%s" target="_blank">', esc_url( 'https://wordpress.org/support/topic/constant-contact-forms-has-experienced-issues-that-need-addressed-admin-notice/' ) ),
190
  /**
191
  * Admin notice regarding deleted forms.
192
  *
193
+ * @since 1.8.0
194
  *
195
  * @return string Deleted forms notice HTML.
196
  */
214
  /**
215
  * Display deleted form references HTML.
216
  *
217
+ * @since 1.8.0
218
  *
219
  * @param int $form_id Current form ID.
220
  * @param array $references Current form references.
341
  /**
342
  * Add notification on form deletion if instances of that form appear as shortcodes or widgets.
343
  *
344
+ * @since 1.8.0
345
  *
346
  * @param array $notifications Array of notifications to be shown.
347
  * @return array Array of notifications to be shown.
includes/class-notifications.php CHANGED
@@ -55,7 +55,7 @@ class ConstantContact_Notifications {
55
  /**
56
  * Option name for deleted forms, containing IDs for post and widget instances of forms.
57
  *
58
- * @since NEXT
59
  *
60
  * @var string
61
  */
@@ -438,7 +438,7 @@ class ConstantContact_Notifications {
438
  *
439
  * Redirect to current page with dismissal query args removal to avoid potentially re-dismissing notices unintentionally.
440
  *
441
- * @since NEXT
442
  *
443
  * @param string $key Notice option key.
444
  */
55
  /**
56
  * Option name for deleted forms, containing IDs for post and widget instances of forms.
57
  *
58
+ * @since 1.8.0
59
  *
60
  * @var string
61
  */
438
  *
439
  * Redirect to current page with dismissal query args removal to avoid potentially re-dismissing notices unintentionally.
440
  *
441
+ * @since 1.8.0
442
  *
443
  * @param string $key Notice option key.
444
  */
includes/class-process-form.php CHANGED
@@ -335,7 +335,20 @@ class ConstantContact_Process_Form {
335
 
336
  if ( constant_contact()->api->is_connected() && 'on' === $maybe_bypass ) {
337
  constant_contact()->mail->submit_form_values( $return['values'] ); // Emails but doesn't schedule cron.
338
- constant_contact()->mail->opt_in_user( $this->clean_values( $return['values'] ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
339
  } else {
340
  constant_contact()->mail->submit_form_values( $return['values'], true );
341
  }
335
 
336
  if ( constant_contact()->api->is_connected() && 'on' === $maybe_bypass ) {
337
  constant_contact()->mail->submit_form_values( $return['values'] ); // Emails but doesn't schedule cron.
338
+ $api_result = constant_contact()->mail->opt_in_user( $this->clean_values( $return['values'] ) );
339
+
340
+ // Send email if API request fails.
341
+ if ( false === $api_result ) {
342
+ $clean_values = constant_contact()->process_form->clean_values( $return['values'] );
343
+ $pretty_values = constant_contact()->process_form->pretty_values( $clean_values );
344
+ $email_values = constant_contact()->mail->format_values_for_email( $pretty_values, $orig_form_id );
345
+
346
+ constant_contact()->mail->mail( constant_contact()->mail->get_email( $orig_form_id ), $email_values, [
347
+ 'form_id' => $orig_form_id,
348
+ 'submitted_email' => constant_contact()->mail->get_user_email_from_submission( $clean_values ),
349
+ 'custom-reason' => __( 'An error occurred while attempting Constant Contact API request.', 'constant-contact-forms' ),
350
+ ], true );
351
+ }
352
  } else {
353
  constant_contact()->mail->submit_form_values( $return['values'], true );
354
  }
includes/class-settings.php CHANGED
@@ -36,7 +36,7 @@ class ConstantContact_Settings {
36
  /**
37
  * Settings page metabox titles by id.
38
  *
39
- * @since NEXT
40
  * @var array|null
41
  */
42
  private $metabox_titles;
@@ -93,7 +93,7 @@ class ConstantContact_Settings {
93
  * Add CMB2 hook overrides specific to individual metaboxes.
94
  *
95
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
96
- * @since NEXT
97
  *
98
  * @return void
99
  */
@@ -189,7 +189,7 @@ class ConstantContact_Settings {
189
  * Remove secondary settings page menu items.
190
  *
191
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
192
- * @since NEXT
193
  */
194
  public function remove_extra_menu_items() {
195
  foreach ( array_keys( $this->metabox_titles ) as $cmb_key ) {
@@ -207,7 +207,7 @@ class ConstantContact_Settings {
207
  * Override $plugin_page global to ensure "general" menu item active for other settings pages.
208
  *
209
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
210
- * @since NEXT
211
  *
212
  * @param string $file The parent file.
213
  * @return string The parent file.
@@ -224,7 +224,7 @@ class ConstantContact_Settings {
224
  * Display options page with CMB2 tabs.
225
  *
226
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
227
- * @since NEXT
228
  *
229
  * @param CMB2_Options_Hookup $cmb_options The CMB2_Options_Hookup object.
230
  */
@@ -255,7 +255,7 @@ class ConstantContact_Settings {
255
  * Get all option tabs for navigation on CMB2 settings page.
256
  *
257
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
258
- * @since NEXT
259
  *
260
  * @param CMB2_Options_Hookup $cmb_options The CMB2_Options_Hookup object.
261
  * @return array Array of option tabs.
@@ -286,7 +286,7 @@ class ConstantContact_Settings {
286
  * Get currently selected tab.
287
  *
288
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
289
- * @since NEXT
290
  *
291
  * @return string Current tab.
292
  */
@@ -300,7 +300,7 @@ class ConstantContact_Settings {
300
  * Get link to CMB tab.
301
  *
302
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
303
- * @since NEXT
304
  *
305
  * @param string $option_key CMB tab key.
306
  * @return string URL to CMB tab.
@@ -313,7 +313,7 @@ class ConstantContact_Settings {
313
  * Get args for current CMB.
314
  *
315
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
316
- * @since NEXT
317
  *
318
  * @param string $cmb_id Current CMB ID.
319
  * @return array CMB args.
@@ -336,7 +336,7 @@ class ConstantContact_Settings {
336
  * Register 'General' settings tab fields.
337
  *
338
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
339
- * @since NEXT
340
  */
341
  protected function register_fields_general() {
342
  $cmb = new_cmb2_box( $this->get_cmb_args( 'general' ) );
@@ -480,7 +480,7 @@ class ConstantContact_Settings {
480
  * Register 'Spam Control' (incl. Google reCAPTCHA) settings tab fields.
481
  *
482
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
483
- * @since NEXT
484
  */
485
  protected function register_fields_spam() {
486
  $cmb = new_cmb2_box( $this->get_cmb_args( 'spam' ) );
@@ -556,7 +556,7 @@ class ConstantContact_Settings {
556
  * Register 'Support' settings tab fields.
557
  *
558
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
559
- * @since NEXT
560
  */
561
  protected function register_fields_support() {
562
  $cmb = new_cmb2_box( $this->get_cmb_args( 'support' ) );
@@ -927,9 +927,7 @@ class ConstantContact_Settings {
927
  return;
928
  }
929
 
930
- $this->plugin->logging->create_log_folder();
931
- $this->plugin->logging->create_log_index_file();
932
- $this->plugin->logging->create_log_file();
933
  }
934
 
935
  /**
36
  /**
37
  * Settings page metabox titles by id.
38
  *
39
+ * @since 1.8.0
40
  * @var array|null
41
  */
42
  private $metabox_titles;
93
  * Add CMB2 hook overrides specific to individual metaboxes.
94
  *
95
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
96
+ * @since 1.8.0
97
  *
98
  * @return void
99
  */
189
  * Remove secondary settings page menu items.
190
  *
191
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
192
+ * @since 1.8.0
193
  */
194
  public function remove_extra_menu_items() {
195
  foreach ( array_keys( $this->metabox_titles ) as $cmb_key ) {
207
  * Override $plugin_page global to ensure "general" menu item active for other settings pages.
208
  *
209
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
210
+ * @since 1.8.0
211
  *
212
  * @param string $file The parent file.
213
  * @return string The parent file.
224
  * Display options page with CMB2 tabs.
225
  *
226
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
227
+ * @since 1.8.0
228
  *
229
  * @param CMB2_Options_Hookup $cmb_options The CMB2_Options_Hookup object.
230
  */
255
  * Get all option tabs for navigation on CMB2 settings page.
256
  *
257
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
258
+ * @since 1.8.0
259
  *
260
  * @param CMB2_Options_Hookup $cmb_options The CMB2_Options_Hookup object.
261
  * @return array Array of option tabs.
286
  * Get currently selected tab.
287
  *
288
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
289
+ * @since 1.8.0
290
  *
291
  * @return string Current tab.
292
  */
300
  * Get link to CMB tab.
301
  *
302
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
303
+ * @since 1.8.0
304
  *
305
  * @param string $option_key CMB tab key.
306
  * @return string URL to CMB tab.
313
  * Get args for current CMB.
314
  *
315
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
316
+ * @since 1.8.0
317
  *
318
  * @param string $cmb_id Current CMB ID.
319
  * @return array CMB args.
336
  * Register 'General' settings tab fields.
337
  *
338
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
339
+ * @since 1.8.0
340
  */
341
  protected function register_fields_general() {
342
  $cmb = new_cmb2_box( $this->get_cmb_args( 'general' ) );
480
  * Register 'Spam Control' (incl. Google reCAPTCHA) settings tab fields.
481
  *
482
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
483
+ * @since 1.8.0
484
  */
485
  protected function register_fields_spam() {
486
  $cmb = new_cmb2_box( $this->get_cmb_args( 'spam' ) );
556
  * Register 'Support' settings tab fields.
557
  *
558
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
559
+ * @since 1.8.0
560
  */
561
  protected function register_fields_support() {
562
  $cmb = new_cmb2_box( $this->get_cmb_args( 'support' ) );
927
  return;
928
  }
929
 
930
+ $this->plugin->logging->initialize_logging();
 
 
931
  }
932
 
933
  /**
includes/class-uninstall.php CHANGED
@@ -178,7 +178,7 @@ class ConstantContact_Uninstall {
178
  * Delete logging directory.
179
  *
180
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
181
- * @since NEXT
182
  */
183
  private function delete_log_dir() {
184
  constant_contact()->logging->delete_current_log_dir();
178
  * Delete logging directory.
179
  *
180
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
181
+ * @since 1.8.2
182
  */
183
  private function delete_log_dir() {
184
  constant_contact()->logging->delete_current_log_dir();
includes/helper-functions.php CHANGED
@@ -415,11 +415,7 @@ function constant_contact_maybe_log_it( $log_name, $error, $extra_data = '' ) {
415
  $logging_file = constant_contact()->logger_location;
416
 
417
  // Create logging file and directory if they don't exist.
418
- if ( ! file_exists( $logging_file ) ) {
419
- constant_contact()->logging->create_log_folder();
420
- constant_contact()->logging->create_log_index_file();
421
- constant_contact()->logging->create_log_file();
422
- }
423
 
424
  if ( ! is_writable( $logging_file ) ) {
425
  return;
@@ -690,7 +686,7 @@ function constant_contact_location_and_line( $location = '', $line = '' ) {
690
  /**
691
  * Get posts containing specified form ID.
692
  *
693
- * @since NEXT
694
  *
695
  * @param int $form_id Form ID.
696
  * @return array Array of posts containing the form ID.
@@ -723,7 +719,7 @@ function constant_contact_get_posts_by_form( $form_id ) {
723
  /**
724
  * Get links and info on widgets containing specified form ID.
725
  *
726
- * @since NEXT
727
  *
728
  * @param int $form_id Form ID.
729
  * @return array Array of widgets containing the form ID.
@@ -758,7 +754,7 @@ function constant_contact_get_widgets_by_form( $form_id ) {
758
  * Walker callback for widget references of deleted forms.
759
  *
760
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
761
- * @since NEXT
762
  *
763
  * @param array $value Array of current widget settings.
764
  * @param string $key Current widget key.
@@ -784,7 +780,7 @@ function constant_contact_walk_widget_references( array &$value, $key, $type ) {
784
  /**
785
  * Check for affected posts and widgets for the newly trashed form post type.
786
  *
787
- * @since NEXT
788
  *
789
  * @param int $form_id Form ID being trashed.
790
  * @return void
@@ -807,7 +803,7 @@ add_action( 'trash_ctct_forms', 'constant_contact_check_for_affected_forms_on_tr
807
  /**
808
  * Remove saved references to deleted form if restored from trash.
809
  *
810
- * @since NEXT
811
  *
812
  * @param int $post_id Post ID being restored.
813
  * @return void
@@ -828,7 +824,7 @@ add_action( 'untrashed_post', 'constant_contact_remove_form_references_on_restor
828
  /**
829
  * Determine whether to display the deleted forms notice in admin.
830
  *
831
- * @since NEXT
832
  *
833
  * @return bool Whether to display the deleted forms notice.
834
  */
415
  $logging_file = constant_contact()->logger_location;
416
 
417
  // Create logging file and directory if they don't exist.
418
+ constant_contact()->logging->initialize_logging();
 
 
 
 
419
 
420
  if ( ! is_writable( $logging_file ) ) {
421
  return;
686
  /**
687
  * Get posts containing specified form ID.
688
  *
689
+ * @since 1.8.0
690
  *
691
  * @param int $form_id Form ID.
692
  * @return array Array of posts containing the form ID.
719
  /**
720
  * Get links and info on widgets containing specified form ID.
721
  *
722
+ * @since 1.8.0
723
  *
724
  * @param int $form_id Form ID.
725
  * @return array Array of widgets containing the form ID.
754
  * Walker callback for widget references of deleted forms.
755
  *
756
  * @author Rebekah Van Epps <rebekah.vanepps@webdevstudios.com>
757
+ * @since 1.8.0
758
  *
759
  * @param array $value Array of current widget settings.
760
  * @param string $key Current widget key.
780
  /**
781
  * Check for affected posts and widgets for the newly trashed form post type.
782
  *
783
+ * @since 1.8.0
784
  *
785
  * @param int $form_id Form ID being trashed.
786
  * @return void
803
  /**
804
  * Remove saved references to deleted form if restored from trash.
805
  *
806
+ * @since 1.8.0
807
  *
808
  * @param int $post_id Post ID being restored.
809
  * @return void
824
  /**
825
  * Determine whether to display the deleted forms notice in admin.
826
  *
827
+ * @since 1.8.0
828
  *
829
  * @return bool Whether to display the deleted forms notice.
830
  */
languages/constant-contact-forms.pot CHANGED
@@ -21,7 +21,7 @@ msgstr ""
21
  msgid "Constant Contact Forms requires PHP 5.4 or higher. Your hosting provider or website administrator should be able to assist in updating your PHP version."
22
  msgstr ""
23
 
24
- #: constant-contact-forms.php:694
25
  msgid "Error loading license."
26
  msgstr ""
27
 
@@ -1181,33 +1181,37 @@ msgstr ""
1181
  msgid "Debug logs"
1182
  msgstr ""
1183
 
 
 
 
 
1184
  #. translators: placeholder holds the log location.
1185
- #: includes/class-logging.php:221
1186
  msgid "We are not able to write to the %s file."
1187
  msgstr ""
1188
 
1189
- #: includes/class-logging.php:237
1190
  msgid "Error log below can be used with support requests to help identify issues with Constant Contact Forms."
1191
  msgstr ""
1192
 
1193
- #: includes/class-logging.php:238
1194
  msgid "When available, you can share information by copying and pasting the content in the textarea, or by using the \"Download logs\" link at the end. Logs can be cleared by using the \"Delete logs\" link."
1195
  msgstr ""
1196
 
1197
- #: includes/class-logging.php:245
1198
  msgid "Error log may still have content, even if an error is shown above. Please use the download link below."
1199
  msgstr ""
1200
 
1201
- #: includes/class-logging.php:254
1202
  msgid "Download logs"
1203
  msgstr ""
1204
 
1205
- #: includes/class-logging.php:262
1206
  msgid "Delete logs"
1207
  msgstr ""
1208
 
1209
  #. translators: placeholder wil have error message.
1210
- #: includes/class-logging.php:323
1211
  msgid "Log display error: %s"
1212
  msgstr ""
1213
 
@@ -1296,7 +1300,7 @@ msgstr ""
1296
 
1297
  #. translators: placeholders will be html `<a>` links.
1298
  #: includes/class-notification-content.php:182
1299
- msgid "Constant Contact Forms has experienced issues that may need addressed and functionality may be missing. Please enable the \"Support\" checkbox in the %1$sConstant Contact settings%2$s and start a %3$sforum support thread%4$s. Our support team will aid with further steps."
1300
  msgstr ""
1301
 
1302
  #: includes/class-notification-content.php:203
@@ -1320,15 +1324,15 @@ msgstr ""
1320
  msgid "Disagree"
1321
  msgstr ""
1322
 
1323
- #: includes/class-process-form.php:104, includes/class-process-form.php:624
1324
  msgid "There was an error sending your form."
1325
  msgstr ""
1326
 
1327
- #: includes/class-process-form.php:115, includes/class-process-form.php:642
1328
  msgid "Your information has been submitted."
1329
  msgstr ""
1330
 
1331
- #: includes/class-process-form.php:130, includes/class-process-form.php:656
1332
  msgid "We had trouble processing your submission. Please review your entries and try again."
1333
  msgstr ""
1334
 
@@ -1356,7 +1360,7 @@ msgstr ""
1356
  msgid "We had trouble processing your submission. Make sure you haven't changed the required Form ID and try again."
1357
  msgstr ""
1358
 
1359
- #: includes/class-process-form.php:721
1360
  msgid "We do no think you are human"
1361
  msgstr ""
1362
 
@@ -1506,6 +1510,6 @@ msgstr ""
1506
  msgid "Add a checkbox to the WordPress user registration page"
1507
  msgstr ""
1508
 
1509
- #: includes/class-settings.php:987
1510
  msgid "We do not think you are human"
1511
  msgstr ""
21
  msgid "Constant Contact Forms requires PHP 5.4 or higher. Your hosting provider or website administrator should be able to assist in updating your PHP version."
22
  msgstr ""
23
 
24
+ #: constant-contact-forms.php:712
25
  msgid "Error loading license."
26
  msgstr ""
27
 
1181
  msgid "Debug logs"
1182
  msgstr ""
1183
 
1184
+ #: includes/class-logging.php:217
1185
+ msgid "No error log exists"
1186
+ msgstr ""
1187
+
1188
  #. translators: placeholder holds the log location.
1189
+ #: includes/class-logging.php:223
1190
  msgid "We are not able to write to the %s file."
1191
  msgstr ""
1192
 
1193
+ #: includes/class-logging.php:234
1194
  msgid "Error log below can be used with support requests to help identify issues with Constant Contact Forms."
1195
  msgstr ""
1196
 
1197
+ #: includes/class-logging.php:235
1198
  msgid "When available, you can share information by copying and pasting the content in the textarea, or by using the \"Download logs\" link at the end. Logs can be cleared by using the \"Delete logs\" link."
1199
  msgstr ""
1200
 
1201
+ #: includes/class-logging.php:241
1202
  msgid "Error log may still have content, even if an error is shown above. Please use the download link below."
1203
  msgstr ""
1204
 
1205
+ #: includes/class-logging.php:252
1206
  msgid "Download logs"
1207
  msgstr ""
1208
 
1209
+ #: includes/class-logging.php:260
1210
  msgid "Delete logs"
1211
  msgstr ""
1212
 
1213
  #. translators: placeholder wil have error message.
1214
+ #: includes/class-logging.php:321
1215
  msgid "Log display error: %s"
1216
  msgstr ""
1217
 
1300
 
1301
  #. translators: placeholders will be html `<a>` links.
1302
  #: includes/class-notification-content.php:182
1303
+ msgid "Constant Contact Forms has experienced issues that may need addressed and functionality may be missing. Please enable the \"Support\" checkbox under the Support tab in %1$sConstant Contact settings%2$s and start a %3$sforum support thread%4$s. Our support team will aid with further steps."
1304
  msgstr ""
1305
 
1306
  #: includes/class-notification-content.php:203
1324
  msgid "Disagree"
1325
  msgstr ""
1326
 
1327
+ #: includes/class-process-form.php:104, includes/class-process-form.php:637
1328
  msgid "There was an error sending your form."
1329
  msgstr ""
1330
 
1331
+ #: includes/class-process-form.php:115, includes/class-process-form.php:655
1332
  msgid "Your information has been submitted."
1333
  msgstr ""
1334
 
1335
+ #: includes/class-process-form.php:130, includes/class-process-form.php:669
1336
  msgid "We had trouble processing your submission. Please review your entries and try again."
1337
  msgstr ""
1338
 
1360
  msgid "We had trouble processing your submission. Make sure you haven't changed the required Form ID and try again."
1361
  msgstr ""
1362
 
1363
+ #: includes/class-process-form.php:734
1364
  msgid "We do no think you are human"
1365
  msgstr ""
1366
 
1510
  msgid "Add a checkbox to the WordPress user registration page"
1511
  msgstr ""
1512
 
1513
+ #: includes/class-settings.php:985
1514
  msgid "We do not think you are human"
1515
  msgstr ""
readme.txt CHANGED
@@ -3,7 +3,7 @@ Contributors: constantcontact, webdevstudios, tw2113, znowebdev, ggwicz, ra
3
  Tags: capture, contacts, constant contact, constant contact form, constant contact newsletter, constant contact official, contact forms, email, form, forms, marketing, mobile, newsletter, opt-in, plugin, signup, subscribe, subscription, widget
4
  Requires at least: 5.2.0
5
  Tested up to: 5.4.1
6
- Stable tag: 1.8.4
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
  Requires PHP: 5.6
@@ -24,7 +24,7 @@ https://www.youtube.com/watch?v=MhxtAlpZzJw
24
 
25
  BONUS: If you have a Constant Contact account, all new email addresses that you capture will be automatically added to the Constant Contact email lists of your choosing. Not a Constant Contact customer? Sign up for a [Free Trial](http://www.constantcontact.com/index?pn=miwordpress) right from the plugin.
26
 
27
- **Constant Contact Forms** requires a PHP version of 5.4 or higher. You will not be able to use if on a lower version. Talk to your system administrator or hosting company if you are not sure what version you are on.
28
 
29
  == Screenshots ==
30
  1. Adding a New form when connected to Constant Contact account.
@@ -35,6 +35,12 @@ BONUS: If you have a Constant Contact account, all new email addresses that you
35
 
36
  == Changelog ==
37
 
 
 
 
 
 
 
38
  = 1.8.4 =
39
  * Fixed: Compatibility issue with PHP 5.6.
40
 
@@ -60,95 +66,6 @@ BONUS: If you have a Constant Contact account, all new email addresses that you
60
  * Updated: Reduced frequency of admin notifications for potentially momentary issues.
61
  * Updated: Clarified details regarding "Redirect URL" setting.
62
 
63
- = 1.7.0 =
64
- * New - Added support for Google reCAPTCHA version 3
65
- * Fix - Fixed with debug log deletion and dialog closing
66
- * Fix - Updated a number of PHP and JavaScript dependencies
67
-
68
- = 1.6.1 =
69
- * Fixed: Issue with selecting forms in the widget.
70
- * Fixed: Compatibility with other page builders and our Gutenberg integration.
71
- * Updated: Revised wording and links for admin notice about potential issues.
72
-
73
- = 1.6.0 =
74
- * Addded: Uninstall routine to remove various options saved from use of the plugin, when uninstalling.
75
- * Updated: Improved handling of potential fatal errors that caused sites to become unusable.
76
- * Updated: Completely removed TinyMCE support in favor of Gutenberg block and copy/pasting existing shortcode output.
77
- * Updated: Reviewed and improved on overall plugin accessibility.
78
- * Updated: Hardened up sanitization around Google reCAPTCHA settings.
79
- * Fixed: Inability to remove admin notices in some cases.
80
- * Fixed: Addressed admin notice meant to show at a later time that showed right away.
81
- * Fixed: Submission issues when multiple forms are on the same page and "no-refresh" option is used.
82
- * Fixed: Add "show_title" attribute to List Column shortcode output.
83
-
84
- = 1.5.3 =
85
- * Fixed: Removed TGMPA library files that were causing some conflicts with premium themes or other plugins.
86
- * Fixed: tweaked shortcode assets URL reference in bundled library for better compatibility with various hosting environments.
87
-
88
- = 1.5.2 =
89
- * Fixed: Javascript conflicts with Lodash and Underscores in conjunction with 1.5.0's Gutenberg support.
90
-
91
- = 1.5.1 =
92
- * Fixed: Issues with editor screen when no forms have been created yet.
93
- * Fixed: Missed endpoint change for wp-json details with Contant Contact Gutenberg integration.
94
-
95
- = 1.5.0 =
96
- * Added: Gutenberg block. Easier to get a form set up on a Gutenberg powered post or page.
97
- * Added: Ability to customize "We do not think you are human" spam messaging.
98
- * Added: Ability to conditionally output a reCAPTCHA field for each form.
99
- * Added: Better compatibility with WP-SpamShield plugin.
100
- * Added: Quick button to reset a form's style customization selections.
101
- * Added: Option to display form title with Constant Contact Forms output.
102
- * Fixed: Added missing label placement options in settings page and per-form dropdown options.
103
- * Updated: Ensure we have valid URLs when taking custom redirect values.
104
- * Updated: Append custom textarea content to existing notes for updated contacts.
105
- * Updated: Added some "alert" roles for better accessibility.
106
- * Updated: Added logging of API request parameters before the request is made.
107
- * Updated: Added logging around valid requests verifications when submitting a form.
108
-
109
- = 1.4.5 =
110
- * Fixed: Conflicts with custom textareas and notes inside of Constant Contact account when updating an existing contact.
111
- * Fixed: Potential issues around reading Constant Contact Forms error logs when log file is potentially not readable.
112
-
113
- = 1.4.4 =
114
- * Fixed: Hardened reCAPTCHA and form processing from possible AJAX bypass.
115
-
116
- = 1.4.3 =
117
- * Fixed: Persistent spinner on Constant Contact Forms submit button when Google reCAPTCHA is anywhere on the page.
118
- * Fixed: Better messaging around debug logging when unable to write to the intended log file.
119
- * Updated: Changed the modal popup content for when we need to display Endurance Privacy Policy information.
120
-
121
- = 1.4.2 =
122
- * Fixed: Issue with mismatched meta key for per-form destination email address.
123
- * Fixed: Ability to successfully submit a form with Google reCAPTCHA enabled, but when not validated, with a custom redirect URL is set.
124
- * Fixed: Prevent errors if Debug Log location is not writeable by the plugin.
125
-
126
- = 1.4.1 =
127
- * Fixed: Issue with generic CSS selector causing other WordPress admin UI to be revealed unintentionally.
128
- * Fixed: Issue with emails losing submitted information due to newly mismatched md5 hash values for each field.
129
- * Updated: Re-added outlines styles in a couple of places in admin area for accessibility sake.
130
- * Updated: Made form ID optional during contact addition method for site owners using plugin for comment/login page signups.
131
-
132
- = 1.4.0 =
133
- * Added: Various styling options during the form building process.
134
- * Added: Initial Akismet integration to help aid with spam submissions.
135
- * Added: Clear form fields after successful AJAX-based form submissions.
136
- * Added: Clear success/error message after small delay, for AJAX-based form submissions.
137
- * Added: WordPress action hooks before and after form output. Useful to add your own output for a given form.
138
- * Added: Compatibility with "Call To Action" plugin.
139
- * Added: Include custom field labels in email notifications.
140
- * Added: Ability to customize who receives email notifications, per form.
141
- * Added: Frontend form submit button disabled if hidden honeypot field has changed.
142
- * Fixed: Consistently applied ctct_process_form_success filter to AJAX form submission success messages.
143
- * Fixed: Prevent errors with Constant Contact social links and array_merge issues.
144
- * Fixed: Prevent errors with array_key_exists() and the ctct_get_settings_option function.
145
- * Fixed: Wording around associated lists for a form, in the WordPress admin.
146
- * Fixed: Removed .gitignore files from /vendor folders.
147
- * Fixed: Prevent potential PHP warnings and notices in various areas.
148
- * Updated: Better support for emailing notifications to multiple recipiants.
149
- * Updated: Better disabling of submit button during AJAX-based submissions.
150
- * Updated: Tightened up form builder screen to not use so much space.
151
-
152
  == Frequently Asked Questions ==
153
 
154
  #### Installation and Setup
@@ -171,3 +88,6 @@ BONUS: If you have a Constant Contact account, all new email addresses that you
171
 
172
  #### How do I include which custom fields labels are which custom field values in my Constant Contact Account?
173
  You can add this to your active theme or custom plugin: `add_filter( 'constant_contact_include_custom_field_label', '__return_true' );`. Note: custom fields have a max length of 50 characters. Including the labels will subtract from the 50 character total available.
 
 
 
3
  Tags: capture, contacts, constant contact, constant contact form, constant contact newsletter, constant contact official, contact forms, email, form, forms, marketing, mobile, newsletter, opt-in, plugin, signup, subscribe, subscription, widget
4
  Requires at least: 5.2.0
5
  Tested up to: 5.4.1
6
+ Stable tag: 1.8.5
7
  License: GPLv3
8
  License URI: http://www.gnu.org/licenses/gpl-3.0.html
9
  Requires PHP: 5.6
24
 
25
  BONUS: If you have a Constant Contact account, all new email addresses that you capture will be automatically added to the Constant Contact email lists of your choosing. Not a Constant Contact customer? Sign up for a [Free Trial](http://www.constantcontact.com/index?pn=miwordpress) right from the plugin.
26
 
27
+ **Constant Contact Forms** requires a PHP version of 5.6 or higher. You will not be able to use if on a lower version. Talk to your system administrator or hosting company if you are not sure what version you are on.
28
 
29
  == Screenshots ==
30
  1. Adding a New form when connected to Constant Contact account.
35
 
36
  == Changelog ==
37
 
38
+ = 1.8.5 =
39
+ * Added: Forced email notifications to admin when Constant Contact API request fails on attempted form submission.
40
+ * Fixed: Addressed issues with plugin error logging and addressed false-positive error messaging.
41
+ * Fixed: Cleaned up style minification task to allow for unminified version of stylesheet.
42
+ * Updated: Updated support error messaging in admin to reference tab structure of plugin settings.
43
+
44
  = 1.8.4 =
45
  * Fixed: Compatibility issue with PHP 5.6.
46
 
66
  * Updated: Reduced frequency of admin notifications for potentially momentary issues.
67
  * Updated: Clarified details regarding "Redirect URL" setting.
68
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
69
  == Frequently Asked Questions ==
70
 
71
  #### Installation and Setup
88
 
89
  #### How do I include which custom fields labels are which custom field values in my Constant Contact Account?
90
  You can add this to your active theme or custom plugin: `add_filter( 'constant_contact_include_custom_field_label', '__return_true' );`. Note: custom fields have a max length of 50 characters. Including the labels will subtract from the 50 character total available.
91
+
92
+ #### Which account level access is needed to connect my WordPress account to Constant Contact?
93
+ You will need to make the connection to Constant Contact using the credentials of the account owner. Campaign manager credentials will not have enough access.
vendor/autoload.php CHANGED
@@ -4,4 +4,4 @@
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
- return ComposerAutoloaderInitbc7095f218e2f3cf2c42021190c00a4b::getLoader();
4
 
5
  require_once __DIR__ . '/composer/autoload_real.php';
6
 
7
+ return ComposerAutoloaderInitb6eb9765b6ca2bd55b4483dd58709ee0::getLoader();
vendor/composer/autoload_real.php CHANGED
@@ -2,7 +2,7 @@
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
- class ComposerAutoloaderInitbc7095f218e2f3cf2c42021190c00a4b
6
  {
7
  private static $loader;
8
 
@@ -19,15 +19,15 @@ class ComposerAutoloaderInitbc7095f218e2f3cf2c42021190c00a4b
19
  return self::$loader;
20
  }
21
 
22
- spl_autoload_register(array('ComposerAutoloaderInitbc7095f218e2f3cf2c42021190c00a4b', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
- spl_autoload_unregister(array('ComposerAutoloaderInitbc7095f218e2f3cf2c42021190c00a4b', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
- call_user_func(\Composer\Autoload\ComposerStaticInitbc7095f218e2f3cf2c42021190c00a4b::getInitializer($loader));
31
  } else {
32
  $classMap = require __DIR__ . '/autoload_classmap.php';
33
  if ($classMap) {
@@ -39,19 +39,19 @@ class ComposerAutoloaderInitbc7095f218e2f3cf2c42021190c00a4b
39
  $loader->register(true);
40
 
41
  if ($useStaticLoader) {
42
- $includeFiles = Composer\Autoload\ComposerStaticInitbc7095f218e2f3cf2c42021190c00a4b::$files;
43
  } else {
44
  $includeFiles = require __DIR__ . '/autoload_files.php';
45
  }
46
  foreach ($includeFiles as $fileIdentifier => $file) {
47
- composerRequirebc7095f218e2f3cf2c42021190c00a4b($fileIdentifier, $file);
48
  }
49
 
50
  return $loader;
51
  }
52
  }
53
 
54
- function composerRequirebc7095f218e2f3cf2c42021190c00a4b($fileIdentifier, $file)
55
  {
56
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
57
  require $file;
2
 
3
  // autoload_real.php @generated by Composer
4
 
5
+ class ComposerAutoloaderInitb6eb9765b6ca2bd55b4483dd58709ee0
6
  {
7
  private static $loader;
8
 
19
  return self::$loader;
20
  }
21
 
22
+ spl_autoload_register(array('ComposerAutoloaderInitb6eb9765b6ca2bd55b4483dd58709ee0', 'loadClassLoader'), true, true);
23
  self::$loader = $loader = new \Composer\Autoload\ClassLoader();
24
+ spl_autoload_unregister(array('ComposerAutoloaderInitb6eb9765b6ca2bd55b4483dd58709ee0', 'loadClassLoader'));
25
 
26
  $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded());
27
  if ($useStaticLoader) {
28
  require_once __DIR__ . '/autoload_static.php';
29
 
30
+ call_user_func(\Composer\Autoload\ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::getInitializer($loader));
31
  } else {
32
  $classMap = require __DIR__ . '/autoload_classmap.php';
33
  if ($classMap) {
39
  $loader->register(true);
40
 
41
  if ($useStaticLoader) {
42
+ $includeFiles = Composer\Autoload\ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::$files;
43
  } else {
44
  $includeFiles = require __DIR__ . '/autoload_files.php';
45
  }
46
  foreach ($includeFiles as $fileIdentifier => $file) {
47
+ composerRequireb6eb9765b6ca2bd55b4483dd58709ee0($fileIdentifier, $file);
48
  }
49
 
50
  return $loader;
51
  }
52
  }
53
 
54
+ function composerRequireb6eb9765b6ca2bd55b4483dd58709ee0($fileIdentifier, $file)
55
  {
56
  if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
57
  require $file;
vendor/composer/autoload_static.php CHANGED
@@ -4,7 +4,7 @@
4
 
5
  namespace Composer\Autoload;
6
 
7
- class ComposerStaticInitbc7095f218e2f3cf2c42021190c00a4b
8
  {
9
  public static $files = array (
10
  'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
@@ -390,10 +390,10 @@ class ComposerStaticInitbc7095f218e2f3cf2c42021190c00a4b
390
  public static function getInitializer(ClassLoader $loader)
391
  {
392
  return \Closure::bind(function () use ($loader) {
393
- $loader->prefixLengthsPsr4 = ComposerStaticInitbc7095f218e2f3cf2c42021190c00a4b::$prefixLengthsPsr4;
394
- $loader->prefixDirsPsr4 = ComposerStaticInitbc7095f218e2f3cf2c42021190c00a4b::$prefixDirsPsr4;
395
- $loader->prefixesPsr0 = ComposerStaticInitbc7095f218e2f3cf2c42021190c00a4b::$prefixesPsr0;
396
- $loader->classMap = ComposerStaticInitbc7095f218e2f3cf2c42021190c00a4b::$classMap;
397
 
398
  }, null, ClassLoader::class);
399
  }
4
 
5
  namespace Composer\Autoload;
6
 
7
+ class ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0
8
  {
9
  public static $files = array (
10
  'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
390
  public static function getInitializer(ClassLoader $loader)
391
  {
392
  return \Closure::bind(function () use ($loader) {
393
+ $loader->prefixLengthsPsr4 = ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::$prefixLengthsPsr4;
394
+ $loader->prefixDirsPsr4 = ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::$prefixDirsPsr4;
395
+ $loader->prefixesPsr0 = ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::$prefixesPsr0;
396
+ $loader->classMap = ComposerStaticInitb6eb9765b6ca2bd55b4483dd58709ee0::$classMap;
397
 
398
  }, null, ClassLoader::class);
399
  }
vendor/composer/installed.json CHANGED
@@ -323,7 +323,8 @@
323
  "homepage": "https://github.com/mtdowling"
324
  }
325
  ],
326
- "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function."
 
327
  },
328
  {
329
  "name": "guzzlehttp/streams",
@@ -375,7 +376,8 @@
375
  "keywords": [
376
  "Guzzle",
377
  "stream"
378
- ]
 
379
  },
380
  {
381
  "name": "monolog/monolog",
323
  "homepage": "https://github.com/mtdowling"
324
  }
325
  ],
326
+ "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.",
327
+ "abandoned": true
328
  },
329
  {
330
  "name": "guzzlehttp/streams",
376
  "keywords": [
377
  "Guzzle",
378
  "stream"
379
+ ],
380
+ "abandoned": true
381
  },
382
  {
383
  "name": "monolog/monolog",
vendor/constantcontact/constantcontact/.gitignore ADDED
@@ -0,0 +1,25 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Created by .gitignore support plugin (hsz.mobi)
2
+
3
+ ## Directory-based project format
4
+ .idea/
5
+ /*.iml
6
+
7
+ ## File-based project format
8
+ *.ipr
9
+ *.iws
10
+
11
+ ## Additional for IntelliJ
12
+ out/
13
+
14
+ # generated by mpeltonen/sbt-idea plugin
15
+ .idea_modules/
16
+
17
+ # generated by JIRA plugin
18
+ atlassian-ide-plugin.xml
19
+
20
+ ### Composer template
21
+ composer.lock
22
+ composer.phar
23
+ vendor/
24
+
25
+ devFile.php
vendor/defuse/php-encryption/.gitignore ADDED
@@ -0,0 +1,11 @@
 
 
 
 
 
 
 
 
 
 
 
1
+ *~
2
+ /test/unit/File/big-generated-file
3
+ /composer.lock
4
+ /vendor
5
+ defuse-crypto.phar
6
+ defuse-crypto.phar.sig
7
+ composer.phar
8
+ box.phar
9
+ phpunit.phar
10
+ phpunit.phar.asc
11
+ test/unit/File/tmp
vendor/google/recaptcha/.gitignore ADDED
@@ -0,0 +1,7 @@
 
 
 
 
 
 
 
1
+ /.php_cs.cache
2
+ /.phpunit.result.cache
3
+ /build
4
+ /composer.lock
5
+ /examples/config.php
6
+ /nbproject/private/
7
+ /vendor/
vendor/guzzlehttp/ringphp/.gitignore ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ vendor
2
+ build/artifacts/
3
+ composer.lock
4
+ docs/_build/
vendor/guzzlehttp/streams/.gitignore ADDED
@@ -0,0 +1,6 @@
 
 
 
 
 
 
1
+ .idea
2
+ .DS_STORE
3
+ coverage
4
+ phpunit.xml
5
+ composer.lock
6
+ vendor/
vendor/psr/log/.gitignore ADDED
@@ -0,0 +1 @@
 
1
+ vendor
vendor/react/promise/.gitignore ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ composer.lock
2
+ composer.phar
3
+ phpunit.xml
4
+ build/
5
+ vendor/